Tidal is a domain specific language for live coding pattern. This package allows several things:
- OSC messages sent to SC to be dynamicly rendered in realtime with at separate window. Demo of realtime visualisation.
- Colour patterns to be rendered as PDF or SVG files. See Examples.hs module for more help.
- Colour patterns to be rendered to be rendered dynamicly in separate window. See CycleAnimation.hs for more. Demo.
-
Add following lines to BootTidal.hs
-- OSCTarget for pattern visualizing. patternTarget = OSCTarget { oName = "Pattern handler", oAddress = "127.0.0.1", oPort = 5050, oPath = "/trigger/something", oShape = Nothing, oLatency = 0.02, oPreamble = [], oTimestamp = BundleStamp } -- OSCTarget for play 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 SC and to tidal-vis tidal <- startMulti [musicTarget, patternTarget] config -- Send pattern as osc to SC only -- tidal <- startTidal musicTarget config
-
Comment
tidal <- startTidal...
and uncommenttidal <- startMulti...
-
Build tidal-vis and run
cd /tidal-vis stack build stack exec tidal-vis
-
Eval your tidal code.
-
Profit.
For exanple, when pattern is
density 16 $ every 2 rev $ every 3 (superimpose (iter 4)) $ rev "[black blue darkblue, grey lightblue]"
Output image is
To animate pattern (not good performance):
cd ./tidal-vis/
stack repl ./src/CycleAnimation.hs
:set -XOverloadedStrings
ah <- run
swapMVar ah $ degradeBy 0.3 $ every 3 (fast 3) $ Params.s "[red, white, [purple orange green]]"
Look at CycleAnimation.hs for more information. Look at looping
function to change animation form.
tidal-vis
installation tutorial by Kindohm
https://hackage.haskell.org/package/tidal-vis
For more information: tidalcycles