Ваши Первые Звуки

Посмотрите на этот код:

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.

А теперь, дайте себе волю, и как следует повеселитесь, придумывая собственные мелодии.