On Sunday 26 October 2003 09:13, Larry Troxler wrote:
On Friday 24 October 2003 15:12, Frank Barknecht wrote:
Yes, you're right, it behaves that way. It might very well be that there indeed is a bug hidden (although it still makes interesting sounds... ;)
Frank, I replaced the formula with the one in this paper:
www.ccrma.www/~stilti/papers/blit.pdf
That's www-ccrma.stanford.edu/~stilti/papers/blit.pdf
The forumula is in section 3.5.
Some details I've found, that you can see by looking at the summation form: N is actually the number of harmonics plus one, so that you need N=2 to generate a sinusoid. Also, the amplitude of the fundamental is scaled by a, which maybe is not very intuitive. I would more expect the fundamental to stay constant and have the other partial amplitudes relative to that (in which case you could just multiply the formula by 1/a). But maybe we should see how csound does it.
Other thoughts:
(o) It would be nice if the a parameter could be a DSP signal as well.
(o) I didn't bother with the theta (initial phase) parameter that's used in the formula - I just set it to zero and didn't compute it. I think it's only usefull if the output is then nonlinearized of if FM is used on it, right?
(o) csound has gbuzz which lets you set the starting harmonic as well. I think you would just subtract two buzz's to do this, but maybe something in the formula cancels out when you do this, reducing the computation
(o) Would it make sense to have a version that takes input from an external
phasor, rather than using one internally? In this way the computation would
be reduced when using a few of these to generate a complete spectrum as is
described in the paper.
Larry