Struggling with CPU load

Hi,
I’ve problems uderstanding how to reduce CPU load.
I’ve been using one of my ER301 as the main drum system of my live rig since 2016 and have always been at the limit of the freezing zone (when you start to have the ER lagging for 10sec when trying to insert something…)
I’ve refined my er301 patch numerous times and I’ve been trying to optimize it as much as I can to reduce CPU load but with almost no success.
I feel it makes almost no difference how many units I use : I went from a configuration of 8 raw players with only loads of local modulations to 6 raw players with a only global chains to spread the same modulations between units.
In fact I’ve been only using global chains for a while, is it problematic CPU wise ?
Is the internal routing of signals in between global units power draining ?
Is using custom made unit really less efficient because of the added layer of controls ?
I 'am starting to think the problem might be that I use every single inputs of the ER + some i2c.cv (usually around 8). Is it what is the most ressource intensive ?
At what frequency are every inputs sampled ?, would it be possible to reduce it ?
In my case, right now, I only use one physical input for audio and all others for gates (I use i2c for cv control) a very low sampling rate of the inputs wouldn’t be a problem ; I am pretty sure everything would works the same for me if inputs A to D were sampled at 8khz (maybe in the system setting an option to set some inputs to a low sampling rate could be added ?)
I am open to every suggestion that would help me stay below 85% :smiley:

BTW this is what I do : Crystal Geometry [live] at Intercell - The Void 2019 - YouTube

I’m not an expert on the 301, but I think it would help others help, if we knew which firmware you’re running…

right now 5.0.3 but I’ve been wondering how to improve my cpu load with no success since I received my ER from the very first batch years ago :wink:

48khz or 96khz firmware?

48khz 128 samples

8 raw players each inside their own stereo mixer all in a stereo chain with external triggering only takes 18% CPU in my test on v0.5.03. So the bulk of the load must be in those “loads of local modulations”.

The number and type of units is definitely the largest contributor to CPU load. Routing is the smallest contributor.

1 Like

Thanks Brian, what about the sampling of all inputs ?
I took a few minutes to give you precise numbers of what I have right now in my super minimalized patch that make my ER lag a lot :
6 raw players
1 dub looper
7 skewed sine env
1 noise
1 rectify
6 S&H
6 microdelay (i could use noise instead if noise are more efficient)
7 i2c CV
1 offset
43 vca
30 mix
all that spread into 17 global chains
one 8 sec buffer
41 Mb of samples (5 chains of about 40 slices)

I made a video showcasing how bad the situation really is (hide the children :wink: )

43 vca
30 mix

That’s alot! In my experience it’s easy to throw a vca and a mix in alot of places where it’s not really needed, but it’s hard to tell how you used all these units without being in front of your er-301…

1 Like

That’s already included in the initial 3% of CPU load that you see when you have an empty patch. Not much to be gained there really.

109 units in total for an average of 0.8% of load per unit. I’m actually surprised you were able to get that far! There does seem to be a lot of mixers and VCAs…those are making up the majority of your load. Have you tried drawing your patch out on a piece of paper. Sometimes this helps me see more clearly the essentials of the patch (as in what am I trying to achieve sonically), especially if the patch grew organically and is in sore need of some pruning.

uDelays are definitely cheaper than the noise units.

This patch is really optimized, I use to be a software engineer and I am pretty confident this iteration of my “drum machine” is as good as it could be, I’ve spent almost 4 years working on its concept and I have been rebuilding it from scratch a couple times ;).
I could reduce the number of mixers by not using global chains I would probably be around 20 something but regarding VCA there is not much I can do, I didn’t think vca were big on cpu.
I could replace the noise with a high pitched sine…

Do you know how much exactly a vca add to the cpu load ?

@a773 put together some measurements:

http://wiki.orthogonaldevices.com/index.php/ER-301/CPU_Load

Thanks, I guess today, I will reduce functionality to have a more stable patch and hopefully one day a new CPU will come to unleash all my ideas because I really could use 100 more units !
Maybe I’ll try to dispatch a little better what is being done by each on my ER301s, or maybe I need a third one :wink:

If you don’t mind returning to your programming days, something that might help is coming sooner than you think! :wink:

14 Likes

:open_mouth: :open_mouth: :open_mouth: :open_mouth:

Blockquote
6 raw players
1 dub looper
7 skewed sine env
1 noise
1 rectify
6 S&H
6 microdelay (i could use noise instead if noise are more efficient)
7 i2c CV
1 offset
43 vca
30 mix
all that spread into 17 global chains
one 8 sec buffer
41 Mb of samples (5 chains of about 40 slices)

OMG Max, what do you do with so much things ?!!!

I Use
4 Mixer
4 Variable Sample Player
4 VCA
4 ADSR
4 LPF
4 HPF
4 EQ3
4 FOLD
4 LIMITER
12 CV input

And I’m at 46 % CPU load with firmware er-301-v0.5.03-unstable-48kHz

You know me I need more :wink:

dont wanna sound like an a$$ but i think one must beware of being too tempted to overdo, especially with something so open ended like the er-301! think about how we use to perform live 20 years ago (grooveboxes like yamaha rm1x, korg electribes, rack mounted romplers, mpc’s…) with all those limitations…i mean…my akai 950 still has only 750kb ram but i can squeeze out of it an immense amount of sonic gold :slight_smile:
limitations are good for creativity,i know this sounds trite, has been repeated lots of times, but still holds true, i think.
maybe try to think how instead of using multiple samples you can use one source and extrapolate numerous outputs from a simple one, even something basic like a sine oscillator with phase modulation can conjure up some serious weight if properly modulated!
perhaps you can keep this patch in a quicksave and try to build something totally different limiting yourself to the minimum numbers of units possible! i wont be surprised if you end up with something you like even more, maybe at an healty 75% cpu :slight_smile:

3 Likes

dropping the ‘one more thing’ bomb! hahaha :slight_smile:

2 Likes

I should have used the “quote” but I was really replying to an old friend whom with we were doing live sets almost 20 years ago. At the time when we were coming back from gigs in the train we were imagining together what would be the ultimate dream groovebox. That’s what i am building now with my modular system.
My interest is in generative patches, my ER301 drum machine combines sequences to create new ones, it creates its own drum rolls or variation, it generates drum kit at a press of a buton . I am not interested in creating basic bloc of pieces of gear I was touring with 15years ago, what I am trying to achieve is on a totally different level.
It’s not for studio work it’s to play live and my whole live system has been tuned for years and I spent countless hours thinking about it. So no offense but I am just not going to follow your advice :wink:
Here is a short read about my path leading to eurorack : https://www.patreon.com/posts/41491843 (ahah there is even a photo of Cedre and I playing with our rs7000 in 2003 I think)

I can’t wait to see what Brian has been cooking and I would gladly try to wear my software engineer shoes if it can help me achieve what I am aiming for :stuck_out_tongue:

Great Job Max,
I trust you to do great things with your ER301 and your modular!!

I use my ER301 as a really standard rhythm box device, in which I can choose what I want, filter, equalizer… So i no longer depend on the wishes of the manufacturers.

Max is on a totally another way, like he says, he want to explore and create a totally new piece of performing device and exploite a lot of the capacities of a modular system.