PLEASE SEE THE UPDATE AT THE BOTTOM
I’ve been working on a project of mine for the past few days that I had previously neglected. It’s called Beats.IO, and it’s a fun little tool for making music by writing code.
A whole bunch of years ago, I read an article called Hacking Perl in Nightclubs. I thought it was the coolest thing ever. It introduced me to something called live-coding, and in particular live-coding music. For the uninitiated, this is the idea of performing musical compositions by writing code, on the fly. Music and code are both things I love, so seeing them come together sounds pretty awesome to me. I dabbled a bit in this scene way back then, but largely ignored it ever since.
About a week ago, a friend asked me how Beats.IO was coming along. I was a bit embarassed that I hadn’t really maintained it, but that drove me to have another crack at it this weekend. I’ve added a bunch of new helper methods and some new features. There are docs, but here’s a rundown of the new stuff.
Now when you edit something in Beats.IO, your text gets encoded into the address bar, so you can bookmark it, share it, whatever you want. This comes with the bonus that refreshing no longer causes you to save your work, which can be useful when your sounds start getting a little hairy.
This provides a simple synth that just plays a single note. This is useful with sequencing commands.
A kick drum. Very simple, plays once. You should use it with bseq or bplay.
This is just a shorter way of doing PSequence(), which is used to set up a schedule of notes to play in synths, etc.
Plays a sequence on a node.
Equivalent to bseq, except with no sequence and loops indefinitely. This is most useful with bkick.
I want to keep building on this, adding new features and new helper methods, in order to make live-coding in the browser more awesome. I’ve been thinking of maybe adding Processing.js to get some visuals going, or maybe adding a visualization of Audiolet node graph. The most important things, I think, are to keep exposing more features of Audiolet as short helper methods and provide more built-in instruments for quick and easy live performances.
If you have any ideas, or would like to help out, please let me know! Beats.IO is on Github, and I welcome any and all pull requests.
2021 Update: Beats.IO is long dead. I let the domain expire years ago, and it’s now parked by someone else. The WebAudio world is full of much more interesting things than this ever was, so I encourage you to peruse the Internet for those cool projects.