Retro Computer Music

Table of Contents

I’m interested in computer music generation and synthesis, with an emphasis on tools that run on Linux (Ubuntu / Debian). Random notes about that live here.

Commodore 64 (SID)

Software Music
sidplay2 https://www.hvsc.c64.org/
open cubic player (ocp)
VLC

The SID (Sound Interface Device) was arguably the sound of the home computer in the 1980s. It redefined audio in early home computers. There’s even a documentary about it: IMDB: The Chiptune Story - Creating retro music 8-bits at a time. You can start your journey at Wikipedia: https://en.wikipedia.org/wiki/Sound_Interface_Device. Despite only having three voices, the chip can produce some incredible sounds, thanks in part to being one of the first chips with integrated filters.

Open Cubic Player

The “High Voltage SID Collection” is your source for music (.sid files): https://www.hvsc.c64.org/

If you don’t know where to start, search for compositions by Rob Hubbard, or try these from the HVSC:

  • /MUSICIANS/O/Ouwehand_Reyn/Flimbos_Quest_intro.sid (search: “Flimbo’s Quest (intro)”)
  • /MUSICIANS/C/Ciaran/fr-08_loader.sid (search: “fr-08 loader”)
  • /MUSICIANS/S/SounDemoN/Vicious_SID_2-1st_loader.sid (search: “Vicious SID 2 - 1st loader”)

Sidplay2 tends to be my preferred player on Linux. You can install it using the package manager in Ubuntu/Debian (sidplay / sidplayfp). https://sourceforge.net/projects/sidplay2/

On newer Ubuntu systems, you may need to install osspd to regain the legacy /dev/dsp device for sidplay. See https://askubuntu.com/questions/220370/where-is-dev-dsp-or-dev-audio

$ sidplay2 Vicious_SID_2-1st_loader.sid 
+------------------------------------------------------+
|   SIDPLAY - Music Player and C64 SID Chip Emulator   |
|          Sidplay V2.0.9, Libsidplay V2.1.1           |
+------------------------------------------------------+
| Title        : Vicious SID 2 - 1st loader            |
| Author       : Otto Järvinen (SounDemoN)             |
| Released     : 2012 The Noisy Bunch                  |
+------------------------------------------------------+
| Playlist     : 1/1 (tune 1/1[1])                     |
| Song Length  : UNKNOWN                               |
+------------------------------------------------------+
Playing, press ^C to stop...00:13

The “Stone Oakvalley’s Authentic SID Collection (SOASC=)” makes recordings from the High Voltage SID Collection on real hardware, including multiple revisions of the SID chip. Some songs are available using lossless codecs (FLAC): https://www.6581-8580.com/

Yamaha OPL2

The Yamaha OPL2 (YM3812) was likely the predominant synthesis chip in the 1980s. More commonly known as the chip behind the Adlib and SoundBlaster cards for early PCs, it was also used in standalone synthesizers (musical keyboards). Wikipedia: https://en.wikipedia.org/wiki/YM3812

Open Cubic Player

Adplay / Adplug will play music for this chip on Linux. https://github.com/adplug/adplug/

Output is a little fiddly on newer systems using pipewire. You may need the aforementioned osspd and specify -O oss on the command line.

For my tastes, the “nuked” emulator seems to be the most faithful. Die shots where users to reverse actual chips to recover ROM tables. https://github.com/nukeykt/Nuked-OPL3 The “woody” emulator is also pretty good.

$ adplay -O oss -e nuked THINROSE.CMF 
Playing 'THINROSE.CMF'...
Type  : Creative Music File (CMF)
Title : 
Author: 

“Thin Roses” was one of many sample pieces written by Henri Chalifour for the Adlib card (THINROSE.ROL or THINROSE.CMF). https://www.last.fm/music/Chalifour/+wiki

Other examples:

  • DRIZZLE.CMF / DRIZZLE.ROL
  • FLOWERS.CMF / FLOWERS.ROL
  • VERYBUSY.CMF / VERYBUSY.ROL

You can find a fair amount of music in the SoundBlaster .cmf format online. At least one old CDROM complication has a few hundred tunes: MEGA_ROM_1 (look under “ROLFILES”).

You can also find a fair amount of music in the Adlib .rol format. However, .rol files are incomplete. Adlib stored the instrument definitions outside the musical composition as either .ins files or a .bnk. .ins files were very small (a few bytes each). Adlib switched to a combined instrument bank format .bnk, as file systems at the time could not efficiently store hundreds of tiny files.

Players will refuse to play these files without the instrument bank.

You might be able to find it here: http://www.retroarchive.org/cdrom/nightowl-005/050A/index.html Look for and unzip STANDARD.ZIP. You can also find sample Adlib music there. “Open Cubic Player” seems to prefer the bank to be all lowercase standard.bnk rather than STANDARD.BNK.

.cmf files include the instrument definitions, so they do not require an instrument bank.

You can convert .cmf files to MIDI using CMF2MID running under DOSBox. http://annex.retroarchive.org/cdrom/smsw-vol3/MIDI/CMF2MID/index.html

Philips SAA1099

A lessor known chip, but this was an add-on for early SoundBlaster cards to provide stereo synthesis using two of these.

CMS in DOSBox

See my article on Creative Music System or C/MS for more. As far as I know, the only way to play these songs is through DOSBox.

If you have the second song disk and run APLAY DBUNNY /c3, you get this crazy thing:

CMS in DOSBox

CMS in DOSBox

… 1980s computer animation at its finest.

Ricoh 2A03 (Nintendo Entertainment System)

Software Music
VLC Zophar’s Domain
Open Cubic Player

Another “sounds of the 1980s” chip. This is actually a MOS 6502 CPU that also includes sound hardware. It’s the distinctive sound of the Nintendo Entertainment System. https://www.vgmpf.com/Wiki/index.php?title=Output_-_NES

Open Cubic Player

Sites such as Zophar’s Domain provide a plethora of music in .mp3 format as well as the “native” .nsf format.

VLC will play .nsf files, but track navigation may or may not work in my experience.

“Open Cubic Player” will also play these. Use control-right/left arrow to change tracks within an .nsf.

MOD files (Amiga)

Software Music
VLC Modarchive
Open Cubic Player

.mod files are pretty well known and documented on the Internet. This format uses samples to produce sounds (rather than FM or other synthesis techniques). The Commodore Amiga had a custom chip that modified the samples in real time to produce different pitches https://en.wikipedia.org/wiki/Amiga#Sound.

Open Cubic Player

Modarchive is your source: https://modarchive.org/

Songs come in a variety of similar formats, supporting a variety of features (specifically higher bit-rate / depth samples). For example, .xm, .it, .s3m.

The files are broadly playable, including in vlc https://videolan.org.

Texas Instruments SN76489 (honorable mention)

This chip was in many devices, notably the Texas Instruments TI 99/4A home computer. Unlike the SID chip, it did not have any filters. It only produced three channels of square wave audio with one noise generator.

It sounded terrible. Though I recall some demos that managed to get some decent sounding music out of it.

While it has emulator support, I am not aware of a “standard” file format for it.

You can find examples on YouTube. The “TI-99/4A Megademo” is a late example of pushing this chip to its limits to perform some interesting music. https://www.youtube.com/watch?v=ZhSUhE03XFw

Players

To play everything here in Debian 12:

apt install dosbox sidplay sidplayfp adplay osspd-pulseaudio vlc opencubicplayer

Videolan (VLC)

vlc can play a lot of these formats (at least: .nsf, .sid, .mod). https://videolan.org

If you only install one player, VLC is the one.

Open Cubic Player (ocp)

I recently discovered the “Open Cubic Player” https://www.cubic.org/player/. It will play most of the formats on this page with a retro text mode interface. It will also give you some interesting visualizations. For some formats, you can see what each synthesis channel is doing and even turn individual channels on and off.

There are packages in Debian and Ubuntu, but they’re a bit old and do not have all the plug ins.

You should be able to build ocp from Github on Debian 12 (January 2025) by running:

sudo apt install \
        build-essential autoconf automake pkg-config \
        xa65 \
        libncurses-dev libz-dev libbz2-dev libjpeg62-turbo-dev libmad0-dev \
        libpng-dev libogg-dev libvorbis-dev libdiscid-dev libcjson-dev \
        libancient-dev libflac-dev libgme-dev libmad0-dev libasound2-dev

git clone https://github.com/mywave82/opencubicplayer
cd opencubicplayer
git submodule update --init --recursive
./configure --with-alsa --with-mad
make
sudo make install

Screenshots of OCP were made using Cool Retro Term. Cool Retro Term is emulating the glorious crapulence of old Cathode Ray Tube monitors, which is why the screenshots are blurry and jittery.