Where the code lives, where to ask, and how to report something that does not work in a way that gets it fixed.

1. The project

Phausto is written by Domenico Cipriani, who performs and publishes as Lucretio. It sits alongside two sibling packages, and the three are designed to be used together.

ResourceWhat it is
lucretiomsp/phaustoThe source
The wikiInstallation notes, kept current with the code
IssuesBug reports and feature discussion
Music with PharoThe site this manual is part of, with a development blog

1.1 The wider family

PackageRole
PhaustoSynthesis and DSP — this manual
CoypuLive-coding client: patterns, sequencing, and output to SuperDirt, Kyma, Pure Data, MIDI and Phausto. Its manual
Pharo-SoundMIDI send and receive via PortMidi
MasterLuThe in-image tutorial — see Learn in the Image
CoypuIDEEditor and browser tooling, including the Phausto class reference

Underneath all of it is FAUST, developed at GRAME. The FAUST documentation and its standard library reference are worth knowing about: when Phausto wraps a FAUST module, the FAUST documentation is the deeper description of what it does.

2. Where to ask

QuestionBest place
Something in Phausto is brokenPhausto issues
Installation troubleThe wiki first, then issues
A general Pharo questionPharo Discord or Pharo Discourse
A FAUST language or library questionFAUST documentation and the FAUST community
Sequencing and live codingThe Coypu repository
An error or omission on this pageThe edit link at the foot of it
Check which layer you are on Phausto problems and FAUST problems look identical from a Playground but are answered in different places. dsp generatedCode tells you which: if the generated FAUST is not what you intended, it is a Phausto question; if it is exactly what you intended but sounds wrong, it is a FAUST or DSP question.

3. Reporting a problem

Phausto is maintained by one person. A report that can be reproduced in thirty seconds is far more likely to be fixed than one that needs a conversation first.

3.1 What makes a report useful

IncludeBecause
A minimal snippetThe shortest code that shows the problem, ready to paste into a Playground
Pharo version11, 12 and 13 are all supported and can differ
Platform and architectureThe native libraries are platform-specific
How Phausto was installedMusic image, or Metacello from which commit
What you expected, and what happenedSilence, an exception, or the wrong sound are three different bugs
getLastErrorFor build failures, the FAUST compiler's own message — see Internals §3.3
generatedCodeFor wrong-sound bugs, what was actually compiled
Rule out the usual suspects first A large share of reports turn out to be the native libraries in the wrong place (Installation §3), a patch that was never triggered (First Sounds §8), or a value fixed as a literal number and therefore not controllable (Parameters §1.1). Each page in this manual ends with a troubleshooting section for exactly this reason.

4. Contributing

4.1 To this manual

Every page has an Edit this page on GitHub link at the foot, which opens the source file directly in GitHub's editor. A typo fix is a two-minute pull request.

Things that are always welcome:

Corrections — a selector that does not exist, a class that has been renamed, a snippet that no longer runs.
Missing descriptions — the UGen Library is generated from class comments, so writing a class comment in Phausto improves the manual automatically.
Troubleshooting entries — if something confused you, it will confuse the next person. Symptom-first phrasing, one or two sentences.
Worked examples — short, runnable, and verified against the current package.
One structural rule Pages are driven by phausto-nav.js. Adding a page means adding one line to the PHAUSTO_PAGES array — the sidebar, quick links, search and previous/next navigation all follow from it. Do not hand-edit navigation into a page.

4.2 To Phausto

Phausto is a Pharo package developed with Iceberg. Clone the repository, load the baseline, and work in the image as usual.

ConventionDetail
Branchmain
Commit messagesPrefixed feature: or fix:
Tests45 test classes; the expectation is that the suite stays green
Class commentsExpected on new classes — they are the package's documentation and this manual's source
SettersPrefer composing an existing trait over defining a new selector

The most valuable contribution for a new UGen is usually not the UGen: it is the class comment and the test. Both are what make it findable and keep it working.

5. Exploring the package

With CoypuIDE installed, Phausto ships a visual class browser organised by UGen family:

PhaustoClassReference new openInSpace.

It groups classes the way the UGen Library does — oscillators, effects, envelopes and so on — and shows each class comment, many of which include a runnable example. It is the in-image counterpart to this manual, and often the faster route when you are already working.

Three ways to explore, all useful PhaustoClassReference for browsing by family, MasterLu for a guided path, and traceAllParams for the ground truth about any single UGen.

6. Credit where it is due

Phausto is a thin and careful layer over a great deal of other people's work. When a patch sounds good, much of the credit belongs upstream:

Whose workWhat it gave us
GRAMEThe FAUST language, compiler and standard libraries
The FAUST library authorsFilters, reverbs, physical models and effects — the algorithms this manual catalogues
Julius O. SmithMuch of the physical modelling and filter theory the libraries implement
Fons AdriaensenZita-Rev1, wrapped as ZitaRevStereo
Jon DattorroThe plate reverb behind DattorroRev
Max MathewsThe Unit Generator itself, at Bell Labs in the 1950s
The ChucK teamThe => operator, borrowed with affection
The Pharo communityThe live image that makes all of this immediate

If you use Phausto in a performance, a release or a paper, crediting Phausto and FAUST is appreciated — and hearing about it more so.

7. Where to go next

DocumentWhat it covers
FAQShort answers before you open an issue.
ChangelogWhat changed, and how to pin a version.
Learn in the ImageThe interactive tutorial.
Architecture & InternalsUseful background before filing a deep bug.

8. Troubleshooting

I am not sure whether my problem is Phausto or FAUST

Read dsp generatedCode — §2.

PhaustoClassReference is not understood

CoypuIDE is not installed. It is a separate package — §5.

My issue has not had a reply

The project is maintained by one person alongside other work. A minimal reproducible snippet is the single biggest thing that speeds up a response — §3.1.

I found a mistake in this manual

Use the edit link at the foot of the page — §4.1.

I wrote a UGen and want it included

Open a pull request with a class comment and a test. Compose an existing setter trait rather than inventing new selectors — §4.2.