Signals 🌀 Bulka

Continuous Signals

Signals are patterns with continuous values, meaning they have theoretically infinite steps. They can provide streams of numbers that can be sampled at discrete points in time.

saw

A sawtooth signal between 0 and 1.

    note("<c3 [eb3,g3] g2 [g3,bb3]>*8")
    .clip(saw.slow(2))
    n(saw.range(0,8).segment(8))
    .scale('C major')

    sine

    A sine signal between 0 and 1.

      n(sine.segment(16).range(0,15))
      .scale("C:minor")

      cosine

      A cosine signal between 0 and 1.

        n(stack(sine,cosine).segment(16).range(0,15))
        .scale("C:minor")

        tri

        A triangle signal between 0 and 1.

          n(tri.segment(8).range(0,7)).scale("C:minor")

          square

          A square signal between 0 and 1.

            n(square.segment(4).range(0,7)).scale("C:minor")

            rand

            A continuous pattern of random numbers, between 0 and 1.

              // randomly change the cutoff
              s("bd*4,hh*8").cutoff(rand.range(500,8000))

              Ranges from -1 to 1

              There is also saw2, sine2, cosine2, tri2, square2 and rand2 which have a range from -1 to 1!

              perlin

              Generates a continuous pattern of perlin noise, in the range 0..1.

                // randomly change the cutoff
                s("bd*4,hh*8").cutoff(perlin.range(500,8000))

                irand

                A continuous pattern of random integers, between 0 and n-1.

                • n (number): max value (exclusive)
                // randomly select scale notes from 0 - 7 (= C to C)
                n(irand(8)).struct("x x*2 x x*3").scale("C:minor")

                brand

                A continuous pattern of 0 or 1 (binary random)

                  s("hh*10").pan(brand)

                  brandBy

                  A continuous pattern of 0 or 1 (binary random), with a probability for the value being 1

                  • probability (number): a number between 0 and 1
                  s("hh*10").pan(brandBy(0.2))

                  time

                  A signal representing the cycle time.

                    creating your own signal

                    Creates a signal given by the input function

                    • func (*):
                    // sawtooth signal definition
                    signal(t=>t%1).segment(16).range(30,40).note()
                    signal(t=>Math.pow(t,2)%1).range(40, 60).add(5).segment(16)
                    .off(0, x=>x.add(7))
                    .note()
                    .s("gm_electric_guitar_jazz,gm_epiano")
                      .gain(1.7)
                    .pianoroll()

                    mouseX

                    Synonyms: mouseX

                    The mouse's x position value ranges from 0 to 1.

                      n(mousex.segment(4).range(0,7)).scale("C:minor")

                      mouseY

                      Synonyms: mouseY

                      The mouse's y position value ranges from 0 to 1.

                        n(mousey.segment(4).range(0,7)).scale("C:minor")

                        Next up: Random Modifiers