An update from the tonewheel and divider-organ front:
- jt/tonewheels/pwm dpw
- jt/tonewheels/saw cheap phasing
- jt/tonewheels/saw cheap
- jt/tonewheels/saw dpw phasing
- jt/tonewheels/saw dpw
- jt/tonewheels/sine
- jt/tonewheels/tri dpw phasing
- jt/tonewheels/tri dpw
- jt/tuning/adjustable
- jt/tuning/equal
- jt/tuning/hammond
- jt/tuning/just
- jt/drawbars/pulse
- jt/drawbars/scope
- jt/drawbars/switched
- jt/env/table/ar
- jt/env/table/r
Simple demo patch in
* jt/patches/tonewheel chainsaw organ.axp
Multi panned sawtooth demo patch in
* jt/patches/tonewheel chainsaw organ.axp
Specific to these organs is that they do not use voice allocation, but use a constant running set of chromatic oscillators, the sound output is a mix (depending on keys pressed and drawbar settings) of these fixed oscillators. The overtones (as adjusted via the drawbars, not the harmonics from the tonewheel oscillator waveform) are not natural overtones, but tap from the same oscillator set, so they have the same phase.
The assumption that a set of oscillators is a chromatic set, with fixed 2:1 octave frequency ratios allows to optimize quite a bit of the oscillator algorithms.
Trying to separate tonewheel and divider-oscillator based organs into flexible construction pieces, leads to a set of objects for tonewheels with different waveforms, drawbar objects to manipulate the harmonic composition/registers, table-envelope and tuning objects. So different oscillators, envelopes, drawbars and tunings can be combined.
The drawbar objects in fact expose a 128-element table containing the amplitudes, the tuning objects expose a 12-element table with the linear frequencies of 1 octave.
Besides (loosely) modelling Vox continental, Hammond B3, Arp Solina, Eminent... style organs, I believe there is also potential for non-organ type applications via other generative or arpeggiating constructions that generate a tuning and chromatic amplitude table.
Feedback on the "decomposition" of tonewheel/divider oscillator type organs into objects is welcome.
For me, it shows me that a "wired" connection for tuning and amplitude table would be more intuitive rather than a named object reference.