Какой API / OS вы используете?Какой SoftSynth?
Краткий ответ: вы можете попробовать "PortMidi".
http://portmedia.sourceforge.net/
Длинный (er) ответ:
У меня нетнашел любую кроссплатформенную библиотеку MIDI, способную общаться с любым видом приемника MIDI.Фактически, это зависит от того, какой софтсинт используется для получения событий MIDI.
1) В Linux вы можете использовать ALSA для общения с синтезаторами ALSA.Softsynth может зарегистрироваться как приемник ALSA.Вы можете: * использовать библиотеку ALSA для подключения для отправки MIDI-событий в этот приемник;* или вы можете зарегистрировать свое приложение в качестве источника ALSA MIDI и использовать другую программу (aconnectgui, qjackctl, patchage) для подключения к любому приемнику.
http://www.alsa -project.org / alsa-doc/alsa-lib/rawmidi.html
http://www.alsa -project.org / alsa-doc / alsa-lib / seq.html
Недостатки:Специфично для Linux
2) Вы можете использовать JACK для MIDI.Как и в ALSA MIDI, приложение может регистрировать источники и приемники MIDI.Yhe softsynth может зарегистрироваться как приемник JACK MIDI.Затем вам нужно настроить приложение на источник JACK MIDI и связать его с другой программой (qjackctl, patchage).
http://jackaudio.org/files/docs/html/index.html
Недостаток: требуется установка, настройка, запуск JACK
У вас есть два решения для перемещения приемника / источников ALSA в качестве приемников / источников JACK:
4) В MacOS вы можете использовать MIDI с CoreAudio.Я ничего об этом не знаю.
5) Я полагаю, что в Windows вы используете функции midi * в
6) Используйте OSS в некоторых других ОС
7) Общайтесь с синтезатором, используя сокет / протоколы
. Вы можете заставить свое программное обеспечение отправлять MIDI-события, используя MIDI / RTP или MIDI / UDP, так что вам нет дела до драйвера / ОС.Большинство softsynth не говорят ни о одном из них напрямую, поэтому вам нужна программа для создания моста (qmidinet или другие).
8) PortMidi - это кроссплатформенная библиотека для MIDI.Однако кажется, что он не может использовать JACK в качестве бэкэнда напрямую (однако вы можете сделать устройства ALSA доступными в JACK, как описано выше).
http://portmedia.sourceforge.net/
Например,в Linux Fluidsynth может использовать ALSA, OSS и JACK для ввода MIDI.Timidity ++ может использовать ALSA и Windows API.