Device Details

Device Overview

Name/Version: Timestretch Looper 1.1.0
Author: jengel  
Description: Hello everyone,

I'm proud to share a device I've been working on for quite a while now with you all. Timestretch Looper is an audio looper quite similar to the one you find built into Live. That's not a mistake, I like Live's Looper, but found it missing some functionality.

Timestretch Looper does "sound on sound" recording, but also incorporates:

- Timestretching. Independent speed, and pitch control, like Live's clips, but unlike Live's looper.

- "Multiply" functionality for destructively changing the lengths of clips.

- OSC input and output for controlling and monitoring any parameter of the device.


I have seen a lot of people trying to make loopers from scratch with MaxMSP and perhaps spending a lot of time having to reinvent the wheel, so I've done my best to make the code clean, well documented, and easy to modify. I hope this is a helpful starting point and perhaps a good example of clean Max programming practices.

I'm very interested in having you modify the code if you'd like, and perhaps contribute to working out a few of the persistent bugs that are noted in the Readme doc embedded within the device. I give complete permission to use this device, modify it, and even reupload modified versions. I've also created a github page for those that are interested https://github.com/jesseengel/TimestretchLooper.

Some Performance Notes:
-If the looper is in "Master" mode, and the transport is stopped, the "No Quantize" white text needs to be present to record your first loop, Otherwise it will wait to sync to transport that never starts. The device should set this condition on it's own, but every once in a while you might need to manually reset by pressing "Clear" once.

-Overdubbing on timestretch is unstable. I get around this by having the looper enter "Multiply" mode when timestretching is activated, which means that the second time you press the big button it sets a new length of the loop. This can actually lead to some very cool effects of mangling the orignal sound if you do it several times.

-Due to M4L's limitations on buttons, if you midimap to the big button, you can only have a single behavior. Within the "OSC" tab, however, there is a toggle to map a MIDI CC footswitch to that allows for Long Press "CLEAR" and Double Press "STOP", similar to Live's Looper.

Enjoy!


Update:
v1.1.0: Finally updated device to use groove~ object and not DiracLE~, so it now should work with 64-bit systems, work on both mac and windows, not require downloading from github, just download the device here.
 

Device Details

Downloads: 4639
Tags sampler, sequencer, effect, glitch, other
Live Version Used: 10.0.4
Max Version Used: 8.0.0
Date Added: Jan 19 2013 16:50:55
Date Last Updated: Oct 19 2018 06:14:05
Average Rating -n/a-
Rate this device: (must be logged in to rate devices login)
Device Type: audio_device
URL (optional): https://github.com/jesseengel/TimestretchLooper
License (more info): Attribution

Device Files

Device File: Timestretch Looper.amxd
 


Comments

wow! great, thanks for sharing!

Not working properly in Live 9 (beta 62). CPU Load Meter reaches about 500(!!) after just a few seconds of playback.

Have you tested it with Live 9?

Ok, just tried it with Live 8.3.4, and same behaviour there: CPU Load reaches about 500 pretty quickly upon playback, then jumps around between cirka 350 and 6-700 ...

Great idea, great device, but I got the same CPU problem (over 600, immediately...) on Live 8.3.4.

Hey Everyone,

Thanks for testing it. It looks like I originally made it in Live 8.2.2, so I'm guessing that the problem is with the 32 bit vs. 64 bit program.

Luckily, Timo also made a 64 bit version of DiracLE~ which I think I might not have been using, so I've switched them out and reuploaded the device. Please let me know if anyone can get it to work fine.

On my Mac Book Pro, it goes from 2 to 3% when loading the device and 7% when actually playing a loop (Dirac is pretty computationally expensive), so something in that range is what you should be expecting. The reason it's less while not playing is that I enclosed Dirac in a Poly~ so it could free up resources when not in use. I also included an extra bit of code to double make sure that that poly~ is only allocating one voice, otherwise that could take a lot of resources!

Hope that works, let me know, and happy looping!

When I first tried this device, I could see it record, but no playback.

I failed to realize I am on L9beta 64bit.
I will try to find 64bit DiracLE and report back.

I highly doubt it's a 32 vs 64 bit problem - I am running the 32 bit versions of both Live 8.3.4 and the Live 9 beta.


Just redownloaded and re-installed, problems with CPU Load are still there, unfortunately.

Okay, so I've double checked the dependencies and I think it might just not be getting everything in the freezing of the file.

Please head over to the github link

https://github.com/jesseengel/TimestretchLooper

and just press the "zip" button. That should download a zip file the unfrozen device and all the abstractions, poly patches, images, and externals needed.

Just put that folder somewhere in your MaxPath, and you should be good to go.

Someone please give it a try and let me know if that works for you. Also, if anyone has the frozen device here working, please let me know.

Thanks!

DiracLE~ is included in the github folder, but for also, for anyone interested, here's a link to Timo's external

http://www.timorozendal.nl/?p=434

Nice! Would be great to make a gen~?version to get rid of 3rd party external dependencies..

Helllo,

If someone gets this working okay, please let me know, and say which version of Live, Max, and OS you're using so I can try to trouble shoot.

Thanks so much,
Jesse

Hey there. Do you have an email I can contact you on to talk about the looper as I want to use it for a well known artist but want to know if you can make some adjustments?

Hey Jesse this is an amazing device, the comments pages on this site are pretty quiet, but I bet a lot of people like me have been using this for a long time, and are very thankful for it. It is indeed a great launchpad for further improvements, and I was wondering if you had an email you could share to this end? I want to make this a granular looper, that allows for sound-scape style effects to go down. Also, monophonic pitch tracking and transposing pitch to a depressed MIDI note. But please, find a way to get in touch! And thanks for putting such TLC into this beautiful instrument.

Doesn't seem to be working for me in 64bit Live 9.
32bit OK.

>Doesn't seem to be working for me in 64bit Live 9.
32bit OK.
Same here. I'd appreciate any advice to improve the problem.

will you be re-working this to use max7 native time stretching?

I have a few too many things on my plate at the moment with a new job. Although, the code is all available at https://github.com/jesseengel/TimestretchLooper if anyone wants to make a pull request / do it themselves. It is on my long term to do list though.

Thanks! Completely understand that. I might have a go if I have time.

Hi, Im Jose from Chile, realy love this looper, I did work with him on ableton 9 32bit, now im working on ableton 9.7 64bit, and everything is ok, but dont record the audio, and I cant find other looper like this, MOBIUS looper dont work on 64bit, so, can you help me please?

thanks

Okay, it's been quite a while but I finally updated it to work with 64 bit and work on windows as well. Please give it a shot and see how it does :).

Hi, it?s a really great looper, much better than Abletons.
Only thing is, that it does start clicking quite a bit when you have several layers that go more into a drone kind of direction. Would it be possible to insert something like 1ms fade in/fade out?
Don?t know wether you?re still in for updating your device, but I wanted to give it a try. Don?t really know how to write M4L myself.
tim

This is rly good i came back to it. Do you plan tu update it a bit too ?

issues:
- looper cant go play while global play has not been pushed
- looper cant go play via big button after it has been stopped
The only way to go play after looper has been stopped is to push realign.
But when realign was pushed and looper is playing sound - it is not in a play state, so we need to push big button just to enable play state, and push big button again for reording...

that's wierd... am i the inly user with that issue?

other functions are great!

it would be nice to have Undo button btw like in original looper
thnks)

Login to comment on this device.

[ browse device library ]