I made a looper/chopper for the Push.

Evan's icon

EDIT: New version with the ~karma external: https://github.com/dataf1ow/Push_Karma

I totally rebuilt this in the last two weeks, and it finally is in a form that I feel comfortable sharing the device. I don't expect many people to be interested, but it the integration with the Push is pretty fun.

Any feedback from a Push user would be grand.

Igneous Rock's icon

Big thanks for sharing this, I can tell it took a lot of work and I like it a lot. Seems like something that could've been developed by Ableton in-house, works so intuitively. Here's my feedback:

-This is ny first experience with a push M4L device, I love that I can toggle between using the Push's regular features and this whole new world of live-looping features (using the rarely used Tap Tempo button, perfect). Best of both worlds.
-Physically playing the live-recorded audio loops as a sequence is totally awesome, I haven't seen this anywhere else. Having access to 4 loops on a single "page" of the Push is awesome, this is sufficiently complex and elegant for lots of use.
-Love that I can MIDI record the glitchly manipulations I make to my loop, and then reset it easily.
-Overdubbing, even while there are glitchly manipulations going down, is very cool thanks for karma~

more constructive feedback:
-I am wondering if I must set my loop length ahead of time on the computer? I'd love the flexiblity of making loops on the fly of any duration--is this possible? The 16 Push pads per loop definitely seemed to favor 4/4 time setups, so I am wondering what kind of polymetric relationships between the loops is possible.
-I think your setup for adjusting the size and speed of the loop with knobs is very cool--the way you can let go of the knob and it instantly goes back to normal (and then just by being touched it goes back to your previous setting--wow!). However, I'd sometimes like to leave my size and speed changes, and use my hands elsewhere. Have you explored this?
-When "playing" the guts of the loops, I find that it's very responsive, but still not quite to the same lightning-quick degree as if I were playing a drum rack. Is there quantization at work here, or just a necessary bit of latency for working with audio loops?

thanks again! Will continue to work with this, I see a lot of potential for it, as you recent video with it shows well.

Evan's icon

Thanks for checking it out and putting it through it's paces! You didn't find it too hard to get up and running did you?

On to the feedback - I have wanted to put in a 'dynamic' loop setting. But this opens up a whole can of (math)worms. How many slices will the dynamic loop have? 16? 12? 15? It's a tough call. I don't want to make it so open ended, that it loses it's focus, but I definitely can see the advantage of having loop lengths be defined by the user. My first thing to do is add support for different time signatures. I am thinking that anything with a multiple of 3 in the numerator could be divided into 12 slices. Anything with 7 into 14, and then anything with 5 would have to be divided into 10.

I actually have half of that implemented. If you hit the mute/solo buttons you can bring up the hidden features of the buttons. One page has mutes/solos for each looper, and the other page has the latching toggles. If these are on, the pitch and stutter adjustments will stay where you set them until you turn latching off.

I have quantization happening that is tied to Live's transport. This was msotly due to the python API being predictably unpredictable as far as how quickly it reports button presses from the Push. You can turn button qunatization off to see what it would feel like with no quantization. A lot of my work required things to be tightly synchronized, so I found the quantization necessary in some cases.

I never intended to create this for public consumption, so a lot of the features were things that I wanted. I'm glad that you found it fairly intuitive, and I hope to keep developing this (if others are using it, it will force me to work a tad quicker I think).

Igneous Rock's icon

It wasn't hard to get up and running at all---I had some trouble figuring out how to arm/record/overdub (the instruction weren't totally clear on this), but after that it was intuitive.

I see how dynamic loop sizes would not benefit from the intuitiveness of the 4/4 time signature 16 pad setup. I think having anything with 3 in the numerator be 12 slices works. My preference would be probably just to have it be 16 slices no matter the length of the loop, with the understanding that the pads won't correlate to the downbeats if you venture out of duple meter territory. This would be very simple and consistent, and would always give a maximum number of pads to use.

Great to hear I can latch the speed/duration parameters. I'll play around with it without quantization, though even with quantization it worked very well so that's no biggie. I do with M4L devices had more consistent timing in general, I've had trouble with this on my own devices.

Perhaps Live takes this concept onboard for how their Looper works in push, it seems like a natural implementation of the drum sequencer interface for live audio. Though this has karma~ (unique) and unlimited mod potential (very nice) :)

Evan's icon

Hey Jaren,

So I didn't get dynamic Loop sizes in there yet, That's next on y todo list, but I did get the latching working. It's actually really great. With high stutter rates, you can make little sub loops, and get some cool polymetric stuff happening. 3 against 5, 7 against 16. I was having a blast. I also fixed a timing issue that was causing loops to get out of sync with Live.

There's a 1.1 in there.

Next up is dynamic loop length, and getting the pattern record to record more than just loop triggers. I'm going to just keep the 16 slices per loop no matter what. It's weird if you have something in 5 or 7, but it might actually make for some interesting accidents.

Igneous Rock's icon

downloaded it, looking forward to checking it out in the next couple days