Аккорды

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

play chord(:E3, :minor)

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

Арпеджио

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

play_pattern chord(:E3, :m7)

Ok, that’s not so fun - it played it really slowly. play_pattern will play each note in the list with a call to sleep 1 after each call to play. We can use another function play_pattern_timed to specify our own timings and speed things up:

play_pattern_timed chord(:E3, :m7), 0.25

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

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

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

play 52, sustain: 0.25
sleep 0.25
play 55, sustain: 0.5
sleep 0.5
play 59, sustain: 0.25
sleep 0.25
play 62, sustain: 0.5
sleep 0.5
play 66, sustain: 0.25
sleep 0.25
play 69, sustain: 0.5
sleep 0.5
play 73, sustain: 0.25
sleep 0.25

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

Note that play_pattern and play_pattern_timed alter the sustain of the notes to fill the times. You can remove this behavior by setting the sustain: opt to 0:

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