Is there a Looper that works?

Hey there,

after reading for hours (literally)

(for example)

I have to ask the community.

Is there a looper that works. Prefarably in MOD-UI?

As a warning: I have been at war with loopers all my live - they never work for me. Hardware, software, MIDI, audio… I may just not be clever enough.

The best candidate seems to be ALO.

But 1st MOD-UI always doubles the incoming BPM via DIN-MIDI,
and 2nd the transport doesnt work.
And 3rd I cannnot figure out how to use it, for the love of me…

I read that @Baggypants uses it, maybe he can clarify how?

I just need:

Sync to DIN-MIDI-Clock, settable to a fixed amount of bars.
Stereo audio input of Zynthian.

After reading and reading, all the threads seem to lead nowhere concrete.
So if anybody can point me in any direction, please I need your help.

1 Like

If you constrain yourself to mod-ui then you only have LV2 plugins to choose from. I suggest that mod-ui is more limited than Zynthian’s native mechanism. Sure, mod-ui looks pretty but it is prone to crash and had many limitations. But if that is your thing then also is probably the most feature complete looper in the system at the moment. I found out had a few issues that require upstream fixes so I stopped trying to make it work.

If you are willing to step away from mod-ui then we are just about to add full support for SooperLooper to Zynthian. There is a recent thread discussing this. SooperLooper is by far the most feature rich looper available for Zynthian and the current development makes it a first class citizen in the Zynthian ecosystem. I suspect that within the next couple of weeks you will see it available, initially in testing then in stable. The stable release should be accompanied by full documentation.

2 Likes

Thank you Riban for your answer and your oversight on this matter.

There is a reason for using MOD-UI though – I use kind of complex routings, that I could not do with native layers- Like so:

There are many crossfades and parameter scalings involved, I can not see how I would go about that any other way.

Maybe there is a possibility to use a PD patch as looper and feed that into MOD-UI for further processing.

Or using ALO as LayerFX and feed that audio output into MOD-UI.

Alas: as I wrote – I dont know how to get ALO to function. Where does it get its clock from, for example?

It’s been ages since I used it but alo uses the midi clock. In the zynth ui create a short empty pattern in the sequencer and start it.

OK, that indeed gets me someplace. I can finally hear the click of ALO!

Thank you @Baggypants !

But as I understand, via this post from @riban

It is not possible to run the “Zynquencer” to an external MIDI-Clock coming from DIN-MIDI? Or any other hardware clock? And I can’t find the internal tempo setting anywhere, I guess my feud with loopers is still going strong. Or/and I am not very good at bold clicking…

If so, what could be a workaround/solution to this, still a PD patch, maybe?

In this thread I think @riban says, that the internal sequencer does run on external MIDI clock. And indeed, it already reacts to start/stop commands.

Thanks again for your patience.

EDIT

I start getting around my confusion. In the wiki I found:

"There is currently no mechanism to lock to external MIDI clock but a Zynthian MIDI effects layer may be used to create MIDI clock output. There is a plan to improve this support in a future update. "

But a bit earlier in the Wiki:

"Tempo may also be altered by external modules, e.g. MIDI player. "

And then somewhere else (sorry for not finding that one anymore, I’ve already have too many open tabs), sth like this “it is possible to set MIDI-Player to external clock”.

But there I only find options for Loop Mode and Start Recording

In an earlier thread riban said that Zynsequencer is running from external MIDI clock BUT that was only in the first proof of concept, I guess.

Could you please confirm the conclusion @riban?

.
.
.
.

TO CONCLUDE

At the moment there is no way to sync Zynthian Sequencer to any extrernal MID-Clock

Yes - the current implementation of zynthian does not support slaving zynthian sequencer to an external MIDI clock.

I have just been testing the development branch of Zynthian that adds SooperLooper. I was able to sync SooperLooper to MIDI clock by manually routing the MIDI input to SooperLooper’s MIDI input. I am considering how we might make this a feature but I doubt it will arrive in the near future but you could do some scripting to enable this - if you feel adventurous.

Normally I would feel adventerous, but as I have a (my first, always played in a band) solo gig in Portugal in 2 weeks, I need some stable solution. Not that your solution is unstable, but when I start scripting, well … but thanks for the advice, much appreciated! If you could point me to a start?

I have played around with PD, looping and MIDI-sync, so let’s see how that goes, alas I do not know if the PD Engine takes in ext MIDI-Clock.

1 Like

External MIDI clock does not reach PD. Basically Zynthian has a MIDI router that performs routing and filtering of inputs and outputs. Some signals are filtered or transformed based on various rules. MIDI clock and transport are not passed to the internal engines which includes PD and SooperLooper. We will consider the whole clock / transport / sync issue at some point. We need to better consolidate this so that we can handle external clocking, e.g. MIDI, CV/gate, etc. but it won’t happen in the short term as we have other prorities.

As far as pointers for scripting… a python script something like this may form the basis of something useful…

import jack
my_input_port = 'port name' # Some text that will uniquely identify the required input port name
client = jack.Client('sl_router')
input_port = None
in_ports = client.get_ports(is_midi=True, is_physical=True, is_output=True)
for port in in_ports:
    for alias in port.aliases:
        if my_input_port in alias:
            input_port = port
            break

sl_port = None
out_ports = client.get_ports(is_midi=True, is_physical=False, is_input=True)
for port in out_ports:
    if 'sooperlooper' in port.name:
        sl_port = port
        break

if input_port and sl_port:
    client.connect(input_port, sl_port)

This finds a physical MIDI input port with some text that you define within its name and the sooperlooper MIDI input and connects them. (The input/output flags look the wrong way round - don’t worry, they are right!) Of course figuring how and when to trigger this will be fun!

@riban,

thank you so much for that starting point! I hope I will put that to good use. Linux is not my string style, so to speak. I’m more into barebones embedded stuff, where you actually programm your own OS.

Is there a guide for noobs, on how to start scripting on Zynhtian? I guess the info is somewhere, but as I found out while searching for the MIDI-sync topic, I find it kind of fragmented. If only I could be more of a help…

There isn’t really an easy entry to coding for Zynthian. You are either a fully fledged coder with the time to get your head around its complexities and idiosyncrasies or you shy away (like most of the normal people) and let those code warriors take the hit and reap the rewards of their hard work.

The code I wrote there will do the job but there isn’t a mechanism within Zynthian to integrate such ad-hoc scripts. If I were hacking this I might add something to start a script after the jack daemon starts that periodically monitors for ports and makes the connection if the input and sooperlooper port are present and not connected. It is a hack and not something I would recommend to anyone! It is one of the myriad of solutions that could work but ultimately it is a bodge that will likely fail under some conditions or at some future point when things change in the base system.

Regarding documentation, there is a lot on the wiki and I really hope we can spend some time improving the quality of this. There is lots of excellent stuff there written by various people at various times. It may have been accurate when written but things change so not all of it is relevant / appropriate and there could be some improvement in organisation. I often find an answer to a question I was looking for some months ago when I am searching for the answer to a different, new question! But this all takes (a lot of) effort and there is usually something more urgent, interesting, shiny to look at…

i don’t think i have ever been called normal before… thanks for that, I think :stuck_out_tongue:

1 Like

Normal is not necessarily a compliment!

1 Like

Similarly, rewards can be illusionary, live for the hits. . .

Zynth is basically a device to configure jack interconnection, initialize instances of jack compatible applications and supplies control information to those instances.

It’s stance is interesting because it actively supports a open-source approach with a commercially available canonical versioned instances.

Thus areas like public interfaces are carefully considered and any obvious layers of context are made available for configuration as they coalesce.

There has been talk of loopers on this forum on many occasions, and sooperlooper has been proposed, and it has taken the audio mixer implementation to reach a point where such a component can be effectively integrated and we now have the nacent component to use and abuse to work out how best to use it.

The GUI interface provides insight and operation but at the moment the canonical control requires encoder twists to control functionality, and we are probably hunting down the blessed set of operations to implement on other control surfaces. For instance I’m trying to connect up MIDI notes as controllers and have run up against limitations of the MIDI mapper which I’d always assumed could be done.

So really testing is the name of the game at the moment, and the more of it that it gets the quicker we can integrate it into the current zynthian devices and produce a superiour device.

@copes why do you need to spend to MIDI clock?

The thing is: i want(ed) to use the Zynthian in a setup. I play with that live and actually improvise a lot. So I need to be able to things intuitively and fast. So the central piece of this setup is my trusty Clavia G2X, which I know by heart and which is totally customisable UI-wise.

From there I change the drum patterns (of an elektron model:samples, if you want to know), use it as an FX-Pocessor, start, stop the sequences and control CCs, Patches and… the BPM. And do a lot of other stuff with the 4 layers it offers.

I’ve used Zynth as a FX processor for JHO :face_with_monocle: for a long while now and can use it without looking… (via a Launchpad X) So I use it for my solo setup.

The G2X HAS a looper, but space is limited to max 4/4 Bar at 98BPM. So I thought: man that Zynthian has LOADS of RAM -use THAT as a looper. Turned out its not so easy. What would even be cooler, if the Looper can do granular and glitch stuff – the G2X can… and it’s loads of fun.

BUT, to use a looper in a live situation (at least for me) it’s necessary that it is synced with the MIDI-Clock.

I could use the Zynth as Master - but I’m not comfortabele with that. I want to fire it up and then just let it run. And do all controlling on the G2X and Launchpad.

Hope that clarifies things?

Excellent, I’ve got the G2 here.
What module are you using for clavia module are you using for looping?
Can you provide the relevant G2X GUI display details to explain the scenario?

Ahh a fellow G2-user! Appreciate that…

If I understood the question correctly: I am using the “DeluxeLooper2 TK.pch2” from Tim Kleinert (the one and only). From the electro music patch archive.

For the GUI – well it’s still under construction. I run the G2 in performance mode. But I use the Global Pages screen for assigning specific parameters. Specific for each track that is. I created one “master layer” which is also responsible for switching the model:samples pattern - and obviously all other patches of my performance.

There I assigned the “Loop Capture” button and the loop speed control. I am not aiming for dance-tracks so it’s allright like that I guess. But still recording bigger loops would be better.

I also connect the G2X to the Zynth, using CC-Messages for automating certain things…

As I said it’s still work in progress – not that the gig is in 2 weeks or so, I have pleeeeeenty of time.----------

I am scared shitless TBH …

@riban and I turned round the audio recorder testing procedure in about a week so your timescale is not impossible.

The Nord Modular Editor picture would help us understand the issue.
I don’t have my g2 rigged at the moment so if you could screenshot the editor page of the DeluxeLooper2 TK.pch2 it would also show the zynthian community a rather fine modular synth GUI…

What interface do you want to use to define the start and end of your loops and what do you expect to hear at each time in the performance…?

https://electro-music.com/forum/viewtopic.php?p=148599#148599

deluxelooper2_tk_687.pch2 (6.3 KB)

That was not meant to say “please hurry” :slight_smile:

The patch looks like this:

And the desctiption says it all:

The genius thing about that looper is, that you press “capture” and it waits for the NEXT 1 to start recording its one bar, and then starts playing it back the next bar - wich is just the most perfect way for live situation (for me as I am to numb to use loopers properly, always have).

It can’t do overdubs, though. But it can warp and pitch shift (is this actually one word in english?) the loop - which is awesome.

Are we actually still on topic :thinking:?