Midi Looper with clipslots, quantize and overdub


#1

Most recent patches:

midi looper full fat v5.0.axp (101.9 KB)

midi looper basic cheap v5.0.axp (68.4 KB)

lpad 3trak v2.0.axp (218.1 KB)

lpad 1track v2.0.axp (94.0 KB)

Hi all!

I posted an earlier version of this in my contrib thread, posting it here to stop that thread getting bogged down in looper talk before it's ready for the library.

Anyway, it's my new midi Looper setup. I'm still working on it but I've been on a bug hunt and I think it's pretty much done.

It's 6 new objects - clock receiver, note recorder, pitch bend recorder, cc recorder, poly touch recorder and channel touch recorder. I've tested it fairly thoroughly and it seems to hold up. If anyone wants to test and let me know any problems they come across that would be great. Feedback is welcome!

Features

Modular - take out the features you don't need (don't want to record poly touch? delete the object, just make sure the offsets are chained).

Polyphony - The polyphony is high! It should be possible to have 32 notes trigger at the same start point, and possibly more playing at once with different start points. I haven't hit the limit yet... You can set a range of notes, a smaller range of notes will lower the dsp load. Notes outside that range will not be recorded. So, if you're recording a16 pad grid, limit the note range to those 16 notes and it'll use less processing. Poly touch recording has a poly limit of ten.

Resolution- Each of the recorder objects can be set to its own resolution, from 24ppq to 192ppq

Quantize - 6 quantize amounts: 1 bar, 1/2 bar, 1/4, 1/8, 1/16, 1/32. If triplets are turned on this changes to 1 bar, 1/3, 1/6th, etc. Or record unquantized at whatever the ppq is set to. Note lengths are preserved (I.e. Note end moves the same amount as the note start.)

Clipslots - adjustable amount of slots you can record into. Triggering the slot works similarly to Ableton. If you trigger an empty slot it will record, trigger it again or it reaches the maximum bar length, it will play. Trigger a playing slot and it will restart, etc.

Clip length - you can set a maximum amount of bars for the loop.

Quantized transport- triggering/stopping clips is quantized to the bar.

Erase shift - if erase shift is on and you hold a note, any recorded instances of the same note that play will be erased.

Clear- you can clear/delete clips while another is playing.

Undo - deletes the note you recorded last.

Cc recording - it uses three tracks, any track will record any cc.

Table sizes - sizes of table needed can differ drastically depending on the max bar and max slots settings. And also the resolution of the cc/bend/touch recorders. The resolution of the note recorder doesn't affect the table size needed, but it may save a little processing when lower.

My 'full fat' 7 clips, 8 bars maximum, all recorders at 192ppq patch needs a table size of at least 1304576. My super cheap 1 slot, 4 bar maximum Looper with just note and pitch bend recorders, with notes at 192ppq and bend at 24ppq, needs a table of at least 1792.
You can see the table size needed by using a display object hooked up to the last offset output.

Notes/instructions are in the patch.

To be worked on -

the poly touch recorder at present doesn't delete corresponding touch when notes are deleted from the player, it just clears all when the clip is cleared. It works fairly well as is, but things might get confused when overdubbing a lot.

Full fat - all recorders at 192ppq, 7 slots, each with an 8bar maximum.

midi looper full fat v2.0.axp (99.6 KB)

Cheap basic - just notes and bend, with notes at 192ppq, bend at 24ppq. 1 slot with a 4 bar maximum.

midi looper basic cheap v2.0.axp (66.2 KB)


Mattilyn Mattroe contributions
#2

Looks Awesome Matt, cheers for all the hard work, will download and have a tinker when I get the chance, highly approve of the modular approach and the ability to therefore pick and choose


#3

I found a bug where play back would choke up when overdubbing fast notes, here's an update that fixes it -

midi looper basic cheap v2.0.axp (66.2 KB)

midi looper full fat v2.0.axp (99.6 KB)


#4

Hey Matt, this patch is FUN! You did a really great job with it. I've been sitting here playing with the default synth inside of the patch for about an hour now :laughing: Really enjoying how nicely the whole patch is set up, and it only took as long to figure out than any other device you'd bring home and start tinkering around with.

Just wanted to drop in and give my positive feedback, and for anyone reading this who hasn't yet, you gotta try this patch out!


#5

Thanks! Glad you're enjoying it.

I came across another issue where sometimes a note would stop playing when stopping and starting the loop, I've solved it. I'm going to have another play around today to double check for more problems, and i'll post an update later


#6

Here's a an update-

midi looper full fat v3.0.axp (104.9 KB)

midi looper basic cheap v3.0.axp (71.4 KB)

I fixed the problem I mentioned.

I added an inlet to the maximum bar length, if the inlet is at 0, the Looper uses the maximum bar length attribute on the object, if above 0 (and below the attribute setting) the Looper uses the inlet. So you can set how many bars it will record for after it starts recording on the fly.

I checked sync with external clock and made some minor improvements. I also found that if the external clock is jittery it may skip notes occasionally at higher note resolutions. I found that at 192ppq with internal clock all was fine. Synced to a bass-station 2 it was mostly fine at 192ppq, but stable at 96ppq.
Synced to a jittery laptop via interface into axo DIN clock I had to reduce resolution to 24ppq. That's probably a worse case scenario though :joy:.

It seems to be working great!


Simple midi looper?
#7

So, I've been playing, found and killed a few bugs.

I'll post an update soon, plus a launchpad mini controlled patch. It's solid. I got side tracked rebuilding my multi track Looper patch with the new objects, made a video-


#8

Updated patches here:

midi looper basic cheap v4.0.axp (71.6 KB)

midi looper full fat v4.0.axp (105.1 KB)

I think the note object is done. I'm going to see if I can improve the cc and poly touch objects.

Here are some patches with launchpad control, one is 1 track, the other is 3 tracks.

Controls are as in the picture.

If you record into a slot it records everything, if you turn overdub on it will only overdub notes. If you turn Cc overdub on it will overdub everything apart from notes. Overdub is one button for all tracks. Cc overdub is per track.

If you hold shift and press a clip slot it will clear everything from the slot. If you hold shift and press cc overdub it will clear everything apart from the notes in the playing slot.

Quantize toggles it on/off. Amount is set on the object

The maximum bar selector chooses between 1, 2, 4 and 8 bars.

lpad 1track v1.0.axp (96.3 KB)

lpad 3trak v1.0.axp (227.7 KB)


#9

@MattilynMattroe, thanks for the launchpad patches dude! Brilliant work :clap:

Just a little FYI, noticed there's a zombie in both the Lpad patches:


#10

Glad you like it!

The zombie object was a custom one so I could see what was going on in the midi output buffer when testing, it has no functionality in the patch so can simply be deleted.


#11

I've done another update, no feature changes, but:

I fixed some oddities I found while jamming in the note recording object.

I changed the sync system and updated the clock object, it works much better. Generally tighter, and much more solid. It tracks tempo changes a lot better than before. It sorts out the problem I had when running it at high ppqs with a jittery clock.

I fixed some weirdness in the launchpad objects, (they were from an old patch and didn't always work as expected).

I haven't updated the cc/touch objects yet because I went down the rabbit hole with the clock, but they are next on my list.

midi looper full fat v5.0.axp (101.9 KB)

midi looper basic cheap v5.0.axp (68.4 KB)

lpad 3trak v2.0.axp (218.1 KB)

lpad 1track v2.0.axp (94.0 KB)


#12

4:22 onwards, this gets well spicy :ok_hand: