I haven’t had a lot of luck finding a suitable donor keyboard in the thrift shops lately so that may have to wait, but I have devised a suitable alternative plan which I will definitely share with you when it’s done.
The CMOS kbd encoders 74C922 (16 keys) and 74C923 (20 keys) are, in my mumbling opinion, the best choices. Make a simple R-2R DAC to get a CV. The chips has a strobe output that can be used as gate/trig.
I have seen keyboard designs based on any of these ICs but cannot find any link right now, but it shouldn’t be hard to put something together.
Another solution IF the keys have a common rail and cannot be used by scanning is to use a priority encoder. I have somewhere started building a simple keyboard using TTL chips (74147). These, like the CMOS kbd encoders provide binary outputs and strobe.
Thanks for the input. I have a few 74C922 chips due from AliExpress in a couple weeks and then hopefully I’ll be able to slap something together over a weekend.
I have found a kids piano that I would like to change to a small CV keyboard using this schematic. I have figured out the matrix structure of the piano on the PCB; I can scratch away lines of the PCB to interrupt the matrix structure on one end, and solder wires to them. The challenge seems to be that the push buttons that are activated by the keys, seem to make connections using small magnets, which result in some resistance that differs between the keys. Sometimes the resistance is way larger than the 100R in the schematic. Therefore, would it be possible to change the resistance values in the schematic, so that I could use trimmer potentiometers of for instance 1K to make the resistance between all the keys 1K?
Thanks for your inputs!
Stefan / Synthesis
You should be able to modify the resistances in the rest of your circuit to account for the resistance being created in the switch–just determine the resistance the switch is causing and subtract that from the corresponding resistor value (see: resistors in series). This might get tricky if the resistances created by the switches change when more than one is pressed (see: resistors in parallel). If you get parallel resistances when pushing more than one key, you might just end up with a keyboard that is out of tune, or just doesn’t work, with more than one key pressed.
The difficulty is that the resistance differs between the keys, sometimes going way over the 100R for the resistors used in the schematic posted by Analog Output. Therefore, I need to place trimmer pots between the keys to make them all of the same value. As the smallest precision trim pots I have are 1K, I would like to know whether and how the other resistors in the schematic could be altered to achieve the 1v/oct.
Just one question, do you have a PC in your test area?
If so why not just use pocket midi to generate all the midi you need, also you could just bolt on a simple midi to CV converter to give you note CV, velocity, pitch bend, modulation and even aftertouch. Just a couple or even one Pico of some description and a cheap 8 channel DAC would do it.
I use pocket midi extensively for testing, linking devices together etc.
First, bear in mind that UNVERIFIED circuit is something I dashed off quickly and may need revisions anyway.
It doesn’t provide a gate, so turning notes on and off would have to be handled with some other controller or gate source.
Note that SW13 doesn’t really do anything. With all switches open, U2A pin 3 is grounded, and all SW13 does is connect pin 3 to ground again. In principle you could add another resistor to the voltage divider (between SW13 and ground) and recalibrate to get 14 different voltages instead of 13 (one for each switch pressed, plus the lowest one when no switches are pressed). Either way it’s a rather wonky controller but if it works for you, it works.
As for the resistances, R2 through R13 could be made as large as you want, provided RV1 is scaled up the same amount. If the total resistance gets in the neighborhood of 1M you might have to increase R15 too.
On the whole, a microcontroller based circuit, that detects each switch and puts out a gate and correct CV (using a DAC or PWM), would probably give you a more satisfactory controller. But if you want simple and wonky, you can try adapting this.