MXXX: Tips/tricks for cpu efficiency? Load balancing?

Official support for: meldaproduction.com
Post Reply New Topic
RELATED
PRODUCTS

Post

As the current setup gets more complex, I'm noticing that CPU utilization is over half a core using "very high" interpolation, 6 modulators, 40 MP's, and 4 MIDI triggers. Looking to optimize efficiency.

Logic:

Can I just ignore CPU concerns all together for offline render and run in extreme mode, or will it still be a problem if that core exceeds 100%?

If processing from an MXXX instance on a bus spikes a core, is it possible to force load balancing by maybe doing half the processing, then feeding that out to another bus, and doing the other half there? Some other trick?

On the MXXX side:

Any other tips, tricks, or things to look out for? For instance, do modulators always consume more CPU than MP's, or if you feed a modulator's output through an MP and force the MP's output to be continuously variable, does the MP then consume as much CPU as a modulator?

I have noticed that some (non-Melda) plugs have odd differences between live and offline bounce. If I do need to turn down the live interpolation mode, but want to use extreme mode for mixdown, has anyone noticed any differences other than basic audio quality and/or zippering?

I'm assuming multiple modulators and "very high" interpolation settings are the main culprits, but are there other elements or processes that are CPU intensive that I may be ignoring? I'm already using MXXX1, and I just added defeat switches to turn off any modulators or modules that are not currently in use.

thx

Post

Just a few tips, I use:

If making active presets for others to use. Try not to always use enable buttons, as the user will not always use them. If you have a reverb (just an example) in the preset that has a dry/wet control. Then attach the reverb modules enable parameter to the dry/wet control, in such a way the when the value is at 0% the module will be disabled. This is like an "Auto Enable" that is hidden from the user. Same goes here for modulators too, say if you have a "Modulation Depth" control in your preset, it would be good to have this control turn off the modulator when it is at 0%

Higher interpolation settings often don't sound better. The lower settings are smoother and sometimes that sounds better. So typically I wouldn't get the sound right and then render out using higher settings, as this could actually make it sound worse. I would try and use the lower settings first and only use higher settings if it actually has an audible improvement. Don't be tricked by thinking higher is better. This is also true for upsampling. You could use MCompare, render out some audio all with different interpolation settings and then MCompare to do a blind test. This will force you to pick which one you like best without any bias.

Always try to use an FX modulator rather than the global mods. For example, if you are modulating a utilities gain parameter with a mod. Then it will be more CPU efficient to use a dedicated tremolo FX instead. In other words, the modulation inside an FX is lower CPU and preforms better than the global mods.

Try to always use the minimum FX. For example, if you are not using the dynamic feature, then use a static EQ rather than DynamicEQ. Same for other FX, don't use Filter when Bandpass would work etc. Does it really need to be TurboComp? Could just the standard compressor work? Again, use the blind test in MCompare to see if you actually prefer the sound of the more CPU hungry FX or are you being tricked into thinking it sounds better?

Lastly, incase you didn't spot this already. There is a handy CPU benchmark in the settings window. You can copy/paste your preset into all the A-H slots and then make little tweaks to each version, and then test them for CPU efficiency to see what combinations work best.
Jason @ Melda Production

Post

Annabanna wrote: Can I just ignore CPU concerns all together for offline render and run in extreme mode, or will it still be a problem if that core exceeds 100%?
I am not 100%, but I think CPU doesn't matter here. I remember rendering a track at 16x upsampling and very high interpolation on a really shitty old laptop and it was fine. Only took a few hours to render! :o :hihi:
Jason @ Melda Production

Post

The disable at 0 thing occurred to me the other day, but I still haven't sat down to work out how to accomplish it. What would you say is the most straight forward approach there?

I did work out logical extensions of disabling. For instance, I have a chain of effects where if an earlier bit is disabled, then everything after it stops working, so I caused any earlier disabling to automatically disable everything after it, and broke each into separate visual sections in the interface with it's own enable button so it's always visually clear what has been disabled. The A-ha moment was setting the switch to toggle from from off to off. Switching section A off also turns section B off. Switching section A back on also turns section B off... but it doesn't matter because it's already off, and would never make any sense for it to be on without A being on.

Interesting about lower settings sometimes sounding better. It is certainly the case in some plugs like MSpectralDynamics that lower resolution settings can sound smooth, though the visual analysis I've done so far makes the modulation stair stepping in particular quite obvious. I've done my tweaking almost all visually, though (dummy signal, pink noise, disabled audio outputs, and a waveform display), so point taken about doing a proper blind A/B on the sound once the basic behavior is dialed in. The jump in CPU depending on interpolation mode is, as expected, dramatic.

I did look at the CPU benchmark, but had forgotten about it as I wasn't focused on CPU when I came across it. I've been just copy/pasting alternate versions and looking at the meter, but that should be more accurate.

Unfortunately, so far, I haven't had a case where the modulation I want is already within a given module.

thx-

Oh, and I do have a few plugs with different settings for live vs render, but I don't recall burning something that just couldn't process at all live. Was the laptop example Logic, or something else?





I realize it's probably just a Logic question, but anyone got a trick for forcing load balancing between plugs if I can split the function into two instances? Is it helpful or harmful to bounce the bus after process 1 to another bus for process 2? Something else? (Parallel won't work in this case).
Last edited by Annabanna on Mon Aug 06, 2018 2:12 pm, edited 1 time in total.

Post

Code: Select all

$eNqdVVtT4jAUft9fkamvaku5lRnAQQR0RtShrrCPkQaaMSTdJBXx1+9JeqGwOqvbl56cnvOdL+fW7sXbhqFXIhUVvOfUzj0HEb4UEeXrnpPq1VngXPR-dKeLxUIRrUGt0AkYOmgouJaCMfAdcfzMSNRzwHvy8yak78QHm3orOG37nVI3wmoH+iDwMvXtLEwY1ZpI87UGHp7fOlaDQx1gp-jtdnx-ycTyxWhB6YMyZZo+YIk3BKzVENjgROVEQsLIUpPogaVrCnfzToH0U3HTdtBu13yn380+q0JA1buMU8buALznzAjk6BkBQvXsoIW1+2USUiCEh2k6yUyvSKJja-zhTcJUSpHyaBhjzgnLMwoA+QPohcmTYOmGuP3ugGO2eyfygHK4EULHnCgFx3OvCRqRyiVAQZQ55ZHYPu4SOF5DIMNZkhVlkD2gDCdBuUZjhtfqEoI3gP+b6Yq6B6XpdDrNVstxPzNrHJu5R+BSLIGXkN6eMXiOKWNWCGOxhRIK+YRZSpTVPcZ0+WIu5lb8a+geUippRKz554b+Vw3rXzVs-MMwFFysoR+rNzSZKGrV704kTuJ+N7EprFbutylYsxW0-KbfDIIalE7bSt2KbRgTtrLd5h8k2XTeWd1E+AbeA8EvFqt+Xmt6zVqj02kHdYv1Xahruo733BoVPm5+z4EkWJmepxto9pnYqiIlh9NSKkpBmbVzOOD9I4WHJjASyX480RmaMPGMmbJLZxRRLeRURED1TsgNZtkuAm9gkk3jwcdsuK-kzp0TDR2ZkDwDtiX3UuZ1uUMrKpVGSUHIDFQh2+0xw3xNbGZK-eFC2TMGqQxchnP-BzAvnZkonJDqrJW40Knm20ej-MF8e3a+YZ140HvmAahdXsdPVsbewM0juSVhkI-q+JfGFH+w1PSVwA6BHw8ypcy27BBrshZyd6PJ5oavBBqkOjaj6KDRFFNmBKM37-l8Di8gMYTlSYBnlqtsJCvwJppM0AygzaJ0TevlHTenkY6nZrLNGkXVlZYXyC1M3GlB3a3+L-s--gDQQ05z
Jason @ Melda Production

Post

Hmmm... I'm not seeing any setup there at all.

Looks like you just added an enable button as a secondary destination parameter, so it just automatically defaults to off at 0? Handy. That's funny. I just assumed it would be more difficult (like maybe banks skewed to 0% / 0.01% with interpolation disabled or something), so I hadn't tried the simplest possible thing.

Post

It is not as simple as it looks. Take a look at the transfer curve.
Jason @ Melda Production

Post

Ay, there's the rub.

Post

It also might be useful to mention for anyone following any of this advice and disabling unused MOD's to also then send a reset to whatever parameter it's controlling.

For instance, if MOD 1 is modulating the output gain, and the unmodulated value is 0dB, then I'd want to also along with the disable message separately send a message to reset the output gain to 0dB. That way if it is disabled while in mid-modulation, the value won't freeze at the last modulated value when the switch was thrown. Setting it in this case to a range of 0dB to 0dB works because whenever it is enabled or disabled, it sends a value of 0dB, but since an MP sends only an instantaneous message, and the modulator is constant, the value is immediately overridden by the modulator anyway, so the net effect is only that it resets the value whenever the mod is turned off.

Post

I think this option already exists here?
You do not have the required permissions to view the files attached to this post.
Jason @ Melda Production

Post

Seemed to generally do the same thing at first, but after replacing all my hardwiring, it's clear that all kinds of things are breaking now as the result of various disable events.

Not quite sure what the difference is (and I've unchecked all the boxes while rewiring), but I'm guessing it's something along the lines of the checkbox not considering the current configuration of the modulator, and therefore it's current neutral midpoint... so maybe it's a less nuanced version of the same concept... though likely a perfect quick fix in some other circumstance.

Post Reply

Return to “MeldaProduction”