 Hello. Sorry about the delay. Well, this will have to be a speed run. As I've gone around the camp, it's surprised and intrigued me how little the image you're looking at has been recognized. So if you don't recognize it, I guess this talk will do some good. Housekeeping, my slideshare address is on pretty much every slide. And if you search for it, you will find it. You'll probably need to download the slides to get the links. So I'm going to skip the anti-musical disclaimer. It's 1963, and one Edward Lorenz is playing with a simplified model of convection currents. So we have three variables, x, y, and z, and the nasty intimidating maths, perhaps at the top, just says how the rates of change of those quantities depend on each other. And there are some parameters. Beta is the one at the end that's interesting, because it describes how chaotic that system is. Now, there are no analytical solutions, by which I mean if you wanted to have an equation that said how x varies with time, you can't have one. You can only simulate the system with numerical approximations. And it's the apple on Newton's head moment of dynamical systems. Mr. Lorenz is playing with the system. He pauses it. He restarts it. He types in his three starting coordinates again, slightly truncating a couple of decimal places, and he observes that the system behaves completely differently to the way it was before, so we have very sensitive dependence on initial conditions. Let's truncate the maths as well. Suffice it to say, the means by which you solve these equations is not all that hard. Don't use Euler's method. Use the fourth order, orderunga cutter. So fourth orderunga cutter, we've solved our Lorenz attractor equations. We've plotted them out, and we've got two initial coordinates differing very, very slightly. And you can see that very, very soon, the two traces have diverged completely, and are doing different things. And we'll skip my soggy nostalgia as well. So I want to sonify that. I want to know what that sounds like. So I'm going to have three arbitrary rules. As many of the degrees of freedom, it's a good word we learned from the last talk, should actually be influencing the sound. And it should be the chaotic system that's influencing the sound, not any arbitrary choices I might have made. And it ought to sound the way it looks. So three variables, two sinusoidal oscillators, because we've got two ears. The frequency of those oscillators will be modulated by a choice of two of the variables. And those oscillators will themselves be frequency modulated by other oscillators. And their frequency will be chosen, or rather, will be controlled by another of the variables. And we'll have the x variable doing stereo panning. Now how did I implement this? I did not use Super Collider. I did not use C sound. I did not use Chuck. I definitely didn't use pure data, because they're all in music. They're domain-specific languages for musicians. And if you had gone through my other slide, I'm not one. I want all the abstractions of a regular programming language to make my noises with. I don't want to think in terms of various musical concepts. Thank you very much, because I must stress, because I'm utterly incapable. I did it in JavaScript. I became aware of the Web Audio API by some BBC demos, recreating some of the toys from the BBC Radiophonic Workshop. Please examine the work of Delia Derbyshire beyond the ruddy Doctor Who theme tune. So you can draw the attractor with scalable vector graphics. It's dead easy to specify the signal path. So left modulation oscillator controls the left modulation gain, which can modulates the left oscillator, et cetera, et cetera. You just declare how you want your signal path to be put together programmatically and without further ado. And I hope this guy's browser is Chrome. Can we have a laptop audio, please? And there it is. It doesn't. But do you know what's missing? To be truly evocative of the persistence of vision of the trace, what we need is some echo, which I shall. There we go. Actually, I'm just spinning you along. Everything sounds good with delay on it. So for yourself, I'll be having much time. I'm going to briefly make it less chaotic, because we need a lot less chaos in this room at the moment, I think. Not as chaotic to hell with all the chaos. There are Tua retractors and Rosler retractors, but you can play with those for yourself. I think we get the general idea. Let's see. But why was I picking sine waves? And my animated gif's not working. Never mind. What you should be able to see is a buildup of a Fourier series where more and more harmonics are added till the sine wave becomes increasingly square. So there are lots of interesting harmonics in your square wave. Therefore, if you filter them with a low pass filter, you'll get nice low pass filter type sweeps. And it'll sound cool. And you can also modulate the pulse width. If you try and filter a sine wave, well, you'll probably just lose the sine wave. Imagine my horror when I found out that this had already been done. The composer Mike Hunter has translated several different chaotic attractors into sound using the software Mathematica 7. Winters map the dimensions of Lorenz, Rosler, and Turo tractors to frequency, amplitude, and origin of the sound. The following example is a Lorenz attractor with x, y, and z dimensions mapped to spatial position, frequency, and amplitude, respectively. Do you know I liked mine better? Honestly, I never wanted a modular synth. What I always wanted was an analog computer. If you go to evil physicist school, you get taught that you can represent AC circuits as differential equations. Therefore, you can represent a differential equation with an AC circuit that does and performs the integration of the variables for you and a nice man at Harvard has gone and designed and distributed said circuit. And I made one. I'm not going, if you can find me afterwards, I can tell you about the various problems and how much of a cheap op amp you can get away with. I wanted to have my analog computer making real analog sounds. And that took a while. So as a stop gap, what I eventually gave out a deep sigh and did, all right, I'm going to have Python numerically solving the equation. I'm going to use it to drive PyGames MIDI module. It's going to sound terrible. It's going to be quantized to 128 values, which is sort of against the whole spirit of the thing. But we'll have the x variable playing one synth with the y and z control doing wave shaping and filter cutoff. We'll have the y and z variables going to another synth with this done with the x variable controlling the filter. And just because why not, let's have a kick drum triggered when the x axis is crossed. Turn up the portamento or the glide, if you want to call it that. So the notes vary as smoothly as possible and we'll hope for the best. It's going to sound terrible. Well, what do I know? It got a review. My semi ex-housemate, Will, who's a proper musician, who's worked with Dama Suzuki and Zev, wrote a review. I don't pretend to understand it myself as I'm not an ethnomusicologist. His other bandmate, Pyre of Perkel, there really is a thing called Celtic Medieval Speedfolk. She's a harpist, a flautist. And she's also a viciously talented painter as well. She liked it. So real live musicians, of which I am not one, appear to like my silly noises. I must also mention Ava Huska, who is probably off doing a workshop somewhere even cooler than this. She has a Chua circuit where I believe, I believe it's a Chua circuit where the inductor in that circuit is a big fluorescent tube. And that really is a sight to behold when that's going. But she also does workshops and will teach you how to make cool, noisy things. So I was wondering how fast is my JavaScript? You know, a lot of browsers are quite a bit laggy. And I've finally decided to become a proper programmer and learn Lisp. And what Lisp does by virtue of a lovely library called Overtone is it drives Super Collider for you so I can use all my sort of programming abstractions and not have to think in terms of the musical abstraction that Super Collider uses. I've got five minutes, so I'm going to play a little bit of what that sounds like. And I'm not doing a live Lisp repel on a Sunday morning. So I recorded some of that as well. Lorenz Attractors, both panning. So I hope that is nicely evocative of the sensitive dependence on initial conditions. And don't forget the tape echo. Square waves. So we've got, no tell a lie, sine waves back again, doing exactly the same thing as my JavaScript demo only. Hopefully the closure is going a little bit faster in the JVM. I've done it in a rather bad and sad way because what in fact happens is I just generate buffers, fill those with the Lorenz data, and use those as low frequency oscillators to control the sine oscillators. Five minutes, I reckon. OK, I do want a modular synth, fair enough. Device at the top called a nano synth, little PCB headers for patch points which are a right pane to patch. But at least it means you can get one without selling a kidney. That will be fed the various variables. The X variable will be subtracted from five volts and then fed into my Moog Verkstat. So the VCA, the voltage-controlled amplifier, will be wafted up and down with the X variable and its complement to simulate panning and very much the same as ever. We've got pulse width and frequency modulated by on the Verkstat and on the Moog's channel. We've got frequency cutoff and an LFO, a low frequency oscillator that's also modulating the frequency. And I built this thing three times and I don't know why the noises are wrong. So luckily I had the presence of mind to record some of this output. I've also got some pink noise going into the filter on the nano synth which makes delightful little evocative whooshing sounds. Actually, I've got it on my Korg Chaos pedal. Luckily I spoke co-oscillator correctly with a C, not a K, so Korg won't sue me, I hope. Well, these noises, if not live, were at least recorded at EMF. So here we go. I'm about to put the delay back. Very important. I would like to control the speed properly as it is variable capacitors used on the integrators. If you buy a variable capacitor, it'll be a tuning capacitor. It'll be very, very, very small and the analog computer will run way too fast. So I've just got a big nasty rotary switch that just switches between capacitors. I'd like to have some analog switches so I can sort of have various combinations of speeds. Haven't done that yet. Maybe modulate the, maybe have a digital potentiometer to ramp up and down the chaos and do some sort of routing to choose different variables at different times. There you go. It did come from that, just not today. Two minutes, any questions? I was, if that was working, if that was working, I'd just be kneeling, twiddling knobs and scowling like it was a proper power electronics performer and you wouldn't get a word in edge ways. Any questions? I think we've got two minutes.