Live Looping in 2026 - Object suggestions for a novice

melt's icon

Hi all,

I am attempting to create a live audio looper device for my personal use. Ideally this looper has provisions for:

  • one button operation, i.e., recording audio and instantly playing it back in a loop without intermediate actions by the user

  • sample-accurate timing of recording (and overdubbing) and playback

  • sync, for multiple loopers in parallel, and

  • 2ch buffers

I have explored the following objects/externals with mixed results:

  • karma~ - a lot of people mentioned this one, but it lacks provisions for sync and frankly I could never coax an artifact-free recording/overdub from it.

  • rez~ - mostly works for what I need except it lacks some features such as resetting the play/rec position when stopped. This is a blocker for me given my use case.

  • softcut~ - clean sounding loops and playback but not sample accurate, and only supports 1ch buffers.

  • Eric Lyon's Potpurri (el.sarec~) w/ groove~ - showing promise, wonderful documentation, but I don't see a way of recording in a loop. So the initial record -> playback action is fine, but overdubbing is problematic given there is no sample-accurate way of looping the record head from the end of the buffer to the beginning. I'm probably missing something here.

Live looping seems to be a rather ubiquitous performance technique these days. I am a novice with MaxMSP, so I feel like I'm probably missing some obvious solution to my problem (as is often the case with Max!)

Can anyone suggest some reading material and/or example patchers and/or objects to explore? I have read mention of the xsample~ externals, so I plan on having a look at those.

Thanks!

Source Audio's icon

you can do all that with plain max objects.

easiest part is getting audio record and playback to work,

most work is to get arround loop states and logic arround it.

melt's icon

Thanks for chiming in. I've seen your contributions to the various looping threads and they have been very helpful!

Which "plain max objects" would you suggest I look into? I have seen mention of poke~ and index~ but have yet to dive into them. Any others?

Thanks in advance!

P.S. are you the "SOURCE AUDIO" responsible for the pedals? Love your work if so.

sousastep's icon

this book will be released for free soon


melt's icon

Thanks for that, I had a look at Jeff K's website and I believe a version of this text is available for free there.

I did read it over and worked through the examples . That said, I did not dig into the gen~ stuff because I am limited to Max4Live where the gen~ environment is not included. His MSP Looper examples unfortunately do not take into account sample-accurate control. They were a great entry point into the concept of recording into a buffer and playing it back though.

melt's icon

Came across this tutorial and have worked through it:

It has illuminated one way of achieving sample accurate looping use vanilla MSP objects, namely poke~ and index~ driven by a count~. I quite like the simplicity and can already imagine how I could implement overdubbing, and perhaps even some rudimentary de-clicking. However, I do not see any way I can control the rate or direction of the count~ and thus the playback (a la varispeed.) And in googling that I am learning index~ is not really suitable for such a task anyway, given the lack of interpolation.

I'm thinking playback using another object (like play~) is necessary here, but this necessitates the use of phasor~ which really does my head in... scaling it, using it to dynamically loop only a portion of the buffer, and so on, confuses me greatly.

If anyone has any suggestions on where to direct my research it would be greatly appreciated. The hard part about MaxMSP is that it is so flexible it is difficult to know where to even start!

EDIT: the more I google the more I realize this is all very well-trodden ground. Thanks in advance for your patience with my skill level!

Roman Thilenius's icon

yes, that´s how it is: index~ based solutions are superb - as long as you do not need to change pitch.

the floating point equivalent to count~/index~ would be line~/play~.

objects like play~, groove~ or wave~ perform a value interpolation for you already internally in the object.

to learn (and to transform the count/index stuff you already have to a "float version"), start with play~.

Source Audio's icon

no, I am not associated with the pedals company.

it just happened that they picked same name as my nickname here...

I was involved in development of hardware loopers from early days of looping,

and developed many max based looping devices in last decades.

If I can suggest, first list all you want from a looper.

that will route you to objects that could satisfy your needs

without gen~ objects.

something like reversed, speed changed overdubbing

in synced multitrack looping ...

as soon as you want that, you are in a trouble.

interpolation, out of sync etc etc

I was never interested in that, just plain , clean looping

with as many synced tracks of different lengths, undo, redo and so on.

synced polyrhythmic delays and such things.

in one or the other way you will hit the wall if you want both.

None of looping objects you mentioned satisfied very basic looping

needs for me, like latency compensated overdubbing,

crossfaded loop start-end and synced multiple tracks.

without that it simply does not work for serious live looping.

.......

sample count needed for index or poke can be converted from range

or miliseconds outlet of other objects using mstosamps~ for example.

......

I used xsample~ buffer based recording and playback objects quite often

becasue they offered sample based sync between play/recording heads

and made construction easier then having to use several max objects

for same task.

there are updated versions, help files are really outdated ...