Some more basic synthesis
BTW, I’m hanging out in Norwich with the Thickthorn crew at the moment. Well, not now. They’re all asleep. But during the day. I’m actually heading back to da smoke tomorrow to get back into the work routine. I came up to begin work on a new project which is design and build of a smallish site (about 150 pages). Got to get feedback on the design. If all goes well, I’m outta here. Otherwise, um, I’m not sure. It’s been nice hanging around here again though, playing F-Zero GX and Soul Caliber II. Ian’s been up as well and it was good to see him again.
I got talking to Martin today and told him about the cool things I’d seen with computers and music at Dorkbot and how this had inspired me to start coding sound stuff. He liked my idea, which basically revolves around building a synthesis machine that has loads of STK’s functionality compiled in and then allowing other systems to control it via SKINI messages. One system would be a graphical frontend built with SDL. Others could be built in any kind of programming language as SKINI is just text sent down a TCP socket. I forsee there being a command line interface of some kind. I also like SuperCollider’s idea of being able to create objects within the synth server. Those objects could be created visually and then tweaked algorithmically using a Python program for example. Synchronisation is going to be an interesting problem to solve.
This evening I got into doing some actual coding. I copied out the “Hello, Sine!” STK example and built it on the command line. Then I built the real time version that played the sound (via CoreAudio on OS X) rather than dumping it to a WAV file. Then I integrated that code into my SDLAudioTest project from my last experiments. This is a SDL/Cocoa shell app that has a window (currently empty) and can make noises.
STK uses a sample for your basic sine wave, which makes sense. Why calculate the data each time when you can store the thing? It’s tiny anyway. Mac OS X applications are a directory structure and there’s a place to put resources such as sound files. Once I brought the file into my project, I had to work out how to use the CoreFoundation functions to get a filename string of the location of that file. Now that I’ve done that the thing is nicely self-contained.
Next stop is a basic piano keyboard interface in the window.