:: Updates ::
- 30/05/15 - xdrum
- 01/06/14 - WAV loopinfo
- 11/11/11 - 11-11-11
- 28/06/10 - Satsymph
- 23/09/08 - Tape machine mod
- 18/03/08 - Kaossilator
- 21/08/06 - 100 ambient tones
- 29/06/03 - Site launch


:: Home
:: Curriculum Vitae
:: Contact
:: Posterous blog archive


:: Film and video
:: Download/Buy my music
:: Satsymph collaboration
:: Free music blog
:: More of my free music


:: Nozenphoion xdrum synth
:: Sound and video on paper
:: WAV instrument loopinfo
:: Synthbox rack computer
:: Mauritz Escher chord progressions
:: Poor-man's kaossilator
:: Maths and music summer school
:: Toshiba tape machine mod
:: Chipwave
:: Chiptune synthesis
:: ZX Beeper
:: DIY midi footswitch
:: JACK, PD, Ableton Live tutorial

Nozenphoion xdrum

DIY MIDI drum synthesiser sound module

In May 2015 I made a drum / electronic percussion sound module capable of producing sounds similar to the Vermona DRM, MAM ADX, etc.

I wrote custom DSP synthesis software in C++ (accellerated by the excellent stk library) and a little bit of hardware work by modifying the housing of a MIDI controller.

The result is the xdrum nozenphoion drum synthesiser, a hybrid machine combining a Raspberry Pi to generate audio, and a Novation Remote Zero (SL Mk 1, with two LCD screens) for a control panel.

  • Five drum sounds are available with a simple but flexible synthesis structure
  • Each control on the control panel can be very quickly (re)associated with a (new) sound parameter for a specific drum
  • Sound settings and parameter associations are saved automatically in one of ten "soundsets"
  • On the fly randomisation and copy-pasting/swapping of drum sounds is possible

More information in the user manual

What does it look/sound like?

Audio clip (soundtrack of the above video) here

Synthesis structure

DSP block diagram

Each drum sound has a sine oscillator and a noise generator with low pass resonant filter. Each have dedicated amplitude envelopes. There is an additional "bend" envelope which can affect the noise filter cutoff and oscillator frequency.

The noise generator is a periodic type which means that the noise can have a perceivable pitch. The noise resonant filter is self-oscillating and the sine oscillator has a noisy "jitter LFO".

In practice this means the sound character of the "sine side" and "noise side" of the drum synthesiser overlap. The "sine side" of the drum synthesiser can be pitched or unstable and noisy; and the "noise side" can generate fizzy noisy buzz or tuned whistling.

The bend envelope is bipolar which means a rising or falling sweep in pitch is possible. All envelopes are non-retriggering accumilating, which means a long-attack time with repeated triggers will cause the overall envelope output to gradually rise with each repeated trigger. This can be useful for cymbal swells.

Additional waveshaping features include

  • a clipping stage which can be useful to add harmonics to the sine stage when the level is overdriven
  • noise waveshaping via recursive rectification and normalisation; this can be useful for "clap" sounds


Here's an overview of the software system:

  • MIDI note events from an external sequencer are handled by the DrumKit
  • MIDI control events adjust drum synthesis parameters, and update the LCD display via MIDI System Exclusive commands
  • A MIDI event filter blocks messages on MIDI channels/ports other than the ones we need to listen on
  • Remapping of controls to synthesis parameters is handled via ControlPanelLogic
  • The ControlPanelLogic also handles saving of panel mapping and drum synthesis parameter values to SD card

System overview diagram (clicky for big)

A Raspberry Pi SD card image based on a minmal Arch Linux installation is available on request but it shouldn't be too difficult to compile and run the software on your own raspberry pi.

Sourcecode (substantially supported by the STK library) is available.

A user manual is available.

(c)2015 zenpho@zenpho.co.uk - Phill Phelps