[Sharing] Gesture/Pattern Recorder

Rodrigo's icon

Here's a gesture/pattern recorder I worked out for the capturing and playback of complex gestural data. You can play the data back at any speed (including backwards) and control it quite simply ('record', 'play', etc... messages).

Max Patch
Copy patch and select New From Clipboard in Max.

Using a nodes thing from a help patch for this demo but the intended usage would be connecting it to a gamepad data stream.

Rodrigo's icon

This is a small part of it. This will handle the basic gesture loop stuff, and eventually be expanded to handle 'out of time' building up of super complex gestures (via overdubbing and varispeed control over this pattern recorder).

Wetterberg's icon

I can't get it to work, for some reason?

Rodrigo's icon

The balls should be bouncing by default, then hit "record", after a second or two hit "end", then hit "play" after that to stop it. Then tweak the speed. Duration is only used as an init setting (the max duration you plan on recording for).

Wetterberg's icon

yeah, I'm getting zero movement. Neither before nor tweaking.

Rodrigo's icon

That's weird. Works fine for me copy/pasting it in. Is audio turned on and is the left nodes thing doing a bouncing-ball type thing?

Wetterberg's icon

audio is turned on, no movement on either side :/

I had a hunch it would be some kind of java problem (just upgraded from mountain lion to yosemite) but there don't seem to be any java dependencies?

Rodrigo's icon

If you go into the nodes help file does the "fun" tab work? There's no dependencies in there, though I have installed the java extensions that Max asked for when trying to run a jitter patch.

Max Patch
Copy patch and select New From Clipboard in Max.

Well here's a far sexier version that should just work (no nodes or anything like that). The actual pattern recorder is just max/msp objects and based around seq~ so that shouldn't present any problems.

Wetterberg's icon

The fun tab does work, which is odd.
That new patch works too, it's pretty danged slick. Right now we're working with a tick-driven mini thing that looks kind of like this:

Max Patch
Copy patch and select New From Clipboard in Max.

aw.dawn.looper

Rodrigo's icon

That's weird as shit then.

Glad you got it working in the end.

Really happy with the implementation, and plan on adding more to it (overdub, scrubbing, etc...) at some point, but this sets the groundwork. The idea is roughly based on a monome app (mesh), though I couldn't use it straight out of the box, and wanted different features/functionality anyways, so basically built it from the ground up again.

Julien Bayle's icon

Thanks a lot Rodrigo: 2 years after this, I grabbed it for a student (& artist) I'm currently teaching, and I added (cheap and fast) basic things:
- small and cheap interpolation if speed very slow
- you click on the left it starts to track and you release and it starts to play on the right

Max Patch
Copy patch and select New From Clipboard in Max.

Julien Bayle's icon

Thanks a lot Rodrigo: 2 years after this, I grabbed it for a student (& artist) I'm currently teaching, and I added (cheap and fast) basic things:
- small and cheap interpolation if speed very slow
- you click on the left it starts to track and you release and it starts to play on the right

forgive my fastness... I didn't have time to do more on it.

Max Patch
Copy patch and select New From Clipboard in Max.

Klangschmied's icon

@ Julian
thanks for psosting it.
First id did not work, but audio has to be on (as I read in the thread).
Small correction the loadmess argument has to be 1. (float).

Julien Bayle's icon

actually, the 1. is the speed of both record AND play.
We'd need to unlink this in order to record to 1. and to play at any speed without having to put it again at 1. when we switch back to record.