Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jpcima/smf-dsp
Advanced MIDI file player
https://github.com/jpcima/smf-dsp
chiptune frequency-modulation general-midi midi midi-file midi-player mt-32 realtime retro scc soundfont synthesizer ym2149 ym2413 ym2612 ymf262
Last synced: 2 months ago
JSON representation
Advanced MIDI file player
- Host: GitHub
- URL: https://github.com/jpcima/smf-dsp
- Owner: jpcima
- License: bsl-1.0
- Created: 2019-05-05T20:22:55.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-07-28T13:22:29.000Z (over 2 years ago)
- Last Synced: 2023-03-04T12:00:27.077Z (almost 2 years ago)
- Topics: chiptune, frequency-modulation, general-midi, midi, midi-file, midi-player, mt-32, realtime, retro, scc, soundfont, synthesizer, ym2149, ym2413, ym2612, ymf262
- Language: C++
- Homepage:
- Size: 3.33 MB
- Stars: 35
- Watchers: 6
- Forks: 3
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# smf-dsp
Advanced MIDI file player for desktop computer
[![Build Status](https://travis-ci.com/jpcima/smf-dsp.svg?branch=master)](https://travis-ci.com/jpcima/smf-dsp)
![screenshot](docs/screen.png)
# Usage
Press F1 for help screen.
Press F12 to access advanced options, which can be edited in configuration files.The changes made in configuration files are effective after restarting.
Some synthesizers require a ROM or SoundFont to be provided, and specified in the configuration.
# Keys
The keys are recognized by physical location and not label.
The listed key names are based on the QWERTY keyboard type, it will vary for a different type of layout.
| Key | Function |
|------------|------------------------------------------------------------------------------|
| F1 | Open the help screen |
| F2 | Select a MIDI device for playback |
| F3 | Select a synthesizer device for playback |
| F4 | Configure global audio effects |
| F9 | Select a theme for the user interface |
| F12 | Open the configuration directory |
| Tab | Switch between file browser and track info |
| Esc | Quit the program |
| - | Decrement the proportional window size |
| = | Increment the proportional window size |
| Page ↑ | Go to previous track in playlist/folder |
| Page ↓ | Go to next track in playlist/folder |
| Space | Pause or unpause |
| Home | Seek to beginning of current track |
| End | Seek to end of current track |
| ←↕→ | Navigate in the file browser |
| ←→ | In track info view, seek track by ± 5 seconds |
| Shift + ←→ | In any view, seek track by ± 10 seconds |
| [ | Decrease speed by 1% |
| ] | Increase speed by 1% |
| ` | Switch between repeat modes: On/Off, and Single/Multi |
| / | Scan songs in the current folder of the file browser and play them at random |# Building
To build the software, type these commands in the source directory.
- `mkdir build`
- `cd build`
- `cmake -DCMAKE_BUILD_TYPE=Release ..`
- `cmake --build .`Install following packages on Debian/LibraZiK/Mint:
- `build-essential` `git` `pkg-config` `libsdl2-dev` `libsdl2-image-dev` `libasound2-dev` `libpulse-dev` `libjack-jackd2-dev` `libuv1-dev` `libuchardet-dev` `libglib2.0-dev` `libapr1-dev` `libaprutil1-dev`
(in case JACK 1 is preferred over JACK 2, replace `libjack-jackd2-dev` with `libjack-dev`)
Immediately after building, the program is available by starting `./smf-dsp`.
## Building synthesizers
The optional synthesizers have additional requirements, and they are built only if these are present.
- **Fluidsynth**: check out the `thirdparty/fluidlite` submodule.
- **FM-OPL3 (ADLMIDI)**: check out the `thirdparty/libADLMIDI` submodule.
- **FM-OPN2 (OPNMIDI)**: check out the `thirdparty/libOPNMIDI` submodule.
- **SCC (emidi)**: check out the `thirdparty/scc` submodule.
- **MT32EMU**: check out the `thirdparty/munt` submodule.## Copyright
The bitmap fonts use glyphs which originate from the following sources.
- Ths public domain Shinonome font by Yasuyuki Furukawa
- `xorg-fonts-cyrillic` and `xorg-fonts-misc`, for the Cyrillic subset
- `fmplayer` by Takamichi Horikawa, for the small font, the digit font, and the logo characters