OpenCubicPlayer (often abbreviated as OCP or OpenCP) is a versatile, text-based music player originally created for MS-DOS in 1994 and later ported to Linux, Unix, and Windows. It is primarily renowned for playing tracking/module music formats (like MOD, XM, S3M, and IT) and features real-time, Fast Fourier Transform (FFT) music visualizations.
Unix port of Open Cubic Player, which is a text-based player with some few graphical views. Visual output can be done through nCurses, Linux console (VCSA + FrameBuffer), X11 or SDL. This port can be compiled for various different Unix-based operating systems, including MinGW compilers.
Key Features and Formats
- Module Formats: Supports a massive array of trackers including Impulse Tracker (IT), FastTracker 2 (XM), Scream Tracker (S3M), and Amiga ProTracker (MOD).
- Alternative Formats: Capable of playing standard MIDI, MP3, CD audio, and SID (Commodore 64) tunes.
- Visualizations: Features acclaimed text-based and graphical views such as STFT analyzers, frequency spectrums, and oscilloscopes.
- Soundcard Emulation: Historically famous for supporting vintage audio hardware natively (like Gravis Ultrasound and Sound Blaster). [1, 2, 3, 4, 5]
History
Development began in the mid-1990s as a pure MS-DOS application. Because of its popularity and architectural flexibility, it was eventually open-sourced under the GNU General Public License (GPL). Active ports, such as the Linux and BSD versions, are still maintained by the open-source community today.
You can find more historical documentation and downloads directly on the Open Cubic Player Official Site. For a full technical breakdown of the software, check out the MultimediaWiki Open Cubic Player Entry. [1]

Supported Formats
Amiga-style module files and other module files (Amiga compressed files are decompressed using ancient):
| Extension | Notes |
|---|---|
*.AMS | Velvet Studio and Extreme’s Tracker |
*.DMF | X-Tracker |
*.IT | Impulse Tracker or the modern Schism Tracker |
*.MDL | DigiTrakker or the modern MilkyTracker |
*.MOD | ProTracker or the modern ProTracker Clone |
*.MTM | MultiTracker Module Editor |
*.NST | NoiseTracker |
*.OKT | Oktalyzer |
*.PTM | PolyTracker |
*.STM | Scream Tracker 2 |
*.S3M | Scream Tracker 3 |
*.ULT | Ultra Tracker |
*.WOW | Grave Composer |
*.XM | FastTracker 2 or the modern FastTracker 2 Clone |
*.669 | Composer 669 |
Supported files using code from STYMulator:
| Extension | Notes |
|---|---|
*.YM | Atari ST (Yamaha YM2149) |
Supported files using fork of libsidplayfp:
| Extension | Notes |
|---|---|
*.SID, *.RSID | C64 (SID 6581/8580) |
Supported files using code from aylet:
| Extension | Notes |
|---|---|
*.AY | ZX Spectrum/Amstrad CPC (Yamaha YM2149) |
Supported audio files (both compressed and PCM styled):
| Extension | Notes |
|---|---|
*.OGG | OGG using ogg, libvorbis and libvorbisfile |
*.FLAC | FLAC |
*.MP2 | MPEG-1 Audio Layer II using MAD: MPEG Audio Decoder |
*.MP3 | MPEG-1 Audio Layer III or MPEG-2 Audio Layer III using MAD: MPEG Audio Decoder |
*.QOA | Quite OK Audio |
*.WAV | Waveform Audio File Format, only integer PCM is implemented |
*.WV | WavPack |
Supported Audio-CD files:
| Extension | Notes |
|---|---|
*.CDA | Linux support only, using ioctl() for digital audio extraction. |
*.CUE | Cue sheet metadata |
*.TOC | CD recorder disc-at-once (cdrdao) |
Supported files using fork of TiMidity++:
| Extension | Notes |
|---|---|
*.MID | General MIDI |
Supported files using AdPlug, for formats designed for the OPL2/OPL3 AdLib sound chips:
| Extension | Notes |
|---|---|
*.A2M, *.A2T | AdLib Tracker 2 by subz3ro |
*.ADL | Coktel Vision Adlib Music |
*.ADL | Westwood ADL |
*.AMD | Amusic tracker by Elyssis |
*.BAM | Bob’s Adlib Music |
*.CFF | BoomTracker 4.0 by CUD |
*.CMF | Creative Music File Format by Creative Technology |
*.CMF | SoundFX Macs Opera tracker by Linel |
*.D00 | EdLib |
*.DFM | Digital-FM by R.Verhaag |
*.DMO | Twin TrackPlayer by TwinTeam |
*.DRO | DOSBox Raw OPL |
*.DTM | DeFy Adlib Tracker by DeFy |
*.GOT | God Of Thunder Music by Roy Davis of Adept Software |
*.HSC | HSC Adlib Composer by Hannes Seifert, HSC-Tracker by Electronic Rats |
*.HSQ, *.SQX, *.SDB, *.AGD, *.HA2 | Herbulot AdLib System (HERAD) by Remi Herbulot |
*.HSP | HSC Packed by Number Six / Aegis Corp. |
*.IMF, *.WLF, *.ADLIB | Apogee IMF, game music |
*.JBM | JBM (Johannes Bjerregaard’s) Adlib Music Format |
*.KSM | Ken Silverman‘s Music Format |
*.LDS | LOUDNESS Sound System |
*.M | Ultima 6 Music |
*.MAD | Mlat Adlib Tracker |
*.MDI | AdLib MIDIPlay File Format by Ad Lib Inc. |
*.MID, *.SCI, *.LAA | Sierra’s AdLib Audio File Format, MIDI Audio File Format, LucasArts AdLib Audio File Format by LucasArts |
*.MKJ | MKJamz by M \ K Productions |
*.MSC | Adlib MSC Player |
*.MTK | MPU-401 Trakker by SuBZeR0 |
*.MTR | Arkham Master Tracker 2.4 |
*.MUS, *.MDY, *.IMS | AdLib MIDI Music Format by Ad Lib Inc., IMPlay Song Format |
*.PIS | Beni Tracker PIS Player |
*.PLX | PALLADIX Sound System |
*.RAC, *.RAW | Raw AdLib Capture |
*.RAD | Reality AdLib Tracker |
*.RIX, *.MKF | Softstar RIX OPL Music |
*.ROL | Adlib Visual Composer by AdLib Inc. |
*.S3M, *.AS3M | Scream Tracker 3 |
*.SA2, *.SAT | Surprise! Adlib Tracker 2 by Surprise! Productions |
*.SNG | Adlib Tracker 1.0 by Dj-Tj |
*.SNG | Faust Music Creator by FAUST |
*.SNG | SNGPlay by BUGSY of OBSESSION |
*.SOP | Note Sequencer by Lee Ho Bum (sopepos) |
*.VGM, *.VGZ | Video Game Music |
*.XAD | Various eXotic ADlib Formats by Riven the Mage |
*.XMS | XMS-Tracker by MaDoKaN/E.S.G |
*.XSM | eXtra Simple Music by Davey W Taylor |
Supported files for HivelyTracker tracked music, using code from the original tracker repository:
| Extension | Notes |
|---|---|
*.HVL | Hively Tracker |
*.AHX | AHX or the not yet existing modern AHX Clone |
Supported files using the Game Music Emulator (various retro game consoles):
| Extension | Notes |
|---|---|
*.GBS | GameBoy Sound System |
*.GYM | Genesis YM2612 |
*.HES | Hudson Entertainment Sound |
*.KSS | Konami Sound System? |
*.NSF, *.NSFe | Nintendo Sound Format |
*.SAP | Slight Atari Player |
*.SPC | Super Nintendo / Super Famicom SPC-700 co-processor |
*.VGM, *.VGZ | Video Game Music |
Supported files using the PSG play (Atari ST Programmable Sound Generator):
| Extension | Notes |
|---|---|
*.SNDH | Atari SoundHeader files can be found at sndh.atari.org |
Integrated support for modland.com
Built into the file-browser is support for directly browsing https://modland.com utilizing curl.
An initial fetch of the database containing all the file names is required for this feature to work. This is available in the modland.com/setup.dev option inside of the built-in file browser.
Manual Page
Available in Debian manpages.
Usage
Note
If key letters are CAPITAL, press them with shift.
| Keys | Description |
|---|---|
| escesc | Exit the program. |
| alt + k | List available key shortcuts in the current view. |
While playing
| Keys | Description |
|---|---|
| Enter | Next file from the playlist, if playlist is empty it opens the file-browser. |
| f | File-browser. |
| < | Rewind. |
| > | Fast Forward. |
| a | Text FFT analyzer, A: toggle FFT analyzer, tab: toggle colors. |
| b | Phase viewer. |
| c | Text Channel viewer. |
| d | Start a shell (only works if using the console/curses version). |
| s | Un/Silence channel. |
| q | Un/Quiet other channels (solo/unsolo). |
| t | Text Track viewer. |
| g | Lo-Res FFT analyzer + history, G: high-Res FFT analyzer + history. |
| o | Oscilloscope. |
| v | Peak power level. |
| w | Würfel mode (requires animation files to be present). |
| m | Volume control. |
| n | Note dots. |
| x / alt + x | Extended mode / normal mode toggle. |
| ' | Link view. |
| , / . | Fine panning. |
| + / - | Fine volume. |
| * / / | Fine balance. |
| Backspace | Toggle filter. |
| f1 / ? / h | Online Help. |
| f2 | Lower Volume. |
| f3 | Increase Volume. |
| f4 | Toggle Surround. |
| f5 | Panning left. |
| f6 | Panning right. |
| f7 | Balance left. |
| f8 | Balance right. |
| f9 | Decrease playback speed. |
| f10 | Increase playback speed. |
| \ | Toggle pitch/speed lock (if file format makes this possible). |
| f11 | Decrease playback pitch. |
| f12 | Increase playback pitch. |
File browser
| Keys | Description |
|---|---|
| alt + e | Edit meta-information. |
| alt + i | Toggle file-list columns (long filename, title, etc). |
| alt + c | Open system options list. |
| Insert | Add to playlist. |
| Delete | Remove from playlist. |
| Tab | Move cursor between filelist and playlist. |
Installing binaries on Linux
See: https://repology.org/project/ocp-open-cubic-player/versions
GNU Unifont
GNU Unifont files are required when X11/SDL support is enabled. This is an 8×16 font that has the main goal of being UTF-8/Unicode complete. For special scripts it will look incorrect, but the character-set should be complete.
In most systems, Unifont files will be installed in /usr/share/fonts/truetype/unifont/ or /usr/share/fonts/opentype/unifont/. If this path is different for your system, you can configure the correct path using --with-unifontdir-ttf=/your/path and/or --with-unifontdir-otf=/your/path when invoking ./configure.
If the Unifont files on your system are not named exactly unifont.ttf, unifont_csur.ttf and unifont_upper.ttf, the filenames can be configured using --with-unifont-ttf=/your/path/UniFont.ttf, --with-unifont-csur-ttf=/your/path/UniFont-CSUR.ttf and/or --with-unifont-upper-ttf=/your/path/UniFont-Upper.ttf. For the OpenType version of the files, use --with-unifont-otf, --with-unifont-csur-otf and/or --with-unifont-upper-otf.
If the filenames on your system contains version numbers, we ask you to fill a bug-report to your system provider and ask them to add symlinks without version numbers in them.
Installing on macOS
Use: brew install ocp
Additional notes for Darwin
If you use liboss, you might need to edit /opt/local/lib/pkgconfig/liboss.pc and remove -Wno-precomp (liboss 0.0.1 is known to be broken and crashes, so we discourage the use of liboss).
To configure Darwin, my experience is that you need to run configure like this:
PATH=$PATH:/opt/local/bin LDFLAGS=-L/opt/local/lib CFLAGS=-I/opt/local/include CXXFLAGS=-I/opt/local/include CPPFLAGS=-I/opt/local/include CPPCXXFLAGS=-I/opt/local/include ./configure
and optionally add things like --prefix etc.
To get curses up and running with colors, you need to run ocp like this:
TERM=xterm-color ocp-curses
Docker Images
Files for building Docker images for Open Cubic Player are available in this repository.
Ready to use images can be pulled directly from the GitHub Container Registry of the repository.
Refer to the README file for usage information and more details.
Sample sources of where to find music
- https://modarchive.org/
- http://www.chiptune.com/
- http://www.keygenmusic.net/
- https://hornet.org/music/
- https://modland.com/pub/modules/
IRC
Available at https://libera.chat in #ocp.