Live Coding Music
Welcome to the ultra nerd realm:
a beginners guide to live coding in Tidal Cycles
RPM 2023 workshop
by Felix van Deelen/lil bits
About me
- 4th year RPM’er
- AI engineer on weekdays // Musician on other days
- One year of live coding in TidalCycles
The Wizards of Vomit lil bits The Feet Long Mouse
What is live coding?
Instructing a machine in real time on performing arts
- Visuals/music/both simultaneously
- Algoraves
Some interesting examples:
What is Tidal Cycles?
- Live coding environment for algorithmic patterns
- Input code, Tidal Cycles will interpret it and forward it to create sounds
- Open-source
- Designed for people with no coding experience
“Quickly create complex patterns from simple ingredients”
How does it work?
1. Type and select text to be run
2. Tidal Cycles interprets what your code means
3. TidalCycles sends interpretations to software that plays back a sound
what we will focus on today
How does it work?
1. Type and select text to be run
2. Tidal Cycles interprets what your code means
3. TidalCycles sends interpretations to software that plays back a sound
How does it work?
1. Type and select text to be run
2. Tidal Cycles interprets what your code means
3. TidalCycles sends interpretations to software that plays back a sound
Installation
https://tidalcycles.org/docs/getting-started/macos_install
Or get started without installation:
https://strudel.tidalcycles.org/learn/getting-started/
Tidal Cycles Syntax: Simple example
Running this piece of code will:
- Plays back a loop infinitely
- bass drum followed by snare drum
Tidal Cycles Syntax: comprehensive example
Tidal Cycles Syntax: breakdown
- Track number Running this piece of code will:
- After effects - Plays back a loop infinitely
- Notes - The loop plays the notes c d a g
- Instrument - Sounds will be generated using the supervibe sample
- Immediate effects - The 4 notes will be spread out over a cycle evenly
Tidal Cycles Syntax: track number
- d1 specifies the track number:
- d1 → track 1
- d2 → track 2
- One of the ways to run different patterns simultaneously
Tidal Cycles Syntax: instrument
- Specificies which ‘instrument’ to use
- Two types of instruments:
- Samples → in this case “supervibe” is a folder with recorded samples
- Synthesizer → in this case “supervibe” refers to a synth definition
Tidal Cycles Syntax: notes
- Takes a pattern specifying
- which notes to play given the instrument
- the rhythmic structure
- also called mini-notation
- mini-notation can be used in many places to construct complex rhythmic patterns
(more on this later)
Tidal Cycles Syntax: immediate effects
- Effects to be applied to the individually triggered sounds
- Syntax: effect_name (arguments)
- room → reverb, 0.2 → room size
cool effects to check out:
djf, squiz, vowel, pan, speed
Tidal Cycles Syntax: after effects
- Specific type of effect applied after evaluation of everything to the right
- This case it reverses the pattern (including all its modifications) every fourth
loop
cool after effects to check out:
jux rev, hurry, off
Tidal Cycles Syntax: breakdown
- Track number
- After effects
- Notes
- Instrument
- Immediate effects
Join the live coding session: https://estuary.mcmaster.ca/
https://estuary.mcmaster.ca/, room RPM, pass rpm
Some patterns to try:
- drums: s "bd <hh hh*4> sd hh"
- bass: s "pluck [pluck pluck] pluck ~" # note "c4 c6 cf7 bf"
- melody: s "casio:1*4" # note "c a f e" # gain 0.8
- arpeggios: every 2 (hurry 2) $ jux (rev) $ arp "up" $ s "arpy:4" # note "e'maj'4 c'maj'4" # gain 0.7 #
speed "0.5 0.75"
- weird things:
- s "auto*8" # speed "0.5 1 2 4" # pan (range 2 3 sine)
- degradeBy 0.2 $ s "glitch*8" # n (irand 8) # gain 0.7
Useful links
Tidal Cycles tutorial: https://tidalcycles.org/docs/patternlib/tutorials/course1
Live coding in browser: https://strudel.tidalcycles.org/
Live coding visuals: https://hydra.ojack.xyz/
My own work:
GitHub Spotify Bandcamp