RealAudio Personal Server

I had originally planned on doing this for the 4th of July, but something happened along the way. I had forgotten that this is 1995, not 2024, and things were a little bit different back then.

Back in the early days of the internet, when Al Gore himself had single handedly created it out of the dirt, The idea of address space exhaustion didn’t loom overhead as it did in the late 00s. And in those days getting public addresses was a formality. It was a given that not only would the servers all have public TCP/IP addresses, but so would the clients. Protocols like FTP would open ports not only from client to server, but also server to client. This was also the case for RealAudio. Life was good.

The problem with trying to build anything with this amazing technology is that while I do have a public address for the server, it’s almost a given that YOU are not directly connected to the internet. Almost everyone these days uses some kind of router that’ll implement Network Address Translation (NAT), allowing for countless machines to sit behind a single registered address, and map their connections in and out behind one address. For protocols like FTP, they have to be built to watch and dynamically add these ports. FTP is popular, RealAudio is not. So, the likelihood of anyone actually being able to connect to a RealAudio 1.0 server is pretty much nil.

RealAudio Player v3 connected to a v1 server

The software is pretty easy to find on archive.org, (mirrored). Since it’s very audio centric, I decided to install the server onto a Citrix 1.8 server using Qemu 0.9. I had gone with this, as the software is hybrid 16bit/32bit and I need a working sound card, and I figured the Citrix virtual stuff is good enough.

First thing first, you need some audio to convert. Thankfully in modern terms ripping or converting is trivial unlike the bad old days. First off, I needed a copy of the Enclave radio, and I found that too on archive.org. The files are all in mp3 format, but the RealAudio encoder wants to work with wav files. The quickest way I could think of was to use ffmpeg.

ffmpeg -i Enclave Radio - Battle Hymn of the Republic.mp3 -ar 11025 -ab 8k -ac 1 enc01.wav

This converts the mp3 into an 11Khz mono wav file. It’s something the encoder can work with. Another nice thing about Citrix is how robust it can use your local drives, cutting out the whole part of moving data in & out of the VM.

One thing about how RealAudio works is that first there is the ability to load up a .ram or playlist file. In this case, I took the ‘enclave playlist’ from Fallout 3, and made a simple playlist as enclave.ram:

The encoder allows for some metadata to be set. Nothing too big.

Name & Author

And then it thankfully takes my i7 seconds to convert this, even under emulation, using a shared drive. And import option to deselect is to enable playback in real-time, as it’ll never work as it cannot imagine a world in which the processor is substantially faster than the encoder.

Converting the 8 files took a few minutes, and then I had my RealAudio 1.0 data.

Next up is to create a .RAM or playlist.

pnm://localhost/enc01.ra
pnm://localhost/enc02.ra
pnm://localhost/enc03.ra
pnm://localhost/enc04.ra
pnm://localhost/enc05.ra
pnm://localhost/enc06.ra
pnm://localhost/enc07.ra
pnm://localhost/enc08.ra

The playlist should be served via HTTP, and I had just elected to use an old hacked up Apache to run on NT 3.1. As it only has to serve some simple files.

The scene is all set, the RealAudio player pulls the playlist from Apache, then it connects on TCP port 7070 of the RealAudio server to identify itself and get the file metadata. Then the RealAudio server then opens a random UDP port to the client and sends the stream, as the client updates the server via UDP of how the stream is working. And this is where it all breaks down, as there is not going to be any nice way to handle this UDP connection from the server to the client.

Well, this was disappointing.

In a fit of rage, I then tried to see if ffmpeg could convert the real audio into FLAC so you could hear the incredible drop in quality, and as luck would have it, YES it can! To concatenate them, I used a simple list file:

file ENC01.RA
file ENC02.RA
file ENC03.RA
file ENC04.RA
file ENC05.RA
file ENC06.RA
file ENC07.RA
file ENC08.RA

And then the final command:

ffmpeg -f concat -safe 0 -i list.txt Enclave_v1.flac

And thanks to ‘modern’ web standards, you can now listen to this monstrosity!

Enclave Real Audio 1 converted to Flac & concatenated.

This takes about 10MB of WAV audio derived from 8MB of MP3’s, and converted down to 472kb worth of RealAudio. Converting that back to a 4.4MB FLAC file.

To keep in mind what network ports are needed at a minimum it’s the following:

  • TCP 1494 * Citrix
  • TCP 7070 * RealAudio
  • UDP 7070 * RealAudio (statistics?)
  • TCP 80 * Apache

And of course, it seems to limit the RealAudio server to the client in the 7000-7999 range but that is just my limited observation. This works find at home on a LAN where the server is using SLiRP as the host TCP/UDP ports appear accessible from 10.0.2.2, while giving the server a free-standing IP also works better, but again it needs that 1:1 conversation greatly limiting it in today’s world.

Also, as pointless as it sounds, you can play the real audio files from the Citrix server for extra audio loss.

Personally, things could have gone a lot better on the 3rd of July, I thought I’d escaped but got notified on the 5th they forgot about me. Oh well Happy 4th for everyone else.

Adding the missing part of DoomNew – audio

DoomNew, is a rather ambitious project by Maraakate, to attempt to revert the old linuxdoom-1.10 to something more akin to what shipped for DooM 1.9 using Hexen/Heretic source code to fill in many of the blanks in a very Jurassic Park like manipulation of it’s DNA (source code). It’s great and gives you a very cool MS-DOS based engine using the original Watcom tools. But there is always the one catch, which is that it relies on the original sound library, DMX.

And unfortunately, nobody has been able to get ahold of Paul Radek to see if he’d be okay with any kind of open-source license. So, sadly DMX has been a long-standing stumbling block for that ‘authentic’ super vanilla DOS DooM.

Enter the Raptor

Raptor: Call of the Shadows

Fast forward to a few days ago, and I come across dosraptor on github. I had a copy of this back in the day, it was bundled on CD-ROM or something. I am absolutely terrible at games like this, but I did remember this one being incredibly fluid, and fun despite me having no skill. Raptor was written by Scott Host, and it’s still on sale over on steam! The source had been cleaned up with help from skynettx, nukeykt and NY00123.

I went ahead and built it from source, and in no time I was up and running. I found Watcom 9.5 was the best path to go with. I even made a ‘release‘ for those who don’t want the joy of building from source, and of course picked up a copy on both steam and his site. While building the source code, and looking at the directory tree that’s when I noticed apodmx:

This is a DMX sound library wrapper, which is powered by the
Apogee Sound System, the latter being written by Jim Dose for
3D Realms. When used together, they form a replacement for DMX.

The DMX wrapper was written by Nuke.YKT for PCDoom, a DOS port
of id Software's Doom title from the 90s.

It also includes the mus2mid converter, contributed by Ben Ryves for
Simon Howard's Chocolate Doom port, as well as the PC Speaker frequency table, dumped by Gez from a DOOM2.EXE file and later also added to Chocolate Doom.

A few years later, this wrapper was modified by NY00123; Mostly to be built as a standalone library, while removing dependencies on game code.

So it turns out that Raptor used DMX, just like DooM!

Well, isn’t that incredible!

Now the first question I had, was apodmx a direct drop-in replacement for DMX? Well basically, yes! Let’s check out the Adlib driver!

DooM 1.9 intro
NewDoom intro

As you can hear, the intro is very different. But it’s playing at least. Ok how about E1M1?

DooM 1.9 E1M1
NewDoom E1M1

The Apogee Sound System is softer, and not quite the same as DMX, but compared to nothing I’m more than happy with it. The AdLib is kind of a weird card to drive, and I guess it’s not to surprising that there is such a variance.

How about a Roland Sound Canvas?

Nuked-SC55: Roland SC-55 emulation

Sadly, mine is inaccessible, but thanks to nukeykt there is the Nuked-SC55: Roland SC-55 series emulation. I had to setup the MidiLoop as expected, and configure DosBox for the Loop and now I have a virtual Sound Canvas. So let’s see how the two engines deal with a common instrument!

DooM 1.9 Sound Canvas 55
NewDoom Sound Canvas 55

Pretty cool, if I do say so myself.

ZeeDooM

I’ve uploaded my modifications to github, along with a copy of that old ZeeDooM I had slapped together ages ago. I’d taken the map source code from Romero, and the graphical/audio resources from Freedoom and slapped them together.

Sinclair Spectrum+ Tape emulation: Métal Hurlant

So I’ve tried for years now to get a Spectrum +, or a ‘toast rack’ Spectrum 128k, and met no success at all. I have bid unsuccessfully on over 24 systems, with no luck at all. However on a business trip to the UK, I bid on 8 systems, and won 4.

One of many

So now I have too many, which I’ll have to flip a few as I don’t need so many, but for me it’s been super interesting as the whole UK 80’s scene was an isolated parallel software society, that a few software publishers ‘broke out’ once there was common hardware platforms in the 16bit (ST/Amiga), and especially in the Play Station 1 era.

A seeming 100% catastrophic failure of these machines is the keyboard.

dried out contacts

The plastics tend to dry up and disintegrate over the decades, leaving a dead keyboard. However since it’s such a common problem people do make modern replacements.

closeup of the damage

Here is a closeup of the damage, and you can see the clear breakage.

view of the domes

While the keyboard is disassembled it’s a good time to clean the domes, to make sure there is no debris inside, and give it a light wash.

Reassembly

One thing that caught me off guard is that the membrane is really made up of 3 layers, and that they need to be pressed together to make it fully work. So the cable that goes under the collar needs to be tight. Many videos recommend pushing the cable slightly towards the keyboard assembly to give it that extra bit of tension as you screw it down to give it that little extra push to press the layers together.

After all that fun, the keyboard is working and now I can continue onto the next part!

Software

As always one of the big challenges with old machines is getting software loaded. Media deteriorates, becomes scarce, and of course some titles become more expensive than the machines. So what’s a pirate to do?

Luckily a discount ‘toy’ computer from the 80’s also used ‘toy’ storage, in this case the humble audio Philips compact audio cassette. And many of these tapes have been ripped, and converted to a ‘tap’ format, for emulation.

So first you’d think that it’s a simple matter of converting the tap file to a sound file, and playing the resulting file to the computer, and bingo you are up and running! Except it’s not quite that simple.

Digital to analog

This is the easiest part, is the tap conversion, I’m using Igor Maznitsa’s zxtap-to-wav, which is pretty simple to go to a 44100khz

zxtap2wav-windows-386.exe -a -f 44100 -s -i IM2.TAP -o impossibleMissionII.wav

  TAP2WAV converter of .TAP files (a format for ZX-Spectrum emulators) into its .WAV image (PCM, mono).
  Project page : https://github.com/raydac/zxtap-to-wav
        Author : Igor Maznitsa (http://www.igormaznitsa.com)
       Version : 1.0.1

Detected data blocks : .P.D.C.D.D.D.D.D.D
The Result WAV file size is 11043 Kb
3.5mm jack
But we are living in a stereo world, but the ZX Spectrum is a monaural girl

Now you’d think we are good to go, however there is one more problem, and that is the mono plug in the Spectrum. As answered on stackexchange, by mcleod_ideafix, the fundamental problem is that odds are your sound card is stereo, your ‘headphone cable’ is also stereo. So instead of one nice big happy waveform, you’ll actually end up sending 2 waveforms down the stereo plug to the mono jack, that will introduce so much crosstalk that it’d be amazing that anything loads.

Inside the thread is a good explanation of how to fix the waveform to appear over both sides of the pin, but also this nice script to use sox to split for you:

#!/bin/bash
# wav2differential.sh - convert mono game tape audio to 2× stereo
# usage:   wav2differential.sh infile.wav
#          (creates  infile-differential.wav)
# scruss - 2016-06-07
# method by ‘mcleod_ideafix’; many thanks / greetz
#   — https://retrocomputing.stackexchange.com/a/774/439

base="${1%.wav}"
sox -q --norm=-3 "$1" -b 16 "${base}-n.wav"
sox -q  "${base}-n.wav" "${base}-ni.wav" vol -1.0
sox -q  --norm=-0.1 -M -c 1 "${base}-n.wav" -c 1 "${base}-ni.wav" "${base}-differential.wav"
rm -f  "${base}-n.wav" "${base}-ni.wav"

With the wav file in place, the next thing to do is to play it back to the spectrum. On the PC however in the age of multitasking you probably have a LOT of things going beep, and that’ll mess up the entire load process. Bring up the Volume Mixer, and mute everything that isn’t what you are using to play the wav file.

Mute them all!

The first few mistakes I made was thinking that I didn’t want to send too loud of a signal to the Spectrum, as it is voltage, and it probably doesn’t need that much. However the DAC is very hard of hearing, even by 80’s standards so that means you need to crank the volume to 100%

Overboost to 125%

As a matter of fact, go all the way to 125% if you are using VLC. Tapes load slow, expect anywhere for a minute for a 10kb program, and 5+ minutes for a 40kb program. Times vary depending on how the packed the waveform, fast loaders and other fun things.

Spectrum loading from Laptop

And yeah there we go, loading Impossible Mission II, converted from a .tap to wav, then split and combined waveform to load from a stereo plug.

Going overboard!

Now I have 3 ways!

In the last auction I inadvertly won, it included a joystick interface (that hangs OVER the keyboard, WTF?!), and a legit 1980’s Tape deck, the Ingersoll XK696. Shockingly it actually works! It did have it’s fair share of dust bunnies inside which needed promptly cleaning out, I tested with a ‘legit’ tape, a copy of startrike, and yeah, it loaded up fine! I do like how it’s got it’s own ‘monitor’ volume and speaker, along with nice big chunky buttons, and tactile feedback. Got to say I do like it, although yeah loading from tape is slow. But since I never did back in the day, there is something oddly weird about having to pace oneself because of the insanely slow peripherals. I wonder how slot in bps the 1541 was.

I also ordered a retro.care “MaxDuino TZXduino CASduino” loader which can read the tap files directly, and included a stereo to monaural RCA 3.5 cable in the bundle. Pitty it didn’t include a SD card, and I ended up buying some 4GB card for £5. Such is the price of wanting it immediately. It does let you set the baud rate from 1200/2400/3600 and a blistering overdrive of 3668? Short of an eye watering £90+ for a DivIDE/DivMMC board it does seem to be the budget way to go for someone who doesn’t want to waste all that time converting tap images to wav, then inverse wav to load from PC. But then again if you have 5+ minutes to load a program, you have time to convert files.

There does seem to be something oddly zen about loading from tape, and it makes one all the more hesitant to reboot as loading up something else is such a long process, and that is of course assuming that it even loads in the first place.

Also the other odd thing is that some programs/games want you to load tapes as if they are semi-random access needing you to stop and go on demand (maybe rewind too!). Granted other computers (MSX?) did include a control cable allowing rewind giving a more randomish access out of tape. It’s a limitation of the time, sadly and microdrives and floppies arrived too late, and failed to have any significant adoption to matter, sadly.

I don’t know if this will reach any audience, although there is some ‘retro wave’ going on since the unmentionable event of CNY 2019, and shut ins are getting retro. Although for me, it’s very interesting exploring this parallel and yet foreign experience of a retro past I never knew existed. Although I guess thanks to US Gold, many in the UK were well aware of American software from the likes of EA/Activision et al.

I forget where I heard the term “Métal Hurlant” although it does seem appropriate having a younger machine scream the programs of tape drive past to it’s earphone jack. But it’s most likely the French magazine, and my imagination of something cross between Jarre/Ulrich.

Silent Partner – Space Walk

aka the 20’s version of Opus number 1. Wait, what?

While feeling generally like crap the last few days and half sleeping letting YouTube play random crap it’d eventually come across a ‘live premier’ and they all of course have the same music.

At first in a haze I thought it was looping videos, but no it was 2 completely different people however the intro music was the same. So in the middle of the night the quest had started to track down the tune.

And in no time I managed to find what most everyone else found. It’s from ‘Silent Partner‘ who made a bunch of free to use music. And in the compilations on soundcloud is the Space Walk.

Silent Partner’s Space Walk

And of course you know them from ‘Spring in My Step‘ among many many others.

Although they do have an official channel now, with a short BIO in their about:

In 2013, YouTube reached out to producer Bryce Goggin, asking if he was interested in creating music for their new Audio Library which aimed to give billions of video creators access to free, safe to use music. His answer was simple – “Yes”. Goggin, who’s worked with the likes of Phish, Sean Lennon, Space Hog, and Pavement, recruited a close circle of session musicians to help take on the mighty endeavor. The team worked out of his studio in Brooklyn NY, creating a diverse collection of over 1k songs that would go on to be used in hundreds of millions of videos.

And from the official song:

Since June 2018, every YouTube premiere is preceded by a colorful countdown that features vibrant, abstract animations and a clock ticking its way down to zero. Every countdown also includes the same song playing front and center, a two-minute instrumental track that stirs up anticipation with its nostalgic electronic synths, drum machine percussion, and orchestral string plucks. This song, “Space Walk” by Silent Partner is often referred to as the “unofficial YouTube national anthem”.

Commenters on YouTube re-uploads of the song agree, as they’ve shared a variety of feelings about the track. One person noted, “People in 2030/2040 will be like: This is soooo nostalgic!! Only real ones remember this.” Somebody else wrote, “This is honestly such a fitting song for YouTube Premiere countdowns, it just perfectly goes with your imagination running wild about what you’re about to see.” Another user painted a picture of the end of YouTube with “Space Walk” as the soundtrack: “I feel like this is something that would play in the final minutes of youtube before the site shuts down. Just this music and a few minutes to remember everything that has happened on this site over the decades before it all goes away.”

“Space Walk” has been heard billions of times (literally). Ed Sheeran’s “Shape Of You,” the most popular all-time song on Spotify, has nearly 3 billion spins, and it wouldn’t be surprising to learn that the YouTube premiere song — across every YouTube premiere ever, music video or otherwise — has been heard more times than that.

And there you go. The site Uproxx has a great article on the hunt for the origin of the song. Like so many I’m just here after the fact, wondering what is the deal with the song.

If IVR’s, hold music and answering machines were still a touchstone, I’m sure Space Walk would be up there. But instead now it’s just intro lead music.

Space Walk mp3

And since it is royalty free here is the MP3 for anyone who really wants it that bad.

Linus DECUS ’94 talks found!

As I’m sure this will be making the rounds from Facebook (yes how tragic it’s on that thing of all things), and YES you have to login as King Zuck-my-users-are-idiots-erberg demands to know if you are reading this.


This is written by Jon “maddog” Hall

This is the long-promised Christmas present to all those good little girls and
boys who love GNU/Linux.

It was November of 1993 when I received my first CD of what was advertised as "A
complete Unix system with source code for 99 USD".   While I was dubious about
this claim (since the USL vs BSDi lawsuit was in full swing) I said "What the
heck" and sent away my 99 dollars, just to receive a thin booklet and a CD-ROM
in the mail.   Since I did not have an Intel "PC" to run it on, all I could do
was mount the CD on my MIPS/Ultrix workstation and read the man(1)ual pages.

I was interested, but I put it away in my filing cabinet.

About February of 1994 Kurt Reisler, Chair of the UNISIG of DECUS started
sending emails (and copying me for some reason) about wanting to bring this
person I had never heard about from FINLAND (of all places) to talk about a
project that did not even run on Ultrix OR DEC/OSF1 to DECUS in New Orleans in
May of 1994.

After many emails and no luck in raising money for this trip I took mercy on
Kurt and asked my management to fund the trip.   There is much more to this
story, requiring me to also fund a stinking, weak, miserable Intel PC to run
this project on, but that has been described elsewhere.

Now I was at DECUS.  I had found Kurt trying to install this "project" on this
stinking, weak, miserable Intel PC and not having much luck, when this nice
young man with sandy brown hair, wire-rim glasses, wool socks and sandals came
along.  In a lilting European accent, speaking perfect English he said "May I
help you?" and ten minutes later GNU/Linux was running on that stinking, weak,
miserable Intel PC.

I sat down to use it, and was amazed. It was good. It was very, very good.

I found out that later that day Linus (for of course it was Linus Torvalds) was
going to give two talks that day.  One was "An Introduction to Linux" and the
other was "Implementation Issues in Linux".

Linus was very nervous about giving these talks.   This was the first time that
he was giving a talk at a major conference (19,000 people attended that DECUS)
to an English-speaking audience in English.   He kept feeling as if he was going
to vomit.   I told him that he would be fine.

He gave the talks.  Only forty people showed up to each one, but there was great
applause.

The rest of the story about steam driven river boats, strong alcoholic drinks
named "Hurricanes", massive amounts of equipment and funding as well as
engineering resources based only on good will and handshakes have been told
before and in other places.

Unfortunately the talks that Linus gave were lost.

Until now.

As I was cleaning my office I found some audio tapes made of Linus' talk, and
which I purchased with my own money.  Now, to make your present, I had to buy a
good audio tape playback machine and capture the audio in Audacity, then produce
a digital copy of those tapes, which are listed here.  Unfortunately I do not
have a copy of the slides, but I am not sure how many slides Linus had.  I do
not think you will need them.

Here is your Christmas present, from close to three decades ago.   Happy
Linuxing" to all, no matter what your religion or creed.

An Introduction To Linux
Linux Implementation Issues In Linux

I’ve also archived the slides & audio files on archive.org.

Cockatrice III 0.5a update

Here’s to US!

Well this is a ‘small’ update, but with a big change, the audio is for the most part working great now thanks to this fix from rakslice. Namely changing SDL to MSB:

desired.format = AUDIO_S16MSB;

And another MinGW tweak, and yeah it’s GREAT!

Even stuff like RealAudio work now! I’ll add some self hosted video later as it’d just get struck from anything public.

Also since the RealAudio player is timebombed for installing, I added some lazy offset to remove however many billions of ticks from the clock letting you jump in some random point in the past when it won’t care.

I guess the final if any justification for a bump would be rebuilding with GCC 8.1.0 on MinGW. I somehow butchered the slirp.h to make it too MinGW’ish so it won’t clean build on Linux or OS X, but I have re-butchered a private branch and it works.. I just need to merge and clean but I’m not in the mood at the moment.

I could be crazy but it “feels” faster.

At any rate, I found that System 7 is more agreeable to running Return to Zork, just use some toast image mounter from within MacOS, and it’ll run!

Also there is some ULONGLONG weirdness going on, so I had to backout Peter’s changes for larger disks. No doubt some standard type thing change in GCC 8.

You can download binaries/source from Sourceforge.

Download Cockatrice III
Download Cockatrice III

Getting the first side of Dark Side of the Moon onto a floppy diskette

Back in 1995, 2 really neat things happened.  First is that 32bit computing to the masses finally happened.  The second is that lousy audio compression started to really really take off.

And like many other people, who weren’t lucky enough to have a SUN or NeXT workstation, we got our first taste through Real Audio.

Back in the day, I was lucky enough to have a ST4766N 676MB SCSI disk, that was actually large enough to decompress a CD-ROM audio disc to, which in the mid 90’s was a rarity!

Big disks making transcoding possible

So with enough disk space, I was able to rip the CD-ROM to uncompress WAV files.  Oddly enough today, this is a trival thing to do.  In this day and age to re-create it, however I’m going to take a FLAC, and downsample it to a 44100Hz WAV file using Audacity.

Once you’ve opened up your source material, in the bottom left drop it down to 44100…

And this will let you start the export process

And this let’s you set it to a signed 16-bit PCM WAV which Real Audio can happily transcode.

437MB of uncompressed audio

And this is why for most people transcoding a CD-ROM would be out of reach, as ripping a CD-ROM would require an enormous amount of hard disk space for someone circa 1995.

Using the encoder, it’s a simple matter of opening up the WAV file, select a destination name, and set the encoder.  In this case I want the smallest file possible, so Im using RealAudio version 2, suitable for 14.4 modem.

And just hit the ‘Start Encoding’ button, and you are good to go!  In the day this whole process would take HOURS and HOURS… I think the encoding ran over night.  But today this only takes a few seconds.

And now it’s super easy to load it up on a player, and listen to it’s…. semi awesomeness.

Side 1 in under 1.44MB

And just as I recalled, I was able to transcode the first 5 tracks in under 1.2MB, enough to fit onto a 5 1/4″ diskette, or a 3 1/2″ disk.

Once Windows 95 was a shipping thing, things like the media player started to get better and more versatile codecs to support u-law, a-law, MPEG-2, and even MP3.  But thanks to an early start Real Audio was up there with flash as one of the first ‘must have’ programs to unleash the new and exciting.  Real couldn’t make the jump to mobile devices, and once MP3 streaming via shoutcast and other ‘DIY’ free solutions took over the market and obliterated the very expensive and proprietary RealAudio servers.  While progressive networks is still around, they are the Yahoo of audio.

One minor thing of interest is that VLC, can play RealAudio files.  I thought it was interesting, although I guess not all that practical.

For anyone who wants to play along, you too can try these files: