Drumstick is a set of MIDI libraries using C++/Qt idioms and style. Includes a C++ wrapper around the ALSA library sequencer interface: ALSA sequencer provides software support for MIDI technology on Linux. A complementary library provides classes for processing SMF (Standard MIDI files:.MID/.KAR), RIFF RMID (*.rmi) and Cakewalk (.WRK) file formats. A multiplatform realtime MIDI I/O library and a GUI Widgets libraries are also provided for Linux, Windows, and Mac OSX.
Currently, there are four libraries designed to work together if/when needed:
- Drumstick::ALSAis a Linux only C++/Qt wrapper around the ALSA Sequencer API. ALSA sequencer provides software support for MIDI technology on Linux.
- Drumstick::Fileprovides easy multiplatform file I/O for Standard MIDI Files (.mid), RIFF RMID (.rmi) and Cakewalk (.wrk) file formats.
- Drumstick::RTis a realtime MIDI I/O library with pluggable backends. It uses Drumstick::ALSA on Linux, and other native frameworks on macOS and Windows.
- Drumstick::Widgetscontains MIDI widgets, including a Virtual Piano used by VMPK among other programs.
Drumstick::ALSAwas the first library developed under the Drumstick umbrella, and is available only on Linux, because ALSA Sequencer is an exclusive Linux technology. For realtime I/O applications you can use theDrumstick::RTlibrary which is multiplatform, and only depends onDrumstick::ALSAin Linux for its ALSA Sequencer backend. Other multiplatform backends are: Network/ipMIDIandFluidsynth.TheSonivoxbackend needs PulseAudio, which is available on most Unix systems.
There are ten examples in the source tree, under the utils/ directory:
- drumgrid: GUI program. Simple drum patterns. Depends on Drumstick::ALSA.
- dumpmid: CLI program. Prints received MIDI events. Depends on Drumstick::ALSA. See alsokmidimon
- dumprmi: CLI program. Prints and converts RIFF MIDI files. Depends on Drumstick::File.
- dumpsmf: CLI program. Prints standard MIDI files. Depends on Drumstick::File.
- dumpwrk: CLI program. Prints Cakewalk/Sonar MIDI files. Depends on Drumstick::File. See alsowrk2mid
- guiplayer: GUI program. Plays SMF and Cakewalk files. Depends on Drumstick::ALSA and Drumstick::File. See alsodmidiplayer
- metronome: CLI program. Simple command line MIDI metronome. Depends on Drumstick::ALSA. See alsokmetronome
- playsmf: CLI program. SMF player. Depends on Drumstick::ALSA and Drumstick::File.
- sysinfo: CLI program. Prints information about the ALSA sequencer subsystem. Depends on Drumstick::ALSA.
- vpiano: GUI program. A simple Virtual Piano Keyboard GUI application. Depends on Drumstick::RT. See alsoVMPK.
And you can also see independent applications using this library:
- dmidiplayer:Multiplatform MIDI file player with many features.
- VMPK:Multiplatform Virtual MIDI Piano Keyboard.
- kmetronome:MIDI metronome for Linux.
- kmidimon:MIDI monitor for Linux.
- wrk2mid:Command line utility to convert WRK files to SMF.
Here is a diagram about the relationship between the libraries and applications:
Here is another view in table format of the relationships:
Drumstick::ALSA | Drumstick::File | Drumstick::RT | Drumstick::Widgets | |
---|---|---|---|---|
Utilities: | ||||
drumgrid | ✅ | ❌ | ❌ | ❌ |
dumpmid | ✅ | ❌ | ❌ | ❌ |
dumprmi | ❌ | ✅ | ❌ | ❌ |
dumpsmf | ❌ | ✅ | ❌ | ❌ |
dumpwrk | ❌ | ✅ | ❌ | ❌ |
guiplayer | ✅ | ✅ | ❌ | ❌ |
metronome | ✅ | ❌ | ❌ | ❌ |
playsmf | ✅ | ✅ | ❌ | ❌ |
sysinfo | ✅ | ❌ | ❌ | ❌ |
vpiano | ❌ | ❌ | ✅ | ✅ |
Applications: | ||||
dmidiplayer | ❌ | ✅ | ✅ | ✅ |
VMPK | ❌ | ❌ | ✅ | ✅ |
kmetronome | ✅ | ❌ | ❌ | ❌ |
kmidimon | ✅ | ✅ | ❌ | ❌ |
wrk2mid | ❌ | ✅ | ❌ | ❌ |
The main web site of this project isdrumstick.sourceforge.io
See also: