Microtonality in Tidal

So I’ve recently started playing around with microtonality in tidal.

So far I have quite a simple way of adding in any EDO system with let edo a b = note (b*(12/a)) where a is the number of divisions being used and b is just the note pattern in edo-steps. This allows you to pattern both the tuning system and the notes against each other which can give some pretty weird and fun chord progressions.

I’m now trying to look into coding in just intonation systems, particularly Partch’s 43 just intonation system. However, I’m not really at all a coder and I’m really struggling to work out how to code in a base scale in the first place (I’m trying to use let … in if … then … else if … but keeping getting parse errors) and then even if I do achieve that I’m not sure how to make it permutable across octaves. Any ideas from folks with more coding experience?


Hi buddy, I think you’re on the right track.I picked up this old sketch which I think still works

  $ degrade
  $ fast 2
  $ note ("e4*4" |+ (irand 22 |* (12/22)))
    # s "supervibe"
    # sustain 4
    # gain 0.8

The scale function is awesome, I suggest you try something like

  let edo base note = note / base
  let myscale = toScale $ map (edo 22) [0,2,4,6,8,10,12,14,16,18,20]
  d1 $ note (scale myscale (irand 8)) # s "superpiano"

edit: fixed parentheses

1 Like

Hi, thanks for the tips!

Just to clarify, for EDO (Equal Division of Octave) systems the previous definition works.

Thanks for pointing me towards scale though, since that’s exactly what I was looking for to get non-equally divided microtonal systems!

So now the following works for all EDO, pythagorean tuning and partch 43-note tuning (and I’ve added a shorthand so you don’t have to write out the full scale stuff every time).

let edo a b = note (b*(12/a))
    scale = getScale (scaleTable ++ [("pythagorean", [0.9,2.04,2.94,4.08,4.98,5.88,7.02,7.92,9.06,9.96,11.11,12]),
                                     ("partch", [0.215,0.532,0.845,1.117,1.506,1.650,1.824,2.039,2.312,2.669,2.941,3.156,3.474,3.863,4.175,4.351,4.708,4.980,5.195,5.513,5.825,6.175,6.487,6.805,7.020,7.292,7.649,7.825,8.137,8.526,8.849,9.059,9.331,9.688,9.961,10.176,10.350,10.494,10.883,11.155,11.468,11.785,12])
    pythagorean a = note (scale "pythagorean" a)
    partch a = note (scale "partch" a) 

Of course you can also use the same approach for any non-standard tuning system.