Аккорды

Sonic Pi имеет встроенную поддержку названий аккордов, которая возвращает списки. Попробуйте сами:

play chord(:E3, :minor)

Теперь мы действительно до чего-то добрались. Это выглядит намного симпатичнее, чем сырые списки (и это легче читать). А как на счёт других аккордов, Sonic Pi их поддерживает? Да, и много. Попробуйте некоторые из них:

Арпеджио

Мы можем легко превратить аккорды в арпеджио с функцией play_pattern:

play_pattern chord(:E3, :m7)

Хорошо, но не очень весело - она играла очень медленно. play_pattern будет играть каждую ноту из списка, вызывая sleep 1 после каждого вызова play. Мы можем использовать другую функцию - play_pattern_timed, чтобы устанавливать наше собственное время и повысить скорость:

play_pattern_timed chord(:E3, :m7), 0.25

Мы можем также передавать разное время в виде списка, который будет рассматриваться как кольцо:

play_pattern_timed chord(:E3, :m13), [0.25, 0.5]

Это эквивалентно:

play 52
sleep 0.25
play 55
sleep 0.5
play 59
sleep 0.25
play 62
sleep 0.5
play 66
sleep 0.25
play 69
sleep 0.5
play 73

Что бы вы предпочли написать?