2009-07-26 33 views

Trả lời

8

Bạn có thể thử bằng cách nào đó giao tiếp với Timidity, đó là Open Source:

timidity ++ là một bộ tổng hợp phần mềm. Nó có thể chơi các tập tin MIDI bằng cách chuyển đổi chúng thành dữ liệu dạng sóng PCM; cung cấp cho nó dữ liệu MIDI cùng với các tệp dữ liệu công cụ kỹ thuật số, sau đó nó tổng hợp chúng theo thời gian thực và phát. Nó có thể không chỉ chơi âm thanh, mà còn có thể lưu các dạng sóng được tạo ra thành các đĩa cứng dưới dạng các định dạng tệp âm thanh khác nhau.

FluidSynth là một dự án mã nguồn mở được cập nhật gần đây hơn là trong một tĩnh mạch tương tự:

FluidSynth là một bộ tổng hợp phần mềm thời gian thực dựa trên SoundFont 2 thông số kỹ thuật.

Bạn có thể tải xuống một số SoundFonts miễn phí (dữ liệu PCM thực tế được sử dụng bởi các bộ tổng hợp này để "hiển thị" các tệp MIDI) từ các trang web trên this list.

+0

Liên kết đẹp, Jacob. –

+0

Cảm ơn, đã khám phá ra nó khi nào. Hoạt động tốt với phông chữ âm thanh từ danh sách này: http://en.wikipedia.org/wiki/SoundFont#Free_SoundFont_downloads – Jacob

+0

Jacob, tuyệt vời khi làm việc với các liên kết này. Tôi chắc chắn họ sẽ hữu ích. Tôi đặc biệt thích tính năng TiMidity ++: 'Phát các tệp MIDI từ xa qua mạng' Bạn có biết tôi có thể tìm thấy tệp .exe ở đâu không? Tôi luôn gặp rắc rối khi cấu hình các ứng dụng linker C++ (Tôi không phải là lập trình viên C++ tuyệt vời) – vondip

8

MIDI files chỉ chứa thông tin ghi chú và bộ điều khiển, chứ không phải âm thanh. Để có được âm thanh từ một tệp MIDI, bạn phải truyền tệp thông qua bộ tổng hợp âm nhạc hoặc bộ lấy mẫu, sẽ chuyển đổi thông tin ghi chú và bộ điều khiển thành âm thanh thực.

Trong thực tế, điều này có nghĩa là mọi tệp MIDI đã cho không có âm thanh cụ thể. Âm thanh phát ra từ việc chuyển đổi tệp MIDI thành âm thanh sẽ khác nhau tùy thuộc vào chất lượng của bộ tổng hợp hoặc thư viện mẫu và âm thanh được chọn để thực hiện chuyển đổi.

Nhiều thẻ âm thanh có khả năng tạo âm thanh từ các tệp MIDI. Họ có thể làm điều này bởi vì nhiều tệp MIDI tuân theo một tiêu chuẩn được gọi là General MIDI specification. Đặc tả chung MIDI cung cấp một cách tiêu chuẩn hóa để ánh xạ các bài tập cụ thể. Nếu tệp MIDI của bạn phù hợp với tiêu chuẩn này, bạn có thể phát nó thông qua bộ tạo âm thanh MIDI chung và mong đợi một tiếng trống để phát ra âm thanh như tiếng trống và không giống như tiếng kèn.

Nếu bạn có gói sản xuất âm nhạc tinh vi như Cakewalk, bạn có thể tải tệp MIDI vào nó và sẽ sử dụng các thư viện âm thanh trên bo mạch để hiển thị tệp âm thanh cho bạn và điều này thực sự có thể được thực hiện nhanh hơn thời gian thực (tức là nó không phải phát âm thanh qua card âm thanh và thu được đầu ra).

Tôi đoán những gì tôi đang cố gắng nói là có rất nhiều phần chuyển động này. Không có một đoạn mã hoặc mô-đun lớp nào sẽ làm điều này cho bạn.

+0

Tôi muốn có thể phát các tệp midi trên Silverlight, tôi có đang triển khai quá nhiều không? – vondip

+0

Tôi không nghĩ rằng bạn cần phải chuyển đổi MIDI sang WAV để chơi nó trong silverlight. Nếu Silverlight không thể xử lý các tệp MIDI một cách tự nhiên, thì bạn có thể nhấn vào API đa phương tiện Windows để phát các tệp MIDI. – MusiGenesis

+0

Tôi làm như thế nào? Môi trường của Silverlight ngăn tôi truy cập vào điều đó. Làm cách nào để thêm tham chiếu com vào Windows multimedia API? – vondip

0

Có một số chương trình bạn có thể mua sẽ thực hiện việc này (google "chuyển đổi midi sang WAV"), nhưng tôi chưa bao giờ thấy mã .Net có sẵn công khai (tôi nghĩ một số chương trình này được viết bằng .Net, nhưng mã nguồn không có sẵn).

Tôi có một người bạn trực tuyến đang làm việc trên bộ chuyển đổi MIDI-to-WAV thương mại, nhưng nó không có trong .Net và nó sẽ không phải là nguồn mở. Như Robert Harvey đã đề cập, đây không phải là một nhiệm vụ đơn giản chút nào, vì về cơ bản nó liên quan đến việc viết bộ tổng hợp phần mềm của riêng bạn (một nhiệm vụ sau trái tim của chính tôi).

Các vấn đề liên quan