# Кислотный бас

Невозможно исследовать историю электронной танцевальной музыки, и не заметить огромного влияния крошечного синтезатора Roland TB-303. Это секретный ингредиент оригинального кислотного баса. Классическое визжание и чавканье басовых риффов TB-303 можно услышать в ранней чикагской хаус сцене благодаря таким музыкантам, как Plastikman, Squarepusher и Aphex Twin.

Интересно, что инженеры Roland никогда не предполагали, что TB-303 будет использоваться в танцевальной музыке. Он изначально создавался для гитаристов. Они рассчитывали, что гитаристы будут программировать TB-303 играть басовые линии в джемах. К сожалению, существовал ряд проблем: они были немного неудобными для программирования, не очень хорошо звучали в качестве замены бас-гитары и были довольно дорогими. Решив сократить убытки, Roland прекратили их выпуск после продажи 10 000 экземпляров, и после нескольких лет лежания на полках, эти синтезаторы можно было найти только в комиссионных магазинах. Эти одинокие, отвергнутые TB-303 ждали, когда их обнаружит новое поколение экспериментаторов, которые начали применять их способом, который в Roland и представить не могли, создавая новые сумасшедшие звуки. Так зародился эйсид хаус.

Хотя получить на руки оригинал TB-303 не так уж и просто, вам будет приятно узнать, что вы можете превратить ваш Raspberry Pi в один из них, используя мощь Sonic Pi. Узрите свет Sonic Pi, забросив этот код в пустой буфер и нажав “Выполнить”:

    use_synth :tb303
    play :e1

Кислотный бас в одно мгновение! Давайте с ним поиграем…

## Изменяем бас

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

    use_synth :tb303
    live_loop :squelch do
      n = (ring :e1, :e2, :e3).tick
      play n, release: 0.125, cutoff: 100, res: 0.8, wave: 0
      sleep 0.125
    end

Для начала рассмотрим код построчно.

1. В первой строке мы задаём синтезатор по умолчанию `tb303` с помощью функции `use_synth`.
2. Во второй строке мы создаем живой цикл с именем `:squelch`, который будет просто повторяться снова и снова.
3. Третья строка - та, где мы создаём наш рифф - кольцо нот (ми в октавах 1, 2 и 3), которые мы извлекаем по кругу с помощью `.tick`. Мы определяем `n` для представления текущей ноты в риффе. Знак равенства означает, что присваиваем имени, находящемуся слева,значение, находящееся справа. Это значение будет отличаться каждый круг цикла. Первый круг `n` будет иметь значение `:е1`. Второй круг - `:е2`, затем `:е3`, потом снова `:е1` и так круг за кругом.
4. Четвёртая строка - место, где мы включаем наш `:tb303`. У нас здесь есть несколько интересных параметров: `release:`, `cutoff:`, `res:` и `wave:`, которые мы обсудим чуть позже.
5. В пятой строке появляется `sleep` - мы просим цикл замыкать круг каждые `0.125` секунды, или 8 раз в секунду с BPM по умолчанию 60.
6. Строка шесть - это `end` живого цикла. Мы просто говорим Sonic Pi, что здесь конец живого цикла.

В то время, как вы всё ещё пытаетесь понять, что здесь происходит, поместите этот код в пустой буфер, и нажмите кнопку “Выполнить”. Вы должны услышать `:tb303` в действии. Теперь пора начинать лайвкодинг.

В то время, как цикл исполняется, измените параметр `cutoff:` на `110`. Затем нажмите кнопку “Выполнить” снова. Вы должны услышать, что звук стал немного жёстче и более “хлюпающим”. Наберите `120` и нажмите “Выполнить”. Затем `130`. Слушайте, как более высокие значения делают звук более пронзительным и интенсивным. Наконец, понизьте значение до `80`, если захотите отдохнуть. Затем повторите это столько раз, сколько захотите. Не волнуйтесь, я всё ещё буду здесь…

Ещё один параметр, с которым стоит поиграть, это `res:`. Он контролирует уровень резонанса фильтра. Для кислотных басовых партий характерен высокий резонанс. В настоящее время наш `res:` установлен в `0.8`. Попробуйте изменить его на `0.85`, затем на `0.9`, и наконец, на `0.95`. Вы можете обнаружить, что предельные значения `cutoff:`, такие как `110` или выше, помогают легче услышать различия. Наконец, сойдите с ума и установите `0.999`, чтобы получить действительно безумный звук. С этим значением `res:` вы слышите так много резонанса, что он начинает звучать сам по себе!

Наконец, для резкого изменения тембра попробуйте изменить параметр `wave:` на `1`. Это выбор формы волны исходного генератора. Значение по умолчанию - `0` - пилообразная волна, `1` - прямоугольная волна, и `2` - треугольная форма волны.

Конечно, пробуйте разные риффы, изменяя ноты в кольце, или же выбирая ноты из гамм, или аккордов. Веселитесь с вашим первым кислотным басовым синтезатором.

## Деконструирование TB-303

Конструкция оригинальных TB-303 на самом деле довольно проста. Как вы можете видеть из следующей диаграммы, главных составляющих всего 4.

Первой является волновой регенератор - сырая основа звука. В этом примере у нас прямоугольная волна. Дальше идёт генератор амплитудной огибающей, который контролирует амплитуду прямоугольной волны во времени. Он доступен в Sonic Pi в виде параметров `attack:`, `decay:`, `sustain:` и `release:`. Для получения более подробной информации об этих параметрах читайте раздел 2.4 “Длительность с помощью огибающих” встроенного учебника. Затем, мы пропускаем наш амплитудно модулированный сигнал через резонансный низкочастотный фильтр. Это срубает высокочастотную составляющую, а также добавляет этот приятный резонансный эффект. Теперь начинается самое весёлое. Значение среза этого фильтра может управляться своей собственной огибающей! Это значит, что мы имеем удивительный контроль над тембром звука, играя двумя этими огибающими. Давайте приступим:

    use_synth :tb303
    with_fx :reverb, room: 1 do
      live_loop :space_scanner do
        play :e1, cutoff: 100, release: 7, attack: 1, cutoff_attack: 4, cutoff_release: 4
        sleep 8
      end
    end

В синтезаторе `:tb303`, для каждого стандартного параметра огибающей есть эквивалент и для `cutoff_` . Так, для изменения времени атаки фильтра, мы можем использовать параметр `cutoff_attack:`. Скопируйте приведенный выше код в пустой буфер, и нажмите “Выполнить”. Вы услышите безумный плавающий звук. Теперь поиграем. Попробуйте изменять время `cutoff_attack:` на `1`, а затем на `0.5`. Потом попробуйте `8`.

Заметьте, что я пропустил звук через `:reverb` эффект для создания дополнительной атмосферы - попробуйте другие эффекты, чтобы посмотреть, как это работает!

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

Наконец, ниже расположен фрагмент кода, который я сочинил, используя идеи этой статьи. Скопируйте его в свой буфер, послушайте, а потом начните лайвкодинг, внося свои собственные изменения. Посмотрим, какие безумные звуки вы сможете создать с помощью этого! Увидимся в следующий раз…

    use_synth :tb303
    use_debug false

    with_fx :reverb, room: 0.8 do
      live_loop :space_scanner do
        with_fx :slicer, phase: 0.25, amp: 1.5 do
          co = (line 70, 130, steps: 8).tick
          play :e1, cutoff: co, release: 7, attack: 1, cutoff_attack: 4, cutoff_release: 4
          sleep 8
        end
      end

      live_loop :squelch do
        use_random_seed 3000
        16.times do
          n = (ring :e1, :e2, :e3).tick
          play n, release: 0.125, cutoff: rrand(70, 130), res: 0.9, wave: 1, amp: 0.8
          sleep 0.125
        end
      end
    end