Build your own MIDI circuits
Frequently Asked Questions.
MIDI & Music
MIDI and Music Information
MIDI 16-Way Drum Controller




Have you got rhythm? Do you want to transfer that  rhythm to your computer or hardware sequencer?  Probably the easiest way of achieving this is to  use MIDI drum pads that can be hit with  drumsticks, and the data can be stored in real time with any errors corrected afterwards.


I have designed a 16-way MIDI drum pad system with the velocity byte fixed at maximum for 10 input drum switches and a 6-way velocity sensitive circuit, providing a full (0-127) velocity range using piezo sensors.


It provides MIDI data which has to be sent to a drum/synthesiser or sound module. The velocity byte is dependent on how hard the piezo transducer is hit.  The drum choices, and the MIDI transmit channel are assigned in the  program firmware. However, normally the drum sounds are assigned to MIDI channel 10.



*Click to Enlarge*






PRICE:  €45.00




The 16-Way drum inputs to MIDI Output unit utilizes:

  • An Arduino board including a suitable pre-programmed Atmega microcontroller,
  • A 2.1mm power socket, and associated LED, 
  • 6 inputs are velocity sensitive, providing a full (0-127) velocity range,
  • A MIDI 5-pin DIN output socket,
  • Each input (1-16) is pre-selectable on programming to a particular MIDI drum selection ,
  • The circuit consists of the MIDI drum interface.



The 16-Way drum inputs to MIDI Output unit requires:

  • A 9v battery or equivalent DC power source,
  • Suitable external 6 piezo-electric transducers,
  • 12 1M Ohm resistors,
  • 6 IN4148 diodes,
  • 6 100 nF ceramic capacitors,
  • Suitable 10 push-to-make switches.


Circuit Schematic:

A circuit schematic of the MIDI drum interface shows the Input/Output connections.



Drum Selections:

The Default pre-programmed drum selections are:
byte drum[10]={ 47,48,49,50,51,53,54,55,56,57}; These correspond to digital pins D2 to D12 inclusive. So the fixed velocity switch drum sounds are: 


47 Low Mid-Tom; 

48 High Mid-Tom; 

49 Crash Cymbal 1; 

50 High Tom
51 Ride Cymbal 1; 

53 Ride Bell; 

54 Tambourine
55 Splash Cymbal; 

56 Cowbell; 

57 Crash Cymbal 2;
byte piezoDrum[6]={
35,38,41,42,43,45}; These correspond to Analog pins A0 to A5. So the variable velocity piezo transducer drum sounds are:

35 Bass Kick; 

38 Acoustic Snare;
41 Low Floor Tom; 

42 Closed Hi-Hat;
43 High Floor Tom; 

45 Low Tom;


NOTE: Any drum sound can be pre-programmed to any input on request.



MIDI Wiring:

The MIDI IN and OUT connections use 5-Pin 180 degree DIN sockets. Note that the MIDI Out socket is polarised and the correct pins should be used.



Operation of Piezoelectric sensors:


When a Piezoelectric sensor is ‘hit’ it produces a waveform similar to those shown below:



Looking at the time duration of the waveforms we can see that the peak voltage usually occurs in the first couple of milliseconds. To detect the peak value of the waveform we rectify and filter the piezoelectric transducer's waveform to produce the waveforms shown below. The program software then detects the peak value. After any input 'hit' is detected the software shorts out this charge storage capacitor to prevent multiple triggers and to allow detection of fast drumming.



NOTE: Any unused analog inputs should be connected to ground (GND) otherwise they will pick up noise and produce spurious outputs.



Power Supply:

External power can come either from an AC-to-DC adapter or battery. The adapter can be connected by plugging a 2.1mm center-positive plug into the board's power jack. Leads from a battery can be inserted in the Gnd and Vin pin headers of the POWER connector. A low dropout regulator provides improved energy efficiency.


The board can operate on an external supply of 7 to 20 volts. If supplied with less than 7V, however, the 5V pin may supply less than five volts and the board may be unstable. If using more than 12V, the voltage regulator may overheat and damage the board. The recommended range is 7 to 12 volts.


Note that the power input selection is automatically selected.