Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tidalcycles/tidal-vis

Tidal is a domain specific language for live coding pattern. This package allows colour patterns to be rendered as PDF or SVG files.
https://github.com/tidalcycles/tidal-vis

live-coding music tidalcycles visualisation

Last synced: 2 months ago
JSON representation

Tidal is a domain specific language for live coding pattern. This package allows colour patterns to be rendered as PDF or SVG files.

Awesome Lists containing this project

README

        

# tidal-vis

Tidal is a domain specific language for live coding pattern. This package allows several things:

1. OSC messages sent to SC to be dynamicly rendered in realtime with at separate window.
[Demo of realtime visualisation.](https://youtu.be/bZS6WufE8FY)
2. Colour patterns to be rendered as PDF or SVG files. See _Examples.hs_ module for more help.
3. Colour patterns to be rendered to be rendered dynamicly in separate window. See _CycleAnimation.hs_ for more. [Demo.](https://youtu.be/cCmCSSb4vHs)

## (1) Realtime animation during livecoding

1. 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

2. Comment `tidal <- startTidal...` and uncomment `tidal <- startMulti...`

3. Build _tidal-vis_ and run

cd /tidal-vis
stack build
stack exec tidal-vis

4. Eval your tidal code.
5. Profit.

## (2) Render SVG or PDF

For exanple, when pattern is

density 16 $ every 2 rev $ every 3 (superimpose (iter 4)) $ rev "[black blue darkblue, grey lightblue]"

Output image is

![0](https://i.imgur.com/MPbpH0n.jpg)

## (3) Animate one pattern

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.

## Tutorial

[`tidal-vis` installation tutorial](https://www.kindohm.com/posts/2016/2016-09-02-tidal-vis/) by [Kindohm](http://github.com/kindohm)

## Hackage

https://hackage.haskell.org/package/tidal-vis

## Misc

For more information: [tidalcycles](http://tidalcycles.org)