This circuit is a MIDI interface between drum pads and computer or hardware sequencer. Using this circuit you can hit pads with drumsticks and store the MIDI data in real time.
While this unit is much cheaper than commercial devices it does have some limitations:
It provides MIDI data which has to be sent to a drum/synthesiser or sound module.
The velocity byte is fixed at maximum volume and the drum selection and MIDI transmit channel are fixed at programming but can be edited afterwards in the sequencer software.
The circuit is based around the PIC 16C84 microcontroller which scans the inputs on RB0 to RB7 and when a high is detected the software transmits the equivalent note-on ( and then the MIDI note-off after a short delay) for the required drum sound on the MIDI output on RA0.
The inputs are provided by the piezo-electric transducers which can provide up to 40Vp-p depending on how hard they are hit. This voltage is reduced by the potential dividers R1 to R8 and R9 to R16 respectively. The values chosen reduce the input level by approximately 1/4 and is further reduced by internal clamping inside the microcontroller. If different transducers are used on the input then the potential dividers may need to be adjusted. Note that the inputs float high so the resistor values R9 to R16 need to be reasonably low so that when the microcontroller software scans the inputs it reads them all as low, with no transducer triggered. Also the maximum input continuous injection current into an I/O is specified as +/- 500uA, although it will sustain larger currents (>100mA) for short periods of time.
The timing is generated from the 10Mhz crystal and associated capacitors C1 and C2. The MIDI output is fed to the 180 degree 5-pin DIN socket via two 220R resistors which provide the required 10mA current loop. The power supply is a standard arrangement using a 9V-0-9V center tapped transformer which is rectified by diodes D1 and D2 smoothed by C3 and regulated to 5V by IC2.