Pattr

Синтез Ударных в Max/MSP. Часть 4: Перкуссии

Задача перкуссий – создать ритмическую картину. Если кик со снейром задают основной ритм, то перкуссии создают то, что мы называем грувом. Они звучат не на основном плане и часто используют более высокие частоты, чем кик или снейр.

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

Импульс и фильтр

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

На верхнем рисунке виден сам импульс, а на нижнем – ответ фильтра на входящий в него импульс (думаю, многие слышали об impulse response). Как видно, фильтр при высоком заданном резонансе производит затухающие осцилляции в ответ на входящий импульс. Частота осцилляции равна частоте среза фильтра, а количество колебаний зависит от резонанса (чем выше резонанс, тем больше осцилляций создаст фильтр). Не смущайтейсь из-за квадратной волны на нижней картинке – это из-за того, что объект scope~, с помощью которого снимался сигнал, имеет маленькое разрешение, на самом деле сигнал представляет собой синусоиду.

Так, теории хватит, можно собирать патч. За генерацию импульса будет отвечать объект click~, он генерирует импульс в ответ на поступивший в него bang. В качестве фильтра будем использовать reson~ – это резонансный bandpass фильтр. У него четыре входа: первый – для сигнала, который будет фильтроваться, второй будет регулировать усиление сигнала (gain), третий – срез фильтра (cutoff), четвертый – резонанс. Все эти параметры можно задавать и через аргументы, их может быть три, соответственно gain, cutoff и resonance.

В следующем патче (perc1.maxpat) представлен этот алгоритм. Хочу обратить внимание, что в данном патче параметр резонанса также регулирует и gain. Это сделано в связи с тем, что при увеличении резонанса уменьшается амплитуда сигнала, поэтому ее нужно постоянно корректировать. Я заметил, что если значение gain в три раза больше значения резонанса, то максимальная амплитуда осцилляций находится почти на единице.

Покрутите параметры патча и проследите за тем, как изменяется звук.

Теперь увеличим количество фильтров до трех и настроим их параметры (perc2.maxpat).

Ну здесь ничего сложного, три параллельных фильтра с разными параметрами. Стоит отметить только объект omx.peaklim~ – это обычный лимитер, который не позволяет сигналу выходить за рамки -1…1, но отличие от clip~, он не искажает сигнал. Он включен в патч, чтобы читатели, экспериментируя, не испортили уши от сильных перегрузок, которые могут возникнуть при очень большом резонансе (соответственно при большой длине осцилляции), так что будьте осторожны.

Все!

Наконец, написана последняя статья из серии по синтезу ударных. Надеюсь, эти статьи помогут в изучении макса и синтеза. В следующей статье мы с Брюсом будем описывать создание простенького субтрактивного синта с полифонией в PureData.

16 Jul 2011  OSCII