Pattr

Синтез Ударных в Max/MSP. Часть 3: Железо

Чтобы никто не почувствовал себя неловко, сразу скажу, что под словом «железо» я имею ввиду железные элементы барабанной установки. В библиотеках сэмплов их можно узнать по словам hat, cymbal или даже cowbell... Без этих элементов немыслим ни один бит: если под кик мы киваем головой вниз, то хэт – это то, что заставляет поднимать голову вверх. В этой статье мы будем учиться их синтезировать.

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

Хэт

Его очень просто синтезировать, достаточно просто подать белый шум через огибающую громкости и обрезать все низы фильтром. Конечно, этот звук не будет иметь металлического оттенка, но нам этого и не нужно в случае с хэтом. Скрин патча (hat1.maxpat) приведен на рисунке ниже, он очень простой, нет смысла описывать его подробно, так как все объекты и техники уже были разобраны в предыдущих статьях.

max/msp патч hat1.maxpat первый патч

Также можно выкрутить интересный шум с помощью FM синтеза. Нам даже не потребуется собирать свой синтезатор, в максе уже есть готовая абстракция simpleFM~. Сделав двойной щелчок, можно посмотреть внутренности.

Простой FM синтезатор, имеющийся в составе Max/MSP

Как видно, это простой двухоператорный FM синтезатор. С помощью левого входа задается частота основного осциллятора, во второй подается частота модулятора (модулятором в FM синтезе называют осциллятор, который модулирует частоту другого осциллятора), третий же вход отвечает за амплитуду модулятора (параметр modulation index).

У FM синтеза есть одна особенность: когда частота модулятора в целое число раз отличается от частоты модулируемого осциллятора, синтезируется гармоничный звук. Нам же такой вариант не подходит, поэтому параметру ratio будем давать произвольное значение. Также, чтобы сделать звук грязнее, сделаем побольше параметр modulation index. Ну и отфильтруем ненужные низкие частоты. Вот что получилось в итоге (hat2.maxpat):

max/msp патч hat2.maxpat fm синтез хэта

Думаю, стоит объяснить, зачем здесь объекты sig~. Дело в том, что внутри синтезатора используются MSP объекты (те, что с «тильдой»), и чтобы они корректно работали, нужно подавать в них аудио сигнал. А sig~ как раз-таки преобразует обычные Max сообщения в аудио. Конечно, многие мсп объекты понимают обычные сообщения, но не все, поэтому лучше сразу использовать sig~.

Cymbal

Этот звук синтезировать немного сложнее, так как он имеет яркий металлический оттенок и заметную шумовую составляющую. Легче всего сделать его с помощью кольцевой модуляции (ring modulation). Не смотря на такое умное название, ее суть очень проста для понимания: она заключается в перемножении двух сигналов между собой. Без лишней воды, привожу скрин патча (cymb1.maxpat):

max/msp патч cymb1.maxpat rm синтез cymbal

Здесь есть один неизвестный объект – clip~. Его функция – ограничить сигнал по заданному диапазону, проще говоря, он обрезает все, что выше и ниже этого диапазона. Принцип работы показан на следующем рисунке. Слева показан исходный сигнал, справа – пропущенный через clip~.

Принцип работы Max/MSP объекта clip~

Сам объект может иметь два аргумента: первый задает нижний предел, а второй – верхний. Также эти пределы можно менять, подавая сигнал или сообщения во второй или третий входы, соответственно для нижнего и верхнего пределов.

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

max/msp патч cymb2.maxpat fm синтез cymbal

Как можно заметить, в этом патче создана огибающая для для параметра modulation index. Она позволяет изменять тембр звука по времени.

Также здесь присутствует еще незнакомые нам объекты tapin~ и tapout~. Два этих объекта реализуют линию задержки, они являются аналогами пюрдатовских объектов delwrite~ и vd~, которые были рассмотрены в статье о гранулярном синтезе. tapin~ записывает сигнал в линию задержки, tapout~ считывает его оттуда. Каждому объекту должен быть задан аргумент. В случае с tapin~ он определяет размер буфера дилей линии, под который будет выделяться память компьютера. Этот параметр нельзя модулировать. Аргумент tapout~ задает время задержки, его уже можно изменять с помощью сигнала или же обычных сообщений, которые нужно подавать в единственный вход. Обратите внимание, что время задержки не может превышать размер буфера, заданного в tapin~. Кстати, вы наверняка заметили, что два этих объекта связаны проводом. Он служит для того, чтобы дать знать объекту tapout~, из какого точно буфера tapin~ нужно считывать сигнал, по самому же проводу ничего не передается.

Также в этой дилей линии реализована обратная связь – сигнал после выхода подается опять в tapin~, только перед этим умножается на 0.8. Если мы не уменьшим амплитуду сигнала в обратной связи, это приведет к бесконечной задержке и перегрузке аудио. Что касается звука, то его стоило бы немного эквализировать, убрать некоторые едкие частоты.

Напоследок

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

Также очень полезно читать различные книги и статьи, посвященные синтезу. Есть очень хороший труд Advanced Programming Techniques for Modular Synthesizers за авторством James J. Clark. В ней описаны практически все виды синтеза, а также некоторые обработки, настоятельно советую почитать. Хотя примеры в ней созданы для Nord Modular, не составит большого труда реализовать их в максе. Лично я оттуда узнал о снейре, практически полностью повторив его алгоритм в предыдущей статье.

16 Jul 2011  OSCII