Fletcher-Munson curves (not really dynamic EQ)
Dan Lynch
Posts: 472
The topic of dynamic EQ came up recently on the SynAudCon mailing list and I decided to post my answer here so that more people could read it. BTW if you've never been to a SynAudCon class, you're definitely missing out. Google it.
Anyway, Josh wanted a pseudo-implementation of the Fletch-Munson curves in his system. I say pseudo-implementation because he's wanting to control the different outputs of his crossover rather than wanting to change the EQ curve of a single signal. Specifically, he wanted his subs to have a higher relative level when the system was running at a quiet volume. So, as you increase the system volume, you're increasing the subs less than you're increasing the full-range signal.
To do that, we need to look at the modulator processing object. The modulator has two inputs. Input 1 is the audio that you want to hear at the output. Input 2 needs to be a DC signal. That DC signal controls the volume of the modulator output. To create a DC signal inside Soundweb, just run a regular audio signal into a meter that has the \"Enable Control Output\" property turned on. Looking at the layout below, we have a noise generator going through a gain object. It then splits and goes into two modulators to control the volume of the subs and full-range audio signals. In this case, you can think of the modulators as VCAs (yeah, that's over-simplified and somewhat inaccurate, but oh well).
With this circuit, as you increase the level of the gain object, the two modulators will turn up their output volumes and everything will get louder together.
That's the heart of the circuit. Since the white noise coming out of the gain object is a control signal, not an audio signal, we can torture that signal in any way we'd like without having to worry about degrading our actual audio signal. That means we can achieve what Josh wanted by simply adding a compressor to one of the control signals. When the gain object is turned up, the compressor will compress the control signal going to the modulator for the subs and the volume of the subs will climb more slowly than the volume of the full-range signal.
Remember, we're compressing the control signal, not the audio. All we're doing to the audio signal is changing the way that the volume control responds. There won't be any compression of the audio signal and you won't hear any squashing or other artifacts.
Once we've gotten to this point, all of the hard work is done and all we have left to do is the playing-around-with-knobs part of the job.
Audio settings for this would be relatively easy to setup.
* Change the level on the noise generator to +3dB
* Start with the gain object at your \"quiet\" volume
* Set the compressor threshold to -30 and ratio to 1.02:1 (lowest setting)
* Adjust the crossover outputs until you like the way the system sounds or until you like the way it looks on Smaart/RTA/whatever-you-trust-more-than-your-ears
* Change the gain object to your \"loud\" volume - the subs will temporarily be too loud
* Turn up the ratio on the compressor until the balance between the subs and the full-range signal is back to what you like
You may need to change the threshold depending on your definitions of quiet and loud. You can also adjust the output level of the noise generator.
If you wanted to use this circuit as something closer to a Fletcher-Munson EQ, just slap a summer on the outputs of the modulators and add a third band to the crossover. That won't give you a true Fletcher-Munson curve, but it will sound a heck of a lot better than nothing.
You can also get a completely different but possibly useful result by putting an expander before one or more of the meters.
Note: this circuit is a good starting point for creating a dynamic EQ, but it's definitely not a dynamic EQ as shown. To qualify as a dynamic EQ to me, a circuit would have to dynamically respond to the program content with at least changes to the boost/cut level of the EQ. To really do it right, a dynamic EQ should also be able to respond to changes in the program content with changes to the width or slope of the filters. This circuit just responds to the level of the volume control, not the program material.
Dan
Anyway, Josh wanted a pseudo-implementation of the Fletch-Munson curves in his system. I say pseudo-implementation because he's wanting to control the different outputs of his crossover rather than wanting to change the EQ curve of a single signal. Specifically, he wanted his subs to have a higher relative level when the system was running at a quiet volume. So, as you increase the system volume, you're increasing the subs less than you're increasing the full-range signal.
To do that, we need to look at the modulator processing object. The modulator has two inputs. Input 1 is the audio that you want to hear at the output. Input 2 needs to be a DC signal. That DC signal controls the volume of the modulator output. To create a DC signal inside Soundweb, just run a regular audio signal into a meter that has the \"Enable Control Output\" property turned on. Looking at the layout below, we have a noise generator going through a gain object. It then splits and goes into two modulators to control the volume of the subs and full-range audio signals. In this case, you can think of the modulators as VCAs (yeah, that's over-simplified and somewhat inaccurate, but oh well).
With this circuit, as you increase the level of the gain object, the two modulators will turn up their output volumes and everything will get louder together.
That's the heart of the circuit. Since the white noise coming out of the gain object is a control signal, not an audio signal, we can torture that signal in any way we'd like without having to worry about degrading our actual audio signal. That means we can achieve what Josh wanted by simply adding a compressor to one of the control signals. When the gain object is turned up, the compressor will compress the control signal going to the modulator for the subs and the volume of the subs will climb more slowly than the volume of the full-range signal.
Remember, we're compressing the control signal, not the audio. All we're doing to the audio signal is changing the way that the volume control responds. There won't be any compression of the audio signal and you won't hear any squashing or other artifacts.
Once we've gotten to this point, all of the hard work is done and all we have left to do is the playing-around-with-knobs part of the job.
Audio settings for this would be relatively easy to setup.
* Change the level on the noise generator to +3dB
* Start with the gain object at your \"quiet\" volume
* Set the compressor threshold to -30 and ratio to 1.02:1 (lowest setting)
* Adjust the crossover outputs until you like the way the system sounds or until you like the way it looks on Smaart/RTA/whatever-you-trust-more-than-your-ears
* Change the gain object to your \"loud\" volume - the subs will temporarily be too loud
* Turn up the ratio on the compressor until the balance between the subs and the full-range signal is back to what you like
You may need to change the threshold depending on your definitions of quiet and loud. You can also adjust the output level of the noise generator.
If you wanted to use this circuit as something closer to a Fletcher-Munson EQ, just slap a summer on the outputs of the modulators and add a third band to the crossover. That won't give you a true Fletcher-Munson curve, but it will sound a heck of a lot better than nothing.
You can also get a completely different but possibly useful result by putting an expander before one or more of the meters.
Note: this circuit is a good starting point for creating a dynamic EQ, but it's definitely not a dynamic EQ as shown. To qualify as a dynamic EQ to me, a circuit would have to dynamically respond to the program content with at least changes to the boost/cut level of the EQ. To really do it right, a dynamic EQ should also be able to respond to changes in the program content with changes to the width or slope of the filters. This circuit just responds to the level of the volume control, not the program material.
Dan
0
This discussion has been closed.