On 4/11/06, Frank Barknecht fbar@footils.org wrote:
Hallo, Chuckk Hubbard hat gesagt: // Chuckk Hubbard wrote:
The way I'm conceiving of this, though, each of the 20 note abstractions would require 30 oscillator abstractions...
Any chance of that happening in real time?
600 naked [osc~ 100] objects on my machine work in realtime, however it sucks about 75 percent of the CPU ("Intel(R) Pentium(R) M processor 1.60GHz").
Basically you are doing additive synthesis here, which you can do it two or three ways. One is the oscillator bank as used in the example patch. This is very flexible but also very demanding. It normally is used when you want to independently control the amplitude and/or frequency envelope and phase of every partial during the course of the note. Another possibility to do it is resynthesizing with an inverse Fourier transform, which can be less demanding, but you loose some of the flexibility of the oscillator bank approach.
The cheapest route to go is to build the partial table in advance with "sinesum" and then just use one [tabread4~] per voice. If your partial setup doesn't change while a note is playing this would be the way to go. Instead of "sinesum" you can also built other kinds of wavetables by writing them manually with e.g. [expr].
This is what I did originally, and I devised an intricate system so there was only one set of oscillators, and it wrote to whichever array was being edited. At least I thought it was intricate. I now have the exact same system, but the tabread~ is controlled by those spectrum-table-reading oscillators (now phasors). So if I want pure spectrum-reading, I put a sinewave in the graph; and if I want pure table lookup, I put a constant in the spectrum table. My PC is fast enough to handle it, but the school's Macs are having a hard time.
I am really in love with the sound of FOF and am interested in CPU-cheap ways to do it in Pd.
-Chuckk