Pattr

От MIDI-контроллеров к Музыкальному Мэппингу. Часть 2: Компьютерные Музыкальные Инструменты

По сути, любой музыкальный инструмент, созданный с помощью компьютера, состоит из части, принимающей данные музыканта, генератора звука и некой программной прослойки между ними, которая преобразует собранные данные так, чтобы синтезатор создавал музыкальный результат.

В качестве простейшего примера, разберем структуру обычной MIDI-клавиатуры. Этот девайс собирает следующие данные: номер ноты, скорость нажатия, послекасание, а также данные с колес модуляции и питча. Номер ноты и pitch-wheel управляют частотой, скорость нажатия — громкостью, а колесо модуляции и послекасание используются на усмотрению музыканта (см. рисунок ниже).

Мэппинги и архитектура обычной MIDI-клавиатуры.

На картинке отчетливо видна «слоистая» архитектура системы:

  • Input layer. Этот слой собирает информацию с различных датчиков: трекинг видео, гироскопы, акселлерометры, флексометры, разного рода клавиши, ручки, торренты — все, что генерирует какую-либо информацию, может быть использовано для создания музыки.
  • Mapping layer. В этом слое происходит обработка и интерпретация входящих данных, их анализ и подготовка к использованию со звуковым модулем. Это то самое связующее звено между контроллером и синтезатором, от удачной реализации которого зависит выразительность инструмента. Далее в статье мы будем рассматривать именно этот слой.
  • Synthesis layer. Здесь все очевидно: в данном слое генерируется звук (или музыка).

Как правило, никто не мэпит напрямую данные с контроллеров на параметры синтезатора — сначала делается их предварительная обработка. Если мы имеем дело с танцевальным перформансом, то, согласитесь, логичнее было бы манипулировать такими параметрами, как направление и скорость движения, поза и жесты вместо сырых данных с датчиков (например, ускорение осей акселерометра, размеры и координаты блобов). Если мы сможем управлять системой, оперируя такими конкретными терминами, то можно без труда настроить мэппинг так, чтобы, например, при резком движении правой руки вверх-вниз, создавался определенный звук, который будет изменяться по мере кручения перформера вокруг своей оси.

Сам мэппинг состоит из двух слоев: первый интерпретирует данные, — например, вычисляет Quantity of Motion из данных трекера, или распознавание жестов и поз, — а во втором уже решается, как именно управлять параметрами синтеза, используя полученную информацию.

Слоистая архитектура компьютерных музыкальных инструментов.

Процесс мэппинга осложняется тем, что обычно количество входящих данных и параметров синтеза отличается, причем иногда это очень сильно. Вот как бы вы стали управлять аддитивным синтезатором с  64-ю гармониками (итого 128 параметров, учитывая, что у каждой гармоники можно изменять громкость и частоту) с помощью перчатки виртуальной реальности, вроде этой? Или обратная ситуация: в рамках интерактивной инсталляции по помещению расставлены десятки датчиков. Как использовать их показания для управления звуком?

Очевидно, что в данных случаях подход «в лоб» (как, например, замэпить один входящий параметр и управлять частотой LFO с помощью него) просто не пройдет. Здесь уже могут вступать в ход статистика, алгоритмы машинного обучения, которые, например, помогут снизить размерность данных, распознать последовательность событий или определить схожесть двух наборов данных.

Однако, в большинстве случаев, когда имеется разумное количество параметров для мэпинга, можно обойтись без сложных алгоритмов и использовать простые математические операции.

Подробнее про музыкальный мэппинг

Как уже говорилось, выразительность инструмента зависит от того, как будут использоваться параметры контроллеров для извлечения звука. Говоря в терминах сабжа, для создания экспрессивного инструмента необходимо выбрать правильную стратегию мэппинга. Для этого необходимо знать, как вообще можно связывать данные между собой. Если думать о мэппинге, как о наборе связей между входящими данными и параметрами синтеза, то можно выделить три основных вида связей:

  • One-to-one. Самый простой способ использовать контроллеры. В данном случае один входящий параметр управляет только одним параметром синтеза. Такой вид связи наиболее распространен, он очевиден и очень легок в использовании. Классические синтезаторы почти всегда используют такой вид мэппинга.
  • One-to-many (divergent) mapping. Один входящий параметр контролирует несколько параметров синтеза одновременно. Такой подход позволяет управлять системой с большим количеством параметров, однако его точности может оказаться недостаточно для экспрессивного исполнения музыкального произведения.
  • Many-to-one (convergent) mapping. В данном случае, несколько входящих параметров одновременно контролируют один параметр синтеза. Такой вид связей дает наиболее выразительный результат, но он сложен для освоения, соответственно, перформеру необходимо несколько больше времени для того, чтобы в достаточной мере овладеть инструментом, нежели в случае с предыдущими способами.

Редко когда возможно использовать (да и надо ли это?) только один вид связей, — как правило, в инструментах имеют место связи типа many-to-many (иногда также встречаются термины few-to-many, many-to-few).

Если вы до сих пор не поняли, что из себя представляют различные виды мэппинга, то взгляните на картинку:

Виды музыкального мэппинга.

Авторы [3] считают, что причина недостатка выразительности электронной музыки при безграничных возможностях синтеза (что должно быть странно, не правда ли?) заключается как раз-таки в повсеместно используемом one-to-one мэппинге. Оно и понятно, классические синтезаторы в первую очередь создаются для извлечения звука, для чего вынесено на панель множество параметров (читай, one-to-one связей), однако, человек просто не может управлять ими всеми во время исполнения.

Кроме того, вышесказанное подтверждают эксперименты, проводимые в Йоркском Университете [4], в которых изучалась эффективность использования различных интерфейсов при создании музыки.

Для опытов были выбраны три интерфейса:

  • GUI-слайдеры, управляемых с помощью мышки;
  • слайдеры на  MIDI-контроллере, управляемые пальцами;
  • комбинированный интерфейс, управление которым осуществляется двумя руками: в одной руке мышка, в другой — слайдеры.

В первом случае интерфейс представляет собой стандартный способ управления компьютерными интерфейсами, когда можно изменять только один параметр одновременно. Во втором случае пользователю уже можно двигать несколько слайдеров, однако, каждый из них замэпен только на один параметр. Третий интерфейс чем-то напоминает традиционный инструмент со сложной структурой many-to-many мэппинга. [5]

Несколько человек прошли одинаковый набор тестов, им надо было воспроизвести на всех трех инструментах несколько аудио-записей, сложность которых увеличивалась от теста к тесту.

Как уже говорилось, в первых двух интерфейсах используется прямые one-to-one мэппинги. Третий использует тот же набор железок, но использует их совсем иначе:

  • во-первых, для того, чтобы появился звук, пользователю необходимо приложить какие-то усилия. В данном случае звук появляется только во время движения мыши, громкость пропорциональна скорости ее движения.
  • во-вторых, в этом интерфейсе имеется только один one-to-one мэппинг — для панорамирования. Все остальные связи сложные, many-to-many.

Контроллеры использовались следующим образом:

  • громкость = скорость мыши + нажатие кнопки мыши + среднее от значений двух слайдеров;
  • питч = положение мыши по вертикали + скорость движения второго слайдера;
  • тембр = положение мыши по горизонтали + разница между двумя слайдерами;
  • панорама = позиция первого слайдера.

Результат каждого теста прослушивался человеком и компьютером, и на основании их оценок выставлялся балл. Кроме того, каждый тестируемый давал небольшое интервью, в котором описывал личные впечатления от использования девайсов.

Подробне об эксперименте можно прочитать в [4], здесь же я кратко изложу некоторые выводы, сделанные из них [5], касательно интерфейса с many-to-many мэппингами:

  • он позволяет исполнителю мыслить жестами, а не параметрами;
  • результаты тестов с таким интерфейсом постоянно улучшались. Кроме того, используя его, люди легче справлялись со сложными заданиями;
  • инструментом со сложными связями сложнее овладеть.

Второй вывод можно интерпретировать следующим образом: инструменты с many-to-many мэппингами позволяют создавать более сложный музыкальный результат, чем при использовании других видов связей. Я думаю, это отличный довод в пользу того, чтобы создавать свой следующий инструмент, используя сложные связи.

Программные инструменты для мэппинга

В большинстве случаев в качестве прослойки между контроллерами и синтезатором используется Max/MSP или PureData. Лично я предпочитаю первый вариант, так как под Max существуют две классные библиотеки: FTM и Jamoma. Каждая из них заслуживает серии немаленьких статей, поэтому я только кратко опишу, чем они примечательны для человека, создающего инструменты.

Начну с FTM. Эта библиотека добавляет новый тип данных в Max — матрицы. Причем, если Jitter больше ориентирован на визуализацию, то FTM является неким аналогом Matlab в максе. Очень хорошо оптимизированная работа с матричными кроме эффективной работы с гранулярным и FFT синтезами, открывает возможности машинного обучения и статистического анализа входящих данных. Собственно, для таких целей в FTM был добавлен набор MnM (Mapping Toolbox), добавляет такие алгоритмы, как linear regression, principal component analysis, gaussian mixture models и много чего еще.

Jamoma примечательна тем, что это не совсем библиотека — это целый фреймворк. С помощью него можно создавать огромные патчи, сохраняя при этом полный контроль над всем. Это достигается засчет того, что к любому параметру модуля, собранного с поддержкой джамомы, можно получить доступ из любого места патча, притом что название этого параметра имеет OSC-like вид, например /synth1/env1/attack. Управляется все это хозяйство с помощью CUE-скриптов: в текстовом файле вручную прописываются сцены, а также изменения параметров при переходе от одной сцены к другой.

Я часто натыкаюсь на упоминание джамомы при реализации мэппинга описаниях инсталляци (например, Grainstick). Но лично я считаю, что удобнее создавать связи прямо в максе, а джамому использовать только для управления патчем.

Сложности

Самой главной сложностью при разработке интерфейсов для работы с интерактивным звуком является то, что нет выработанных best practices. Каждый новый проект является исследованием.

Также наверняка придется собирать собственный синтезатор, так как существующие VST заточены под работу с MIDI, иными словами, они управляются дискретными событиями от нажатий по клавишам, в то время как перформер двигается совсем не дискретно.

Еще для разработки инструментов необходимо либо работать в команде, либо самому обладать достаточно широкими знаниями. Например, наверняка нужен человек, который будет программировать контролеры, разрабатывать и собирать девайсы, также нужен будет саунд-дизайнер, программист Max/MSP и, может быть, специалист по компьютерному зрению (если используется видео трекинг). Плюс еще понадобится программист графики, если проект подразумевает какую-то визуализацию. Разумеется, зачастую люди обладают знаниями сразу в нескольких областях, плюс некоторый софт может заменить какого-то узкого спеца (например, cv.jit может частично заменить человека, занимающегося компьютерным зрением).

Да, и никогда нельзя забывать, что мы занимаемся искусством, хоть и технологичным. Художественный результат всегда важнее способа его реализации, но, занимаясь компьютерным искусством, очень просто забыть об этом и уйти с головой в алгоритмы. Спецэффекты быстро утомляют зрителей/слушателей.

Напоследок

Данная статья зрела у меня в голове месяцев пять, но тема настолько широка, что ее просто не освоить за пару постов в блоге. Думаю, их можно воспринимать как ликбез, так как в дальнейшем я буду описывать различные технические моменты своей деятельности в рамках CNMRG и мне совсем не хочется разбавлять тематические статьи базовым материалом.

Во избежание холиваров также хочу отметить, что в данной статье, говоря про инструменты, я имел ввиду девайсы, которые производят звук с помощью жестов. Ведь есть еще контроллеристы, которые по-другому подходят к созданию музыки, и деятельность которых я, наверное, по-настоящему осознал только после пламенных рассказов Ivn_Os про Молдовера.

В общем, надеюсь, что данный материал был/будет полезен. Stay tuned, планируется много чего интересного!

Хочется особо поблагодарить следующих личностей, которым пришлось читать эту статью, когда она была еще в зачаточном состоянии: Алексей Олейников, Юрий Дидевич, Brutallo Sapiens (прости, Женя, забыл твою фамилию), Герман Хохлов. Без их фидбэков я бы не решился дописать статью на такую тему.

Референсы

[3] Rovan, J.B. and others. Instrumental Gestural Mapping Strategies as Expressivity Determinants in Computer Music Performance. IRCAM. 1997.
[4] Hunt A., Kirk, R. Mapping Strategies for Musical Performance. University of York. 2000.
[5] Hunt A., Wanderley M., Kirk, R. Towards a Model for Instrumental Mapping in Expert Musical Interaction. University of York, IRCAM. 2004.
04 Oct 2012  OSCII