More Efficient Layered Sample Routing in Instruments

I came across this, when setting up some instruments with layers to fake unison voices. The hit on the CPU was shockingly heavy, already for a few voices. The sample routing in instruments seems to be quite inefficient, when different samples of an instrument share a common modulation set. I’d consider this a concept bug.

At the moment it appears, each sample is processed seperately by the applied modulation set. In case of samples sharing the same modulation set that’s completely redundant. It should be way more performant, to process the summary of the raw samples a single time by the modulation set. That in addition would mean, the “send to FX” currently applied in the sample settings becomes a global setting for all samples sharing the same modulation set. The routing of every single sample hereby becomes obsolete too. The only signal remaining to route to FX would be the one-time-processed result of the modulation set. That actually should result in an another massive performance boost.

…can you provide a xrns for those who are interested to see that cpu spike? (would be me actually…)

You can easily do this yourself. Just layer and handful of samples (could also be always the same) and apply the usual modulation for voulme, filters and stuff.

on my pc (some athlon x2 3ghz):

5% with 1 waveform
9% with 12 waveforms
11% with a few volume and pitch modulations

though, what looks weird is, that renoise will never show more than 12 waveforms playing, if there are 20 layered, it still displays only 12 lights

The processing of filters, filter modulation for each voice is the main bottleneck here, the other modulation and FX sending is not really relevant in this case. We can try optimizing the filters a bit more, but this can then only speed-up the processing of simultaneously triggered samples.

12 instances + 1 moog filter + 4 notes == 47.4% cpu. seems “ok” to me (only just *g)

is the 12% cpu usage when this thing idles, because there’s no means of “auto-suspend”?..

Those are exactly, what it’s all about. Performance for single samples otherwise is fine as usual.

This is simply a limit per note-column in Renoise. It has no use to stack more than 12 samples at the same time.

Feature request: make this limitation of 12 samples per column user-definable in the preferences.

If you have an .XRNS which clearly demonstrates the problem, then please share it with us so we can easily replicate the problem.

Text on a forum is one thing, but a working example song that makes us go “oh, ok!” is quite a different thing altogether.

Thanks.

Taktik was aware of the behavior and already confirmed it. So I guess that’s obsolete in this case.

Either way, if you have an example .xrns song that perfectly demonstrates the problem you’re talking about, then please share it with us.

That kinda stuff is invaluable to us while testing.

We need good benchmarks.

So if you have such a benchmark, then please share it with us, dude. It will be very much appreciated.

Cheers.

I had it already deleted, when I wrote the origin posting, because it was just useless that way. You know I’m usually someone providing things. I wouldn’t have any problem to set this up again in the old system, but I really don’t feel like doing this in 3.0 again, because the bad workflow for editing a bit complexer sounds is really just annoying. This ain’t no diva behavior or something like that. I’m just really getting upset, when I have to work with the current “solution”.

I was thinking that maybe individual per sample modulation and FX is a bit of an overkill?

Maybe it would make more sense to treat the instrument as a single unit and have just a single modulation and FX lines for all the samples it contains, the way it used to be?