The Manguebyte ecosystem
Caecilia
An open-source virtual pipe organ written in Rust on Manguebyte: a program of its own and VST3 and CLAP plugins.
Download for Windows (alpha) Code on GitHub
Alpha. This is the first public build, still in active development, and the sound is still being worked on.
Hear it
Four demonstrations, also as a YouTube playlist. A video loads only when you press play.
-
Caecilia Pipe Organ: Demonstration I
Demonstration I
-
Caecilia Pipe Organ: Demonstration II
Demonstration II
-
Caecilia Pipe Organ: Demonstration III
Demonstration III
-
Caecilia Pipe Organ: Demonstration IV
Demonstration IV
What it is
Caecilia is a pipe organ you play on a computer, as a program of its own or as a VST3 and CLAP plugin inside a DAW. It is open source, under the Apache-2.0 licence, and developed by Alesson Queiroz.
It comes with the Caecilia Pipe Organ, in the French style: two manuals and pedal (Grand-Orgue, Récit and Pédale) and 32 stops. An organ is a JSON file of windchests, ranks, divisions, stops and couplers, so other organs can be loaded, and they change live, without a click.
Its console is drawn as an organ console: drawstops, manuals with pistons, swell and crescendo shoes, a pedalboard and wind gauges in millimetres of water. It also plays by itself, with pieces that draw their own stops, so you can hear the organ without a keyboard. And there is registration by a stop's nature (every string of the Récit, say), undo and redo with a history, combinations on the pistons, and MIDI learn: press a stop or a piston, then move a key, pedal or controller.
Download
-
Windows
64-bit
Download the alpha -
Linux
x86_64 (Intel/AMD)
In preparation -
macOS
Apple Silicon
In preparation
Version 2.0.0-alpha.0 has a 64-bit Windows installer, which installs the program and the VST3 and CLAP plugins.
The installer is not digitally signed yet, so Windows SmartScreen may warn you: choose More info, then Run anyway. The known limits and the SHA-256 are in the release notes.
How the sound works
No recorded samples. Every pipe is computed in real time, as a sum of partials: sines that follow the wind, each with its own slow drift. With no recording, there is no loop for the ear to catch repeating.
The wind is the heart of the model. A reservoir, like an organ's bellows, has its pressure worked out every audio block under the air the sounding pipes draw, and each windchest follows it behind its own regulator. A full chord makes the wind give way, and the pipes answer in pitch, level and brightness. The tremulant shakes the wind's pressure, not the output's volume.
Every rank has its own voice. Partials do not start together, mixtures break back an octave as they climb the keyboard, reeds have formants fixed in hertz, and the treble has its own tilt of timbre.
From the key to the room. A key is one event: the engine turns it into one voice for each rank drawn in the division, plus those the couplers lend. Each voice goes to the bus of its rank's windchest, enclosed chests pass through their swell box, and everything sums. Then come the reverb (room, chamber, hall, cathedral or plate) and a five-band equaliser, with eight historical temperaments on any key and the pitch of A of your choice.
What is still to come. The sound is still being worked on. Next are each pipe's place in space, a church's first reflections and a more realistic attack.
How it was made
The first Caecilia was written in C++ with JUCE, with its console as a web page inside a WebView. Version 2.0 is a full rewrite in Rust: no JUCE, no WebView and no JavaScript. The old code is kept at the tag v1-cpp-final.
What version 1.x measured was frozen as a reference, and 2.0's tests compare its sound and behaviour with that reference, so the port loses nothing on the way. The reference is the floor, not the goal: the goal is to go past it.
Nothing is copied from other organs: no code from JUCE or from GPL projects such as GrandOrgue and Aeolus is read. The spectra of each family come from version 1.x and are checked against it. The tilt of the treble, the drift of the pipes and the headroom per pipe were redone from the public literature on pipe acoustics and from our own measurements. And on the audio path nothing allocates memory, locks or waits, even while an organ changes or a demonstration plays: tests with an allocator that counts calls prove it.
How it uses Manguebyte
What is an organ's stays in Caecilia: the wind, the voices, the engine, the registration and the console. What would serve any audio program comes from Manguebyte, and what was missing was built there, where other projects can use it too.
- The voices
manguebyte-dsp'sPartialBankcomputes the partials with the processor's vector instructions, with the same result bit for bit on those it has run on so far: SSE2, AVX and AVX2.- Several cores
manguebyte-core'sRenderPoolshares the voices among the cores inside the audio callback, without changing a bit of the result.- Sound and tuning
- The reverb, the equaliser's filters, the limiter and the temperaments, with Scala scales, come from
manguebyte-dsp. - Plugin and program
- The same code becomes CLAP and VST3 with
manguebyte-plugin,manguebyte-clapandmanguebyte-vst3, and a program of its own withmanguebyte-standalone, which looks after the sound card and the MIDI devices. - The console
- Everything you see is drawn natively, with
manguebyte-gfx,manguebyte-ui,manguebyte-guiandmanguebyte-window. The installer is made with the same toolkit. - MIDI
manguebyte-midireads the MIDI files of the pieces the organ plays by itself.
The road runs back too: rendering on several cores, tuning, streaming samples and the CPU governor were made with it in mind too; the first two already play in the alpha, the others do not yet. The blocks for a pipe's place in space and for air and attack per partial were born of its requests; they are built and tested, and in Caecilia's code, but not yet in a published version.
To talk about it, write to alessonqueiroz.dev@gmail.com.
The Manguebyte ecosystem
Four more projects from Recife grow from the same mangue, built to run on Manguebyte.
-

This framework
Manguebyte
The open-source audio framework for Rust, under MIT or Apache-2.0, released on crates.io. Aratu already plays on its browser engine, and its Aratu Bridge plugin plays the same music in a DAW; Caecilia and Parabolic are built on it.
-

In development
Aratu
A live-coding language that reads like music: measures, beats and note values first, in Portuguese, Spanish and English. Its editor runs in the browser and plays on Manguebyte.
-

Alpha
Caecilia
A virtual pipe organ written in Rust on Manguebyte: a program of its own and VST3 and CLAP plugins.
-

In development
Parabolic
A tool for musicians to turn their own sounds into plugins and samplers without writing code.
-

In design
MARÉ
Multi-device Audio Realtime Exchange: an open protocol for low-latency audio and MIDI, to replace ASIO. Many programs on one device at once, many devices as one, MIDI 2.0 on the same clock.