Как я могу конвертировать между MIDI в WAV / MP3 в C#?
Я начал небольшой проект, который включает в себя работу с файлами MIDI. Мне было интересно, есть ли какой-нибудь код C# или VB.Net, который преобразуется между файлами MIDI и WAV?
3 ответа
Вы можете попытаться как-то взаимодействовать с Timidity, который является открытым исходным кодом:
TiMidity ++ - программный синтезатор. Он может воспроизводить MIDI-файлы, преобразовывая их в данные формы сигнала PCM; предоставьте ему данные MIDI вместе с файлами данных цифрового инструмента, затем он синтезирует их в режиме реального времени и воспроизводит. Он может не только воспроизводить звуки, но также может сохранять сгенерированные сигналы на жесткие диски в виде различных форматов аудиофайлов.
FluidSynth - это недавно обновленный проект с открытым исходным кодом в том же духе:
FluidSynth - программный синтезатор реального времени, основанный на спецификациях SoundFont 2.
Вы можете загрузить некоторые бесплатные SoundFonts (фактические данные PCM, используемые этими синтезаторами для "рендеринга" MIDI-файлов) с сайтов в этом списке.
MIDI-файлы содержат только информацию о нотах и контроллере, а не звуки. Чтобы получить звуки из файла MIDI, вы должны передать файл через музыкальный синтезатор или сэмплер, который преобразует ноту и информацию контроллера в реальные звуки.
На практике это означает, что у любого данного MIDI-файла нет определенного звука. Звук, который получается в результате преобразования MIDI-файла в звук, зависит от качества синтезатора или библиотеки семплов и звуков, выбранных для выполнения преобразования.
Многие звуковые карты имеют возможность воспроизводить звук из файлов MIDI. Они могут сделать это, потому что многие MIDI-файлы соответствуют стандарту, называемому General MIDI-спецификацией. Общая спецификация MIDI обеспечивает стандартизированный способ сопоставления определенных назначений инструментов. Если ваш MIDI-файл соответствует этому стандарту, вы можете воспроизводить его через генератор звуков General MIDI и ожидать, что малый барабан будет звучать как малый барабан, а не как труба.
Если у вас есть сложный пакет для создания музыки, такой как Cakewalk, вы можете загрузить в него MIDI-файл, и он будет использовать встроенные звуковые библиотеки для визуализации звукового файла, и это на самом деле можно сделать быстрее, чем в реальном времени (т.е. он не должен воспроизводить звук через звуковую карту и захватывать вывод).
Я думаю, что я пытаюсь сказать, что в этом есть много движущихся частей. Нет ни одного куска кода или модуля класса, который бы сделал это за вас.
Есть несколько программ, которые вы можете приобрести, которые будут делать это (Google "конвертировать MIDI в WAV"), но я никогда не сталкивался с общедоступным.Net-кодом, который делает это (я думаю, что некоторые из этих программ написаны на. Нет, но исходный код недоступен).
У меня есть онлайн-друг, который работает над коммерческим конвертером MIDI-WAV, но его нет в.Net и он не будет с открытым исходным кодом. Как упоминал Роберт Харви, это совсем не простая задача, поскольку она в основном включает в себя написание собственного программного синтезатора (задача, которая мне по душе).