Sequenced Looper/Timeline Extension (in progress)

I thought I’d share my progress on my holiday project…

I had been thinking about ways to combine Melda’s MSuperLooper with a GP Extension, and what I landed on was a arranged/sequenced looper. It’s directly inspired by ZenAudio’s ALK2 (sadly now defunct).

Although I’d call myself a looping novice, I always enjoyed the creative results from ALK2. It was also a great practice tool for me.

Basic Usage:

  • Double click to add a clip: Record (red) and Play (green)
  • You can choose which of the four track loops to record/play (right-click the clip)
  • When there is no active clip, the track/loop will be muted
  • The clips are quantised to a 1/4 measure and will need MSuperLooper to be Synced with the host.
  • The Metronome track is currently based on a CC message sent to the Local GP Port (to control a widget mapped to metronome enable). I have submitted a request to add metronome functions to the Extension API.
  • The Song Part track is a simple ‘Next’ command. But it was an essential part of my idea for this extension, as it leverages the power of GP song parts/variations.

It’s still very rough, and at the moment is just a casual project. I might not go to the extent of saving/retrieving the per-song arrangements. I’m not yet confident the basic triggering of MSuperLooper is perfect, but will be playing/testing for the remainder of my holidays.

I might also try it with another looper (e.g. Enso), although this would be a much simpler one-loop-per-track approach.

8 Likes

That looks amazing. Fantastic work!

2 Likes

I have an idea:
Would it be possible to create a graphical timeline this way?
For example switch variations etc

5 posts were split to a new topic: Storing/Retrieving Extension Data

This looks interesting! When I get home I’ll give it a whirl.

I’ve been adding in more features.

The boring stuff is getting all the clip dragging to avoid overlapping other clips. I’ve done a basic multi select+drag (Shift+click multiple clips), and that was a large headache to prevent overlapping of clips on multiple tracks. But it seems to be working now.

I’ve also added pinch-zoom (horizontal zoom) for Mac, and Alt+Scrollwheel to zoom on Windows. I have started work on the auto-scrolling of the window to keep up with the playhead - but that needs some more work.

More interestingly, I have a ‘Loop Timeline’ clip, which you can add at multiple positions on the timeline. It will continuously loop at these points, until you activate a widget to exit the loop.

In this screenshot below, the first timeline loop is after you record the first loop, so you can play for however long you like over the first loop. When you’re ready to add another loop, just activate the widget to exit, and then the second loop will begin recording. After that, it will continuously loop (playing both clips/loops) until you exit for the final time. This is a great/simple option if you don’t want to create an entire arrangement.

I think an obvious next addition is a timed fadeout (e.g. volume fade over the duration of a clip). However, it’s probably better to manage this in combination with a widget, so you can leverage the widget scaling to set your ideal fade-out curve.

2 Likes

This looks amazing! I can’t wait to see where this goes ultimately! Very creative!

2 Likes

I’ve made some progress on saving/retrieving the data to an external file.
The demo below is a new ‘Widget Control’ track, where you can choose widgets from the global rackspace (that have handles) and set a few predefined actions: toggle and ramp up/down. You set the duration of the ramp based on the clip length.

7 Likes

Since my last update in January, my progress has slowed (unfortunate day job getting in the way!). Maybe I’ll wait for the official GP Timeline :grin:

Some things I’ve been working on…

Drag to Select
It took me a while to figure this one out.
gp-sequenced-looper-drag-to-select

Multiple Scroll Regions
The window has 3 different regions that scroll:

  • The track list only scrolls vertically
  • The timellne header only scrolls horizontally
  • The main timeline window scrolls in both directions
    gp-sequenced-looper-independent-scroll

Set Specific Values
For a number of clips, I wanted to be able to set a specific value. At the moment I have implemented this via a simple text box on the clip.
gp-sequenced-looper-set-value

Stop Actions
I found pretty quickly that when you are triggering the audio file player or midi file player, it’s annoying when you stop the playhead (while testing) and they continue to play. So the system clip ‘Stop Playhead’ will also allow you to add whatever clips you want after this, and they will always be triggered when you stop the playhead (at any point).

Pre-Triggering Clips
I’ve re-written the trigger code a few times. The MSuperLooper loops are quantised, so they should be triggered before the start of the bar. I have them triggering at 200ms before first beat of the bar, and song part changes 50ms before (this works well for me).

Adding Tracks
I’ve got 2 types of track (3 if you include the MSuperLooper ones): System/Song Control; Widget/Plugin Control. You can add as many of these as you like (and rename them).

Future Changes
I have requests submitted to the GP devs to make a few things easier/possible. It likely means I will wait until these are implemented (hopefully in the next version) before I will share the extension.

7 Likes

That is freaking awesome work!!!

2 Likes

Great stuff!

(and a small reminder, just in case, that this is a public category)

This is amazing. I really need this. I’ve been trying for months to substitute alk2 functionality using GP and Ableton with blackhole or IAC, and I’m always having problems. Are there any news on this extension?

What really put a stop to this was issues that seem to come from unexpected behaviour in MSuperLooper. This meant that loops were randomly not recorded, or not stopped recording.

I haven’t checked in a while, so could come back to it. But I wouldn’t hold out too much hope.

I think @edm11 has found some alternatives that might be worth checking with him about.

1 Like

You must be psychic, @rank13 , as I have been preparing to write about a sequenced-style looper (a la ALK2) called LoopToGo that I’ve recently switched over to. It is a Windows-only application however, and it looks like @GPHero is on Mac. :frowning:

I will give a review of LoopToGo in the coming days however.

2 Likes

I’ve found onTimeline script callbacks to widgets driving multiple instances of the recent x64 build of mobius works well. Mobius GUI is still a disaster if you need it though. Perhaps this extension would be worth retooling to work with it? My use is very simple though: record, mute, restart. Maybe it falls over under more demanding use.