Need Help Applying a Smile Effect in JUCE

Hello everyone,

I hope you’re doing well. I’m a novice working with JUCE, and I’m currently struggling to apply a smile effect to my project. I have been trying to understand the process, but I find it quite challenging.

If anyone could provide some guidance or resources to help me implement this effect, I would greatly appreciate it. Thank you in advance for your support!

Sounds like a very positive topic!
Usually one is created by shelving up the low end and the high end.
So you would require 2 shelving filters.

You could use an IIR filter for that and JUCE helps you find the right coefficients for that filter:
https://docs.juce.com/master/structdsp_1_1IIR_1_1ArrayCoefficients.html#af26ae8c1ee3053838c7e4075c19266e8

Just create a low shelf and a high shelf. Decide on the cutoff frequencies. And keep on smiling.

2 Likes

Thanks, i’ll try and back

A single low Q bell filter with negative gain in the mids can also do the trick, and will avoid going over 0dB.

2 Likes

True, basically always better to cut then to boost.
But not really the same effect. The curve will be different with a single bell dip opposed to 2 shelves.
More efficient though.

thanks for your answer, i used the IIR filter with correct coefficients but i didn’t note a real effect on my voice enter by microphone

What arguments did you use to set up the filter?

this is my configuration and i hope a smile and warm voice :

smileEQ.get<0>().coefficients = juce::dsp::IIR::Coefficients::makeLowShelf(sampleRate, 100.0f, 0.7f, 1.5f);
smileEQ.get<1>().coefficients = juce::dsp::IIR::Coefficients::makePeakFilter(sampleRate, 1000.0f, 1.0f, 0.5f);
smileEQ.get<2>().coefficients = juce::dsp::IIR::Coefficients::makeHighShelf(sampleRate, 10000.0f, 0.7f, 1.5f);

Yes, this should be audible.
Although most voices don’t have much below 100 and above 10000.
Maybe some other part of the code is the issue…

1 Like