Глава 03 из 21 Звук, синтезатор, MIDI ≈ 40 мин 8 упражнений
Что передаёт MIDI-клавиатура
Внутри MIDI-клавиатуры нет звука, она только сообщает, что вы сделали. В этой главе мы перехватим эти сообщения: увидим байты, которые уходят по кабелю, когда вы жмёте клавишу, педаль или крутите колесо, и прочтём их.
В этой главе
- читать MIDI-сообщения: «нота нажата», «нота отпущена», педаль, колёса
- переводить номер ноты в клавишу и частоту: нота 60 — до первой октавы
- управлять силой нажатия и проверять, насколько ровно вы играете
- понимать, что такое канал и почему один поток может играть на трёх инструментах
- записать несколько нот и посмотреть, из каких байтов состоит MIDI-файл
Подключите MIDI-клавиатуру к компьютеру, не открывая ни одной программы, и нажмите клавишу. Тишина. В большинстве MIDI-клавиатур нет ни генератора, ни динамика: это пульт. Звук делает синтезатор — тот, что вы собирали в главе 2, программа на компьютере или другой инструмент на конце кабеля. А клавиатура только сообщает ему, что произошло: какую клавишу нажали, как сильно, когда отпустили.
Отсюда и вопрос этой главы: если клавиатура не звучит, а только сообщает, то что именно она сообщает? Ответ можно увидеть буквально, байт за байтом. Ниже стоит перехватчик: всё, что вы нажмёте, превратится в строку.
Перехватчик сообщений
Нажмите любую клавишу — на MIDI-клавиатуре, на клавиатуре компьютера (A — это до) или на экране. Подержите и отпустите. Потом сыграйте ещё несколько нот: тихо, громко, коротко, долго.
Каждое ваше действие дало строку из трёх чисел. Нажали клавишу — пришло одно сообщение, отпустили — второе. Пока клавиша просто нажата, по кабелю обычно не идёт ничего: клавиатура молчит, пока ничего не меняется. (Исключение — клавиатуры, которые чувствуют, как сильно вы давите на уже нажатую клавишу: они шлют ещё и «давление».) Синтезатор сам держит звук, пока не услышит «отпустили».
Язык, на котором говорят клавиатура и синтезатор, называется MIDI — Musical Instrument Digital Interface, «цифровой интерфейс музыкальных инструментов». Каждая строка в мониторе — одно MIDI-сообщение. Первое из ваших — «нота нажата» (note on), второе — «нота отпущена» (note off).
Справа от списка — разбор последнего сообщения по байтам. Нажмите на любую строку, чтобы закрепить её разбор. Кнопки HEX, DEC и BIN показывают те же байты в шестнадцатеричной, десятичной и двоичной записи: числа одни и те же, меняется только способ их написать.
Без MIDI-клавиатуры монитор работает так же. Ноты с клавиатуры компьютера и с экрана он переводит в те байты, которые отправила бы настоящая клавиатура, и помечает такие строки значком ≈. Если клавиатура подключена, строки без значка — это ровно то, что пришло по проводу, вплоть до бита.
Три байта
Возьмём одну строку: 90 3C 64. Это три байта — три числа от 0 до 255. В мониторе они записаны в шестнадцатеричной записи: там шестнадцать цифр, 0–9 и A–F, где A — это 10, а F — 15. Программисты и звукоинженеры пишут байты так, потому что один байт — ровно две такие цифры. 3C — это 3·16 + 12 = 60, а 64 — 6·16 + 4 = 100.
Первый байт говорит, что случилось. Его называют статусным байтом, и читается он по половинкам. Старшая цифра — тип сообщения: 9 — нота нажата, 8 — нота отпущена. Младшая — номер канала; о каналах — чуть позже, пока у вас там 0, то есть первый канал. Остальные байты — байты данных: номер ноты и сила.
| Первый байт | Что случилось | Байты данных |
|---|---|---|
9n | нота нажата | номер ноты, сила нажатия |
8n | нота отпущена | номер ноты, сила отпускания |
Bn | контроллер изменился (педаль, колесо модуляции…) | номер контроллера, значение |
En | колесо высоты сдвинулось | младшие 7 бит, старшие 7 бит |
Cn | смена тембра | номер программы |
Почему у байтов данных предел 127, а не 255? Посмотрите в монитор в режиме BIN. У статусного байта самый левый бит всегда 1, у байтов данных — всегда 0. По этому биту приёмник в любой момент знает, где начинается новое сообщение, даже если включился посреди потока. На число остаются семь бит, а это 128 значений: от 0 до 127. Отсюда все «127» этой главы.
Сообщения короткие, потому что провод медленный по сегодняшним меркам: 31 250 бит в секунду. Каждый байт идёт с двумя служебными битами, получается десять бит на байт, и сообщение из трёх байтов занимает 0,96 миллисекунды. Для пальцев этого достаточно: аккорд из десяти нот уходит по кабелю быстрее, чем за 10 мс. По USB тот же MIDI идёт ещё быстрее, а байты остаются прежними.
Проверьте себя: перед вами три байта, что сделал музыкант? Подсказка в десятичной записи внизу.
Нота 60
Второй байт «ноты нажата» — номер ноты. Нумерация простая: каждая следующая клавиша, белая или чёрная, — плюс один. До первой октавы (C4), та, что посередине пианино, — это нота 60. До-диез рядом — 61, ре — 62. Октава вверх — плюс 12: следующая до — 72, предыдущая — 48. С этой главы курс называет ноты и так: «нота 60».
Двигайте ползунок или нажимайте клавиши — рентген покажет номер, имя ноты, её частоту и сообщение, которое уйдёт по кабелю.
Номеров 128, от 0 до 127, — это больше десяти октав. У рояля 88 клавиш: от ноты 21 (самая низкая ля) до ноты 108 (самая высокая до). Номера ниже и выше синтезатор тоже сыграет, просто таких клавиш у рояля нет. Нота 0 звучит на 8,18 Гц — это ниже порога слуха, а нота 127 — на 12 543,85 Гц.
Частота по номеру считается одной формулой. Ля первой октавы, нота 69, — это 440 Гц, и каждые 12 номеров частота удваивается:
$$f = 440 \cdot 2^{(n - 69)/12}$$Нажмите в рентгене +12 и посмотрите на частоту: она ровно вдвое больше. Нажмите +1: умножилась на 1,0595 — это корень двенадцатой степени из двух, о нём говорила глава 1. Синтезатор получает номер и сам пересчитывает его в частоту; самой частоты в сообщении нет.
Номер ноты один у всех, а подписи октав расходятся. В курсе, как и в научной записи, нота 60 — C4. Но некоторые программы и инструменты подписывают ту же ноту 60 как C3. Если в DAW пианоролл вдруг показывает «C3» на средней до, ничего не сломалось: смотрите на номер, он не врёт.
Найдите ноты по номерам. Опора одна: 60 — это до, подписанная на клавиатуре. Дальше считайте шагами: белая и чёрная клавиши — по единице.
А теперь наоборот: клавиша подсвечена, назовите её номер. Подсказки: до всегда кратна двенадцати (48, 60, 72), а ля первой октавы — 69.
MIDI передаёт не звук, а номер клавиши. Нота 60 — до первой октавы (C4), каждая клавиша — плюс один, октава — плюс 12. Частоту из номера считает синтезатор.
Сила нажатия
Третий байт «ноты нажата» — сила нажатия, по-английски velocity, от 1 до 127. Английское слово точнее русского: клавиатура меряет не силу, а скорость. Обычно под каждой клавишей два контакта, один чуть выше другого, и клавиатура засекает, за сколько миллисекунд клавиша прошла путь между ними. Быстро — большое число, медленно — маленькое. Дожимать уже нажатую клавишу бесполезно: число силы ушло в момент нажатия.
Сыграйте несколько нот по-разному. Столбики покажут силу каждой.
Нажмите кнопки «16», «40», «64», «96», «127» — одна и та же нота с разной силой. У пианино громкость растёт, и звук становится звонче. Переключите на синтезатор: здесь сила открывает фильтр, тихая нота глухая, сильная — яркая. Теперь орган: все пять кнопок звучат одинаково. Число приходит, но звук его не использует, как и клавиши настоящего органа, которые силу не чувствуют. Что делать с силой, решает синтезатор, а не клавиатура.
Клавиатура компьютера силу не измеряет: все ноты уходят с одним числом. Его меняют клавиши C (тише) и V (громче). На телефоне и мышкой играйте на площадках силы: чем выше точка нажатия, тем больше число. Площадки работают и в упражнениях ниже.
Музыканты обозначают громкость итальянскими словами: p (пиано, тихо), mf (меццо-форте, средне), f (форте, громко). В MIDI таких слов нет, есть только число, и упражнение ниже понимает каждый оттенок как свой диапазон чисел. Сыграйте с названной силой.
Громко и тихо — половина дела. Труднее играть ровно: восемь нот одной силы, чтобы ни одна не выскакивала. Пианисты тренируют это годами, а MIDI даёт честную линейку: разброс в цифрах.
И обратная задача — нарастание: каждая нота чуть громче предыдущей. Музыканты называют такое нарастание крещендо.
Три оттенка вместо двух — следующая ступень. Здесь середина, mf, должна попасть между тихим и громким.
Управлять силой нажатия — навык рук, и он растёт от повторения. На странице тренажёров есть «Тихо и громко» с уровнями до пяти оттенков; пара минут в день заметно выравнивает игру.
Отпустить — тоже сообщение
Вернёмся ко второй строке в мониторе: «нота отпущена». В ней тот же номер ноты, а третий байт — сила отпускания. Мерить её умеют немногие клавиатуры, и по правилам MIDI те, что не умеют, отправляют 64 — середину шкалы. Поэтому монитор без MIDI-клавиатуры пишет 80 3C 40: 40 в шестнадцатеричной записи — это 64.
Многие клавиатуры поступают иначе: вместо «нота отпущена» шлют «нота нажата» с силой 0, 90 3C 00. Спецификация MIDI 1.0 прямо говорит, что приёмник обязан понимать оба способа и считать их одинаковыми. Так экономятся байты. Сообщения одного типа и канала подряд можно слать без повторения статусного байта (это называют running status, «бегущий статус»), и поток из одних «нота нажата» получается почти на треть короче.
У ноты в MIDI нет длительности. Есть два момента: когда нажали и когда отпустили, а длительность — промежуток между ними. Сыграйте короткие и длинные ноты: лента ниже показывает последние шесть секунд, и на каждой отпущенной ноте написано, сколько миллисекунд она держалась.
Теперь нажмите педаль — кнопкой, пробелом или настоящей педалью, если она подключена к клавиатуре, — и, не отпуская её, сыграйте несколько нот. Клавиши вы отпускаете, «нота отпущена» уходит как обычно, а звук тянется: на ленте он заштрихован. Педаль сустейна не трогает ноты, она шлёт своё сообщение: B0 40 7F — нажата, B0 40 00 — отпущена. Синтезатор помнит, что педаль внизу, и не гасит отпущенные ноты, пока не придёт «педаль отпущена».
Это сообщение другого типа: «контроллер изменился», по-английски control change, коротко CC. Первый байт B0, второй — номер контроллера (у педали это 64, в шестнадцатеричной записи 40), третий — значение. По правилам 0–63 значит «отпущена», 64–127 — «нажата». Граница посередине нужна потому, что бывают педали с промежуточными числами: любое значение от 64 и выше синтезатор понимает как «нажата».
Педаль нажата. Вы берёте ноту 60 и отпускаете клавишу. Что пришлёт клавиатура в момент, когда вы отпустили клавишу?
Клавиатура честно сообщает, что палец ушёл. Решение держать звук принимает синтезатор: он помнит, что педаль внизу, и откладывает затухание, пока не придёт «педаль отпущена» (контроллер 64 со значением меньше 64).
Колёса слева
Слева от клавиш у большинства MIDI-клавиатур — два колеса или джойстик. Одно колесо остаётся там, куда его поставили, второе на пружине и само возвращается в середину. Попробуйте оба. Если клавиатуры нет, тяните колёса на экране.
Первое — колесо модуляции. Это контроллер номер 1: B0 01 и значение от 0 до 127. Что именно оно модулирует, решает синтезатор; чаще всего глубину вибрато, как здесь. В синтезаторе из главы 2 его можно было бы направить на фильтр или на громкость — клавиатуре всё равно, она шлёт только число.
Второе — колесо высоты, pitch bend. Для него в MIDI есть отдельный тип сообщения, E0, и он особенный: значение передаётся двумя байтами данных по семь бит, всего 14 бит, то есть 16 384 положения. Середина — 8192 (E0 00 40): высота не меняется. Посмотрите на байты под колесом: младший байт бежит быстро, старший — медленно, как минутная и часовая стрелки.
Зачем такая точность? Переключите диапазон на ±12 полутонов: колесо теперь гнёт ноту на октаву вверх и вниз. Если бы на это было всего 128 положений, каждый шаг был бы 2400 / 128 = 18,75 цента, и медленный изгиб звучал бы лесенкой. С 16 384 положениями шаг — около 0,15 цента, и слух его не замечает. Насколько гнуть, решает синтезатор, а не колесо; по умолчанию часто ставят ±2 полутона.
Посмотрите и на счётчик под колёсами: одно движение пальцем — десятки сообщений. Колесо шлёт новое значение при каждом сдвиге, и монитор в начале главы показывает их все, строка за строкой.
Какие ещё бывают контроллеры
Номеров контроллеров 128, от 0 до 127; последние восемь, 120–127, заняты служебными командами вроде «отпустить все ноты». Остальные — для ручек, педалей и фейдеров. Некоторые номера закреплены привычкой и стандартом: 1 — колесо модуляции, 7 — громкость канала, 10 — панорама (левее или правее), 11 — экспрессия, 64 — педаль сустейна. Ручки на MIDI-контроллере обычно можно назначить на любой свободный номер, а в DAW потом привязать этот номер к любой ручке синтезатора.
Шестнадцать каналов
Осталась младшая половина статусного байта. Это канал: шестнадцатеричная цифра от 0 до F, то есть 16 каналов, которые люди называют с 1 до 16. По одному кабелю могут идти ноты для шестнадцати разных инструментов, и каждый слушает только свой канал. 90 3C 64 — «нота 60 на канале 1», 91 3C 64 — та же нота на канале 2.
Сыграйте короткую фразу и послушайте её на трёх каналах. Байты те же, меняется одна цифра — красная в первом байте.
Пианино, синтезатор и ударные получили одну и ту же последовательность чисел. Пианино и синтезатор сыграли мелодию разными тембрами, а ударные вообще не играют высоту: на канале 10 номер ноты выбирает барабан. Так договорились в стандарте General MIDI (1991): на десятом канале 36 — бочка, 38 — малый барабан, 42 — закрытый хай-хэт, и так у любого совместимого инструмента.
Переключите «Ваши клавиши отправляют на канал» и поиграйте: в мониторе в начале главы младшая цифра статуса сменится. У настоящей MIDI-клавиатуры канал выставляется в её настройках; на сцене одной клавиатурой так управляют двумя синтезаторами, разделив клавиши на две зоны с разными каналами.
В MIDI нет звука, это запись того, что делали руки: какая клавиша, когда, с какой силой. Один и тот же поток может сыграть любой инструмент, и каждый сыграет по-своему.
Кабель между двумя фирмами
До начала 1980‑х синтезаторы разных фирм между собой почти не разговаривали. У каждой был свой способ соединять инструменты, а чтобы сыграть с одной клавиатуры на двух синтезаторах разных марок, нужны были переходники и везение. MIDI появился как договор конкурентов.
Самое удивительное в этой истории — то, что договор держится до сих пор. Клавиатура, купленная сегодня, может управлять синтезатором 1983 года: тот же разъём DIN с пятью контактами (или USB), те же три байта, тот же «90 3C 64». Программа на компьютере, приложение на телефоне и синтезатор на сцене понимают одни и те же сообщения.
MIDI 2.0
В январе 2020 года на той же выставке NAMM представили MIDI 2.0. В нём сила нажатия — 16 бит (65 536 значений вместо 127), контроллеры и колесо высоты — 32 бита, каналов — 256 (16 групп по 16), а связь двусторонняя: инструменты могут спросить друг у друга, что каждый умеет. Если собеседник понимает только MIDI 1.0, устройство MIDI 2.0 переходит на старый язык. Поэтому всё, что вы читаете в этой главе, остаётся правдой и для новых инструментов.
MIDI-файл
Если сообщения записать вместе со временем, получится MIDI-файл — файл с расширением .mid, который открывает любая DAW. Звука в нём нет, только сообщения, а между ними — дельта-время: сколько тиков ждать до следующего события. Тик — мельчайшая доля времени в файле; здесь их 480 на четверть.
Запишите несколько нот — до двенадцати — и посмотрите на файл изнутри. Если играть не хочется, откройте пример.
Нажмите на зелёные байты: это ваши «нота нажата» — те же три байта, что в мониторе. Красные — отпускания. Серые перед каждым сообщением — пауза до него. В начале файла — заголовок MThd, дальше служебная дорожка с темпом и размером и, наконец, дорожка с вашими нотами. Весь файл — от силы пара сотен байтов. Несколько секунд звука в WAV заняли бы сотни килобайт, а MIDI-файл хранит только то, что сделали руки, и его можно переписать любым тембром.
Вы отправили другу этот MIDI-файл. Он открыл его в своей программе, где на дорожке стоит струнный оркестр. Что он услышит?
В файле только номера нот, сила, моменты нажатия и отпускания. Звук делает тот синтезатор, который читает файл. Поэтому MIDI-файл и удобен: тембр можно поменять в любой момент, не переигрывая.
Последняя проверка — любые сообщения главы, без подсказки в десятичной записи и на разных каналах. Читайте первую цифру первого байта: она скажет тип, остальное — дело техники.
Дальше
Теперь вы знаете, что уходит из клавиатуры: «нота нажата» с номером и силой, «нота отпущена», педаль и колёса как контроллеры, и всё это — на одном из шестнадцати каналов. Вы читаете эти байты, играете тихо и громко по заказу и проверяете, насколько ровно. И у вас есть мерка для любой ноты: номер. Нота 60 — до первой октавы.
Но номера пока приходится считать от 60: плюс один, плюс два, плюс двенадцать. Пианист так не делает, он видит клавиатуру целиком. Нота 60, нота 62, нота 65 — где они, и как попасть в нужную клавишу сразу, не считая? Это глава 4: карта клавиатуры.