Page 1 of 2

Avoiding multiplexer

Posted: Thu Dec 24, 2015 3:04 pm
by tulamide
First of: Merry Christmas :mrgreen:

I know I am supposed to be in a festive mood, but my Christmas present is 3.5 days of pure Flowstone, and I don't want to waste the time. So I better ask here - knowing I won't get an answer today, but anyway - how I could realize the following without a multiplexer.

I have 4 oscillators and 2 filters. I want the ability to route any of the oscillators to any of the filters or bypassing it completely. So there are three ways for each oscillators, but there are 4 oscillators, which makes a matrix of 4x3.

The choices, however, are exclusively. If the first oscillator is routed to the second filter, it can't simultanously go through the first filter or directly to the next stage, bypassing the filters. It's either-or (exclusive or, mathematically speaking).

If you read this and know a way, please consider to explain it in detail, or make an image, so I can better comprehend.

I want to avoid the multiplexer because I understood that only the selector re-compiles the stream. The circuit will be in the poly section, if that does make a difference?

Thank you!

Re: Avoiding multiplexer

Posted: Thu Dec 24, 2015 3:46 pm
by adamszabo
This is the only way I came up with right now. The easiest is to use the matrix, with the osc inputs and outputs to the filters, however this method does not shut down or bypass the oscillators unfortunately.

Merry Xmas!

Re: Avoiding multiplexer

Posted: Thu Dec 24, 2015 4:27 pm
by KG_is_back
Hi, this one should do the trick. The router can bypass its input (the oscillator) if "bypass" is selected, or passes it to selected output. Similarly, route bypasses its input if its not selected at any of the routers (bypassing the filter).

Re: Avoiding multiplexer

Posted: Thu Dec 24, 2015 10:20 pm
by tulamide
Thank you both! I should have checked the site earlier, but I really didn't expect much traffic here today :lol:

Adam, I looked at the matrix but it seems that all streams will be kept alive, or am I missing something? I also have one question: Inside the "matrix pair"-module there is an empty module with just an input to output between the bus extractor and the bus creator. What is its purpose?

KG, that looks familiar according to my routing wishes. I understand the route module, as well as the router module. But the latter does make use of the multiplexer. Is there any negative impact from this that I should be aware of? Remainings from any previous sound data, when switching back to an output, for example?

Re: Avoiding multiplexer

Posted: Thu Dec 24, 2015 11:32 pm
by adamszabo
tulamide wrote: Adam, I looked at the matrix but it seems that all streams will be kept alive, or am I missing something? I also have one question: Inside the "matrix pair"-module there is an empty module with just an input to output between the bus extractor and the bus creator. What is its purpose?


Yes unfortunately thats the negative side of doing it with busses is that things will be alive and use cpu even when they are not routed. The empty module I have no idea, you can actually delete it and connect it straight to the extractor. It was just like that in the stock matrix, which I have modified for you.

Re: Avoiding multiplexer

Posted: Fri Dec 25, 2015 1:46 am
by KG_is_back
tulamide wrote:KG, that looks familiar according to my routing wishes. I understand the route module, as well as the router module. But the latter does make use of the multiplexer. Is there any negative impact from this that I should be aware of? Remainings from any previous sound data, when switching back to an output, for example?

There shouldn't be. In some cases when switching the multiplexer, the channel that is being switched off gets frozen with the last value, but I can't reproduce the bug ATM. Perhaps it was fixed at some point. If you come across such problem, you may replace the multiplexer with code version (I don't recommend it - eats additional CPU), or with multiple selectors chained similarly to "route" module. I can be more specific if you need it...

Re: Avoiding multiplexer

Posted: Fri Dec 25, 2015 2:17 pm
by adamszabo
KG_is_back wrote: or with multiple selectors chained similarly to "route" module. I can be more specific if you need it...


I actually would be interested in how you would do this with only selectors :)

Re: Avoiding multiplexer

Posted: Fri Dec 25, 2015 7:26 pm
by tulamide
adamszabo wrote:
KG_is_back wrote: or with multiple selectors chained similarly to "route" module. I can be more specific if you need it...


I actually would be interested in how you would do this with only selectors :)

First I wanted to be brave and say: "Nah, I'll get it working." But since you asked for it, I can also be honest and say the truth: "Yes, please be more specific" :D

Re: Avoiding multiplexer

Posted: Fri Dec 25, 2015 11:21 pm
by KG_is_back
Here is what I mean. I also added a assembler version, which uses writing to array.

Re: Avoiding multiplexer

Posted: Sat Dec 26, 2015 2:35 am
by RJHollins
This looks very interesting KG.

Gives me an idea for a project that I had.

How would it be to add a type of crossfade when switching outputs ?

I'm looking at the 'multiplexer by code' module, using 2 of them for stereo.

With 4 outs [2 stereo], I'm looking to use something like this for an FX BYPASS circuit. But having a 'user defined' cross-fade value to avoid any audio glitches, pops, snaps ... and any abrupt level changes.

just thinking out loud .... but this looks very useful.

thx