Wednesday, August 7th, 2024
Ancient audio formats
=====================
When microcomputers in the 1980s got enough computing power and could
start making sounds beyond beep-blop-beep and variously modulated
sawtooth signals, several formats for storing sampled audio bitstreams
emerged. Some time ago, I came across a few of them, and this text is
kind of a summary of what I learned. Maybe someone else will also find
it useful.
Interchange File Format / 8-Bit Sampled Voice (IFF / 8SVX)
----------------------------------------------------------
Created in 1985 by Electronic Arts in collaboration with Commodore for
Amiga computers. It contains 8-bit audio data stored within chunks,
and since 8SVX is just one of the chunk subtypes, it is not limited to
pure audio files, but can also include animation and graphics[1][2].
The sound is typically encoded as an uncompressed linear pulse-code
modulation bitstream, but Fibonacci-delta lossy data compression can
be used, resulting in a 50% size reduction. The VHDR header block
contains information about compression, as well as sample rate and
volume.
Audio Interchange File Format (AIFF)
------------------------------------
An audio format developed by Apple in 1988 for Mac. It is derived from
the IFF and makes it possible to store 16-bit sound with additional
metadata such as instrument information or raw MIDI data. The AIFF-C
subtype was introduced in 1991, allowing for the storage of compressed
audio as well as the ability to specify the endianness of data[3].
The Mac OS CD-ROM driver transparently maps audio CDs to AIFF files,
so when a CD is inserted into the drive, the user sees audio tracks
as AIFF files that can be freely copied to the hard drive.
Resource Interchange File Format / Waveform Audio (RIFF / WAV)
--------------------------------------------------------------
This format is also derived from the Amiga's IFF, but it was developed
in 1991 by two big industry names - Microsoft and IBM - in a need of
a standard sound format for the then-expanding audio capabilities
of PC-compatible machines. WAV, like IFF and 8SVX, is just one of
the RIFF format's subtypes, so it is theoretically possible to combine
other types of media into a single file, but this option was not as
widely used as it was on Amiga. WAV supports both 8-bit and 16-bit
sound and is typically encoded using linear pulse-code modulation, but
compression can also be used. All data is in a little endian format,
which is native to x86 processors[4][5].
Au/Snd file format
------------------
The only widely used audio format of the 1980s and early 1990s that
was not based on the IFF was created by Sun Microsystems. It was also
common on NeXT computers, so it's often referred to as Sun/NeXT Audio.
The specification includes 27 possible sound encoding formats, such as
an uncompressed linear PCM stream with a sample width of 8 to 32 bits,
32-bit and 64-bit floating point streams, various compression types,
and DSP commands. The sample rate ranges between 8 and 48 kHz[6].
An interesting fact is that the SPARCstation1 had a sound device
/dev/audio, which played sound directly in this format; you simply had
to send the contents of an Au file to the it. No other software was
required. Additionally, the Au format was the first audio format used
on the World-Wide-Web, which was first developed on NeXT computers,
and it remained the most popular one until the MP3 took over in the
late 1990s.
..
Several years ago, I created a script that generates a podcast from
a local groove/funk music radio show. At first, it was a quite simple
task: parsing the webpage of the radio station, locating all links
to MP3 files and generating the RSS/XML file. But then they stopped
distributing the show as MP3 files and instead broke each episode into
thousands of M4A chunks, with a descriptor file (chunklist) specifying
the sequence in which these chunks should be played.
I had to rewrite the script from scratch: on my server, I download the
chunklists of all episodes available on the web, then download all
the chunks of one episode according to the chunklist, merge them,
convert to MP3 format, save the file locally and generate the RSS/XML
file. If someone looked into the copyright aspect the whole thing,
they probably wouldn't be very happy, but I simply didn't want to miss
out on my favorite show.
When I finished all this and the podcast started working on my iPhone
again, I decided to create also a version for vintage computers,
accessible via both WWW and Gopher. Therefore, after converting to MP3
the script also converts each episode to 8SVX/IFF and Au formats and
in addition to RSS/XML, it generates a simple HTML 3.2 webpage[7] and
a Gophermap[8]. Although the show is in Czech, and the spoken word may
not make much sense to English listeners, you can still enjoy at least
the music. And you can do it on your Amiga, SPARCstation, or NeXT!
[1]
https://en.wikipedia.org/wiki/Interchange_File_Format
[2]
https://en.wikipedia.org/wiki/8SVX
[3]
https://en.wikipedia.org/wiki/Audio_Interchange_File_Format
[4]
https://en.wikipedia.org/wiki/Resource_Interchange_File_Format
[5]
https://en.wikipedia.org/wiki/WAV
[6]
https://en.wikipedia.org/wiki/Au_file_format
[7]
http://i-logout.cz/other/grundfunk/funkybits/
[8]
gopher://i-logout.cz:70/1/cz/funkybits/