MasterLu is an interactive Phausto tutorial that runs inside Pharo itself. Every lesson opens in a Playground where the code is not an example to read but a program to evaluate.

1. What MasterLu is

MasterLu is built on ProfStef, Pharo's own in-image tutorial framework. Each lesson is displayed in a live Playground rather than a document viewer, so you step through it the way you would step through your own code — selecting a line and evaluating it.

That difference matters more for audio than for most subjects. A written description of a filter sweep tells you very little; the same three lines evaluated with the sound running tell you everything. MasterLu is the recommended companion to this manual rather than a replacement for it: the manual is organised by topic and meant to be searched, MasterLu is organised as a path and meant to be walked.

Author MasterLu is by Domenico Cipriani (Lucretio), who also wrote Phausto and Coypu. The name is the teacher persona the tutorial speaks in.

2. Installing it

Evaluate in a Playground:

Metacello new
  baseline: 'MasterLu';
  repository: 'github://lucretiomsp/MasterLu:main';
  load.

The baseline pulls in Phausto, Coypu and CoypuIDE alongside MasterLu itself, so a bare image ends up with the whole music stack. If you already have Phausto working, that is fine — Metacello will not disturb it.

Native libraries still required MasterLu loads the Pharo code but not the platform binaries. If Phausto is not already working in your image, put the librariesBundle folder in place first — see Installation §3. The lessons make sound from the very first one, so a half-installed Phausto becomes obvious immediately.

3. Running the tutorial

One line starts it:

MasterLu go.

A window titled Master Lu opens with the first lesson loaded. The window is a real Playground: select any line and evaluate it with Cmd-D or Ctrl-D. You can edit the code, add to it, and inspect results exactly as you would anywhere else in Pharo.

3.1 Moving between lessons

Navigation is itself code. Each lesson ends with two evaluable lines, and you advance by evaluating one of them:

MasterLu next.
MasterLu previous.

The lesson view reuses the same window instead of opening a new one each time, so you can leave it in a corner of the screen and work through the sequence at your own pace.

4. The sixteen lessons

The tutorial has a fixed order, designed so that each lesson introduces exactly one new idea. The right-hand column points at the part of this manual that covers the same ground in reference form.

#LessonIntroducesSee also
1Hello PhaustoSineOsc, asDsp, the lifecycleFirst Sounds
2Hello Stereostereo before asDspFirst Sounds
3At the ControlssetValue:parameter:, traceAllParamsParameters
4Display the UIdisplayUI, the Djembe modelUI Primitives
5Unit Generators 101Noise, uLevel, what a UGen isUnit Generators
6chuckIntoThe => operatorConnecting
7PlayNotes 101playNote:prefix:dur:, symbol labelsMIDI & Notes
8Our First Synthesiserosc ⇒ env ⇒ filterSynthesis §2
9Additive SynthesisSumming with +Synthesis §3
10Additive with an ArrayasSumOfUGenSynthesis §3
11Modal SynthesisPhModeFilter, t60Synthesis §4
12TpSampler basicsSample folders, algorithmic triggeringSequencing §4
13Basic waveforms, and PhSelect4Synthesis §1
14Basic waveforms with SelectNPhSelectNSynthesis §1
15Pitch EnvelopeasBox, envelopes as modulatorsEnvelopes
162-Operator FM SynthesisDx7Op, phaseMod:Synthesis §5
Do them in order the first time The sequence is not arbitrary — lesson 8 assumes the chuck operator from lesson 6, and lesson 15 assumes the arithmetic from lessons 9 and 10. After a first pass, jumping around is fine.

5. Synthesis Fundamentals

MasterLu ships a second, separate track: theory chapters rendered as Microdown rather than executed as code. Where the sixteen lessons teach the Phausto API, these explain the concepts underneath it.

SynthesisFundamentals new open.

Three chapters are available, each also reachable as a class-side example:

ChapterCovers
Five Types of Synthesis ModulesGenerators, Combiners, Modifiers, Time-Variant Controllers, Storers — a vocabulary for taking any synthesiser apart
Five Types of SynthesisSubtractive, additive, modulation/distortion, physical modelling and sample-based, each mapped to the Phausto classes that implement it
Time-Variant ControllersEnvelope generators and LFOs, and why Phausto has no separate control rate
One idea worth taking away early Phausto, like the FAUST compiler beneath it, does not distinguish audio-rate from control-rate signals — every UGen runs at audio rate. The only exceptions are UI elements such as PhHSlider, which update more slowly. This is why an LFO and an oscillator are the same kind of object here, and why either can be used anywhere the other can.

6. Known issues

MasterLu is a teaching package under active development. A few rough edges are worth knowing about before you meet them.

WhereIssue
Lesson 11, Modal SynthesisCalls Impulsify and ModeFilter. The classes are PhImpulsify and PhModeFilter; add the prefix and the lesson runs.
Lesson 12, TpSamplerThe sample path is hardcoded to the author's machine. Substitute a folder of your own.
Lesson 14, SelectNFive oscillators but an index capped at 3, so the noise source is unreachable. Change max: 3 to max: 4.
Several lessonsA missing full stop after dsp destroy means selecting a whole snippet at once fails to parse. Evaluate line by line, as intended.
BaselineProfStef is not declared as a dependency even though MasterLu subclasses it. On an image without ProfStef, load it first.

Corrected, runnable versions of every lesson's material appear throughout this manual — see the "See also" column in §4.

7. Where to go next

DocumentWhat it covers
Unit GeneratorsThe reference counterpart to lessons 1–5.
Connecting UGensEvery operator, not only the chuck operator of lesson 6.
Synthesis TechniquesLessons 8–16, expanded and corrected.
CommunityWhere to report a lesson that no longer works.

8. Troubleshooting

MasterLu go raises doesNotUnderstand

ProfStef, MasterLu's superclass, is missing from the image. The baseline does not declare it, so on a minimal image you must load ProfStef yourself. See §6.

The lesson window opens but the code does nothing

Lessons are meant to be evaluated line by line, not read. Select a line and press Cmd-D; opening the window runs nothing by itself.

Selecting a whole lesson at once gives a parse error

A missing full stop in the lesson text — see §6. Evaluate the lines individually and the problem disappears.

Lesson 1 makes no sound although the code runs cleanly

Phausto's native libraries are not in place. MasterLu loads the Pharo side only; check Installation §3.

I have several windows all titled "Master Lu"

There should only ever be one — the view reuses its window. Close them all and evaluate MasterLu go again to restart cleanly.