AYoS FAQs | AYoS HIGHLIGHTS | AYoS Gear List
Q How does A Year of Songs really work? I mean -- what goes on behind the scenes?
I see that you use Blogger as your blog editor -- but how about all these seemingly standardized links -- do you use templates or some form of automated system (I noticed you're a database/web developer in real life)... surely you don't do it all by hand... do you?
A Well... as I think I wrote elsewhere, I decided to use the online Blogger editor (which has a lot of blog oriented features built) because I only had a few days to put things in place before my self-imposed startup date and time -- the autumnal equinox, 2005.
It's been a bit rocky using some one else's tools and if I had it to do over again, I would have taken the time to develop a proper CMS (content management system). But I have used them since for collaborative sites and it was nice to have a multi-user infrastructure pre-rolled.
With regards to my current AYoS system:
For the first year or so, I used templates I'd established, a basic framework into which I could cut and paste each song's particulars (the URLs and link text, links to previous versions, and so on) into the template. Every link and image on a typical AYoS page represents something that had to be copy and pasted individually into the template.
What started out as an image, a few paragraphs and a simple link to an Mp3 had evolved into something increasingly elaborate and involved.
It came to a jumping off point with the introduction of the little Flash media player you see on most AYoS pages.
Get the Flash Player to see this player.
The player uses simple XML files (text file representations of simple data structures) for its playlists. They're easy to create but it's tiresome work without some robotic help. Since I'd decided I wanted to keep the playlists fresh that precipitated the creation of the long-anticipated, long-postponed AYoS database project and that allowed me to extend that automation backwards to the creation of each blog entry. (See a screenshot of the DB app, fig 1, below.)
Here's my current workflow:
- Select a song to perform - these days I typically consult the database. I created a query that can show me which non-instrumental songs have only been performed once, twice, or any other threshold number of times. (I've performed all my presentable songs at least once, now.)
From the database, I often click the link that will take me to the selected song's already existing page(s) where I can check the lyrics or listen to the previous version. But sometimes I use the shuffle player to pick out a song more or less at random to perform that day.
- Record the song - You can read a detailed description of the AYoS recording rig here.
- Upload the song - though I use Firefox as my everyday browser, I've found that the Internet Archive (www.archive.org) upload forms work better for me using Internet Explorer. I fill in the song-specific info in their questionnaire using IE and wait for archive.org's robots to give me a temporary FTP account for it. I then switch to Firefox so I can use its plug-in FTP client, FireFTP, to upload the song.
Once uploaded, the robots take care of re-ripping the song into a wide variety of formats, including Ogg Vorbis, and then create an Internet Archive media page with various streaming and download options. I cut and paste that page's URL into my database, adding the title of the song, as well as the URL of the specific 192 kbps MP3 file on IA which will become the download link on my blog page.
- Find/create an image and upload it - I search my own photos and images, as well as various public domain and other sources, often creating photo montage mash-ups, which current interpretations of fair use provisions of copyright law seem to suggest are permissible. When it's been uploaded I paste its URL into the proper field in my database.
- Output the M3U and HTML - finally, the payoff for my application programming efforts -- this is accomplished by pushing the M3U and HTML buttons (in the form application I designed as a front end for my database). This generates an M3U file (for streaming MP3s from my blog page) as well as a basic "starter" for my blog entry... all the HTML code for my chosen image and all my media links, play, download, IA option page, as well as links to previous versions are all generated in one button push, saving a huge amount of cutting and pasting into templates, as I did before.
- Paste the HTML for the basic blog starter page into the Blogger editor - and proceed to write my blog entry for that day/song.
Once I've finished the blog entry and posted it, I paste its URL into the appropriate field in my database. If the day's song is a good one, I put it on the highlights playlist. And then I push the XSPF Playlists button (see the screenshot just below)-- which generates the XML playlists that feed my various players (the specific format is called XSPF, it's common in streaming players these days).
The playlists come in a few flavors: currently, ascending and descending date order sorts, alphabetical, and, of course, the highlights playlist. When I upload those to the site, it effectively updates all the players.
Below is a screenshot of the database application I created to handle almost all of my AYoS database functions (the query I mentioned above is separate):
figure 1, the database form application I created to manage AYoS
Maybe it's not the most elegant or sexy database form application ever designed -- but it works very well for me and reduces my drudgery coefficient enormously.
I approached the development as a classic top-down design job.
The basic task was to create a database of particulars related to each blog entry and its related song: specifically, the download, stream, image, and blog post URLs, as well as the date of the post.
The database would then be used on an ongoing basis to generate the XML and M3U playlist files, as well as a "starter page" for the blog post, complete with all the pertinent links to media, streams, and previous versions.
As the project evolved, I added the ability to add a given track to various custom playlists. The user (that's me, pretty much, of course, for now) can create an unlimited number of playlists -- but I currently only use my so-called highlights playlist. I also output a current playlist of all the AYoS tracks, as well. (A field called DoNotUse keeps really egregious tunes out of the playlists entirely, if necessary. And it occasionally has been.)
I also added a 1-10 self-rating to help me keep things sorted out, quality-wise, as well as a notes field. (If I ever put up a web-based app, I'll give you guys your shot at ratings, too. Maybe.)
Above the fields you'll notice small print legends preceded by a >> mark -- these are web links to the URLs in the fields. Click on one and your browser will open to that page.
To the right side you'll see a list of alternate versions of the selected song, their post dates, their ratings, and a checkmark column indicating whether they're on the currently selected playlist. The blue field in the upper right corner is a fast-find combo box. Enter the first few characters of a song title and a pulldown list of alphabetized titles pops down with the cursor on the first matching title.
NOTE: Gee... when I look at all that I wonder why the hell I'm doing all this for free... Did I mention I have a PayPal page where you can make donations?