boot.tidal…the quickening

testing is science…

After updating SuperDirt and Tidal to the 1.0-Dev branches, there are some new lines of code that need to be run.  I figured this was a good time to watch, and pay attention to, Kindohm’s Tutorial #18: Atom Boot Configs

I wanted to post the tidal.boot that I’m using for reference in case anyone else is trying to tidy things up.  I’ve modified mine so that it runs the needed MIDI declarations as well as a couple extras for reseting the cycle clock and executing a one shot sample/note.  Resetting the cycle clock has been useful for me when analyzing patterns and trying to figure out what is happening from the 0 cycle, and the oneshot function is EXTREMELY useful for all kinds of things.

This is where anyone should start when they want to learn a…boot the tidal.boot file.  If you decide to skip that video (shame on you) then here is a screenshot of my Atom settings.  I would suggest you just enter in a custom path for your tidal.boot file and go from there.  Also note that if you need an example of the stock tidal.boot settings, they are available at github

Note that “Boot Tidal Path”

Below is the code that I’m using.  Feel free to point out anything that could be changed to make life easier or if I have an error

:set -XOverloadedStrings
:set prompt ""
:module Sound.Tidal.Context

(cps, nudger, getNow) <- cpsUtils'

(d1,t1) <- superDirtSetters getNow
(d2,t2) <- superDirtSetters getNow
(d3,t3) <- superDirtSetters getNow
(d4,t4) <- superDirtSetters getNow
(d5,t5) <- superDirtSetters getNow
(d6,t6) <- superDirtSetters getNow
(d7,t7) <- superDirtSetters getNow
(d8,t8) <- superDirtSetters getNow
(d9,t9) <- superDirtSetters getNow

(midicmd, midicmd_p) = pS "midicmd" (Nothing)
(midichan, midichan_p) = pF "midichan" (Nothing)
(progNum, progNum_p) = pF "progNum" (Nothing)
(val, val_p) = pF "val" (Nothing)
(uid, uid_p) = pF "uid" (Nothing)
(array, array_p) = pF "array" (Nothing)
(frames, frames_p) = pF "frames" (Nothing)
(seconds, seconds_p) = pF "seconds" (Nothing)
(minutes, minutes_p) = pF "minutes" (Nothing)
(hours, hours_p) = pF "hours" (Nothing)
(frameRate, frameRate_p) = pF "frameRate" (Nothing)
(songPtr, songPtr_p) = pF "songPtr" (Nothing)
(ctlNum, ctlNum_p) = pF "ctlNum" (Nothing)
(control, control_p) = pF "control" (Nothing)

let startclock d p = do {now <- getNow; d $ (pure (nextSam now)) ~> p}
let oneshot d p = startclock d $ seqP [(0, 1, p)]

let bps x = cps (x/2)
let hush = mapM_ ($ silence) [d1,d2,d3,d4,d5,d6,d7,d8,d9]
let solo = (>>) hush

:set prompt "tidal> "

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.