A ready-made rack of instruments and effects behind one object, built for playing live rather than for designing sounds — and the bridge between Phausto and Coypu.
1. What it is for
Everything else in this manual is about building a sound. TurboPhausto assumes the sounds already exist and asks a different question: how do you play twelve of them at once, change your mind mid-bar, and not have a silence while you rebuild a DSP?
The answer is a rack — a single large DSP holding many instruments and effects, compiled once and then driven entirely by parameter changes. Nothing is rebuilt during a performance, so nothing ever stops.
2. Starting an engine
Two steps: load the rack, then instantiate an engine.
TurboPhausto start.
tp := TurboPhausto new.
tp bpm: 140.
tp play.
tp stop.
start is a class-side message that loads instruments, samplers, effects and
filters into the rack. It takes a moment — the whole rack is compiled — and only needs doing
once per image.
| Class-side message | Effect |
|---|---|
| start | Load and compile the rack |
| rack | The rack itself |
| loadRack | Load the rack contents |
| loadAllSynths | Load the synth voices |
| loadAllSamplers | Load the samplers |
| loadEffects | Load the effects |
| loadFilters | Load the global filters |
| tpDsp | The underlying DSP |
| tpPerf | The performance object |
2.1 The samples folder
The samplers need audio files. TurboPhausto looks for a TurboSamples folder,
which ships in the Phausto repository alongside MoofLodSamples and
phDemoSamples.
| Message | Returns |
|---|---|
| TurboPhausto samplesFolderExists | Whether the folder was found |
| TurboPhausto turboSamplesFolder | Where it is looking |
| TurboPhausto listOfSamplesFolder | The sub-folders, one per instrument |
| TurboPhausto listOfSamples | Every sample found |
TurboPhausto samplesFolderExists answering false explains most
"the drums are silent" problems before you go looking anywhere else.
3. The engines
PhaustoEngine is the abstract superclass — "an abstract superclass for
TurboPhausto engines to be used with Coypu for live coding". Several concrete engines differ
in how much they load:
| Class | Role |
|---|---|
| PhaustoEngine | Abstract superclass; defines the performance protocol |
| TurboPhausto | The full rack — every instrument and effect |
| CustomPhausto | A rack you configure yourself |
| EcoPhausto | A lighter rack — fewer voices, lower CPU |
| MooPhausto | An alternative rack configuration |
TurboPhausto start takes an
uncomfortable amount of time or the audio stutters, EcoPhausto gives the same
interface with a smaller footprint.
4. What is in the rack
4.1 TpSynth and its subclasses
The rack's voices are TpSynth subclasses — instruments designed to be
parameter-driven rather than repatched:
| Class | Voice |
|---|---|
| Acid | TB-303 style acid bass |
| TpReese | Reese bass — detuned, phasing low end |
| TpHoover | Hoover — the rave supersaw |
| TpKick99 | Kick drum |
| Chordy | Chordal pad |
| Fm2Op | Two-operator FM voice |
| PsgPlus | Chiptune-style PSG voice |
| TpKarplus | Karplus–Strong plucked string |
| TpSampler | Multisample player |
| TpSamplerReverb | Sampler with built-in reverb |
| PhLoop | Loop player, sample-rate aware |
| GreyHoleDW | Greyhole reverb with dry/wet control |
4.2 TpSampler
TpSampler is useful well beyond the rack and is documented in full in
Sequencing & Sampling §4. In short: point it at a folder,
select with tpSamplerIndex, fire with tpSamplerTrigger, and play
it chromatically with playNote:prefix:dur: where MIDI note 60 is the file's
original speed.
TpSampler outputs mono even when the files are stereo. Send it
stereo if you want two channels.
4.3 Listing what is loaded
| Message | Returns |
|---|---|
| TurboPhausto listAllInstruments | Print every instrument in the rack |
| TurboPhausto listOfInstruments | The instruments as a collection |
| TurboPhausto listOfSynths | Just the synth voices |
| PhaustoEngine allInstruments | Every instrument |
| PhaustoEngine allSynths | Every synth |
| PhaustoEngine allSamplers | Every sampler |
| PhaustoEngine allEffects | Every effect |
| tp traceAllSamples | Print the loaded samples |
| tp traceAllParams | Print every rack parameter |
The rack is large, so traceAllParams produces a great deal of output — but it
remains the authoritative list of what can be changed.
5. Performing
5.1 Transport and tempo
| Message | Effect |
|---|---|
| bpm: | Set the tempo |
| play | Start the performance |
| stop | Stop it |
| playFor: aNumberOfBars | Play a fixed number of bars |
| playCyclicFor: aNumberOfBars | Play a repeating cycle of that length |
| loop: anInteger / unloop | Loop a section, and release it |
| rhythm: | Set the global rhythm |
| trig: aString | Fire a trigger directly |
| playNote:prefix:dur: | Play a note on a rack instrument |
TurboPhausto start.
tp := TurboPhausto new.
tp bpm: 140.
16 downbeats to: #snare.
tp playFor: 8 bars.
The 16 downbeats to: #snare and 8 bars constructions come from
Coypu, which supplies the pattern vocabulary — see §6.
5.2 Mute, solo and levels
| Message | Effect |
|---|---|
| mute: aSymbol / unmute: | Silence one instrument, and restore it |
| muteAll | Silence everything |
| solo: aSymbol / unsolo: | Isolate one instrument, and release it |
| displayUIForLevels | Open a mixer for the rack levels |
| displayUI | Open the full rack interface |
| setValue:parameter: | Set any rack parameter |
| sweepToValue:parameter:in: | Sweep one gradually |
Mute and solo are the core performance gestures: because the whole rack is one running DSP, they take effect instantly and without a gap.
5.3 Global effects
The rack has a global filter and reverb section, addressable without touching individual instruments — the classic live-electronics filter sweep:
| Message | Effect |
|---|---|
| lowPassFreq: / lowPassQ: | Global low-pass cutoff and resonance |
| highPassFreq: / highPassQ: | Global high-pass cutoff and resonance |
| lowPassSweep: | Sweep the low pass — takes a frequency and a time |
| highPassSweep: | Sweep the high pass |
| reverb: anAmount | Global reverb amount |
| transpose: anInteger | Transpose the whole rack in semitones |
| size: aSize | Rack size parameter |
"Close the filter down over four seconds, then open it again"
tp lowPassSweep: #(200 4).
tp lowPassSweep: #(12000 2).
5.4 Saving and restoring
| Message | Effect |
|---|---|
| temporarySave | Snapshot the current state |
| restore | Return to the snapshot |
| destroy / destroyDsp | Tear the rack down |
| stopDsp | Stop the underlying DSP |
temporarySave then restore is the safety net for live work: take
a snapshot when a section sounds right, and you can always get back to it without
remembering what you changed.
6. Coypu
TurboPhausto is designed to be driven by Coypu, the live-coding client from the same author. Coypu supplies the pattern language — rhythms, note sequences, Euclidean patterns — and TurboPhausto supplies the sound.
Coypu can also drive SuperCollider/SuperDirt, Kyma, Pure Data and MIDI hardware, so a rack is one of several available voices. The division is clean: Coypu decides when and what, Phausto decides how it sounds.
| Package | Role |
|---|---|
| Coypu | Patterns, sequencing, live-coding syntax |
| TurboPhausto | The instrument rack Coypu plays |
| Phausto | The synthesis underneath |
| Pharo-Sound | MIDI in and out, for hardware |
Coypu is documented separately — see the Coypu manual.
8. Troubleshooting
The samplers are silent but the synths work
The samples folder was not found. Check
TurboPhausto samplesFolderExists and
TurboPhausto turboSamplesFolder — §2.1.
TurboPhausto new fails or produces nothing
TurboPhausto start must run first to build the rack — §2.
Loading the rack takes a long time, or audio stutters
The full rack is a lot of DSP. Try EcoPhausto — §3.
An instrument will not unmute
Something else is soloed, which mutes everything else implicitly. Send
unsolo: — §5.2.
The whole rack has gone quiet and I do not know why
Check for a global filter left in an extreme position — a low pass at 200 Hz removes almost
everything. restore returns to your last snapshot — §5.3, §5.4.
Coypu patterns do not reach the rack
Coypu must be loaded and pointed at the Phausto engine. See the Coypu manual — §6.