Skip to content

Open Source E-Drum Trigger Module Software

License

Notifications You must be signed in to change notification settings

01luna/edrumulus

 
 

Repository files navigation

Edrumulus

PlatformIO CI

The aim of the Edrumulus project is to create a high quality Open Source e-drum trigger module software which runs on a micro processor. It shall fulfill the following specifications:

  • The trigger performance shall be similar to the Roland TD-27.
  • Overall latency should be as small as possible. The goal is to achieve a latency < 10 ms.
  • The required analog front end design shall be as simple as possible using the fewest number of parts possible.

News

Find all important updates of the Edrumulus project in the change log file and in the discussion forums.

Features

  • Positional sensing
  • Retrigger cancellation
  • Rim shot/cymbol choke detection
  • Cross talk cancellation
  • Supported micro processor developer boards:
    • ESP32 (dual core) DEVKIT V1 or similar
    • Teensy 4.0

Prototype hardware

We want to capture the entire signal without non-linear analog preprocessing. Since micro controllers usually only convert analog signals in the range of 0 to 3.3 V, we have to move the point of operation in the middle of the voltage range.

A circuit diagram of a simplified prototype which only supports a mono piezo pad and a hi-hat controller input is given in the following picture:

The full circuit diagram of Prototype2 is given in this PDF file.

DISCLAIMER All these circuit diagrams are used for my first prototypes and work fine for me. Use them at your own risk.

Algorithm

The algorithms are developed using a regular audio card. The drum pad output signal is captured and the signal processing and algorithm development is done in Octave. The development runs in three steps:

  1. Create the algorithms using a captured test signal and analyze it as a whole. This is the easiest and fastest way to create and improve the algorithms (this is the "playground"). The corresponding source file is algorithm/drumtrigger.m.

  2. If the algorithm works ok, it is ported to a sample-based processing. The goal is to make the Octave code as similar to the C++ micro controller implementation as possible. The corresponding source file is algorithm/edrumulus.m.

  3. Port the sample-based processing code to C++ and test it in real-time on the hardware. To make sure the port was successful, we send test data to the micro controller, query the processed signal and compare it in Octave to the reference code.

The algorithms are described in this document.

Links

About

Open Source E-Drum Trigger Module Software

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 55.5%
  • MATLAB 39.5%
  • Shell 4.4%
  • C 0.6%