Це стара версія документу!
fluidsynth -a alsa SoundFont-file.sf2 MIDI-file.midi
timidity MIDI-file.midi
Потрібно увімкнути підтримку USB MIDI пристроїв у ядрі Linux:
Symbol: SND_USB_AUDIO [=m] Type : tristate Prompt: USB Audio/MIDI driver Location: -> Device Drivers -> Sound card support (SOUND [=m]) -> Advanced Linux Sound Architecture (SND [=m]) -> USB sound devices (SND_USB [=y])
Якщо обрати цей параметр у режимі модуля, то назва модуля буде “snd-usb-audio
”.
За наявності підтримки MIDI пристрою в ядрі, під час під'єднання його до USB-порту в системних логах можна побачити приблизно такі повідомлення:
Jun 27 09:06:49 Hostname kernel: usb 2-3: new full-speed USB device number 3 using ohci-pci Jun 27 09:06:49 Hostname kernel: usb 2-3: New USB device found, idVendor=0a4d, idProduct=0091 Jun 27 09:06:49 Hostname kernel: usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 Jun 27 09:06:49 Hostname kernel: usb 2-3: Product: USB Keystation 61es Jun 27 09:06:49 Hostname kernel: usb 2-3: Manufacturer: Evolution Electronics Ltd. Jun 27 09:06:49 Hostname kernel: usbcore: registered new interface driver snd-usb-audio
Це означає, що обладнання визначено правильно і для нього завантажено модуль “snd-usb-audio
”. Більш-менш нові системи GNU/Linux автоматично завантажують потрібні модулі для відповідного обладнання. На старих системах, можливо, потрібно завантажити модулі власноруч (наприклад, sudo modprobe snd-usb-audio
).
Модуль “snd-usb-audio
” не єдиний, що використовується для роботи MIDI-пристроїв. Після під'єднання інструменту до USB порту можна побачити серед завантажених модулів такі:
snd_usb_audio snd_hwdep snd_usbmidi_lib snd_rawmidi snd_seq_device
Якщо усе під'єднано правильно та необхідні модулі завантажені, в системі має бути зареєстровано новий MIDI-порт. Список їх можна отримати командою
$ aseqdump -l Port Client name Port name 20:0 USB Keystation 61es USB Keystation 61es MIDI 1
В наведеному прикладі ми бачимо MIDI-клавіатуру “Keystation 61es” з номером порта 20:0
. Тепер можна перевірити, чи цей пристрій здатен передавати MIDI-сигнали програмам. Для цього знову запускаємо програму aseqdump
, вказавши їй потрібний порт нашого пристрою та натискаємо будь-які клавіші на MIDI-інструменті (або крутимо будь-які ручки на ньому). Якщо сигнали проходять, вивід має бути приблизно таким:
$ aseqdump -p 20:0 Waiting for data. Press Ctrl+C to end. Source Event Ch Data 20:0 Note on 0, note 48, velocity 47 20:0 Note off 0, note 48 20:0 Note on 0, note 50, velocity 63 20:0 Note off 0, note 50 20:0 Note on 0, note 52, velocity 76 20:0 Note off 0, note 52 20:0 Note on 0, note 53, velocity 51 20:0 Note off 0, note 53
Тобто бачимо, що програма отримує від інструмента сигнали про натискання клавіш.
Для того, щоб грати на MIDI-інструменті через якусь програму (наприклад, програмний синтезатор звуків), потрібно спочатку з'єднати програмний вихід
інструмента з програмнтим входом
відповідної програми. Дізнатися, які програмні виходи зареєстровані в системі можна за допомогою команди
aconnect -i
програмні входи:
aconnect -o
http://alsa.opensrc.org/PlayingMIDIFiles#Using_a_wavetable_synth_on_your_soundcard
http://renesd.blogspot.com/2009/09/alsa-midi-timidity-fluidsynth-and-jack.html
http://wiki.allegro.cc/index.php?title=Using_TiMidity%2B%2B_with_ALSA_raw_MIDI
Для того, щоб затримка між MIDI-подіями та появою звуку була якомога меншою, потрібно зменшити параметр period_size
в налаштуваннях ALSA. Це можна зробити у файлі .asoundrc
.