|
Reproducing the sound of a Hammond Organ in all its moods seems not to be a particularly simple task. Not only does an emulation have to provide adjustable 'Drawbars', but, to recreate all the throatiness a Hammond can pour out, it has to have capabilities such as a "Leslie" and Vibrato as well. 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 (7.3) has further adjustments to bring it even closer This emulation is intended to be driven from live MIDI input, with further control 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 and '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".) The Percussion scheme and Vibrato follow the same principle, the latter using a "scanner" that modulates frequency and amplitude the same way the hardware does. Much of the code is based heavily on Hans Mikelson's 'RotorOrgan', though it has metamorphosed considerably. I've added a page with more technical background if you're interested. 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"). 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.) 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 or set in the Score, 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 (485K). (It's about a minute long, in three, somewhat choppy, parts — the first two about 15 secs each. It was generated from the midifile that Hans Mikelson included as a demo with his original code. The midi and score files for it are downloadable below. This, and the following demo were actually made with an earlier version, so they're a bit top heavy and weak in the bass, but you'll get the idea.) For fun, I've also made an mp3 of "Jerusalem" in "EL&P" mode. This was generated from a variant of a midifile sequenced by Takahumi Sugimoto, with the organ parts driving the emulation instead of the General-MIDI synth. (I have no idea how close this is to Keith Emerson's drawbar settings, as I don't have a copy of the original piece. I just flipped between some registrations that sounded reasonable.) |
|
If you're not familiar with Csound, it is a cross-platform, open source, (and now rather venerable) sound synthesis package. For reference, I run Csound 4.23 (without a GUI) under my own MusicWeaver package on BeOS [OK, so I'm a nonconformist... (:-)], which lets me have a single configuration that both runs Csound as a shell command, and does some preprocessing of the live MIDI stream. With this setup, I can feed Csound both from MIDI and stdin, so Instrument commands can be sent to it while playing. I have a window of "Presets" where I can quickly select a line (or create a new one) and send it to Csound at any time. [If you're one of the noble few who stick with BeOS (:-)) and want the above Csound version for it, it's on BeBits, or you can get the x86 zip archive directly. (I haven't published my MusicWeaver configuration, because it is so personally tailored, but contact me if you're curious.)] (There seem to have been some changes to Csound 5, relative to Csound 4, that prevent the original scheme of sending new 'start' commands to change parameters of running Vibrato etc. from working, but this version has an alternative way of achieving this.) |
|
Read a more detailed description in the README. These four other files are in the package:
|
All the above files are packaged as archives, if you prefer:
The midifile and score used to generate the short audio demo above are in a separate package:
|
If you have any questions or comments, you can send me a note here,
and I'll be glad to help if I can.
Pete Goodeve
Berkeley, California
e-mail: pete@GoodeveCa.NET
pete.goodeve@computer.org