/didacticpatternvisualizer

Sound pattern visualizer in Processing for TidalCycles

Primary LanguageProcessingGNU General Public License v3.0GPL-3.0

Versión en español (en proceso...)

Didactic pattern visualizer for Tidal Cycles

Sound pattern visualizer programmed in Processing by the artist Ivan Abreu to study the potential and complexity of the syntax of the pattern system for sequencing Tida Cycles sounds, it is also a useful tool for composing having visual feedback of ordering and sound intentions and can be a fun visual software during the live act to unfold the musical composition and with them emphasize and direct attention to the subtleties that are semi-hidden in the multiple layers created by the artist.

Tidal Cycles is a free/open source software, that allows you to make patterns with code, whether live coding music at algoraves or composing in the studio, created by Alex McLean.

Musical pattern example:

SC2 Video

do
  asap $ connectionMax 3 # speedSequenser 4
  d5 $ grid "1 0!15"
  d1 $ s "bd(3,8)" # connectionN 1
  d2 $ s "hh(6,8)" # connectionN 2
  d3 $ every 3 ( density 8 ) $ density 2 $ n "<[d4,e2,g2] [d4,e4,g2]?>" 
     # s "superfork"  # connectionN 3

Musical pattern created by electronic musician and digital artist CNDSD:

SC2 Video

Code from previous video by CNDSD, using only defaults samples of TidalCycles:

do
 asap $ connectionMax 5 # speedSequenser 2
 d5 $ slow 0.75 $ grid "1 0!8"
 d1 $ qtrigger 1 $ seqPLoop [
    (0,8, slow 0.75 $ cat [
    sometimesBy 0.15 (#crush 6)$ s "[bd(5,9),[superhat(2,9)]/2]"
    # n "[[2 4],[g5 ,b6 ,a3]]"  # accelerate 0.8 # note "[f5] g2" # gain (slow 2 $ range 0.9 1.2 $ sine) #connectionN 1,
    sometimesBy 0.25 (# speed "[[1 0.8],[1.5 2]*2]") $ s "[yeah(3,9),notes(7,9)]" # n "[[2][a4 ,d7 g6]b3]" # gain "1.2" #connectionN 2,
    sound "[print(2,9)]/4" # n "3" # gain "1.2" #room 0.1 #connectionN 3,
    sound " ~ ~ [sax]/12" # n "2" # gain "1.2" # legato 3 #room 0.5 #connectionN 4,
    sound "{super808 ~ ~ ~ ~ ~}%1.5" # n "g2" # gain "1.5" # legato 4 #room 1 #connectionN 5] ),
    (8,24, slow 0.75 $ stack [
    sometimesBy 0.15 (#crush 6)$ s "[bd(5,9),[superhat(2,9)]/2]"
    # n "[[2 4],[g5 ,b6 ,a3]]"  # accelerate 0.8 # note "[f5] g2" # gain (slow 2 $ range 0.9 1.2 $ sine) #connectionN 1,
    sometimesBy 0.25 (# speed "[[1 0.8],[1.5 2]*2]") $ s "[yeah(3,9),notes(7,9)]" # n "[[2][a4 ,d7 g6]b3]" # gain "1.2" #connectionN 2,
    sound "[print(2,9)]/4" # n "3" # gain "1.2" #room 0.1 #connectionN 3,
    sound " ~ ~ [sax]/12" # n "2" # gain "1.2" # legato 3 #room 0.5 #connectionN 4,
    sound "{super808 ~ ~ ~ ~ ~}%1.5" # n "g2" # gain "1.5" # legato 4 #room 1 #connectionN 5] )
    ] 
    

Sending OSC messages to Processing (Getting started)

Visualize grids, time division and numbers of conecctions (layers or tracks)

Examples to set pattern in Tidal to view grid and time division

1 creates a thicker line.
0 creates a thinner line.

Grid with four times

d5 $ grid "1 0 0 0"

-- or

d5 $ grid "1 0!3"

Grid with eight times

d5 $ grid "1 0 0 0 0 0 0 0"

-- or

d5 $ grid "1 0!7"

Change the connection number you want to view and the speed of the sequencer animation.

  • this instruction does not need to be sent with the cycles, so asap only sends it once.

Two connections

asap $ connectionMax 2 # speedSequenser 2

Six connections

asap $ connectionMax 6 # speedSequenser 2

twelve connections

asap $ connectionMax 12 # speedSequenser 2

Visualize sound pattern

Examples to set pattern in Tidal to view sound pattern
You'll need put the function # connectionN n, where n is the number of layer or connection, example: d1, d2, d3.

  1. Simple pattern example :

SC2 Video

do
  asap $ connectionMax 2 # speedSequenser 4
  d5 $ grid "1 0 0 0"
  d1 $ s "bd cp" # connectionN 1
  1. Simple pattern example :

SC2 Video

do
  asap $ connectionMax 2 # speedSequenser 4
  d5 $ grid "1 0 0 0 0 0 0 0"
  d1 $ s "bd cp*4" # connectionN 1
  1. Euclidian pattern example :

SC2 Video

do
  asap $ connectionMax 2 # speedSequenser 4
  d5 $ grid "1 0!7"
  d1 $ s "bd(3,8)" # connectionN 1
  d2 $ s "hh(6,8)" # connectionN 2
  1. Pattern contracting and expanding time with a saw wave:

SC2 Video

do
  asap $ qtrigger 1 $ connectionMax 2 # speedSequenser 2
  d5 $ grid "1 0!15"
  d1 $ note "{0!8 3 2!8 4 3 3 2!4}%16" # sound "bd" # gain (range 1.1 0.4 saw)
     # cps (slow 16 (range 2 0.125 saw)) # connectionN 1
  d2 $ note "0(5,16)" # sound "superhat" # gain (range 1.1 0.4 saw) # connectionN 2
  

Contact or reports

Please share reports of success / failure with Ivan Abreu via email: data@ivanabreu.net or ivanabreuochoa@gmail.com