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: