Algorithmic crows (and the like)
September 10th, 2008
It’s a shame I’m only coming across this now, but better late than never. This recording, from FITC ‘08 Toronto, is a really inspiring take on how Robert Hodgin has used Processing to create some really amazing visual displays. He takes much of his inspirations from Perlin Noise, algorithmic repetition, and user-interactivity. If you’ve updated to the newest iTunes 8.0, you’ll see his work in the vastly improved visualizer.
EDIT: Unfortunately, it’s using an autoplaying video. For the sake of sanity, I’ve taken the embed out but you can click here to see it.
If you’re an OS X developer, chances are high that Eclipse really cramps your style. But don’t feel married to Flex Builder just because you want to export SWF files. My preferred IDE for the last year has been to use TextMate in combination with the Terminal for trace outputs. Long overdue, here’s my dangerously concise checklist of how to set this up for yourself:
- Download the debug version of the Flash Player (you should see ‘Debugger’ in the context menu of any SWF you right click upon if you have the debug player). Note as of this writing there is no publicly available Flash Player 10 debug player yet - you’ll need to stick with FP9 for now.
- Download and install TextMate.
- To setup command-line compiling, install the Flex SDK, or if you already have Flex Builder installed just set up your .bash_profile’s PATH to include ‘/Applications/Adobe\ Flex\ Builder\ 3/sdks/3.0.0/bin’. If all’s in order, you should get a positive response typing ‘mxmlc -help’ from the command line. If you’re not familiar with how to set up your .bash_profile, there’s plenty of sites with a little background on bash and how to do this.
- In order to trace debug and exceptions to your Terminal, you’ll need to grant access to the player. This process is obscure and esoteric, but do it once you’ll be set. If not already there, create a text file named ‘mm.cfg’ in /Library/Application Support/Macromedia/ and enter the following:
ErrorReportingEnable=1 TraceOutputFileEnable=1
Remember to quit all browsers and restart after making this change.
- Now we’ll equip TextMate to be AS/MXML savvy. Leopard has Subversion pre-installed, which we’ll use to download the newest bundles from Macromates. Copy/paste the following into Terminal:
cd ~/Desktop svn co http://macromates.com/svn/Bundles/trunk/Review/Bundles/ActionScript%203.tmbundle/
After this has completed, you may as well do one more.
svn co http://macromates.com/svn/Bundles/trunk/Review/Bundles/Flex.tmbundle/
- One last Terminal line. This will convert your Terminal into a trace output window for testing SWF files. You’ll need to do this every time you start Terminal up.
tail -f ~/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt
- OK. Go to your Desktop and double click the bundle files that have just been created.
- Now from within TextMate, go to File / New From Template / ActionScript 3 / Project. (Fn-Cmd-F2 gives you keyboard access to the menu bar, if you fancy)
- Specify a location for your new SWF project folder, and fill out the main class namespace (defaults to org.domain.AS3Project)
- Cmd-Shift-B to initiate a build, hit ‘5′ to select MXMLC. You’ll see the build’s success or failure in the subsequent pop-up.
- Cmd-W to close the pop-up. Cmd-R to open the SWF in its HTML container in your default browser. Note that the default project structure doesn’t do anything visually, but it does include a trace. So something along the lines of ‘AS3ProjectTest::initialize()’ should be output to your Terminal at this point.
And you’re good to go! You’ll notice right away that TextMate is a very bare-bones editor. But its simplicity obscures its complexity. Snippets and completion are two of its many benefits. You can familiarize yourself at the online manual.
As an added bonus, check out the free utility Visor (from the creator of Quicksilver). It’s a little odd to set up, but once it’s there, while focused on any other application you can press any specified keyboard shortcut to slide out a terminal window from the top of the screen, giving you an easy glance at what your SWF may be tracing.
Enjoy! Feel free to add your own tips below.
Using Ruby to migrate last.fm tags to iTunes
May 27th, 2008
Once upon a time, digital audio files didn’t carry any information about their creators. No artist name, album, track number - nothing. Naturally, this led to a lot of redundant effort keeping music organized and contextual. In 1996, a little sidecar called ID3 came along, essentially providing a space for textual information about audio that hitched a ride within an MP3 file. While it was a victory for the preservation of metadata, it had its limitations, not least of which was a stodgy implementation of a Genre field.
The original sidecar had only 35 bytes of space to work with. Maximizing room for artist, album, and everything textual meant reducing genre to a single category, which was converted to an integer so that it only occupied a single byte in the overall sidecar. The original ID3 implementation only contained 80 pre-determined options for the genre field.
Which leads to the dilemma:
- No song is of a single genre, but rather many. What good is reducing music to a single container anyway?
- What is rawk to one listener is britrock to another, is emo to another and is shoegaze nu-wave to another.
For this reason, the metadata available in the Genre field is of little use to anyone. You can’t just listen to Alternative or Electronic and expect to have a consistent listening experience. In a sense this parallels the problems with the RIAA and big label music, but I’ll leave that tangent for another day…
We’re not stuck in that bucket anymore. One of the advantages of having millions of people tagging music through services like last.fm is that we now have a much more nuanced voice in describing our music. Let’s face it, it’s not very helpful to call Boards of Canada an electronic group. In fact they are ‘electronic ambient idm chillout downtempo trip-hop indie Warp experimental Scottish chill.’ (according the leading tags from last.fm)
Services like last.fm, Pandora and imeem are popular because they use these tags to create radio streams that, unlike most terrestrial American radio, people enjoy listening to.
A couple years ago, before Pandora was available, I realized that I wasn’t listening to the majority of the music I owned; when I wanted to listen to music I usually thought of an artist rather than a type of music. In an effort to fix this, I took a day off attempting to create iTunes playlists that suited various musical needs. I tried to create a party mix. I tried to create a mix reminiscent of the 90’s or the 60’s. I tried to create an ambient electronic music group that I could listen to while working. Given the size of my library, it was tedious stuff, and never felt a step closer to being finished.
Yesterday I realized there’s a better solution: last.fm’s AudioScrobbler data service provides a way of retrieving tags for any given artist. The rest is creating a way of integrating that with my iTunes library. I did some searching and found that Wes Rogers’ Last.fm Tagger accomplishes a great deal of what I was hoping to do. It’s limitation was that it only took the foremost tag from last.fm and set that into the Genre field.
I’ve modified his script so that it compiles up to 20 tags, given a popularity threshold, and places them as a string into the Grouping field. Just select whichever files in iTunes you’d like to add the tags to and run the Ruby script (If you’ve selected thousands it may take a while!) After that, you activate the Grouping column in iTunes and then search for whatever you’re in the mood for. You can search for two or more genres to refine your search. And because users also often tag with context other than genre (where the music is from, speed, male/female vocalists) this really expands the boundaries of your search. It’s a bit like bringing the benefits of online radio to your local music collection.
Here’s to Wes for the MIT license, last.fm for AudioScrobbler, and the music taggers!
Download iTunes Multi-Genre Tagger v0.5.
Important Note: This will OVERWRITE whatever information is in the Grouping field of your music files. This field is nearly always empty, but you should check that nothing important is there before running this script. You will need a bit of terminal savvy and Ruby to be installed on your system in order to build the tags.
A gathering of commentary on Flash Player support of AAC/h.264
September 9th, 2007
Given the tumult of the change in my day job, it’s been difficult for me to keep up with the fallout of Adobe’s announcement of rudimentary support of AAC and h.264 codecs in a beta release of Flash Player 9. (For a start, you can read the formal announcement and/or the more technical explanation of the limitations from Tinic Uro, an engineer on the Player team.)
In the two weeks hence, there’s been a lot of talk about the implications. As far as I can gather, no major player in web video has made the beta player a requirement to any public-facing player, but it wouldn’t surprise me if we see this soon - YouTube may have name recognition, but undoubtedly the video-on-the-web market is a cutthroat arena with many competitors. Of course, offering h.264 support means a potential migration from the current status quo - that of On2’s VP6 codec, supported in Flash Player since version 8. On2 of course isn’t taking all of this lying down. They’ve released an FAQ that highlights how sticking with their codec is still advantageous in specific scenarios. There’s even a community that prefers to sidestep the Flash Player entirely in favor of streaming DivX. Some even see Microsoft’s impact on the decision. But all said, there’s little question where the momentum lies given the rabid response to h.264’s inclusion into the Player.
I’m excited to see where this goes. There’s already some interesting demos, write-ups and commentary on the subject and there’s certainly a lot of dust yet to settle, especially given Adobe’s related announcement of Flash Media Server 3.
For those interested in exploring the new technology, understand that there are some important limitations to the beta release. Most noticeable is that only a subset of h.264 movies are currently playable. A significant number of encoding tools place the index information of an h.264 .mov file at the end of the file - this needs to be moved to the front in order for the file to be playable in a SWF. Renaun Erickson has created an AIR application which attempts to do this for you.
For more information, begin with Tinic’s article, as well as an optimization note from Adobe.
Also a note on metadata support.