DrumGizmo
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
Beat detection
LASH
Midi reader library
TODO

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).