Нужна библиотека, которая генерирует WAVE из Midi
У меня есть около 80 композиций, написанных на MIDI, и я хочу преобразовать их в WAVE, используя звуковую библиотеку. Таким образом, они могут воспроизводиться на всех компьютерах и звучать одинаково. Есть ли библиотека, которая может автоматизировать это?
Желательно в C#, но и другие языки программирования тоже подойдут.
6 ответов
Это то, что называется Soft Synth, вам также понадобится набор сэмплов инструментов, если вы хотите, чтобы они звучали одинаково на всех машинах.
Может оказаться, что вы сэкономите память, если просто конвертируете их все в волновые файлы и отправляете волновые файлы. Высококачественный набор инструментов может быть довольно большим, и большинство из них также защищены авторским правом.
Я использовал Timidity для этого, но это было много лет назад и в Linux.
Быстрый ответ - взгляните на 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-плеере, выберите это устройство, запустите программу записи с подключенного звукового входа, записать и вырезать.
PS Извините за отсутствие ссылок, так как я здесь новичок, в моем ответе могут быть только две ссылки.
Вы можете использовать FFMPEG для обработки конверсий как фильмов, так и аудио, включая, я полагаю, MIDI в Wave. http://ffmpeg.arrozcru.org/wiki/index.php?title=Links содержит некоторую основную информацию о процессе, но в основном после установки вы можете просто запустить процесс командной строки в потоке фонового процесса и вызвать событие после завершения,
http://code.google.com/p/ffmpeg-sharp/ - это оболочка, созданная для FFMPEG и.net framework. Я уверен, что есть, вероятно, больше
Конвертер MIDI в MP3 от PistonSofts. Я не думаю, что это библиотека как таковая, но она имеет интерфейс командной строки.
Если они являются статичными миди-аранжировками, вы можете использовать DAW с некоторыми плагинами для мягкого синтезатора (например, http://www.cockos.com/reaper/ Cubase и т. Д. И просто поставлять wavs\mp3s с вашим приложением...?