Pattr

Синтез Ударных в Max/MSP. Часть 2: Snare и Clap

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

Получается, нам нужно эмулировать звук двух мембран и шум, исходящий от струн. Мы не будем заниматься физическим моделированием, вместо этого воссоздадим алгоритм снейра легендарного синтезатора Roland TR-909, элементы которого воссозданы по подобию реального барабана.v

Роль мембран выполняет треугольная волна, а роль струн — белый шум. Частота двух треугольных сигналов отличается примерно в два раза (там, где частота больше — верхняя мембрана, где меньше — нижняя). Каждая мембрана имеет огибающую громкости, причем нижняя звучит чуть дольше верхней. Шум обрабатывается цепочкой из LP и HP фильтров и идет через огибающую громкости. Обратите внимание, что для шума делается две огибающие: одна обрабатывает сигнал из LPF, другая из HPF. Это при том, что сигнал после LPF одновременно поступает и в HPF, и на огибающую, в общем, смотрите патч, там понятнее будет.

Теперь приступим к созданию патча. Треугольный сигнал генерируется объектом tri~. Для огибающей опять будем использовать связку из line~ и function. Так как в оригинальном TR-909 огибающие нелинейны, то, как и в прошлой статье, мы перемножим выход line~ на себя. Еще в инспекторе стоит изменить параметр High Domain Display Value (X-Asis) на 200, чтобы не приходилось мельтешить при редактировании огибающей. Он задает длину всей огибающей в пределах рамки объекта на 200 мс. Результат:

Не очень похоже на снейр, не правда ли? :) Ничего, сейчас добавим шума, и все будет круто. Фильтровать будем с помощью объекта lores~, это резонантный lowpass фильтр. В левый вход подается сигнал, который нужно фильтровать, во второй значение cutoff и в третий resonance. К сожалению, в максе нет аналогичного объекта для hipass фильтра, но это не беда: LP легко превращается в HP. Для этого нужно вычесть из оригинального сигнала отфильтрованный LP. Вот так это выглядит в максе:

Итак, строим окончательную версию патча. Обратите внимание на путь сигнала между фильтрами. Также я увеличил значение X-Asis в function до 500, т. к. шум затухает гораздо медленнее мембраны.

Вот теперь это точно снейр :) В статье описан самый базовый алгоритм, есть множество способов разнообразить звук: использовать более креативные огибающие на фильтры, заменить два треугольника двумя же синусоидами, промодулированными по питчу (как бы два кика), фм синтез и куча чего еще, все зависит не столько от фантазии, сколько от усидчивости ;)

Clap

Клэпы можно услышать в самой разнообразной музке: от джаза до минимал-техно. Их очень просто синтезировать — надо лишь сэмулировать «очередь» из хлопков и реверберацию окружения.

Хлопок в нашем синтезаторе — это белый шум, пропущенный через быстро затухающую огибающую громкости, соответственно, соответственно, «очередью» будет несколько повторяющихся огибающих. В нашем патче за все четыре «хлопка» отвечает один объект function.

Белый шум у нас фильтруется двумя параллельными bandpass фильтрами. Это два одинаковых фильтра, различающиеся только резонансом (такая конструкция появилась после недолгого эксперимента, просто мне кажется, что так звучит лучше). Также присутствует огибающая, модулирующая cutoff этих фильтров.

«Реверберация» представляет собой отфильтрованный с помощью LPF белый шум. Замечу, что в нашем случае модулятором cutoff и амплитуды является один объект function.

Важно: внимательный читатель мог заметить, что к каждому объекту function присоединено сообщение вида (domain число). Оно регулирует параметр X-Axis, то есть продолжительность огибающей в миллисекундах. Соответственно, первые две огибающие длятся по 40 мс (они созданы для хлопков), а третья имеет длину 200 мс, она регулирует «реверберацию».

В следующей статье будем синтезировать различное железо (хэты, симбалы и тд).

16 Jul 2011  OSCII