Tôi bắt đầu một dự án nhỏ bao gồm làm việc với các tệp MIDI. Tôi đã tự hỏi, là có bất kỳ mã C# hoặc VB.Net peforms rằng diễn viên giữa các tập tin MIDI và WAV?Làm cách nào để chuyển đổi giữa midi sang wav/mp3 trong C#?
Trả lời
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.
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.
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
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
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
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).
- 1. Phần mềm để chuyển đổi âm thanh sang MIDI
- 2. Làm cách nào để chuyển đổi giữa nhận xét tài liệu XML trong C#?
- 3. Làm cách nào để chuyển đổi từ SID sang tên tài khoản trong C#
- 4. Làm cách nào để chuyển đổi Xml sang Json và ngược lại trong C#
- 5. Làm cách nào để chuyển đổi chuỗi Cyrillic sang tiếng Anh trong C#
- 6. Làm cách nào để truyền/chuyển đổi con trỏ sang tham chiếu trong C++
- 7. Làm cách nào để chuyển đổi HTML sang Dệt may?
- 8. Làm cách nào để chuyển đổi mili giây sang TDateTime?
- 9. Làm cách nào để chuyển đổi XLS sang RESX?
- 10. Làm thế nào để chuyển đổi một chuỗi từ UTF8 sang Latin1 trong C/C++?
- 11. Làm thế nào để chuyển đổi mảng băm băm C# thành chuỗi để chuyển sang API?
- 12. Cách chuyển đổi từ EBCDIC sang ASCII trong C# .net
- 13. Chuyển đổi C# sang PHP
- 14. ASCII sang TBCD Chuyển đổi trong C
- 15. Chuyển đổi số ghi chú Midi thành Tên và Octave
- 16. Chuyển đổi cấu trúc dữ liệu MIDI sang Java (Danh sách, Bản đồ băm, ???)
- 17. Làm cách nào để chuyển đổi giữa Float và [Word8]?
- 18. Cách chuyển đổi DataRow sang DataRowView trong C#
- 19. Làm thế nào để chuyển đổi từ điển <> sang Hashtable trong C#?
- 20. Làm thế nào để chuyển đổi char * sang BSTR?
- 21. Làm cách nào để ghi tệp MIDI bằng Python?
- 22. Làm thế nào để chuyển đổi một phao sang một int trong Objective C?
- 23. Làm thế nào để chuyển đổi HTML sang MarkDown trong C#?
- 24. Làm thế nào để chuyển đổi giữa python 2,7 sang python 3 từ dòng lệnh?
- 25. Làm thế nào để chuyển đổi HEX sang NSString trong Objective-C?
- 26. Làm thế nào để chuyển đổi DataRowView sang DataRow trong C#
- 27. Làm thế nào để chuyển đổi hình ảnh sang html?
- 28. Làm thế nào để chuyển đổi BigInteger sang BigDecimal?
- 29. Chuyển đổi C# byte sang BitArray
- 30. Làm thế nào để chuyển đổi ISO8859-15 sang UTF8?
Liên kết đẹp, Jacob. –
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
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