From 9e5fb39c6adfb9e17fcd3c661556b3b3ecd215ee Mon Sep 17 00:00:00 2001 From: loooph Date: Tue, 28 Feb 2023 19:03:10 +0100 Subject: [PATCH] add bootfile for tidal-vis --- BootTidalVis.hs | 97 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 BootTidalVis.hs diff --git a/BootTidalVis.hs b/BootTidalVis.hs new file mode 100644 index 0000000..d12c361 --- /dev/null +++ b/BootTidalVis.hs @@ -0,0 +1,97 @@ +:set -XOverloadedStrings +:set prompt "" + +import Sound.Tidal.Context + +import System.IO (hSetEncoding, stdout, utf8) +hSetEncoding stdout utf8 + +-- Target and shape for pattern visualizing. +patternTarget = Target { oName = "Pattern handler", oAddress = "127.0.0.1", oPort = 5050, oBusPort = Nothing, oLatency = 0.02, oWindow = Nothing, oSchedule = Pre BundleStamp, oHandshake = False } +patternShape = OSC "/trigger/something" $ Named {requiredArgs = []} + +-- Target for playing music via SuperCollider. +musicTarget = superdirtTarget { oLatency = 0.1, oAddress = "127.0.0.1", oPort = 57120 } + +config = defaultConfig {cFrameTimespan = 1/20} + +-- Send pattern as OSC both to SuperCollider and to tidal-vis. +tidal <- startStream config [(musicTarget, [superdirtShape]), (patternTarget, [patternShape])] + +-- Send pattern as OSC to SuperCollider only. +-- tidal <- startTidal musicTarget config + +--tidal <- startTidal (superdirtTarget {oLatency = 0.05, oAddress = "127.0.0.1", oPort = 57120}) (defaultConfig {cVerbose = True, cFrameTimespan = 1/20}) + +:{ +let only = (hush >>) + p = streamReplace tidal + hush = streamHush tidal + panic = do hush + once $ sound "superpanic" + list = streamList tidal + mute = streamMute tidal + unmute = streamUnmute tidal + unmuteAll = streamUnmuteAll tidal + unsoloAll = streamUnsoloAll tidal + solo = streamSolo tidal + unsolo = streamUnsolo tidal + once = streamOnce tidal + first = streamFirst tidal + asap = once + nudgeAll = streamNudgeAll tidal + all = streamAll tidal + resetCycles = streamResetCycles tidal + setCycle = streamSetCycle tidal + setcps = asap . cps + getcps = streamGetcps tidal + getnow = streamGetnow tidal + xfade i = transition tidal True (Sound.Tidal.Transition.xfadeIn 4) i + xfadeIn i t = transition tidal True (Sound.Tidal.Transition.xfadeIn t) i + histpan i t = transition tidal True (Sound.Tidal.Transition.histpan t) i + wait i t = transition tidal True (Sound.Tidal.Transition.wait t) i + waitT i f t = transition tidal True (Sound.Tidal.Transition.waitT f t) i + jump i = transition tidal True (Sound.Tidal.Transition.jump) i + jumpIn i t = transition tidal True (Sound.Tidal.Transition.jumpIn t) i + jumpIn' i t = transition tidal True (Sound.Tidal.Transition.jumpIn' t) i + jumpMod i t = transition tidal True (Sound.Tidal.Transition.jumpMod t) i + jumpMod' i t p = transition tidal True (Sound.Tidal.Transition.jumpMod' t p) i + mortal i lifespan release = transition tidal True (Sound.Tidal.Transition.mortal lifespan release) i + interpolate i = transition tidal True (Sound.Tidal.Transition.interpolate) i + interpolateIn i t = transition tidal True (Sound.Tidal.Transition.interpolateIn t) i + clutch i = transition tidal True (Sound.Tidal.Transition.clutch) i + clutchIn i t = transition tidal True (Sound.Tidal.Transition.clutchIn t) i + anticipate i = transition tidal True (Sound.Tidal.Transition.anticipate) i + anticipateIn i t = transition tidal True (Sound.Tidal.Transition.anticipateIn t) i + forId i t = transition tidal False (Sound.Tidal.Transition.mortalOverlay t) i + d1 = p 1 . (|< orbit 0) + d2 = p 2 . (|< orbit 1) + d3 = p 3 . (|< orbit 2) + d4 = p 4 . (|< orbit 3) + d5 = p 5 . (|< orbit 4) + d6 = p 6 . (|< orbit 5) + d7 = p 7 . (|< orbit 6) + d8 = p 8 . (|< orbit 7) + d9 = p 9 . (|< orbit 8) + d10 = p 10 . (|< orbit 9) + d11 = p 11 . (|< orbit 10) + d12 = p 12 . (|< orbit 11) + d13 = p 13 + d14 = p 14 + d15 = p 15 + d16 = p 16 +:} + +:{ +let getState = streamGet tidal + setI = streamSetI tidal + setF = streamSetF tidal + setS = streamSetS tidal + setR = streamSetR tidal + setB = streamSetB tidal +:} + +:set prompt "tidal> " +:set prompt-cont "" + +default (Pattern String, Integer, Double)