Non-Harmonic Resonator
Implemented the filter from the paper I pointed to a couple of posts back, a comb with internal reverberator. It's quite interesting. Surprisingly, it can do OK human voices without any formant filtering whatsoever, and it can sort of add to the 6 format string patches (violin, etc.) to flesh out the upper end. And, being a delay / filter, it can do other fairly "wild" stuff one expects delays to do. I need to get the Q higher so that it can do bells better (decay is too short), and there is an issue now and then with high frequency ringing going on way too long, but it's fairly useful as-is:
The 'c' parameter is much like the Q control in a 2nd order filter. The 'k' parameter controls non-harmonic blend, and I find that I'm not using the 'g' path at all, which is straight through. As a formant filter it should be placed in parallel with the other formants, but as a delay effect it should be placed in series. You make either make 'c' signed or 'k' signed to get odd / even comb feedback.
Here's a sample: [MP3]. The first three are resonances "struck" by a sine wave w/ attack, the third has maximum delays and some overloading. After that are some human voices. Following that is my usual 6 formant cello, first without the new filter, then with the new filter in parallel, then without (for comparison purposes). The filter pumps up the bass with that cello setting, which somewhat confounds the comparison.
I wouldn't want to depend on it entirely for human voices (SVF formants sound better IMO) but, like a dog walking on it's hind legs, it's remarkable that it can do it at all. Whatever the approach, female voices are always easier / more realistic sounding because the resonances are higher, and the harmonics start higher and so are more widely spaced - it's simply the case where there are fewer cues to tip off a phony. This is why you run across many analog Theremins that can do a passable female vowel, but can't do a male vowel without external help like the EH Talking Machine.
After my experience with this type of delay-based filter doing formants, I'm now somewhat wary of physical modeling synthesis in general, as it is delay-based. I wonder how many physical models have audible artifacts of the underlying delays?
Before I added the filter I did a quick inventory of processor real-time and memory left over. Of the 7 real-time threads (thread 7 does non-real-time stuff: displays, encoders, serial port command line, etc.) I had around 46% real-time to spare, and also about half of the 16kB total. The new filter consumes fairly little real-time and 2kB of memory.