Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Both sides previous revision Попередня ревізія Наступна ревізія | Попередня ревізія Наступна ревізія Both sides next revision | ||
alsa-midi [2017/06/11 21:46] wombat [Програвання MIDI-файлів] |
alsa-midi [2017/06/27 10:11] wombat [Налаштування програм] |
||
---|---|---|---|
Рядок 12: | Рядок 12: | ||
timidity MIDI-file.midi | timidity MIDI-file.midi | ||
+ | |||
+ | |||
+ | ====== MIDI-інструменти ====== | ||
+ | |||
+ | ===== Під'єднання до комп'ютера ===== | ||
+ | |||
+ | ==== MIDI-порт ==== | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | ==== USB-порт ==== | ||
+ | |||
+ | Потрібно увімкнути підтримку USB MIDI пристроїв у ядрі Linux: | ||
+ | |||
+ | <code> | ||
+ | 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]) | ||
+ | </code> | ||
+ | |||
+ | Якщо обрати цей параметр у режимі модуля, то назва модуля буде "''snd-usb-audio''". | ||
+ | |||
+ | За наявності підтримки MIDI пристрою в ядрі, під час під'єднання його до USB-порту в системних логах можна побачити приблизно такі повідомлення: | ||
+ | |||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | Це означає, що обладнання визначено правильно і для нього завантажено модуль "''snd-usb-audio''". Більш-менш нові системи GNU/Linux автоматично завантажують потрібні модулі для відповідного обладнання. На старих системах, можливо, потрібно завантажити модулі власноруч (наприклад, ''sudo modprobe snd-usb-audio''). | ||
+ | |||
+ | Модуль "''snd-usb-audio''" не єдиний, що використовується для роботи MIDI-пристроїв. Після під'єднання інструменту до USB порту можна побачити серед завантажених модулів такі: | ||
+ | |||
+ | <code> | ||
+ | snd_usb_audio | ||
+ | snd_hwdep | ||
+ | snd_usbmidi_lib | ||
+ | snd_rawmidi | ||
+ | snd_seq_device | ||
+ | </code> | ||
+ | |||
+ | ==== Перевірка з'єднання ==== | ||
+ | |||
+ | Якщо усе під'єднано правильно та необхідні модулі завантажені, в системі має бути зареєстровано новий 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-інструменті (або крутимо будь-які ручки на ньому). Якщо сигнали проходять, вивід має бути приблизно таким: | ||
+ | |||
+ | <code> | ||
+ | $ 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 | ||
+ | </code> | ||
+ | |||
+ | Тобто бачимо, що програма отримує від інструмента сигнали про натискання клавіш. | ||
+ | |||
+ | ===== Під'єднання до програм ===== | ||
+ | |||
+ | Для того, щоб грати на MIDI-інструменті через якусь програму (наприклад, програмний синтезатор звуків), потрібно спочатку з'єднати програмний ''вихід'' інструмента з програмнтим ''входом'' відповідної програми. Дізнатися, які програмні виходи зареєстровані в системі можна за допомогою команди | ||
+ | |||
+ | <code> | ||
+ | $ aconnect -i | ||
+ | client 20: 'USB Keystation 61es' [type=kernel,card=1] | ||
+ | 0 'USB Keystation 61es MIDI 1' | ||
+ | </code> | ||
+ | |||
+ | програмні входи: | ||
+ | |||
+ | <code> | ||
+ | $ aconnect -o | ||
+ | client 20: 'USB Keystation 61es' [type=kernel,card=1] | ||
+ | 0 'USB Keystation 61es MIDI 1' | ||
+ | client 128: 'FLUID Synth (6351)' [type=user,pid=6351] | ||
+ | 0 'Synth input port (6351:0)' | ||
+ | </code> | ||
+ | |||
+ | В наведеному прикладі бачимо, що в системі зареєстровано один програмний "вихід" -- це вихід MIDI-інструмента "Keystation 61es", а також два програмні "входи": інструмент "Keystation 61es" та програма FluidSynth. В цих списках будуть показані усі програмні входи та виходи усіх зареєстрованих інструментів та програм. | ||
+ | |||
+ | Для того, щоб програма FluidSynth "слухала" MIDI-сигнали на своєму програмному вході, її потрібно запустити аналогічно до того, як це [[alsa-midi#fluidsynth|робилося раніше]], але не вказуючи ''.midi''-файл: | ||
+ | |||
+ | fluidsynth -a alsa SoundFont-file.sf2 | ||
+ | |||
+ | Щойно ми знайшли потрібні нам "входи" та "виходи", ми можемо з'єднати їх за допомогою команди | ||
+ | |||
+ | aconnect 20:0 128:0 | ||
+ | |||
+ | Якщо з'єднання встановлено, ми побачимо його у списку наявних з'єднань: | ||
+ | |||
+ | <code> | ||
+ | $ aconnect -l | ||
+ | client 20: 'USB Keystation 61es' [type=kernel,card=1] | ||
+ | 0 'USB Keystation 61es MIDI 1' | ||
+ | Connecting To: 128:0 | ||
+ | client 128: 'FLUID Synth (7923)' [type=user,pid=7923] | ||
+ | 0 'Synth input port (7923:0)' | ||
+ | Connected From: 20:0 | ||
+ | </code> | ||
+ | |||
+ | Написи "''Connecting To''" та "''Connected From''" свідчать про те, що з'єднання встановлено. Тепер MIDI-сигнали, що їх генерує MIDI-інструмент "Keystation 61es", потраплятимуть на вхід програми FluidSynth, і вона генеруватиме звуки. | ||
====== Посилання ====== | ====== Посилання ====== |