“Rotor Organ”

A Csound simulation oriented to live playing

Version 8.1 — December 2018

I’ve been captivated by the sound of the Hammond “Mighty B3” for a long time, and really wanted to be able to reproduce something like it on my computer. Getting that sound in all its moods, though, is not exactly a simple task. A good emulation of course has to have the Hammond’s adjustable ‘Drawbars’, but in addition, to recreate all the throatiness a Hammond can pour out, it has to have capabilities such as a “Leslie” and Vibrato. This Csound emulation has now evolved to a point where I believe it matches the “Hammond sound” quite creditably — considerably better than other software I’ve tried previously. The latest version (8.1) has further adjustments to bring it even closer

This emulation is intended to be driven from live MIDI input, with some control also through ‘score’ commands, either from a file or sent during performance to the program’s stdin. It allows for the two keyboard manuals that a Hammond has, each with its own drawbars. Hammond-type Vibrato and ‘Percussion’ are available, and output can be through a “Leslie” rotary speaker simulation with ‘Overdrive’ (to add some characteristic distortion). There are two types of Reverb: ‘Room Reverb’ and the somewhat different ‘Spring Reverb’.

The approach has been to try to simulate the actual mechanism of a Hammond as closely as possible. Even tone generation now goes the whole nine… umm …drawbars… and uses “tone wheels” in code that have the exact “gearing” and “teeth” of those in the original. (Hammond tone wheels generate neither exact harmonics nor true equal-temperament output, possibly contributing to the “Hammond sound”. A table of the actual frequencies and their derivation is here for those interested.) The Percussion scheme and Vibrato follow the same principle, the latter using a “scanner” that modulates frequency and amplitude in the same way as the hardware does. The code was originally based heavily on Hans Mikelson’s ‘RotorOrgan’, though by now it has metamorphosed considerably.

Live keyboard MIDI input is normally on channels 1 and 2 (“Swell” and “Great” manuals respectively). Swell pedal control for these is Controller 11 (“Expression”) — on channel 1 for both. Drawbar settings can be made through a bank of MIDI controllers on the respective channel, or through score commands. A short range of channel 3 notes can be used to set Leslie speed — by default the lowest 8 keys of an 88-key piano. (Or, again, score commands can be used.) Channel 3 also offers a number of controllers to manage Percussion, Vibrato, Reverb and Overdrive.

If your system isn’t capable of supplying all these inputs, you can just use a single MIDI channel, and control everything else through (real-time or file) score commands. All defaults are constants at the beginning of the Orchestra file, so they can easily be changed as well.

If you want to get a quick idea of what the emulation sounds like, you can grab an mp3 here (506K). It was generated from a midifile originally provided by Hans Mikelson with his original code, now tweaked to show the new features.

It’s about a minute long, in three, somewhat choppy, parts — the first two about 15 secs each. There’s a bit of Reverb on each. Part One has Percussion (3rd Harmonic, Slow), while Part Two is smoother with ‘C2’ Chorus. Part Three goes full-on Rock God, with all drawbars fully out, ‘C3’ Chorus, Spring Reverb and Overdrive. (This last has had its final volume reduced post-recording, because Overdrive naturally increases the output level considerably.)


For a more elaborate example, here’s a rendition of Tico Tico that features this Csound ‘Hammond’. It was generated with a version of the Csound program that includes a fluidsynth player, so it was able to play all the instruments in the source midifile (which is extensively customized from an original of unknown origin).

The midifile and program may appear here at a later time.

Another … ‘lost’ … Hammond instrument, the “Novachord”, has a Csound recreation here.

The downloadable package has the following files:

  • rotororgan.csd
       The Unified Csound file, containing all the Instrument code and default setup.
  • README.html
       Description and Usage information.
  • Technical.html
       Details on the internals.
  • Axiom.html
       My personal keyboard setup.
  • rotordemo.mid
       Midifile for the demo.
  • spring_reverb24.raw
       Data file for Spring Reverb.
Download a zip archive (192K)
Download a gzipped tar archive (191K)
If you have any questions or comments,email me at either of the addesses below and I’ll be glad to help if I can.

                                Pete Goodeve
                                Berkeley, California

                e-mail: pete@GoodeveCa.NET
                         pete.goodeve@computer.org

Back to Main Page