Wrong notes and syntax errors: The joy of improv in music and code
What can thinking like musicians teach us about game-making?
When I first began to learn the programming language Ruby on Rails from a friend of mine, he taught me by way of mimicry. My friend would tell me a phrase that would spit out a particular number or word; I would re-type the phrase and it would behave just the way he promised.
It reminded me a lot of learning musical scales as a child; I could copy my friend’s code, but I didn’t understand why the code did what it did, exactly, or how to use it in an original way. And yet, after only an hour or of my echoing my friend’s code back at him, he said, "okay, now just play around!"
My heart skipped a beat. "What do you mean, play around? Play around with what?"
"You know," he said. "Make up some code based on what you learned!"
Once I got over that initial burst of fear, I realized that playing around with code was the best part—just as it had been the best part of music, for me.
My mother can read music for the piano as easily as other people can touch-type. She can look at a brand-new piece of music and play it note for note on the first try. Her playing is so emotive that once when she accompanied my singing at a school talent show, a piano student in the audience approached my music teacher not to commend my voice, but rather my mother's performance. "I want to learn how to play piano like that," she gushed, paying no mind at all to whatever forgettable '90s pop hit I had attempted.
I, too, wanted to learn how to play like that. Some of my earliest memories are of scrambling onto the piano bench and plunking out my own tunes. I didn't yet know the official chord constructions, but I learned which notes "sounded good" on my own. I couldn't read music, so I made up my own songs or mimicked songs that I heard. My musician parents praised my "good ear," excited by their daughter's budding talent.
But when my piano lessons began, I couldn't seem to learn how to read music.
I had three different piano teachers over the course of elementary school and middle school, and I didn't get on well with any of them. I wanted to learn harder pieces than they would give me, but I couldn't read music well enough to move past beginner-level songbooks. At home, my mother and I struggled through my assigned pieces measure by measure; me biting back frustration, her swallowing disappointment.
The part of coding I enjoy less often revolve around small, frustrating details, like the way one misplaced digit can cause anything from an ugly error message to a complete program breakdown. I spent about an hour recently tearing my hair out as I trying to find the source of a broken macro in a game I'm making until I finally found the mistake: I had omitted a single letter, and misspelled “cycling” as “cyling.”
People have often told me that because of this unforgiving precision, writing code is very different than other forms of composition like writing music. Music can’t give you an error message, they say. Ha! These people did not learn how to play music in the house where I grew up.
In order to force me to learn how to read the notes correctly, my mother would stand behind me as I played through a piece. As soon as I missed a note or flubbed a rhythm, she would halt my execution—just as a computer does with a bad piece of code—with a soft "no." I would try again. Still wrong. "No." I would grow more infuriated with each mistake, each "no." It would always be some small error that I had missed, a sharp, a flat, a key change gone unnoticed. A syntax error.
When my mother wasn't home, I would "practice" for hours. My father didn't know how my assigned pieces went. I would open my music folder and write a song from scratch that sounded more or less like Mozart or Bach. He would tell my mother, when she came home, that I had played all afternoon and that it sounded beautiful. But she knew my trick. She'd remind me that I had a lesson to prepare for, and I would return, grim-faced, to the painstaking, teeth-pulling slowness of recreating Mozart.
Classical piano is not just about recreating pieces exactly as written. There is an art to dynamic changes and style and tone and performance. Playing Mozart well takes great skill. But it just wasn’t a skill that I wanted to learn, at least not past a certain point. I didn’t just want to iterate upon someone else’s patterns; I wanted to write my own program, build my own patterns. Even if they were not very good. Not at first, anyway.
At age 12, I quit my piano lessons. At 13, I joined a rock band.
I've been told that most of the creative quandaries in music composition cannot be applied to game-making. There is limited jazz in writing code; you cannot put two phrases next to one another that do not "go" together. There are some rules that must be followed or else the code won't compile. You cannot be experimental or dissonant when you are writing code—not like with music, or so I keep hearing. After all, a song cannot be broken. A song cannot fail to load, they say. A song cannot crash.
Game developers have a history of distancing themselves from a tradition of artistry, and instead associating themselves with the utilitarian work of architects and software developers. I often hear developers downplay the artistic elements of their games, hand-waving their work as little more than organizing numbers in spreadsheets or fine-tuning the textures on a tree in a single area.
How must these utilitarian game developers think that other art is made? How accessible and romantic and unplanned do they imagine the creation of sculpture and dance and painting to be? Do they think it's that easy to knit a picture on a sweater? I can promise you, that can't be done without a design. A plan. A system.Even the kinds of music that often characterized as the most impromptu or improvisational—jazz, punk, experimental—often have their own distinct sets of rules, and the ways they seem slapdash, dissonant or spontaneous happen very much by design.
Creating art and music is not just about the glamorous act of being inspired and pouring out your soul. It, too, is rife with the thoroughly unromantic grind of production and editing and refinement and polishing. The grueling march of notating, measure by measure, every single note that every instrument must perform, and at what time, and in what way. The rote memorization required for performance. The expectation of acknowledging an existing "canon," even if only to rebuke and subvert it. And even when the code loads or the right notes get played, all art can fail, in its own way. That's exactly why creation is terrifying.
But that shouldn't stop us from moving past iteration into the world of improvisation. Learning music as I did as a child—echoing, mimicking, and repeating upon the established patterns of our predecessors—can be valuable, but I’ve found it’s a lot more interesting in both music and code to play some original notes, even some “wrong” notes and see if they sound “right” to me.
Mii Channel Markov generates melodies similar to, but never likely to be mistaken for, the Mii Channel theme. Made with Band.js and my own markov generator, Markov.js. All transcribing of the original music was done by hand, with help from Pianoletternotes. It sounds like it’s trying to figure out the launch codes. When you hear […]
Alexey Rom sequenced (arranged?) the disco classic Rasputin for an 81-key Marenghi Organ that was in existence at the same time as Russia’s greatest love machine. Now there was a cat that really was gone; it was a shame how he carried on. The original, for reference:
Judy Blume is Amanda Palmer's ballad in honor of the author's 80th birthday, celebrating her decades of service in helping young women to navigate a world that labels them as crazy and vain, the nagging sense that it's "just me": "The experiences of her teenage characters ― Deenie, Davey, Tony, Jill, Margaret ― are so […]
Trains may not be the most popular means of conveyance nowadays, but chances are you grew up playing with toy trains or building a model set to wrap around the Christmas tree. In either case, it’s safe to say that locomotives have long carried a unique sense of awe and scale, especially when they’re hundreds […]
When it comes to redesigning or renovating a living space, envisioning changes before they occur can be tricky for most. Thankfully, the web is home to tools that can remove some of the guesswork, like Live Home 3D Pro for Mac. This app lets you create detailed and furnished floor plans for everything from sheds and […]
For many startups and fledgling businesses, web hosting — and the fees associated with it — can take a sizeable chunk out of the company budget and limit growth down the road. But, that’s not to say there aren’t hosts out there who can get your site online while staying within your budget. Arch Hosting is a […]