Being a musician is what brought me to computing in the first place. I tell prospective employers and clients ‘computing is my other guitar’ and it goes over well. It also happens to be true. Within 5 years I see myself working in pro audio, or perhaps writing some sonar computer vision type wizardry. Of course, I’ll also be making and performing music on a regular basis for the rest of my life.

So my interest brought me to SuperCollider and the like, but I lack classical math training. I dropped out of high school and didn’t even develop serious tech skills until I was 22 or so.

The concepts of DSP are implicit in working with SuperCollider and making music in general. Though I have long felt I needed a more explicit understanding, at the same time I felt daunted about teaching myself math as it relates to DSP the same way I’ve taught myself to code. I dunno what my block was, but I’d always lose momentum. Perhaps I wasn’t driven by the same obsessive curiosity. I have glossed over and understood it conceptually, but if I’m gonna do the kind of work I want to end up doing I’m going to need to walk through the concepts step-by-step and internalize them.

At a Clojure meetup recently, I mentioned my interest in DSP and lamented that I was gonna have to figure out some way to get to school in order to get the math I need. A fellow attendee said “Oh you can teach yourself that too.”  and told me to read the book ‘Understanding Digital Signal Processing’ by Richard Lyons. He told me it lays out all the math concepts you need and it’s very easy to digest without a prior background.

So far I have found that to be true, and I’ve got the momentum I’ve been searching for. In addition to taking notes, I’m gonna write code that demonstrates to myself the ideas being presented.

I’ve published my first such exercise on github:

https://github.com/beatboxchad/dsp_exercises/blob/master/muzak.c