LinuxUser & DeveloperLinuxUser & Developer
producing devices and computationalmachinery. With ap’s computer controlledrecord decks and neural synths, MumbaiStreaming Attack’s recent TRAMJAM sequencingsamples using 32 trams in Vienna, and codingpoetry slams in Denmark, the free softwareaudio scene obviously has little in common withthe dull Cubase clones and tired software synthsproduced by proprietary models. The history of computer audio is all about free innovation.
Hacker-artist’s favourite environment, Pd, reallydoes have roots stretching far back into the historyof computational audio creativity. Based aroundthe Max, and later Max/MSP, extendible visualscripting environment for audio creation, andauthored by the very same Miller Puckette, Pdtakes up where the proprietary Max/MSP left off,thanks to an incredibly lively developer community and free software model. For usersunfamiliar with the Max/MSP or Pd environments,this visual model can easily be described asallowing the interconnection of various boxeswhich can pass both data and control messages. As you’d imagine from its very name, Pure Data,the ﬂexibility of Pd lies in treating audio solely asdata which can be manipulated, mixed andgenerally thrown around with a huge number of maths, control and generator objects able tochange data pathways, structures and events. With such a ﬂattening of audio as simply raw data,the possibilities are endless, with additionalextensions also able to manipulate data asgraphical content or even through advancedneural net architectures.Collections of connected boxes are calledpatches, and these can quite easily hide further sub-patches which simply pass data inboth directions to the main patch. Patches arecomposed of connections between object boxes,messages, GUI boxes such as VU meters or slidersand comment boxes for documentation purposes.It’s a reasonably hierarchical approach but mostartist’s do adapt Pd to suit their ownmethodologies, either through extensions whichcan, say, add language scripting possibilities, or simply through the abstractions provided bysub-patching.
GO FORTH AND MULTIPLY
The easiest way to understand Pd is quite simplyto get up and running, and begin to play with thehuge range of objects available. Under mostGNU/Linux distros, Pd is trivial to install, with fewdependencies and uncomplicated conﬁguration.It may well be worth messing with the low latencypossibilities in recent kernels, or patched earlier kernels, and Pd does play well with ALSA andJACK, but a base setup is easy to achieve withreadily available walk-through tutorials. Pd issuitably platform agnostic, also running under both Windows and OS X. Documentation isintelligently embedded within the Pd package,and commented Pd patches are easily accessible from within Pd. Examples range from simpleoscillators through more complex control andaudio patches, to advanced Fast Fourier Transform(FFT) examples, converting data from the timedomain to the frequency domain for further analysis and manipulation. Reference patches arealso included which document every single objectwithin the base Pd package from sine and cosinegeneration objects, through control, network andpiping objects, to MIDI and sampling objects.Simple patches may use only a small range of these, but it is easily possible as we’ll see to createseriously spidery patches which pack in hardcorenetworked and control functionality. And with ad-hoc groupings of Pd-heads sharingideas and code, extensions have grown up aroundPd which allow less technical users to more simplycoerce Pd towards their own particular artisticvision. Tom Schouten and Yves Degoyon,occasionally working together live as BULT, areprime movers on the Pd coding scene, betweenthem producing both graphical extensions for Pd,and a huge number of intriguing externals. Onthe audio side these include Icecast andSHOUTcast externals, vocoders, compressors andsome seriously complex math and DSP objects.Schouten has also recently released the highlyadventurous packet forth (pf) package, which canbe used both with and without Pd and Schouten’sPDP multimedia extension. Pf throws together theForth language, Pd, Lisp, Unix scripting andhardcore DSP and it could easily be considered asa multimedia glue language which can be usedwith a variety of interfaces. Schouten has recentlyprototyped an inferior pf interpreter process under GNU Emacs, which also opens up some seriouslive coding possibilities.
At ﬁrst glance the popular SuperCollider environment does appear to offer a radicallydifferent approach to audio work than Pd, thougha good few Pd-heads, such as Farmers Manual, dodivide time between them and both apps doshare common roots and an environmentalcoding approach to audio. SuperCollider, or SC,can easily be viewed as a textual code-basedenvironment, in contrast to Pd’s obviouslygraphical model. Both approaches haveadvantages and disadvantages, particularly whenit comes to live work, but it’s easy to see that Pdand SC could quite easily compliment each other.Indeed, SuperCollider can quite simply beinterfaced with Pd, to provide the best of bothworlds. Pd appeals to the artist who wants throwtogether, to jam with, disparate data sources andcontrol, maybe interfacing complex hardware,whereas SC is perhaps more geared towardsgenerating intricate compositional structures.SuperCollider has a long history centeringprimarily on the work of one James McCartney,previous to its now open sourced SC3 iteration.It’s interesting to see our old friend Max pop uponce more, with SC1 morphing out of McCartney’s Max object Pyrite, though SC itself ismore about MSP style DSP work than pure Maxcontrol. SC also owes a good deal to the evenmore venerable MUSIC-N apps. It was MUSIC IIIwhich introduced the concept of a unit generator,a subroutine that would create a speciﬁc kind of sound, which is so central to SC. The programconsists of two applications, a client which is thelanguage itself (sclang) and a server, scsynth,which handles the DSP work and sound synthesis. With a highly ﬂexible programming languageengine, and supremely networkable architecture,again making use of OSC (see below), it’s not tootough to see how far you could push SC. Sclanghas morphed considerably through variousversions, borrowing differing features, syntax andmodels from languages such as Smalltalk,Scheme, C and even J along the way, but the coreof math operators, oscillators, noise generators, ﬁlters, controls, delays, samples, event spawningand I/O wrapped up in an extreme objectoriented model with messages and classes remainsas the SC approach. Unit generators, such asdiverse objects which process or generate sound,are an essential part of SC, and the controlngenerator unit class, for example, allows for external control sources, graphical sliders or programmatic processes to control parameters.Examples would include MouseX and MouseYclasses. Plentiful online tutorials, wikis,documentation and a fresh, active community areon hand to provide examples and support,though at ﬁrst SC may well seem like a toughcookie to crack, with a code-based approachseemingly at odds with most artists’ methodology.Getting up and running with SC under GNU/Linux may also present some problems for the lessexperienced user, though quite thoroughdocumentation is available. JACK and ALSA areabsolute necessities, and low latency audio ispreferable. With these in place, SC3 can easily bechecked out from CVS and compiled. Somewhatlengthy conﬁguration of elements such as JACKinputs is necessary before scsynth is up andrunning, and sclang itself does need a startup ﬁle for class and environment variables, but all this iswell documented. Online material is also available for those wishing to extend SC with plugins, andthe intriguing architecture of SC should make of this an interesting exercise for the artist-hacker.
As the intelligent computer HAL slowly dies in Kubricks2001, the machine regresses through the history of its ilk, to sadly sing Daisy, Daisy,give me your answer please, the first song ever sung by a computer
The Art of NoiseThe Art of Noise
Alex McLean rises to the live coding challenge during the intriguingLondon Placard headphone festivalPd-heads debug the latest spidery TRAMJAM patchwhich also uses Python to tie together a supremelycomplex networked and hardware system