Посмотрите на этот код:
play 70
Отсюда всё берет свое начало. Давайте, скопируйте и вставьте его в окно кода вверху приложения (большое белое пространство под кнопкой Выполнить
). Затем, нажмите Выполнить
…
Впечатляет. Нажмите заново. Снова. И снова…
Ого, весело! Уверен, вы бы могли продолжать так весь день. Но подождите, перед тем, как вы растворитесь в бесконечном потоке звуков, попробуйте изменить число:
play 75
Слышите разницу? Попробуйте число поменьше:
play 60
Таким образом, меньшие числа соответствуют более низким издаваемым звукам, а большие - более высоким. Подобно тому, как работает пианино: клавиши, которые находятся в более низком регистре (по левую руку), играют более низкие ноты, а клавиши, которые находятся в более высоком регистре (по правую руку), играют более высокие ноты.
Получается, что ноте “До” 4-й октавы (C в английской нотации) соответствует число 60. play 60
, собственно и воспроизведёт ноту “До” 4-й октавы. чтобы сыграть ноту, соответствующую следующей клавише на пианино, вам следует добавить 1 к 60 и ввести команду play 61
, которая в данном случае будет обозначать соседний “До диез” (ему соответствует чёрная клавиша между “До” и “Ре”). Чтобы воспроизвести ноту “Ре”, введите play 62
.
Не волнуйтесь, если для вас это ничего не значит - у меня было то же самое, когда я только начинал. Сейчас важно то, что меньшие числа дают более низкие звуки, а большие числа дают более высокие звуки.
Играть одну ноту весьма забавно, но играть несколько нот сразу ещё лучше. Попробуйте:
play 72
play 75
play 79
Звучит джазово! Итак, когда вы пишете play
много раз, все ноты играют в одно и то же время. Попробуйте самостоятельно - какие числа звучат вместе хорошо? Какие звучат ужасно? Экспериментируйте, исследуйте и вы выясните это сами.
Играть ноты и аккорды весело, а как насчет мелодий? Что, если вы хотите играть одну ноту за другой, а не все вместе? Что же, это легко. Просто нужно вставить sleep
между ними:
play 72
sleep 1
play 75
sleep 1
play 79
Как мило, маленькое арпеджио. Что же значит 1
в sleep 1
? Ну, это означает продолжительность паузы. Вообще-то, это означает задержку на время одной доли такта, но, пока что будем считать, что это значит спать одну секунду. А вдруг мы захотим, чтобы наше арпеджио стало немного быстрее? Тогда надо указать значение для паузы покороче. Как насчет половины, то есть 0.5
:
play 72
sleep 0.5
play 75
sleep 0.5
play 79
Можно заметить: мелодия стала играть быстрее. Попробуйте сами поменять время и используйте разные продолжительности и ноты.
Интересно попробовать значения между нотами, например play 52.3
или play 52.63
. Совсем не нужно держаться стандартных целых чисел. Развлекайтесь и получайте удовольствие.
Для тех, кто уже немного знаком с нотной грамотой (не волнуйтесь, если вы не знаете о чём речь - для веселья она вам не нужна), может быть интересно записать мелодию, используя названия нот, такие как “До” (C) и “Фа-диез” (F#), а не числа. Sonic Pi предусмотрел это. Можно делать так:
play :C
sleep 0.5
play :D
sleep 0.5
play :E
Просто помните, что перед нотой должно стоять двоеточие :
. Тогда она станет розовой. Ещё можно указывать октаву, добавляя её номер после названия ноты:
play :C3
sleep 0.5
play :D3
sleep 0.5
play :E4
Если хотите сделать ноту на полтона выше, поставьте s
после её имени, то есть play :Fs3
. А когда нужен бемоль, обозначьте это при помощи b
, то есть play :Eb3
.
Также есть удобное сокращение для перерыва (музыкальный способ сказать программе не играть ничего вместо ноты), используя :r
, :rest
или nil
.
А теперь, дайте себе волю, и как следует повеселитесь, придумывая собственные мелодии.