Yes that's true @HighHarmonics but you can configure multiple targets to use a single tidal instance, to remove this warning and make things easier.
If you edit your BootTidal.hs, you will see that tidal is started with a line that starts with
tidal <- startTidal ...
So by running
stream <- startStream defaultConfig oscmap
after booting tidal, you are indeed starting a second copy of tidal.
A tidy thing to do is replace that startTidal
line. Following the example in the documentation, you would do replace it with:
:{
let target =
Target {oName = "visualiser", -- A friendly name for the target (only used in error messages)
oAddress = "localhost", -- The target's network address, normally "localhost"
oPort = 5050, -- The network port the target is listening on
oLatency = 0.2, -- Additional delay, to smooth out network jitter/get things in sync
oSchedule = Live, -- The scheduling method - see below
oWindow = Nothing, -- Not yet used
oHandshake = False, -- SuperDirt specific
oBusPort = Nothing -- Also SuperDirt specific
}
oscplay = OSC "/play" $ ArgList [("s", Nothing),
("vowel", Just $ VS "a"),
("pan", Just $ VF 0.5),
("volume", Just $ VF 1),
("cut", Just $ VI 1),
("intensity", Just $ VI 0)
]
intensity = pF "intensity"
oscmap = [(target, [oscplay]), (superdirtTarget {oLatency = 0.1}, [superdirtShape])]
:}
tidal <- startStream defaultConfig oscmap
Note that a block of code longer than one line has to be surrounded with :{
and :}
, which I've done above.
I also renamed the 'stream' variable to 'tidal' to match the rest of the boottidal.hs file.
Finally I added the superdirt target to the oscmap so that superdirt will get the messages too (you might not want this, in which case remove it again).
Then you can restart tidal and you should be able to pattern things with the usual d1
, d2
etc, as well as receive OSC/MIDI messages to your patterns.