Pattr

Делаем Step Sequencer с Помощью Max4Live

Как всегда перед практической частью небольшой обзор предстоящей работы. Для генерации мелодии с помощью степ-секвенсоров необходимо задать три вещи: ритм, номера и длительности нот. Обычно все это задается с помощью одного матричного интерфейса:

>Сетка секвенсора

Здесь длина ноты зависит от темпа и условно равняется одному шагу, а ритм и тональность задаются одновременно. Но это не наш способ. Мы для каждого из параметров создадим свой небольшой секвенсор.

Ритм секвенсор

Начнем с ритма. Именно из него будут поступать триггеры на остальные секвенсоры. Итак, создадим Max MIDI effect и добавим в новый патч следующие объекты: multislider, counter и metro и соединим все как показано на рисунке (rhythm1.amxd):

rhythm1

Думаю, по комментариям можно разобраться, как все работает. Двигаемся дальше. Надо визуально отобразить текущую позицию секвенции. С этим нам поможет объект slider (rhythm2.amxd):

rhythm2

На первый взгляд может быть не понятно, почему диапазон слайдера 0...17, а не 0...16. Дело в том, что наш ритм представлен в виде прямоугольлников, а слайдер - это полоска, которая должна совпадать с левым краем каждого прямоугольника. Если у слайдера будет диапазон 0...16, будет заметно смещение полоски, то есть не корректное отображение позиции секвенции.

Остается сделать удобное управление границами секвенции, для чего мы будем использовать объект rslider. Он похож на обычный слайдер, только задает диапазон. У него два аутлета: левый выводит минимальное значение, а правый максимальное (rhythm3.amxd):

rhythm3

Секвенсор мелодии

В него будет забиваться последовательность нот. Создадим 16 объектов live.numbox - это аналог максовского объекта number, только имеет внешний вид нативных элементов интерфейса лайва, а также некоторые другие плюшки (о которых позже). Итак, собираем следующую схему (melody1.amxd):

melody1

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

Секвенсор длины нот

Этот секвенсор ничем не отличается от предыдущего, только вместо нот, live.numbox будут задавать длины нот в миллисекундах в диапазоне 0...1000 (length1.amxd):

length1

Соединяем все вместе и создаем MIDI сообщения

Итак, теперь соединяем все это (mainseq.amxd):

mainseq

По умолчанию, стандартные gui объекты макса не сохраняют свое состояние с сессией лайва, в отличие от gui объектов live.*, именно поэтому к некоторым элементам интерфейса подсоединены объекты pattr.

На этом почти все. Осталось только вписать все элементы патча в маленькое пространство лайв девайса. Для этого выделяем все объекты интерфейса, кликаем правой кнопкой и нажимаем Add to presentation. Теперь можно включить режим презентации, где расставляем все, как удобно. Вот что получилось у меня (step-seq-pattr.amxd):

step-seq-pattr

Да, вот еще. При добавлении этого патча в лайв он открывался в режиме презентации, нужно открыть patcher inspector, щелнув правой кнопкой мыши на пустом месте в патче и отметить чекбокс "open in presentation".

Напоследок

Для для полноты этому секвенсору не хватает управления velocity, но это можно легко допилить с помощью все того же multislider. Также неплохо бы добавить кнопку сброса секвенций в начальное положение.

На этом все, happy patching :)

03 Nov 2011  OSCII