Concept image

Beatrix - Home

Updated 1 July 2006

Beatrix sound samples: sample one, 54 seconds and sample two, 76 seconds. Read more about them here.

Welcome to the home of Beatrix. Beatrix is a MIDI-controlled, software synthesizer designed to imitate the sound and properties of the electromechanical organs and sound modification devices that brought world-wide fame to the names and products of Laurens Hammond and Don Leslie.

Major features

Imitated organ features

Imitated amplification features

System Requirements


The most recently published version of Beatrix is available from the download page.

Modelling Highlights

With version 0.4 of Beatrix, the tonegenerator for the first time models the whole connection matrix between tonewheels and playing keys on three separate manuals. It includes:

Harmonics and crosstalk

In the original instrument, the tonewheels, pickups and filters were designed to produce the purest possible sine signals. Never perfect, wear and age sometimes release additional harmonic content to the signal from the tonewheel.

Tonewheel signal level and harmonics mix can be set globally (one mix for all wheels) and individually for one or more wheels.

In and on the mechanical tonegenerator, space is cramped and signals from different wheels run close to each other before they arrive at their terminal, the attachment point for further signal distribution into the instrument. This creates a certain level of crosstalk present at the terminal.

A crosstalk mix of tonewheels and levels can be individually specified for each terminal on the tonegenerator. Contributions from the following predefined crosstalk models for the tonegenerator can be individually controlled:

Wires transport the signal to contacts (usually nine) under each manual key. The amount of wiring needed, forces them to run in proximity to each other and introduces additional crosstalk, which is different in each key and contact. In some instrument models, wiring from six different classes of resistance is used, to provide each drawbar with its own equalisation (tapering).

A crosstalk mix of terminals and levels can be specified for each key and bus. The mix is created by combining a tapering model and a crosstalk model for the wiring.

If anyone knows the difference between crosstalk and drawbar leakage, please do tell me!

Upper, lower and pedal manuals

Each manual has its own set of drawbars and can be assigned its own MIDI channel. The upper and lower manuals can also be played from a single keyboard using keyboard split on the same MIDI channel.

Efficiency and routing

Prior to version 0.4.1, the contributions from each played key are independently mixed into drawbar buffers. Then, the drawbar buffers are mixed into the output. This has the drawback of copying and mixing the same signal several times, which is redundant. Scanner vibrato is an effect that follows the tonegenerator, so it is incorrectly applied to the percussion as well.

In version 0.4.1, a mixing model is maintained that copies the sound from each tonegenerator at most three times, regardless of the number of drawbars employed or the number of keys played. Three copies are needed, because each manual may be independently routed through the vibrato scanner (or not), and the percussion signal is subject to a separate envelope. The routing has been changed to make the scanner vibrato internal to the tonegenerator, thus bypassing the percussion signal.


Arnout Engelen's Beatrix page

Work in progress

18 April 2006

Sorry for the lack of news, but work is slow. Documentation is being prepared for version 0.54 (or around there at least).

13 February 2006

The latency problem with the ALSA PCM API are resolved, but unfortunately not without a certain amount of guesswork and experimentation. The examples, the documentation and the library were mutually ... inconsistent.

31 January 2006

Beatrix appears to work just fine under ALSA's emulation of OSS, so ALSA user's need not feel excluded. Still, the first stumbling attempt targeting the ALSA API directly made its first sounds yesterday and the latency is absolutely horrible. A working version is not predicted any time soon. The previous months have been spent on enhancements and finding and fixing bugs, some old and some new.

29 September 2005

After weeks of fragmented work, another Debian system is finally set up for development. This will hopefully enable me to pursue the much requested ALSA/Jack track further. In the meantime I have been playing, and to my delight I find that I still like the sound.

20 April 2005

Two sound samples (sample one, 54 seconds and sample two, 76 seconds) of Beatrix has been created. I apologise for the audio quality which unfortunately is less than what I would have preferred. The reason for that lies mostly with an inferior A/D recorder. But it is something to improve upon and I don't think it will matter much through the computer loudspeakers for which it is intended.

The samples were recorded on analog magtape and then mixed and digitized. Beyond the tape, Beatrix is unprocessed and set up for a pedal/upper split, overdrive, reverb and rotary speaker FX. It is played with registration 888 0000 00, C3 vibrato and 3rd harmonic, fast percussion.

Sample one has a background drumtrack for pacing with some reverb added. The stereo image of Beatrix is panned to 10 left and 2 right (imagine the face of a clock imposed on the pan-pot, 12 being dead center). This reduces the rotary effect but also allows the L-R channels to interact with each other.

Sample two is slightly more aggressive, and has some more company in the form of two guitars. Beatrix is mixed in the foreground so it can be heard, but is musically actually part of the background. Beatrix is panned fully left and right so you can get a closeup sense of that rotary effect.


Finally managed to release version 0.4.1. The release includes some configuration files that shows how different setups can be specified and combined.


The MIDI parser has been rewritten to accept messages on three channels and a two- or three region split on the main channel. Contrary to my expectations, splitting the keyboard turned out to be a quite delicate affair. From a technical point of view it is almost trivial to implement, but the Human-Machine Interaction part presented a challenge. At the end, I opted for predictability over cleverness.


Version 0.4.1 is slowly accumulating (but not yet published). The main feature is a rewrite of the tonegenerator.


Decided to release version 0.3.4 as it is, simply because I like the sound it makes. Hopefully you do too.

The overdrive FX is has stabilised itself and is (in my opinion) the best yet (achieved by me, that is). The rotary speaker FX has been completely rewritten, using a technique published here.

In the not-ready department, there can be some (internal) digital clipping if the volume is pushed too hard. This will be dealt with in time.


Well, things are indeed moving slowly. There has been no new release, mostly because the current version is experimental indeed. The overdrive module is still the focus of my attention. In relation to the previous entry (below), the signal chain through it currently consists of a 4x interpolation filter, an integrator, a differentiator, a transfer function that blends two separate curves: one provides soft clipping while the other given crossover distortion. The transfer function is then followed by a differentiator, an integrator and finally a 4x decimation filter.

Obviously I am experimenting with the integrators and differentiators; I believe that they may have some sonic properties that are similar to the transformers of which there are several in the real thing. In DSP terms, they are just filters, of course.


For the last few months my attention has been on the overdrive module. It has been completely redesigned to allow for easy experimentation on components and parameters. Currently, it consists of a pre-filter, a crossover disruptor, a 4x interpolation filter, a polynomial transfer function, a decimation filter and a post-filter. My aim is to integrate the crossover disruptor with the transfer function, either as a parametric function or as a discrete simulation model. We'll hear what works.

Contact me

You can email me on fk @; put "Beatrix" in the subject line.