fexpr~ ($y1+1)*($y1<2); $x1*($y1==0)+$x2*($y1==1)+$x3*($y1==2)
might have a *lot* of high frequency content.
you could replace the counter in the above fexpr~ with a slower counter and it would have a coarser effect. That would reduce the pitch of the noise. If the counter got slow enough, it would sound more like abrubt panning between the signals instead of mixing the signals and adding noise.
fexpr~ ($y1+$f4)-3*($y1+$f4>=3); $x1*($y1<1)+$x2*($y1>=1&&$y1<2)+$x3*($y1>=2)
That adds a $f4 inlet, set to a float less than 1 to slow down the counter. It will pitch the noise down into a more usable range. At around 0.01-0.1, you'd start to hear some tones pop out (80-800 Hz). Probably at around 0.0001, it would start to sound like an arpeggio.
Replace the counter with a random walk with drift on [0,3] might also be good. It would smear out the high frequency noise. It would give you 2 parameters to control the effect, speed and noise amplitude.
Or you could try to add some cross-fading with another parameter that would cut down on the clicks. I don't know what you had in mind for this effect
Chuck
On Wed, Mar 27, 2019 at 5:04 PM Charles Z Henry czhenry@gmail.com wrote:
there's another option you're missing which doesn't involve storage
When you do your interleaving in a literal way, think of it as the sum of 3 signals: A,0,0,B,0,0,C,0,0,... 0,1,0,0,2,0,0,3,0,... 0,0,!,0,0,@,0,0,#,...
Those signals are versions of the original, except pitched down by factor of 3, with an additional bit of harmonic content, and then added together.
If you didn't want to pitch down the signals, and you know that your osc~ frequencies are low (< 4kHz should be enough) you could just multiply by 1,0,0,1,0,0,1,0,0 0,1,0,0,1,0,0,1,0 0,0,1,0,0,1,0,0,1
and add them up. If you DID want them pitched down by factor 3, you could adjust your inputs to osc~ to freq/3
And you can do it with a single fexpr~
[ fexpr~ ($y1+1)*($y1<2); $x1*($y1==0)+$x2*($y1==1)+$x3*($y1==2) ]
That object takes your 3 input signals $x1, $x2, $x3, makes a counter in the first output $y1 (0,1,2,0,1,2,...) and the 2nd output $y2 has your interleaved signal ($x1[-1], $x2[0], $x3[1], $x1[1], ...)
I'd say, give it a try, it's a nice idea, but the high frequencies you're going to introduce may be harsh and in the range of 8kHz and up... and the result in the low frequency range won't be much different from simply adding them up.
Chuck