TidalCycles + Hydra Interaction

Has anyone been able to get TidalCycles to interact with Hydra? I’m trying to get the sounds from TC to control the animations in Hydra. I’d appreciate any help.

While this is an interesting question, it doesn’t sound like a SuperCollider question.

There is perhaps a chance that somebody here has experimented with that, but I think there’s a higher probability of finding an answer in the Tidal or Hydra user communities.


I just figured since Tidal uses SuperCollider, it’s related. SC has a larger community than TC or Hydra.

Thinking about it further… I haven’t looked into superdirt, but I’m pretty sure the data flow is Tidal --> OSC messages (A) --> sclang --> other OSC messages (B) --> scsynth --> sound.

If I’m right about that, then your question is related in the sense that you could use sclang to intercept the A messages, do things to them, and then communicate them (somehow…?) to Hydra.

Step 1 would be to figure out what Tidal is sending, either by looking at Tidal/superdirt source code, or by tracing incoming messages: OSCFunc.trace(true, true);.

Step 2 would be to figure out how to pass information to Hydra. I don’t personally know anything about that. You might even have to ask Olivia.

If that’s the right approach, then keep in mind that the problem is about integrating three different systems, so you’ll probably need help from all three communities.


Thanks for this! It’s a step in a good direction.

To be honest though, I’m not that good of a programmer. I don’t know much about computer science concepts or how things interact with each other. SuperCollider was my first language, and I can get by in it, but only because I know sound synthesis concepts.

I did find this link in github, but was confused where to put that code. Do I put it in hydra, SC, or tidal?? It’s not that clear

Where would I implement that first ‘msg’ code: “msg.setPort(3333)”? In Tidal, SuperCollider, or Hydra? I have tried all three but get error messages from all three

Given that your link points to a .js file, I’d guess it has to run in the browser, where you also run the hydra scripts itself. (But I haven’t tried it)

(That is, I guess you’d need to include the .js file as a script using proper html syntax)

I agree with shiihs – this should be run in the Hydra environment.

I never used Hydra before and I don’t know anything about it except for reading a couple of webpages yesterday. It looks really cool, but I have no idea how you should run that file. I think you should ask Hydra users.

Also note in your link:

// To run examples, open file tidal-forward.sc in SuperCollider. This file forwards all messages
// received from tidal in SuperCollider to an additional port (3333)

So you will have to find tidal-forward.sc somewhere. I’m guessing maybe in the superdirt sources? (I know SC quite well but I’m not a Tidal user.) Then open it in the IDE, and ctrl-A ctrl-return (or on Mac, cmd-A cmd-return).

If you don’t run that file in SC, then SC won’t send the messages along to the Hydra port and Hydra won’t have anything to respond to.


I contacted Olivia herself thru email and she sent me the ‘tidal-forward.sc’. I’m supposed to run all of that code in Hydra, and I get all of it to work except for one line of code, the first line. She asked me to visit the forum for any further questions, she hangs out in there. I have asked my questions in there, so just waiting for a response.

I can’t get the “msg.setPort(3333)” to work in Hydra. I get the error message: “‘node’ could not be spawned. Is it installed and on your path? If so please open an issue on the package spawning the process”. Do you know what this could mean?

To be honest, no, I don’t.

Except, in “please open an issue on the package spawning the process,” the spawning package is Hydra. So you’ve done that (asked at the Hydra forum).

That’s about all you can do for now.


snippet to use the Tidal mini-notation into Hydra – Charlie Roberts