An open-source pipe organ sample player compatible with Hauptwerk sample sets. It builds the instrument's own console out of the set's definition — artwork, drawstops, keyboards, pedalboard — and plays it.
Recorded from the application's own audio output. The consoles animate because a MIDI note takes the same path through the instrument that a physical console would drive.
17 minutes. The programme, the sequencers and the sample library producers are listed on the attribution page.
Sampled pipe organs are distributed as large libraries: a recording of every pipe, plus an XML definition describing the instrument around them — how the console is drawn, which key reaches which pipe, what the couplers do, how the wind system is built.
Masterpiece reads those libraries and turns them back into a playable instrument. It is a fresh design rather than a fork. The console is the real one, so an organ looks and behaves like itself.
It runs as a standalone application and as a VST3 or LV2 plugin, or an Audio Unit on macOS — the same engine either way.
Each organ above is a freely published sample library and is not part of this project. Nine of the ten are produced by Piotr Grabowski, the tenth by Augustine’s Virtual Organs. Full credits are on the attribution page.
Libraries that ship several console sizes offer them all; the chooser only appears when there is a choice to make. A set whose manuals are part of a photographed backdrop falls back to an on-screen keyboard instead.

A large library is tens of gigabytes and takes minutes off a slow disk, so it loads on its own thread: the window stays live and the estimate is built from the rate the load is actually achieving, not from a file count. Cancel takes effect at the next file and throws away what it had read — a half-loaded organ that plays some notes and silently drops others would send you hunting through your library.

Drawstops, pistons and expression shoes are where the builder put them. A key pressed with the mouse takes the same path as the same note arriving over MIDI. The meter shows what reaches the audio device — after the room, the organ's own level and the master fader.

Some libraries ship no console picture, and some ship sixty stops across two jambs you would rather not hunt through. The stop list is the same registration by another route, grouped by division.

No sample library says anything about audio routing, so this is yours to decide — like the MIDI mapping. Output pairs carry across organs; which rank goes where is saved per organ, because a rank number means nothing in a different instrument. A rank you never touch plays through the first pair, and in stereo the pairs are summed, so nothing disappears when you split them up.

The decoded samples kept as one file, so the next load of the same organ is a read rather than twelve thousand decodes. It is keyed to the definition and to every setting that changes the bytes, so a stale cache is a miss rather than a wrong answer — and it is worth precisely what the settings take away: at 16-bit mono a 2.4 GB read stands in for roughly seven gigabytes of source and the organ opens in 18.9 s instead of 25.9. One file by default, because these run to gigabytes.
A held frame is 24 bits — what these libraries are recorded at — or 16, and a stereo set can be folded to mono as it loads. Sample data can be converted to another rate on the way in, for libraries recorded at 96 kHz. Each step is exact, measured: the same 44-stop instrument is 21.6 GB held as 32-bit float, 16.2 GB at 24-bit, 4.65 GB at 16-bit with releases streamed, and 2.33 GB folded to mono. The settings page offers them as profiles rather than as separate questions.
A rank adjustment and a single-pipe adjustment add, so pulling one sour pipe into tune does not throw away the trim you put on the rank it belongs to. A and B are two complete sets: make a change, swap, and hear it against what was there before — from memory the comparison always flatters whichever you heard last.

Which manual a key plays is decided by its MIDI channel, and no organ file can guess how your console is wired. Right-click a drawstop and move the real one to learn it. The sequencer pistons and page-turn actions get their own learn buttons, because the organ does not declare them and there is nothing on screen to right-click.

A slot number is something a thumb piston can be mapped to; a file path is not. Combination sets are whole registration books — one for a recital, another for a service — and changing set saves the one you are leaving first.

CPU and memory in one place. Simple WAV only bypasses every refinement at once for a machine that cannot afford them. Streaming holds only the head of each release tail and fetches the rest while it plays. Nothing here writes to disk on its own: changes apply immediately, and you choose afterwards whether to forget them, keep them for this organ, or make them the default.
Standalone application, plus VST3 and LV2 plugins built from the same engine, so the organ can be sequenced, rendered offline or tracked alongside other instruments, and an Audio Unit on macOS. Raspberry Pi builds are standalone only.
Attacks and loops stay resident; each release tail keeps only its head in RAM and a background thread refills per-voice ring buffers while the note sounds. On a 44-stop, 17 GB set that leaves 55% of the sample data on disk and halves the load time, because those tails are never read up front.
For sets that describe their pneumatics, compartments, bellows, valves and per-pipe air demand are solved as a physical system. Registration load lowers the pressure, and tuning and attack follow it.
Samples are held at 24-bit, bit-for-bit identical to the files, or at 16-bit, and a stereo set can be folded to mono as it loads. Each step is an exact ratio, measured: the same 44-stop instrument is 21.6 GB as 32-bit float, 16.2 GB at 24-bit, 4.65 GB at 16-bit with releases streamed, and 2.33 GB folded to mono, up to 9.3x less. The settings page offers them as profiles rather than as four separate questions.
Level and tuning per rank and per individual pipe, composed rather than overriding, so a single-pipe correction keeps its rank's trim. Applied once at note start: no per-sample cost, and it works with DSP off. A and B hold two full sets for comparison.
Per pipe: attack, sustain loop, and a matched release tail crossfaded in rather than cut to, so a key release leaves the room's own decay behind. Transposed ranks use four-point interpolation.
Bounded, with voice stealing: decaying releases first, then the oldest and quietest note. A key just pressed is never stolen, so a chord under a full registration thins from the back.
Couplers are resolved through the set's own switch graph, so sub- and super-octaves and unison-off compose as the builder wired them. Thumb pistons, combinations with capture, general cancel, crescendo, and a sequencer over the generals.
Equal, plus seven historical temperaments generated from fifth-chain definitions rather than transcribed tables. A set naming an unrecognised temperament is reported, not silently played in equal.
Enclosure filtering per box as the shades move, so an unenclosed division stays unenclosed. Tremulant amplitude and pitch modulation is per pipe, so one chest can wobble while another does not.
Ranks are assigned to output pairs and saved per organ, since a rank number means nothing in another instrument. Pairs are summed in stereo, so nothing disappears when they are split.
All input devices simultaneously, each mapped to a division. Per-drawstop learn. MIDI out lights the drawstops on a physical console, and a jamb display is driven over system exclusive.
MIDI capture includes stop changes and shoe movement, so a take can be replayed through a different registration. Audio capture runs in parallel.
cmake -B build -S . -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
Windows, macOS (Apple silicon and Intel), Linux and Raspberry Pi are built in CI. The standalone application is the product; the plugin wrappers come from the same engine.
Masterpiece is its own implementation, but it is much the better for them. None of their code is compiled in.
The shape of the voice engine, and the release-crossfade behaviour that stops a key release from clicking.
The clearest available reading of the organ-definition format: which objects exist, how they link, and which of them a converter has to give up on.
Sample and loop handling, and a great deal of hard-won file-format knowledge.
The streaming design: per-voice ring buffers refilled off a background thread.