Топ пять советов

1. Здесь нет ошибок

Самый главный урок в обучении работе с Sonic Pi заключается в том, что здесь действительно нет ошибок. Лучший способ узнать это - пробовать, пробовать и ещё раз пробовать. Перестаньте беспокоиться о том, звучит ли ваш код хорошо или нет, и начните экспериментировать с как можно большим количеством различных синтезаторов, нот, эффектов и параметров. Вы откроете для себя множество вещей, которые заставят вас смеяться, потому что они звучат просто ужасно, но некоторые - настоящие жемчужины, звучащие просто потрясающе. Просто отбросьте то, что не нравится, и продолжайте делать то, что делаете. Чем больше “ошибок” вы позволите себе совершить, тем быстрее вы научитесь и откроете ваш собственный уникальный звук.

2. Используйте эффекты

Допустим, вы уже освоили основы создания звука в Sonic Pi с помощью sample и play. Что дальше? Знаете ли вы, что Sonic Pi поддерживает более 27 студийных эффектов для изменения звучания вашего кода? Эффекты похожи на причудливые фильтры изображений в графических редакторах, за исключением того, что вместо размытия или замены чего-то цветного чёрно-белым, вы можете использовать в своём звуке такие вещи, как реверберация, искажения и эхо. Думайте об этом, как о подключении кабеля от вашей гитары к педали эффектов, которую вы выбрали, а затем к усилителю. К счастью, Sonic Pi делает использование эффектов очень простым и не требует никаких проводов! Всё что вам нужно сделать - это выбрать, какой именно фрагмент кода вы бы обработали эффектом, и поместить его в FX-контекст. Давайте рассмотрим пример. Предположим, у вас есть следующий код:

sample :loop_garzul
16.times do
  sample :bd_haus
  sleep 0.5
end

Если вы хотите добавить эффект к сэмплу :loop_garzul, просто поместите его внутрь блока with_fx, как здесь:

with_fx :flanger do
  sample :loop_garzul
end
16.times do
  sample :bd_haus
  sleep 0.5
end

Теперь, если вы захотите добавить эффект к басовому барабану, оберните его with_fx тоже:

with_fx :flanger do
  sample :loop_garzul
end
with_fx :echo do
  16.times do
    sample :bd_haus
    sleep 0.5
  end
end

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

3. Параметризируйте ваши синтезаторы

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

sample :guit_em9

О, прекрасный звук гитары! Теперь давайте поиграем с ним. Как насчёт изменения скорости?

sample :guit_em9, rate: 0.5

Эй, что это за rate: 0.5 я добавил в конце? Это называется параметр. Все синтезаторы и эффекты в Sonic Pi поддерживают их, и их тут множество. Они также доступны и для эффектов. Попробуйте это:

with_fx :flanger, feedback: 0.6 do
  sample :guit_em9
end

Теперь, попробуйте увеличить обратную связь до 1, чтобы услышать какие-то сумасшедшие звуки! Читайте документацию для получения полной информации о всем доступном для вас множестве параметров.

4. Лайвкодинг

Лучший способ начать быстро экспериментировать и исследовать Sonic Pi - кодирование в реальном времени. Это означает, что вы начинаете выполнять какой-то код, постоянно изменяя и подправляя его в то время, как он звучит. Например, если вы не знаете, что делает с сэмплом параметр частоты среза фильтра, просто играйте его по кругу и экспериментируйте. Давайте пробовать! Скопируйте этот код в буфер вашего Sonic Pi:

live_loop :experiment do
  sample :loop_amen, cutoff: 70
  sleep 1.75
end

Теперь, нажмите “Выполнить” и вы будете слышать чуть приглушенный барабанный брейк. Измените значение cutoff: на 80 и нажмите “Выполнить” снова. Слышите разницу? Попробуйте 90, 100, 110

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

5. Серфинг на случайных потоках

Наконец, ещё одна вещь, которую я люблю делать, это давать Sonic Pi сочинять за меня музыку. Действительно крутой способ сделать это - использовать рандомизацию. Это может показаться сложным, но на самом деле это не так. Давайте проверим. Скопируйте это в свободное рабочее пространство:

live_loop :rand_surfer do
  use_synth :dsaw
  notes = (scale :e2, :minor_pentatonic, num_octaves: 2)
  16.times do
    play notes.choose, release: 0.1, cutoff: rrand(70, 120)
    sleep 0.125
  end
end

Когда вы запустите это, вы услышите постоянный поток случайных нот гаммы :Е2 :minor_pentatonic, сыгранных синтезатором :dsaw. “Подожди, подожди! Это не мелодия”, слышу я ваш возглас! Ну, это только первая часть волшебного трюка. Каждый раз, когда мы проходим круг цикла live_loop, мы можем сказать Sonic Pi сбросить случайный поток к уже известной начальной точке. Это как если бы возвращаться во времени в ТАРДИС с Доктором (см. британский телесериал «Доктор Кто») в определённую точку в пространстве и времени. Давайте попробуем это - добавьте строку use_random_seed 1 к live_loop:

live_loop :rand_surfer do
  use_random_seed 1
  use_synth :dsaw
  notes = (scale :e2, :minor_pentatonic, num_octaves: 2)
  16.times do
    play notes.choose, release: 0.1, cutoff: rrand(70, 120)
    sleep 0.125
  end
end

Теперь каждый раз, когда цикл live_loop повторяется, случайный поток будет сброшен у началу. Это значит, что он выбирает одни и те же 16 нот каждый раз. Вуаля, мелодия в один миг! А теперь действительно захватывающая вещь. Измените значение отправной точки с 1 на другое число. Скажем, 4923. Ого! Другая мелодия! Так, просто изменяя одну цифру (отправную точку), вы можете открыть столько мелодических комбинаций, сколько только сможете себе представить! Это и есть магия кода.