Alex McLean

Making music with text


by Alex on August 2, 2013


Tidal is a mini-language embedded in Haskell, for the live coding of pattern.

At the time of writing, the current version is 0.2.2, made during a residency at Hangar organised by l’ull cec.

Join the new tidal discussion group here:

Documentation, examples, demos and tutorials

As a starting point, see the main documentation. This links to installation instructions for Linux and Mac OS X, and describes a large portion of Tidal’s functionality. It’s still being expanded, so it’s worth checking back from time to time.

For some tech demo videos showing some aspects of Tidal, have a look at this blog post.

For some examples of patterns see the 365tidalpatterns (a-pattern-a-day), tidal experiments and tidalcycles (tweet-sized patterns) projects.

Mike Hodnick has a great tutorial on breakbeat slicing with Tidal.

Also here are some examples of Tidal in live performance [1, 2, 3, 4]


The sourcecode is available under the GNU Public License version 3 (or later) on github.

24 thoughts on “Tidal

  1. Pingback: Flash on eval « Alex McLean

  2. Duncan says:

    This work is really great, I’m going to try installing it right now!

  3. Duncan says:

    Step 1: 403 Forbidden for datadirt :(

  4. Alex says:

    Oops, fixed..

  5. matt says:

    Tidal really looks great, especially because it’s pattern based.
    I have a problem installing it with cabal anyway: when trying to compile SHA package (which is a websockets dependency) cabal gets an Exit 9, or out of memory error. Enhancing the swap, it jut gets stuck there. I’m on a MacOSX VM running crunchbang linux (I think it’s a debian derivation) …

  6. Alex says:

    Hi Matt,

    My guess is that you haven’t given the VM enough memory. I’d give crunchbang at least 512M, preferably 1024M.



  7. Sam says:

    the github link is broken!

  8. Alex says:

    Hmm yes, a problem with github itself, hopefully they’ll fix it soon.

  9. Sam says:

    yep, now it’s ok!
    but when trying to install dirt via brew it says that there’s no available formula for ‘dirt’. is it changed?

  10. Alex says:

    I don’t know, I made the software but someone else kindly did the homebrew package (I don’t have a mac).. But in the last day I’ve found out that the homebrew package for dirt doesn’t include samples. So best to install from github anyway.

    So instead of ‘brew install dirt’ try this:

    brew install liblo
    brew install jack
    git clone
    cd Dirt
    make clean; make
    brew install dirt

    Then start dirt like this:

    ./dirt &

  11. Sam says:

    update. now it works!

  12. Thomas says:

    Tidal first timer here – it may be obvious to most but is there an easier way to stop all audio output? [other than by completely killing tidal within emacs (Ctl-C, Ctl-Q) - which is what I've been doing]

  13. Alex says:

    Hi Thomas,
    Oops, I’ve just checked and this is a major omission in the documentation!

    If you evaluate the word hush (i.e. put it on a line of its own and do ctrl-c ctrl-c), then all the patterns go silent.

    If you just want to stop a single pattern then you can just set it to the empty pattern silence, e.g.:

    d1 silence

  14. Grom says:

    Tidal and live coder first timer here : sorry I’m not fluent in English. I work OSX Mavericks. I follow the instructions to install Tidal but i’ve some problems

    I would like to starts Jack in my Terminal windows :
    “JACK compiled with POSIX SHM support.
    `default’ server already active”

    After i would like to start Dirt :
    init audio
    unique name `dirt-01′ assigned
    engine sample rate: 44100
    init open sound control
    liblo server error 9904 in path (null): cannot find free port
    cannot read event response from client [dirt-01] (Undefined error: 0)
    [3]+ Exit 1 jackd -d coreaudio
    Segmentation fault: 11

    Then i return to Emacs do C-c C-s :
    Can’t exec program: /usr/bin/ghci
    Process tidal exited abnormally with code 1

    PLEASE HELP ME !!!!!

  15. Alex says:

    Hi Grom,

    It looks to me like dirt is already running. So maybe that part is OK?

    It looks like you set the path to the haskell interpreter to “/usr/bin/ghci” in your .emacs file. There may be no reason to do that. Try deleting that line and restarting emacs.

    Hope this helps, any problems let me know


  16. Grom says:

    Ok Alex thanks for this helps :

    Dirt > ok
    Jack > ok

    In your instructions :
    ” Then back in emacs, open a file called something ending with .tidal, such as test.tidal”

    Dawn .. Where is this file ?

  17. Alex says:

    Hey Grom, it means create a new, empty file.


  18. Grom says:

    Iback in emacs, create and open a file called something ending with .tidal, such as test.tidal >

    “Then you start up tidal, by doing ctrl-c followed by ctrl-s”
    C-c C-c > is undefined


  19. Grom says:

    C-c C-s > undefined too

  20. Alex says:

    Hey Grom,
    Sorry about these problems. I think there must be some problem with OSX Mavericks.
    I’m travelling for a few days but if you drop me a line (to maybe we can arrange a screen-sharing session to get this fixed quickly when I get back.


  21. Mahlen Morris says:

    Out of curiosity, is Tidal fundamentally incompatible with Windows? Or is it not mentioned in the installation info just because, say, you can’t test it because you don’t have a Windows machine, or some other reason?


  22. Alex says:

    Tidal should be fine, but the dirt synth would need porting over.. Easiest way would be to use portaudio.. I don’t use windows but happy to accept patches.

  23. gonzo says:

    got that “c-s c-c” error too. im running a fresh ubuntu 13.10, so it shouldnt be about the os. plz tell me how to fix

  24. gonzo says:

    ah okay, got it. i read the emacs part wrong and didnt create a config file, but a folder named .emacs containing a config file. sorry! working fine now

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>