(Beginner) Help Designing/Implementing a Formant Filter


I am fairly new to JUCE (and to audio programming in general). I’ve been poking through the documentation and doing a few demo projects but I would like to try my hand at designing a relatively simple formant filter. Nothing too complicated, just a couple of vowels and maybe an LFO to blend between them.

I’m having some trouble figuring out how to get started. I don’t quite know how to conceptualize the problem and I don’t have a great grasp of how big of a project this is actually going to be. Can anyone point me in the right direction or give me some resources to look at?

May be a stupid suggestion, but Wikipedia has this to say

Formants are distinctive frequency components of the acoustic signal produced by speech, musical instruments or singing. The information that humans require to distinguish between speech sounds can be represented purely quantitatively by specifying peaks in the frequency spectrum.
The formant with the lowest frequency is called F1, the second F2, and the third F 3.
Most often the two first formants, F1 and F2, are sufficient to identify the vowel.

There is also a handy table of vowels and the corresponding 1st two formant frequencies.

It may be sufficient to have a pair of EQs that morph between those, but this is pure speculation and determining the amount of boost and Q is something that would need experimentation (assuming a simple EQ boost is all that required at those frequencies!).

1 Like

Never underestimate the magic of an allpass filter! Also just conjecture, but if you can’t seem to get a certain frequency band sounding just right, an allpass would be something to try.

the good thing about your project is that it can be seperated into multiple sub projects. so whenever you are stuck with your filters you can just go on with the lfo. about formant filters: i think you can find some frequency tables of distinct frequencies online that correspond to certain vowels. you’d probably use 3 bell filters to carve them out of your signal

So, my understanding of this is that I need to design a set of peak filters that can be shifted between the formant frequencies based on the LFO. (or maybe pairs of these sets that can have their levels modulated by the LFO).

Not totally sure what I’d be doing with an allpass filter in this situation? Aren’t those usually used to fix phase issues?

Here is a good overview of how this works: Formant Synthesis

1 Like

This is fantastic, thanks! So basically I just need to design a series of bandpass filters (with an optional “dry” path so as not to lose most of the signal) and a mechanism for cross-fading between them via an LFO.