I spent my spare time last week developing two audio-based activity prototypes for the OLPC: Step and Funny Talk. The whole process was surprisingly quick and easy. I attribute this to Victor Lazzarini’s Csound Sugar GUI toolkit. I do a lot of Csound programming, but I’ve never actually done any GUI work for it. Using the toolkit was as simple as defining widgets and mapping them in Csound.
Step is the first activitiy I’m developing for the XO. It’s a straight forward eight note step sequencer with synth notes, snare and kick parts. So far, I’ve probably put in about 8 hours on this. Once a user has a pattern they like, they can render the loop to an audio file, which can then be loaded in other activities. It still needs a lot of work, especially the synth engine. Though you can still take a listen if you would like: StepDemo1.mp3.
This is my favorite of the two, as my inspiration for this activity comes from my childhood memories of the Yamaha VSS-30 keyboard. My friends and I used to spend hours playing with that keyboard. Often in a very juvenile manner. I figured if we had such a great time playing with our voices, then perhaps the target audience of the OLPC will as well. Here is “the sound of my voice” being processed with Funny Talk: FunnyTalkDemo1.mp3.
About a month ago, peiman posted a question to the Csound Mailing list about the possiblity “to batch process several audio-files with the same csound code.” Prior to this, I had never considered using Csound in this manner.
I continued to work on this, as there were still a few unresolved issues. For example, designing Csound instruments that would process mono or stereo files automatically, and being able to set parameters from the command-line. I wrote ShellVerb v0.1 to demonstrate a way to build these abilities into command-line instruments. Though I wasn’t completely happy with my approach.
I revisted ShellVerb yesterday, and came up with ShellVerb v0.2. This version, in theory, works identically to v0.1 as far as the user is concerned. However, I made some changes internally that I hope are a bit more clear to those wishing to analyze the file so they can write their own Csound based command-line audio tools.
It turns out that not only can Csound be used as a batch processor, but it also makes for a damn fine one. Csound is chock full of filters, envelopes, digital siginal processors, spectral processors, etc. From these synthesizer/dsp modules, one can design very complex effects units that would be impractical to implement in most other products out in the wild. Since the original post at the mailing list, I’ve heavily incorporated Csound command-line processors into some of the projects I’m currently working on, with stellar results.