The Box of No Return

summary

The Box of No Return III is a Linux-based musical synthesizer platform, suitable for live musicianship, designed to handle multiple patches with enormous demands, and switch between them with zero delay and zero cutout.  If you sit in your home studio and use single SoundFonts with a laptop and simple GUI, you don't need this.  If you play live, and/or if you want to pile on the tone generators and filters in order to experience the unyielding power of the musical harmonic roar, a full implementation of the BNR may suit you well.  There are obviously middle grounds too ☺, and there are articles here to help in general.

the purpose of this project

The BNR exists to apply major computing power available, to music tone generation. We don't want to be limited to the cute little processors in commercial keyboards. The available difference is so great between the two, that we should be able to produce subjective multiple orders of magnitude increase in tonal depth and profundity, using what we have available in general desktop computing hardware, especially running Linux, where we are at least potentially less limited. And this will.

the code

The project and its code are here.  There are SF2 SoundFonts involved in the current build which are downloadable here; these are conversions of the Sonatina Symphonic Orchestra, original SFZs being here. Friend Bruce Schultz recently pointed out that two SF2s are missing, and these are now here.

current status

We have the Supermega Rumblic Organ which uses six Yoshimi patches spread over three independent Yoshimi processes. The Strings are massive and deep in the low, and feathery in the high, using a large number of different SoundFonts combined into one SF2 with other SF2's running at the same time. And Flowbells are smooooth. There are ways to combine them too.

a summary of how

First we set up a good Linux distro like Manjaro which does both Pipewire and major Linux audio applications, on good PC hardware, say a quad-core at 3.3GHz or so, better obviously better. Then we get audio to work well using Pipewire. Then, we clone this whole repository into a folder called BNR, in the user home folder of an automatically logging-in user. There's a number of software tools you'll need to add, there's a list below. Then we take a MIDI keyboard, and plug it in using a USB MIDI interface. It's breathtaking once you get it all running. Here's the list. Some may already be present, and some may be a bit tough to get in. You can certainly substitute; obviously, if you do, you'll need to customize the "glue" accordingly.

On your MIDI keyboard, you'll need to find out how to get the MIDI keyboard to send MIDI note-events and sustain-pedal-events out, and how to set the channel; all MIDI-capable keyboards have had the ability to do this for quite a few decades. Once you have done this, and the BNR is hot, if you send your note-events on channel 1 you get the Supermega Rumblic Organ, on channel 2 you get Strings, and more; look in the source for Distribute.py for the more, it is the applet which controls the translation. Each one of the patches is a combination of tone generation applications and other applications to mix and modify their signals, all connected by Pipewire.

architecture

To connect audio applications in series, in other words to make either a synthesizer or audio processor in Linux, one must use something which can accept and maintain "wires", connections, between the applications. For twenty-plus years the most standard way to do this has been JACK, which stands for the Jack Audio Connection Kit. This is still the most common standard as of this writing. The previous iteration of the BNR used multiple JACK processes in tandem, because the one JACK process used in the original (in standard fashion), often crashed under the strain. Iteration III uses Pipewire as its foundation, for a quite drastic increase in performance. Pipewire is API-agnostic, it will interconnect any of the current common audio APIs in Linux, e.g., JACK, ALSA, Pulse, et cetera, and it will handle demands in a very non-round-robin manner, producing a startlingly flexible result. BNR III still does use the JACK API for many good reasons, ranging from toolset to just plain excellence in this and similar modes, but it is Pipewire responding now and keeping the wiring.

postscript

Many prayers granted, enormous help from the Linux Audio community, and much study, work, and trial and error, has gone into making this happen reliably and well.  My gratitude to all!