├── old └── intro.md ├── sixpage.tidal ├── tidal-sheet.pdf ├── tidal-sheet.svg └── workshop.tidal /old/intro.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | Write the following line and evaluate it (Ctrl+Enter) 4 | 5 | ```haskell 6 | sound "bd" 7 | ``` 8 | 9 | You should hear a bass drum. Now try changing (and re-evaluating) the 10 | line of code. Some sounds you could try: 11 | 12 | ``` 13 | flick sid can metal future gabba sn mouth gretsch mt arp h cp newnotes 14 | bass hc bass0 hh bass1 bass2 oc bass3 ho odx diphone2 house off ht 15 | tink perc bd industrial pluck trump printshort jazz voodoo birds3 16 | procshort blip drum jvbass psr wobble drumtraks koy rave ravebass 17 | bottle kurt latibro rm sax lighter lt arpy feel less stab ul casio 18 | ``` 19 | 20 | To stop the sound evaluate: 21 | 22 | ```haskell 23 | silence 24 | ``` 25 | 26 | (or press ctrl-.) 27 | 28 | Each of these names stands for a sets of sounds. You can pick 29 | different sounds from a set by using `:` and a number, for example for 30 | the third 'arpy' sound: 31 | 32 | ```haskell 33 | sound "arpy:2" 34 | ``` 35 | 36 | (you start counting at `0` for the first sound) 37 | 38 | Ok lets start sequencing sounds: 39 | 40 | ```haskell 41 | sound "arpy:1 arpy:2 arpy:3" 42 | ``` 43 | 44 | All the sounds in a sequence are played in one cycle. 45 | 46 | ```haskell 47 | sound "bd sn" 48 | 49 | sound "bd sn hh cp mt arpy drum" 50 | 51 | sound "bd sn hh cp mt arpy drum odx bd arpy bass2 feel future" 52 | ``` 53 | 54 | If things get too intense we can slow things down with a function 55 | called `slow`: 56 | 57 | ```haskell 58 | slow 4 (sound "bd sn hh cp mt arpy drum odx bd arpy bass2 feel future") 59 | ``` 60 | 61 | We can add rests in our sequence with `~`: 62 | 63 | ```haskell 64 | slow 2 (sound "arpy:1 ~ arpy:3") 65 | ``` 66 | 67 | So far the sounds in our sequences have been evenly distributed.. But 68 | we can break things up. 69 | 70 | We can take a step in a pattern and break it down into a subpattern like this: 71 | 72 | ```haskell 73 | sound "[bd sn] hh" 74 | ~~~ 75 | 76 | The square brackets group the samples inside in one single step of the cycle. 77 | 78 | We can start nesting patterns to create complexity from simplicity! 79 | 80 | ```haskell 81 | sound "[bd bd] bd [sn sn sn] sn sn]" 82 | ``` 83 | 84 | We can also create polyrhythms by using commas: 85 | 86 | ```haskell 87 | sound "[hh hh, arpy arpy:1 arpy:2]" 88 | ``` 89 | 90 | Adding as many layers as we want: 91 | 92 | ```haskell 93 | sound "[hh, sn cp sn, arpy:4 arpy:2, odx, ~ cp]" 94 | ``` 95 | 96 | We can mix square brackets and commas too: 97 | 98 | ```haskell 99 | sound "[hh, [sn*2] cp sn, arpy:4 arpy:2, arpy [arpy:4 [arpy:1 arpy:2] arpy:3 arpy], odx, ~ cp]" 100 | ``` 101 | 102 | Asterisks are multipliers and can be used to repeat the same step as 103 | many times we want: 104 | 105 | 106 | ```haskell 107 | sound "bd*8 bd*3" 108 | ``` 109 | 110 | We can also divide using `/`, the sample is then played half as often, 111 | in this case: 112 | 113 | ```haskell 114 | sound "bd bd/2" 115 | ``` 116 | 117 | ## FUNCTIONS! 118 | 119 | We can reverse a pattern with rev ... 120 | 121 | ```haskell 122 | rev (sound "[[bd sn] cp]") 123 | ``` 124 | 125 | ... or only sometimes ... 126 | 127 | ```haskell 128 | sometimes rev (sound "[[bd sn] cp]") 129 | ``` 130 | 131 | ... or every 2 cycles ... 132 | 133 | ```haskell 134 | every 2 rev (sound "[[bd sn] cp]") 135 | ``` 136 | 137 | ... or only in one speaker. 138 | 139 | ```haskell 140 | jux rev (sound "[[bd sn] cp]") 141 | ``` 142 | 143 | We can slow or speed a pattern with `slow` or `density`: 144 | 145 | ```haskell 146 | density 2 (sound "[[bd sn] cp]") 147 | 148 | every 2 (density 2) (sound "[[bd sn] cp]") 149 | ``` 150 | 151 | We can also pattern sound effects: 152 | 153 | ```haskell 154 | sound "bd sn*2 bd*3" 155 | # vowel "a e" 156 | # speed "2" 157 | ``` 158 | 159 | That's probably enough for this workshop, but there is more! See 160 | http://tidalcycles.org/ 161 | 162 | You'll see examples on the website are prefixed by something like `d1 163 | $` to select a 'pattern stream' - this isn't used in the interface 164 | you're using. 165 | -------------------------------------------------------------------------------- /sixpage.tidal: -------------------------------------------------------------------------------- 1 | TidalCycles 2 | 3 | Little book of patterns 4 | 5 | 6 | Mini-notation (in double quotes) 7 | 8 | -- Four sounds in a cycle: 9 | d1 $ sound "bd hh sd cp" 10 | 11 | -- Six sounds in a cycle: 12 | d1 $ s "bd hh sd cp arpy kurt" 13 | 14 | -- Silence/rest with '~' 15 | d1 $ s "bd hh ~ ~ mt ~ kurt:2 ~" 16 | 17 | -- Sub-sequence with [] 18 | d1 $ s "bd ~ [bd sd mt] mt"- 19 | 20 | --- More than one at the same time: 21 | d1 $ s "[ht mt lt, arpy kurt]" 22 | 23 | -- Curlies for stepwise polyrhythm: 24 | d1 $ s "{sd mt, arpy arpy:1 arpy:2}" 25 | 26 | -- speed up a step with * 27 | d1 $ s "bd sd*2 ~ [cp arpy]*2" 28 | 29 | -- slow down with / 30 | d1 $ s "bd sd/2 ~ [cp arpy ht lt]/2" 31 | 32 | -- pick one per cycle 33 | d1 $ s "bd " 34 | 35 | -- repeat with ! 36 | d1 $ s "bd!3 sd" 37 | 38 | -- drop out randomly 39 | d1 $ s "bd sd? mt? lt" 40 | 41 | -- Distribute 3 events over 8 steps 42 | d1 $ s "bd(3,8)" 43 | -- 'Euclidian rhythms', same as: 44 | d1 $ s "bd ~ ~ bd ~ ~ bd ~" 45 | 46 | 47 | Pattern all the things 48 | 49 | sound (or just s) patterns sample set or synth. There is much more to pattern! 50 | 51 | ctrl-enter to run multiline patterns 52 | 53 | -- sample number 54 | d1 $ n "[0 1 [~ 0] 1,2*4 2*8]" 55 | # s "drum" 56 | 57 | -- vowel filter 58 | d1 $ vowel "a o e*2 i" # sound "drum" 59 | 60 | -- Combine multiple controls 61 | d1 $ note "1 [2 7] 4 5" 62 | # sound "jungbass:6" 63 | # legato 1 # crush "3 2" 64 | 65 | -- Howabout a sine wave on gain: 66 | d1 $ sound "bd*32" # gain sine 67 | 68 | -- Or randomised panning: 69 | d1 $ sound "bd*4" # pan rand 70 | 71 | -- '#' takes structure from the left 72 | -- Two sounds: 73 | d1 $ sound "drum kurt" # n "0 1 2" 74 | -- Three sounds 75 | d1 $ n "0 1 2" # sound "drum kurt" 76 | 77 | -- You can add patterns together 78 | d1 $ n ("0 5*2 7" + "<0 3 5>") 79 | # s "supermandolin" 80 | 81 | -- Or even add control patterns: 82 | d1 $ n "0 5*2 7" # s "supermandolin" 83 | + n "<0 3 5>" 84 | 85 | Functions for manipulating time, sound and space 86 | 87 | -- reverse 88 | d1 $ rev $ n "0 1 2 3" # s "arpy" 89 | 90 | -- successively shift time 91 | d1 $ iter 4 $ n "0 1 2 3" # s "arpy" 92 | 93 | -- make faster 94 | d1 $ fast 4 $ n "0 1 2 3" # s "arpy" 95 | 96 | -- make faster and pitch up 97 | d1 $ hurry 4 $ n "0 1 2" # s "arpy" 98 | 99 | -- lets pattern that 100 | d1 $ fast "2 3" $ n "0 1 2 3" 101 | # s "arpy" 102 | 103 | -- chop up samples, reverse the bits 104 | d1 $ rev $ chop 8 $ n "0 [2 1] 4 3" 105 | # s "cp speakspell" 106 | 107 | Higher order functions 108 | Passing functions to functions 109 | 110 | -- apply function in one speaker/ear 111 | d1 $ jux rev $ chop 8 $ 112 | n "0 [2 1] 4*2 3" # s "speakspell" 113 | 114 | -- apply function every 'n' cycles 115 | d1 $ every 3 (fast 2) $ 116 | n "0 2 [~ 1] 5" # s "speakspell" 117 | 118 | -- apply offset, on top of original 119 | d1 $ off 0.125 (+ note 7) $ 120 | note "0 3 7 12" # s "gtr" 121 | 122 | -- join functions together with . 123 | d1 $ every 2 (rev . chop 8) $ 124 | s "bd sd" 125 | 126 | see tidalcycles.org for many more functions! 127 | 128 | Operator re-cap: 129 | 130 | # join two control patterns (taking triggers from the left) 131 | 132 | $ resolve what's on the right, and give it as a value to the function on the left. These are the same: 133 | d1 $ rev $ s "bd sn" 134 | d1 $ rev (s "bd sn") 135 | 136 | Links 137 | Home: tidalcycles.org 138 | Chat channels: chat.toplap.org 139 | Forum: forum.toplap.org 140 | 141 | See also 142 | * toplap.org 143 | * algorave.com 144 | * iclc.livecodenetwork.org 145 | -------------------------------------------------------------------------------- /tidal-sheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tidalcycles/tidal-workshop/bec8013723962de468e17bc62dce6f8f16f8971c/tidal-sheet.pdf -------------------------------------------------------------------------------- /tidal-sheet.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 20 | 22 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 59 | 62 | 69 | 71 | 80 | Little book of patterns 105 | 110 | 115 | 116 | 117 | 119 | 126 | 135 | Functions for manipulating time, sound and space-- reversed1 $ rev $ n "0 1 2 3" # s "arpy"-- successively shift timed1 $ iter 4 $ n "0 1 2 3" # s "arpy"-- make fasterd1 $ fast 4 $ n "0 1 2 3" # s "arpy"-- make faster and pitch upd1 $ hurry 4 $ n "0 1 2" # s "arpy"-- lets pattern thatd1 $ fast "2 3" $ n "0 1 2 3" # s "arpy"-- chop up samples, reverse the bitsd1 $ rev $ chop 8 $ n "0 [2 1] 4 3" # s "cp speakspell" 199 | 201 | 208 | 217 | 226 | Higher order functionsPassing functions to functions-- apply function in one speaker/eard1 $ jux rev $ chop 8 $ n "0 [2 1] 4*2 3" # s "speakspell"-- apply function every 'n' cyclesd1 $ every 3 (fast 2) $ n "0 2 [~ 1] 5" # s "speakspell"-- apply offset, on top of originald1 $ off 0.125 (+ note 7) $ note "0 3 7 12" # s "gtr"-- join functions together with .d1 $ every 2 (rev . chop 8) $ s "bd sd"see tidalcycles.org for many more functions! 284 | 287 | 294 | 296 | 305 | 314 | Operator re-cap:# join two control patterns (taking triggers from the left)$ resolve what's on the right, and give it as a value to the function on the left. These are the same:d1 $ rev $ s "bd sn"d1 $ rev (s "bd sn")LinksHome: tidalcycles.orgChat channels: chat.toplap.orgForum: forum.toplap.orgSee also* toplap.org* algorave.com* iclc.livecodenetwork.org 366 | 367 | 616 | -- Howabout a sine wave on gain:d1 $ sound "bd*32" # gain sine-- Or randomised panning:d1 $ sound "bd*4" # pan rand-- '#' takes structure from the left-- Two sounds:d1 $ sound "drum kurt" # n "0 1 2"-- Three soundsd1 $ n "0 1 2" # sound "drum kurt"-- You can add patterns togetherd1 $ n ("0 5*2 7" + "<0 3 5>") # s "supermandolin" -- Or even add control patterns:d1 $ n "0 5*2 7" # s "supermandolin" + n "<0 3 5>" 774 | -- speed up a step with *d1 $ s "bd sd*2 ~ [cp arpy]*2"-- slow down with /d1 $ s "bd sd/2 ~ [cp arpy ht lt]/2"-- pick one per cycled1 $ s "bd <arpy arpy:1 arpy:2>"-- repeat with !d1 $ s "bd!3 sd"-- drop out randomlyd1 $ s "bd sd? mt? lt"-- Distribute 3 events over 8 stepsd1 $ s "bd(3,8)"-- 'Euclidian rhythms', same as:d1 $ s "bd ~ ~ bd ~ ~ bd ~" 932 | Pattern all the thingssound (or just s) patterns sample set or synth. There is much more to pattern!ctrl-enter to run multiline patterns-- sample numberd1 $ n "[0 1 [~ 0] 1,2*4 2*8]" # s "drum"-- vowel filterd1 $ vowel "a o e*2 i" # sound "drum"-- Combine multiple controls d1 $ note "1 [2 7] 4 5" # sound "jungbass:6" # legato 1 # crush "3 2" 1250 | 1307 | Mini-notation (in double quotes)-- Four sounds in a cycle:d1 $ sound "bd hh sd cp"-- Six sounds in a cycle:d1 $ s "bd hh sd cp arpy kurt"-- Silence/rest with '~'d1 $ s "bd hh ~ ~ mt ~ kurt:2 ~"-- Sub-sequence with []d1 $ s "bd ~ [bd sd mt] mt"---- More than one at the same time:d1 $ s "[ht mt lt, arpy kurt]"-- Curlies for stepwise polyrhythm:d1 $ s "{sd mt, arpy arpy:1 arpy:2}" 1609 | 1706 | 1707 | -------------------------------------------------------------------------------- /workshop.tidal: -------------------------------------------------------------------------------- 1 | t-- TidalCycles workshop worksheet 2 | 3 | -- By Lucy Cheesman, Richard Eason, Alex McLean with inspiration 4 | -- from Alexandra Cardenas 5 | -- CC BY-SA 4.0 - https://creativecommons.org/licenses/by-sa/4.0/ 6 | -- Suggestions and edits/patches welcome 7 | 8 | -- * Make a sound 9 | 10 | d1 $ sound "arpy" 11 | 12 | -- * Stop making a sound by replacing with silence 13 | 14 | d1 silence 15 | 16 | -- * Pick a different sound from the same set, with ':' 17 | 18 | d1 $ sound "arpy:1" 19 | 20 | -- * Explore more sounds: 21 | 22 | -- flick sid can metal future gabba sn mouth co gretsch mt arp h cp cr 23 | -- newnotes bass hc tabla bass0 hh bass1 bass2 oc bass3 ho odx 24 | -- diphone2 house off ht tink perc bd industrial pluck trump 25 | -- printshort jazz voodoo birds3 procshort blip drum jvbass psr wobble 26 | -- drumtraks koy rave bottle kurt latibro rm sax lighter lt arpy feel 27 | -- less stab ul 28 | 29 | -- * Where do these sounds come from? How do I add more? 30 | 31 | -- In the menus in SuperCollider (not atom): 32 | -- - File > Open user support directory > downloaded-quarks > Dirt-Samples 33 | 34 | -- * Make a sequence 35 | 36 | d1 $ sound "bd hh sn hh" 37 | 38 | -- * Add a silence/rest in a sequence with '~' 39 | 40 | d1 $ sound "bd ~ sn:3 bd sn:5 ~ bd:2 sn:2" 41 | 42 | -- * The longer the sequence, the faster it runs 43 | 44 | d1 $ sound "bd bd hh bd sn bd hh bd" 45 | 46 | -- * Play more than one sequence at once with d1 ... d9 47 | 48 | d2 $ sound "sn [sn:2 sn] bd sn" 49 | 50 | -- * Change the global cycles per second (equivalent to BPM) 51 | 52 | cps 0.6 53 | 54 | -- * Pause everything (remember to put negative numbers in parenthesis) 55 | 56 | cps (-1) 57 | 58 | -- * Start again 59 | 60 | cps 0.6 61 | 62 | -- * Hush stops makes everything silent at once 63 | 64 | hush 65 | 66 | -- * Effects 67 | 68 | -- ** vowel 69 | 70 | d1 $ sound "drum drum drum drum" # vowel "a o" 71 | 72 | -- The 'structure' comes from the left - try swapping the parameters 73 | 74 | d1 $ vowel "a o ~ i" # sound "drum" 75 | 76 | -- ** gain 77 | 78 | d1 $ sound "bd hh sn:1 hh sn:1 hh" # gain "1 0.7 0.5" 79 | 80 | -- 'sine1' is a continuous pattern following a sine curve from 0 to 1 and back 81 | 82 | d1 $ sound "bd*32" # gain sine1 83 | 84 | -- ** 'speed' and up 85 | 86 | -- speed of playback, e.g. 2 = up an octave 87 | d1 $ speed "1 2 4" # sound "jungbass:6" 88 | 89 | -- up - semitones, e.g. 12 = up an octave 90 | d1 $ up "0 ~ 12 24" # sound "jungbass:6" 91 | 92 | d1 $ sound "numbers:1 numbers:2 numbers:3 numbers:4" 93 | 94 | d1 $ sound "numbers:1 numbers:2 numbers:3 numbers:4" # speed "1 1.5 2 0.5" 95 | 96 | -- ** pan - 0 = left, 0.5 = middle, 1 = right 97 | d1 $ sound "numbers:1 numbers:2 numbers:3 numbers:4" # pan "0 0.5 1" 98 | 99 | -- We can use * to repeat a step, e.g. this plays 16 kick drums per cycle, 100 | -- panned from left to right following a sine curve, pitched right up: 101 | 102 | d1 $ sound "drum*16" # pan sine1 # speed "4" 103 | 104 | -- ** shape - distortion (careful - also makes the sound much louder) 105 | 106 | d1 $ sound "kurt:4 kurt:4" # shape "0 0.78" # gain "0.7" 107 | 108 | -- * feeling brave ? 109 | 110 | -- http://tidalcycles.org/patterns.html#effects 111 | 112 | -- delay / delaytime / delayfeedback 113 | -- cutoff / resonance 114 | -- room / size 115 | 116 | -- * Subsequences 117 | 118 | -- Fit a subsequence into a step with square brackets: 119 | 120 | d1 $ sound "bd [bd cp] bd bd" 121 | 122 | -- This can make for flexible time signatures: 123 | 124 | d1 $ sound "[bd bd sn:5] [bd sn:3]" 125 | 126 | -- You can put subsequences inside subsequences: 127 | d1 $ sound "[[bd bd] bd sn:5] [bd sn:3]" 128 | 129 | -- Keep going.. 130 | d1 $ sound "[[bd [bd bd bd bd]] bd sn:5] [bd sn:3]" 131 | 132 | -- * Polymetric / polyrhythmic sequences 133 | 134 | -- Play two subsequences at once by separating with a comma: 135 | 136 | d1 $ sound "[voodoo voodoo:3, arpy arpy:4 arpy:2]" 137 | 138 | -- compare how [,] and {,} work: 139 | 140 | d1 $ sound "[voodoo voodoo:3, arpy arpy:4 arpy:2]" 141 | 142 | d1 $ sound "{voodoo voodoo:3, arpy arpy:4 arpy:2}" 143 | 144 | d1 $ sound "[drum bd hh bd, can can:2 can:3 can:4 can:2]" 145 | 146 | d1 $ sound "{drum bd hh bd, can can:2 can:3 can:4 can:2}" 147 | 148 | d1 $ sound "[bd sn, can:2 can:3 can:1, arpy arpy:1 arpy:2 arpy:3 arpy:5]" 149 | 150 | d1 $ sound "{bd sn, can:2 can:3 can:1, arpy arpy:1 arpy:2 arpy:3 arpy:5}" 151 | 152 | -- * What is pattern, anyway? 153 | 154 | -- Lets think about different kinds of pattern and how Tidal can 155 | -- represent them 156 | 157 | -- ** cyclic / repetitive 158 | 159 | d1 $ n "0 1 2 3" # sound "arpy" 160 | 161 | d1 $ n (run 4) # sound "arpy" 162 | 163 | -- ** symmetry 164 | 165 | -- compare these: 166 | 167 | d1 $ slow 2 $ n "0 1 2 3 3 2 1 0" # sound "arpy" 168 | 169 | d1 $ palindrome $ n (run 4) # sound "arpy" 170 | 171 | -- ** self similarity 172 | 173 | d1 $ slow 4 $ n "[0 1 2 3] [0 1 2 3]*2 [0 1 2 3]*4 [0 1 2 3]*8" # sound "arpy" 174 | 175 | d1 $ slowspread (density) [1,2,4,8] $ n "0 1 2 3" # sound "arpy" 176 | 177 | -- ** interference 178 | 179 | -- There's a lot of ways of making patterns interfere with each other, e.g. 180 | -- polyrhythm: 181 | 182 | d1 $ sound "{arpy arpy:2 arpy:4, arpy:5 arpy:0}" 183 | 184 | -- A canon / round 185 | d1 $ jux rev $ weave 16 (n (run 8) # sound "arpy") 186 | [vowel "a e i", 187 | vowel "e i*2 o u", 188 | speed "1 1.5 ~ 1", 189 | speed "2 1 0.5" 190 | ] 191 | 192 | -- transforming sequences 193 | 194 | -- slow 195 | 196 | d1 $ sound "arpy arpy:1 arpy:2 arpy:3" 197 | 198 | d1 $ slow 2 $ sound "arpy arpy:1 arpy:2 arpy:3" 199 | 200 | -- density 201 | d1 $ density 2 $ sound "arpy arpy:1 arpy:2 arpy:3" 202 | 203 | -- density 2 is the same as slow 0.5 .. 204 | d1 $ slow 0.5 $ sound "arpy arpy:1 arpy:2 arpy:3" 205 | 206 | -- Reversing 207 | 208 | d1 $ rev $ sound "arpy arpy:1 arpy:2 arpy:3" 209 | 210 | -- iter 211 | 212 | d1 $ iter 4 $ sound "arpy arpy:1 arpy:2 arpy:3" 213 | 214 | -- every 215 | 216 | -- every fourth cycle, make twice as dense: 217 | 218 | d1 $ every 4 (density 2) $ sound "arpy arpy:1 arpy:2 arpy:3" 219 | 220 | -- Feeling brave? More than one transformation is possible 221 | 222 | d1 $ jux (rev . (slow 1.5)) $ sound "arpy arpy:1 arpy:2 arpy:3" 223 | 224 | -- slowspread 225 | 226 | -- cycles through a list of parameters: 227 | d1 $ slowspread (density) [2, 1.5, 4, 16] $ sound "bd sn:2 hh sn:1" 228 | 229 | -- slowcat 230 | 231 | d1 $ slowcat [sound "bd sn:3", 232 | sound "arpy can arpy:3 can" 233 | ] 234 | 235 | -- stack 236 | 237 | d1 $ stack [sound "bd sn:3", 238 | sound "arpy can arpy:3 can" 239 | ] 240 | 241 | -- * Transforming effect sequences 242 | 243 | -- Everything is a pattern! 244 | 245 | d1 $ sound (density 2 "arpy arpy:1 arpy:2 arpy:3") 246 | # speed (every 2 (density 2) "1 2 3 4") 247 | 248 | -- * Longer samples and 'granular synthesis' 249 | 250 | -- ** chop 251 | 252 | d1 $ sound "bev" 253 | 254 | -- when you hush, it keeps playing through: 255 | hush 256 | 257 | -- chop it into bits: 258 | d1 $ chop 32 $ sound "bev" 259 | 260 | -- slow it down to fit 8 cycles: 261 | d1 $ loopAt 8 $ chop 128 $ sound "bev" 262 | 263 | -- ** transform the grain pattern: 264 | 265 | d1 $ rev $ loopAt 8 $ chop 128 $ sound "bev" 266 | 267 | -- ** striate vs chop 268 | 269 | d1 $ slow 4 $ chop 4 $ sound "arpy:1 arpy:2 arpy:3 arpy:4" 270 | 271 | d1 $ slow 4 $ striate 4 $ sound "arpy:1 arpy:2 arpy:3 arpy:4" 272 | 273 | -- * Arbitrariness and 'random numbers' 274 | 275 | -- ** randslice 276 | 277 | d1 $ randslice 32 $ sound "bev" 278 | 279 | -- ** random sample 280 | 281 | d1 $ sound "arpy*8" # n (irand 16) 282 | 283 | -- ** sometimes 284 | 285 | d1 $ sometimes (# speed "2") $ sound "drum*8" 286 | 287 | -- ** often 288 | 289 | d1 $ often (# speed "2") $ sound "drum*8" 290 | 291 | -- ** degrade 292 | 293 | d1 $ degrade $ sound "bd sn cp sn:2" 294 | 295 | -- ** Use ? to make sounds optional.. 296 | 297 | d1 $ sound "bd sn:2? bd sn?" 298 | 299 | -- Some more complex examples: 300 | 301 | 302 | d1 $ spin (3) $ smash 4 [1,0.5,0.25,2] $ sound "odx*4" 303 | |+| speed "0.5" 304 | 305 | -- Weave vocal strands 306 | d1 $ weave' 16 ((slow 16 $ striate' 128 (1/64) $ sound "bev*2") |+| pan sine1) 307 | [(vowel "a e i o u" |+|), 308 | (vowel "i e p u" |+|), 309 | (speed "1 1.5 0.5" |+|)] 310 | 311 | -- pour the wine 312 | d1 $ stack [slow 4 $ every 2 (rev) $ slow 32 $ striate 256 $ sound "[bev]*6" 313 | |+| pan "1", 314 | slow 2 $ every 2 (rev) $ slow 32 $ striate 256 $ sound "[bev]*4" 315 | |+| pan "0"] 316 | 317 | -- Weave kicks 318 | d1 $ jux (density 1.5) $ weave 16 (shape (scale 0 0.8 sine1)) (map (every 4 rev) $ 319 | [sound "bd8(3,8)", sound "drum(5,8)"]) 320 | |+| speed "1" 321 | |+| accelerate "-1" 322 | 323 | -- plastik 324 | d1 $ weave 16 (speed (scale 1 1.4 sine1)) [jux (iter 8) $ sound "sd8:4*4", 325 | jux (iter 4) $ sound "bd*2", 326 | jux (iter 3) $ sound "sd8:3*4"] 327 | 328 | d2 $ weave 32 (speed (scale 0.9 1.6 sine1)) [jux (iter 8) $ sound "sd8:4*4", 329 | jux (iter 4) $ sound "bd*2", 330 | jux (iter 3) $ sound "sd8:3*4"] 331 | 332 | -- scrape it 333 | d1 $ sometimes rev $ slowspread (stut 4 1) [0.03,0.1, 0.2, 0.01] $ jux (|+| speed "4") $ every 2 (density 2) $ 334 | sound "bd8*2" 335 | |+| shape "0.5" 336 | 337 | -- rissetesque rise, try replacing (rev) with (iter 4) 338 | d1 $ jux (rev) $ weave 16 (sound (samples "arpy*8" (run 8))) 339 | [vowel "a e o", 340 | vowel "a e o i", 341 | vowel "o i a o i", 342 | speed "2 3 1", 343 | speed "-0.75 -0.5"] 344 | 345 | -- shackup cut up 346 | d1 $ jux (iter 4) $ weave 16 (chop 32 $ sound "shackup") [vowel "a e o" |+| speed "2", 347 | speed "2 3 1 0.5", 348 | crush "[8 4 5 8]*2"] 349 | 350 | -- additive rhythm 351 | d1 $ sound (samples "[sd8, jvbass]*8" (slow 8 $ scan 8)) 352 | 353 | -- additive rhythm + woven parameters 354 | d1 $ weave' 4 (sound (samples "[sd8, ht8]*8" (slow 8 $ scan 8))) 355 | [(|+| speed "1 2 3"), 356 | chop 8 . (pan "0 0.25 0.5 0.75" |+|)] 357 | 358 | -- move densities between sounds 359 | d1 $ jux (iter 4) $ spread' density (iter 4 "1 8 2 4") $ sound "bd sd8:2 bd sd8" 360 | 361 | -- every four times, twice as fast, every other of those, reversed 362 | d1 $ every 4 (every 8 (rev) . density 2) $ brak $ sound "drum drum:1" 363 | |+| shape "0.8" 364 | |+| speed "2" 365 | 366 | -- Do something random twice, and it stops sounding random 367 | let e'' c a b = e a b c in 368 | d1 $ jux (1 <~) $ sound $ unwrap ((e'' (samples "bd sd8" (irand 16))) <$> "[3 6 2 8 4 3]/6" <*> "[8 4 16 12]/4") 369 | 370 | -- is it on or off? 371 | d1 $ smash 4 [1,2,3,4] $ sound "onoff onoff:3" 372 | 373 | -- broken dub 374 | d1 $ every 2 (slowspread (chop) [2,4,8,16]) 375 | $ slowspread ($) [density 2, rev, iter 4, density 1.5] 376 | $ sound (samples "feel less" (slow 16 $ scan 16)) 377 | 378 | -- random gabber offsets 379 | d1 $ jux (spread' (<~) (toRational <$> rand)) $ sound (samples "gab*2" (slow 8 $ run 8)) 380 | 381 | -- round we go 382 | d1 $ slowspread (stut 3 1) ([0.001, 0.005 .. 0.01]) $ jux (iter 8) $ sound "bd sn:2 sn drum:1" 383 | 384 | -- comb rave 385 | d1 $ (every 3 (density 1.5) $ sound (pick <$> "bd [sn rave2]" <*> ((floor . (*12)) <$> rand))) 386 | |+| speed (slow 4 $ (+1) <$> sine1) 387 | |+| delay "1" 388 | |+| delayfeedback "0.7" 389 | |+| delaytime "[0.02 0.01 0.03 0.02]/4" 390 | 391 | -- nobakazu takemura 392 | 393 | d1 $ stack [slow 2 $ jux (whenmod 6 4 (density 2)) $ brak $ sound (samples "newnotes newnotes" (slow 8 $ run 9)) 394 | |+| speed "[1,2 4 3]/4", 395 | slow 2 $ (1/32) <~ (rev $ brak $ sound (samples "newnotes newnotes newnotes" (slow 8 $ run 12)) 396 | |+| speed "[1,2 4 8]/4")] 397 | 398 | -- kitchen techno 399 | d1 $ every 2 (density 2) $ stack [sound "{jungbass*3 jungbass:1*4, jungbass:5 [east*3 east:3*2] east:2*4}" 400 | |+| speed "[2 1 3]/2" 401 | |+| shape "0.5", 402 | every 3 (density 2) $ every 2 (jux rev) $ sound (samples "east*8" "{1 2 3, 4 5 6 7, 8 9 10 11 12}") 403 | |+| speed "[2 1]/2" 404 | |+| end "0.2"] 405 | 406 | -- What he said 407 | d1 $ weave 16 (shape $ ((* 0.6) <$> sinewave1)) 408 | [slow 2 $ striate 32 (sound $ samples "diphone2/1 diphone2 diphone2/5" (irand 16)) 409 | |+| speed ((+ 0.8) . (* 0.05) <$> sinewave1), 410 | (1%8) <~ (slow 8 $ striate 16 (sound "diphone2/0 diphone2/3*2 diphone2/4") 411 | |+| speed ((+ 0.9) . (* 0.05) <$> sinewave1))] 412 | 413 | -- bossanova 414 | d1 $ slow 2 $ sound $ pick <$> "[casio]*8" <*> "1 0 2 0 1 0 2 2" 415 | 416 | -- difficult gabber 417 | d1 $ stut 8 0.7 (-(1/8))$ superimpose (iter 4) $ sound "[gabbalouder*2 gabba*3 less*2]/3 hc" 418 | |+| speed "[4 3 24 4]/5" 419 | 420 | -- drum solo 421 | d1 $ stack [slowspread density [1,64,1,4,1,3,1,12] $ striate 8 $ sound "[bd sn/2 [~ bd] sn/2]/4" 422 | |+| speed "0.9" 423 | |+| pan "1", 424 | slowspread density [1,128,1,4,1,3,1,12] $ striate 4 $ sound "[bd sn/2 [~ bd] sn/2]/4" 425 | |+| speed "0.9" 426 | |+| pan "0"] 427 | 428 | -- kicks are all around 429 | d1 $ every 3 (iter 4) $ jux (slow 2 . rev) $ slow 2 $ brak $ sound "bd*16 drum*8 bd*12 drum*12" 430 | 431 | -- breaks 432 | d1 $ every 2 (slow 2) $ (juxcut (rev . iter 8) $ every 4 (0.25 <~) $ striate 4 $ sound "[breaks165, breaks125]") 433 | |+| speed "[2 1 1]/2" 434 | 435 | -- unbelievable 436 | d1 $ weave 32 (crush (scale 2 4 sine1)) $ 437 | [jux rev $ slowspread ($) [id, iter 8] $ sound "bd ~ sn:2*3?", 438 | every 2 (|+| vowel "a") $ jux rev $ iter 4 $ chop 128 $ sound "breaks165" 439 | |+| gain "1", 440 | spin 2 $ slow 4 $ chop 16 $ superimpose (slowspread (<~) [0.25, 0.75]) $ 441 | sound "bass3 bass3:3" 442 | |+| shape "0.6" 443 | |+| speed "[2, -2.03]", 444 | palindrome . chop 8 $ jux (2 <~) $ 445 | sound (pick <$> "h*4" <*> (slow 8 $ floor <$> scale 0 16 sine1)) 446 | |+| speed "0.7"] 447 | 448 | -- cut pulse 449 | d1 $ every 4 (const (sound "feel:2")) $ superimpose (iter 4) $ stut 4 0.9 (1/4) $ every 4 rev $ striate 4 $ sound "[[bd*4, can] [bass3:2, can:2]]/2" 450 | |+| speed "4" 451 | 452 | -- up and down 453 | d1 $ every 3 (slow 1.5) $ every 2 (density 1.5) $ (density 2 $ striate 32 $ sound "wobble wobble wobble wobble") 454 | |+| speed "2 8 ~ 5" 455 | 456 | -- jolly old rave 457 | d1 $ superimpose (iter 4) $ sound "feel [rave2 rave2:4]/2 feel:2 ~" 458 | |+| speed "[1 2 3 2]/4" 459 | 460 | -- very quiet nibbling 461 | d1 $ superimpose (iter 8) $ sound "chin*4 chin*3 ~ chin*4" 462 | 463 | -- roll over 464 | d1 $ every 2 (smash 4 [1,2,3,4]) $ sound "bd8:4 ~ sd8 bd8:2*2 bd8:4 ~ [~ bd] sn" 465 | 466 | -- err 467 | d1 $ every 2 (slow 2) $ stut 5 0.9 (1/16) $ every 4 (0.25 <~) $ jux (iter 4) $ slow 2 $ sound "{bd bd bd ~ , cp [~ sn:2] [kurt:4 kurt:8]}" 468 | |+| gain "0.9" 469 | |+| end "0.2" 470 | 471 | -- soft cell gabber remix 472 | d1 $ slowspread ($) [iter 8, rev, density 2, slow 2] $ jux (rev) $ every 3 (|+| speed "2") $ every 2 (striate 4) $ sound "if if:2 if:3 ~" 473 | |+| speed "8" 474 | 475 | -- slightly electroacoustic dnb intro 476 | d1 $ slowspread ($) [rev, (|+| speed "[0.5]"), density 2, (|+| speed "[1,2]")] $ every 3 (|+| vowel "a e") $ every 4 (|+| speed "0.25") $ jux (rev) $ slow 4 $ striate 16 $ sound "pad:3" 477 | |+| speed "0.5" 478 | |+| gain "0.8" 479 | 480 | -- tap 481 | d1 $ stut 4 0.9 (-3) $ slowspread ($) [id, density 2, iter 8, density 3] $ jux (|+| speed "1.3") $ slow 2 $ sound "bd8*2 sd8" 482 | |+| shape "0.2" 483 | |+| speed "[1.2 3]/2" 484 | 485 | -- walking 486 | d1 $ stack [slow 2 $ every 4 (density 2) $ jux (iter 8) $ sound (pick <$> "bass3*2 bass3" <*> (slow 3 $ "1 2 3 4 5")) 487 | |+| speed "2" 488 | |+| vowel (every 3 rev "a e"), 489 | brak $ every 3 (slow 2) $ jux (iter 4) $ sound (pick <$> "jvbass*2 jvbass*3" <*> (slow 3 $ "1 2 3 4 5")) 490 | |+| speed "2" 491 | |+| shape "0.7" 492 | |+| vowel (every 3 rev "a e")] 493 | 494 | -- itch no more 495 | d1 $ every 4 (rev . chop 8) $ superimpose (iter 4) $ 496 | every 2 (slow 2) $ stack [sound (samples "lt8(3,8)" (slow 10 $ scan 12)) |+| speed "1" |+| pan "0", 497 | sound (samples "bd8(5,8)" (slow 12 $ scan 12)) |+| speed "0.9" |+| pan "1"] 498 | |+| delay "0.9" 499 | |+| delaytime "0.02 0.01" 500 | 501 | -- here we are and there we are 502 | d1 $ every 2 rev $ striate 16 $ sound "[tabla tabla:2]" 503 | |+| speed (slow 4 $ (+0.4) <$> sine1) 504 | 505 | -- clapclap 506 | d1 $ every 2 (density 2) $ every 3 (rev) $ superimpose (iter 8) $ sound "bd ~ sn:2 cp" 507 | |+| speed "[1 2]/2" 508 | 509 | -- rasp 510 | d1 $ spin 2 $ slow 2 $ every 2 (slow 0.75) $ sound "bd*8 bd:3*2 bd*32 ~" 511 | |+| gain "0.9" 512 | 513 | -- righteous happysadcore 514 | d1 $ stack [(slowspread (chop) [4, 8, 3] $ sound "~ off") 515 | |+| speed (slow 4 $ scale 0.5 2 $ sine1), 516 | slow 2 $ every 2 (0.25 <~) $ stut 3 0.9 (0.75) $ every 2 (within (0,0.25) (density 2)) $ chop 32 $ sound "breaks125"] 517 | 518 | -- smashed melody 519 | d1 $ (slow 4 $ jux rev $ every 2 (slow 2) $ (striate 32 $ sound (samples "[newnotes*8 newnotes*12 newnotes*8 newnotes]" (slow 5 $ run 16)))) 520 | |+| speed ((+0.5) <$> (slow 8 $ sinewave1)) 521 | |+| vowel "[a o o e i o u]" 522 | |+| shape "0.4" 523 | 524 | -- poignant duet 525 | d1 $ 526 | stack [ 527 | every 2 (density 2) $ jux4 (iter 8) $ slowspread ($) [slow 2, iter 8, id, (|+| speed "0.9")] $ sound (pick <$> "kurt*8" <*> (slow 3 $ run 12)) 528 | |+| speed "2", 529 | smash 4 [1,2,3,4] $ brak $ spin 2 $ slow 2 $ chop 3 $ sound "rave:6"] 530 | 531 | -- all you need 532 | d1 $ stack [jux (((every 3 rev) . every 2 ((1/16) <~)) . (|+| speed "[2,3]")) $ slow 2 $ sound (samples "jvbass*2 jvbass*4 jvbass*2" "[3 5 2,8 2 1]/4") 533 | |+| shape "0.3" 534 | |+| end "0.25", 535 | jux (rev) $ striate 4 $ sound (samples "[newnotes*2] newnotes" "3 2 1") 536 | |+| speed (every 2 ((*0.5) <$>) "[1 0.75 1 0.5, 3 2 1]/3")] 537 | 538 | -- buy my plugin 539 | d1 $ density 2 $ slowcat [superimpose (smash 4 [4,2,1,4]) $ jux rev $ sound (samples "{gretsch*4, gretsch*3 bd*2 sn/2}" (stack [(slow 3 $ run 8), "1 5 2"])) 540 | |+| speed "2", 541 | interlace (jux (0.25 <~) $ (striate 4) $ sound "bd/4*4 bleep/7") 542 | (sound (samples "mouth*8" (every 3 rev $ run 8)))] 543 | 544 | -- raise your hands 545 | d1 $ stack [(every 4 (0.5 <~) $ every 3 (0.25 <~) $ striate 64 $ sound "breaks125") 546 | |+| speed "[1 2 3]/5", 547 | (spin 2 $ every 3 (0.5 <~) $ every 3 (0.25 <~) $ striate 64 $ sound "breaks125") 548 | |+| speed "[1 2 3 4]/5"] 549 | 550 | -- spot the tactus 551 | d1 $ slow 2 $ (superimpose (iter 8) $ every 4 (slow 3) $ every 3 (density 5) $ sound "[feel ~ lt8:5, sd8:3 ht8:3]" |+| speed ((+1) . (*0.2) <$> slow 4 sine1)) 552 | 553 | -- bass interlace 554 | d1 $ interlace (sound "bass3:2 ~ jvbass:3 jvbass:4") 555 | (rev $ sound "bass3:2 jvbass:3 jvbass:4") 556 | 557 | -- recital 558 | d1 $ (spread' (striate' 4) ((+0.2) <$> slow 8 sine1)) $ jux rev $ sound (samples "[latibro*6,bd]/2" "0 7 4") |+| speed "[1 2 1.5]/4" 559 | 560 | -- heavy hardcore 561 | d1 $ stack [superimpose (iter 4) $ every 4 rev $ sound "[[feel feel:0] feel*3, haw:4*3 haw]", 562 | sound "~ sid:2 peri:1 ~" 563 | |+| gain "1.5" 564 | |+| speed "1 2 3", 565 | slow 2 $ stut 4 0.98 (-0.25) $ slow 2 $ sound "[feel*2 feel:2 [~ feel*2] feel:2, ~ feel mod:2]" 566 | |+| speed "4" 567 | |+| gain "1.4", 568 | slow 16 $ striate 128 $ sound "bev*2" 569 | |+| gain "1.4" 570 | |+| speed "1.5"] 571 | 572 | -- cave rave 573 | d1 $ spin (4) $ (every 3 (density 1.5) $ slow 2 $ sound (pick <$> "[rave2 ~ rave2] [rave2*8]" <*> "[3 4 2 3]/3")) 574 | |+| speed (slow 4 $ (+1.5) <$> sine1) 575 | 576 | -- don't sneeze 577 | d1 $ slowspread ($) [echo 0.5, rev, density 2, density 1.5] $ jux (iter 4) $ every 2 (iter 3) $ sound "bd:3 [sn:1 ~ sn:1]" 578 | |+| speed (every 3 rev "2 1") 579 | |+| end "0.2" 580 | 581 | -- put some effort in 582 | d1 $ stack [slow 2 $ every 2 (0.25 <~) $ superimpose (rev) $ every 4 (striate 4) $ sound (pick <$> "bd*2 bd*4" <*> (slow 4 $ ((floor . (*16)) <$> sine1))), 583 | smash 2 [1,2] $ jux (brak) $ whenmod 4 2 (density 2) $ slow 2 $ sound (pick <$> "amencutup*8" <*> (slow 4 $ run 32)) 584 | |+| speed ((+1) <$>sine1)] 585 | 586 | -- euphoric squee 587 | d1 $ interlace (smash 8 [1,2,1,4] $ every 2 (density 2) $ jux (brak) $ whenmod 4 2 (density 2) $ slow 2 $ sound (pick <$> "future*8" <*> (slow 4 $ run 32)) 588 | |+| speed ((+1) <$>sine1)) 589 | (sound "~ bleep:9" 590 | |+| speed (slow 8 sine1)) 591 | 592 | -- woodpeckstep 593 | d1 $ slow 2 $ every 3 (slow 2) $ every 4 (density 2) $ superimpose (iter 4) $ jux (every 2 rev) $ sound "bd ~ sn*16 ~ bd*8 ~ sn*6 ~" 594 | |+| speed "2" 595 | |+| vowel "a" 596 | 597 | -- knock em back 598 | d1 $ stack [every 2 (slow 2) $ superimpose (iter 4) $ slow 2 $ every 8 ((1/4) <~) $ sound "future*3 bd*2 wobble [cp bd bd]" 599 | |+| shape "0.9" 600 | |+| gain "2" 601 | |+| speed "[2,3,4]" 602 | |+| cutoff ((+0.01) <$> (slow 16 $ scale 0 0.01 sine1)) 603 | |+| resonance ((+0.2) <$> (slow 12 $ scale 0 0.5 sine1)), 604 | slowspread ($) [rev, iter 8, (|+| speed "0.75"), density 2] $ jux (0.25 <~) $ sound (pick <$> "amencutup*4 amencutup*2" <*> (slow 8 $ run 128)) 605 | |+| shape "0.7" 606 | |+| gain "2"] 607 | 608 | -- if a cat made techno 609 | d1 $ slowspread ($) [rev, iter 4, (0.5 <~)] $ slowspread (stut 8 0.95) [0.25,0.5,1,0.75] $ slow 2 $ superimpose rev $ sound "[bd bleep:5 bd*2 bd bd cp drum:1 ~, gabbalouder ~ rave2:4 ~]" 610 | |+| gain "0.5" 611 | |+| speed "[1,[2 3 0.75]/3]" 612 | -- |+| delay "1" 613 | 614 | -- snel hest 615 | d1 $ stack [every 3 (stut 3 0.9 (1/3)) $ sound "{lighter lighter:3 ~ lighter:4, lighter:9 bd drum:2}", 616 | slow 2 $ slowspread ($) [id, density 2, iter 4, rev] $ sound "~ [jungbass:4 ! jungbass:4*2 jungbass:5]/2" 617 | |+| speed "2", 618 | every 4 (within (0, 0.25) (density 2)) $ (slow 2 $ sound (pick <$> "{lighter ~ can ~ bd rave2 bd sn, bd*3 cp:2 bd}" <*> (slow 5 $ run 12))) 619 | |+| speed "16"] 620 | 621 | -- wakkawakka 622 | d1 $ stack [slowspread ($) [(|+| speed "2"), rev, iter 4, rev] $ stut 3 (0.25) (-0.25) $ sound (pick <$> "industrial*8" <*> (every 6 (const (irand 32)) "[0 [1 4]/3 2 [3 6 4]/3]*2")) 623 | |+| end (every 8 (const 0.04 <$>) $ "0.03") 624 | |+| cutoff (every 4 ((*4) <$>) "0.04 0.05") 625 | |+| resonance "[0.6 0.4 0.1]/3", 626 | jux rev $ density 4 $ striate' 2 0.2 $ sound (pick <$> "[bass3:2 bass3:7]/2" <*> (slow 8 $ run 8)) 627 | |+| speed (every 4 ((*2) <$> ) "[[1,2] 1 1 [4.1 2]/2]/4") 628 | |+| accelerate "1" 629 | |+| gain "0.8"] 630 | 631 | -- bad noise, don't run 632 | d1 $ every 2 (density 2) $ 633 | stack [slow 2 $ sound "{jungbass*3 jungbass/1*4, jungbass/5 [east*3 east/3*2] east/2*4}" 634 | |+| speed "[2 1 0.5]/2" 635 | |+| shape "0.5", 636 | every 3 (density 2) $ every 2 (jux rev) $ sound (samples "east*8" "{1 2 3, 4 5 6 7, 8 9 10 11 12}") 637 | |+| speed "[0.5 1]/2" 638 | |+| end "0.2"] 639 | 640 | -- drab bleep 641 | d1 $ weave 16 (shape (scale 0 0.7 sine1)) 642 | [jux (iter 4) $ slow 4 $ sound "sb {sb ~ sb casio, sb:1 casio:1 sb:1}" |+| speed "[0.5, 0.051]", 643 | sound (unwrap $ (\a b -> e a b "bd") <$> "[3 5 6]/2" <*> "[8,16]")] 644 | 645 | -- move gabba 646 | d1 $ weave 16 (pan sine1) [sound "gabba(3,8)", 647 | sound "gabba(5,8)", 648 | sound "arpy*4" |+| gain "1.2", 649 | jux (iter 4. chop 8 . rev) $ sound (samples "arpy*2 kurt" "[1 2]/2") 650 | |+| gain "1.4" 651 | |+| speed "[0.5 1]/2" 652 | |+| accelerate "[-1 2]/2"] 653 | 654 | 655 | 656 | For more examples see: 657 | http://twitter.com/tidalbot/ 658 | --------------------------------------------------------------------------------