Лайв-кодинг

Одним из самых захватывающих аспектов Sonic Pi является то, что для создания музыки, вы можете писать и изменять код здесь и сейчас. Это похоже на настоящее выступление с гитарой. Значит, при достаточной тренировке, вы сможете взять Sonic Pi с собой на сцену и выступать с ней.

Расширьте своё сознание

Прежде, чем мы перейдем к деталям того, как Sonic Pi работает, я бы хотел поделиться с вами личным опытом того, что значит “лайв-кодинг”. Не переживайте, если вы пока чего-то из этого (или ничего) не понимаете. Просто держитесь крепче за стул и наслаждайтесь…

Живой цикл

Давайте начнем, скопируйте следующий код в пустой буфер:

live_loop :flibble do
  sample :bd_haus, rate: 1
  sleep 0.5
end

Теперь нажмите кнопку Выполнить, и вы услышите приятный быстрый барабанный бой. В любой момент нажмите кнопку Остановить, чтобы остановить звук. Но не нажимайте её пока что… Вместо этого сделайте вот что:

  1. Убедитесь, что барабаны по-прежнему звучат
  2. Измените значение sleep с 0.5 на значение побольше, например 1.
  3. Еще раз нажмите кнопку Выполнить
  4. Можно заметить, что темп барабанов изменился.
  5. И, наконец, запомните этот момент - это первый, и, наверняка, не последний ваш лайв-кодинг на Sonic Pi…

Ладно, это было довольно просто. Давайте добавим что-нибудь ещё в наш микс. Сверху от sample :bd_haus добавьте строку sample :ambi_choir, rate: 0.3. Ваш код должен выглядеть так:

live_loop :flibble do
  sample :ambi_choir, rate: 0.3
  sample :bd_haus, rate: 1
  sleep 1
end

Время поиграться. Поменяйте частоту - что происходит, когда вы используете высокие, малые, или отрицательные значения? Посмотрите, что произойдет, когда вы поменяете значение rate: для сэмпла :ambi_choir на незначительную величину (например, до 0.29). Что произойдет, если вы выберите очень маленькое значение для sleep? Проверьте, получится ли заставить его играть так быстро, что все упадс ошибкой из-за того, что он не справится с этим (если это всё же произошло, то просто выберите значение побольше для sleep и снова нажмите Выполнить).

Попробуйте закомментировать одну из строк sample. Для этого добавьте # в ее начало:

live_loop :flibble do
  sample :ambi_choir, rate: 0.3
#  sample :bd_haus, rate: 1
  sleep 1
end

Обратите внимание, компьютер проигнорировал её, поэтому мы её не слышим. Это называется комментарием. В Sonic Pi мы можем использовать комментарии, чтобы убирать или добавлять штуки в микс.

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

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

live_loop :guit do
  with_fx :echo, mix: 0.3, phase: 0.25 do
    sample :guit_em9, rate: 0.5
  end
#  sample :guit_em9, rate: -0.5
  sleep 8
end
live_loop :boom do
  with_fx :reverb, room: 1 do
    sample :bd_boom, amp: 10, rate: 1
  end
  sleep 8
end

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

Так чего же вы ждёте…