by Giles Bowkett

Are you a hacker who likes to make music?

You know how you feel precise control when you write code you understand, but you have to filter your understanding of your music through oversimplified GUIs which sometimes have terrible UX?

I made a series of videos which teaches you how to write music sequencing software in Node.js and CoffeeScript. When I do it, I experience a clarity which makes it easy for me to make more exciting sounds. You might discover the same experience.

For instance, I wrote a probabilistic breakbeat sequencer in Ruby a few years ago, a drum machine powered by artificial intelligence, which implemented several rare and powerful features. It allowed you to specify a template for the type of drum rhythms you wanted it to create, and it would then create a literally infinite stream of matching rhythms with their own endless, subtle variations. It also allowed you to move easily from spare, stripped-down versions of a rhythm to a full and complete stack of layers, and it had live-coding features.

In upcoming episodes, I'm going to show you how to build a system just like that, but with more understandable code, and much tighter timing and performance. The episodes I have for sale so far lay the groundwork for that system. I'm surprised but happy to say that my experience writing MIDI sequencing software in CoffeeScript and Node.js has been much more pleasant than my experience doing the same in Ruby. This video series shows you why and how.

One word of warning: all these videos are NSFW! Hopefully, that doesn't bother you, but if it does, I want you to know about it upfront, rather than getting an unpleasant surprise. (I was originally going to call this series Fuck Yeah Hacking, but I changed my mind.) By the way, if you need anything, it's easy to get in touch with me. Also, I guarantee all my products: you can get a refund at any time for any reason.

Video 01: JavaScript Music

An introduction to the series, where I show you the fundamentals of MIDI and how to control music software and/or hardware from Node.js and CoffeeScript. Also includes how to use MIDI to control GarageBand, which comes free with Apple computers, and a debugging footnote about how to solve common MIDI problems on OS X. 35 minutes.

Video 02: TDD With jasmine-node

How to do TDD with CoffeeScript and Node, using the jasmine-node library. 10 minutes.

Video 03: A Simple Drum Machine

I build a simple, non-looping drum machine on the command line in CoffeeScript via Node.js. I use a minimal, functional approach, and then clean up the syntax, to make it easy to understand how the math translates into music. Code included. 25 minutes.

Video 04: Adding Tests

I add tests retroactively to the code. More about how to use Jasmine on the command line, which I enjoy a lot more than Jasmine in the browser. Code included. 15 minutes.

Video 05: Looping, And Cleaning Up The Code

I clean up the code from previous episodes, and add the ability to play drums continuously in a loop. Code included. 16 minutes.

Video 06: A Melody Is Composed Of Motifs

A tangent where I explore the concept of melody from the perspective of object-oriented code. No programming in this episode, only music-making. 11 minutes.

Video 07: Controlling A CSS3 Animation With MIDI

I use and jQuery to control the speed of a CSS3 animation on my MacBook screen by turning a knob on a physical synthesizer on my desk. Code included. 16 minutes. Free bonus video shows you exactly how the CSS3 animation works, and deconstructs it into a quasi-object-oriented form which is easier to understand. Free bonus video is an hour and one minute long.

Video 08: MIDI Note Off And Simultaneous Loops

I add MIDI note off messages, enabling me to control a bassline as well as drums. Then I enable the code to play more than one loop at the same time, getting it to play both bass and drums together. Code included. 22 minutes.

And Now A Book!

Check my blog for the new book!