Oscillators
Oscillators are continuously varying patterns. Unless otherwise stated, oscillators give minimum values of 0
and maximum values of 1
, and repeat once per cycle.
#
What is an oscillator?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.
#
Using oscillators#
Periodic oscillators#
Sinesine
is a sinusoïdal wave. Playing this example, you should hear the sound slowly moving from your left to your right speaker:
#
CosineA cosine
wave, is a sine
shifted in time by a quarter of a cycle. It sounds similar to the sine
above:
#
SquareA Square wave, starting at 0, then going up to 1 halfway through a cycle.
#
TriA triangle wave, starting at 0, then linearly rising to 1 halfway through a cycle, then down again:
#
SawA sawtooth wave starting at 0, then linearly rising to 1 over one cycle, then jumping back to 0:
#
IsawAn inverted sawtooth, starting at 1, then linearly falling to 0 over one cycle, then jumping back to 1:
#
Non-periodic oscillators#
RandAn infinitely detailed stream of (pseudo-)random numbers. See the rand
reference page for more details.
#
IrandA function from an integer (giving the maximum) to a stream of (pseudo-)random integer numbers. For more details, head to the rand
reference page:
#
Scaling oscillatorsBy default, the oscillators will output values scaled between 0
and 1
. You might want to use bigger or smaller values. You might want, for instance, to modulate the frequency of a filter or select a random midi note between 0
and 127
. To do so, you can use the range
function:
#
Speeding up/down oscillatorsOscillators are patterns! It means that you can speed them up or down using the same function as usual (fast
, slow
, etc..):
tip
Notice that most of the time, the speed up/down will be in sync with your pattern. How convenient!