The approach

Why Joue is built the way it is

Joue was made by a theatre keyboard programmer, for eight shows a week. Each choice below comes from something that went wrong in a pit.

A crash never stops the show

Every plugin runs in its own process, apart from Joue and from each other. If a plugin crashes, or keeps falling behind the audio, Joue restarts it in a fraction of a second. If it fails again, Joue switches it off and says so, plainly, on the screen.

The other channels never notice. You lose one sound for the rest of the number, not the show.

Joue's audio engine
  • PianoPlaying
  • BrassPlaying
  • Strings PadSwitched off
  • HarpPlaying
Each plugin in its own process. One fails; the rest play on.

No beachball

Nothing that can take time, such as loading samples or saving, runs where it could hold up the screen or the keys. Joue measures this in its own tests, so the next patch is always one press away.

Silent start and stop

Opening a show, changing the buffer size or the interface going away and coming back: none of it makes a click. The sound desk and the PA hear nothing they shouldn't.

Portability

Everything is in the Joue save: one folder, with a handful of files. Copy your project to another Mac with the same plugins installed, and you can guarantee it will just work. Which keyboard is which is kept on each Mac, as its rig, so the show never changes when the hardware does.

Loading ahead, within a budget

Joue loads the patches coming up, and lets go of ones long past, inside a memory budget you can see. A big show fits on a small Mac, and the next patch is ready before you reach it.

Aliased by default

Channels can be routed to multiple patches, avoiding duplication of the same sound over and over in the project (known in MainStage as aliases).

A way back in

If a plugin won't let a show open, open it in safe mode: every plugin stays off until you turn it on, one at a time or all at once. Panic silences everything, from the Mac or a button on your keyboard.

See how it compares with MainStage

Coming from MainStage