Author |
Message |
Tim Kleinert
Joined: Mar 12, 2004 Posts: 1148 Location: Zürich, Switzerland
Audio files: 7
G2 patch files: 236
|
Posted: Thu Apr 05, 2012 1:20 pm Post subject:
Comprehensive Octave-Phase-Coherent Oscillator Suite Subject description: All classic waveshapes available; Lowest possible DSP usage; Good sound; |
|
|
These algorithms are a consolidation of new patching techniques I've been exploring. They are intended as building blocks for patches that emulate divide-down-type instruments like classic string machines or transistor organs. I already posted an attempt some time ago, but these ones are far more elegant, use about half the DSP load and sound better too.
The circuits generate octave-phase-coherent oscillators over a keyboard range of 5+ octaves, starting at C2. All classic waveforms (triangle, sawtooth, pulse) are available, either separately (more economic) or simultaneously. Good sound quality and low DSP cost in the voice area were highest priority. Hence everything that needs to be calculated only once has been moved to the FX area, where stuff is piped back to the voices via two interslot busses.
EDIT: I found another all-too-obvious improvement, bringing down the DSP usage even more. All patches have been optimised and re-uploaded. Here are the new stats:
Voice Area DSP usage (cycle/mem) for the different oscillator circuits (bare circuits without any extras):
Triangle: 13/11.7
Sawtooth: 13.7/13.3
Square/Tri: 14.4/13.3 (square is derived from triangle through shaping)
Saw/Pulse/Tri: 18.6/15.6
All waveforms are available simultaneously on the multi-wave versions.
The FX area contains the whole osc driver engine and uses 30.6/43.8. It generates 64 simultaneous octave-phase-coherent oscillator drivers and squeezes them through two interslot busses.
If, due to this, you run out of DSP in the FX section, just create a performance. Put the osc driver into the FX section of any free slot and use another slot for your patch, thus having a full free FX section for your design. Just remember that interslot buss 1 and 2 are used.
There's an optional vibrato implemented (move modwheel), just to show how to do this.
I used a constant module with accurately tweaked keyboard morph to obtain note information, rather than using the wasteful keyboard module.
Note to the square wave: this is derived from the triangle wave through hard-clipping and fierce feedback. The feedback is way above unity gain
so the waveform flanks are steep enough to generate the characteristic buzzy high frequencies. This works well for square. Variable pulse width is also possible by mixing a DC offset into the feedback loop. However the feedback then has to be reduced to unity gain, otherwise the waveshaper will clamp. So PWM is available but will sound a bit less brilliant. (see example patch)
These are the absolute lowest DSP counts I could muster for such an actually quite complex task. I hope they are low enough to be useful. It was an exercise in super-efficient patching while maintaining a good sound quality. There's only a slight tad of aliasing in the square wave at the uppermost notes, which can be dealt with by lowering the shaper feedback (eg. by subtle negative keyboard morph).
"May the problem of octave-phase-coherency be forever banished!"
Description: |
Octave-phase-coherent triangle oscillator building block; see thread for info; |
|
Download |
Filename: |
OctPhCohTriOscTK.pch2 |
Filesize: |
4.35 KB |
Downloaded: |
4259 Time(s) |
Description: |
Octave-phase-coherent sawtooth oscillator building block; see thread for info; |
|
Download |
Filename: |
OctPhCohSawOscTK.pch2 |
Filesize: |
4.48 KB |
Downloaded: |
4373 Time(s) |
Description: |
Octave-phase-coherent tri/square oscillator building block; see thread for info; |
|
Download |
Filename: |
OctPhCohSqrOscTK.pch2 |
Filesize: |
4.58 KB |
Downloaded: |
4275 Time(s) |
Description: |
Demonstration of PWM on the octave-phase-coherent tri/pulse oscillator building block; see thread for info; |
|
Download |
Filename: |
OctPhCohPWMOscTK.pch2 |
Filesize: |
4.65 KB |
Downloaded: |
4265 Time(s) |
Description: |
Octave-phase-coherent tri/square/sawtooth multi-output oscillator building block; see thread for info; |
|
Download |
Filename: |
OctPhCohMulOscTK.pch2 |
Filesize: |
4.81 KB |
Downloaded: |
4303 Time(s) |
Last edited by Tim Kleinert on Thu Apr 05, 2012 3:43 pm; edited 1 time in total |
|
Back to top
|
|
|
Tim Kleinert
Joined: Mar 12, 2004 Posts: 1148 Location: Zürich, Switzerland
Audio files: 7
G2 patch files: 236
|
|
Back to top
|
|
|
dorremifasol
Joined: Sep 28, 2006 Posts: 814 Location: Barcelona, Spain
Audio files: 7
G2 patch files: 49
|
Posted: Fri Apr 06, 2012 1:23 am Post subject:
|
|
|
Seems that you are very inspired lately Thanks for the blocks!
They don't work in the demo, I'll try them at home. _________________ Cheers,
Albert |
|
Back to top
|
|
|
Tim Kleinert
Joined: Mar 12, 2004 Posts: 1148 Location: Zürich, Switzerland
Audio files: 7
G2 patch files: 236
|
Posted: Fri Apr 06, 2012 1:44 am Post subject:
|
|
|
dorremifasol wrote: | Seems that you are very inspired lately Thanks for the blocks!
They don't work in the demo, I'll try them at home. |
Easter holidays...
Don't expect much of these patches, they just produce bland waveforms. But octave-coherent waveforms. If you're into patching Solinas and Polymoogs etc., they might be interesting. Otherwise probably not.
I'm making some fascinating discoveries concerning modulo operations, it's addictive. This is simply byproduct of that. |
|
Back to top
|
|
|
dorremifasol
Joined: Sep 28, 2006 Posts: 814 Location: Barcelona, Spain
Audio files: 7
G2 patch files: 49
|
Posted: Fri Apr 06, 2012 1:49 am Post subject:
|
|
|
Do you remember your trick using phase filter to fatten the waveforms?
Would it be possible to do it in the waveform building block in the FX area? _________________ Cheers,
Albert |
|
Back to top
|
|
|
Tim Kleinert
Joined: Mar 12, 2004 Posts: 1148 Location: Zürich, Switzerland
Audio files: 7
G2 patch files: 236
|
Posted: Fri Apr 06, 2012 2:43 am Post subject:
|
|
|
This design doesn't generate the waveform in the FX area. It is directly derived from the demultiplexed and modulo-linearly reconstructed oscillator driver (a trivial audiorate sawtooth) through waveshaping. This is the most economical way, and also uses up only 2 interslot busses.
Of course it is perfectly possible to combine the octave-phase-coherency technique with anti-aliased user-definable waveforms. The high poly organ patch does exactly this, the user-definable waveform in this case being additively generated by sine waves corresponding to the drawbar footages and levels. It's almost like cheating. |
|
Back to top
|
|
|
|