174 lines
5.7 KiB
Haskell
174 lines
5.7 KiB
Haskell
|
:set -XOverloadedStrings
|
||
|
:set prompt ""
|
||
|
|
||
|
import Sound.Tidal.Context
|
||
|
|
||
|
import System.IO (hSetEncoding, stdout, utf8)
|
||
|
|
||
|
hSetEncoding stdout utf8
|
||
|
|
||
|
listenPortOne = 8001
|
||
|
listenPortTwo = 8002
|
||
|
listenPortThree = 8003
|
||
|
listenPortFour = 8004
|
||
|
listenPortFive = 8005
|
||
|
listenPortSix = 8006
|
||
|
listenPortSeven = 8007
|
||
|
listenPortEight = 8008
|
||
|
listenPortNine = 8009
|
||
|
listenPortTen = 8010
|
||
|
listenPortEleven = 8011
|
||
|
listenPortTwelve = 8012
|
||
|
listenPortThriteen = 8013
|
||
|
listenPortFourteen = 8014
|
||
|
listenPortFifteen = 8015
|
||
|
listenPortSixteen = 8016
|
||
|
listenPortSeventeen = 8017
|
||
|
listenPortEighteen = 8018
|
||
|
listenPortNineteen = 8019
|
||
|
listenPortTwenty = 8020
|
||
|
listenPortTwentyOne = 8021
|
||
|
listenPortTwentyTwo = 8022
|
||
|
listenPortTwentyThree = 8023
|
||
|
listenPortTwentyFour = 8024
|
||
|
listenPortTwentyFive = 8025
|
||
|
listenPortTwentySix = 8026
|
||
|
listenPortTwentySeven = 8027
|
||
|
listenPortTwentyEight = 8028
|
||
|
listenPortTwentyNine = 8029
|
||
|
listenPortThirty = 8030
|
||
|
listenPortThirtyOne = 8031
|
||
|
listenPortThirtyTwo = 8032
|
||
|
|
||
|
:{
|
||
|
let lolinTarget =
|
||
|
Target {oName = "lolin",
|
||
|
oAddress = "192.168.1.110",
|
||
|
oPort = 7000,
|
||
|
oLatency = 0.15,
|
||
|
oSchedule = Live,
|
||
|
oWindow = Nothing,
|
||
|
oHandshake = False,
|
||
|
oBusPort = Nothing
|
||
|
}
|
||
|
|
||
|
lolinLedAnalog = [("intensity", Just $ VF 0)]
|
||
|
lolinLedDigital = [("blink", Just $ VS "off")]
|
||
|
|
||
|
lolinFormats = [(OSC "/led/analog" $ ArgList lolinLedAnalog),
|
||
|
(OSC "/led/digital" $ ArgList lolinLedDigital)
|
||
|
]
|
||
|
lolinMap = [(lolinTarget, lolinFormats)]
|
||
|
:}
|
||
|
|
||
|
lolinStream <- startStream (defaultConfig {cCtrlAddr = "0.0.0.0", cCtrlPort = 6010}) lolinMap
|
||
|
|
||
|
h1 = streamReplace lolinStream 1
|
||
|
|
||
|
:{
|
||
|
let devkitTarget =
|
||
|
Target {oName = "devkit",
|
||
|
oAddress = "192.168.1.111",
|
||
|
oPort = 7000,
|
||
|
oLatency = 0.15,
|
||
|
oSchedule = Live,
|
||
|
oWindow = Nothing,
|
||
|
oHandshake = False,
|
||
|
oBusPort = Nothing
|
||
|
}
|
||
|
|
||
|
devkitLedAnalog = [("intensity", Just $ VF 0)]
|
||
|
devkitLedDigital = [("blink", Just $ VS "off")]
|
||
|
|
||
|
devkitFormats = [(OSC "/led/analog" $ ArgList devkitLedAnalog),
|
||
|
(OSC "/led/digital" $ ArgList devkitLedDigital)
|
||
|
]
|
||
|
devkitMap = [(devkitTarget, devkitFormats)]
|
||
|
:}
|
||
|
|
||
|
devkitStream <- startStream (defaultConfig {cCtrlAddr = "0.0.0.0", cCtrlPort = 6020}) devkitMap
|
||
|
|
||
|
h2 = streamReplace devkitStream 1
|
||
|
|
||
|
|
||
|
:{
|
||
|
let intensity = pF "intensity"
|
||
|
blink = pS "blink"
|
||
|
:}
|
||
|
|
||
|
|
||
|
tidal <- startTidal (superdirtTarget {oLatency = 0.05, oAddress = "127.0.0.1", oPort = 57120}) (defaultConfig {cVerbose = True, cFrameTimespan = 1/20, cCtrlAddr = "0.0.0.0", cCtrlPort = 6030})
|
||
|
|
||
|
:{
|
||
|
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 "> "
|
||
|
:set prompt-cont ""
|
||
|
|
||
|
default (Pattern String, Integer, Double)
|