Smackathon Winner: Smule Drums – Best Vision
Smackathon Winner: Smule Drums – Best Vision
The inspiration for “Drums” arose mostly from a desire to build it as the next Smule app. Anyone whose ever enjoyed dancing or tapping their fingers along with the beat will appreciate the pleasure of moving to the beat. It just seemed like the next logical addition to the Smule portfolio.
Design principles:
1) Be simple and intuitive so that anyone can play
2) Sound good–even for users with no musical experience
3) Enable and encourage expression
4) Allow collaboration with other users to enhance and create songs
Read on to hear what we came up with.
After percolating on these ideas, we eventually settled on three core game mechanics:
- TAP – Tapping on the screen will trigger a drum sound. This creates a simple, intuitive hand-drumming interface. It’s pretty standard stuff, and even your Mom can figure out in a couple seconds.
- HOLD – Holding down a finger will cause a drum loop to start playing in perfect time to the music. Hold down two fingers, and you’ll hear two loops matched together. For example, one loop is playing the kick drum, and one loop is the snare.
- SWIPE – Swiping a finger will trigger a drum “roll” or “fill,”perfectly in time with the music. The swipe is a simple, dramatic gesture, and so it seemed naturally suited to triggering a dramatic music event like this.
Even if you have no rhythmical TAPPING ability, you can use the loops and fills to be expressive and musical just by changing which loops you’re playing.
We added “guide notes” (similar to Guitar Hero) to help suggest when the player might want to play certain drums, but they are just suggestions. This video gives a sample of what it looks like:
In the demo song here, we used a sound-alike backing track for “Call Me Maybe”, but this can just as easily be any backing track from Sing! or shared performances from Sing!, Guitar! or Magic Piano.
Nuts and Bolts:
From our experience using Java Native Interface, or JNI, and OpenGL we knew they performed well. However, development times with these technologies are much slower, sometimes painfully so. Because of this we decided to minimize our usage of JNI and OpenGL to enable faster prototyping, and to discover exactly what performance bottlenecks we would encounter with the Android framework. This has the added bonus of helping to inform our future Android development efforts.
Indeed, we did have issues with frame rate on some devices, even with our simple graphics. More importantly, we ran into problems with touch latency. Because by nature drums are a very “timing critical” instrument, excessive touch latency is harmful to the experience when attempting to play fast or complex drum parts. Fortunately, we can still create a satisfying musical drum experience with simpler, yet challenging, drum parts. Hard-core “digital drummers” looking for an intense experience on mobile will have to wait for hardware to improve. <sad panda>
Looking forward:
The proof of concept was successful, and gave us valuable feedback on how to move ahead without getting tripped up by hardware limitations. Thanks for reading!
– Jon Moldover, Smule Software Engineer and Client Lead
Team Drums: Amanda Chaudhary, Devin Smith, David Young, Jon Moldover, Nicole Borrelli, Oscar Corral, Randal Leistikow and Yana Kunitskaya. Special thanks to Anthony Urso, Turner Kirk and Nick Kruge.