Creating Patterns

The following functions will return a pattern. These are the equivalents used by the Mini Notation:

functionmini
cat(x, y)"<x y>"
seq(x, y)"x y"
stack(x, y)"x,y"
timeCat([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

The given items are concatenated, where each one takes one cycle.

  • items (any): The items to concatenate
cat("e5", "b4", ["d5", "c5"]).note()
// "<e5 b4 [d5 c5]>".note()

You can also use cat as a chained function like this:

    s("hh*4").cat(
      note("c4(5,8)")
    )

    seq

    Synonyms: fastcat, sequence

    Like cat, but the items are crammed into one cycle.

      seq("e5", "b4", ["d5", "c5"]).note()
      // "e5 b4 [d5 c5]".note()

      Or as a chained function:

        s("hh*4").seq(
          note("c4(5,8)")
        )

        stack

        Synonyms: polyrhythm, pr

        The given items are played at the same time at the same length.

          stack("g3", "b3", ["e4", "d4"]).note()
          // "g3,b3,[e4,d4]".note()

          As a chained function:

            s("hh*4").stack(
              note("c4(5,8)")
            )

            timeCat

            arrange

            Allows to arrange multiple patterns together over multiple cycles. Takes a variable number of arrays with two elements specifying the number of cycles and the pattern to use.

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

              polymeter

              polymeterSteps

              silence

              Does absolutely nothing..

                silence // "~"

                run

                A discrete pattern of numbers from 0 to n-1

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

                  After Pattern Constructors, let’s see what Time Modifiers are available.