This application is a multiplatform MIDI file player for Linux, Windows and macOS. It reads .MID (Standard MIDI Files), .KAR (Karaoke), and .WRK (Cakewalk) file formats, and outputs MIDI events to hardware MIDI ports and also software synths.
Drumstick is a set of GPLv3 licensed C++/Qt libraries for MIDI applications. The project includes several tools as examples, and among them is the drumstick-guiplayer utility that leverages the Drumstick::ALSA library, so it is available only for Linux (because the ALSA sequencer is a Linux only technology). Some people have requested a program with the same functionalities on Windows and macOS, and here it is. But this program is much more than that, and it also works on Linux...
Some key features:
Any MIDI Player outputs MIDI events only, but no sound. To produce sound, a MIDI Synthesizer is needed to render the events into digital audio that can be reproduced by the computer's (or external) audio speakers. The events can also be rendered by an external musical MIDI instrument connected to the computer, for instance a MIDI organ, piano, or synthesizer with an USB interface. If that option is not available, another usual alternative is a software synthesizer (a program).
There are software synthesizers included in the computer's operating systems, for instance Microsoft Windows includes the "Microsoft GS Wavetable Synth", and Apple macOS includes the "Apple DLS Synthesizer". To use them, you need to open the "MIDI Setup" dialog and then:
The following standard actions are available in the File
menu and also the tool bar, with the conventional functionalities on any media player:
Play
Pause
(and continue)Stop
Fast Forward
(by 1 bar)Rewind
(by 1 bar)By default, Play
is activated automatically upon loading a MIDI file except when this feature is disabled in the configuration dialog.
The status bar
, optionally located at the bottom of the main window, shows the current playback status as "Playing", "Stopped", "Paused", etc.
The Pitch control
is located in the main window. It is a spin box initialized to zero, with a valid range from -12 to +12 semitones. The limits are equivalent to one octave up or down the original tone. This should be enough for singers or instrumentalists needing to adjust the tonality for their comfort.
All MIDI channels are chromatically transposed, except the percussion channel (GM channel 10 by default).
The Volume control
is located in the main window. It is a slider, initialized to 100%, with a valid range from 0% to 200%. The upper limit effect may be lower because the MIDI CC 7 has a valid range from 0 to 127. There is also a button to Reset Volume
.
The Tempo control
is located in the main window. It is a slider initialized to 100% with a valid range from 50% to 200%. There is a button to Reset Tempo
and also a tempo display, showing the effective tempo in beats per minute with an initial value of 120 bpm. This is the default tempo for a MIDI file if it does not contain a tempo change. This value is updated when changing the tempo control, and also while a MIDI file containing tempo changes is playing.
Jump
action (located in the File
menu and the default tool bar), asks for a bar number, between 1 and the last bar of the loaded song, to change the current position of the song to the given bar.
Loop
action (located in the File
menu and the default tool bar), asks for two bar numbers. The song will be played between the two given bars when it is activated. You can switch off the loop any moment selecting the action again.
The Positioning control
is located in the main window. It is a slider that moves while the current played position changes, and can be moved by hand to change the position to any arbitrary point within the song.
The song settings are stored at the $HOME/.dmidiplayer subdirectory with the same name as the songs and the ".cfg" suffix. When a song file is loaded, their song settings can be automatically loaded, and also saved when the song stopped. See the corresponding setting in the Preferences/General dialog.
The song settings can also be manually loaded and saved from the corresponding "File"->"Song Settings" menu items.
Each song settings .cfg file is a text file where the following data is stored:
For each MIDI channel used by the song, the following data coming from the Channels view is stored:
The following options are enable in the View
menu:
Three views are independent windows that you may open and close at your convenience: Channels, Lyrics and Piano Player.
On the other hand, you also can hide or show three more views that are embedded on the main window: Tool bar, Status bar, and Rhythm.
This window shows up to 16 rows, one for each MIDI channel used by the current MIDI file. The columns are:
This window shows up to 16 rows, one for each MIDI channel used by the current MIDI file. Each row contains:
There is a window menu, with the following options:
This window shows the text metadata from the loaded MIDI file, filtering the data with a series of controls located on the window tool bar:
Lyric Events
type is the most probable choiceThere is a window menu, with the following options:
Playlists are collections of file names, that can be used to play a series of MIDI pieces, like a musical "repertoire".
The File
->Play List...
action manages the creation, modification, ordering, opening, and saving Play list files. This window shows the current playlist file name in the window title.
The File
->Next
and File
->Prev
actions are used to navigate the playlist manually forward and backward. There are configuration options to start playback automatically after loading MIDI files, and advance automatically to the next playlist item when finished playing the current item. Both configuration options are enabled by default.
The initial default playlist contains a collection of example MIDI files. If you prefer to start with an empty list, you should use the Clear
button and then saving the empty playlist with a meaningful name. This will be the new initial playlist in the future.
The last opened or saved playlist file shall be remembered the next time the program is started, but playlists are not saved automatically.
Playlists are simple text files, with a file name on each text line. The file names can be relative to the location of the playlist file itself (so they do not have an absolute path prepended) or each file can have an absolute path on its own.
You may have several playlists that can be created easily outside of the program, for instance in the Linux command line this command creates a playlist file named "my_playlist.lst" with all the MIDI files located at the working directory:
$ ls -1 *.mid > my_playlist.lst
You can open individual files...
File
->Open
standard actionFile
->Open Recent Files
menu, which remembers up to ten files recently opened.There is a Restore Defaults
button to initialize all options in this dialog to their default values.
There are three tabs, grouping the configuration settings
The tool bar is located on the main window, which has typically very small available space, and can be moved to the top or the bottom of the window, and also outside of it. The actions available as tool buttons can be configured in this dialog window. All actions are also main menu items.
To select one action from the Available list, first select it with the mouse and then press the "add" button. The action is removed from the Available list and placed at the end of the selected list.
To remove one button from the tool bar, select it with the mouse in the Selected list and then press the "remove" button.
To reorganize the order of buttons in the tool bar, use the "up" and "down" buttons after selecting an item in the Selected list.
Style of the Tool Buttons: contains the following options that apply to all the buttons in the tool bar