Menu

Tree [618bfd] master devel /
 History

HTTPS access


File Date Author Commit
 .github 2024-08-04 Pedro López-Cabanillas Pedro López-Cabanillas [618bfd] Update cmake.yml
 cmake_admin 2024-03-06 Pedro López-Cabanillas Pedro López-Cabanillas [087d65] copyright years update
 doc 2024-03-06 Pedro López-Cabanillas Pedro López-Cabanillas [087d65] copyright years update
 icons 2024-03-06 Pedro López-Cabanillas Pedro López-Cabanillas [087d65] copyright years update
 library 2024-07-07 Pedro López-Cabanillas Pedro López-Cabanillas [6bab49] fix for ticket #24
 tests 2024-04-05 Pedro López-Cabanillas Pedro López-Cabanillas [db6b03] updates for windows CI
 utils 2024-03-06 Pedro López-Cabanillas Pedro López-Cabanillas [087d65] copyright years update
 .gitignore 2023-06-25 Pedro López-Cabanillas Pedro López-Cabanillas [385c09] release preparations
 .project 2010-01-07 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [c674bf] Bulk rename aseqmm -> drumstick
 AUTHORS 2023-08-24 hycinth22 hycinth22 [24d6f2] Chinese translation
 CMakeLists.txt 2024-04-14 Pedro López-Cabanillas Pedro López-Cabanillas [155bd2] RT preliminary support for PipeWire.
 COPYING 2020-10-08 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [1d19f2] license upgrade to GPLv3+
 ChangeLog 2024-07-07 Pedro López-Cabanillas Pedro López-Cabanillas [6bab49] fix for ticket #24
 Doxyfile.in 2023-06-25 Pedro López-Cabanillas Pedro López-Cabanillas [385c09] release preparations
 NEWS 2020-09-19 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [bf74fe] More translations and phrasebooks
 TODO 2010-02-17 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [50a8d5] Split the library into drumstick-file and drums...
 configure 2020-12-29 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [17c394] release 2.0.0
 configure_dbg 2020-12-29 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [17c394] release 2.0.0
 drumstick-alsa.pc.in 2022-10-01 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [7aa29b] release preparations
 drumstick-file.pc.in 2022-10-01 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [7aa29b] release preparations
 drumstick-rt.pc.in 2022-10-01 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [7aa29b] release preparations
 drumstick-widgets.pc.in 2022-10-01 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [7aa29b] release preparations
 drumstick.pro 2022-03-31 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [b5aa96] * Widgets: pianokeybd has 2 new functions: setU...
 drumstick.spec.in 2024-03-06 Pedro López-Cabanillas Pedro López-Cabanillas [087d65] copyright years update
 drumstick.xml 2022-12-18 Pedro Lopez-Cabanillas Pedro Lopez-Cabanillas [8093f2] Improved RMID file support:
 global.pri 2023-08-25 Pedro López-Cabanillas Pedro López-Cabanillas [80cd30] release preparations
 install.md 2024-04-14 Pedro López-Cabanillas Pedro López-Cabanillas [155bd2] RT preliminary support for PipeWire.
 readme.md 2024-04-06 Pedro López-Cabanillas Pedro López-Cabanillas [b24fbe] Update readme.md
 versioninfo.rc.in 2023-06-18 Pedro López-Cabanillas Pedro López-Cabanillas [29fcab] another documentation update

Read Me

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: