Tidal

tidal

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:
http://lurk.org/groups/tidal/

Documentation, examples, demos and tutorials

As a starting point, see the main documentation. This links to installation instructions for Linux, Mac OS X and Microsoft Windows, 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]

Source

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

37 thoughts on “Tidal

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

  2. Hi Matt,

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

    cheers

    alex

  3. 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?

  4. 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 https://github.com/yaxu/Dirt.git
    cd Dirt
    make clean; make
    brew install dirt

    Then start dirt like this:


    ./dirt &

  5. 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]

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

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

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

    alex

  9. 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 ?

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

    :(

  11. 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 alex@slab.org) maybe we can arrange a screen-sharing session to get this fixed quickly when I get back.
    Cheers

    alex

  12. 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?

    Mahlen

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

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

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

  16. On Ubuntu 13.10. Followed everything, getting C-c C-s as undefined in emacs. Is there anything I should double check before getting concerned? When I do both the code you have linked at the beginning as well as following each step in the terminal everything comes out fine and seems updated/installed, the .emacs config file is set up properly (I believe…)

  17. Hm, are you opening a file that ends in .tidal, e.g. helloworld.tidal ?

    Otherwise, any error messages when emacs starts up?

  18. I did a fresh install and it works! Now when I try to play anything (for instance, d1 $ sound “bd”) I get the response “tidal> oops send: does not exist (Connection refused)”

    I saw in a twitter discussion you had with someone about checking haskell/tidal mode, its not that. I’m thinking jack audio didn’t get set up properly…

  19. This sounds like the Tidal side is working fine, but dirt is not running. So yes, make sure jack is installed OK, and also that dirt compiled fine, and that you started it up ok. You are close..

  20. I didn’t think going from Mint to Ubuntu would be that hard, but I also might be an idiot, so …? Here is where I am at: Everything is loaded and installed 100%. When I get into emacs and interact with dirt, it is accepted. In my terminal I get this message:

    @l:~/Dirt$ opening ./samples/bd/BT0A0A7.wav
    count: 12554 frames: 12554 channels: 1
    : Success

    No sound whatsoever. If I stop qjackctl with the algorithm running I get send error messages, so I know emacs and Tidal are running to JACK. I had this set up on a desktop with a music production-oriented sound card, I think the issue is in this switch to ubuntu and a laptop with a cheap soundcard. It might even be integrated, Lenovo’s website just says “dolby”. Where would this schism be …

  21. Yes this sounds promising, apart from the no sound part.

    Perhaps it isn’t turned up. The mixer control you see in ubuntu might be a high level pulseaudio control, and qjackctl is probably going closer to the metal, to alsa. So you could try running alsamixer, gnome-alsamixer or something like that to make sure it’s turned up.

    You could also have a look at the ‘setup’ menu in qjackctl. Next to ‘interface’ there should be a button with a “>” symbol. Press it and make sure the right device is selected, i.e. not a hdmi connection or something.

    Not sure what else to suggest..

  22. Hi Alex
    I’m getting C-c C-c > is undefined too in emacs. What was the solution to the above?
    Chris

  23. Hi Alex
    Apologies, I’ve got it working! The tidal.el file within my tidal folder was empty, it must have failed to download. I copied your example in, reloaded and it’s fine.

    Cheers
    Chris

  24. Thanks Chris,
    You’re the second person with this problem, there must be something wrong with the instructions.. Will get someone to fix it (I don’t have a mac)
    have fun,

  25. Thank you, Alex, for this great project.
    I have some improvement suggestions for the documentation. Where do I direct them?

    E.g.:
    I’d replace this:
    This is a different way of specifying a polyrhythm. Instead of both parts taking up the same amount of time, each event within the second part takes up the same amount of time as the second part. You can embed these different forms inside each other:

    By this:


    This is a different way of specifying a polyrhythm. Instead of both parts taking up the same amount of time, each event within the second part takes up the same amount of time as one (top-level) event in the first part. You can embed these different forms inside each other:

  26. Hi Bernhard,

    Documentation edits are very welcome!

    If you are reading it here, and are logged into github, you should see an ‘edit’ button.
    https://github.com/yaxu/Tidal/blob/master/doc/tidal.md

    I’m not sure exactly how this process works, it seems this edit button ‘forks’ the repository so you can make your changes and then send them back to the original repository via a ‘pull request’. I don’t know the extent to which this is automated..

    Cheers

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>