MIDI Controller. Lets a keyboard player 'strum' a stringless guitar.

Similar projects worth following
So this device has MIDI in and MIDI out. It is based on Arduino ATMEGA328. It receives MIDI IN messages like note on and note off from a MIDI keyboard controller and loads the data to 6 touch sensors. When the player 'strums' the StrumPad, it senses which 'strings' have been struck and how much force was exerted on the Strumpad by measuring the piezo voltage that is underneath the Strumpad. It then sends MIDI OUT messages like note on and note off.

All the files are in the Dropbox folder linked here.

IMPORTANT: use the included MIDI and Capacitivesensor Libraries when compiling the Arduino sketch because I had to modify the MIDI Library in order for StrumPad to work properly.

Also piezo placement and circuit is important. You should experiment with a piezo circuit separately in order to fin the best results. Experiment also with the resistor values for the Capacitive touch sensors; from 470K to 10M and see what gives the best results.

If you want to etch the board, there a 3 pdf files that show the traces. One colour image that shows all top and bottom traces for reference. One colour image that shows the bottom traces that you'll jump or etch if you're good with 2 sided PCB technique. And an black and white image of the board that is inverted cause it is the TOP layer and will be inverted to the right position once applied to the copper board.

I used a 2 sided copper board. The area on the bottom that will has the piezo was just marked with a black marker so there was a slightly larger circle of copper left in order to solder the piezo right to it.


Aug 24 2018 Arduino Sketch for StrumPad listening on all midi channels and sending each 'string' note of and note on midi messages on channels 1 through 6.

ino - 39.80 kB - 08/26/2018 at 02:10



StrumPad in a Hammond enclosure 1591GSBK

JPEG Image - 6.11 MB - 08/26/2018 at 02:04



Aug 24 2018 Arduino Sketch for StrumPad listening on midi channel 1 and sending only on midi channel 1.

ino - 40.71 kB - 08/26/2018 at 02:02


Zip Archive - 201.53 kB - 08/12/2018 at 18:07



Need modified libraries located in the zipped folder.

ino - 28.56 kB - 08/12/2018 at 18:01


View all 14 files

  • 1 × Arduino or Arduino clone with ATMEGA328P Any basic Arduino like Arduino Uno, Boarduino...
  • 1 × Piezo 1 inch soldered under the board
  • 1 × 500mA resettable fuse or PTC optional (or use a low value resistor like 10ohm)
  • 2 × DIN5 female midi connectors for through hole (PTH)
  • 1 × 6N138S Opto and Fiber Optic Semiconductors and ICs / Optocouplers and Optoisolators

View all 11 components

  • New Arduino Sketches

    miro242408/26/2018 at 02:01 0 comments


    This version is programmed to receive and send midi messages only on channel 1.


    This version is programmed to listen to all midi channels and send midi messages for each string on different channels from midi channel 1 through 6.

    - Improved the Strumpad piezo sensing

    - Added Mute all string when all strings touched

    - Added Reset all and note off to all notes on channel 1-6 

    - Added Toggle Right Left Hand playing when string 6 touched for few secs.

    (Once Left Hand is set, the String 1 becomes String 6 and vice versa)

    - Added Toggle Octave doubling when string 1 touched for few secs.

    StrumPad listens for midi notes in a range from note 21 to 108 (A0 to C8) 


    - Added Handle for ProgramChange; Program Change midi messages will pass through StrumPad

    - Added Handle for AfterTouchChannel; Aftertouch Channel messages will pass through StrumPad

    - Added Handle for PitchBend; PitchBend messages will pass through StrumPad

    - Handle for Control Change messages exist already; all CC messages will pass through StrumPad

  • New StrumPad video Aug 12 2018

    miro242408/12/2018 at 20:47 0 comments

    The setup is just a MIDI keyboard controller sending midi data to the StrumPad on channel 1 and the StrumPad treating the data and transmitting it to my GarageBand software on my mac through an MIDI to USB adapter. The StrumPad is sending each midi note/velocity values for each 'string' on midi channels 1-6 but it can be reprogrammed to send them on the same channel.

  • August 2018 update #2

    miro242408/12/2018 at 17:47 0 comments

    So I have put it all together and wrote the Arduino code for it which I will post. There are few issues with it that need to be worked out and I'm cogitating hard how to best resolve them.

    The issues are;

    - The piezo sensor is not as good at sensing the fingers striking the pad as the first choice that was the load sensor ( this is a whole other subject ). The piezo sensor needs what I think a better sensing circuit or better code. 

    - The top PCB needs a couchy double tape so it is not so hard on the fingers when striking. I'm still looking for the tape.

    The new Arduino code is working and I'm satisfied with it. For sure it would be best if I gave the player/user a bit of options but this would require additional parts like lcd display and buttons. But for now the options need to be changed in the code itself. I have programmed it to output each String on a different MIDI channel but changing the code will make all Strings output on the same channel 1. Also it is programmed to automatically double each note so we have more Strings playing, so when I hold 3 notes on my MIDI keyboard controller, the Strumpad automatically doubles the octaves and 6 strings will sound when struck. The MIDI note range is also programmed to listen for a specific range of MIDI notes from the MIDI controller that is in a guitars range from note 52 to 88 (E3 to E6). This can be changed in the code only for the time being. 

  • August 2018 Update with new PCBs.

    miro242408/12/2018 at 17:23 0 comments

    I have ordered and received new PCB boards for the Strumpad. The new PCB board was meant to go with a new plastic case that I have ordered online. 

    The top PCB;

    The bottom PCB;

    Inside the enclosure;

    And the assembled Strumpad;

View all 4 project logs

Enjoy this project?



KONTA205 wrote 12/08/2019 at 00:06 point



  Are you sure? yes | no

Juji360 wrote 04/11/2019 at 00:51 point

Hey miro2424 Amazing project! I would love to reproduce your work. If, I can build it into a working pad I will surely reference your amazing work. One question though, what CAP and RES values did you use exactly, I see a few 220 (8), 100nF (3), 22pF (2) and one 100 mF? is this correct?

  Are you sure? yes | no

Deleckie wrote 12/06/2018 at 03:41 point

This is one of the most amazing midi controllers I’ve ever seen! I think it’s incredible that you’ve made it an open source project. I wish I knew how to build this sort of thing. Is there any chance you would build and sell one? Regaurdless, I am blown away by what you have done. 

  Are you sure? yes | no

minzi8282 wrote 08/17/2018 at 04:30 point

how can I buy this controller?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates