MSuperLooper: momentary widgets to show state of loops

Awesome! Can’t wait to try it tonight! Thank you!

What version are you using?

Nice work @rank13 ! Works perfectly! Have only played with it a bit but so far perfect! Question, how did you figure out that MSuperLooper parameter numbers for tracks 1-4 are 32,40,48,56 and that MSuperLooper parameter values to select loops 1-4 are 0.0,0.33,0.66,1.0??? Or is that something you assigned? Very impressive! :slight_smile:

UPDATE: Nevermind… I figured it out. It says so in MSL when you click on them… COOL! :slight_smile:

1 Like

You’re welcome!

In the GP ‘Options > Display’ there is a preference to show the parameter numbers in the mapping list. This makes it nice and easy. You can also see the parameter numbers at the top of the plugin window, when you move/click it.

If you have a widget mapped to the Loop parameter, and then change the Loop in the MSL plugin, you can see what parameter value it used in the widget properties (Edit mode).

They are shown here as 0-100, so you just divide by 100 when using scripts, as internally the values are 0-1.

2 Likes

Thanks for the explanation. Def new info! The script / looping widgets are working flawless! I’ve had no “misfirings” whatsoever so far! I’d like to add one more tweak though. When selecting a certain loop on certain track, it only works for playback, not recording. Meaning, if I’m recording and am using the plugin window and lets say I’m on track 1 loop 1 and touch track 2 loop 2, the recording will jump to track 2 loop 2 and record there. Not so with the widgets. It selects whichever loop I touch, but the recording doesn’t move to that track/loop. I think the track has to be selected, not just the loop? Thanks!

Parameter 18 is the track selection. Within the On WidgetValueChanged callback for the track’s loop widgets, add another SetParameter(MSL…
like what was done to the select the loop.

@ztones I’ve extended the script to highlight the selected track, and also to ensure that you can never have all loop widgets on a track switched off. This means that when you click on an already active loop, it will keep the widget lit, but will switch to that track.

MSL-Track-Select

You’ll need to add a handle to all the track number widgets (e.g. T1NUM) and the panel/shape widgets that surround each track/row (e.g. T1ROW). The MSL part of the script is attached.

MSL Script 1.1.gpscript (7.4 KB)

6 Likes

Is it Christmas in June? LOL Wow! This is awesome! YES! I was just thinking about the highlighting of the active track and woke up to it completed. Ok bro, I’m thinking of a million dollars…just sayin’…
GP is amazing! You have just created what so many on the Melda forum are begging for, a control with visual feedback. This right here!

Since this is becoming a piece of art at this point :wink: :laughing: can we up to ante? Is it possible to create a meter that shows the length and the progress of the loop(s)? This is a “bells and whistle” category I admit. It is fully working, useable and operational as it is, because you can listen to the loop and know where you are. A non essential but cool addition. :wink:

Thank you so much for you work! It really makes the looper totally user friendly without opening the plugin!

1 Like

Feel free to tell them :grin:

3 Likes

As long as you’re putting on a scripting clinic here…

MSuperLooper is actually 16 tracks. It defaults to showing four, but under settings you can expand to 16.

I messed around a while ago with trying to use SuperLooper as a backing tracks player but never got it where I wanted it to be. I don’t remember exactly where I got frustrated, but something around getting audio files into tracks properly and I ended up staying with using an external app like Live or Virtual DJ.

2 Likes

I certainly will!

2 Likes

Yes I know, but really don’t think I’ll ever need more than 4 for live looping. If I do, the widgets and script can be easily modified. Thank you though!

I definitely think it will be the wrong tool for the job. We established that it saves the files within its plugin state. I just tested with 2 MP3’s (10MB) - this ended up as a 325MB gig file!

For that you would really need MSL to have an automation parameter for this (which it doesn’t).
Otherwise you’d have to try and separately replicate this in the script based on the timing of when you hit record and came out of record. At that point I’d think it’s just easier to open the plugin UI! :wink:

1 Like

Yeah, I tested that out myself last night. I downloaded the beta version (15.0) and while the file import feature works consistently now, apparently it reformats everything to uncompressed audio at your current sample rate and stores it with the plugin state. So, yeah, it makes the gig files really huge really fast.

Is there an option to store that outside?
Storing Audio as State is never a good idea.

When used as a live looper (recording what you’re playing), during looping, I’m not sure where the temporary audio is saved, but the size of the gig file does not change. So when used as most people will likely use it, as a looper for live performance, its a non issue. If however, you save the gig file without purging your loops (reset all), gig file size is increased.

I can see using this as a backup player would be a totally different situation and importing audio would cause it to become huge. I found this in the settings options, not sure if unchecking this this would help?
I can’t test it now…

1 Like

@ztones this is just a mockup (although done by GP Script). I’m not sure yet I can pull this off :slight_smile: but it will be fun to try. My idea with the numbers on the loop buttons is to only display them if there is a loop recorded (and it displays the loop length / bar count).

At this stage I think you will be forced to be in Sync with the GP playhead in order for this to work.

MSL Mockup

6 Likes

@rank13 I LOVE that you love a challenge! :slight_smile:

This is great! Love the visualization as well as the placement. :clap: :clap: :clap: Very clever to use that space! I’m a little confused why the 2 bar is reaching the end of the loop at the same time as 1 bar, but I’m assuming its not finished yet?

How did you get those custom play, reverse icons/symbols? When I paste :arrow_forward: into the caption it won’t display. Is it scripting again? They’re much better!

Hmm, are you using those widget functions?

1 Like

Some ascii characters will work in GP. The ones I used are :arrow_forward: and :leftwards_arrow_with_hook:
EDIT: the forum changes them.