hammond

Tuning table for tonewheels using hammond organ ratios. This does NOT follow the tuning deviation of the upper 7 tonewheels of the B3 as documented at http://www.goodeveca.net/RotorOrgan/ToneWheelSpec.html/
Author: Johannes Taelman
License: BSD
Github: jt/tuning/hammond.axo

Inlets

frac32 in semitones

Outlets

None

Declaration
static const uint32_t LENGTHPOW = 4;
static const uint32_t LENGTH = 1 << LENGTHPOW;
static const uint32_t LENGTHMASK = (1 << LENGTHPOW) - 1;
static const uint32_t BITS = 32;
static const uint32_t GAIN = 0;
int32_t array[LENGTH];
Init
int i;
for (i = 0; i < LENGTH; i++) {
  array[i] = 0;
}
Control Rate
int32_t f0 = mtof48k_ext_q31(inlet_detune + (24 << 21));

// hammond gear ratios
const float ref_E = 0.5f * 67.f / 69.f;
static const int32_t intervals[] = {
    (int32_t)((1ll << 31) * 85.f * ref_E / 104.f),
    (int32_t)((1ll << 31) * 71.f * ref_E / 82.f),
    (int32_t)((1ll << 31) * 67.f * ref_E / 73.f),
    (int32_t)((1ll << 31) * 70.f * ref_E / 72.f),
    (int32_t)((1ll << 31) * 69.f * ref_E / 67.f),
    (int32_t)((2ll << 31) * 54.f * ref_E / 99.f),
    (int32_t)((2ll << 31) * 37.f * ref_E / 64.f),
    (int32_t)((2ll << 31) * 49.f * ref_E / 80.f),
    (int32_t)((2ll << 31) * 48.f * ref_E / 74.f),
    (int32_t)((2ll << 31) * 66.f * ref_E / 96.f),
    (int32_t)((2ll << 31) * 67.f * ref_E / 92.f),
    (int32_t)((2ll << 31) * 54.f * ref_E / 70.f),
};

int i;
for (i = 0; i < 12; i++) {
  array[i] = ___SMMUL(f0, intervals[i]);
}

Privacy

© 2024 Zrna Research