Skip to content

OpenCubic Player

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]

Screenshot

Supported Formats

Amiga-style module files and other module files (Amiga compressed files are decompressed using ancient):

ExtensionNotes
*.AMSVelvet Studio and Extreme’s Tracker
*.DMFX-Tracker
*.ITImpulse Tracker or the modern Schism Tracker
*.MDLDigiTrakker or the modern MilkyTracker
*.MODProTracker or the modern ProTracker Clone
*.MTMMultiTracker Module Editor
*.NSTNoiseTracker
*.OKTOktalyzer
*.PTMPolyTracker
*.STMScream Tracker 2
*.S3MScream Tracker 3
*.ULTUltra Tracker
*.WOWGrave Composer
*.XMFastTracker 2 or the modern FastTracker 2 Clone
*.669Composer 669

Supported files using code from STYMulator:

ExtensionNotes
*.YMAtari ST (Yamaha YM2149)

Supported files using fork of libsidplayfp:

ExtensionNotes
*.SID, *.RSIDC64 (SID 6581/8580)

Supported files using code from aylet:

ExtensionNotes
*.AYZX Spectrum/Amstrad CPC (Yamaha YM2149)

Supported audio files (both compressed and PCM styled):

ExtensionNotes
*.OGGOGG using ogg, libvorbis and libvorbisfile
*.FLACFLAC
*.MP2MPEG-1 Audio Layer II using MAD: MPEG Audio Decoder
*.MP3MPEG-1 Audio Layer III or MPEG-2 Audio Layer III using MAD: MPEG Audio Decoder
*.QOAQuite OK Audio
*.WAVWaveform Audio File Format, only integer PCM is implemented
*.WVWavPack

Supported Audio-CD files:

ExtensionNotes
*.CDALinux support only, using ioctl() for digital audio extraction.
*.CUECue sheet metadata
*.TOCCD recorder disc-at-once (cdrdao)

Supported files using fork of TiMidity++:

ExtensionNotes
*.MIDGeneral MIDI

Supported files using AdPlug, for formats designed for the OPL2/OPL3 AdLib sound chips:

ExtensionNotes
*.A2M, *.A2TAdLib Tracker 2 by subz3ro
*.ADLCoktel Vision Adlib Music
*.ADLWestwood ADL
*.AMDAmusic tracker by Elyssis
*.BAMBob’s Adlib Music
*.CFFBoomTracker 4.0 by CUD
*.CMFCreative Music File Format by Creative Technology
*.CMFSoundFX Macs Opera tracker by Linel
*.D00EdLib
*.DFMDigital-FM by R.Verhaag
*.DMOTwin TrackPlayer by TwinTeam
*.DRODOSBox Raw OPL
*.DTMDeFy Adlib Tracker by DeFy
*.GOTGod Of Thunder Music by Roy Davis of Adept Software
*.HSCHSC Adlib Composer by Hannes Seifert, HSC-Tracker by Electronic Rats
*.HSQ, *.SQX, *.SDB, *.AGD, *.HA2Herbulot AdLib System (HERAD) by Remi Herbulot
*.HSPHSC Packed by Number Six / Aegis Corp.
*.IMF, *.WLF, *.ADLIBApogee IMF, game music
*.JBMJBM (Johannes Bjerregaard’s) Adlib Music Format
*.KSMKen Silverman‘s Music Format
*.LDSLOUDNESS Sound System
*.MUltima 6 Music
*.MADMlat Adlib Tracker
*.MDIAdLib MIDIPlay File Format by Ad Lib Inc.
*.MID, *.SCI, *.LAASierra’s AdLib Audio File Format, MIDI Audio File Format, LucasArts AdLib Audio File Format by LucasArts
*.MKJMKJamz by M \ K Productions
*.MSCAdlib MSC Player
*.MTKMPU-401 Trakker by SuBZeR0
*.MTRArkham Master Tracker 2.4
*.MUS, *.MDY, *.IMSAdLib MIDI Music Format by Ad Lib Inc., IMPlay Song Format
*.PISBeni Tracker PIS Player
*.PLXPALLADIX Sound System
*.RAC, *.RAWRaw AdLib Capture
*.RADReality AdLib Tracker
*.RIX, *.MKFSoftstar RIX OPL Music
*.ROLAdlib Visual Composer by AdLib Inc.
*.S3M, *.AS3MScream Tracker 3
*.SA2, *.SATSurprise! Adlib Tracker 2 by Surprise! Productions
*.SNGAdlib Tracker 1.0 by Dj-Tj
*.SNGFaust Music Creator by FAUST
*.SNGSNGPlay by BUGSY of OBSESSION
*.SOPNote Sequencer by Lee Ho Bum (sopepos)
*.VGM, *.VGZVideo Game Music
*.XADVarious eXotic ADlib Formats by Riven the Mage
*.XMSXMS-Tracker by MaDoKaN/E.S.G
*.XSMeXtra Simple Music by Davey W Taylor

Supported files for HivelyTracker tracked music, using code from the original tracker repository:

ExtensionNotes
*.HVLHively Tracker
*.AHXAHX or the not yet existing modern AHX Clone

Supported files using the Game Music Emulator (various retro game consoles):

ExtensionNotes
*.GBSGameBoy Sound System
*.GYMGenesis YM2612
*.HESHudson Entertainment Sound
*.KSSKonami Sound System?
*.NSF, *.NSFeNintendo Sound Format
*.SAPSlight Atari Player
*.SPCSuper Nintendo / Super Famicom SPC-700 co-processor
*.VGM, *.VGZVideo Game Music

Supported files using the PSG play (Atari ST Programmable Sound Generator):

ExtensionNotes
*.SNDHAtari 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.

KeysDescription
escescExit the program.
alt + kList available key shortcuts in the current view.

While playing

KeysDescription
EnterNext file from the playlist, if playlist is empty it opens the file-browser.
fFile-browser.
<Rewind.
>Fast Forward.
aText FFT analyzer, A: toggle FFT analyzer, tab: toggle colors.
bPhase viewer.
cText Channel viewer.
dStart a shell (only works if using the console/curses version).
sUn/Silence channel.
qUn/Quiet other channels (solo/unsolo).
tText Track viewer.
gLo-Res FFT analyzer + history, G: high-Res FFT analyzer + history.
oOscilloscope.
vPeak power level.
wWürfel mode (requires animation files to be present).
mVolume control.
nNote dots.
x / alt + xExtended mode / normal mode toggle.
'Link view.
, / .Fine panning.
+ / -Fine volume.
* / /Fine balance.
BackspaceToggle filter.
f1 / ? / hOnline Help.
f2Lower Volume.
f3Increase Volume.
f4Toggle Surround.
f5Panning left.
f6Panning right.
f7Balance left.
f8Balance right.
f9Decrease playback speed.
f10Increase playback speed.
\Toggle pitch/speed lock (if file format makes this possible).
f11Decrease playback pitch.
f12Increase playback pitch.

File browser

KeysDescription
alt + eEdit meta-information.
alt + iToggle file-list columns (long filename, title, etc).
alt + cOpen system options list.
InsertAdd to playlist.
DeleteRemove from playlist.
TabMove 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

IRC

Available at https://libera.chat in #ocp.

Packaging Status

Packaging status