Retro Computer Music
Table of Contents
- Commodore 64 (SID)
- Yamaha OPL2
- Philips SAA1099
- Ricoh 2A03 (Nintendo Entertainment System)
- MOD files (Amiga)
- Texas Instruments SN76489 (honorable mention)
- Players
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.
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.
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/
Software | Music |
---|---|
adplug | MEGA_ROM_1 |
open cubic player (ocp) | http://www.retroarchive.org/cdrom/nightowl-005/050A/index.html |
http://www.retroarchive.org/cdrom/nightowl-005/045A/index.html |
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
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
Software | Music |
---|---|
DOSBox | MEGA_ROM_1 |
http://www.retroarchive.org/cdrom/nightowl-005/048A/index.html |
A lessor known chip, but this was an add-on for early SoundBlaster cards to provide stereo synthesis using two of these.
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:
… 1980s computer animation at its finest.
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
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
.
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.
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.
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
To play everything here in Debian 12:
apt install dosbox sidplay sidplayfp adplay osspd-pulseaudio vlc opencubicplayer
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.
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.