Wednesday, March 7, 2012

Music, Running, and Creating

Earlier this week, Christopher sent me a link to a video presentation by inventor Bret Victor. I found this particular talk to be brilliant and entertaining. Most important, it inspired me into doing something different. How this happened I can not say. One minute I was walking the dog and thinking about the video, and the next minute I was wondering about... running.

Huh? If you are looking for the thread of this post, hang in there.

About a year ago I started running. At the time I was terribly out of shape and coming out of a crazy stressful set of commitments which consumed way too much time. I took the end of that as the start of getting myself back together: eating better, losing some weight, getting a lot more exercise. It's turned into something bordering on obsession as I am now training for my first marathon and don't hesitate to run at 6am in the dark and 10 degrees.

But I digress...

Along with running I have developed an interest in minimalist or "barefoot" running. One of the tenets of this mode is that you need a high "turnover" rate, as measured in steps-per-minute. The idea is to reduce time in the air and impact by using shorter strides at a higher frequency. The problem is that this is actually pretty hard to do, because runners have a basic form, and adjusting it can be a bit uncomfortable. The ideal rotations translate into 180 steps-per-minute (SPM) for accomplished endurance runners.

For reasons I can't explain, something in the video caused me to start thinking about timing and feedback and rhythm and...running. The next thing I know I am off on a hunt for music that has the "ideal" beats per minute (BPM) of 90 (two steps per beat) or 180 (one step per beat). This is actually a pain. The music is random lists by others who found it, how exactly???

From there I am discovering that DJ's actually use BPM data for tracks to blend them without interrupting the flow of the dance (duh, I don't go to many dance parties obviously).

Where do they get this data? Software! Inexplicably, lame music tools like iTunes don't provide BPM data analysis (booh!), but there are other tools that do, like MixMeister.

And magically, now I have a list of songs from my digital library that match the correct tempo to train for barefoot running. Create a playlist, and away you go!

At this point, somebody is expecting me to start writing about Fourier Analysis and codecs, and how I hated the fact that these tools don't actually do a great job of interpolating the BPM data, nor do the free ones inject it into the metadata of the audio file so that iTunes can display it. Well I'm not going to, hah!

The key to this experience was the speed at which the idea occurred and that I could get feedback on whether it worked (it does for me). If I had to build my own waveform analysis code, then study audio decoding libraries, and finally how to write audio metadata, and then choose what tools to build it with, and write, compile, and test it. Oh dear, I don't have time for that next run, do I???

The lesson for me here was that the speed with which I could think of something and then try it out mattered a lot. As Bret said: ideas are precious. Too many barriers kill them.

As software developers, we should try to remember that what we design for users will control how they use it, probably more than we would like. As users, we should rebel against those constraints. As both developers and users, we should strive to bring software to the point where our end users feel like the tool is enabling them to create their ideas, not defining the boundaries around them.