ALO: a new multi-looper with BPM sync


#1

Hi all,
we’ve talked about this previously on the Ditto thread, but I think the new ALO looper is ready for folks to play with now and it deserves its own thread. I’ve submitted a pull request to add it into unstable, hopefully that will happen soon.

In the meantime I’ll summarise here how it works:

  • support for up to 6 loops
  • the time/length of the loops is set by a ‘bars’ parameter, default is two bars, so eight beats
  • each loop needs to be activated/deactivated by a footswitch/button
  • once activated, a loop only starts recording when input audio signal is detected
  • loop recording ends when the loop time is reached
  • if the button is still active, the loop will continue playing
  • when button is deactivated, the loop will stop… at its next end point

limitations:

  • no gui presently, just the tin can (TODO)
  • when global bpm stops, active buttons stay on (TODO, but not sure if this is possible to fix)
  • no overdubbing on a loop (won’t fix: I’m aiming for simplicity of operation)
  • all loops are the same length (won’t fix: use extra instances to set different lengths for each)
  • only plays/records if global bpm is running (won’t fix)
  • audio threshold is hard-coded (not sure whether this is worth a parameter, feedback required)
  • assumes bars are 4 beats long (feedback required)

Source code is here, MIT licensed.

I’d like to thank the #lv2 contributors for their help in figuring this out, and the folks at MOD for creating the Duo.

br
Paul


#2

Hey @devcurmudgeon

I moved your post to the Plugins Category.

@Jakob has already made an attempt to have it running but it seems there is still a thing or two to sort out.

He shall be contacting you soon

Thanks a lot for the effort!!!


#3

@gianfranco thanks for the feedback.

I remain a bit confused about the plumbing for builds in this project, but hopefully my #V2 pull request will work better.


#4

Some feedback would be that at least a 3 beats per measure setting would be nice. At least half the stuff I do is in 3/4 ( yes maybe I’m odd there but 3/4 is pretty common )


#5

Fair enough. I can think of 3 ways to do this:

a) first would be to switch from the ‘bars’ parameter to a ‘beats’ parameter (so for a four bar sequence in 3/4 time, set beats to 12, etc.) and default it to 8 (two bars of 4/4 time)

b) next up would be to add a beats-per-bar parameter, defaulted to 4.

c) nicest would be to consume get the beats-per-bar from the host, but I don’t know if it actually reports that.


#6

In the LV2 Time Specification there is also beatsPerBar. mod-host serves this information to the plugin. This should work similar to getting the BPM in your “update_position” function.
Cheers
Jakob


#7

OK, I’ve updated ALO to handle beatsPerBar from the host. Thanks to @mike.hoegeman for the suggestion and @Jakob for the guidance :slight_smile:


#8

ALO now has support for triggering record/play/mute of loops via MIDI note on/off messages - so now it’s functionally complete for my use-case, hooked up to a Keith McMillen 12 Step.

Not sure whether it’s worth the hassle of creating a UI…


#9

Oh yes, please add a UI. It will just make it attractive to a larger audience . :wink:


#10

This sounds awesome! Do i have to learn how to install a plugin to the mod by hand or will it be available soon?
Either way - can’t wait :slight_smile:


#11

ALO now has a GUI. I’ve bumped the merge request to ask MOD folks to check if it’s good enough for unstable yet.

I’ve been using the cycle.sh script to build and deploy from within the MOD Plugin Builder docker container. The script assumes that the host alo source directory is mounted into the docker container at /tmp/moddevices/alo


#12

stoked. :space_invader:


#13

Hi everyone,

I have just published ALO to the beta repository. Thanks @devcurmudgeon for your work :slight_smile:.

It is a good idea to write a little description on how it works exactly, because probably not everyone will be checking out the forum post to find out.

//Jesse


#14

Thanks Jesse!

Where should I write that description?

Once it’s in beta, I’ll also make a video showing how it works


#15

The description is pulled from the rdfs:comment field in the .ttl file.

You can find a lot of different examples in the mod-lv2-data github repo.

Let me know once you have added the description, then I will update the plugin accordingly.

//Jesse


#16

OK the description is updated now - I’m planning to make a short video about the plugin with an example pedalboard this weekend


#17

Awesome!
Thanks Jesse!!!

@devcurmudgeon I tried it last night, didn’t seem to get the “bars” parameter to work. The audio was always recording 2 bars.

For recording 4 bars i “fixed” it by just setting the beats per bar to 8 (so 8/4) on the mod.

Do you have the same issue?


#18

@devcurmudgeon, thanks for the quick description, I have published the plugin update, so it is already live :slight_smile:


#19

@domlo - no, that’s a surprise to me. it may not vary the length once a loop has been recorded. i’ll check the code.

in other news, the latest update also does not pass the input signal through to the output (so output is only the loops), but i think ultimately there needs to be a toggle switch for option of including the input.


#20

I thought that at first, too. Then i deleted the plugin from the pedalboard, loaded it up again and set the bars before recording the first loop. Still might be in the cache somewhere though…
I’ll try today with different pedalboards and restarts.

If i haven’t said it (enough), your work is awesome! The looper is easy to use (also through its restrictions) and the time sync is just so convenient. It’s like looping with ableton, great job!

also the double tap function for deleting is a nice touch and good to see, that it’s possible. Maybe also interesting for other plugins (maybe for the stuck/freeze pedals)