My First App: How I built BitSynth

[People create apps for lots of different reasons. For some, it’s serious business. Others do it as a hobby, the big kid equivalent of building Legos. A few folks even make them for the same reason they run a marathon—just to prove they can. Have a first Windows Phone app you’re proud of? Email us about it (include “My First App” in the subject) and maybe we’ll spotlight your app and story next. –ed.]

I love making things, particularly things related to music. As an electronic musician, there’s nothing I enjoy more than building my own, weird instruments—circuit-bent keyboards, modified Game Boys, what have you—then watching them come to life in a song. It’s a strange hobby, I know. But I’m passionate about it, and it’s brought me many hours of enjoyment.

A few months ago, after noticing a lack of 8-bit synthesizer apps for Windows Phone (not surprising, given their niche appeal), I felt inspired to try and make my own. I’d never built an app before. Could I really do it? I had very little programming experience, and the few times I’d tried to learn in the past, it didn’t go so well. But I started sketching out some ideas anyway, and before I knew it, I was hopelessly attached to the idea. There was no turning back. It simply had to be built, and I had to figure out how to do it.

Reality bytes

At the beginning, I dreamt big. I wanted to create an epic synthesizer app. It would have a dozen or so preset sounds, a range of at least three octaves, tons of knobs and sliders to adjust every imaginable parameter, recording, sampling, accelerometer control…the works.

Sketch of BitSynth
Back of the napkin: Before sitting down at my PC, I made this little sketch of my future app.

But as it turns out, building an app takes time—particularly if you’re like me and have no idea what you’re doing. It quickly became clear that if I ever wanted my app to see the light of day, I would need to scale it back considerably.

So I simplified. I decided to focus on just a few features, and try to make those features awesome. For the keyboard, I created three simple sounds on my Game Boy and recorded each note as an individual WAV file. (That’s one note per sound, per key, which—as you’ll see below—equates to quite a few WAV files!) These samples would become the building blocks for my app. Press a key, and a sample plays.

BitSynth sound files

Old school grooves: I used my vintage Game Boy to record the sounds I ultimately used in my app.

Adventures in programming

A few months—and lots of confusing questions and cups of coffee later—I actually finished and published my first (and only) app. It’s written in the programming language XNA and called BitSynth. (Why that name? I just thought it sounded cool.)

BitSynth 1.0 was pretty stripped down compared to my original vision. It had just three different sounds, across a one-and-a-half octave keyboard. But I found that once I had the framework in place, it was a lot easier to add features to my app. So I kept working on it, and in another month or so, I published BitSynth 2.0, which is closer to what I had originally intended.

The latest version lets you switch between four sounds, play across almost three octaves, choose whether you want a sound to play briefly or continuously when you tap a key. It even uses the phone’s built-in accelerometer for some awesome special effects. Download it and give it a try.

You might be wondering: Can anyone build an app? I now believe the answer is yes, although it started an interesting discussion with my wife, who initially disagreed. She’s pretty smart—a lot smarter than me, honestly—but she hates math. She just couldn’t fathom that someone with an aversion to numbers could ever in a million years program anything. It’s true that math skills are important to programming—particularly if you want to build a game (which I’m hoping to do someday).

How the finished BitSynth looks

8-bit heaven: : Here’s what the finished version of BitSynth looks like.

But there’s still a lot you can do. I hear stories all the time of young kids building amazing apps. I’m no math expert myself—and definitely no young kid—but I think part of the reason I was able to finish this project is because there really are great tools and resources out there for people of all different skill levels (like these videos).

That’s not to say that learning how to program will come easy for everyone—it definitely didn’t for me. Building BitSynth took a lot longer than I expected, and in the end, I had to scale down my ideas considerably. I hit roadblocks, and more than once I had to ask a programmer friend for help. I even had to start over from scratch at one point.

Still, I finished it. More importantly, I had fun the entire time and learned a lot.

7000 downloads and counting

My download stats

So how did the world react? As of this writing, BitSynth has been downloaded over 7,000 times. I have a blast checking the Windows Phone Dev Center every week or so to see the latest stats and comments on my app from across the globe. It’s crazy to think that anyone can get on the Internet, download some free tools, and create something that thousands of people around the world use each day.

Programming an app was a stretch for me, just like writing a song might seem like a stretch for a professional programmer. But it’s good to step out of your comfort zone and try new things. I’m glad I did.

Have any questions for Andy? He’s happy to answer them in comments.