1 channel distributed to many (simple not simple)

Hey there,
long time no see!

I’m currently building on something for a live setup, that would give a similiar versatile performance tool like the elektron octatrack has, namely the crossfader, to the digitakt.

What I lack, and never thought it would come to that point, is enough pipelines. That is only because it seems to be impossible to send the same CC signal to 8 channels simultanously of the digitakt - with one pipeline -.

For context:
Digitakt has 8 tracks that can be fully controlled externally via CC.
All tracks are set to their own channel 1-8 (necessary for other mappings too).

I use a novation zero sl as a controller for different stuff, like having gain faders for each channel, mutes, external in mixer controlls, and more.

The midihub sits in between all my gear and mainly processes, routes and filters signals to synths. What I can do, is use an unused channel (CH15, with any CC I want) from the zero sl and map it in the midihub to a variety of other channels and CCs. But all together with one knob, button or fader. Juhu! Thats whats so great about the midihub :slight_smile:

Further context:
Whats so great about the zero sl (in a way haha, doesnt really matter tbh) it has a crossfader already!

The octatracks crossfader has the ability to choose a scene on both ends and you fade into a state of parameters to the other. I’ll visualize it like that STATE 1 ↔ STATE 2
For example STATE 1 is all normal STATE 2 is delay feedback at 80%, high-pass filter at 40% etc. You can do this for either 1 track or some or all. Now you can fade between the two states and bring your pre-programmed scene in and out.

What I build so far:
I’ve made my zero sl crossfader do the described effect. When I fade, it will bring up delay feedback, reverb decay, moves the filter into a bandpass for all channels except channel 1 (kick drum). Really cool and a lot of fun. I even made myself 2 scenes, one with the effects, one just a bandpass filter on some tracks. I activate my scenes with a button each to active either scene before using the crossfader. So I can choose which pre-programmed performance tool I use.

The problem:
I think I needed to stop at scene 2 channel 5? Just because I ran out of pipeline space. As you could imagine mapping all these controlls for each channel for each CC takes up a lot of space. Just to move 1 channel into the bandpass is 2 pipelines. So for 8 channels its 16 pipelines just for this little movement. If I wanna get fancy and have a different set of range, cc remap to different values and so on, sure I would need these 16+ pipelines to get into detail. But, if I just wanna perform the same movement on 1 CC for all 8 channels, it just doesnt make sense for me.

The question/ request:
Am I missing something? I’ve searched a lot on this forum and tried out stuff myself, but it just doesnt seem to work to send the same CC from one channel to a group of channels all at once -within one pipeline-.

All I wanna do is:
CH15 CC1 send to CH1-8 CCX simultaniously.
I mean, I do want to do more, but generally speaking just that. All the other mapping and so on can be done with the tools at hand. Just want the signal to be copied to a group of channels all at once, with one pipe. → Could be an option in channel remap pipe for example, like a toggle to send on all channels of the range.

I want to build my different scenes, use 1-4 pipelines max for each scene and come up with a bunch of settings that make sense in a live performance setting.

A nice extra would be (and that came with the crazy amounts of pipelines) to group pipes together in the editor. Preferable with their own “global” bypass. That way the scenes or states could be bundles together.
Pipeline Re-arrange/Folder Groups - #6 by DudFaz


So, is this possible? To just send the same signal to a group of channels with one pipe/ pipeline? That would also mean, without an array of pipelines, I could play a group of synthesizers with one keyboard ect.

@Giedrius you have been really good at either pointing at the obvious or helping to make the midihub even greater :slight_smile: any thoughts?

Wishing you all a nice weekend!
Greetings,
ony

Hey, could you show some parts of your preset that you’d like optimized? Maybe there’s some tricks or different solutions possible to reduce the amount of pipes needed to achieve the same. :slight_smile:

2 Likes

Hey @Giedrius, Thanks for the reply and offering to help :slight_smile:

I deleted all the extra stuff, so it just the kind of blocks I was talking about.
crossfader_example.mhp (2.3 KB)

The top block is the kind of more “complex” one with different cc remaps per channel.
The bottom block is always 2 pipelines per channel one being the bottom, one the top of the filter.

Also, maybe for context: the crossfader is basically just 1 fader or knob. So it can only give 1 channel and 1 CC out. Thats why all the translation needs to happen.

The Channel Remap pipe implicitly filters out the channel messages that are not in [in_low;in_high] range, so pretty much all of Channel Filter pipes can be removed.

Then there’s a lot of opportunity to use Transform pipe to change CC id and channel at once, only for the incoming CC #118 on Ch. 16.

The Rescale pipes has “Id” argument which can be used to rescale a particular CC id to the desired range.

This way you can fit a lot of punch in a single pipeline.

For example, these pipes in your preset:

Can be optimized into pretty much this:

crossfader_optimized.mhp (390 Bytes)

Every additional control only requires inserting another copy of Transform (which sets the channel and CC id) and Rescale (which affects only particular desired ID), each affecting the appropriate ID. (the only thing to avoid is rescaling same ID on different channels, but you could just have a pipeline dedicated for controls for each of the channels you use.)

The top line simply forwards only CCs on Ch. 16 to virtual pipeline A, and these are reused for pretty much all of the processing.

2 Likes

thanks so much already - gonna test out your tips and example later this week :slight_smile: v much looking foward to trying it out!

1 Like

Hi Ony!
Zero Sl user here. Would you mind sharing your preset with me ? I also want to have faders for channels, mute, etc on my Zero Sl. Seeing your work will inspire me and probably save me time…

thanks,
fmur

1 Like

Hey @fmur thanks for reaching out!

Relating the above “Transform pipe” to control a bunch of channels simultaneously with a fader and/or the crossfader and other parts to recreate octatracks fx concept: I couldn’t find the time to learn/ build it propperly in the last months :confused: … but its still on my list and I’m happy to share it once I figured it out.

But, what I can share with you is the general approach working with the zero sl mk2:
The best way to programm your zero sl is with this great software called “Edisyn”. Highly recommend it! Its also giving new life or simply better controls, for a bunch of other synths, making new patches a fun and adventurous journey. (try randomize, blend, nudge, hill-climb, morph :wink: find the software here: GitHub - eclab/edisyn: Synthesizer Patch Editor

Here is a basic zero sl mk2 patch, that has been used for controlling Digitakt, including volume+mutes per track, direct controls for delay (feedback), reverb (decay), external IN L+R (volume, delay send, reverb send).
zeroslmk2_LIVE.syx.zip (879 Bytes)

Just make sure that you set up the right midichannels :wink: in my case I set up ch15 of the DT as FX control channel. Hope I could help you get started!

Have fun experimenting and please reach out if you have any questions :slight_smile:
Greetings, ony

2 Likes

Hey @ony might this be useful? (not sure if it’s this Zero SL aspect that @fmur was looking for)

Replicating CC15

here are three approaches where replicate happens in one line :
ony_replicateCC15.mhp

ony_replicateCC15

Pipeline1: 7 Transforms
Each Transform uses Ch1.CC15 to create a copy for a new channel

Pipeline2: replicate via Harmonize for v=1-127
By doing CC → Note on, we use Harmonize pipe to make copies
Saves 2 pipes but only if you’re willing to lose value = 0
(value = 0 becomes a Note Off and so is ignored)

Pipeline3: Harmonize for all values…
…but ends up longer than the first method so not worth it for just 7 copies



PS. these last two use the Transform “Channel Argument” which is new since your original post

2 Likes

Hey @resonotter :slight_smile: thanks for always chiming in!
The question of @fmur seemed to be more of the general way to incorporate the zero sl or ways to programm that machine, in contrast to making it work with the midihub. For this basic setting you dont need the midihub necessairly.

But, with midihub there is so much more to explore between your music gear and your controller (zero sl and the likes). So coming back to your approach, this is a huge step towards multichannel control (FX or else). Thanks a lot for sharing this example! I just had a quick check and think the first pipeline is exaclty what I was searching for. I once had a go a few month ago, but couldnt really figure what to do with the transformer pipe to make it work. I understand how powerful it is/ can be, but its still pretty confusing with all the options haha I guess the Channel Argument further simplifies how to spread the signal across different midichannels. Is it true, that I could set different cc values (ranges) for each transformer pipe? So I could predefine the cc range without an additional cc range pipe?

Little recab for anybody reading this, my goal is to build a similiar fx scene/ crossfader mechanic for live performance as the elektron octatrack offers, but for the digitakt (using a midi controller and midihub). That patch could also extend to using scenes for synths or multible machines at once. The problem for me, I was running low on pipes to really get this going, the general concept of scenes did work already.

Whenever I’ll find the time to finish a working patch, I gonna share it with you :))

1 Like

Is it true, that I could set different cc values (ranges) for each transformer pipe? So I could predefine the cc range without an additional cc range pipe?

Yes, the CC ids outside the Work with CC range will just be ignored
All the CCs within the range will create a new channel version in our example


I started a tutorial on it a year & a half ago
which I’m still trying to find headspace to complete!

Definitely worth persevering with learning the ins&outs of Transform

I think of it in 3 sections:

…answering these questions…

(sneak preview pics)

1 Like