[sdiy] Polyphonic keyboard scanner
Eric Brombaugh
ebrombaugh1 at cox.net
Fri Jul 31 19:23:50 CEST 2009
David G. Dixon wrote:
> I know this will earn the scorn and derision of the programmers on the list,
> but I'm wondering: Does anyone here know of a polyphonic keyboard scanner
> circuit based on logic IC's (non-programmable)? Is this even feasible
> without a massive pile of chips? If so, I'd be very interested to learn
> what the algorithm is. The approaches I've been thinking about are all
> fairly complicated (one scanner (counter + 2 multiplexers), but 8 separate
> latches and ladders with data comparators to compare the count to the
> latched data for preventing double latching and controlling note-off -- I
> haven't worked out all the gory details yet). I'd like to design something
> that will send out 8 CV's, 8 triggers, and one gate.
No scorn or derision here - sounds like an interesting exercise in
creative anachronism. I imagine that a basic 64-key scanner would need a
6-bit counter with the top 3 bits coupled to a 3->8 decoder for a column
driver. A switch matrix with diodes at each crossing so that multiple
keys could be down without creating phantom closures. That feeds into an
8->1 mux driven from the low 3 bits of the counter to detect closures in
each row.
At that point you've detected all the key closures but you still have to
prioritize them and convert them to CVs. That requires some sort of
memory stack for the priorities as well as an accurate DAC and
potentially some sort of lookup-table ROM for the CV conversion.
When all is said and done you've probably got at least 15 - 20 sq in of
PCB space, along with $5 - $10 worth of logic ICs. Contrast that with
the $2 you'd pay for a low-end MCU that could do the job and you've got
to ask yourself if you're doing it to scan a keyboard, or for the 'stone
knives & bearskins' experience. Both are perfectly valid in a hobby
context (witness the all-transistor clock projects that are floating
around).
Eric
More information about the Synth-diy
mailing list