Software stereo encoder to generate a digital MPX stereo signal for FM
About this stereo encoder project
This project makes it possible to use a “normal” soundcard
to generate a stereo signal for FM radio transmitters. The stereo
encoder is a simple application that runs with Windows XP with service
pack 1 or higher.
The maximum frequency of a MPX stereo signal goes up to 53 kHz.
So you need a soundcard that can handle a minimum frequency of
53 kHz. Nowadays there are cheap soundcards which have a samplerate
of 192 kHz. These soundcards can produce frequencies up to 96 kHz.
For a frequency of 96 kHz you will need a minimum samplerate of
Most operating systems can not handle a samplerate of 192 kHz.
Windows XP WITH Service pack 1 is the first Windows version which
can handle this.
By using a media player on the same computer, the audio-signal
will be edited fully digital, so there is no loss in quality
produced by A/D converters.
The stereo signal will be calculated digital, so that a perfect
stereo signal will be generated and a good stereo separation will
Little latency between the input and output signal. (can be controlled manually)
Which soundcard to be used
There are a few soundcards who can handle a samplerate of 192 kHz.
Most of them can handle the surround 7.1 system. For this project
I use the Terratec Aureon Space. But the new SoundBlaster soundcards
can probably do this job too. If you have experience with other
soundcards, share it with us and write it in the forum.
Of course you can also use the contact form.
Minimum system requirements
Soundcard: at least a samplerate of 192 kHz.
Operating system: Windows XP with Service Pack 1
How does it work
After the program started up, you see a window like above. Select
a soundcard for the Input and Output device. The same soundcard
can be used as Input and Output device. If you do that, be sure
you configure the record configuration well (the soundcard must
not "hear" himself).
Adjust the Buffer size. Try to make the Buffer size as small as possible, to keep the latency low.
Also the pre-emphasis, clipper and 15 kHz low pass filter can be switched
on or off.
The pre-emphasis can be switched between 50 and 75 micro seconds. The European standard uses 50 micro seconds. The American standard uses 75 micro seconds.
The clipper can be used after the pre-emphasis. This will cut the high peaks. Because it works after the pre-emphasis, it will mostly cut the high frequencies so there will be no notable distortion heard. If you use the clipper, my advice is to also use the 15 kHz low pass filter.
The 15 kHz low pass filter will take care that frequencies above
the 15 kHz will be filtered out. This filter is a 10th order IIR
Use the clipper and the 15 kHz low cut filter to stay within the Stokke mask.
The amplitude of the 38 kHz signal can be controlled manually,
so that an optimal stereo separation can be reached. It’s
also possible to use the 38 kHz controller as a stereo widener
by shifting him above the 100%. Using this method, the mono signal
will not be affected.
The Output peak is to watch if the signal will not be distorted.
The Output peak shows every second the highest output signal. The
Output peak can have a maximum of 100%. If it gets over the 100%
then the volume of the input signal has to be lowered. Adjust the
volume of the input signal to an average of 90% on the input peak meters.
When there is no input signal, the Output peak will still show
a peak of 8%. This happens because the 19 kHz pilot tone will always
be on the output.
The Start button explains himself. By pressing this button, the stereo coder will do his job.
Adjust the stereo
Connect only 1 output channel from you soundcard to the input of the
transmitter. Do not combine the left and the right channel. Switch on the clipper and the 15 kHz low cut filter. Adjust the volume from
the input signal so that the Input Peak level meters reaches a average of 90%.
Adjust the Master volume and the Wave volume on the mix console
from the Output device to maximum. Adjust the input signal of your
transmitter up to 0 dB.
Try to decrease the buffer size. If you hear drop outs, increase the buffer size.
This program has been tested on a Pentium III 600 MHz. with 192
MB internal memory. Operating system Windows XP pro with service
pack 1. For the Input device, I used a SoundBlaster Live Platinum
soundcard and for the Output device a Terratec Aureon Space.
- Improved 19 and 38 kHz sinus generator.
Sinus generator works faster and more accurate.
- 19 and 38 kHz signals are phase locked.
Due to the rounding process in the digital domain, there was a little phase shift. By phase locking the two signals, this issue has now been solved.
- Buffer size can be adjusted.
- Totally rewritten audio input and output threads.
- Multi threaded.
- 32 bit processing.
- Supports 32 bit output.
- Added a synchronization algorithm between input and output.
- Supports 50 and 75 micro seconds pre-emphasis.
- Added a clipper to cut high peaks after the pre-emphasis.
- Lower CPU usage.
- Lower latency between the input and output signal.
- Bug fixed in the synchronization routine.
- Improved synchronization routine.
- Improved 19 and 38 kHz sinus generator.
- Settings are now saved in an ini file.
- Changed layout.
- Redesigned output peak level meter.
- Added input peak level meters.
- Added clip indication for every peak level meter.
If you have any questions or suggestions about the program, please
visit the forum.