🎛 Phausto
DSP Programming in Pharo
An embedded FAUST engine inside a live Smalltalk image. Build oscillators, filters, physical models and full synthesisers from objects, hear them the instant you evaluate them, and export the result as a CMajor patch, a JUCE plugin or a Bela binary.
What Phausto is
FAUST is a functional language for real-time signal
processing, and one of the richest DSP standard libraries in existence. Phausto embeds the
FAUST compiler in Pharo and puts a Smalltalk object in front of it. You assemble
Unit Generators — over five hundred of them, from SineOsc to
MoogLadder to a bidirectional waveguide clarinet — send them ordinary Pharo
messages, and Phausto compiles the result to native audio code at runtime.
There is no separate toolchain, no build step and no file to save. A patch is an object graph that exists in your image; changing it is a message send. That makes Phausto equally suited to learning synthesis, to designing a sound for a piece, and to live coding a performance.
A first taste
Three oscillators, an envelope, a filter and a reverb — evaluated line by line in a Playground:
"An oscillator, shaped by an envelope, through a Moog filter, into a reverb"
synth := PulseOsc new => ADSREnv new => MoogVcf new => GreyHole new.
dsp := synth stereo asDsp.
dsp init.
dsp start.
dsp displayUI. "press the trigger button, turn the knobs"
dsp stop.
dsp destroy.
MasterLu go.