![](https://habrastorage.org/webt/_2/41/ap/_241apwr4twh2wnewmvzygcejo0.png)
Наиболее знаковым атрибутом видеоигровой музыки 1980-х, несомненно, является арпеджио — технический приём, служащий обогащению гармонии в условиях крайне ограниченной полифонии. Получающееся в результате специфическое «булькающее», «бурлящее» звучание стало в сознании масс своего рода визитной карточкой 8-битной музыки, вызывающей мгновенное узнавание.
Как ни странно, несмотря на многократно выросшую с тех пор мощность современных компьютеров и синтезаторов, в современном музыкальном ПО этот классический приём стал менее доступен, чем раньше. Расскажу о том, почему так вышло, а также о своём довольно старом проекте (2017 год), в котором я попытался решить эту проблему, и почему это не очень-то получилось, хотя и получилось.
▍ Содержание
- Арпеджио и старые компьютеры
- Виды арпеджио
- Что сейчас
- Компьютеры и MIDI
- ChipArp
- Есть подвох
- Заключение
▍ Арпеджио и старые компьютеры
Термин «арпеджио» обозначает способ исполнения аккордов и прочих созвучий, когда ноты берутся последовательно одна за другой, а не одновременно — как при игре на арфе. Собственно само слово означает буквально это: «как на арфе». Помимо художественной выразительности, приём особенно полезен при игре на монофонических инструментах, которые могут играть только одну ноту в каждый момент времени — это, например, большая часть духовых инструментов.
![](https://habrastorage.org/webt/ck/a8/1f/cka81fqvblujmwgq5beg6lxusmg.png)
Приём столетиями использовался в мировой музыке, но приобрёл особое значение в ранней компьютерной музыке, так называемом «чиптюне». Когда домашние компьютеры только обретали звуковые возможности, они использовали специализированные звуковые чипы, способные воспроизводить очень ограниченное количество голосов — всего три-четыре. Такой ограниченной полифонии не хватало для воспроизведения настоящих аккордов.
Трудно сказать, кто именно придумал использовать очень быстрое и цикличное арпеджио в компьютерной музыке, чтобы уместить сложные созвучия и аккорды всего в один голос, хотя и ценой довольно своеобразного, «переливающегося» звучания. Возможно это были Роб Хаббард и Мартин Голуэй, применявшие этот приём в саундтреках для Commodore 64 уже в 1985 году. По крайней мере, музыка этих композиторов сделала приём арпеджио именно такого вида популярным, а дальше его начали развивать десятки других талантливых авторов.
Как говорится, лучше один раз увидеть, чем сто раз услышать, но в данном случае лучше один раз услышать, если вы ещё не поняли, о чём же идёт речь. Свои волшебные арпеджио для вас исполняет Йерун Тель:
Особенностями, отличающими этот вид арпеджио от классического, исполняемого живыми музыкантами на реальных инструментах, являются очень высокая скорость, гладкость и короткая цикличность. Компьютер играет арпеджио из 3-4 нот по кругу с очень высокой скоростью, обычно 60 нот в секунду, причём приёмом легато, то есть без явно слышимой атаки, без щелчков между нотами. Если бы атака была слышна, на такой скорости она звучала бы как гудение и заглушала бы тональную составляющую. Живые музыканты, например гитаристы-шредеры, способны сыграть нечто подобное, но скорость извлечения нот самых продвинутых музыкантов составляет примерно 26 нот в секунду.
Стоит отметить любопытный факт, что чиптюновое арпеджио — европейская традиция, распространившаяся и в западном мире, но по каким-то причинам практически никак не представленная в японской видеоигровой музыкальной культуре, которая, тем не менее, исторически являлась главной движущей силой в становлении и развитии самого явления видеоигровой музыки. Возможно, это связано с местным подходом к созданию и программированию музыки: в компьютерные музыканты шли студенты музыкальных училищ, а не самоучки, а вместо программ типа «трекер», оперирующих произвольными длительностями нот, использовался язык MML, использующий только классические длительности, из-за чего описание в нём чиптюнового арпеджио становилось нетривиальной задачей. В результате одни и те же композиторские задачи решались разными средствами, что безусловно оказало влияние на саму видеоигровую музыку, на её звучание и мелодику.
![](https://habrastorage.org/webt/7j/n_/sr/7jn_sr-unpcfzictm8fx4nh8y0m.png)
▍ Виды арпеджио
Исторически первый тип арпеджио появился ещё в Ultimate Soundtracker на Commodore Amiga, где был одним из всех двух доступных эффектов, и с тех пор реализуется в большинстве трекеров, придерживающихся совместимости с оригинальным набором эффектов формата MOD. Это эффект 0XY, очень примитивная реализация арпеджио: значения X и Y задают смещение от базовой ноты в полутонах (до 15 полутонов), и каждый тик паттерна последовательно чередуется три ступени (базовая нота, +X и +Y). Управление скоростью чередования и количеством шагов не предусмотрено.
![](https://habrastorage.org/webt/bi/l8/oh/bil8ohe2zh9irrcrcutp9cmjl-k.png)
В трекерах для 8-битных компьютеров, где минималистичность выразительных средств (часто это были только частота и громкость) пытались компенсировать более гибким управлением ими, обычно используется более продвинутый вариант, арпеджио по таблице. Он может называться по-разному — таблицей, макросом, орнаментом. Представляет он собой список из смещений в полутонах, которые обычно имеют диапазон в несколько октав и могут быть также представлены отрицательными значениями. Длина списка устанавливается произвольно. Каждый тик паттерна (традиционно около 1/60 секунды) перебираются значения из этого списка. Изменяя содержание списка, можно получить восходящее и нисходящее арпеджио, арпеджио из разного количества ступеней, разную скорость арпеджио.
![](https://habrastorage.org/webt/ll/d9/by/lld9by43vciz7g7_tsfj79mzv0i.png)
Табличная разновидность арпеджио может отличаться деталями реализации. В одних трекерах таблица — часть структуры инструмента, и для разных арпеджио приходится дублировать инструмент многократно. В других, это в основном касается трекеров для платформы ZX Spectrum, номер таблицы является отдельным параметром, позволяя использовать её совместно с любыми инструментами.
![](https://habrastorage.org/webt/d9/io/hl/d9iohl2oscbx1wr2tpzgx2o_jke.png)
Несмотря на гибкость, которую дают табличные арпеджио, в подавляющем большинстве композиций для самых разных платформ применяются всего несколько основных последовательностей, как наиболее практичных и хорошо звучащих. Как правило, эти последовательности, восходящие в порядке возрастания, так как другой порядок следования ступеней не даёт принципиальной разницы в звучании. Впрочем, практически уверен, что у некоторых чиптюн-музыкантов найдутся свои фирменные последовательности, отличающиеся от общепринятых, и более сложные аккорды.
- Октавный перелив: 0 12.
- Простой мажор и минор: 0 4 7 и 0 3 7.
- Аккорд с октавным удвоением: 0 4 7 12.
- Простые интервалы: 0 2, 0 3, 0 4, 0 5 и так далее.
Также частым приёмом является замедленное арпеджио, где каждая ступень играет дважды или даже трижды, то есть частота смены нот снижается с 60 до 30 или 20 раз в секунду. Также иногда встречается вариант с изменением скорости арпеджио на протяжении длительности звучания ноты, например, оно постепенно замедляется.
▍ Что сейчас
Сегодня, в эпоху восьмибитного ренессанса, когда элементы видеоигровой культуры 80-х всё чаще проникают в популярные медиапродукты, в современных программах для создания музыки стал доступен довольно богатый набор программных синтезаторов (в частности, плагины стандарта VSTi), воссоздающих звуки старых компьютеров, приставок и отдельных звуковых чипов, или просто имеющие схожее звучание. В целом, воссоздание довольно точных стилизаций или просто композиций с элементами звучания видеоигровой музыки разных исторических периодов не представляет особых сложностей.
Казалось бы, никаких затруднений с воссозданием эффекта арпеджио быть не может, ведь по сути всё, что требуется — просто проигрывать ноты аккорда поочерёдно, по кругу и с высокой скоростью, и гораздо менее производительные компьютеры прошлого прекрасно с этим справлялись.
Для решения подобной задачи предназначены многочисленные плагины-арпеджиаторы. Однако, все они создают последовательность нот, каждая из которых завершается перед началом следующей, постоянно перезапуская таким образом сэмпл или огибающие инструмента. Это даёт не аутентичный, грубый звук арпеджио, внося упомянутое парой разделов назад гудение. Также подобные плагины обычно рассчитаны на куда более низкие скорости перебора нот, а последовательности ступеней для перебора задаются во встроенных редакторах плагинов, что довольно неудобно. И хотя Kirnu или BlueARP прекрасно справляются со своими основными обязанностями, в частности с созданием характерных элементов трансовой музыки, они едва ли подходят для имитации чиптюновых арпеджио.
![](https://habrastorage.org/webt/i7/mo/k5/i7mok52j-gyzdnr_wlzqodrhyqq.png)
Наиболее практичный подход, которым обычно ограничиваются авторы музыки — использование встроенных арпеджиаторов некоторых чиптюновых VSTi, например Bleep. Однако они реализованы далеко не всюду, и каждая реализация отличается от других различными деталями или самим принципом. Как правило, тип арпеджио можно выбрать только из готовых пресетов. Если же есть возможность создания собственных арпеджио, как правило, нужно задавать каждую их ступень по отдельности, создавая отдельный пресет для каждого вида аккорда, а для воспроизведения в одном канале разных арпеджио (разных аккордов) нужно переключаться между пресетами с помощью средств автоматизации.
![](https://habrastorage.org/webt/nf/jl/e3/nfjle3uz80e6gjxuvl-0_ulazka.png)
В процессе работы над набором около-чиптюновых VSTi-синтезаторов 1bitstudio у меня возникло закономерное желание добавить в них поддержку арпеджио, и я оказался перед выбором — делать встроенный арпеджиатор в каждый из плагинов или один отдельный универсальный VSTi-арпеджиатор для работы со всеми ними. Понадеявшись на то, что второй вариант мог бы также работать с синтезаторами других авторов, я решил пойти этим путём.
Резонно предположив, что подобная идея уже возникала у других людей, сначала я попытался найти готовый арпеджиатор, подходящий для чиптюна, но нашёл только упомянутые выше «медленные» арпеджиаторы, не способные аутентично воспроизвести нужный эффект. Удивившись отсутствию готовых решений, я приступил к разработке. В процессе стало ясно, почему сложилась подобная ситуация, и почему, хотя требуемый результат был достигнут, моё решение не может быть универсальным.
▍ Компьютеры и MIDI
Домашние компьютеры 1980-х снабжались одним встроенным звуковым чипом, который управлялся непосредственно процессором через прямую запись регистров. Для изменения высоты звука достаточно передать звуковому чипу всего пару байт, и высота мгновенно меняется. Чипы проектировались таким образом, чтобы при изменении высоты звука не происходило сброса фазы сигнала, то есть не возникало никаких нежелательных щелчков. Обновление состояния звукового чипа происходило синхронно с кадровой развёрткой. Поэтому реализация чиптюнового арпеджио была очень проста, а его скорость совпадала с частотой кадров телевизора или монитора — отсюда те самые 60 нот в секунду.
В те же времена, а именно в 1983 году, появился стандартный протокол передачи данных между музыкальными инструментами — MIDI. В силу сложности и ресурсоёмкости, он имел довольно ограниченное применение в области озвучивания видеоигр (в основном на платформе IBM PC, которая в разных конфигурациях могла использовать очень разные звуковые устройства). Однако в профессиональном окружении MIDI с тех и до сих пор применяется повсеместно. В том числе он используется для передачи данных между плагинами-синтезаторами внутри любой программы цифровой студии. То есть, плагины VSTi внутри вашего Fruity Loops, Cubase или Reaper’а общаются с хостом и между собой посредством протокола MIDI родом из 1983 года. И хотя протокол уже давно избавился от изначально ограниченной скорости передачи и задержек, набор сообщений, которые можно через него передавать, остаётся неизменным.
Сообщения MIDI представляют собой простые команды, которые должны уметь выполнять поддерживающие его инструменты. Например, выбрать пресет звука с таким-то номером, запустить ноту, прекратить ноту, изменить глубину эффекта вибрато или отклонения высоты тона. В протоколе не предусмотрено специальных средств для реализации чиптюн-подобного арпеджио, так как в таком виде техника не свойственна живым инструментам, а сам чиптюн и его атрибуты сформировались как явление уже после создания протокола MIDI, и успели уйти в прошлое к моменту развития цифровых студий на домашних компьютерах. То есть нет возможности задать произвольную высоту звука, только одну из 96 стандартных нот, которая также может быть отклонена от базовой ноты выше или ниже с помощью колеса питч-бенда, и нет возможности поменять высоту уже звучащей ноты иначе, кроме как питч-бендом.
Внутри плагинов VSTi передача данных между их составными частями может иметь любой формат, в том числе может как угодно изменяться высота звука, и поэтому возможность реализации чиптюнового арпеджио сохраняется, но это, собственно, и вынуждает встраивать в каждый около-чиповый плагин-синтезатор свою собственную реализацию арпеджиатора, как правило с максимально неудобным управлением.
▍ ChipArp
Имея опыт использования и разработки различных MIDI-совместимых синтезаторов, принцип получения «правильного», аутентичного чиптюнового арпеджио был очевиден — использовать для смены нот в аккорде питч-бенд, установив с помощью соответствующих RPN достаточно большой диапазон глубины бенда. Работоспособность этого подхода подтверждали несколько найденных MIDI-треков, имитирующих чиптюновое арпеджио, где авторы нарисовали все события питч-бенда вручную, что, конечно, крайне неудобно.
Также я решил не делать редактор арпеджио, в котором ступени задавались бы вручную. Всё, о чём написано в разделе про виды арпеджио, можно забыть, и это киллер-фича моего плагина. Он получает на входе MIDI-поток, анализирует его и преобразует любые сочетания нот в последовательность питч-бендов от базовой ноты, причём отпуская и нажимая часть клавиш, арпеджио можно меняться на лету без скачков в звуке.
![](https://habrastorage.org/webt/t2/ld/lq/t2ldlqhm51zezwf1fqrdtovsc-o.png)
Соответственно, интерфейс моего плагина очень прост. Точнее, его совсем нет, а есть несколько параметров, которые покрывают большинство типовых потребностей чиптюнового музыканта. Это темп композиции, множитель скорости (для быстрого или медленного варианта арпеджио), направление перебора нот (от низкой к высокой, наоборот, или туда-сюда). Также есть параметр глубины бенда, о котором поговорим очень скоро.
Музыкант просто играет нормальные человеческие полифонические аккорды:
![](https://habrastorage.org/webt/kd/4y/df/kd4ydfysppj86oh2giao6c0esta.png)
Плагин преобразует их в нажатия нужных базовых нот и изменения питч-бенда:
![](https://habrastorage.org/webt/mm/87/pj/mm87pjrzvcal8akofpusn_p_xcq.png)
▍ Есть подвох
Подвох и порча всей малины скрываются в только что упомянутом параметре глубины бенда, а точнее в том, что за ним стоит. Слово, которое описывает суть проблемы — «совместимость».
Протокол MIDI имеет сообщение для отклонения высоты ноты от базовой с помощью колеса питч-бенда, и глубина этого отклонения составляет -8192..+8191 единиц. Сколько это в герцах, или хотя бы полутонах? За это отвечает дополнительный контроллер RPN (особый вид сообщения для настройки внутренних параметров, специфичных для определённых моделей синтезаторов), Pitch Bend Sensitivity, как раз и позволяющий задать количество полутонов, которому соответствует полный диапазон отклонений колеса.
Однако, как показала практика, производители железных синтезаторов, и тем более авторы-энтузиасты, создающие VSTi-плагины, обращаются с этой частью спецификации MIDI очень вольным образом. Да и сама спецификация не очень строго описывает реализацию питч-бенда. В итоге имеется целый ворох проблем:
- В нулевых, не все синтезаторы в принципе реагируют на питч-бенд. В основном это касается VSTi-плагинов, созданных любителями.
- Во-первых, многие синтезаторы или плагины игнорируют RPN изменения диапазона бенда, и используют фиксированный диапазон. Это может быть четыре полутона, то есть по целой ноте вверх и вниз — типично для железных синтезаторов, или может быть любое произвольное значение, которое пришло в голову автору синтезатора-плагина. Или же диапазон устанавливается не через RPN, а только вручную, настройкой в интерфейсе плагина.
- Во-вторых, даже если нужный RPN поддерживается плагином, оригинальная спецификация MIDI рекомендовала диапазон изменения до 24 полутонов, то есть по октаве вверх и вниз. В принципе этого уже более-менее достаточно. Однако, «до» не равно «равно», и разные синтезаторы могут поддерживать разные диапазоны. Сам же протокол позволяет задавать диапазоны и выше 24, и современная расширенная спецификация MPE, в которой питч-бенд применяется не к каналу, а к каждой ноте индивидуально, утверждает диапазон в 96 полутонов вверх и вниз. Некоторые плагины поддерживают такой максимально широкий диапазон и для стандартного питч-бенда.
- В-третьих, есть и в-третьих. Большая часть синтезаторов и плагинов используют сглаживание (интерполяцию) для питч-бенда, то есть изменение питча не приводит к мгновенному изменению высоты. Вместо этого она изменяется плавно, с заданной внутри синтезатора скоростью, и конечно, эта скорость значительно ниже, чем требуется для работы ChipArp. В результате вместо арпеджио получается невнятное вибрато.
- Помимо вышеперечисленного, есть некоторые сложности в реализации плагинов с MIDI-входом и выходом в разных виртуальных студиях, от совместимости до очень неочевидного роутинга входных-выходных каналов.
Проблему недостаточного или неизвестного диапазона бенда я частично компенсировал настройкой глубины, можно выставить максимальную глубину, поддерживаемую синтезатором, или же подобрать ту, которую он использует (фиксированную или выбираемую в интерфейсе). С интерполяцией же сделать ничего нельзя, если в синтезаторе она есть и не отключается — ChipArp для него бесполезен.
Таким образом, ChipArp может использоваться только совместно с очень небольшим количеством плагинов. Помимо всех VSTi-синтезаторов моего авторства, поддерживающих мгновенный питч-бенд с диапазоном в 96 полутонов, среди моего арсенала синтезаторов нашлось всего три, с которыми можно использовать мой арпеджиатор.
Мои плагины:
- 1bitstudio (8 плагинов-синтезаторов),
- VT2i,
- PCSPE,
- ChipWave,
- FTplug,
- EVALUA,
- Flopster.
Сторонние:
- TAL U-NO-62 (нужно выбрать максимальный диапазон бенда в интерфейсе),
- VST2413 (установить PWheel на 12),
- Magical 8bit Plug (установить BendRange на 12).
Совместимость с остальными синтезаторами можно выяснить только методом эксперимента. При тестировании совместимости с различными синтезаторами обнаружилась некоторая закономерность: если синтезатор сделан с помощью конструктора SynthEdit, а не написан с нуля в виде кода, то поддержка питч бенда в нём либо реализована с интерполяцией, либо отсутствует совсем. Все немногочисленные плагины, успешно работающие с ChipArp в режиме совместимости, написаны их авторами с нуля.
▍ Заключение
Несмотря на перечисленные проблемы, я успешно применяю ChipArp в своих проектах, хотя и не совсем в той роли, которая задумывалась изначально: с его помощью я автоматизировал преобразование аккордов в арпеджио в монофонической музыке для AONDEMO, для моего музыкального альбома для PC Speaker и для саундтрека к демо AREA 5150. Также я использовал эту идею для проекта SuBoard, рассказ о котором заслуживает отдельной статьи.
Поиграться, изучить устройство (полезно, если вам нужно написать свой VST2-плагин с MIDI-входом и выходом), и попробовать найти применение можно, скачав архив проекта.
Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх ?️
![](https://habrastorage.org/webt/_p/_h/lv/_p_hlvd2tv0cv9tny8tdytzfhje.png)