Користувальницькькі налаштування

Налаштування сайту


alsa-midi

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Both sides previous revision Попередня ревізія
alsa-midi [2017/06/27 07:46]
wombat Затримка звуку
alsa-midi [2017/06/27 08:04] (поточний)
wombat [Посилання] Rosegarden, PianoBooster, links
Рядок 1: Рядок 1:
 +====== MIDI ======
 +
 +====== Програвання MIDI-файлів ======
 +
 +===== FluidSynth =====
 +
 +  fluidsynth -a alsa SoundFont-file.sf2 MIDI-file.midi
 +
 +
 +===== TiMidity++ =====
 +
 +  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, і вона генеруватиме звуки.
 +
 +
 +====== Затримка звуку ======
 +
 +Для того, щоб затримка між MIDI-подіями та появою звуку була якомога меншою,​ потрібно зменшити параметр ''​period_size''​ в налаштуваннях ALSA. Це можна зробити у файлі ''​[[alsa#​воспроизведение|.asoundrc]]''​. Наприклад,​ програма FluidSynth під час запуску запитує в системи значення ''​period_size 64''​. Це значення можна використати як орієнтовне.
 +
 +Часто трапляється,​ що за дуже малої довжини періоду з'​являються тріск та клацання. Тоді можна збільшити параметр ''​periods'',​ наприклад,​ до значення 1024.
 +
 +
 +====== Посилання ======
 +
 +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
 +
 +[[http://​www.fluidsynth.org/​ | Офіційний сайт FluidSynth]] -- Синтезатор звуків музичних інструментів на основі "​звукових шрифтів"​ (SoundFont)
 +
 +[[https://​amsynth.github.io/​ | amsynth]] -- Синтезатор звуків
 +
 +=== Інші програми,​ що працюють з MIDI ===
 +
 +[[https://​qsynth.sourceforge.io/​ | QSynth]] -- просто графічний інтерфейс до FluidSynth.
 +
 +[[https://​lmms.io/​ | LMMS]] -- програма з класу так званих "​DAW"​ -- **D**igital **A**udio **W**orkstation (цифрова аудіостанція)
 +
 +[[https://​ardour.org/​ | Ardour]] -- також DAW.
 +
 +[[http://​rosegardenmusic.com/​ | Rosegarden]] -- Програма для створення та редагування музики
 +
 +[[http://​midieditor.sourceforge.net/​ | MidiEditor]] -- Графічна програма для запису,​ редагування та програвання MIDI-файлів
 +
 +[[http://​www.muse-sequencer.org/​ | MusE]] -- MIDI/​Аудіо-секвенсор з можливостями запису та редагування
 +
 +[[http://​www.swamiproject.org/​ | Swami]] -- редактор звуків музичних інструментів
 +
 +[[http://​pianobooster.sourceforge.net/​ | PianoBooster]] -- Програма для акомпонування та навчанні грі на фортепіано
 +
 +[[http://​www.denemo.org/​ | Denemo]] -- Нотний редактор
 +
 +[[https://​musescore.org/​ | MuseScore]] -- Нотний редактор
 +
 +
 +
 +
 +
 +
 +
  
alsa-midi.txt · В останнє змінено: 2017/06/27 08:04 by wombat