Electronic drum modules process the data provided by the drum triggers in order to generate sounds in real time. It's quite challenging to make a good drum module, as it needs to process all the triggers' signals, synthesize the sounds, and play them within a few milliseconds. To achieve such results, the software has to be both flexible and fast. When I started to write the source code in C++, I opted for the Raspberry Pi B in order to run the software. That led to RaspiDrums.
At first, I just wanted to make sure that the Raspberry Pi B was powerful enough to be a decent drum module. That's why the hardware had to be as simple as possible (MCP3204, and accelerometers evaluation boards as drum triggers), and the software headless in order to run in real-time. RaspiDrums showed good results, and demonstrated a latency lower than 10ms.
A few days before that result, the Raspberry Pi's official touchscreen was released, and the very cool thing about it is that it doesn't use the GPIO at all, so, it doesn't interfere with the ADC chip (which uses the SPI bus). Thus, I started to work on a GUI for RaspiDrums, using Gtkmm (a C++ wrapper for Gtk). Although I didn't publish my work, the results were quite good, even with the slow CPU of the Raspberry Pi B+. It was clear in my mind that RaspiDrums was going to become eXaDrums, which is just a fork of the former. So, a few days before the official release of the Raspberry Pi 2, I created the eXaDrums project. Knowing that the Raspberry Pi 2 was way more powerful that the B+ gave me hope for the project, and I decided to get one, and test eXaDrums with Ubuntu MATE.
Photograph of the system: Raspberry Pi 3B + 7" touchscreen, USB soundcard, and ADXL377 accelerometer. The GUI is shown on the screen.
How to play drums with eXaDrums!
There is a script to install eXaDrums automatically on your Linux OS, all you need is to follow the instructions listed here.
Once everything is installed and configured, you can have fun and play drums, or you can train and improve your skills by using the built-in metronome.