Alternative title

So I explained my msc project to Amy who explained it back far better than I could have; “… it’s controlled by a human who types the sounds the computer tries to make that sound like a human trying to sound like some electronic music”. So now I want to rename my soon-to-be-finished thesis “A system for humans typing sounds that a computer tries to make sound like a human trying to sound like a computer making music, with software that acts like a human doing so”.

ASCII Rave in Haskell

I’ve been playing with using words to control the articulation of a physical modelling synthesiser based on the elegant Karplus-Strong algorithm.

The idea is to be able to make instrumental sounds by typing onomatopoeic words. (extra explanation added in the comments)

Here’s my first ever go at playing with it:

ASCII Rave in Haskell

For a fuller, more readable experience you’re better off looking at the higher quality avi than the above flash transcoding.

As before, I’m using HSC3 to do the synthesis. If anyone’s interested, I plan to release the full source in September, but the synthesis part is available here

Canntaireachd synthesis part two

Sounds a bit nicer now… This time with a smaller font and an exciting slither of my desktop visible. Sorry about that, see it a bit bigger over here


Frederic Leymarie and I have created a blog called SoundVis to document our research into the visualisation of sound and music. We’ll be adding our findings to it as time allows…

Canntaireachd for sinewaves

An early sketch of a system of vocables for describing manipulations of a sine wave.

The text is a bit small there, it’s better in the original avi version.

Vowels give pitch, and consonants give movements between pitches.

Inspired by the notation of canntaireachd. Made with hsc (Haskell client for scsynth). As ever, code available under GPL
on application.

I’m not sure where I’m going with this. It’s nice to describe a sound in this way but to use it in music the sound has to change over time otherwise it gets repetitive and therefore boring in many situations. I think I either have to develop ways of manipulating these strings programmatically, or ways of manipulating how they are interpreted. Both approaches would involve livecoding of course…


A new project:

The idea is to use festival speech synth to turn what people type into rhythms, giving them a simple multi-user interface for playing words together.

It needs flash 8 or later, but all of the interface is in good old HTML – I’m just using flash for the audio stream and server communication. The javascript and flash was made with the open source haXe language, so I didn’t have to install any dirty macromedia software on my computer.

Please play with it! All feedback very much appreciated. It’ll run until 14th April, after which I’ll release the sourcecode under the GPL for download, plus if anyone’s interested, a DVD containing the audio from the two weeks.

Relatedly, I was excited to find out about Canntaireachd, which is to bagpipes what bols are to tabla. I’m looking forward to getting my own articulatory synthesis working…

[update] This project is now finished, but I wrote a report on it.

Haskell supercollider tutorial

Rohan Drape has made a nice tutorial to getting his “Hsc” Haskell bindings to SuperCollider installed and integrated with emacs. It’s available here (link updated). This is exactly what I needed, I’m hoping to get started with some simple physical model synthesis this coming week.

20010203 (translated)

Peano weave applied to a slub classic for Ade‘s birthday..

Higher quality AVI available at

Programming in Haskell

Not really a review, just a strong recommendation… Graham Hutton’s Programming in Haskell is published mid January 2007, but Cambridge University Press are shipping already — I got mine just before Christmas and wish I had it earlier… It is by far the best introduction to Haskell I’ve seen, at least for someone new to functional programming such as myself. The chapters on parsing and and IO are a good mark of the book, together clearly yet stealthily introducing monadic programming in an easily digestible form. Well this book has plenty of other aspects I could praise, but like I say this isn’t a review, just go read and enjoy it yourself.

It’s great to read a really clear, concise text book, I could almost feel my brain re-organising itself while I read it. The experience reminded me of reading K & R after some months of confused C hacking, feeling everything clicking into place. That would be over ten years ago now, gah…

Peano curve weaves of whole songs

Some nine months ago I played with weaving images from music, including using a peano curve as a mapping.

I’ve returned to this subject, having many good ideas to explore from recent discussions with Tim Blackwell. We thought rendering some whole songs would work nicely. I didn’t fancy playing with my Java code again so wrote some Haskell, which I’m rather pleased with. The source is available (feedback welcome!). It does the the mapping using seeks on the output file, allowing impressive memory efficiency via Haskell’s lazy evaluation.

Some examples of some indie synth pop, disco, minimal techno (*3) and industrial gabba below, click on the images for the full versions but beware, they are rather large, around 5M each. Mouseover for the original track names.

Boy From School - Hot Chip At Last I Am Free - Chic Ping Pong - Plastikman Ping Pong - Plastikman (different curve)
Ping Pong - Plastikman (with some colours) Unborn Baby - Venetian Snares and Speedranch