Difference between revisions of "Basic Patterns"

From TidalCycles userbase
Jump to: navigation, search
(Created page with "The basic format for making sound in Tidal looks like this <syntaxhighlight lang="Haskell"> d1 $ sound "drum" </syntaxhighlight> You can stop making a sound using <syntaxhig...")
 
(Marked this version for translation)
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
<languages />
 +
 +
<translate>
 +
<!--T:1-->
 
The basic format for making sound in Tidal looks like this
 
The basic format for making sound in Tidal looks like this
  
 +
<!--T:2-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "drum"
 
d1 $ sound "drum"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:3-->
 
You can stop making a sound using <syntaxhighlight lang="Haskell" inline>silence</syntaxhighlight>:
 
You can stop making a sound using <syntaxhighlight lang="Haskell" inline>silence</syntaxhighlight>:
  
 +
<!--T:4-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ silence
 
d1 $ silence
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:5-->
 
Pick a different sound from the same set, with `:`
 
Pick a different sound from the same set, with `:`
  
 +
<!--T:6-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "drum:1"
 
d1 $ sound "drum:1"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:7-->
 
Some of the samples which come with Tidal are listed below. Try some out!
 
Some of the samples which come with Tidal are listed below. Try some out!
  
 +
<!--T:8-->
 
<pre>
 
<pre>
 
flick sid can metal future gabba sn mouth co gretsch mt arp h cp
 
flick sid can metal future gabba sn mouth co gretsch mt arp h cp
Line 27: Line 38:
 
</pre>
 
</pre>
  
 +
<!--T:9-->
 
You can see what other sounds there are (or add your own) by looking  
 
You can see what other sounds there are (or add your own) by looking  
 
in the ''Dirt-Samples'' folder. You can find it via the SuperCollider
 
in the ''Dirt-Samples'' folder. You can find it via the SuperCollider
Line 32: Line 44:
 
Dirt-Samples'.
 
Dirt-Samples'.
  
== Make a sequence ==
+
== Make a sequence == <!--T:10-->
  
 +
<!--T:11-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "bd hh sn hh"
 
d1 $ sound "bd hh sn hh"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:12-->
 
The more steps in the sequence, the faster it goes:
 
The more steps in the sequence, the faster it goes:
  
 +
<!--T:13-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "bd bd hh bd sn bd hh bd"
 
d1 $ sound "bd bd hh bd sn bd hh bd"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:14-->
 
This is because of the way Tidal handles time.  There is a universal
 
This is because of the way Tidal handles time.  There is a universal
 
‘cycle’ (sort of like a musical 'bar') which is always running.  Tidal
 
‘cycle’ (sort of like a musical 'bar') which is always running.  Tidal
Line 52: Line 68:
 
later).
 
later).
  
We can change the length of the cycle using `cps` (cycles per
+
<!--T:15-->
 +
We can change the length of the cycle using <source inline>setcps</source> (where cps stands for cycles per
 
second) - this is a bit like bpm (beats per minute).
 
second) - this is a bit like bpm (beats per minute).
  
 +
<!--T:16-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
cps 0.6
+
setcps 0.6
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:17-->
 
You can use d1, d2, d3...d9 to play multiple sequences at the same time
 
You can use d1, d2, d3...d9 to play multiple sequences at the same time
  
 +
<!--T:18-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d2 $ sound "sn sn:2 sn bd sn"
 
d2 $ sound "sn sn:2 sn bd sn"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:19-->
 
You can stop all the running patterns with <syntaxhighlight lang="Haskell" inline>hush</syntaxhighlight>.
 
You can stop all the running patterns with <syntaxhighlight lang="Haskell" inline>hush</syntaxhighlight>.
  
 +
<!--T:20-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
`hush`
+
hush
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:21-->
 
You can pause everything by changing the cycle length to a negative
 
You can pause everything by changing the cycle length to a negative
 
number (remember to put negative numbers in brackets).
 
number (remember to put negative numbers in brackets).
  
 +
<!--T:22-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
cps (-1)
+
setcps (-1)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:23-->
 
Start it up again with a positive number
 
Start it up again with a positive number
  
 +
<!--T:24-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
cps 0.6
+
setcps 0.6
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Or you can `solo` one channel - but be warned, you can’t 'unsolo' (...but this is coming to the next version of tidal!)
+
<!--T:25-->
 +
Or you can `solo` one channel:
  
 +
<!--T:26-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "arpy cp arpy:2"
 
d1 $ sound "arpy cp arpy:2"
 +
 +
<!--T:84-->
 
d2 $ sound "sn sn:2 bd sn"
 
d2 $ sound "sn sn:2 bd sn"
solo $ d2 $ sound "sn sn:2 bd sn"
+
 
 +
<!--T:85-->
 +
solo 2
 +
 
 +
<!--T:86-->
 +
-- now only the second pattern will be playing
 +
 
 +
<!--T:87-->
 +
unsolo 2
 +
 
 +
<!--T:88-->
 +
-- now both will be playing, again
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:27-->
 
Let add some more variety to our sequences.
 
Let add some more variety to our sequences.
  
 +
<!--T:28-->
 
Add a silence/rest with <syntaxhighlight lang="Haskell" inline>~</syntaxhighlight>:
 
Add a silence/rest with <syntaxhighlight lang="Haskell" inline>~</syntaxhighlight>:
  
 +
<!--T:29-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "bd ~ sn:3 bd sn:5 ~ bd:2 sn:2"
 
d1 $ sound "bd ~ sn:3 bd sn:5 ~ bd:2 sn:2"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:30-->
 
Fit a subsequence into a step with square brackets:
 
Fit a subsequence into a step with square brackets:
  
 +
<!--T:31-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "bd [bd cp] bd bd"
 
d1 $ sound "bd [bd cp] bd bd"
<syntaxhighlight>
+
</syntaxhighlight>
  
 +
<!--T:32-->
 
This can make for flexible time signatures:
 
This can make for flexible time signatures:
  
 +
<!--T:33-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "[bd bd sn:5] [bd sn:3]"
 
d1 $ sound "[bd bd sn:5] [bd sn:3]"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:34-->
 
You can put subsequences inside subsequences:
 
You can put subsequences inside subsequences:
  
 +
<!--T:35-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "[[bd bd] bd sn:5] [bd sn:3]"
 
d1 $ sound "[[bd bd] bd sn:5] [bd sn:3]"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:36-->
 
Keep going..
 
Keep going..
  
 +
<!--T:37-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "[[bd [bd bd bd bd]] bd sn:5] [bd sn:3]"
 
d1 $ sound "[[bd [bd bd bd bd]] bd sn:5] [bd sn:3]"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:38-->
 
You can repeat a step with <syntaxhighlight lang="Haskell" inline>*</syntaxhighlight>:
 
You can repeat a step with <syntaxhighlight lang="Haskell" inline>*</syntaxhighlight>:
  
 +
<!--T:39-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "bd sd*2"
 
d1 $ sound "bd sd*2"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:40-->
 
This works with subsequences too:
 
This works with subsequences too:
  
 +
<!--T:41-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "bd [sd cp]*2"
 
d1 $ sound "bd [sd cp]*2"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:42-->
 
Or you can do the opposite using <syntaxhighlight lang="Haskell" inline>/</syntaxhighlight>:
 
Or you can do the opposite using <syntaxhighlight lang="Haskell" inline>/</syntaxhighlight>:
  
 +
<!--T:43-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "bd sn/2"
 
d1 $ sound "bd sn/2"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:44-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "bd [sn cp]/2"
 
d1 $ sound "bd [sn cp]/2"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:45-->
 
<syntaxhighlight lang="Haskell" inline>*</syntaxhighlight> works by 'speeding up' a step to play it multiple times. <syntaxhighlight lang="Haskell" inline>/</syntaxhighlight> works
 
<syntaxhighlight lang="Haskell" inline>*</syntaxhighlight> works by 'speeding up' a step to play it multiple times. <syntaxhighlight lang="Haskell" inline>/</syntaxhighlight> works
 
by 'slowing it down'.
 
by 'slowing it down'.
  
 +
<!--T:46-->
 
We can also schedule patterns across cycles using <syntaxhighlight lang="Haskell" inline><</syntaxhighlight> and <syntaxhighlight lang="Haskell" inline>></syntaxhighlight>:
 
We can also schedule patterns across cycles using <syntaxhighlight lang="Haskell" inline><</syntaxhighlight> and <syntaxhighlight lang="Haskell" inline>></syntaxhighlight>:
  
 +
<!--T:47-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "bd <sd cp arpy>"
 
d1 $ sound "bd <sd cp arpy>"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:48-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "<bd sn> <sd [cp cp]> <bd [cp cp]>"
 
d1 $ sound "<bd sn> <sd [cp cp]> <bd [cp cp]>"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Effects ==
+
== Effects == <!--T:49-->
  
 +
<!--T:50-->
 
Tidal has lots of effects we can use to change the way things sound.  
 
Tidal has lots of effects we can use to change the way things sound.  
  
 +
<!--T:51-->
 
<syntaxhighlight lang="Haskell" inline>vowel</syntaxhighlight> is a filter which adds a vowel sound -- try a, e, i, o and u
 
<syntaxhighlight lang="Haskell" inline>vowel</syntaxhighlight> is a filter which adds a vowel sound -- try a, e, i, o and u
  
 +
<!--T:52-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "drum drum drum drum" # vowel "a"
 
d1 $ sound "drum drum drum drum" # vowel "a"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:53-->
 
We create patterns of effects in much the same way we create patterns of sounds. We call these effect and sound patterns 'control patterns'. So
 
We create patterns of effects in much the same way we create patterns of sounds. We call these effect and sound patterns 'control patterns'. So
  
 +
<!--T:54-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "drum drum drum drum" # vowel "a o e e"
 
d1 $ sound "drum drum drum drum" # vowel "a o e e"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:55-->
 
Remember that we can use "<>" to schedule across cycles
 
Remember that we can use "<>" to schedule across cycles
  
 +
<!--T:56-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "drum drum drum drum" # vowel "<a o e e>"
 
d1 $ sound "drum drum drum drum" # vowel "<a o e e>"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:57-->
 
You can add a non-vowel letter to pause the vowel effect
 
You can add a non-vowel letter to pause the vowel effect
  
 +
<!--T:58-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "drum drum drum drum" # vowel "a o p p"
 
d1 $ sound "drum drum drum drum" # vowel "a o p p"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:59-->
 
Tidal does its best to map patterns across to one another
 
Tidal does its best to map patterns across to one another
  
 +
<!--T:60-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "drum drum drum drum" # vowel "a o e"
 
d1 $ sound "drum drum drum drum" # vowel "a o e"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:61-->
 
The structure comes from the left - try swapping the parameters
 
The structure comes from the left - try swapping the parameters
  
 +
<!--T:62-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ vowel "a o ~ i" # sound "drum"  
 
d1 $ vowel "a o ~ i" # sound "drum"  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:63-->
 
'''Health warning''' - This is one of the changes coming up in the new Tidal - you will be able to control which side the structure comes from. . Or combine structure from ''both'' sides.
 
'''Health warning''' - This is one of the changes coming up in the new Tidal - you will be able to control which side the structure comes from. . Or combine structure from ''both'' sides.
  
 +
<!--T:64-->
 
<syntaxhighlight lang="Haskell" inline>gain</syntaxhighlight> changes the volume of different sounds
 
<syntaxhighlight lang="Haskell" inline>gain</syntaxhighlight> changes the volume of different sounds
  
 +
<!--T:65-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "bd hh sn:1 hh sn:1 hh" # gain "1 0.7 0.5"
 
d1 $ sound "bd hh sn:1 hh sn:1 hh" # gain "1 0.7 0.5"
Line 208: Line 287:
  
  
 +
<!--T:66-->
 
<syntaxhighlight lang="Haskell" inline>speed</syntaxhighlight> and <syntaxhighlight lang="Haskell" inline>note</syntaxhighlight> are used for pitching samples.
 
<syntaxhighlight lang="Haskell" inline>speed</syntaxhighlight> and <syntaxhighlight lang="Haskell" inline>note</syntaxhighlight> are used for pitching samples.
  
 +
<!--T:67-->
 
<syntaxhighlight lang="Haskell" inline>speed</syntaxhighlight> affects the speed of playback, e.g. 2 = up an octave
 
<syntaxhighlight lang="Haskell" inline>speed</syntaxhighlight> affects the speed of playback, e.g. 2 = up an octave
  
 +
<!--T:68-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "numbers:1 numbers:2 numbers:3 numbers:4" # speed "1 1.5 2 0.5"
 
d1 $ sound "numbers:1 numbers:2 numbers:3 numbers:4" # speed "1 1.5 2 0.5"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:69-->
 
Or we can take the pattern from the <syntaxhighlight lang="Haskell" inline>speed</syntaxhighlight> parameter
 
Or we can take the pattern from the <syntaxhighlight lang="Haskell" inline>speed</syntaxhighlight> parameter
  
 +
<!--T:70-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ speed "1 2 4" # sound "jungbass:6"
 
d1 $ speed "1 2 4" # sound "jungbass:6"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:71-->
 
<syntaxhighlight lang="Haskell" inline>note</syntaxhighlight> pitches the sample up in semitones, e.g. 12 = up an octave
 
<syntaxhighlight lang="Haskell" inline>note</syntaxhighlight> pitches the sample up in semitones, e.g. 12 = up an octave
  
 +
<!--T:72-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ up "0 ~ 12 24" # sound "jungbass:6"
 
d1 $ up "0 ~ 12 24" # sound "jungbass:6"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
<syntaxhighlight lang="Haskell" inline>Pan</syntaxhighlight> allows us to create stereo effects - 0 = left, 0.5 = middle, 1 = right
+
<!--T:73-->
 +
<syntaxhighlight lang="Haskell" inline>pan</syntaxhighlight> allows us to create stereo effects - 0 = left, 0.5 = middle, 1 = right
  
 +
<!--T:74-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "numbers:1 numbers:2 numbers:3 numbers:4" # pan "0 0.5 1"
 
d1 $ sound "numbers:1 numbers:2 numbers:3 numbers:4" # pan "0 0.5 1"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:75-->
 
<syntaxhighlight lang="Haskell" inline>shape</syntaxhighlight> adds distortion (but be careful - it also makes the sound much louder)
 
<syntaxhighlight lang="Haskell" inline>shape</syntaxhighlight> adds distortion (but be careful - it also makes the sound much louder)
  
 +
<!--T:76-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "kurt:4 kurt:4" # shape "0 0.78" # gain "0.7"
 
d1 $ sound "kurt:4 kurt:4" # shape "0 0.78" # gain "0.7"
Line 241: Line 331:
  
  
== feeling brave ? ==
+
== feeling brave ? == <!--T:77-->
  
Try more effects: http://tidalcycles.org/patterns.html#effects
+
<!--T:78-->
 +
Try more effects: https://tidalcycles.org/index.php/Category:Control_Functions
  
 +
<!--T:79-->
 
<syntaxhighlight lang="Haskell" inline>delay</syntaxhighlight> / <syntaxhighlight lang="Haskell" inline>delaytime</syntaxhighlight> / <syntaxhighlight lang="Haskell" inline>delayfeedback</syntaxhighlight> /
 
<syntaxhighlight lang="Haskell" inline>delay</syntaxhighlight> / <syntaxhighlight lang="Haskell" inline>delaytime</syntaxhighlight> / <syntaxhighlight lang="Haskell" inline>delayfeedback</syntaxhighlight> /
syntaxhighlight lang="Haskell" inline>cutoff</syntaxhighlight> / <syntaxhighlight lang="Haskell" inline>resonance</syntaxhighlight> /
+
<syntaxhighlight lang="Haskell" inline>cutoff</syntaxhighlight> / <syntaxhighlight lang="Haskell" inline>resonance</syntaxhighlight> /
 
<syntaxhighlight lang="Haskell" inline>room</syntaxhighlight> / <syntaxhighlight lang="Haskell" inline>size</syntaxhighlight>
 
<syntaxhighlight lang="Haskell" inline>room</syntaxhighlight> / <syntaxhighlight lang="Haskell" inline>size</syntaxhighlight>
  
== Continuous patterns ==
+
== Continuous patterns == <!--T:80-->
  
 +
<!--T:81-->
 
<syntaxhighlight lang="Haskell" inline>sine</syntaxhighlight> is a continuous pattern following a sine curve from 0 to 1 and back
 
<syntaxhighlight lang="Haskell" inline>sine</syntaxhighlight> is a continuous pattern following a sine curve from 0 to 1 and back
  
 +
<!--T:82-->
 
<syntaxhighlight lang="Haskell">
 
<syntaxhighlight lang="Haskell">
 
d1 $ sound "bd*32" # gain sine
 
d1 $ sound "bd*32" # gain sine
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--T:83-->
 
You can also try <syntaxhighlight lang="Haskell" inline>tri</syntaxhighlight>, <syntaxhighlight lang="Haskell" inline>saw</syntaxhighlight> and <syntaxhighlight lang="Haskell" inline>rand</syntaxhighlight>.
 
You can also try <syntaxhighlight lang="Haskell" inline>tri</syntaxhighlight>, <syntaxhighlight lang="Haskell" inline>saw</syntaxhighlight> and <syntaxhighlight lang="Haskell" inline>rand</syntaxhighlight>.
  
SCALE
+
</translate>

Latest revision as of 21:59, 14 December 2019

Other languages:
British English • ‎English • ‎español • ‎français • ‎中文(台灣)‎ • ‎日本語

The basic format for making sound in Tidal looks like this

d1 $ sound "drum"

You can stop making a sound using silence:

d1 $ silence

Pick a different sound from the same set, with `:`

d1 $ sound "drum:1"

Some of the samples which come with Tidal are listed below. Try some out!

flick sid can metal future gabba sn mouth co gretsch mt arp h cp
cr newnotes bass hc tabla bass0 hh bass1 bass2 oc bass3 ho odx
diphone2 house off ht tink perc bd industrial pluck trump printshort
jazz voodoo birds3 procshort blip drum jvbass psr wobble drumtraks koy
rave bottle kurt latibro rm sax lighter lt arpy feel less stab ul

You can see what other sounds there are (or add your own) by looking in the Dirt-Samples folder. You can find it via the SuperCollider menu: 'File > Open user support directory > downloaded-quarks > Dirt-Samples'.

Make a sequence

d1 $ sound "bd hh sn hh"

The more steps in the sequence, the faster it goes:

d1 $ sound "bd bd hh bd sn bd hh bd"

This is because of the way Tidal handles time. There is a universal ‘cycle’ (sort of like a musical 'bar') which is always running. Tidal will play all of the sounds between the speech marks in one cycle, unless we tell it not to (we’ll learn how to do that later). You’ll also notice Tidal will space the sounds out evenly within the cycle Which means we can end up with polyrhythmic structures (more on those later).

We can change the length of the cycle using setcps (where cps stands for cycles per second) - this is a bit like bpm (beats per minute).

setcps 0.6

You can use d1, d2, d3...d9 to play multiple sequences at the same time

d2 $ sound "sn sn:2 sn bd sn"

You can stop all the running patterns with hush.

hush

You can pause everything by changing the cycle length to a negative number (remember to put negative numbers in brackets).

setcps (-1)

Start it up again with a positive number

setcps 0.6

Or you can `solo` one channel:

d1 $ sound "arpy cp arpy:2"

d2 $ sound "sn sn:2 bd sn"

solo 2

-- now only the second pattern will be playing

unsolo 2

-- now both will be playing, again

Let add some more variety to our sequences.

Add a silence/rest with ~:

d1 $ sound "bd ~ sn:3 bd sn:5 ~ bd:2 sn:2"

Fit a subsequence into a step with square brackets:

d1 $ sound "bd [bd cp] bd bd"

This can make for flexible time signatures:

d1 $ sound "[bd bd sn:5] [bd sn:3]"

You can put subsequences inside subsequences:

d1 $ sound "[[bd bd] bd sn:5] [bd sn:3]"

Keep going..

d1 $ sound "[[bd [bd bd bd bd]] bd sn:5] [bd sn:3]"

You can repeat a step with *:

d1 $ sound "bd sd*2"

This works with subsequences too:

d1 $ sound "bd [sd cp]*2"

Or you can do the opposite using /:

d1 $ sound "bd sn/2"
d1 $ sound "bd [sn cp]/2"

* works by 'speeding up' a step to play it multiple times. / works by 'slowing it down'.

We can also schedule patterns across cycles using < and >:

d1 $ sound "bd <sd cp arpy>"
d1 $ sound "<bd sn> <sd [cp cp]> <bd [cp cp]>"

Effects

Tidal has lots of effects we can use to change the way things sound.

vowel is a filter which adds a vowel sound -- try a, e, i, o and u

d1 $ sound "drum drum drum drum" # vowel "a"

We create patterns of effects in much the same way we create patterns of sounds. We call these effect and sound patterns 'control patterns'. So

d1 $ sound "drum drum drum drum" # vowel "a o e e"

Remember that we can use "<>" to schedule across cycles

d1 $ sound "drum drum drum drum" # vowel "<a o e e>"

You can add a non-vowel letter to pause the vowel effect

d1 $ sound "drum drum drum drum" # vowel "a o p p"

Tidal does its best to map patterns across to one another

d1 $ sound "drum drum drum drum" # vowel "a o e"

The structure comes from the left - try swapping the parameters

d1 $ vowel "a o ~ i" # sound "drum"

Health warning - This is one of the changes coming up in the new Tidal - you will be able to control which side the structure comes from. . Or combine structure from both sides.

gain changes the volume of different sounds

d1 $ sound "bd hh sn:1 hh sn:1 hh" # gain "1 0.7 0.5"


speed and note are used for pitching samples.

speed affects the speed of playback, e.g. 2 = up an octave

d1 $ sound "numbers:1 numbers:2 numbers:3 numbers:4" # speed "1 1.5 2 0.5"

Or we can take the pattern from the speed parameter

d1 $ speed "1 2 4" # sound "jungbass:6"

note pitches the sample up in semitones, e.g. 12 = up an octave

d1 $ up "0 ~ 12 24" # sound "jungbass:6"

pan allows us to create stereo effects - 0 = left, 0.5 = middle, 1 = right

d1 $ sound "numbers:1 numbers:2 numbers:3 numbers:4" # pan "0 0.5 1"

shape adds distortion (but be careful - it also makes the sound much louder)

d1 $ sound "kurt:4 kurt:4" # shape "0 0.78" # gain "0.7"


feeling brave ?

Try more effects: https://tidalcycles.org/index.php/Category:Control_Functions

delay / delaytime / delayfeedback / cutoff / resonance / room / size

Continuous patterns

sine is a continuous pattern following a sine curve from 0 to 1 and back

d1 $ sound "bd*32" # gain sine

You can also try tri, saw and rand.