This weekend I'm performing sound for a dance piece Light Noise that I've been working on for over a year. For the past year+ I've been refining a set of patches in Pure Data (PD) that I use to create conceptual sound and music for this piece.
I'm doing all of my sound generation, synthesis, and manipulation in realtime using PD and a midi controller. My PD patch outputs 4 channel sound, to 4 speakers I installed around the dance floor I built yesterday at Disjecta. I've attached a PD abstraction to this post.
In terms of input hardware, I've gone through several different control iterations. I'm now using a Keith Mcmillan Quneo for live input into PD. This gives me a pretty rich set of sensors that send USB midi into Pure-Data. The Quneo's standard, built-in visual feedback is nice, which saves me programming time. Additionally it has firmware level paging (bank buttons toggle all the sensors through several sets of midi CC's and note numbers). I also use a Livid OhmRGB for other projects - but with the Livid, I end up spending a lot of time programming the RGB leds to give me useful visual maps, and programming paging/banking functionality in PD itself. Limiting myself to the Quneo's default visual behavior frees me up to spend more time working on sound.
For Light Noise, I'm using subtractive synthesis, granular synthesis, and sample manipulation. I thought it might be interesting to detail the subtractive synthesis techniques I'm using for this blog entry.
Lately I've been inspired by a philosophical approach to subtractive synthesis that was pioneered by Serge Tcherepnin in the late 70s. The subtractive synthesis part of my patch uses an abstraction I made - based around this approach. I'm attaching the abstraction - but it needs a little explanation. Read on if you're interested:
First a tiny bit of history - Serge Tcherepnin built analog modular synthesizers in kit form for students who interested in building their own synths who couldn't necessarily afford the more expensive systems offered by Buchla and Moog. Currently Serge systems are still available for DIY builders via PCBs made available from Ken Stone, in partnership with Tcherepnin. I have a Ken Stone DIY synth panel in progress on my work bench right now.
In addition to the more typical/classical synthesizer building blocks (VCO, VCF, ENV, VCA), a typical Serge system includes an assortment of lower level synthesis blocks - voltage controlled slopes. These come in a variety of forms - here are some you can build: DUSG, VCS, NEG AND POS SLEW. Basically these modules take a trigger input, and in turn generate a voltage ramp up, followed by a voltage ramp down, followed by an analog pulse/trigger. With manual and CV control over the up and down times, you have a versatile one shot envelope generator for controlling another module. By patching the trigger output, back to the module input, you have a looping envelope - an LFO. You can then vary the period, and shape of the lfo with those two slope controls. The range is quite wide on these controls, and the module easily moves into audio range - at which point you have a versatile VCO with voltage controllable wave shape. The applications for a voltage controllable slope don't stop there - it is an incredibly versatile function block. I recommend this page for an excellent description of the module and it's possiblities.
For Light Noise, there is a small section of the piece where I wanted to reference the sound world of the early west-coast electronic music concrete pioneers. (Think Morton Subotnick, Pauline Oliveros, and Ramon Sender) Since my hardware Serge isn't compelete yet, I made the attached PD abstraction, and a pretty simple control scheme. I set up 4 of these absractions, patched them into each other for modulation potential, and setup a bunch of presets using message boxes. I can play 'presets' from my Quneo, in way similar to a performance using a Serge or Buchla touchplate keyboard. These touchplates were classically considered to be more analogous to Music Concrete tape loops - than to a piano (or Moog) keyboard. Subotnick explains the touch plate keyboard in this video at 5:39. Each plate triggers a bank of knobs that send voltages to various modules - similar to my preset message boxes - that send values to sliders on my slope abstraction.
For the PD nerds - my abstraction initially used vline~ as it's (very simple) core. But xnor fixed it up for me with expr~ instead - leaving it possible to use it as an audio processor w/out any array writing nightmares.
Watch this space for audio (and possibly video) soon. But in the meantime - have a listen to the attached abstraction!
Come hear/see it in action this weekend!