An open source drum machine.

What does it do? (currently - What WILL it do)

It takes input from either a midi source, or audio input, and turns these into internal trigger signals, used to activate one or more samples on one or more output channels.
Output can be jack channels, or wav files.
All inputs are controlled using velocity.
The entire system is preprogrammed using an xml file, and a lot of wav files. No magic file formats or obscure predefined file names.
An easy to use editor is supplied running on Qt4, which can also be used as a control interface for the drum kit.

Try it out

Fetch MIDI files here: http://rock.mididb.com/metallica/
Use jack-smf-utils to play back the midi files onto the jack transport. Get it here: http://pin.if.uz.zgora.pl/~trasz/jack-smf-utils/

Beat detection


Midi reader library


  • Make autotools project.
  • Make event interface.
  • Make midi-node → sample mapping.
  • Make drumkit xml file format spec.
  • Make xml reader/parser.
  • Make audio beat detection for audio inputs (triggerinng).
  • Cut off audio at some threshold on read, to save memory.
  • Make Qt4 gui
  • Make alternative audio backends work
    • ALSA (output)
    • ALSA Midi (input)
    • Jack (output)
    • JackMidi (input)
    • SndFile (output)
    • Midifile (input)
    • SDL (output)
    • DirectSound (output)
  • Make Win32 port.
  • Make plugin-able
    • LV2
    • VST
    • DSSI
    • LADSPA
    • DXI
    • RTAS
    • AU
  • 'Port' to git
  • Make in-RAM storage based on mp3.
  • Make in-RAM storage based on FLAC.
  • Make in-RAM storage based wav with separate attack and 'tail' sections, reusing the tail for multiple attacks.
  • Test creation of multiple samples using a single sample and short filters.
  • Make quantisation based on midi tempo input.
  • Make 'humaniser' both in time and veloctiy.
  • Make groove enhancer (velocity changer based on tempo)


  • Make wav optimizer (cut off silence, based on energy, and fade out).
  • Make sample sorter (based on energy in initial wav data).
dev/old_features_roadmap.txt · Last modified: 2013/01/31 18:51 by deva
Trace: old_features_roadmap
GNU Free Documentation License 1.3
Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0