From the original SynthMaker forum (2004–2014), with its members’ names and dates.
trogluddite ·
Hi,
Been doing the old bug finding routine on my latest project and came across a little problem with selectors and audio. Not a bug as such, but something to be careful about.
Been using quad mono a lot to have lots of everything with lower CPU, but only wanted to show on screen the displays for one little bit at a time - so I used something along these lines...
So I get four loops/EQs/effects whatever for low CPU, and can show the meter for any one I choose.
HOWEVER. Change the channel on the selector and 'POP!' - it causes all of the audio connections to be recalculated, and all the code modules to be reset (bummer if you use stage(0) for initialising). Somehow, I thought this only happened if you totally disconnected the audio from a module (to save CPU), but you don't need to 'break the chain' completely for it to happen.
Now that I understand it, I see that it could affect quite a few routing situations, so I thought I'd post for the benefit of those that didn't know already.
Here's my rough and ready solution for the above problem with all the selection in green (I have ideas for better ones already).
oddson ·
I think that if the quad stuff labelled "more quad" was actually connected to the sound out or to it's on M2Fs then the behaviour wouldn't occur.
If that's not the case then I'd say it's a full fledged bug. If so, then it's a minor behavioural quirk that would normally not normally come up in real-world situations.
trogluddite ·
Found a lovely little asm solution for the whole problem, posted here...
Real uses for shufps!
@oddson
Might have to have a word with malc then - the selectors are in a side chain 'sniffing' the main audio for my metering - the main output chain remains connected at all times. My instinct was the same as yours; only a complete disconnect/reconnect should cause a re-compile.
MegaHurtz ·
Thats an interesting thing, I was expecting it to do yust that.
But for my box plot it did not. So it does do some things.
But in my case not repadd the array or reinitialise the floats.
seems to be a bit of both?
Edit: I think it`s highly prefferable behavour for it to do a re-thread.
can be used a bit like calling routines.
trogluddite ·
MegaHurtz wrote: But in my case not repadd the array or reinitialise the floats
Yes, further testing here shows it is a weird hybrid of things. I got lots of audio pops on my system that I couldn't trace until I added a stage(0) to some modules for initialisiation. ALL the modules in the schematic seem to go to stage(0) whenever the selector is switched, but as you say all the variables and buffer contents remain intact unless explicitly changed within stage(0). The pops seem to just be a CPU spike generated at the moment of 'partial reset'.
I think there could be situations where this is useful (now that I have my workarounds for the other times)- but I'd rather just have a 'stage(0)' trigger input on the code modules so I get to decide for myself when it happens!
P.S. I've emailed malc to see what his take on it is - I guess the re-threading is probably unavoidable though.
MegaHurtz ·
In all the other cases a bitmask will do yust fine.
Im actually supprised you can have a little control over stage 0, Albeit controlrate.
nice angle. going to make all kinds of weird uses for this 😀.
Wrote something here? To have a post removed or your name hidden, write to [email protected].