Skip to content

Ho-Ro/connie

Repository files navigation

Connie

Simple simulation of an electronic organ like e.g. Vox Continental.

This program is intended as a toolbox for creating an electronic organ program with JACK MIDI input and JACK audio output for Linux.

Vox Continental

The Vox Continental transistorized combo organ creates the sound from twelve individual tunable LC oscillator boards with a six stage octave diver. The resulting 84 frequencies (RC filtered rectangular signals) are mixed with four contacts at key press and summed for the four stops. The different voices (flute and reed) are created by summing the original mix and a two stage RC filtered signal. The fixed switchable vibrato signal (RC filtered rectangular) introduces a fm at the oscillator boards.

For the connie program I looked at the schematics and wrote the software according to the signal flow with some tweaking of the voices.

There is a lot of info and the schematics available for the Vox Continental.

The Software

Connie is a JACK application. It has one MIDI input and a stereo audio output. The sound is generated by sampling lookup tables with calculated waves at 12 equal tempered frequencies for one octave. The upper octaves were generated by sampling with greater sample steps.

This solution allows a moderate cpu load.

The sound of each note is ramped on and off to reduce the key click. For each sounding note four stops are mixed:

  • The subharmonic 16' (one octave lower)
  • The unison stop 8'
  • The octave stop 4' (one octave higher)
  • The mixture stop 2 2/3' (octave+fifth), 2' (superoctave), 1 3/5' (superoct.+major third), 1' (superoct.+octave)

To cover a broad variation of sounds three voices from two lookup tables can be mixed:

  • Flute - a sine wave
  • Reed - a bandlimited rectangle wave
  • Sharp - a bandlimited sawtooth wave

For the reed/sharp voice I've created own samples of bandlimited signals for each octave. These samples are mixed at octave border to minimize the ugly "sound jump". This combination allows a much wider sound range from very soft to very harsh. To get the typical cheesy "Connie" sound you have to fiddle with theese voices. I'll do more experiments with the waveforms and the lookup tables - but my first goal was to hear some noise ;)

Drawbars (vol = 0..8) control the four stops, the three voices and the intensity of the vibrato and percussion.

The vibrato works as a combined stero am and fm to create a sound like a very simple leslie - massive work has to be done, maybe with the help from some experts out there...

Poor Man's Hammond

I'm working on a second test model with individual control of each stop and some other changes, kind of poor-man's-hammond, but (at the moment) without all the hammond special effects (leakage, click, random phase of wheels, vibrachorus etc.). This "hammond" project is just the extrapolation from the registers (16', 8', 4' and the mixture 2 2/3' + 2' + 1 3/5' + 1') already existing in connie to the well known nine numbers with a sine voice. This p-m-h model should therefore not be called Hammond, but Test.

Critics and hints are welcome, I need input for improvement.

Usage

usage: connie [opts]
  -a                      autoconnect to system:playback ports
  -c CHANNEL              MIDI channel (1..16), 0=all (default)
  -f                      french AZERTY keyboard
  -g                      german QWERTZ keyboard
  -h                      this help msg
  -i INSTRUMENT           0: connie (default)
                          1: poor-man's-hammond
  -m MIDI_PORT            connect with midi port
  -p PITCH                concert pitch 220..880 Hz (default = 440 Hz)
  -s INTONATION_SCALE     0: Hammond Gears
                          1: Equally Tempered
                          2: Pure Intonation
                          3: Pythagorean
                          4: ¼ Comma Meantone
                          5: Werckmeister III
                          6: Kirnberger III
  -t TRANSPOSE            transpose -12..+12 semitones
  -v                      print version
  -C configfile           load config file
  -U UUID                 set jack session UUID

VOX is a registered trademark of VOX AMPLIFICATION LTD.