Амплитудная модуляция

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

Нарезая амплитуду

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

synth :prophet, note: :e1, release: 8, cutoff: 70
synth :prophet, note: :e1 + 4, release: 8, cutoff: 80

Теперь давайте пропустим это через эффект : slicer :


with_fx :slicer do
  synth :prophet, note: :e1, release: 8, cutoff: 70
  synth :prophet, note: :e1 + 4, release: 8, cutoff: 80
end

Послушайте, как работает слайсер - он как будто заглушает и включает звук в регулярном ритме. Также обратите внимание, как : slicer влияет на все аудио, сгенерированное между блоками do / end. Вы можете контролировать скорость, с которой он включает и выключает звук, с помощью опции phase:, которая сокращает длительность фазы. Его значение по умолчанию равно 0.25, что означает 4 раза в секунду при значении BPM по умолчанию 60. Давайте сделаем это быстрее:

with_fx :slicer, phase: 0.125 do
  synth :prophet, note: :e1, release: 8, cutoff: 70
  synth :prophet, note: :e1 + 4, release: 8, cutoff: 80
end

Теперь поиграйте с разными значениями продолжительности phase: сами. Попробуйте более длинные и короткие значения. Посмотрите, что происходит, когда вы выбираете действительно короткое значение. Кроме того, попробуйте различные синтезаторы, такие как : beep или: dsaw и другие ноты. Взгляните на следующую диаграмму, чтобы увидеть, как различные значения phase: изменяют количество изменений амплитуды за такт.

Длительность фазы

Продолжительность фазы - это продолжительность одного цикла включения / выключения. Поэтому меньшие значения заставят эффект включаться и выключаться намного быстрее, чем большие значения. Хорошие значения для начала игры: 0.125, 0.25, 0.5 и 1.

Контролируя волны

По умолчанию эффект : slicer использует прямоугольную волну для управления амплитудой во времени. Вот почему мы слышим, как амплитуда включается на некоторое время, затем сразу отключается на некоторое время, затем снова включается. Оказывается, прямоугольная волна - это всего лишь одна из 4 различных управляющих волн, которые поддерживаются : slicer. Другие это пила, треугольник и (ко)синус. Посмотрите на диаграмму ниже, чтобы увидеть, как они выглядят. Мы также можем услышать, как они звучат. Например, следующий код использует (кo)синус в качестве управляющей волны. Послушайте, как звук не включается и не выключается внезапно, а плавно затухает:

with_fx :slicer, phase: 0.5, wave: 3 do
  synth :dsaw, note: :e3, release: 8, cutoff: 120
  synth :dsaw, note: :e2, release: 8, cutoff: 100
end

Поиграйте с разными формами волн, изменив параметр wave: на 0 для пилы, 1 для квадрата, 2 для треугольника и 3 для синуса. Посмотрите, как звучат разные волны с разными параметрами phase:.

Каждая из этих волн может быть инвертирована с помощью опции invert_wave:, который переворачивает ее на оси y. Например, в одной фазе пилообразная волна обычно начинается с высокой отметки и медленно опускается, а затем возвращается к вершине. С помощью invert_wave: 1 он медленно поднимется, прежде чем снова спрыгнуть вниз. Кроме того, управляющая волна может быть запущена в разных точках с помощью параметра phase_offset:, который должен быть значением между 0 и 1. Играя с параметрами phase:, wave:, invert_wave: и phase_offset, вы можете кардинально изменить способ изменения амплитуды во времени.

Длительность фаз

Настройка уровня вашего звука

По умолчанию : slicer переключает значения амплитуды 1 (максимальная громкость) и 0 (беззвучно). Это можно изменить с помощью параметров amp_min: и amp_max:. Вы можете использовать это вместе с синусоидальной волной, чтобы создать простой эффект тремоло:

with_fx :slicer, amp_min: 0.25, amp_max: 0.75, wave: 3, phase: 0.25 do
  synth :saw, release: 8
end

Это как если бы взять ручку регулировки громкости на своем hi-fi и немного переместить ее вверх и вниз, чтобы звук «качался» внутрь и наружу динамика.

Вероятности

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

with_fx :slicer, phase: 0.125, probability: 0.6  do
  synth :tb303, note: :e1, cutoff_attack: 8, release: 8
  synth :tb303, note: :e2, cutoff_attack: 4, release: 8
  synth :tb303, note: :e3, cutoff_attack: 2, release: 8
end

Послушайте, как у нас сейчас интересно пульсирует ритм. Попробуйте изменить параметр probability: на другое значение между 0 и 1. Значения, близкие к 0, будут иметь больше места между каждым отдельным звуком, поскольку вероятность того, что звук будет срабатывать, будет намного ниже.

Следует также отметить, что система вероятностей в этом эффекте подобна системе рандомизации, доступной через такие функции, как rand и shuffle. Они все полностью детерминированы. Это означает, что каждый раз, когда вы нажимаете Выполнить, вы слышите точно такой же пульсирующий ритм для данной вероятности. Если вы хотите что-то изменить, вы можете использовать параметр seed:, чтобы выбрать другое начальное число. Это работает точно так же, как use_random_seed, но влияет только на этот конкретный эффект.

Наконец, с помощью параметра prob_pos:, вы можете изменить положение ‘resting’ для управляющей волны с 0 на любую другую позицию, когда проверка вероятности возвращает ложь, а не истину:

with_fx :slicer, phase: 0.125, probability: 0.6, prob_pos: 1  do
  synth :tb303, note: :e1, cutoff_attack: 8, release: 8
  synth :tb303, note: :e2, cutoff_attack: 4, release: 8
  synth :tb303, note: :e3, cutoff_attack: 2, release: 8
end

Нарезаем биты

Есть одна очень забавная вещь - использовать : slicer для нарезки барабанного ритма:

with_fx :slicer, phase: 0.125 do
  sample :loop_mika
end

Это позволяет нам брать любой сэмпл и создавать новые ритмические возможности, что очень весело. Однако следует быть осторожным и убедиться, что темп сэмпла соответствует текущему BPM в Sonic Pi, иначе слайсы будут звучать криво относительно ритма этого сэмпла. Например, попробуйте поменять : loop_mika на сэмпл loop_amen, чтобы услышать, насколько плохо это может звучать, когда темпы не совпадают.

Изменяем темп

Как мы уже видели, изменение значения BPM по умолчанию с помощью use_bpm приведет к увеличению или уменьшению времени ожидания и длительности огибающей синтезатора в соответствии с тактом. Эффект : slicer также учитывает это, поскольку параметр phase: фактически измеряется в тактах, а не секундах. Поэтому мы можем исправить проблему, возникшую с loop_amen выше, изменив BPM в соответствии с примером:

use_sample_bpm :loop_amen
with_fx :slicer, phase: 0.125 do
  sample :loop_amen
end

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

Давайте применим все эти идеи в заключительном примере, в который используем только эффект :slicer для создания интересной комбинации. Давайте, начните изменять его и сделайте из него свое собственное произведение!

live_loop :dark_mist do
  co = (line 70, 130, steps: 8).tick
  with_fx :slicer, probability: 0.7, prob_pos: 1 do
    synth :prophet, note: :e1, release: 8, cutoff: co
  end
  
  with_fx :slicer, phase: [0.125, 0.25].choose do
    sample :guit_em9, rate: 0.5
  end
  sleep 8
end
live_loop :crashing_waves do
  with_fx :slicer, wave: 0, phase: 0.25 do
    sample :loop_mika, rate: 0.5
  end
  sleep 16
end