While working with this idea of instrument-body feedback into the
oscillator, I wanted to revisit the polyphonic instrument, where the
instrument-body effect can be shared and fed-back into multiple
independent voice oscillators. I thought it could be interesting to
use Rune's JunkVerb (scattering junctions forming a loop/network of
4 stages of 4 all-pass filters each).
I've already done something like this many times in the past. Here
is a relevant piece of such a thing that had about 8 piano voices
summed up and sent through a piano-body resonator (but oddly, I see
that the feedback came from the summing block, *before* the
resonator, instead of after):
The circuit that drives the multiple voices for a polyphonic
instrument can be simple, like this 3-bit binary multiplexer used in
the same piano stack shown above:
But that can be wasteful, because you can end up with multiple
oscillators all independently playing the exact same note. I tried
long ago to make a "smart" stack driver that would not cycle to the
next overwrite if the note to play was already stored, but that
first attempt failed. Recently, I came up with a better way, but it
requires that the final outputs include triggers as well as
frequencies.
This new way (to get a polyphonic stack-driver to re-use existing
notes already held in the S&H blocks) involves having the
initial trigger ripple through all the sample-and-hold sub-circuits
for the various output feeds -- only if no match is found does the
trigger come out at the end, and then force the mechanism to move on
to the next one to be overwritten. If any of those sub-circuits
already has the new frequency, then it will simply retrigger on its
normal trigger output, but not pass on the query trigger to the next
sub-circuit. Here is a look at that key part -- the t0 initial
trigger goes in at the top, ripples down through the blocks, and
comes out at the bottom only if none matched, kind of like a query:
I first made this a size-8 stack driver, but today cut it down to a
size-4 to cut back on some waste in a demo circuit. But before
that, I found a defect, I think, in Analog Box.
The "8Stack with Reuse" driver had been working just fine, and then
today I started getting a bizarre defect showing up in it. There is
this first S&H block that capture the F (frequency input) with
the external trigger, and then a second S&H block that takes
from that one only if the query trigger gets all the way through the
sub-units, meaning that none of them already had that frequency in
storage. Well, what I am seeing here is that the frequency gets
corrupted slightly when captured by that first S&H block. You
can see with read-outs that the input frequencies are always pure
notes (no +xx or -yy cents). But what shows up after that first
S&H block is almost always way off, with noticeable sharpness or
flatness. I can't figure out any good reason that this should ever
happen.
Here is a screen shot showing this defect, though by the time I got
the screen shot the input F had already changed to the next note:
The point is, the input through F should never be anything but a
pure intonated frequency (like the +00 shown here), but once it
comes out of that first "sh" block, it often has a seemingly-random
about of deviation, many cents sharp or flat.
When I first encountered this, I tried changing the trigger of the
first S&H block to take either edge, and that fixed the
problem. But that's not the way the circuit is intended to be
used. And later, once I added two other blocks containing this same
8Stack driver and with that workaround in place, all of them began
showing the defect again!
About this defect, is this a known problem? And if so, is there a
work-around?
In this case, the resulting cacophony of out-of-tune notes is almost
comical.
Here is a piece of the relevant polyphonic module:
By the way, the "ki" means "kill", which in this demo circuit is fed
by a trigger occurring any time there is a change in the chord
chosen by the sequencer. That is to prevent having notes linger on
indefinitely after they might not fit the rest of what is being
played.
I'll post the actual analog box demo circuit with all this stuff in
a separate post, but here is the 4-deep stack driver module, which
also shows the same defect (perhaps not in all circuits, since I
only saw this defect for the first time today):
--
Keith W. Blackwell