MIDI
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/NoteNamesFrequenciesAndMidiNumbers.svg/220px-NoteNamesFrequenciesAndMidiNumbers.svg.png)
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, так як для активації потрібен тільки один сенсор для всіх нот, а не по одному сенсору для кожної ноти.
Переваги
- Компактність. Ціла пісня може бути передана за допомогою декількох сотень міді-повідомлень (в порівнянні з аудіо-даними, які семплуються кілька тисяч раз на секунду);
- Легко маніпулювати. Легко змінити або відредагувати ноти, їх висоту, тривалість без необхідності перезаписувати всю частину.
- Змінити звук. Оскільки МІДІ просто описує яку ноту грати, то як саме буде звучати ця нота — обирає автор. Змінюючи інструменти можна змінити загальний звук композиції.
Комутація
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/DIN-5_Diagram.svg/80px-DIN-5_Diagram.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Midi_ports_and_cable.jpg/220px-Midi_ports_and_cable.jpg)
Фізичний 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 (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
Посилання
- Сторінка асоціації виробників MIDI (англ. MIDI Manufacturers Association)
- Стисла історія розвитку MIDI-технологій(рос.)
- Про стандарт GM(рос.)
- п
- о
- р
- Шина адреси
- Шина даних
- Шина керування
- Системна шина
- Daisy chain[en]
- Bus contention
- Мережа на чипі
- Plug and play
- Список пропускних здатностей пристроїв[en]
- Пропускна здатність
- ExpressCard
- MXM
- PC Card
- Futurebus
- InfiniBand
- QuickRing
- SCI
- RapidIO
- IEEE-488