A2Stream simultaneously receives an .a2stream file from any HTTP server and plays it through the stock Apple II speaker circuit using pulse-width modulation at 22050Hz sample rate with ~5.17 bit resolution.
Hardware requirements:
- Enhanced //e (with extended 80 column card) or IIgs
- Uthernet II Ethernet card in any slot
To view demo videos:
To stream an .a2stream file:
- Run A2STREAM.SYSTEM and enter the URL of an .a2stream file
- Use these shortcuts to make use of persistent history and auto-complete:
Key Function Left Move cursor one char left Right Move cursor one char right Ctrl+A Move cursor to start of line Ctrl+E Move cursor to end of line Delete Delete char left of cursor Ctrl+D Delete char under cursor Up Move to previous history entry Down Move to next history entry Tab Move to next auto-complete Ctrl+C Quit from auto-complete - Find sample .a2stream files at these (case-sensitive) URLs:
http://a2retro.de/a2s/Levels.a2stream
http://a2retro.de/a2s/Sandstorm.a2stream
http://a2retro.de/a2s/1984.a2stream
http://a2retro.de/a2s/HighwayToHell.a2stream
http://a2retro.de/a2s/HowsItSupposedToFeel.a2stream
http://a2retro.de/a2s/TimeToSayGoodbye.a2stream
- shows progress barhttp://a2retro.de/a2s/HealYou.a2stream
- shows default cover art
- Find URLs of .a2stream files for all Open Apple podcast episodes on https://www.open-apple.net/a2stream/
- Use
Esc
to quit at any point - Use
1
-9
to fast-forward 1-9 minutes - Use any other key to pause streaming
To config the Ethernet slot:
- Put the Uthernet II in slot 3 or
- Create a file named ETHERNET.SLOT. Only the first byte of that file is relevant. This byte can either represent your Uthernet II slot as binary value (e.g. $04 for slot 4), as ASCII digit (e.g. $34 for slot 4) or as Apple TEXT digit (e.g. $B4 for slot 4).
To get decent sound quality on the enhanced //e:
- Create a file named OUTPUT.TAPE. The content of that file is not relevant.
- Connect an amplifier/speaker to the tape output jack
To get decent sound quality on the IIgs:
- Connect an amplifier/speaker to the headphone jack
To prepare an .a2stream file for streaming:
- Create a header-less .raw file with 22050Hz mono 32-bit-float PCM data (e.g. with Audacity)
- Generate an .a2stream file from the .raw file with gena2stream (source code)
- Put a standard 16kB .dhgr file beside the .raw file for custom cover art (optional)
- Use the option to
-p
switch the visualization from level meter to progress bar
- Put the .a2stream file onto any HTTP (not HTTPS) server
- Run a simple local HTTP server on Windows
- Run the HTTP File Server and drop the file you want to stream in its Virtual File System
- Run a simple local HTTP server on Linux
cd
to the directory containing the file you want to stream and enterpython -m SimpleHTTPServer
orpython3 -m http.server
depending on the Python version you want to use
- Run a simple local HTTP server on Windows
To play an internet live stream:
- Install MPlayer
- Run srva2stream (source code)
- Provide on the command line the TCP port number you want to use
- Put a standard 16kB srva2stream-<port number>.dhgr file beside srva2stream for custom cover art (optional)
- Wait for the message
waiting on pipe <pipe name>
- Run MPlayer
- Provide command line parameters
-nocache -af pan=1:0.5:0.5,volnorm=1:0.8,resample=22200:0:1,format=floatne -ao pcm:nowaveheader:file=<pipe name> <stream url>
- Wait for the message
connect on pipe
- Run A2STREAM.SYSTEM and enter as URL
<name or address of machine running srva2stream>:<port number>
- Use the step-by-step guide to install srva2stream on a Raspberry Pi (optional)