SooperLooper - In Testing

It is already there.

Screenshot 2022-08-17 19.43.03

3 Likes

I tried both (SooperLooper and Loop192) on PatchBox OS.
The Loop192 has not implement save of midi loops.
I had setup with Behringer FCB1010, which sending midi notes. This was converted to OSC by mididings. But dancing over pedal is not very confort for me. I have more linear filing of music flow. So my idea is have midi file, which will be record/play/stop loops in SooperLooper and Loop192 and also wil be play drums on backgroud. This is simplified idea based on Zen Audi ALK2 (this project was closed)

Framework from midi file will be driving loopers by converting midi notes to OSC comands. But it is long way …

@riban
So I can try OSC comands starting /sl as described in dokumentation of SooperLooper?
I’m playing with Open Stage Control now, so I can testing both together.

And small note, I haven’t in mixer Onscreen Buttons for encoderless control of zynthian. I know it is hot working version.

The setup of routing audio inputs was first thing what I do after 2 minutes of playing with sooperlooper. And I must say the possibilities are so many. Good work @riban.

Hi @ToFF

Adding an instance of SooperLooper to Zynthian will expose its OSC interface. Indeed that is exactly how Zynthian communicates with it. You will be able to remotely control SooperLooper using OSC commands including those beginning with /sl/ but avoid sending the /quit command as Zynthian won’t realise the SooperLooper engine has gone. (I may add some watchdog but probably not!)

I too use a Behringer FCB1010 which I configured to send MIDI CC then used Zynthian MIDI learn to map the foot pedals to looper functions which worked well.

SooperLooper is capable of binding MIDI messages to functions so you may not have needed to convert to OSC. You could probably have done what you want with MIDI binding. I don’t use SooperLooper’s MIDI binding in Zynthian and have a task to ensure it does not interfere with SooperLooper operation.

You may find that you can do what you need with Zynthian without extra, external software. I am working on closer integration of SooperLooper and the step sequencer / ZynPad. SooperLooper can synch and quantise to a variety of sources including Zynthian’s internal transport (JACK).

Regarding mixer (off topic): I have done some work in the development branch to rationalise the touch interface. Enabling on-screen buttons will show the buttons at the bottom of the screen only when required. If a screen can be wholly controlled via touch, e.g. the mixer, then the buttons will be hidden. I can’t remember where the SooperLooper development branch was forked but an attempt to merge with the latest dev branch failed so I need to look into that…

1 Like

I’m on hollydays without any of my Zynthian boxes but I’m impatient to try this when I’ll be back. It looks so promising.

This is area for fresh unused and fresh tester :slight_smile: I will be try this by both possibilities. For OSC I can use port UDP 1370?

I hope it comes soon. In my case, I need to check the length of the loops with some smart interface because my dance legs don’t exactly work in quantized time length.

OK, this was really only small notes, I’m able controlled all via touch, but buttons in mixer have some short a direct way to some function (if i remember correctly). For mixer is also possible aplied of OSC commands?
Again, thank you for your work.

No! Use port 9951. SL opens its own OSC listening port which Zynthian talks to. You can communicate directly with SL via its OSC port 9951. In theory any clients, including Zynthian should be updated, i.e. a change made from your remote should update Zynthian display.

Yes! Mixer is fully controllable via OSC. @ronsum and I created an Android client for it some time ago but that used an app that is no longer working or supported. Mixer OSC is via port 1370 with paths:

OSC Path Value range
/mixer/faderX 0 … 1.0
/mixer/balanceX -1.0 … 1.0
/mixer/muteX 0.0, 1.0
/mixer/soloX 0.0, 1.0
where `X` is the fader strip index. 255 for main mix bus strip.
1 Like

Nice, thanks for clarification. I will be make some template for Open Stage Control and will be test functionality…

If you send OSC message /mixer/heartbeat to port 1370 at least every 120 seconds then change of state will be sent via OSC back to port 1370 at the IP address from which the heartbeat message originated. (Mixer supports up to 5 concurrent OSC clients for status feedback.)

Why no stop button ??

https://sonosaurus.com/slforum/viewtopic.php?t=1112&sid=2d443ba197a306a21dc1a671afb6f4ab

Results of first quick trial with Open Stage Control server running on PC with Windows and Zynthian.
on UDP 1370
/CUIA/SCREEN_MAIN - working
/mixer/fader255 - not working
on 9951 port
/sl/0/down record- not working
I would need some tool to listen to the communication between the PC and the Zynthian. I’m not sure what exactly I’m sending by OSC.

There is a pause and mute button. You can mute each loops whilst it continues to loop out pause it to stop it looping. You can unpause to resume or trigger to start playback from beginning. You can play one (oneshot) or loop.

Thanks for this integration of SooperLooper!
I switched to branch feature/sooperlooper this week and began fiddling with sooperlooper as audio effect next to some synth and audio player (Was trying to mimic a mucial story game OST). I also discovered mixer: useful improvement too.
For now, I do not understand how to select loop to record. I was expecting the selected loop to be tied to selected layer in zynthian. Instead, selected loop in sooperlooper is the last one selected, no matter the layer you are looking at.
Is it possible to associate layer to one specific loop without selecting one each time?

Thanks again

1 Like

Hi @Milkyway! Welcome to the forum. It is great to see you here.

SooperLooper is configured to have a single, stereo input and output so you need to manually route the chain (layer) you wisth to record using that chain’s option menu. SooperLooper isn’t supposed to be a multitrack audio recorder (although in theory it could kinda be configured like one). The idea is that you feed it with some audio source/s then layer up looped recordings. You can route all the layers to it then only play the ones you want to record on each record loop.

@riban I’m getting an odd thing where sometimes the loop will alternate between stereo and left channel only. It’s happened about three times over the last week. I’ll try and get some logs when I’m back off holiday.

I’m pretty sure it’s the looper as it’s happened with audio in and internal synth layers.

SooperLooper is stereo. (It has the ability to have loops of arbitrary channels with individual inputs/outputs but we disable this, using stereo loops and common input and output pairs.) The routing to the looper is by default: left audio input to looper left input, right audio input to looper right input. If a source audio appears on only one channel (like my guitar plugged into just the left input) then the loop recording will be on just that channel. This can be resolved by deselecting system:capture_2 in the Audio Capture menu for the chain. I wonder if you are experiencing something related to this.

I have been fixing bugs related to sync and noticed that enabling sync and quantize on the sync source loop will have odd behaviour. I think this should be resolved upstream and we can add a documentation note about it. I am not sure we can avoid this automatically within code without possible issues with expected behaviour. It is possible that this is causing this problem. Try disabling sync on the sync source loop.

If you continue to experience issues after updating and trying these solutions then let me know.

Well it only appears on the left channel for one loop. Then it switches to stereo, and then switched back again every time the loop cycles. It’s a bit weird.

So, some trials and errors later, here I am:

  • on layer 1, SooperLooper

  • on layer 2, one instance of setBFree

  • on layer 3, one instance of fluidsynth

  • audio of layers 2 and 3 routed to layer 1

  • at first, midi of layer 2 and 3 also routed to layer 1 but that was before I realized CC messages were not concerned

  • midi mapping to send all CC messages from channel 2 and 3 to channel 1 (should be more specific)

  • trigger record with CC message with value 0 and 127 (by the way, what is the best approach to toggle function such as recording with a fcb1010?)

  • trigger loop change with CC message with values 0, 26, 52, 78, 104, etc (there is a slight offset between zynthian ui rotary change and loop selection when using a rotary controller on a keyboard).

Now, I am able to select synth from mixer view, then switch loop with pedal board and toggle record from this same view. There is no reminder of which loop is selected and state of record but it is manageable for short sessions I guess.

Thanks for previous advice. Do not hesitate to point out my new wrong practices.

Hi @riban,

I did another test, this time sending OSC commands from python using the pythonocs module.
Commands on UDP 1370 for CUIA work.
Commands for SooperLooper on UDP 9551 also work.
Unfortunately, I didn’t get any response for the mixer. I tried the “testing” and “feature/sooperlooper” repositories. I had the commands in the form /mixer/fader255 0.23 on port 1370.

Did you send /mixer/heartbeat to port 1370? This registers the client for tallies and must be sent every minute to keep the registration active. (Actually the timeout is 120s.)