Still at the point of being a tech demo, but my latest text-to-screech project has moved forward a little. Here you can see speech sounds controlled by Max 5 piped into PureData. In Pd, I'm using some old tricks with the 'freeze' function in freeverb plus some pitch shifting to further play with the sound. As a potentially interesting wrinkle, the effects in Pd are turned on and off by the words typed in Max: 'reverb', 'freeze' etc.
There are any number of ways of working with the built-in text-to-speech synthesis capabilities on the mac. All of the music programming languages I use - Max, Pd and SuperCollider - offer ways of doing this, and I've also had great success with controlling the output using AppleScript. The problem is that in every case, the audio itself is actually synthesised by the mac os itself, which means it is not accessible within an audio environment for further processing.
I was inspired to have another think about this recently by a thread on the SuperCollider list where somebody was trying to do exactly this, by using Jack to route the sound from the mac back into the application for further processing. What I've started to experiment with is routing the audio into a different application: in the example above, controlling the speech synthesis in Max and passing the audio into Pd. Combined with the facility to pass midi from Max to Pd (easy), I think I can see how I can make a workable and potentially interesting system. But, for now, just proving to myself that it can be done :)
Another way of doing it, using the sc3~ object. I can't quite make up my mind at the moment which is the way forward; this way it looks like you'd have to develop your code in SuperCollider, then paste it into Max and hope it still works… have a feeling the OSC bridging method is more generally useful, for instance, could use it with Pd as well. On the other hand, this way it's all together in the one patch in a single program, to run it you don't need SC installed, probably a lot easier to deal with when you come back to it in five years time…
I guess it's just possible some people might not get what's going on here :) SuperCollider is a very powerful text-based programming language for sound. If you know what you're doing, then with just a couple of lines of code you can create really fascinating sounds and textures, even entire compositions; see for instance sc140, an album where each piece is created using just a twitter-long 140 characters of code.
Unfortunately, I don't know what I'm doing; my mind doesn't seem to work logically enough to really do computer programming properly! Enter the other half of the equation, Max 5 (or Max/MSP as it used to be known). This is a graphical programming language, which allows you to make stuff happen just by plugging things together on the screen.
I've got quite good at Max, and sometimes managed to make quite interesting sounds in SuperCollider. I found the missing link between these two on a great blog posting by Fredrik Olofsson. It's a way of using a so-called 'quark', a type of extension to SuperCollider, to send OSC (Open Sound Control) messages from Max to SC. So, what I'm happy to have found here is an easy way to attach knobs to these hard-to-get-at text based sounds. The next step from here will be controlling SC using external midi/bluetooth/whatever hardware, again via Max.
Having some free time over the Easter break, and in preparation for taking part in a performance of Cage's Musicircus at Tramway on 30 May, I've been playing with the Lexicon MPX 100 effects unit which Allan Neave gave me, feeding it back into itself, which works particularly nicely on the pitch-shift-plus-delay patches. At the same time I've been working on a Max patch which drifts five-note chords gradually through a modulating set of hexatonic regions, so… without really meaning to, I ended up putting together a sort of ambient track combing the two;
This is the sort of thing where there's probably a video out there already explaining it, but as I ended up figuring it out myself anyway, I thought I might as well make my own video… This is how to send midi information from Max/MSP to Logic Pro, in particular how to use Max to control the automation parameters of a softsynth running in Logic. Probably best to watch these fullscreeen;