Нужна библиотека, которая генерирует WAVE из Midi - PullRequest
5 голосов
/ 24 февраля 2010

У меня есть около 80 композиций, написанных на MIDI, и я хочу преобразовать их в WAVE, используя звуковую библиотеку. Таким образом, они могут воспроизводиться на всех компьютерах и звучать одинаково. Есть ли библиотека, которая может автоматизировать это?

Желательно в C #, но и другие языки программирования тоже хороши.

Ответы [ 6 ]

3 голосов
/ 14 октября 2011

Быстрый ответ - взгляните на FluidSynth. Это программный синтезатор, который использует звуковые банки в формате SoundFont. Он также имеет свою библиотеку, которую можно использовать для «рендеринга» MIDI-файла.

Банк с установленным звуком General MIDI можно найти, например, на http://www.hammersound.com,, например, http://www.hammersound.com/cgi-bin/soundlink.pl?action=view_download_page;ID=407;SoundFont_Location_Selected=Download;SoundFont_Filename_Selected=http://www.jchyun.com/~sonic/sf2/hubbe/Hubbe64%20GM%20v2.50.zip.

Вы можете сделать это по-другому - вы можете просто воспроизвести их на своем устройстве, запустить программное обеспечение для записи звука, установить для входа значение «то, что вы слышите», записать его и затем вырезать.

Более длинный ответ - Вопрос в том, каковы ваши потребности и цель этой процедуры?

Если вы предпочитаете один и тот же звук из файлов MIDI на разных компьютерах, у вас есть следующие опции:

  • Используйте только MIDI. Звуки MIDI стандартизированы, хотя могут быть отличия по сэмплам вашей звуковой карты. У вас есть какие-то особенные хорошие звуки, которые вы хотите использовать?
  • Используйте карту, поддерживающую SoundFonts - например, SoundBlaster AWE 32 и выше, установите для входа записи значение «Что вы слышите» и запишите звуки.
  • Конвертирует MIDI-файлы в какой-либо формат трекера. Этот формат сохраняет ноты как midi, но позволяет также сохранять звуковые сэмплы в одном файле. Хотя преобразование займет некоторое количество работы. Файлы модуля содержат так называемые паттерны, которые можно воспроизводить в требуемом порядке. Это было бы идеальным примером для игр, где вы можете легко зациклить одну песню. Преимущество - одинаковый звук на каждом компьютере и небольшой размер. Недостатком может быть потеря качества, потому что высота сэмплов смещается вверх и вниз для создания различных тонов. Если вы используете мультисэмплированные инструменты, это вас не беспокоит. Если вы предпочитаете этот способ, я предлагаю вам взглянуть на форматы IT (ImpulseTracker) и mo3. В качестве редактора трекеров можно использовать OpenMPT. Это также позволяет импортировать и экспортировать файлы MIDI. Для воспроизведения этих файлов вы можете использовать библиотеку MikMod или библиотеку FMOD (коммерческую).
  • Используйте программный синтезатор, который использует звуковые банки. Примером такого синтезатора является FluidSynth. Если эта музыка должна быть встроена в какую-то программу, это может быть хорошей альтернативой.
  • Используйте внешний MIDI-звуковой модуль, такой как Roland SonicCell или любую хорошую звучащую клавиатуру, в качестве моего любимого Korg M50, вставьте выход этого модуля в звуковую карту, установите список воспроизведения в каком-либо MIDI-плеере, выберите это устройство, запустите программу записи с звуковой ввод, запись и обрезка.

P.S. Извините за отсутствие ссылок, так как я здесь новичок, в моем ответе могут быть только две ссылки.

3 голосов
/ 24 февраля 2010

Я использовал Timidity для этого, но это было много лет назад и в Linux.

3 голосов
/ 24 февраля 2010

Это то, что называется Soft Synth , вам также понадобится набор сэмплов инструментов, если вы хотите, чтобы они звучали одинаково на всех машинах.

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

0 голосов
/ 12 сентября 2010

Вы можете использовать FFMPEG для обработки конверсий как фильмов, так и аудио, включая, я полагаю, MIDI в Wave. http://ffmpeg.arrozcru.org/wiki/index.php?title=Links содержит некоторую базовую информацию о процессе, но в основном после установки вы можете просто запустить процесс командной строки в потоке фонового процесса и вызвать событие после его завершения.

http://code.google.com/p/ffmpeg-sharp/ - это оболочка, созданная для FFMPEG и .net framework. Я уверен, что, вероятно, есть еще

0 голосов
/ 09 марта 2010

Конвертер MIDI в MP3 PistonSofts. Я не думаю, что это библиотека сама по себе, но она имеет интерфейс командной строки.

0 голосов
/ 24 февраля 2010

Если они являются статичными миди-аранжировками, вы можете использовать DAW с некоторыми плагинами soft synth (например, http://www.cockos.com/reaper/ Cubase и т. Д. И просто поставлять wavs \ mp3s с вашим приложением ...?

...