the workbench
From time to time I get a project in a state where it might actually be useful to someone. Such things might appear here.- Screensavers
- Empeg hacking
- Miscellanea
- Humour (doesn't really fit on this page, but parked here for now)
Screen savers
A friend came to me one day and asked if I knew how to write screen savers. Uh-oh, I said...
She spoke of a field where coloured dots - representing ions - swirl around a black hole. So I dusted off some code I wrote in 1999, reread up on Newton's laws of motion, and started tinkering. I haven't seen the original, and have only been working from a vague description of it, so this isn't a clone or derivative so much as an inspired work.
The result is a Windows screensaver called Storming Ions, and is MIT-licensed.
I currently maintain a feature request list on my wiki. Suggestions welcome, though if you don't have an account on the wiki please email them...
Empeg hacking
The Empeg is (was) a car stereo audio device created by Empeg Ltd of Cambridge in 1998-99. It was later renamed the Rio Car when Empeg Ltd were acquired by Sonic|Blue. Unfortunately, the line was EOLed in 2001; only around 4300 were ever made. I have a Mk2a, serial number 10102115.
The device features a StrongArm 1100 running linux, decent DACs presenting as phono outputs, a 2.5" hard drive, a 128x32x2bpp VFD, a 10Mbit ethernet port, a remote control, and a player application supporting (amongst other features) playlists, searching and a host of visualisations. Being intended for the car market, it came with a docking sled, though mine has only ever been in my hi-fi stack.
There is however a burgeoning owner community, many of whom tinker with the Linux-based software on the device. See: http://www.riocar.org/, http://empegbbs.com/ and http://www.empeg.mars.org/.
Plans
So, where is this leading?
Take the Empeg. Rip out the hard drive and teach it to nfs-root off a server on my LAN. On that server, run the DisOrder jukebox software in its brand shiny new (as of 2007) RTP streaming mode. So the empeg can live on in my hi-fi stack, but play selected tracks from my master music store (which, incidentally, has grown to be larger than the hard drive in the Empeg), and I've done away with the hassle of the Empeg's faffy synchronisation software.
Phase 1, therefore, is to port the relevant client bits of DisOrder to the empeg. Unfortunately, the empeg doesn't have ALSA - only a slightly idiosyncratic /dev/audio - so this isn't just a cross-compile.
Phase 2 will be to add a display on the empeg's VFD using one or other of the disorder client interfaces showing what's playing and perhaps what's next.
Phase 3 will be to tweak the empeg environment so this code autoruns on boot instead of the empeg's own player.
Phase 4 will be to add a degree of control to the interface so I can scratch tracks, manipulate the playlist and perhaps even search for tracks to queue.
Bonus points for: Visualisations. The visualisation and control interface to be usable other than on the Empeg. A DisOrder logo I can flash in to replace the current boot-time logo.
Status 30/9/2007: Phase 1 completed this weekend. The empeg plays a near-flawless RTP stream, even though its 10Mbit ethernet is close to maximum realistic bandwidth (44kHz stereo 16-bit samples come to about 1.44Mbit/s, allowing for ether+IP+UDP+RTP headers).
Update 1/2/2008: To a working approximation, all four phases are now complete to a basic level. I updated to disorder 2.0.x, at which point rjk had merged my changes; I have a great RTP audio stream, the current track name displays, the player and displayer run on boot instead of the empeg's own player, and I even have play/pause/scratch from both the front panel and the remote.
Remaining wishlist:
- Cyrillic fonts
- View playlist
- Menu system to allow configuration and simple track selection
- Edit playlist?
- Visualisations, presumably requiring me to merge in rtp playback
- New (animated?) bootup logo to flash in
- Some sort of support for iTunes playlists, or at least something similar. (This is really a DisOrder feature more than disoblige on its own, though it might dovetail nicely with DO's existing tag support.) I make heavy use of smart playlists for my iPod, filtering both by genre and track preference; I would like to either autosynch these playlists such that DisOrder can play from them, or implement some similar feature natively in DO. Perhaps this would be a constraint on "random play" mode, in that one would say "random tracks from this list", or perhaps playlists could appear in the track selection interface, be selectable from and queueable (optionally in random order).
N.B. I used to publish a bzr repository here, but it became obsolete after rjk merged in my changes. It may yet reappear if I start making nontrivial internal changes.
Miscellanea
- pasteurize, a normaliser for wave files, v0.1.2(.tar.gz, 85k) (Beware, this is very old and klunky; I only recently (that's "recently" when I wrote this page, which was 2005 or earlier) tweaked it to build with gcc 3.)
- pagemunger-wry, a script for maintaining a photo album on the Web. Based on the script of the same name in Anthony de Boer's package, but mercilessly carved up for my own devices to add HTML 4 and CSS support. (It's what I used to use for my gallery, until I used rjk's gallery CGI.) rev 1.11,(perl, 15k). The script contains my poor excuse for documentation in its trailing comment. It's GPL'ed.
- My Debian packages page
- My notes from preparing to run secnet on an OpenWRT box.
- I have been known to play with Google Maps. The only thing vaguely of interest right now is my (unfinished) flight plotter.
Humour
- The "Request for Assassination" form (based on a news post by Peter Clay), available as gzipped PostScript, PDF or as the original LaTeX source. (5.5k, 7k and 5k respectively. It fits nicely on an A4 page.)