Hi All,
Just a quick query as to whether anyone has any experience implementing Moorer’s DSF (Discrete Summation Formulas) for synthesis in the form of UGen graphs, or directly in sclang?
Strangely, I’m not returning the expected results… and am beginning to doubt my sanity! I’m seeing two things:
- unexpectedly steep rolloff of higher partials for non-bandlimited synthesis with Moorer’s eqs. (2) & (4)
- what looks like phase drift (?) of cancellation components for bandlimited synthesis with Moorer’s eqs. (1) & (3)
I see unexpected rolloff with UGen graphs using both SinOsc and FSinOsc for sinusoid synthesis. And when using Signal:-sineFill2 in sclang, I see something similar. (The resulting spectrum appears low passed.)
The phase drift-like issue appears in the UGen graph context; phase of the bandlimiting cancellation components seems to slowly drift out of sync with the main summation components. The effect is that after a certain amount of time, the partials that are to be suppressed gradually fade in. (I’m not completely convinced that phase drift is what generates this effect.)
I’m rather puzzled here, particularly as Moorer illustrates MUSIC-V implementations for synthesis… so I’d think an SC3 UGen graph would be suitable.
My initial suspicion was that wavetable oscillators with separate phasors may not what we need for the job. With sclang implementations, interpolation and/or phase sync/drift shouldn’t matter—especially if we’re only attempting to generate a single periodic cycle.
Any thought on the matter? Maybe I’m missing something?
… I can throw up some code to illustrate… but thought I’d start with my initial observations / presumed incompetencies.
-
Moorer, James A.; 1976; The Synthesis of Complex Audio Spectra by Means of Discrete Summation Formulas [PDF]; Department of Music, Stanford University, Stanford, CA; Paper ; Available from: https://aes.org/publications/elibrary-page/?id=2590