I was recently going through some of my old CD-R’s and came across this 11 year old fun memory.
I remember going to this 2003 Toad the Wet Sprocket concert in Salt Lake City with some friends, I had seen this band perform before, but this was the first time I was able to get a recording of the show. Normally having a recording of a concert of a well known band was a little shady, but for some bands, they not only allow recording of their live concerts, but they encourage it. There has been a few bands over the years who have this philosophy, one most have heard of is the Grateful Dead, because of all the tape trading, the band’s numerous concerts will live on forever.
The scene of recording concerts is still alive and well, and if you are into recording and sharing it is expected you share in a lossless audio format. The world of lossless audio is definitely in the minority of all those who listen to music on the daily. Most of us have been placated with the infinite playlists on services like Apple Music, Spotify, and Amazon Music. Most probably don’t care about owning music anymore, but for the few who consider themselves Audiophiles, having a lossless audio file is the only choice.
When it comes to formats, there are a few lossless formats to choose from, they all come with some advantages as well as some downsides. WAV files contain the full PCM audio stream, and while internet bandwidth today can handle full uncompressed audio, it can still be beneficial to use some compression for archiving or sharing over the web.
The most common lossless format today is the Free Lossless Audio Codec or FLAC, but there are also quite a few who like the Apple Lossless Audio Codec. Both offer many advantages, especially with metadata, cuesheets, and can contain cover album art. But many years ago another lossless format was most often used with bootleg recordings and audio sharing.
Shorten was one of the first lossless formats, developed by Tony Robinson in 1993 for SoftSound. It could cut the size in half of a typical 16-bit WAV file. It achieved this by using Huffman coding, kinda the same way a JPEG works, by reducing the frequency of how often patterns occur. Today FLAC and ALAC have replaced this format and offer improved features and support. Many audio players have dropped support for shorten making it difficult to use this old format.
The Shorten format uses the .SHN extension. It is one of the formats listed on the Library of Congress Sustainability of Digital Formats with the ID fdd000199, although a couple links don’t appear to work as it hasn’t been updated since 2011. Support was ended for this format and many of the links found on various websites are for broken, usually referencing the etree wiki. Much of which is archived on the Internet Archive.
Let’s take a look at the what makes up a lossless compressed SHN file. A quick look at a sample header:
hexdump -C test.shn | head 00000000 61 6a 6b 67 02 fb b1 70 09 f9 25 59 52 a4 d1 a8 |ajkg...p..%YR...| 00000010 dd cf 85 5a 01 57 a0 d5 a8 b6 6b 6d d2 41 10 80 |...Z.W....km.A..| 00000020 40 20 10 18 04 0a 01 44 d6 40 20 11 0d 8c 0a 01 |@ .....D.@ .....| 00000030 04 80 44 20 16 4b 0d d2 c3 b8 f8 55 a0 11 80 59 |..D .K.....U...Y| 00000040 98 56 1d b1 79 51 9f 39 f1 12 d2 d3 75 5c cd 08 |.V..yQ.9....u\..| 00000050 06 25 68 6b 52 5e 9f 4c 39 cd c1 32 c4 0d a9 b7 |.%hkR^.L9..2....| 00000060 69 34 56 f0 96 fa 46 89 a2 6e 8c ba d5 d0 58 de |i4V...F..n....X.| 00000070 f5 44 5b aa 61 82 c7 85 88 37 d6 ee cb ab 4e 44 |.D[.a....7....ND| 00000080 91 19 b7 38 d4 20 ae 98 98 d1 2c 4a 4e 88 dd 3e |...8. ....,JN..>| 00000090 36 68 1b 59 a8 7d 84 23 76 0a 84 21 a1 cd 80 8e |6h.Y.}.#v..!....|
The first four bytes seem to be consistent among my samples. It makes me wonder if the ascii values have something to do with the author, Anthony (Tony) J. Robinson. In the source code for the shorten software, the file shorten.h defines the ascii “ajkg” as the magic header for the SHN format. Also found in current ffmpeg code. Although the tools don’t have much to say about them.
mediainfo test.shn General Complete name : test.shn Format : Shorten Format version : 2 File size : 3.17 MiB Audio Format : Shorten Compression mode : Lossless ffprobe -i test.shn Input #0, shn, from 'test.shn': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Audio: shorten, 44100 Hz, 2 channels, s16p
Using the older SHNTOOL, we can get more information.
shntool info test.shn ------------------------------------------------------------------------------- File name: test.shn Handled by: shn format module Length: 0:32.23 WAVE format: 0x0001 (Microsoft PCM) Channels: 2 Bits/sample: 16 Samples/sec: 44100 Average bytes/sec: 176400 Rate (calculated): 176400 Block align: 4 Header size: 44 bytes Data size: 5697720 bytes Chunk size: 5697756 bytes Total size (chunk size + 8): 5697764 bytes Actual file size: 3325489 File is compressed: yes Compression ratio: 0.5836 CD-quality properties: CD quality: yes Cut on sector boundary: no Sector misalignment: 1176 bytes Long enough to be burned: yes WAVE properties: Non-canonical header: no Extra RIFF chunks: no Possible problems: File contains ID3v2 tag: no Data chunk block-aligned: yes Inconsistent header: no File probably truncated: unknown Junk appended to file: unknown Odd data size has pad byte: n/a Extra shn-specific info: Seekable: yes
Many Shorten Audio Files are found out there in archives and file sharing sites, so even though the format isn’t used to create new files, it will still be around for awhile. My GitHub has my signature proposal and a couple of samples.