Textual patching

I wrote a perl script that allows you to compose puredata patches in a text editor. You define the patch using ASCII art like this:

   *------------------------*
   |           .--------.    \
 .-x--------.  | osc~ 5 |     *
 | osc~ 500 |  `-x------'     |
 `-x--------'    |            |
   |           .-x------.     |
   |           | *~ 300 |     |
   |           `-x------'     |
   *---*         |            |
       |         *------------*
     .-x------.
     | *~ 0.2 |
     `-x------'
       |
       *
       |\
       | *
       | |
     .-x-x--.
     | dac~ |
     `------'

Then run the Perl script over it to produce a .pd file, that you can then load into puredata to get this:

patch.png

The ASCII syntax basically allows you to define pd objects and connect them together. Layout is preserved. Much like in ghostbusters, you can’t cross the lines, and there isn’t syntax for different box types (messages and numbers). Fixing this would be short work, but I ran out of train journey :)

There is a particular syntax for drawing the lines. You use for going left and right, | for going up and down and \ and / for going diagonally. To change direction or fork a wire you have to place a * . Mark inlets and outlets with x .

I think this shows nicely how there is no real difference between patching and coding. Shades of pixels are an alphabet, anything can be a program if you define a suitable interpreter to go with it.

Sadly you can’t do live patching with this, but perhaps this could be a starting point for thinking about more interesting ways of programming with text.

If you are curious you can download the script (and patch) here.

Vocable bugfix

Apologies to those who weren’t getting any sound from vocable, here’s a version with a quick bugfix from Rohan Drape that makes sure control buses are properly initialised. It should work for everyone now. Thanks Rohan!

By the way you might notice that vocable records everything you do under the ‘logs’ directory.  I’d be really interested in seeing your log files and the dorky words and funky rhythms you are typing in.  Please send me a copy if you don’t mind — don’t be shy now…

MSc Thesis: Improvising with Synthesised Vocables, with Analysis Towards Computational Creativity

My MSc thesis is here. The reader may find many loose ends, which may well get tied up through my PhD research.

Abstract:
In the context of the live coding of music and computational creativity, literature examining perceptual relationships between text, speech and instrumental sounds are surveyed, including the use of vocable words in music. A system for improvising polymetric rhythms with vocable words is introduced, together with a working prototype for producing rhythmic continuations within the system. This is shown to be a promising direction for both text based music improvisation and research into creative agents.

More vocable synthesis

Another screencast, a short one this time, which I’ve been using as a demo in talks.

Openlab this Sunday 25th Nov

I’ll be talking about my adventures with vocable synthesis  at OpenLab 4 this Sunday.  Openlab are a collective of people doing artistic and musical things with (or as) free software, putting on top notch free events such as this.

Full details here:

http://www.pawfal.org/openlab/index.php?page=OpenLab4

Vocable source released

The haskell source for my vocable synthesis system used in my previous screencasts is now available. I’ve been having fun rewriting this over the last couple of days, and would appreciate any criticism of my code.

Thank you Graphviz

I love graphviz. You feed in data in a simple, easy to generate format and it creates the most beautifully laid out visualisations from it.

I’m trying to make a triangular waveguide mesh, and wasn’t sure if my code was doing the right thing, so ran neato over the data and got this:


full size image .dot file

I didn’t tell it to lay them out in a hexagon, it just did because it was the simplest way of doing so. I then tried manually adding extra connections


full size image .dot file


full size image .dot file


full size image .dot file


full size image .dot file


full size image .dot file

More vocable synthesis

Another screencast:

As ever, feedback, both positive and negative is very much appreciated!

Looking forward to the final printout

My MSc project is gradually coming to a close… I think I finally have some software that I could improvise with, which I’m going to give it a trial run at the dork camp next weekend. Still a lot of writing to do around it, and only a couple of full days left to do it in, but I think it’s doable.

The user interface for my system is basically GNU readline, a really nice, featureful way of working with lines of text so perfect for improvising line-based textual rhythms. I foresee many people suggesting pretty GUIs but hey… This project is all about the expressive power of letter combos, that goes for keypresses as well as vocables.

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”.