Функции Pattern
Давайте изучим всё о функциях для создания и модификации patterns. В основе Strudel всё состоит из функций.
Например, всё, что вы можете сделать с помощью Mini-Notation, также можно сделать с помощью функции. Этот Pattern в Mini Notation:
эквивалентен этому Pattern без Mini Notation:
Аналогично, есть эквивалентная функция для каждого аспекта mini notation.
Какое представление использовать - вопрос контекста. Как правило, функции лучше подходят в более широком контексте, в то время как mini notation более практична для отдельных ритмов.
Ограничения Mini Notation
Хотя Mini Notation - это мощный способ писать ритмы лаконично, у неё также есть ограничения. Возьмём этот пример:
stack(
note("c2 eb2(3,8)").s('sawtooth').cutoff(800),
s("bd(5,8), hh*8")
)Здесь мы используем mini notation для отдельных ритмов, при этом используя функцию stack для их микширования.
Хотя stack также доступен как , в mini notation, мы не можем использовать его здесь, потому что у нас разные типы звуков.
Комбинирование Patterns
Вы можете свободно смешивать JS patterns, mini patterns и значения! Например, этот pattern:
cat(
stack("g3","b3","e4"),
stack("a3","c3","e4"),
stack("b3","d3","fs4"),
stack("b3","e4","g4")
).note()…эквивалентен:
cat( "g3,b3,e4", "a3,c3,e4", "b3,d3,f#4", "b3,e4,g4" ).note()
… а также:
Хотя mini notation почти всегда короче, у неё есть только несколько модификаторов: * / ! @. При использовании JS patterns можно сделать гораздо больше.
Далее давайте посмотрим, как вы можете создавать patterns