Tuesday, September 15, 2009

Becoming a music technologist

There are a lot of people out there who use music production tools for their art and dream of new ways to work, or have ideas for new sounds that they can only hear in their mind, or have thought of a revolutionary way to approach the process of sound synthesis, or sampling, or effects, or composition...

I am one of those people, and I have come to a point where I feel comfortable firing up a software project and putting pen to paper with a new idea.  But I also know what areas of my knowledge need work, which is of course the most important question of all.  I remember when I had no idea where to start.  I remember how overwhelmed I felt when the idea of creating tools seemed unattainable.  But by taking careful steps with the help of some fantastic people and a share of lucky breaks, I've acquired a set of skills that will help me as I continue the journey.  So for anyone with similar interests I think I should explain a bit about what I do and how I got to this point.
What I do:  I've been working as a programmer for just over three years.  The first two were for Audio Impressions, where I developed some VST plug-ins and a big windows app called DVZ RT.  It was a really cool experience and I learned a lot about how software is made.  For the past year I've been working for a really cool software outsourcing company called Art & Logic.  I found them when I first started looking for programming jobs, but decided to save that application for when I had more experience.  Serendipitously, just after I left Audio Impressions to intensify my studies in Computer Science (more on that in a bit), Art & Logic found me!  I primarily work on the Beat Thang drum machine, but have done some consulting on other projects related to music, audio, and other multimedia applications.  Now I'm about to start the MST program at Stanford, and I'll probably be leaving Art & Logic to focus on that.  I'd like to stay on-board to do a dash of consulting, but that is up to some higher-ups.

How I got to this point:  It all started with a love of electronic music and a really bad attitude towards school.  I was a crappy student in high school, especially in math, and my collegiate options were pretty limited.  I only applied to schools with music tech programs (CalArts, U of Oregon, Berklee, Oberlin, U of Michigan, U of Miami).  I was accepted to Michigan, Oregon, and Berklee.  I went to Michigan.  Looking back I think I should have gone to Oregon, because I hated Michigan.  I hated the stuck up university attitudes, the arrogant professors, the cold weather, and the damned math requirement.  So I reapplied to CalArts, which was close to my home town (Los Angeles), and they let me in.  Problem solved, yay!  Except for one thing....

CalArts, wonderful place.  Full of diverse, interesting, and passionate artists who want nothing but to be able to make art.  It's sorely lacking on the general education side, which shouldn't be a problem for most--in particular older undergraduates with prior education and of course grad students.  For the average age college kid, however, it's a curse.  Oh well.  Problem for me was CalArts was where I got into engineering.  I'm not exaggerating when I say that CalArts is the absolute worst place to take up engineering, except for the fact that you have plenty of free time to figure stuff out for yourself.  And that's exactly what I did.  I took a C programming class and then taught myself how to code in C++, create VST and Audio Unit plug-ins, make user interfaces, and a bunch of other stuff I became obsessed with.  My teachers, in particular Miriam Kolar and Mark Trayle, my friends, in particular Cooper Baker and Tony Cantor, and the fine folks at the KvR Audio DSP and Plug-In development forum helped me immensely along the way.  Constant hacking from late 2004 till I graduated in spring 2006 produced a portfolio that landed me the job at Audio Impressions.

Audio Impressions (AI) definitely took a risk in hiring me.  They wanted someone with hands-on experience coding VST plug-ins, rather than a computer science graduate.  And clearly they wanted someone cheap, but don't get me wrong, I was fine with that.  Scoring that job was pure elation.  I owe it all to Stan Bartilson, the "chief software architect", who had decades of experience but nonetheless offered me the chance to prove that a dedicated hacker can learn to do anything, as long as the focus and passion is there.

As it turns out, I'm not so sure that wanting it is really all it takes to be a great software engineer.  There's a reason why there is a branch of academia called Computer Science, which is separate and distinct from the Computer Programming.  The latter relies heavily on knowledge of the former, and, as with any science, the academic environment is best suited to learning.  Not to say that it can't all be picked up in the field, but as soon as I had to have conversations about optimal data structures, search and sort algorithms, and assembly language programming, I pretty much immediately enrolled in computer science and math courses and split my time between work and school.

And so, the crappy student who avoided math like the plague got into engineering at an art school and wound up voluntarily enrolling himself in math courses.  LOTS of math courses.  I picked ones that seemed to be essential to DSP and computer science:
  • Pre-Calculus
  • Differential Calculus
  • Multivariable Calculus
  • Linear Algebra
  • Discrete Math
And as for computer science, I figured I should take all the necessary courses needed to fulfill the breadth requirement for application to UCLA's C.S. Master's Degree
  • Computer Architecture
  • Data Structures and Algorithms
  • Computer Organization
  • Programming Languages
  • Operating Systems
  • Formal Languages and Automata Theory
  • Software Engineering
As you can see, I loved this stuff, at least enough to split my income in half for 2.5 years to pursue it.  I found my calling.  I was going to get a masters in Computer Science.  Then I looked in to the fields of study within computer science: Human Computer Interaction, Computer Vision, Artificial Intelligence, Security, Databases, Networking, Theory.  And you know what?  None of that had anything to do with music or audio.  I could have made my way through one of those areas and applied it to music technology, but in the end I would have ended up going down a much more travelled path.  And if you ask me that's boring!


As far as I know, the MST program at Stanford is the only music technology program that provides the theoretical rigor I am craving, as I already have the fundamental background and engineering prowess, and I'm not looking to make art in an academic setting.  So it was the only program I applied to.  I'm in, I'm thrilled, and classes start in 6 days!

No comments:

Post a Comment