Мне нужно генерировать файлы MP3 из файлов MIDI в пакетном режиме. Есть ли библиотека, которая может это сделать? Желательно с открытым исходным кодом и написанным на .NET.
Создание mp3 из миди
Ответы (4)
Вы можете преобразовать midis в mp3, используя пакетный файл и vlc.
Как указано в вики VLC, для воспроизведения миди в Windows требуется версия 1.1.0, а также звуковой шрифт. Эта версия в настоящее время находится на стадии тестирования, поэтому ее можно загрузить с http://download.videolan.org/pub/videolan/testing/
После того, как вы настроили поддержку midi в соответствии с вики и протестировали ее( играя миди). Вы можете настроить свой пакетный файл.
Команда, которую я использовал для преобразования одного миди в mp3,
C:\Users\Public\Music>"C:\Program Files\VideoLAN\VLC\vlc" -I dummy -vvv "australia.mid" --sout=#transcode{acodec="mp3",ab="512","channels=2"}:standard{access="file",mux="raw",dst="australia.mp3"} vlc://quit
Приведенная выше команда сохраняет оба файла в одной папке. Я адаптировал эту команду на основе информации, найденной в VLC wiki-How_to_Batch_Encode.
Ваша самая большая проблема — это преобразование из миди в волновую форму любого формата. Например, в миди не указано, как звучит пианино, поэтому каждый миди-плеер будет звучать по-разному.
Эта тема обсуждается также в теме Нужна библиотека, генерирующая WAVE из Midi, возможно, вы могли бы найти там некоторую информацию, особенно в мой ответ.
Полученную волну можно затем закодировать в MP3 или любой другой формат, который вам нравится. Для кодирования WAVE в MP3 есть пример проекта с использованием библиотеки LAME encoder.
Этого можно добиться, используя timidity
и lame
:
timidity myMidiFile.midi -Ow -o - | lame - audioOutput.mp3"
Для всех ваших пакетных нужд используйте эти программы в сценарии bach.
Если это должно быть связано с C, попробуйте проверить Csound.
Для .NET проверьте NAudio.