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!
MarcelH
January 15, 2025, 10:13am
3
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
fuo
January 15, 2025, 12:27pm
5
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
MarcelH
January 16, 2025, 10:47am
8
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);
MarcelH
January 17, 2025, 8:49am
10
jeff-gsa:
makeLowShelf(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