Резюме
В первой части мы рассмотрели воспроизведение синтезированного звука и семплов. Здесь мы расширим и представим еще несколько структур/паттернов и посмотрим на FX.
- Циклы и итераторы — чтобы представить некоторую базовую структуру
- Рандомизация — добавить еще несколько интересных звуков
- Эффекты — наложение некоторых эффектов (эффект реверберации) на сэмплы.
- Генерация арпеджио — с использованием некоторых переменных и лупов
Циклы/Итераторы
В первой части мы использовали простой цикл для воспроизведения набора сэмплов бочки, это было следующим образом:
use_sample_bpm :drum_heavy_kick 4.times do |n| sample :drum_heavy_kick sleep 0.5 end
Давайте расширим это:
- Воспроизведение семпла (бас-бочки) определенное количество раз (используя .times)
- Добавив еще один семпл, который воспроизводится после первого, мы будем использовать ключевое слово sleep, чтобы воспроизвести его на более медленной скорости.
use_sample_bpm :drum_heavy_kick 4.times do |n| sample :drum_heavy_kick sleep 0.5 end 3.times do |n| sample :drum_heavy_kick sleep 2 end
Теперь давайте окружим все это бесконечным циклом, чтобы он повторялся до дальнейшего уведомления:
use_sample_bpm :drum_heavy_kick loop do 4.times do |n| sample :drum_heavy_kick sleep 0.5 end 3.times do |n| sample :drum_heavy_kick sleep 2 end end
Используйте сочетание клавиш ⌘ + R или кнопку «Выполнить». На этот раз вам нужно будет использовать сочетание клавиш ⌘ + S или кнопку «Стоп».
Довольно круто? Попробуйте поиграть со значениями для сна, добавьте еще один раздел .times. Интересно попробовать повторить то, что вы знаете в популярной музыке.
Хорошо, давайте вернемся к синтезированному инструменту и рассмотрим некоторые основные алгоритмы.
Рандомизация
Мы можем использовать любой синтезированный инструмент и использовать функцию rrand() для создания каждый раз новой ноты. В конце звучит несколько жутковато.
use_synth :piano loop do play rrand(20, 80) sleep 0.1 end
Вы также можете применить rrand() к другим вещам, попробуйте использовать его с ключевым словом sleep.
Эффекты (FX)
Пока мы этим занимаемся, давайте воспользуемся Sonic Pi FX (реверберацией), чтобы сделать наш странный фортепианный луп еще более странным:
use_synth :piano with_fx :reverb, room: 0.9 do loop do play rrand(20, 50) sleep 0.4 end end
Вы можете узнать больше о параметрах FX здесь:
А также эффект реверберации с различными параметрами здесь:
Создание арпеджио
В порядке. Итак, мы сгенерировали несколько основных последовательностей нот. Теперь давайте рассмотрим довольно стандартную музыкальную структуру — арпеджио. Мы создаем арпеджио, циклически перебирая массив нот и изменяя значение base_note в следующем (сначала добавляя к нему 3, а затем добавляя 7). Мы делаем это для каждой заметки в массиве, увеличивая n на 1.
interval = 0.2 notes = [72, 65, 58, 62] while true n = 0 notes.length.times do base_note = notes[n] 3.times do play base_note sleep interval play base_note + 3 sleep interval play base_note + 7 sleep interval end n += 1 end end
Это дает вам восходящее арпеджио. Попробуйте создать нисходящее арпеджио, также вычитая из значения.
Теперь у нас должны быть базовые строительные блоки для создания последовательностей. Мы могли бы улучшить структуру, используя функции, но пока этого достаточно.
В части 3 мы рассмотрим создание песни из синтезаторов (для ударных, базы и мелодии), а затем добавим несколько сэмплов Sonic Pi для разнообразия.
Шпаргалка
https://www.cl.cam.ac.uk/projects/raspberrypi/sonicpi/media/sonic-pi-cheatsheet.pdf