[sharing] I made a M4L looper with gen~, check it out?

Evan's icon

I eventually want to submit this as a project, but it's not quite polished enough for me to take the plunge, and I want to get documentation together. I made a very brief overview of the device that you cna check out here:

All the audio processes are done in one big codebox in gen~. It was my first stab and writing audio code at that level, and I learned a ton. And also made a bunch of mistakes, some of which are still in there. Another reason not to put it through as a project yet ;)

Sorry if the post seems self serving, but I've been having a lot of fun using this, and maybe someone here will too!

brendan mccloskey's icon

Great video, looks like fun!

Cptnfantasy's icon

This is awesome, thanks.

dibek's icon

Hi Evan, would really love to give this a try, looks great. If possible, please send it to martin(dot)dibek(at)icloud.com

thanks a lot in advance!

Evan's icon

@Brenden thanks for checking it out!

@Dibek Sent :) Thanks for your interest!

dibek's icon

Thanks, Evan! :)

Vince Cimo's icon

Hey man would love to try this out and pick your brain. I'm developing a similar but different looper and am getting stuck synchronizing the loop to the ableton clock. Would love to chat. If you get a second to email your device to vince.cimo@gmail.com that would be awesome. Thanks brother.

Evan's icon

I am simply starting an a clock in my gen code whenever Live's transport starts. If it ever get's off from Live's clock due to tempo changes, meter changes, or if you start the transport in the middle of a bar, you can manually resync to the next 16th note. There's not much synchronization except for a few events.

How are you building your looper? Native Objects? Gen~? Externals?

I'll send you over a recent beta to check out later today.

Vince Cimo's icon

Mostly building using java externals, i'm using a javascript object as a passthrough which sends the java external Live transport data. I'm attaching a dead simple project that shows how if the transport is running and there's a loop & you hit play, it should sync up by calculating the ms till the next bar. I'd be happy to share the whole project with you if you're interested. It's a midi looper, so no audio data is being processed.

clock.amxd
amxd
Asher's icon

Hey Evan, keen to take a look at this. Email is arhelazary@gmail.com

Thanks!

Evan's icon

@vince cimo: Your javascript wasn't included in the device, so I can't take a look at that. But after hearing your description, it sounds like you are using both javascript, and the Live API to calculate timing parameters/events? javascript gnerally shouldn't be used (in my experience) for tasks that require really precise timing. And the Live API definitely shouldn't be used if you're after really accurate data, there's always been a bit of unpredictability when using the Live API to synchronize (again, in my experience).

There are a few things you could do. The easiest might be using plugsync~ or plugphasor~ to get the audio rate clock of Live and do all your timing that way. Even if you're only recording MIDI events and you're not processing any audio, you might get better results if you were clocking with audio rather than asking the Live API for info, and then calculating the delay time. Here's a few ways to do it:

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

@asher elazary: Check your email!

Vince Cimo's icon

Thanks so much for the info! I'm gonna play around with this and see if I can get things syncing tighter. By the way....you should charge for your patch and release it to the public. There's a market for that sort of thing.....

Natalie's icon

Hey Evan

Looks like interesting project! I would love to check out your device. If you have a minute to send it my email is usermotherearth@protonmail.com

Thank you.

piearesquared's icon

This is so cool! Live looping is a big part of what I do, I would love to try to this out if possible. My email is: piersquared237@gmail.com

Great job, man

Evan's icon

@vince I plan on doing that once I have all the features in and working (controller integration is taking some time) and I do some legit documentation.

@Natalie Sent!

@Mohammed Sent!

If you find some time to use the device I would love to hear what you think. I'm finalizing features really soon for a release version.

Vince Cimo's icon

@evan! you are a badass. It was a bit of a pain but I pulled all of my data manipulation out of JS and into Max and fed that into my Java external and this thing is working so much better. Thanks so much for getting me unstuck.

Evan's icon

Glad to hear the advice was helpful!

José Martínez's icon

Hi there @evan!

I was wondering if this project is still alive. I'd love to see the inside of how you did the coding in gen~ for this looper. Been trying to this and using the Ableton but it has proven to be very faulty for timing. I'd love it if you are open to sharing.