Создание Patterns 🌀 Bulka

Создание Patterns

Следующие функции возвращают pattern. Это эквиваленты, используемые Mini Notation:

functionmini
cat(x, y)"<x y>"
seq(x, y)"x y"
stack(x, y)"x,y"
stepcat([3,x],[2,y])"x@3 y@2"
polymeter([a, b, c], [x, y])"{a b c, x y}"
polymeterSteps(2, x, y, z)"{x y z}%2"
silence"~"

cat

Synonyms: slowcat

Заданные элементы конкатенируются, где каждый занимает один цикл.

  • items (any): Элементы для конкатенации
cat("e5", "b4", ["d5", "c5"]).note()
// "<e5 b4 [d5 c5]>".note()
// As a chained function:
s("hh*4").cat(
   note("c4(5,8)")
)

seq

Synonyms: fastcat

Как cat, но элементы втиснуты в один цикл.

    seq("e5", "b4", ["d5", "c5"]).note()
    // "e5 b4 [d5 c5]".note()
    // As a chained function:
    s("hh*4").seq(
      note("c4(5,8)")
    )

    stack

    Synonyms: polyrhythm, pr

    Заданные элементы воспроизводятся одновременно с одинаковой длительностью.

      stack("g3", "b3", ["e4", "d4"]).note()
      // "g3,b3,[e4 d4]".note()
      // As a chained function:
      s("hh*4").stack(
        note("c4(5,8)")
      )

      stepcat

      Synonyms: timeCat, timecat

      «Склеивает» паттерны, как fastcat, но пропорционально числу шагов за цикл. Шаги могут либо выводиться из паттерна, либо задаваться парой [length, pattern]. Имеет псевдоним timecat.

        stepcat([3,"e3"],[1, "g3"]).note()
        // the same as "e3@3 g3".note()
        stepcat("bd sd cp","hh hh").sound()
        // the same as "bd sd cp hh hh".sound()

        arrange

        Позволяет расположить несколько patterns вместе на протяжении нескольких циклов. Принимает переменное количество массивов с двумя элементами, указывающими количество циклов и используемый pattern.

          arrange(
            [4, "<c a f e>(3,8)"],
            [2, "<g a>(5,8)"]
          ).note()

          polymeter

          Synonyms: pm

          Экспериментально

          Выравнивает шаги паттернов, создавая полиметры. Паттерны повторяются, пока все не уложатся в цикл. Например, ниже первый паттерн повторяется дважды, а второй — трижды, чтобы уложиться в наименьшее общее кратное из шести шагов.

            // The same as note("{c eb g, c2 g2}%6")
            polymeter("c eb g", "c2 g2").note()

            polymeterSteps

            silence

            Абсолютно ничего не делает..

              silence // "~"

              run

              Дискретный pattern чисел от 0 до n-1

                n(run(4)).scale("C4:pentatonic")
                // n("0 1 2 3").scale("C4:pentatonic")

                binary

                Создает двоичный pattern из числа.

                • n (number): входное число для преобразования в двоичную систему
                "hh".s().struct(binary(5))
                // "hh".s().struct("1 0 1")

                binaryN

                Создает двоичный pattern из числа, дополненный до n бит.

                • n (number): входное число для преобразования в двоичную систему
                • nBits (number): длина pattern, по умолчанию 16
                "hh".s().struct(binaryN(55532, 16))
                // "hh".s().struct("1 1 0 1 1 0 0 0 1 1 1 0 1 1 0 0")

                После конструкторов Patterns давайте посмотрим, какие Модификаторы времени доступны.