Oscillators

From TidalCycles userbase
Jump to: navigation, search

Oscillators are continuously varying patterns.

Unless otherwise stated, oscillators give minimum values of 0 and maximum values of 1, and repeat once per cycle.

Oscillators are continuous patterns, which means they don't have any structure, and must be used with a pattern that does. For example d1 $ sound "bd*8" >| pan sine won't work well, because the >| operator instructs tidal to take structure from the right, and sine doesn't have any structure, so tidal will simply trigger events at a fixed rate (depending on your configuration, this might be very fast). d1 $ sound "bd*8" |> pan sine is better, because |> takes structure from the left, so eight kick drums will play, with pan values sampled from the sine wave for each of the eight events.

Where a pattern has the type Fractional a => Pattern a, that means that they can be used both as floating point numbers or (rational) time values.

sine

Type: sine :: Fractional a => Pattern a

A sine wave.

d1 $ sound "bd*8" # pan sine

cosine

Type: cosine :: Fractional a => Pattern a

A cosine wave, i.e. a sine shifted in time by a quarter of a cycle.

d1 $ sound "bd*8" # pan cosine # speed (sine + 0.5)

square

Type: square :: Fractional a => Pattern a

A squarewave, starting at 0, then going up to 1 halfway through a cycle.

d1 $ sound "bd*8" # pan (cat [square, sine])

tri

Type: tri :: Fractional a => Pattern a

A triangle wave, starting at 0, then linearly rising to 1 halfway through a cycle, then down again.

d1 $ sound "bd*16" # speed (slow 2 $ range 0.5 2 tri)

saw

Type: saw :: Fractional a => Pattern a

A sawtooth wave starting at 0, then linearly rising to 1 over one cycle, then jumping back to 0.

d1 $ sound "bd*8" # pan (slow 2 saw)

isaw

[Type signature|Type]]: saw :: Fractional a => Pattern a

An inverted sawtooth, starting at 1, then linearly falling to 0 over one cycle, then jumping back to 1.

d1 $ sound "bd*8" # pan (slow 2 isaw)

Random oscillators

rand

Type: rand :: Fractional a => Pattern a

An infinitely detailed stream of (pseudo-)random numbers. See[ the rand page for more details.

d1 $ sound "bd*8" # pan rand

irand

Type: irand :: Num a => Int -> Pattern a

A function from an integer (giving the maximum) to a stream of (pseudo-)random integer numbers. See[ the rand page for more details.

d1 $ sound "drum*8" # n (irand 8)

choose and friends

These have their own page, click the names for more information:

Type: choose :: [a] -> Pattern a

choose continuously oscillates between random choices.

Type: chooseBy :: Pattern Double -> [a] -> Pattern a

chooseBy uses an oscillator (or other pattern) to select elements.

Type: wchoose :: [(a, Double)] -> Pattern a

wchoose continuously oscillates between random choices, with each choice given a weight/likelihood.

Type: wchooseBy :: Pattern Double -> [(a,Double)] -> Pattern a

wchooseBy is like wchoose but another oscillator/pattern is used to select weighted elements.