Below is an example of a system for loudspeaker processing, followed by a discussion of its components.
The BassTone and TrebleTone modules are SecondOrderFilterSmoothed modules achieve bass and treble boost, respectively. The bass boost SOF module is set to ShelfLow with a frequency of 200Hz, and the treble boost SOF module is set to ShelfHigh at a frequency of 3.5 kHz. This way, they can be used to separately control the gains of the bass and treble frequencies.
The Volume module is then used to set the volume for the system once bass and treble are set to their desired levels.
The next SecondOrderFilterCascade module is the speaker EQ. It has four separate filter stages. These filters are set to bypass but they can be configured based on the characteristic of the speaker.
The final portion of the system implements speaker protection using a limiter.
In this design, the MaxAbs modules takes the left and right channels, computes the absolute value, and then chooses the last of the left and right channels. The output of the MaxAbs module represents the loudest channel in the system. The AGCLimiterCore module then computes a time varying gain which is used to restriction the signal level. The AGCLimiterCore has the standard controls of threshold, attackTime, decayTime, and an optional soft knee. The output of the AGCLimiterCore module is a time varying gain and this multiplies the original left and right channel. The DelayMsec module is a “look ahead delay” and allows the limiter to adjust its gain in advance of sharp signal transients. The look ahead time in this example is set to 2 msec.
In the design above, the left and right channels are limited simultaneously based on the signal level in the louder channel. The advantage to this design is that it preserves the stereo image of the signal. If the goal is to maximize the output SPL level then use independent limiters on the left and right channels as shown below:
The AGCLimiterCore module has time constants and it is still possible for the module to miss sudden transients which could cause the output level to exceed 1.0. Use a SoftClip module as shown below to ensure that the output never exceeds 1.0.
The SoftClip module acts as a point nonlinearity. Signal values below the threshold are unaffected. Values above the threshold are scaled do and will never exceed 1.0.