MIDI

стандарт передачі інформації між електронними музичними інструментами

MIDI (англ. Musical Instrument Digital Interface, цифровий інтерфейс музичних інструментів) — стандарт передачі інформації між електронними музичними інструментами, розроблений 1983 року, що дає можливість електронним музичним інструментам взаємодіяти між собою чи комп'ютером та іншим MIDI-сумісним обладнанням, здійснювати з одного інструменту управління іншими.

Музичний діапазон стандарту MIDI

MIDI не передає та не генерує звук — натомість MIDI передає «повідомлення», такі як нота-вкл./нота-викл., висота (pitch) та динаміка взятої ноти на інструменті; контрольні сигнали (СС) для таких параметрів як гучність, панорама, сигнали відліку часу для синхронізації темпу, тощо. Музичний інструмент приймає такі повідомлення і генерує звук. Інструментом може бути як реальний пристрій, наприклад, синтезатор, так і віртуальний - програма на комп'ютері. Як електронний протокол, MIDI відзначається надзвичайно широким поширенням.

Принципи функціонування ред.

MIDI описує апаратний інтерфейс, який дозволяє з'єднувати синтезатори різних виробників та комп'ютери, описує протоколи зв'язку для передавання даних від одного пристрою до іншого. MIDI-пристрої можуть взаємодіяти з програмами на комп'ютері. Запис та відтворення MIDI базується на пакетах даних, кожний з яких відповідає MIDI-повідомленню (англ. MIDI-events).

Пристрій для запису та редагування MIDI-повідомлень називається секвенсер (від англ. sequence — послідовність). MIDI-повідомлення можна вводити через MIDI-клавіатуру (в реальному часі або в покроковому режимі), або ж різноманітними способами з клавіатури чи мишкою у програмі-секвенсері. Послідовність MIDI-повідомлень може бути збережена як MIDI-файл (файл має розширення *.mid).

Найчастіше джерелом МІДІ-сигналів є електронна клавіатура. МІДІ повідомлення можуть бути направлені в синтезатор, що також знаходиться в середині цієї клавіатури або бути скерований кудись в інше місце, наприклад, в реальний чи комп'ютерний синтезатор.

Коли натискається клавіша, посилається повідомлення note-on. Це повідомлення складається з двох частин: перша-висота (note) і як швидко її натиснули (velocity). «Note» описує висоту (pitch, пітч) зі значенням між 0 та 127. «Velocity» теж має значення 0-127 і зазвичай описує гучність (gain). Чим більша velocity, тим гучніше. Інколи різна швидкість натиснення створює різний тембр. Або впливає на швидкість ататки звуку. Чим швидше натискаєш, тим різкіше починає звучати звук. Ці параметри залежать від того як налаштований звук на синтезаторі. Також не всі електронні клавіатури мають чутливість до швидкості натискання. Комп'ютерна клавіатура теж не має такої чутливості, тому коли її використовувати як джерело міді-повідомлень (за допомогою спецальних програм, наприклад MIDI YOKE), то секвенсер буде отримувати одне і теж саме значення velocity.

Коли клавіша відпускається, то створюється інше повідомлення note-off. Це повідомлення теж має частину «note», щоб переконатись, що повідомлення про закінчення звучання належить до потрібної ноти. Наприклад, якщо натиснути дві ноти, і відпустити одну, то друга продовжить звучання. Інколи note-off теж може містити повідомлення velocity, що надасть синтезатору інформацію про те, як закінчити звук.

На малюнках можна ознайомитись з тим, як відображають міді дані різні програми.

Деякі міді-клавіатури також можуть генерувати такі повідомлення: «Aftertouch» — це коли користувач ще більше натискає на клавішу після того, як її вже натиснув. Це може спровокувати якісь додаткові зміни в звучанні синтезатора, наприклад, з'явиться вібрато чи поміняється тембр. Чи спрацює це повідомлення залежить від секвенсора чи синтезатора і їх налаштувань.

Також на міді-клавіатурі може розташовуватись pitchbend колесо-слайдер. Це повідомлення має значення від 0 до 127 і за умовчанням знаходиться в значенні 64, що означає «нема зміни висоти тону». Якщо ж його крутити вгору чи вниз, то буде змінюватись висота тону. Це можна використовувати як засіб для виразності під час гри. На скільки сильно буде збільшуватись висота звучання, на пів-тона чи на цілу октаву — залежить від налаштувань патчу синтезатора. Pitchbend не має значення note. А це означає що транспонування буде відбуватись одночасно для всіх нот, що звучать в даний момент. Бувають колесика висоти тону з підвищеною чутливістю, які мають значення 0-16383 (де 8192 — нема зміни висоти).

MIDI повідомлення можуть розсилатись на 16 каналів. Канали використовуються щоб посилати інформацію про різні ноти на різні інструменти. Наприклад, можна налаштувати електронну клавіатуру так, що ноти нижнього регістру (С0 - B2) будуть звучати як бас-гітара. А ноти верхнього регістру (C3 - B5) як піаніно.

Ще деякі не дуже поширені повідомлення:

  • Patch change — дозволяє змінити звук в синтезаторі прямо з МІДІ-контролера (наприклад, переключитись з віолончелі на гітару);
  • Continuous controller — дозволяє задіяти MIDI-ефект що триває в часі за допомогою слайдера (реверберація, ділей, фільтр, гучність);
  • Channel pressure — діє як aftertouch, тільки впливає на кожну ноту даного каналу. Зазвичай використовується як дешевша версія aftertouch, так як для активації потрібен тільки один сенсор для всіх нот, а не по одному сенсору для кожної ноти.

Переваги ред.

  • Компактність. Ціла пісня може бути передана за допомогою декількох сотень міді-повідомлень (в порівнянні з аудіо-даними, які семплуються кілька тисяч раз на секунду);
  • Легко маніпулювати. Легко змінити або відредагувати ноти, їх висоту, тривалість без необхідності перезаписувати всю частину.
  • Змінити звук. Оскільки МІДІ просто описує яку ноту грати, то як саме буде звучати ця нота — обирає автор. Змінюючи інструменти можна змінити загальний звук композиції.

Комутація ред.

 
Роз'єм для підключення MIDI
 
MIDI порти та кабель

Фізичний MIDI-інтерфейс використовує роз'єми DIN 5/180°. Оптронові роз'єми використовуються для запобігання замикання через землю між підключеними пристроями. Логічна схема функціонування MIDI являє собою кільцеву топологію з трансивером всередині кожного пристрою. Фізично та логічно трансивери відділяють вхідний та вихідний контури, завдяки чому MIDI-повідомлення, які отримує пристрій з мережі, не призначаються для їх ретрансляції у вихідний контур (MIDI-OUT). Така технологія спричиняє затримку, відчутною на слух у достатньо великих MIDI-мережах.

Сучасні MIDI-пристрої мають три роз'єми — вхідний роз'єм MIDI-IN, через який пристрій отримує повідомлення ззовні та два вихідних роз'єми — MIDI-OUT та MIDI-THRU. Різниця між портами MIDI-OUT та MIDI-THRU полягає в тому, що сигнал з MIDI-OUT генерується безпосередньо на самому інструменті, тоді як порт MIDI-THRU видає точну копію сигналу, який отримує пристрій через вхідний порт MIDI-IN.

Інтерфейс з трьома роз'ємами мають також деякі звукові карти, проте інші потребують зовнішнього інтерфейсу, це може бути ігровий порт, роз'єм DA-15, USB-порт, FireWire або ethernet.

Кодування MIDI-повідомлень ред.

Формат MIDI розроблений таким чином, щоб будь-який секвенсор міг зберігати у файлах як стандартизовані команди, так і специфічні для тієї чи іншої програми. При цьому при завантаженні файлів MIDI незрозуміла іншим програмам-додаткам інформація не призводить до непорозумінь, а просто ігнорується.

Кожна MIDI команда складається зі статусного байту і байту даних, або, в залежності від типу команди — кількох байтів даних. Для того, щоб пристрій міг безпомилково відрізнити статусний байт від байту даних — прийнято, що кожен старший біт статусного байту має значення «1», а кожний старший біт байту даних — «0». У байті даних решта 7 біт відведено для кодування значення того чи іншого параметру, що дозволяє закодувати 128 різних значень. У статусному байті наступні три біти кодують тип повідомлення, а останні 4 біти — один з 16 каналів повідомлення або тип системного повідомлення.

Види MIDI-повідомлень ред.

Розрізняють два основних види MIDI-повідомлень — канальні та системні.

Канальні повідомлення ред.

Канальні повідомлення безпосередньо впливають на характер звучання. Таких повідомлень 7:

код MIDI-повідомлення Значення Параметри
1001 Note-on Натиснення клавіші Номер клавіші (0—127),
сила натиснення (0—127)
1000 Note-off Відпускання клавіші Номер клавіші (0—127)
1100 Program Change Включення інструменту Номер інструменту (0—127)
1110 Pitch Bend Зсув по висоти звуку (wheel)
(Використовуэться для ефектів glissando, частотного вібрато тощо)
Величина зсуву (-8191—8191)
1011 Control Change Зміна контролеру Номер контролеру (0—127) та значення (0—127)
1010 Key Pressure Тиск на клавішу Сила тиску на клавішу
1101 Channel Pressure Тиск на клавіатуру Сила тиску на клавіатуру

MIDI-повідомлення Note-on та Note-off визначають нотний текст музичного твору і можуть бути відображеними у вигляді музичної партитури. MIDI-повідомлення Control Change використовують для програмування тонких виконавських нюансів, усього їх передбачено 128, проте використовуються, як правило, лише декілька. Найуживанішими є наступні:


назва призначення значення
1 Modulation амплітудне вібрато 0 — повністю відключає вібрато
127 — максимальне вібрато
5 Portamento Час глісандування (працює при включенному режимі глісандування (контролер № 65) 0 — мінімальне,
127 — максимальне значення
7 Volume гучність звуку 0 — повністю виключає звук
127 — максимальна гучність
10 Pan просторова локалізація звуку 0 — локалізація зліва
64 — локалізація по центру
127 — локалізація справа
11 Expression Виразність виконання
(як правило діє аналогічно контролеру № 7)
0 — мінімальне,
127 — максимальне значення
64 Sustain Затримка звуку (Ефект, аналогічний правій педалі фортепіано) 127 — ефект включено
0 — еффект виключено
65 Portamento Switch Режим глісандування
(відтворення починається від звуку попередньої натиснутої клавіші, поступово глісандуючи до натиснутої в цей час клавіші
Час глісандування визначається контролером № 5
127 — ефект включено
0 — еффект вимкнено.
72 Release time Час затухання звуку 0 — мінімальне,
127 — максимальне значення
73 Attack time Час атаки звуку 0 — мінімальне,
127 — максимальне значення
74 Brightness Яскравість звуку (як правило, корелює частоту зрізу фільтра)
121 All controlers off Відновлює значення всіх контролерів за замовчуванням

Час реалізації того чи іншого MIDI-повідомлення може бути представлений в форматі реального часу — SMTPE (хвилини: секунди: долі секунди) та в форматі музичного часу (такти: долі такту: «тікі»), які пов'язані між собою значенням музичного темпу. З точки зору музичної практики зручнішим для використання є формат музичного часу. Величина PQRN (Pulses per quarter note) (або PPQ - Pulses Per Quarter чи TPQN -Ticks Per Quarter Note) визначає кількість «тіків» — найдрібнішої одиниці часу в долі.

Іншими словами це означає, що якщо відтворити MIDI файл, то він може відтворюватись залежно або незалежно від поточного тему твору чи проекту. Це потрібно враховувати, якщо використовувати МІДІ файли створені іншими виконавцями у своїх проектах. Наприклад, файл був створений для пісні у темпі 120BPM, а ви його хочете використати у пісні з темпом 130BPM. В такому випадку вам потрібно пристосувати тривалість нот чи темп файлу до темпу вашого проекту.

MIDI-повідомлення може передаватися по одному з 16 MIDI-каналів, або по всіх каналах одночасно. Наявність 16 MIDI-каналів дає можливість одночасного незалежного управління 16 різними інструментами.

Системні повідомлення ред.

У статусному байті системних повідомлень 4 старші байти мають значення «1», 4 молодші визначають тип системного повідомлення. Системні повідомлення слугують головним чином для керування роботи програмою, вони не поділяються на канали і стосується всієї системи і мають вищий пріоритет ніж канальні.

Усього передбачено 16 системних повідомлень, проте використовуються з них лише 11:


назва призначення
F0 System Exclusive SysEx, ексклюзивне повідомлення
F1 резерв
F2 Song Position Pointer покажчик місця в п'єсі
F3 Song Select вибір п'єси
F4 резерв
F5 резерв
F6 Tune Request запит підстроювання
F7 EOX Кінець SysEx, кінець системного виключного повідомлення
F8 Timing Clock синхронізація за часом
F9 резерв
FA Start запуск гри по партитурі
FB Continue продовження гри по партитурі
FC Stop зупинка гри по партитурі
FD резерв
FE Active Sensing перевірка з'єднань MIDI-мережі
FF System Reset скидання всіх пристроїв мережі

Стандарт GM ред.

Докладніше: General MIDI

Стандарт General MIDI (GM) розроблено в 1991 році (MMA) з метою уніфікації музичних інструментів, які визначаються повідомленням Program Change. Цей стандарт містить 128 інструментів та 47 звуків ударних інструментів на 10-му каналі MIDI.

Підтримка стандарту General MIDI передбачає також відповідність інструмента наступним вимогам:

  • Підтримка одночасного звучання до 24-х голосів (мінімум 16 мелодичних і 8 ударних)
  • Підтримка динаміки (velocity)
  • Підтримка одночасно до 16 незалежних каналів (10-й зарезервовано для ударних)
  • Підтримка поліфонії на кожному каналі

Розширеним стандартом є так званий стандарт GS, що дозволяє підключати до 128 банків звуків, що теоретично передбачає використання до 16 384 інструментів.

Література ред.

  • Николенко Д. В. MIDI — язык богов. — СПб.: Регата, 2000. — 144 стр.
  • В. Белунцов. Новейший самоучитель работы на компьютере для музыкантов — Москва: «ТехБук», 2003. — 560 с., илл. ISBN 5-93650-035-7

Посилання ред.