We’re replacing the entire fingerboard for our MIDI bass, and replacing it with a number of PCB sections. We’re basically creating a resistor ladder on the underside of the fingerboard, for each string on the guitar. The idea is that the resistor ladder creates a voltage divider and we take an analogue input from the resistor network into the PIC microcontroller

If all the strings are connected to ground, and all the frets on the fingerboard are connected at different points along the resistor ladder, we should be able to tell which fret the string is being pressed against, and therefore which note to play.

In the example above, if the (grounded) string was held on the second fret, the total resistance between the nut end of the board and the input pin would be quite high – so the voltage divider creates a high voltage on the input pin.

But if the player holds the (grounded) string on, say, the 18th fret, the 5v going through the resistor network goes through fewer resistors between the input pin and ground, causing the voltage on the input pin to drop. With clever use of resistor values, we should be able to create a look-up table in firmware such that we know instantly which string is being held against which fret. No more latency issues trying to sample and decode the frequencies that the strings are vibrating at!