This document provides examples and explanations of patterns and functions in TidalCycles, a domain-specific language for live coding with music and sound. It shows how to:
1) Create patterns using mini-notation to sequence sounds over time.
2) Pass patterns as arguments to functions to manipulate them, such as reversing, speeding up, or dropping sounds randomly.
3) Combine multiple controls by applying functions to samples, filters, or other patterns.
This document provides examples and explanations of patterns and functions in TidalCycles, a domain-specific language for live coding with music and sound. It shows how to:
1) Create patterns using mini-notation to sequence sounds over time.
2) Pass patterns as arguments to functions to manipulate them, such as reversing, speeding up, or dropping sounds randomly.
3) Combine multiple controls by applying functions to samples, filters, or other patterns.
This document provides examples and explanations of patterns and functions in TidalCycles, a domain-specific language for live coding with music and sound. It shows how to:
1) Create patterns using mini-notation to sequence sounds over time.
2) Pass patterns as arguments to functions to manipulate them, such as reversing, speeding up, or dropping sounds randomly.
3) Combine multiple controls by applying functions to samples, filters, or other patterns.
This document provides examples and explanations of patterns and functions in TidalCycles, a domain-specific language for live coding with music and sound. It shows how to:
1) Create patterns using mini-notation to sequence sounds over time.
2) Pass patterns as arguments to functions to manipulate them, such as reversing, speeding up, or dropping sounds randomly.
3) Combine multiple controls by applying functions to samples, filters, or other patterns.
* iclc.livecodenetwork.org see tidalcycles.org for many more -- chop up samples, reverse the bits * algorave.com * toplap.org s "bd sd" # s "arpy" See also d1 $ every 2 (rev . chop 8) $ d1 $ fast "2 3" $ n "0 1 2 3" -- join functions together with . -- lets pattern that Forum: forum.toplap.org Chat channels: chat.toplap.org note "0 3 7 12" # s "gtr" d1 $ hurry 4 $ n "0 1 2" # s "arpy" Home: tidalcycles.org d1 $ off 0.125 (+ note 7) $ -- make faster and pitch up Links -- apply offset, on top of original d1 $ fast 4 $ n "0 1 2 3" # s "arpy" d1 $ rev (s "bd sn") n "0 2 [~ 1] 5" # s "speakspell" -- make faster d1 $ rev $ s "bd sn" d1 $ every 3 (fast 2) $ Little book of patterns the left. These are the same: -- apply function every 'n' cycles d1 $ iter 4 $ n "0 1 2 3" # s "arpy" give it as a value to the function on -- successively shift time $ resolve what's on the right, and n "0 [2 1] 4*2 3" # s "speakspell" d1 $ jux rev $ chop 8 $ d1 $ rev $ n "0 1 2 3" # s "arpy" triggers from the left) -- apply function in one speaker/ear -- reverse # join two control patterns (taking Passing functions to functions sound and space Operator re-cap: Higher order functions Functions for manipulating time, Mini-notation (in double quotes) -- speed up a step with * Pattern all the things -- Howabout a sine wave on gain: d1 $ s "bd sd*2 ~ [cp arpy]*2" d1 $ sound "bd*32" # gain sine -- Four sounds in a cycle: sound (or just s) patterns sample d1 $ sound "bd hh sd cp" -- slow down with / set or synth. There is much more to -- Or randomised panning: d1 $ s "bd sd/2 ~ [cp arpy ht lt]/2" pattern! d1 $ sound "bd*4" # pan rand -- Six sounds in a cycle: d1 $ s "bd hh sd cp arpy kurt" -- pick one per cycle ctrl-enter to run multiline patterns -- '#' takes structure from the left d1 $ s "bd <arpy arpy:1 arpy:2>" -- Two sounds: -- Silence/rest with '~' -- sample number d1 $ sound "drum kurt" # n "0 1 2" d1 $ s "bd hh ~ ~ mt ~ kurt:2 ~" -- repeat with ! d1 $ n "[0 1 [~ 0] 1,2*4 2*8]" -- Three sounds d1 $ s "bd!3 sd" # s "drum" d1 $ n "0 1 2" # sound "drum kurt" -- Sub-sequence with [] d1 $ s "bd ~ [bd sd mt] mt"- -- drop out randomly -- vowel filter -- You can add patterns together d1 $ s "bd sd? mt? lt" d1 $ vowel "a o e*2 i" # sound d1 $ n ("0 5*2 7" + "<0 3 5>") --- More than one at the same time: "drum" # s "supermandolin" d1 $ s "[ht mt lt, arpy kurt]" -- Distribute 3 events over 8 steps d1 $ s "bd(3,8)" -- Combine multiple controls -- Or even add control patterns: -- Curlies for stepwise polyrhythm: -- 'Euclidian rhythms', same as: d1 $ note "1 [2 7] 4 5" d1 $ n "0 5*2 7" # s "supermandolin" d1 $ s "{sd mt, arpy arpy:1 arpy:2}" d1 $ s "bd ~ ~ bd ~ ~ bd ~" # sound "jungbass:6" + n "<0 3 5>" # legato 1 # crush "3 2"