MIDI (англ.Musical Instrument Digital Interface, цифровий інтерфейс музичних інструментів) — стандарт передачі інформації міжелектронними музичними інструментами, розроблений 1983 року, що дає можливість електронним музичним інструментам взаємодіяти між собою чи комп'ютером та іншим 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-інтерфейс використовує роз'єми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.
Формат MIDI розроблений таким чином, щоб будь-який секвенсор міг зберігати у файлах як стандартизовані команди, так і специфічні для тієї чи іншої програми. При цьому при завантаженні файлів MIDI незрозуміла іншим програмам-додаткам інформація не призводить до непорозумінь, а просто ігнорується.
Кожна MIDI команда складається зі статусного байту і байту даних, або, в залежності від типу команди — кількох байтів даних. Для того, щоб пристрій міг безпомилково відрізнити статусний байт від байту даних — прийнято, що кожен старший біт статусного байту має значення «1», а кожний старший біт байту даних — «0». У байті даних решта 7 біт відведено для кодування значення того чи іншого параметру, що дозволяє закодувати 128 різних значень. У статусному байті наступні три біти кодують тип повідомлення, а останні 4 біти — один з 16 каналів повідомлення або тип системного повідомлення.
Канальні повідомлення безпосередньо впливають на характер звучання. Таких повідомлень 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)
Режим глісандування (відтворення починається від звуку попередньої натиснутої клавіші, поступово глісандуючи до натиснутої в цей час клавіші Час глісандування визначається контролером № 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, кінець системного виключного повідомлення
Стандарт General MIDI (GM) розроблено в1991 році (MMA) з метою уніфікації музичних інструментів, які визначаються повідомленням Program Change. Цей стандарт містить 128 інструментів та 47 звуків ударних інструментів на 10-му каналі MIDI.
Підтримка стандарту General MIDI передбачає також відповідність інструмента наступним вимогам:
Підтримка одночасного звучання до 24-х голосів (мінімум 16 мелодичних і 8 ударних)
Підтримка динаміки (velocity)
Підтримка одночасно до 16 незалежних каналів (10-й зарезервовано для ударних)
Підтримка поліфонії на кожному каналі
Розширеним стандартом є так званий стандарт GS, що дозволяє підключати до 128 банків звуків, що теоретично передбачає використання до 16 384 інструментів.