Hydra & Tidal Multitasking

Hello everyone!

Curious if anyone here has much experience with, and any tips for, simultaneously live coding music and visuals. I have been experimenting with hydra and it seems rather difficult to keep both going... maybe I am just a bad multi-tasker ¯\_(ツ)_/¯

I imagine this is a case where lots of prep before would help.

1 Like

I did a bit of some test runs using the Hydra Atom package to run Hydra alongside Tidal, using a split window with one side being Hydra and one side being Tidal. Worked alright, but requires a kind of set-change-set-change-set-change approach which is for me a bit distracting. :slight_smile:

set-change-set-change-set-change

Exactly how I feel :smile:

It would be quite cool to be able to code up hydra to react to sounds like sound responsive lights.

I know this is possible see here. But it requires quite a bit of plumbing, making it slightly nontrivial to do on the fly.

I am curious if something like this exists?

I have started hacking at it myself [~super early stages~] by way of creating a wrapper around hydra with handlers bound to sample names.

1 Like

I did Tidal + Visuals (using The_Force) once at an event. It was super fun but you get in the flow of either one or the other (not both at the same time). One stays constant while the other changes.

1 Like

Besides the basic audio responsive functions, Hydra can also receive MIDI data and Tidal can send it via SuperCollider, so you might have some global changes planned out to respond to periodically-sent MIDI messages, with local variations handled by the audio responsive functions?

1 Like

Something I did sometimes is to have hydra receiving tidal events, so I can pretty much stay in the tidal side, and have some minimum hydra editions during the session since it will still be reactive to what happens in tidal.
Here is an example of that: https://youtu.be/j547fMz9jlE?t=302

And here, an explanation of the setup... it is in spanish, but you can read the code. https://www.youtube.com/watch?v=t6KZ03Wp66M

8 Likes

Oh gosh I completely forgot that I've done this with Tidal + Processing. I did an entire live set like this! My visuals were built second, specifically designed to work in tandem with pre-composed Tidal audio code. I designed multiple scenes in Processing that received OSC messages from Tidal and responded in real time to the same events as audio. I don't remember the specific code, but I likely shared pattern data between the audio and visual elements with a stack or maybe a do block. The code allowed for plenty of improvisation, but the main pattern paths could not be changed.

So I think you could certainly do the same with Hydra - define patterns as variables and then send the pattern to both Tidal and Hydra. Hydra could then be in sync with Tidal.... if that's what you want.

2 Likes

This is excellent - love the hydra work as well.

So I've been hacking on a wrapper around Hydra that basically responds to events... its called HydraFriend. It binds samples to certain patterns (I call them handlers), listening to port 3333 for messages from tidal as in this example. In addition, I made these handlers stateful.

Consider a simple example where you want a red triangle to rotate everytime bd is heard and invert every 5th time cp is played:

const { Handler, HydraFriend, initialize, Shape } = require("hydrafriend");

initialize(3333);

const triangle = new Shape(3)
                    .red(255)
                    .blue(0)
                    .green(0);

const handle_bd = new Handler("bd");
handle_bd.cycle([360, 0], 1, 0);
handle_bd(() => triangle.rotate(handle_bd.current_cycle());

const handle_cp = new Handle("cp", () => triangle.invert());
handle_cp.every(5);

const hf = new HydraFriend();
hf.register(handle_bd);
hf.register(handle_cp);

It's a bit verbose and very much a wip - a nice little quarantine time killer :sweat_smile:. However, I've enjoyed spontaneously adding functionality to it every once and a while whenever I explore new Hydra functionality.

2 Likes

This is more of a Hydra question so I'm going to keep it in this thread. Sounds like a few of you have been able to get the atom-hydra package installed in Atom. I cannot get it to run. In the developer console of Atom, I see this message upon installing the extension and restarting Atom:

Failed to require the main module of 'atom-hydra' because it requires one or more incompatible native modules (fsevents). Run apm rebuild in the package directory and restart Atom to resolve.

I've upgraded Atom, deleted my .atom folder, started over, but no luck.

Has anyone else seen this error and overcome it? Any suggestions?

EDIT: I resolved this by completely uninstalling the Atom binaries and reinstalling Atom.

I can't get it to run in Atom either. It appears to be installed like any other package but nothing happens when I shift-enter. No interaction when I command-return either.

I've tried reistalling Atom as well. Totally lost at this point.

EDIT: Ahhhhh! I didn't realize that you had to toggle on the package. Makes sense. I learned that from watching this tutorial in spanish with auto-translate on. lol.

Next question: how do people record the output? Is there a built in function to do so?

2 Likes

I just use screen recording software to record the output.. Quicktime screen recording works if you only want to capture the visuals. I use OBS if I want to get the tidal output and the hydra visuals together

1 Like