Как я могу конвертировать midi в wav / mp3 на c #?

StackOverflow https://stackoverflow.com/questions/1185392

  •  19-09-2019
  •  | 
  •  

Вопрос

Я начал небольшой проект, который включает в себя работу с MIDI-файлами.Мне было интересно, есть ли какой-нибудь C # или VB.Сетевой код, который формирует преобразование между MIDI- и WAV-файлами?

Это было полезно?

Решение

Вы могли бы попытаться каким-то образом взаимодействовать с Робость, который является открытым исходным кодом:

TiMidity++ - это программный синтезатор.Он может воспроизводить MIDI-файлы, преобразуя их в данные формы сигнала PCM;передайте ему MIDI-данные вместе с файлами данных цифрового инструмента, затем он синтезирует их в режиме реального времени и воспроизводит.Он может не только воспроизводить звуки, но и сохранять сгенерированные сигналы на жесткие диски в виде различных форматов аудиофайлов.

Синтез жидкости является более недавно обновленным проектом с открытым исходным кодом в аналогичном ключе:

FluidSynth - это программный синтезатор реального времени, основанный на спецификациях SoundFont 2.

Вы можете скачать некоторые бесплатные звуковые файлы (фактические данные PCM, используемые этими синтезаторами для "рендеринга" MIDI-файлов) с сайтов на этот список.

Другие советы

MIDI - файлы содержит только информацию о нотах и контроллере, а не звуки.Чтобы получить звуки из MIDI-файла, вы должны пропустить файл через музыкальный синтезатор или сэмплер, который преобразует информацию о нотах и контроллере в реальные звуки.

На практике это означает, что любой данный MIDI-файл не имеет определенного звучания.Звук, который получается в результате преобразования MIDI-файла в аудио, будет варьироваться в зависимости от качества синтезатора или библиотеки сэмплов, а также звуков, выбранных для выполнения преобразования.

Многие звуковые карты имеют возможность воспроизводить звук из MIDI-файлов.Они могут это сделать, потому что многие MIDI-файлы следуют стандарту, называемому Общая спецификация MIDI.Общая спецификация MIDI предоставляет стандартизированный способ сопоставления назначений конкретных инструментов.Если ваш MIDI-файл соответствует этому стандарту, вы можете воспроизвести его с помощью обычного звукового генератора MIDI и ожидать, что малый барабан будет звучать как малый барабан, а не как труба.

Если у вас есть сложный пакет для создания музыки, такой как Легкая прогулка, вы можете загрузить в него MIDI-файл, и он будет использовать свои встроенные звуковые библиотеки для рендеринга звукового файла для вас, и на самом деле это может быть сделано быстрее, чем в режиме реального времени (т.е.ему не обязательно воспроизводить звук через звуковую карту и записывать выходные данные).

Наверное, я пытаюсь сказать, что в этом есть много движущихся частей.Не существует ни единого фрагмента кода или модуля класса, который сделал бы это за вас.

Есть несколько программ, которые вы можете приобрести, которые сделают это (Google "конвертировать midi в WAV"), но я никогда не сталкивался с общедоступными .Сетевой код, который делает это (я думаю, что некоторые из этих программ написаны на .Net, но исходный код недоступен).

У меня есть онлайн-друг, который работает над коммерческим конвертером MIDI-to-WAV, но его нет в .Net, и у него не будет открытого исходного кода.Как упоминал Роберт Харви, это совсем не простая задача, поскольку в основном она включает в себя написание собственного программного синтезатора (задача по душе мне).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top