Friday, June 17, 2011

The Song Remains the Same

We are currently in the process of creating a version of Stealth Bee Jam for iPhone and iPod Touch. The changes to the application itself will need to account for the smaller screen size of the iPhone and will have an impact on way you jam to the songs.

Along with the changes to the application engine itself, the songs must be modified to accomodate the new form factor as well. For instance, we currently present all three instruments, each having 18 Riff buttons and 11 Single Note buttons.  If we were to squeeze all that on an iPhone screen, you'd need a magnifying glass to see the buttons and fingertips the diameter of a #2 pencil.

So to accomodate this, we're choosing the best 12 Riffs and 7 Single Notes from each instrument to present on screen.  And you will swipe the screen to move between instruments and the looping tracks. Ironically, we had this UI designed waaay back when we started, only to switch gears and develop the iPad version first.



The need to retool the songs presented the opportunity to clean up the way we put the songs together in the application.  No secret, but we use an XML file to describe how each Riff, Note, and Loop is played in relation to the foundation of the song. Generating this XML file is a delicate dance to ensure data integrity as well as the fidelity of the song. Over the course of development, the method for generating the song XML files have had its share of patches and hand-coded exceptions -- all this makes for a not-very-reproducible process and one that is prone to human error.

It took some deconstruction, reconstruction, trial and error, and a lot of head-banging-on-the-desk, but we were able to streamline the process enough so that now if we have to make an adjustment (for instance tweak the volume of a Riff) it's no longer a 90 minute trip down frustration lane. In fact, regenerating a song's XML now takes less than 10 minutes and is pretty much error free.

The big benefit is, going forward, new songs will be even easier to code up.

0 comments: