kindohm (a.k.a. mike hodnick)

this is a blog. main site. feed.

tidal-vis installation tutorial

There’s a hidden gem in the TidalCycles git repository called tidal-vis. It allows you to use TidalCycles pattern syntax (and Haskell functions) to create visual color patterns:

I have no idea what code I used to generate the image above, but I assure you that it was really easy, given my existing knowledge of TidalCycles and Haskell.

BUT, installing tidal-vis takes a bit of effort. So here’s how you do it.

DISCLAIMER: I have only gotten this install to work on Linux Mint 18/Cinnamon. I imagine the install is similar on a Mac. I tried it on Windows first, but my threshold for pain only goes so far. Good luck, Windows users.

1. Install Dependencies

Open a terminal and run each of these commands (assuming apt-get on debian Linux):

sudo apt-get install git haskell-platform libghc-gtk-dev
cabal update
cabal install cabal-install
cabal install gtk2hs-buildtools

2. Install TidalCycles

You can skip this step if you already have TidalCycles installed.

cabal install tidal

3. Clone the TidalCycles repository.

There currently is some ambiguity around whether tidal-vis is correctly published to Hackage to be installed from cabal. My approach is to just get the source code and install tidal-vis from the source code later.

git clone https://github.com/tidalcycles/tidal.git

NOTE: Remember where you cloned (e.g. ~/tidal).

4. Install tidal-vis

Did you remember where you cloned? I’ll assume ~/tidal:

cd ~/tidal/vis
cabal install

Bam. But you’re not ready yet…

5. Install Atom and the TidalCycles package

If you’re already using Atom and TidalCycles, then you’ve already done this.

  • go to http://atom.io
  • download and install Atom
  • In Atom, install the TidalCycles package
  • restart Atom

The instructions are also given at tidalcycles.org/getting_started.html

6. Evil Laugh

If you got this far without any problems, congratulations. Cackle deeply.

Let’s Make Patterns

Open Atom. Create and save a file with a .tidal extension. If you ignore this step, TidalCycles will not work.

Enter the following code in the file:

import Sound.Tidal.Vis
import qualified Graphics.Rendering.Cairo as C
import Data.Colour
import Data.Colour.Names
import Data.Colour.SRGB
let draw pat = vLines (C.withSVGSurface) "test.svg" (600,200) pat 3 1

Evaluate each of those lines one by one (Shift+Enter in Atom).

Then type or paste the following code into the file:

draw $ superimpose (iter 8) $ every 2 (slow 3) $
  every 3 (density 5) $ "[grey white black, lightgrey darkgrey]"

Eval the code. It will generate a file named “test.svg” somewhere on your system. In my case, it was put in my home directory. It will look like this:

Hell yes.

What’s next?

Play! Modify the draw code above and see what else you come up with.

tidal-vis isn’t documented very well yet. If you’d like to really dig in to some of the color- and drawing-specific functions, you’ll have to kind of find that information on your own. My best recommendation is to look at the example.hs file located in the TidalCycles repository: github.com/tidalcycles/Tidal/blob/master/vis/examples/example.hs.

Of course if you’d like to help contribute some documentation, that would be amazing and the TidalCycles community would love you.