Signal followers - Cannot use two instances to same destination?

I’ve noticed that if I’ve got a kick on track 1, snare on 2 and pad on three - that I cannot use a signal follower on both 1 and 2 pointing to the volume of track 3. Track 2 overrides the Track 1 signal follower.

Is that expected? Do I need to use something like Hydra to work around this?

Many thanks for any wisdom.


Check out the Meta Mixer, I think it might be what you are looking for.

Thanks for the reply. The example of signal followers on track 1 and 2 with common destinations to track 3 is maybe not sufficient to outline my problem, sorry for the confusion.

Potentially I will need to use this technique on many tracks (more than ten or so) to a common destination.
As far as I can see, the Meta Mixer is only useful for combining 3 inputs to produce a result meta.

The only workaround I can see, in order to get more than one track effecting the volume of another through the signal follower, is to group the tracks together and put a signal follower on the group output. This is not ideal though because it shares threshold, sensitivity etc (so pretty much no use really).

Maybe you could have more gainers in the dsp chain of the track you want to affect, one gainer for each signal follower you have? Or you could have meta mixers with destination to other meta mixers? Or hydras? I’m just giving you ideas, some renoise guru might give you a better response soon :)

You can trigger a Hydra-Input with the Meta Mixer results. With the Hydra then trigger what ever you want, using individual response-ranges and slopes set on the Hydra outputs. You’re also able to cascade several Hydras then (trigger the input of another Hydra with the individual output your source Hydra), if you’re in need for even more outputs.

Yeah 3 is the maximum indeed for these combinations. If you really want to combine so many tracks’ signal cv data then you’ll either have to go with grouping of kicks, grouping of snares, etc, or signal-following every track by its own, combine signals in mmixers per 3 and then route those metamixers to a 4th metamixer so that you can combine (and still modify/automate the influence of) every track’s signal.

Does the fact that I cannot have more than one Signal Follower targeting the same destination parameter strike anyone as a unusual?
Is that behavior as expected?

Missed the point of the need for “more sources” instead of outputs in my reply. Happens, when you not read everything. Sorry.

Yes it is behavior as expected, as in Renoise data is ALWAYS binded exclusively between device’s in-/outputs. 1 in-/output = 1 valid value. This goes for all device connections. For the meta-data it makes sense, since only plain values are passed. So a meta-input isn’t able to identify, which device provided the data. Conclusion is, it wouldn’t be able to decide, which values to add to the input and which data is just an update of a former signal.

Imagine a meta-input like a simple and single virtual knob. There’s only one position for that knob possible. No matter how many people in a row keep turning it. The last one turning it will set its valid value. The knob is too dumb to decide, what to do with data from multiple sources. That’s where meta-mixer and formula-device come in.

Devices in Renoise are meant as modular elements, designed to work for single and simple tasks. If you need a more complex setup, you have to setup it yourself. Sometimes a blessing, sometimes a curse.

The first important thing to keep in mind is that the destination parameter can only receive a single value from a single source device at any given moment in time. It doesn’t matter if you have 2 or 200 devices connected – it will always be set to whichever value happened to arrive last.

The next thing to keep in mind is that the Signal Follower produces a continuous output, and is actually a bit similar to the LFO device in this regard. In other words, while the device is enabled, it is always outputting something. For the sake of extreme simplicity, we can say that the Signal Follower continuously outputs a value of 1 when there is sound on the track, and continuously outputs a value of 0 when there is silence.

Due to this continuous behaviour, you can hopefully begin to understand why two Signal Followers connected to the same destination parameter will never work correctly. They will always be clashing with each other, fighting over which device sent its value last. Due to our left-to-right device processing, the Signal Follower on Track 1 is applied first, then the follower on Track 2 is applied second, and so on. This results in a bizarre and wonky kind of doubling up of meta signals that typically turns into useless crap.

So while Renoise does technically allow you to connect and configure devices in such a way, it cannot perform magic or predict what the correct result should be in these complex scenarios.

If you want multiple inputs to control a single output, then you must be combine all those input values together somehow. This is exactly why the Meta Mixer was added.

I see. Interesting.
Thanks for the clarification.

Though in your ‘knob’ analogy the fact that renoise only allows one turner of the knob, rather than the series of people you suggest, is the limitation that I find unfortunate. In your example, with the Renoise limitation, only one person can turn the knob - never more than that.

In my practical example I am asking Renoise to first take a value from track 1 and ‘turn the knob’ of track 3, then take a value from track 2 and ‘turn the knob’ of track 3.
I could accomplish this using automation from several sources, all targeting the volume of track 3 - but the signal follower cannot perform like this.

I will, as you suggest, try to find a workaround for this and post my findings here when I have settled upon a decent solution.
At the moment it seems like a Gainer for every side-chain key track is necessary.

thanks again

This would seem to be reasonable, if I configured 2 Signal Followers to target a single destination I would expect the destination to ‘not care’ where to control signal came from. But I would expect it to respond to both. In Renoise it does not respond to both. In my example, control data from Track 1 is ignored and only the control data from track 2 is processed by the destination on Track 3.

Bit_Arts’ example actually perfectly illustrates the problem in general.

It is physically impossible in the real world for 2 people to turn the same knob at the same time. Imagine I’m trying to turn it to the left constantly, and you’re trying to turn it to the right constantly. It cannot work. Either we’re gonna break the knob, or we’re gonna get into a fight and tell one of us to get their damn hands off the MIDI controller.

While physical limitations do not always apply to software, this is one case where it does. It’s this continuous behaviour that gets in the way. You cannot have multiple sources sending continuous values to a single destination. The source values must be combined together somehow and then output as a single value, either via addition, multiplication, or whatever.

It does respond to both, it’s just that the values are clashing. The most recently sent value is overwriting the one that was sent before it. How else could it possibly be handled, except with the user of a meta mixer or something similar?

Put the tracks into a Group Track, put the Signal Follower in the Group.

But of course only one can be routed to a destination and get properly usable results! As dBlue explains above.

Okay, I understand this now. Thanks (old dog, new tricks and all that) :D

Not exactly. Several people can turn the knob. One after the other. The last one then sets the valid value. Dblue described it a bit more detailed. Everytime the internal Renoise timer makes a tick, the meta data from all devices are exchanged between related devices. If you’re sending meta-data from 7 different signal-followers to a single gainer then, all the 7 sends are processed in a row and the Gainer would receive all the single values, one after the other. Just the result appears, as it is only one device (the last one) sending data, because the other sent data in practice never had any effect.

You can’t accomplish this by automation. No matter from where and how many automation data you send, it will always be only the last sent value, that’s gonna be set. Your problem is not the signal follower, but the general handling of meta-data.

The simplest workaround is, as suggested by CAS, the use of the Meta-mixer. Formula-Device would be another one, while first of all you’d have to be clear yourself, what actually is the result you expect. Like the question, if you want always the strongest signal to trigger, a mix of all - just added to each other - or an average from all signals or whatever. See!? There are several ways to approach this and it’s really not THAT simple and trivial.

Thanks, I can understand this now.
I would think an additive behavior would be most like what I would expect in the analog world (or by using the sidechain/channeling of other DAWs).

You can also turn On and Off the Signal Followers, so only the one you want controlling the parameter at a particular time is switched on.

I wonder if I could automate that using a signal follower … ;)

Seriously though - I had not thought of that, and could quite possibly be the best solution to solve my current problem. Thank you!

Would it be possible to store them in a array and use its average? :unsure:/>

To calculate the average of multiple ins you could use the formula device. But that’s still only 3 ins then.

A very simple way to get the additive result of an unlimited number of Signal Followers in a row btw would be to just trigger the “Dest. min” of the next Signal Follower with the output of the current one. Last Signal Follower in the row would then trigger the Gainer and you’re there, having achieved a perfect additive meta-cascade. While min & max settings of the receiving device would have to be flipped, right? Should work this way. But it’s already quite late and I’m way tired. So there’s a 50/50 chance I’m telling crap. :D