Первые звуки
Это первая глава воркшопа Strudel, рады видеть вас на борту!
Поля с кодом
Воркшоп полон интерактивных полей с кодом. Давайте научимся ими пользоваться. Вот одно из них:
sound("casio")- ⬆️ кликните в текстовое поле выше ⬆️
- нажмите
ctrl+enterдля воспроизведения - измените
casioнаmetal - нажмите
ctrl+enterдля обновления - нажмите
ctrl+.для остановки
Поздравляем, теперь вы занимаетесь live coding!
Звуки
Мы только что воспроизвели звук с помощью sound вот так:
sound("casio")casio — один из многих стандартных звуков.
Попробуйте несколько других звуков:
insect wind jazz metal east crow casio space numbersВы можете услышать небольшую паузу, пока звук загружается
Изменение номера sample с помощью :
Один звук может содержать несколько samples (аудиофайлов).
Вы можете выбрать sample, добавив : и число к имени:
sound("casio:1")Попробуйте разные комбинации звуков и номеров samples.
Если не добавлять число, это равносильно :0
Теперь вы знаете, как использовать разные звуки. Пока мы остановимся на этой небольшой подборке звуков, но позже узнаем, как загружать собственные звуки.
Звуки ударных
По умолчанию Strudel поставляется с широким выбором звуков ударных:
sound("bd hh sd oh")Эти буквенные комбинации обозначают разные части ударной установки:

original image by Pbroks13
bd= bass drum (бас-барабан)sd= snare drum (малый барабан)rim= rimshot (удар по ободу)hh= hihat (хай-хэт)oh= open hihat (открытый хай-хэт)lt= low tom (низкий том)mt= middle tom (средний том)ht= high tom (высокий том)rd= ride cymbal (райд-тарелка)cr= crash cymbal (крэш-тарелка)
Попробуйте разные звуки ударных!
Чтобы изменить звучание ударных, мы можем использовать bank для смены драм-машины:
sound("bd hh sd oh").bank("RolandTR909")В этом примере RolandTR909 — это название драм-машины, которую мы используем.
Это знаменитая драм-машина для house и techno битов.
Попробуйте изменить RolandTR909 на одну из:
AkaiLinnRhythmAceRolandTR808RolandTR707ViscoSpaceDrum
Их гораздо больше, но пока давайте упростим
Профи-совет: Выделите название двойным кликом. Затем просто скопируйте и вставьте!
Последовательности
В последнем примере мы уже видели, что можно воспроизводить несколько звуков в последовательности, разделяя их пробелом:
sound("bd hh sd hh")Обратите внимание, как текущий воспроизводимый звук подсвечивается в коде и визуализируется ниже.
Попробуйте добавить больше звуков в последовательность!
Чем длиннее последовательность, тем быстрее она выполняется
sound("bd bd hh bd rim bd hh bd")Содержимое последовательности будет сжато в то, что называется cycle. По умолчанию cycle длится 2 секунды.
Один на cycle с помощью < .. >
Вот та же последовательность, но на этот раз окруженная < .. > (угловыми скобками):
sound("<bd bd hh bd rim bd hh bd>")Это будет воспроизводить только один звук за cycle. С этими скобками темп не меняется, когда мы добавляем или удаляем элементы!
Так как сейчас это очень медленно, мы можем снова ускорить это так:
sound("<bd bd hh bd rim bd hh bd>*8")Здесь *8 означает, что мы делаем всё это в 8 раз быстрее.
Подождите минуту, разве это не то же самое, что без < ... >*8? Зачем тогда это нужно?
Это правда, особенность этой нотации в том, что темп не изменится, когда вы добавляете или удаляете элементы, попробуйте!
Попробуйте также изменить число в конце, чтобы изменить темп!
изменение темпа с помощью setcpm
setcpm(90/4)
sound("<bd hh rim hh>*8")cpm = cycles per minute (циклов в минуту)
По умолчанию темп составляет 30 циклов в минуту = 120/4 = 1 cycle каждые 2 секунды
В терминах западной музыки можно сказать, что вышеприведенное — это восьмые ноты при 90bpm в размере 4/4. Но не волнуйтесь, если вы не знаете эти термины, они не требуются для создания музыки с Strudel.
Добавление пауз в последовательность с помощью ’-’ или ’~’
sound("bd hh - rim - bd hh rim")Подпоследовательности с [квадратными скобками]
sound("bd [hh hh] sd [hh bd] bd - [hh sd] cp")Попробуйте добавить больше звуков внутрь скобки!
Подобно всей последовательности, содержимое подпоследовательности будет сжато до собственной длины.
Умножение: Ускорение
sound("bd hh*2 rim hh*3 bd [- hh*2] rim hh*2")Умножение: Ускорение подпоследовательностей
sound("bd [hh rim]*2 bd [hh rim]*1.5")Умножение: Оооочень сильное ускорение
sound("bd hh*32 rim hh*16")Высота звука = очень быстрый ритм
Подподпоследовательности с [[двойными скобками]]
sound("bd [[rim rim] hh] bd cp")Вы можете углубляться настолько, насколько хотите!
Воспроизведение последовательностей параллельно с помощью запятой
sound("hh hh hh, bd casio")Вы можете использовать столько запятых, сколько хотите:
sound("hh hh hh, bd bd, - casio")Запятые также могут использоваться внутри подпоследовательностей:
sound("hh hh hh, bd [bd,casio]")Заметили, что два примера выше одинаковые?
Довольно часто существует много способов выразить одну и ту же идею.
Несколько строк с обратными кавычками
sound(`bd*2, - cp, - - - oh, hh*4, [- casio]*2`)
выбор номеров samples отдельно
Вместо того чтобы выбирать номера samples по одному:
sound("jazz:0 jazz:1 [jazz:4 jazz:2] jazz:3*2")Мы также можем использовать функцию n, чтобы сделать это короче и читабельнее:
n("0 1 [4 2] 3*2").sound("jazz")Итоги
Теперь мы изучили основы так называемой Mini-Notation, ритмического языка Tidal. Вот что мы изучили к настоящему моменту:
| Концепция | Синтаксис | Пример |
|---|---|---|
| Последовательность | пробел | sound("bd bd sd hh") |
| Номер sample | :x | sound("hh:0 hh:1 hh:2 hh:3") |
| Паузы | - или ~ | sound("metal - jazz jazz:1") |
| Чередование | <> | sound("<bd hh rim oh bd rim>") |
| Подпоследовательности | [] | sound("bd wind [metal jazz] hh") |
| Подподпоследовательности | [[]] | sound("bd [metal [jazz [sd cp]]]") |
| Ускорение | * | sound("bd sd*2 cp*3") |
| Параллельно | , | sound("bd*2, hh*2 [hh oh]") |
Mini-Notation обычно используется внутри какой-либо функции. Вот функции, которые мы видели к настоящему моменту:
| Название | Описание | Пример |
|---|---|---|
| sound | воспроизводит звук с указанным именем | sound("bd sd [- bd] sd") |
| bank | выбирает sound bank | sound("bd sd [- bd] sd").bank("RolandTR909") |
| setcpm | устанавливает темп в циклах в минуту | setcpm(45); sound("bd sd [- bd] sd") |
| n | выбрать номер sample | n("0 1 4 2 0 6 3 2").sound("jazz") |
Примеры
Базовый рок-бит
setcpm(100/4)
sound("[bd sd]*2, hh*8").bank("RolandTR505")Классический house
sound("bd*4, [- cp]*2, [- hh]*4").bank("RolandTR909")Обратите внимание, что эти два паттерна очень похожи. Определенные барабанные паттерны используются в разных жанрах.
We Will Rock you
setcpm(81/2)
sound("bd*2 cp").bank("RolandTR707")Yellow Magic Orchestra - Firecracker
setcpm(120/2)
sound("bd sd, - - - hh - hh - -, - perc - perc:1*2")
.bank("RolandCompurhythm1000")Имитация 16-шагового секвенсора
setcpm(90/4) sound(` [- - oh - ] [- - - - ] [- - - - ] [- - - - ], [hh hh - - ] [hh - hh - ] [hh - hh - ] [hh - hh - ], [- - - - ] [cp - - - ] [- - - - ] [cp - - - ], [bd - - - ] [- - - bd] [- - bd - ] [- - - bd] `)
Еще один
setcpm(88/4)
sound(`
[- - - - ] [- - - - ] [- - - - ] [- - oh:1 - ],
[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh - - ],
[- - - - ] [cp - - - ] [- - - - ] [~ cp - - ],
[bd bd - - ] [- - bd - ] [bd bd - bd ] [- - - - ]
`).bank("RolandTR808")Необычные ударные
setcpm(100/2) s(`jazz*2, insect [crow metal] - -, - space:4 - space:1, - wind`)
Теперь, когда мы знаем основы создания битов, давайте посмотрим, как можно воспроизводить ноты