Created
October 5, 2019 23:31
-
-
Save jarmitage/57e2ff7986982888b25203c961ebad8a to your computer and use it in GitHub Desktop.
Multiple Tidal streams to multiple OSCTargets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- https://tidalcycles.org/index.php/Custom_OSC | |
:set -XOverloadedStrings | |
:set prompt "" | |
:set prompt-cont "" | |
import Sound.Tidal.Context | |
superDirt <- startTidal (superdirtTarget {oLatency = 0.1, oAddress = "127.0.0.1", oPort = 57120}) (defaultConfig {cFrameTimespan = 1/20}) | |
:{ | |
let d = streamReplace superDirt | |
-- Pattern state | |
hush = streamHush superDirt | |
list = streamList superDirt | |
mute = streamMute superDirt | |
unmute = streamUnmute superDirt | |
solo = streamSolo superDirt | |
unsolo = streamUnsolo superDirt | |
-- Globals | |
once = streamOnce superDirt | |
nudgeAll = streamNudgeAll superDirt | |
all = streamAll superDirt | |
resetCycles = streamResetCycles superDirt | |
-- Transitions | |
xfade i = transition superDirt True (Sound.Tidal.Transition.xfadeIn 4) i | |
xfadeIn i t = transition superDirt True (Sound.Tidal.Transition.xfadeIn t) i | |
histpan i t = transition superDirt True (Sound.Tidal.Transition.histpan t) i | |
wait i t = transition superDirt True (Sound.Tidal.Transition.wait t) i | |
waitT i f t = transition superDirt True (Sound.Tidal.Transition.waitT f t) i | |
jump i = transition superDirt True (Sound.Tidal.Transition.jump) i | |
jumpIn i t = transition superDirt True (Sound.Tidal.Transition.jumpIn t) i | |
jumpIn' i t = transition superDirt True (Sound.Tidal.Transition.jumpIn' t) i | |
jumpMod i t = transition superDirt True (Sound.Tidal.Transition.jumpMod t) i | |
interpolate i = transition superDirt True (Sound.Tidal.Transition.interpolate) i | |
interpolateIn i t = transition superDirt True (Sound.Tidal.Transition.interpolateIn t) i | |
clutch i = transition superDirt True (Sound.Tidal.Transition.clutch) i | |
clutchIn i t = transition superDirt True (Sound.Tidal.Transition.clutchIn t) i | |
anticipate i = transition superDirt True (Sound.Tidal.Transition.anticipate) i | |
anticipateIn i t = transition superDirt True (Sound.Tidal.Transition.anticipateIn t) i | |
forId i t = transition superDirt False (Sound.Tidal.Transition.mortalOverlay t) i | |
mortal i lifespan release = transition superDirt True (Sound.Tidal.Transition.mortal lifespan release) i | |
-- Default pattern IDs | |
d1 = d 1 . (|< orbit 0) | |
d2 = d 2 . (|< orbit 1) | |
d3 = d 3 . (|< orbit 2) | |
d4 = d 4 . (|< orbit 3) | |
d5 = d 5 . (|< orbit 4) | |
d6 = d 6 . (|< orbit 5) | |
d7 = d 7 . (|< orbit 6) | |
d8 = d 8 . (|< orbit 7) | |
d9 = d 9 . (|< orbit 8) | |
d10 = d 10 . (|< orbit 9) | |
d11 = d 11 . (|< orbit 10) | |
d12 = d 12 . (|< orbit 11) | |
d13 = d 13 | |
d14 = d 14 | |
d15 = d 15 | |
d16 = d 16 | |
:} | |
:{ | |
bitwigTarget = OSCTarget {oName = "Bitwig", | |
oAddress = "127.0.0.1", | |
oPort = 10000, | |
oPath = "/bitwig", | |
oShape = Nothing, | |
oLatency = 0.02, | |
oPreamble = [], | |
oTimestamp = MessageStamp} | |
:} | |
bitwig <- startTidal bitwigTarget (defaultConfig {cFrameTimespan = 1/20}) | |
:{ | |
let b = streamReplace bitwig | |
-- Pattern state | |
hushB = streamHush bitwig | |
listB = streamList bitwig | |
muteB = streamMute bitwig | |
unmuteB = streamUnmute bitwig | |
soloB = streamSolo bitwig | |
unsoloB = streamUnsolo bitwig | |
-- Globals | |
allB = streamAll bitwig | |
onceB = streamOnce bitwig | |
nudgeAllB = streamNudgeAll bitwig | |
resetCyclesB = streamResetCycles bitwig | |
-- -- Transitions: not sure how to handle these for multiple targets | |
-- xfade i = transition bitwig True (Sound.Tidal.Transition.xfadeIn 4) i | |
-- xfadeIn i t = transition bitwig True (Sound.Tidal.Transition.xfadeIn t) i | |
-- histpan i t = transition bitwig True (Sound.Tidal.Transition.histpan t) i | |
-- wait i t = transition bitwig True (Sound.Tidal.Transition.wait t) i | |
-- waitT i f t = transition bitwig True (Sound.Tidal.Transition.waitT f t) i | |
-- jump i = transition bitwig True (Sound.Tidal.Transition.jump) i | |
-- jumpIn i t = transition bitwig True (Sound.Tidal.Transition.jumpIn t) i | |
-- jumpIn' i t = transition bitwig True (Sound.Tidal.Transition.jumpIn' t) i | |
-- jumpMod i t = transition bitwig True (Sound.Tidal.Transition.jumpMod t) i | |
-- interpolate i = transition bitwig True (Sound.Tidal.Transition.interpolate) i | |
-- interpolateIn i t = transition bitwig True (Sound.Tidal.Transition.interpolateIn t) i | |
-- clutch i = transition bitwig True (Sound.Tidal.Transition.clutch) i | |
-- clutchIn i t = transition bitwig True (Sound.Tidal.Transition.clutchIn t) i | |
-- anticipate i = transition bitwig True (Sound.Tidal.Transition.anticipate) i | |
-- anticipateIn i t = transition bitwig True (Sound.Tidal.Transition.anticipateIn t) i | |
-- forId i t = transition bitwig False (Sound.Tidal.Transition.mortalOverlay t) i | |
-- mortal i lifespan release = transition bitwig True (Sound.Tidal.Transition.mortal lifespan release) i | |
-- Default pattern IDs | |
b1 = b 1 . (|< orbit 0) | |
b2 = b 2 . (|< orbit 1) | |
b3 = b 3 . (|< orbit 2) | |
b4 = b 4 . (|< orbit 3) | |
b5 = b 5 . (|< orbit 4) | |
b6 = b 6 . (|< orbit 5) | |
b7 = b 7 . (|< orbit 6) | |
b8 = b 8 . (|< orbit 7) | |
b9 = b 9 . (|< orbit 8) | |
b10 = b 10 . (|< orbit 9) | |
b11 = b 11 . (|< orbit 10) | |
b12 = b 12 . (|< orbit 11) | |
b13 = b 13 | |
b14 = b 14 | |
b15 = b 15 | |
b16 = b 16 | |
:} | |
-- globals | |
:{ | |
let asap = once | |
setcps = asap . cps | |
:} | |
-- Group state | |
:{ | |
let setI a b = streamSetI superDirt a b >> streamSetI bitwig a b | |
setF a b = streamSetF superDirt a b >> streamSetF bitwig a b | |
setS a b = streamSetS superDirt a b >> streamSetS bitwig a b | |
setR a b = streamSetR superDirt a b >> streamSetR bitwig a b | |
setB a b = streamSetB superDirt a b >> streamSetB bitwig a b | |
:} | |
:set prompt "tidal> " |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment