gate - zero or no data?

jayrope's icon

How can i stop closed gate outputs in gen~ from sending a constant zero and instead send no data/value at all?

Thank you for any insights!

Roman Thilenius's icon

hay großer,

i think it does not differ from msp; you cant send nothing (read:disconnect) with sample accuracy.

jayrope's icon

Hey Roman, i thought so/ich dachte mir das schon.

So instead of distributing values through a gate that offers different kinds of sub-processing on it's outlets i had put the sub-processing first and then just used a selector to pick the one desired.

However, that kind of method seems a total waste of cpu resources.

As i am programming for a Cortex M4 those worries are real. Hmm.

Roman Thilenius's icon

not sure what you are doing, but in case you dont want to use a sinal of zeros for "nothing" because you need the "0"for something else already (for example for "false"), try using an offset for -1 or +1 for this kind of operation. for signals this is often your only chance.

p.s. after i broke my arm 2 weeks ago this is the first sentence i am able to type with two hands again :)

Roman Thilenius's icon

ach so: subcircuit. afaik that is not possible at all in gen.

check if you have the option to use separate gen patchers. eventually can also combine some parts of these different sub-processings.

Floating Point's icon

i think if you want to "stop" an audio signal process to save cpu you need to put different sub-processes of your patch into different poly~ objects and send a mute message to the poly~ that houses the process you want to halt

jayrope's icon

Thanx, yes, i know that, but the Cortex processor (in Hoxton Owl) takes only the code inside one single gen~ object to work with.

Graham Wakefield's icon

Hi,

The only way to suppress audio processing entirely within a single gen~ patcher is to use codebox if() statements.

But if your branches are simple, it might be better for the CPU to compute both paths and use selector. (Sometimes the unpredictability of the if() condition is more expensive than the computation within the branches. Modern CPUs don't like unpredictability...)

Graham

jayrope's icon

Thank you again, Graham, i ended up doing exactly that (branch out before, then use selector).
I think, that aCortex M4 is reasonably modern, however 168MHz aren't exactly fast and onboard extra RAM is only 1MB, so i am still wondering, if functions could only be called, when they are needed.