Skip to content

pedrolcl/drumstick

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

764 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Drumstick Libraries

Linux Build and Test

Windows Build and Test

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::ALSA is a Linux only C++/Qt wrapper around the ALSA Sequencer API. ALSA sequencer provides software support for MIDI technology on Linux.
  • Drumstick::File provides easy multiplatform file I/O for Standard MIDI Files (.mid), RIFF RMID (.rmi) and Cakewalk (.wrk) file formats.
  • Drumstick::RT is a realtime MIDI I/O library with pluggable backends. It uses Drumstick::ALSA on Linux, and other native frameworks on macOS and Windows.
  • Drumstick::Widgets contains MIDI widgets, including a Virtual Piano used by VMPK among other programs.

Drumstick::ALSA was 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 the Drumstick::RT library which is multiplatform, and only depends on Drumstick::ALSA in Linux for its ALSA Sequencer backend. Other multiplatform backends are: Network/ipMIDI and Fluidsynth. The Sonivox backend 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 also kmidimon
  • 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 also wrk2mid
  • guiplayer: GUI program. Plays SMF and Cakewalk files. Depends on Drumstick::ALSA and Drumstick::File. See also dmidiplayer
  • metronome: CLI program. Simple command line MIDI metronome. Depends on Drumstick::ALSA. See also kmetronome
  • 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 also VMPK.

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:

Drumstick ecosystem

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 is drumstick.sourceforge.io

See also:

Contributors 5