# Субтрактивный синтез

Это вторая статья из серии статей о том, как использовать Sonic Pi для саунд дизайна. В прошлом месяце мы рассмотрели аддитивный синтез, который, как мы обнаружили, представлял собой простой процесс одновременного воспроизведения нескольких звуков для создания нового комбинированного звука. Например, мы могли бы комбинировать разные звучащие синтезаторы или даже один и тот же синтезатор на разных высотах, чтобы создать новый сложный звук из простых ингредиентов. В этом месяце мы рассмотрим новую технику, обычно называемую * субтрактивным синтезом *, которая представляет собой акт извлечения существующего сложного звука и удаления его частей для создания чего-то нового. Это метод, который обычно ассоциируется со звуком аналоговых синтезаторов 1960-х и 1970-х годов, а также с недавним возрождением модульных аналоговых синтезаторов в популярных стандартах, таких как Eurorack.

Несмотря на то, что это звучит как очень сложная и продвинутая техника, Sonic Pi делает ее на удивление простой и легкой - так что давайте погрузимся в нее.

## Комплексный исходный сигнал

Чтобы звук хорошо работал в субтрактивном синтезе, он должен быть достаточно насыщенным и интересным. Это не значит, что нам нужно что-то чрезвычайно сложное - на самом деле, стандартная волна `: square` или`: saw` сделает что нужно:

    synth :saw, note: :e2, release: 4

Обратите внимание, что этот звук уже довольно интересен и содержит много разных частот выше `: e2` (E второй октавы на фортепиано), которые добавляются для создания тембра. Если для вас это пока не особенно понятно, попробуйте сравнить его с `: beep`:

    synth :beep, note: :e2, release: 4

Поскольку синтезатор `: beep` - это просто синусоида, вы услышите более чистый тон и только в регистре `: e2` и не буде выше него никаких хрустящих / гудящих звуков, которые вы слышали в `: saw`. Именно с этими призвуками и вариациями чистой синусоидальной волны мы можем играть, используя субтрактивный синтез.

## Фильтры

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

    with_fx :lpf, cutoff: 100 do
      synth :saw, note: :e2, release: 4
    end

Если вы внимательно прослушаете, вы услышите, как некоторые из этих шумных и хрустящих звуков были удалены. Фактически, все частоты в звуке выше ноты `100` были уменьшены или удалены, и только те, что ниже, все еще присутствуют в звуке. Попробуйте изменить значение `cutoff:`, укажите ему на более низкие ноты, скажем `70`, а затем`50` и сравните звуки.

Конечно, `: lpf` не единственный фильтр, который вы можете использовать для манипулирования исходным сигналом. Другим важным эффектом является фильтр верхних частот, в Sonic Pi называемый `: hpf`. Это противоположно `: lpf` в том смысле, что пропускает верхние части звука и обрезает низкие.

    with_fx :hpf, cutoff: 90 do
      synth :saw, note: :e2, release: 4
    end

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

## Low Pass Filter

Фильтр нижних частот является настолько важной частью каждого субтрактивного инструментария синтеза, что стоит более глубоко взглянуть на его работу. Эта диаграмма показывает одну и ту же звуковую волну (синтезатор `: prophet`) с различной степенью фильтрации. Вверху в разделе A показана звуковая волна без фильтрации. Обратите внимание, что форма волны очень острая и содержит много острых краев. Именно эти жесткие, острые углы создают высокие хрустящие / шумные части звука. В разделе B показан фильтр нижних частот в действии - обратите внимание, что он менее острый и более округлый, чем форма волны выше. Это означает, что у звука будет меньше высоких частот, что придаст ему более мягкий округлый вид. В разделе C показан фильтр нижних частот с довольно низким значением отсечки - это означает, что еще больше высоких частот было удалено из сигнала, что привело к еще более мягкой, округлой форме волны. Наконец, обратите внимание, как размер формы волны, которая представляет амплитуду, уменьшается при переходе от А к С. Субтрактивный синтез работает путем удаления частей сигнала, что означает, что общая амплитуда уменьшается по мере того, как объем фильтрации увеличивается.

## Модуляция фильтра

Пока что мы только что создали довольно статичные звуки. Другими словами, звук никак не меняется в течение всей его продолжительности. Часто вам может понадобиться какое-то движение в звуке, чтобы оживить тембр. Одним из способов достижения этого является модуляция фильтра - изменение параметров фильтра во времени. К счастью, Sonic Pi дает вам мощные инструменты для манипулирования параметрами эффектов во времени. Например, вы можете установить время скольжения для каждого модулируемого параметра, чтобы указать, сколько времени потребуется, чтобы текущее значение линейно скользило к заданному :

    with_fx :lpf, cutoff: 50 do |fx|
      control fx, cutoff_slide: 3, cutoff: 130
      synth :prophet, note: :e2, sustain: 3.5
    end

Давайте кратко рассмотрим, что здесь происходит. Сначала мы запускаем FX-блок `: lpf` как обычно с начальным`cutoff:` с очень низким значением `20`. Тем не менее, первая строка также заканчивается странным `| fx |` в конце. Это необязательная часть синтаксиса `with_fx`, которая позволяет вам напрямую называть и управлять запущенным эффектом синтезатора. Строка 2 управляет таким эффектом, устанавливая для параметра `cutoff_slide:` значение 4, а целевое значение `cutoff:` должно быть `130`. Эффект теперь начнет снижать значение параметра `cutoff:` с `50` до`130` в течение 3 тактов. Наконец, мы запускаем синтезатор, чтобы слышать эффект модулированного фильтра нижних частот.

## Соединим всё вместе

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

Давайте закончим, разработав функцию, которая будет воспроизводить новый звук, созданный с субтрактивным синтезом. Посмотрите, сможете ли вы выяснить, что здесь происходит, - и для продвинутых читателей Sonic Pi - посмотрите, сможете ли вы понять, почему я завернул все в вызов функции `at` (пожалуйста, отправьте ответы на @samaaron в Twitter).

    define :subt_synth do |note, sus|
      at do
        with_fx :lpf, cutoff: 40, amp: 2 do |fx|
          control fx, cutoff_slide: 6, cutoff: 100
          synth :prophet, note: note, sustain: sus
        end
        with_fx :hpf, cutoff_slide: 0.01 do |fx|
          synth :dsaw, note: note + 12, sustain: sus
          (sus * 8).times do
            control fx, cutoff: rrand(70, 110)
            sleep 0.125
          end
        end
      end
    end
    subt_synth :e1, 8
    sleep 8
    subt_synth :e1 - 4, 8