All live performance actions are sent to the Performance object β typically
stored in a variable named ep. Think of it as the mixing desk for your session:
it holds all active Sequencers and exposes controls that take effect immediately on the next bar.
Start & Stop
Start
| Message | Effect |
|---|---|
| EcoPhausto start | Initialises the audio engine. Must be called once per session before anything else. |
| EcoPhausto new | Creates a new Performance object. Assign it to a variable so you can control it. |
| ep playFor: N bars | Starts the clock running for N bars. Sequencers added at any point during the run will join immediately. |
EcoPhausto start.
ep := EcoPhausto new.
ep playFor: 128 bars. "Runs for 128 bars then stops automatically"
Stop
ep stop. "Stops all sequencers and the internal clock immediately"
ep stop is immediate β no fade. For a live context consider muting first, then stopping after a bar.
Tempo β bpm:
Change the tempo of the running performance at any time. The change takes effect from the next beat.
| Argument | Type | Description |
|---|---|---|
| value | Number | Beats per minute. No practical limit, but 60β200 is typical. |
ep bpm: 120.
ep bpm: 90. "Slow down mid-performance"
ep bpm: 140. "Ramp up the energy"
Mute & Unmute
Silence one or more instruments without removing them from the performance. The sequencers keep running β un-muting brings them back at the right phase.
| Argument | Type | Description |
|---|---|---|
| #( symbols ) | Array of Symbols | The instrument names to mute or unmute |
"Mute kick, snare and bleep together"
ep mute: #(#kick #snare #bleep).
"Bring kick and snare back in"
ep unmute: #(#kick #snare).
"Un-mute everything at once"
ep unmute: ep allInstrumentNames.
Solo & Unsolo
Solo focuses the output to only the named instruments; everything else is silenced. Multiple instruments can be soloed together β they all play, the rest are muted.
"Solo the synth and cowbell β hear only those two"
ep solo: #(#psg #cowbell).
"Release the solo β all instruments return to their prior mute state"
ep unsolo: #(#psg #cowbell).
Loop & Unloop
Lock the performance into a repeating section of a given number of steps. Useful for drilling into a moment while you re-code other parts.
| Argument | Type | Description |
|---|---|---|
| N | Integer | Number of steps to loop |
"Loop the next 5 steps forever"
ep loop: 5.
"Return to normal playback"
ep unloop.
Save & Restore
Take a snapshot of the current performance state β all sequencers, levels, mute statuses β and restore it later. Essential for recovering a working state after an experiment goes wrong.
"Capture the current state"
ep temporarySave.
"Experiment β change rhythms, BPM, anything"
ep bpm: 200.
'FFFF' hexBeat to: #kick.
"Something went wrong β go back to saved state"
ep restore.
temporarySave before every risky live edit. It costs nothing and saves your performance from a wrong evaluation.
Global rhythm assignment
Apply the same rhythm pattern to all active sequencers in the performance at once. A blunt, high-energy tool for sudden shifts.
"Force all sequencers to a hex pattern simultaneously"
ep rhythm: '1312' hexBeat.
"Assign the same named rhythm to an array of specific instruments"
#(#kick #ch #cowbell) rhythm: #banda.
Level control
Set the per-step amplitude for a specific instrument already in the performance. The message can be sent to the instrument symbol directly.
#clap level: '0.3 0.1 0.4'.
#kick level: '1.0'. "All steps at full volume"
#psg level: '0.6 0.2 0.8 0.4'.
Typical performance workflow
A structured example of a full set, from soundcheck to closure:
"ββββ SOUNDCHECK ββββ"
EcoPhausto start.
ep := EcoPhausto new.
ep bpm: 110.
ep playFor: 512 bars.
"ββββ BUILD UP ββββ"
#(1 0 0 0) asSeq to: #kick.
ep temporarySave. "save clean starting point"
#cumbiaClave asRhythm to: #conga.
#plena to: #snare.
16 randomTrigs to: #ch; level: '0.9 0.4 0.6 0.3'.
"ββββ SOLO FOR TENSION ββββ"
ep solo: #(#kick #snare).
"ββββ FULL DROP ββββ"
ep unsolo: #(#kick #snare).
64 randomTrigs
notes: (32 randomWalksOn: Scale pentatonicMajor octaves: 2 root: 60)
to: #psg; level: '0.6'.
"ββββ COOL DOWN ββββ"
ep mute: #(#psg #ch).
ep bpm: 90.
"ββββ END ββββ"
ep stop.