home/ modules/ tidal-sounds-controls-and-tempo

Tidal: sounds, control patterns and tempo

  • learner can select samples by folder/index and pitch, and route control patterns with #
  • learner can apply filters, FX and continuous oscillators as control patterns
  • learner can set tempo and manage several live patterns with d1-d9/hush/mute

Live-code a Tidal set of three simultaneous patterns (d1-d3) with independent sample selection, filtered FX modulated by continuous oscillators, tempo set via setcps, using hush/mute/solo to arrange the mix.

This module turns rhythm notation into a playable instrument. The whole task is a short live set — three concurrent Tidal patterns behaving like a kick/percussion/melodic-texture rig in a club or algorave setting, where you shape timbre and arrange the mix in real time rather than pre-composing. Everything here is what a performer actually touches between saving a line and hearing the room respond.

The arc starts supported: with one pattern on d1, split sound into folder and index (see “Separating s and n”) and pitch one-shots into melodic material with note versus n. Then route your first effect through #, leaning on “control patterns combined with the # operator” and the structure-from-the-left rule to understand why swapping operands changes the groove. Next, sweep a low-pass filter with range-scaled sine/saw oscillators (the continuous-oscillator and LFO atoms are your JIT how-tos), add speed for pitch-and-reverse tricks, and convert a target BPM into setcps. Only then go polyphonic: bring up d2 and d3, and rehearse hush, mute, and solo until dropping and restoring layers is reflexive — that reflex is what makes the unsupported capstone a performance instead of a scramble.

Required atoms gate the capstone directly: you cannot write a single line without $, cannot layer FX without # semantics, and cannot arrange three voices without the d1-d9 controls and tempo model. Supporting atoms enrich the practice — the language/engine architecture, the Haskell-level $ treatment, and custom sample loading explain your rig, cut groups tame long samples, and the Strudel effect atoms show the same ideas in the browser for zero-install rehearsal.

Runnable examples

Generated from the context/ instrument corpus by concept (redistributable idioms only). Do not edit — regenerate with gen-module-examples.mjs.

stereo-panning

d1 $ pan (slow 2 sine) # sound "hh*8"

tidal-0037 · CC0

SinOsc s => Pan2 p => dac; -0.7 => p.pan;

chuck-0042 · MIT

reverse-playback

d1 $ sound "bd sn" # speed "-1"

tidal-0056 · CC0

Atoms in this module

Required — these gate the capstone

Separating s (sample folder) and n (index) in Tidal enables independent patterning of name and index
Procedure L2 First instrument F
Tidal's n selects a sample by index while note pitches a sample up or down
Concept L2 First instrument F
Tidal effect parameters are control patterns, combined with sound patterns using the # operator
Concept L2 First instrument F
In a Tidal # combination, the left-hand pattern determines the rhythmic structure
Principle L2 First instrument F
Tidal filters cutoff, hcutoff, and djf shape a sound's frequency content
Procedure L2 First instrument FB
Tidal's continuous oscillator patterns (sine, saw, tri, square) modulate control values smoothly over time
Procedure L2 First instrument F
Tidal oscillators with range modulate parameters as LFOs, smoothed via control busses
Procedure L2 First instrument FB
The speed control in Tidal changes sample playback rate and thus pitch; negative values reverse the sample
Procedure L2 First instrument F
Tidal's tempo is set in cycles per second (cps), not BPM; converting requires choosing beats per cycle
Procedure L2 First instrument F
Tidal controls global tempo with setcps, and individual pattern speed with fast and slow functions
Concept L2 First instrument F
Tidal d1-d9, hush, solo, and mute manage multiple simultaneous patterns live
Procedure L1 Foundations FM
In Tidal, $ is a low-priority function application operator that avoids wrapping the final argument in parentheses
Concept L2 First instrument F

Supporting — enrichment, not gating

The $ operator in Tidal applies a function to everything to its right, replacing wrapping parentheses
Concept L2 First instrument F
TidalCycles is a pattern language that makes no sound; it delegates audio to a separate engine (SuperDirt/SuperCollider)
Concept L1 Foundations FN
Tidal functions can be partially applied (curried) to produce new functions that accept remaining arguments
Concept L2 First instrument F
Tidal transformations chain with the . operator to combine into one function
Concept L2 First instrument F
Tidal users without functional programming background can make music with it, showing DSL usability decouples from host language difficulty
Fact L2 First instrument F
Strudel is a browser-native, Tidal-style pattern language that shares TidalCycles' syntax
Fact L1 Foundations F
Loading custom sample packs into SuperDirt requires adding a loadSoundFiles path to the SuperCollider startup file
Procedure L2 First instrument F
The cut effect assigns samples to choke groups so a new hit stops previous overlapping hits from the same group
Procedure L2 First instrument FB
In Tidal each sound parameter is patterned independently, so timbre aspects can carry their own polyrhythms
Concept L3 Craft F
gain() controls amplitude and can be patterned to create dynamic accent patterns within a rhythm
Concept L2 First instrument FD
pan() positions each event in the stereo field, from full left at 0 to full right at 1
Concept L2 First instrument FD
lpf() applies a low-pass filter; lower cutoff values muffle sound, higher values let high frequencies through
Concept L2 First instrument FB
Strudel audio effects are chainable methods that accept patterned values
Concept L1 Foundations F