Recently, CSR FM have aquired a Soundweb London BLU-100 (which I’ve raved about in the previous post). Amongst the myriad of things which it can do, it can also do some quite complex signal processing. Currently, the CSR FM airchain goes from program output (via a switcher), to a DSPXmini FM processor – which processes the audio and compresses it so that it’s of uniform loudness, then on to a 50W FM transmitter (of which we’re only using 25W).
Unfortunately, the FM processor does not have an audio output on it, only a MPX signal which goes directly to the transmitter (which has fancy things like stereo pilot and RDS encoded into it directly) – as such in order to do our online stream we have to have a FM tuner tuned into the frequency, which then gets distributed to a few places, including a Delta 44 on the encoder machine which then goes out to the online stream.
This isn’t ideal, for a couple of reasons. Firstly, any FM signal gets a bit distorted no matter how close you are to the transmitter (it’s directly below it in the rack, in fact). Secondly, the FM signal adds ‘clipping’, which is essentially cutting the peaks off waveforms flat. You’d normally say this is distortion – and it is! However, over FM, being an analogue medium, this actually sounds good and can add to the loudness of the station if done right.
But when going over a digital medium, it sounds horrible (and sounds like the input on the soundcard has been saturated). It’s especially bad when you encode it into a lossy codec such as MP3 – the square edges of the waveforms have lots of high frequency components (check out this video demonstrating how using the Fourier series a square wave is made up of an infinite number of sine waves of increasing freuquency). An MP3 encoder tries to compress the audio by removing ‘useless’ information, that is frequencies that the human ear is less sensitive to. If you throw in lots of high frequency components, it ends up thinking that these are important frequencies when in fact there is much more valuble information that it can compress in different parts of the spectrum.
So, we can come to the conclusion that using a clipped audio source for lossy digital transmission is not good. This applies to online streaming as well as other digital media like DAB, DVB or XM broadcasting.
Therefore, we need a separate audio processor which does everything that our FM processor does, except without the clipping. If we had a better processor – such as an Orban Optimod – it would have two outputs, one with clipping and one without. Unfortunately we don’t have that much money to spend on processing, especially with the Studio 2 project ongoing. So, therefore I decided that we might try to build our own processor using the BLU-100.
In essence, a broadcast processor has a few general stages which it uses to make the audio output of the station sound uniform and punchy. Namely, these are -
- Wideband processing (gating, AGC, compression)
- Multiband AGC
- ‘Enhancement’
- Multiband limiting/compression
- Final limiting/brickwall limiting
A bit like this:
My mission is to implement this using London Architect. I have pretty much all the components I need in the audio processing section of my BLU-100, so lets give it a shot!
So this first section does some basic AGC and compression. AGC standing for Automatic/Average Gain Control. It acts a bit like a person riding the gain on a mixer, trying to make everything be at a set level. In order to prevent ‘suck up’ – that is, making background noise louder, there is a threshold at which it will stop trying to increase the gain. This AGC is done by the two levellers in the diagram. Unfortunately, they’re not stereo linked – this means it’s possible for them to apply different amounts of gain to the left or right channel, potentially affecting stereo image. That’s rather unfortunate, but at the moment I don’t have a solution to this. The gate will further reinforce the ‘freezing’ by reducing the gain further after a given threshold. This is set pretty low, just in case someone has some really quiet programme material – really all it does it cut out any noise from total silence (which is required, from time to time).
The compressor will reduce the dynamic range of the signal a little bit, and compensate for overshoot on the levellers (if they bring up the gain, then something really loud happens, they take a bit of time to react to this – the compressor will kick in and reduce the gain a little bit faster than the levellers will).
This beast is the multiband AGC. This does what the wideband AGC does, except it splits it off into separate bands of frequencies before doing so. The stereo crossover block is what splits up the frequencies. I have found that designing an effective crossover is a bit tricky – it can take quite a bit of tweaking to get it to be transparent. When I started tweaking, I put all of the levellers into bypass and solo’d each band on the mixer.
I have decided to use a 5-band design here – this seems to be fairly standard in broadcasting. It allows us to get the most out of the high end, which is important when making your audio sound clean, crisp and ‘sparkly’ – though overdone it can sound harsh and screechy (think blackboard + nails). My settings for this are around about 0-200Hz for Low, 200Hz-750Hz Mid Low, 750Hz-2.6kHz Mid High, 2.6kHz-10kHz High, 10kHz up Super High. Or something like that (a lot of tweaking was involved, I can’t remember the exact frequencies!). A bit of gain correction was applied to the signals, owing to the fact they have different energies. Getting the right crossover curves was tricky – if you get the wrong ones and set the crossover points wrong, you end up cancelling out frequencies, giving a comb effect which can sound nasty.
The levellers are set with a fairly low threshold, and a reasonable amount of maximum gain. Tweaking these levellers is quite time consuming, and rather tricky. Getting them to add gain to the right frequencies without making things sound too unbalanced is tricky. Ideally, you don’t want the settings across the board to be too different – this can wreak havoc on your stereo image. Again, annoyingly there’s no sidechain input on the levellers, so they’re independent left and right. I’ve linked the controlls left and right, but as before – this doesn’t make any promises they’ll apply the same thing to both channels!
The mixer at the end mixes all the bands back together. You can apply some fine tuning here, gently tweaking what bands you want to be preferred.
Next up, the magical “enhance” stage.
I’ve looked through a lot of processors – and they all seem pretty mysterious when it comes to this stage. Most, if not all, provide you with an EQ that lets you provide your output with a signature sound. In this case this is done by the parametric EQ on the far right. The EQ adds a little extra bass (about +3dB at 65Hz) and takes out a few frequencies that can make voices sound a bit boomy.
What I’ve not shown here is there’s a bunch of meters attached at various points. These meters are used to dynamically control things, such as the EQ. The idea is that a combination of meters can let me work out whether the output is speech or music, and tweak the EQ accordingly. Music will sound better with a more generous bass boost – whereas speech won’t benefit so much. I’ve also added a few extra little bits that make our style of music sound a little nicer – adding to the station’s branding.
You will notice two sections which look fairly similar – one which has a low pass filter then a delay going into the mix, the other with a high pass. The idea of this is to add to stereo image. In radio, you want to sound loud, wide and big to keep people tuned in. One way of doing this is to widen your stereo image. The technique I’m using here is one method of stereo widening, which Wikipedia calls a 3D Audio Effect. This essentially amounts to taking the each side of the signal, delaying and attenuating it a bit, inverting the phase then adding it back to the opposite side. I have found, however, that doing this can make voices sound a bit… strange. Old Dr Who villeins come to mind.
Apparently, humans are more sensitive to the directionality of high frequency sounds than low (makes sense, they diffract about less in normal environments) – as such I’ve decided to not apply the effect to the midrange at all – just the high (from about 7kHz and up). The delays are set slightly differently, making it sound more spactious (almost a basic reveb). I’ve also done this to the low bass, just to add a bit of extra fat, wide bass. The difference between these two delays (and the amount they are above the undelayed signal) is what a few processors I’ve seen call ‘width’.
Both of the levels that these two effects come in at are controlled by meters – they are mixed in at about a maximum of -10dB on the mixer, and a minimum of -36dB (almost inaudble). Again, a lot of tweaking to get this right was involved. But when it’s done right, it sounds pretty excellent.
And once we’ve added this mysterious loveliness, we’re almost there – onto the multiband limiter!
This is surprisingly similar to the mutliband AGC – in fact, it’s almost exactly the same, except the tasty filling between the crossover/mixer sandwich.
This time, we’ve got 5 stereo compressors (yay, stereo!). These are set up much like any compressor for each of the 5 bands. The bands picked for the limiter were slightly different, and more evenly spaced to control the full spectrum a bit better.
The low bands are quite heavily compressed, to give that tight bass sound that you want from pop and rock tracks, with a fairly high ratio and a medium threshold (I think they were around the -10dB mark with 8:1 ratio on the last tweak). Appropriate amounts of makeup gain are applied, and you have some very energetic bass. The midrange is less heavily processed, but still compressed a little bit to keep things equalised. The high end is very heavily processed, very low threshold (around -20dB) and a very high ratio (about 14:1) with lots of makeup gain (about +10dB I think?). This gives you the typical full trebble and bass sort of sound, which sounds decent over many different kinds of speakers.
The dynamic range of the input has been very very squashed at this point – aiming for everything to fit within about 3dB of range. The final push is to give it a little extra in the final limiter.
This is the simplest stage – consisting of just a compressor and two limiters. Again, the limiters aren’t stereo – but in this instance we’re not that bothered. The compressor is configured with a very high ratio and a high threshold (about -1.01dB) and the fastest attack time possible. This should nicely clip the top of any remaining peaks which have made it through the other stages.
Anything that the compressor doesn’t catch, the limiters will cause them to hit a brick wall – with a faster attack time and a threshold set at about -0.3dB, they will almost guarantee that the final output will never ever be saturated.
And that’s pretty much it! The auctual configuration is pretty straightforward – but configuring the parameters to be just right is the tricky bit. There are some parts which could certainly be improved (if I ever find a solution to making the mono objects stereo, that’ll be excellent), but for the last week I’ve been tweaking this system and have finally started homing in on a good sounding output, with a range of about 4dB (which is perfectly acceptable for an online stream, I’d say).
This is quite an experiment, and I’m not totally sure this is the right thing to do at all – but the results are sounding pretty good so far, so it can’t be that far wrong!


