jvok's Sleazy Listening stereo coder

Everything technical about radio can be discussed here, whether it's transmitting or receiving. Guides, charts, diagrams, etc. are all welcome.
User avatar
jvok
tower block dreamin
tower block dreamin
Posts: 361
Joined: Sun Aug 16, 2020 2:44 pm
Location: Probably up a mast

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Mon Jul 28, 2025 11:58 pm

Think its been about 2 years since I promised the gerbers :whistle Been too busy with real work :smoke

PCBs are now on to Rev 3. I've made a few changes to cut down on switching noise getting through:

- Used lower value resistors in the MPX and pilot divider chains
- Added RC filters after the 4051s
- Pilot generator now works at full 5Vpp level then is attenuated afterwards - this attenuates the noise too

Also some other improvements:

- I found there was too much stereo crosstalk in the original design which is caused by the phase shifts in the output filter putting the MPX and pilot signals out of sync with eachother. So I added a pilot phase adjust control so you can dial it in until its just right. Best way to do this is play a tone on one channel (e.g. left) then set the balance on your receiver to the other (e.g. right) channel (or take the other earbud out). Then adjust the phase until the tone almost disappears. I found I could get >35dB stereo separation like this which is about as good as most tuners.
- Taking the 19kHz SYNC out from the same source as the pilot tone doesn't work, because the filter phase shift puts that out of sync too. So now I take the SYNC out from a dedicated pin on the MCU and have code to shift this in phase by (roughly) the opposite amount.
- Added clamp diodes to the inputs for ESD protection.
- Removed the diode/cap clamp on PIC reset signal - this stopped the PICKit from working.
mpx1.png
Data pack is attached with gerbers, hex file and Kicad/MPLAB projects for anyone who wants to build one, plus setup instructions in a PDF.

Also I'll be putting my last three of these (fully built) on ebay soon
You do not have the required permissions to view the files attached to this post.

User avatar
jvok
tower block dreamin
tower block dreamin
Posts: 361
Joined: Sun Aug 16, 2020 2:44 pm
Location: Probably up a mast

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Tue Jul 29, 2025 12:10 am

Here's what the PCB looks like now
trimmed.jpg
You do not have the required permissions to view the files attached to this post.

User avatar
reverend
tower block dreamin
tower block dreamin
Posts: 314
Joined: Sat Jul 25, 2020 12:03 pm

Re: jvok's Sleazy Listening stereo coder

Post by reverend » Wed Jul 30, 2025 10:55 pm

Really nice work Jvok, especially going to the effort of revising the board layout to minimise noise.

With regards to the 19 kHz carrier phase, I like to pass the generated signal through a high and low pass filter which I found helps reduce noise and shifts the phase up and back down again so that it is the same as the output of the generator - a tweak of a few degrees either side of this usually doesn't affect any downstream use of the 19 kHz signal such as RDS synchronisation.
if it ain't broke, keep tweaking

User avatar
jvok
tower block dreamin
tower block dreamin
Posts: 361
Joined: Sun Aug 16, 2020 2:44 pm
Location: Probably up a mast

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Fri Aug 01, 2025 12:47 am


User avatar
jvok
tower block dreamin
tower block dreamin
Posts: 361
Joined: Sun Aug 16, 2020 2:44 pm
Location: Probably up a mast

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Sun Sep 21, 2025 3:35 pm

All the coder boards are now sold, thanks to everyone who bought one.

I'm working on an SMD version so I can get them churned out cheaply by JLC (hand assembly takes way too long to do in bulk) then I'll put the listing back up.

User avatar
reverend
tower block dreamin
tower block dreamin
Posts: 314
Joined: Sat Jul 25, 2020 12:03 pm

Re: jvok's Sleazy Listening stereo coder

Post by reverend » Tue Sep 23, 2025 2:10 pm

Just a thought... you could easily add a clipper between U1A and U2A (i.e. where R38 is). That could shave off any peaks from the composite (and could be made adjustable so that it can be turned off) and wouldn't affect the pilot as it's important that the pilot doesn't get clipped.
if it ain't broke, keep tweaking

User avatar
reverend
tower block dreamin
tower block dreamin
Posts: 314
Joined: Sat Jul 25, 2020 12:03 pm

Re: jvok's Sleazy Listening stereo coder

Post by reverend » Tue Oct 07, 2025 3:38 pm

One other thing (and I hope you don't mind the feedback) - examining the circuit diagram there are 3 places where you have a.c. decoupled the audio signal (C1/R3, C9/R13, C16/R17 for the left hand channel for example). In each case the 3 dB cut-off for the values you have used is roughly 3.4 Hz. At 30 Hz these still have a phase-shift of around 6 degrees so the three in series will move the phase by 18 degrees at 30 Hz. This will cause noticeable bass overshoots. With a 30 Hz square wave passed through that set of filters, you are getting nearly 4dB of overshoot. These overshoots are one of the most common causes of over-deviation and eliminating them can make a big different to loudness.
overshoot.png
Many modern digital processors will let you correct for this ('bass tilt') but generally it's best to have a crazy low frequency response to try and minimise any effects. If you up the capacitors by a factor of 10 (i.e. 1uF becomes 10uF etc...) then the overshoot is reduced to 0.5 dB (and the phase shift to less than 3 degrees).
You do not have the required permissions to view the files attached to this post.
if it ain't broke, keep tweaking

User avatar
jvok
tower block dreamin
tower block dreamin
Posts: 361
Joined: Sun Aug 16, 2020 2:44 pm
Location: Probably up a mast

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Wed Oct 08, 2025 12:28 am

Very good point Rev. I always figured 10x lower than the lowest frequency was good enough but I guess not. Ironically in the SMD version I'm changing the caps to 10u anyway because 1u electrolytics seem less common in SMD.

One of the ebay buyers has pointed out that a fair amount of 19khz noise is getting onto the MID rail and then back into the audio path. Likely its from the pilot divider returning the 5v p-p square wave down to MID through a fairly low impedance (613 ohms if you add up the resistors). I might try ditching the SYNC OUT and using RC7 to drive the divider chain differentially instead, then the opposite currents going into MID should cancel out. Ultimately the SYNC OUT isn't really that useful because its never truly in phase anyway.

When I get a chance I'll pull my last remaining board out of the rig its in and do some measurements. I'm also thinking of trying two different SMD versions - one 2-layer like the TH version and one 4-layer with proper ground/power planes - and see how much difference it makes to noise levels. JLC prototypes are dirt cheap so I don't see any reason not to.

Looks like this SMD version might end up being more of a Rev 4 rather than just a cost reduction. Now if only I had some f***ing time to work on the thing

Albert H
proppa neck!
proppa neck!
Posts: 3088
Joined: Tue Apr 05, 2016 1:23 am

Re: jvok's Sleazy Listening stereo coder

Post by Albert H » Wed Oct 08, 2025 11:35 pm

Driving the divider differentially should make a big difference. If you want a 19kHz sync output, why not take the output of the pilot phase adjustment stage (U1B - pin 7), and drive a CMOS schmitt for nice squarewaves in accurate phase with the pilot? It adds a package to the board, but the cost would be minimal.

How good do you find those switched-capacitor IC filters? I was disappointed with the results from them when compared with my gyrator-based elliptic design. Granted I was using several op-amp packages per channel, but I got very low passband ripple, little phase error in the passband, and good rejection by 19kHz, so there were no significant mixing products with the pilot. The design was also tolerant of 5% capacitors and 1% resistors, so was economical to make.

Your idea of a four-layer board is interesting, and it would be very informative to see the resultant improvement in specification. It's pretty good as it stands, but there's always room for improvement!
"Why is my rig humming?"
"Because it doesn't know the words!"
;)

User avatar
jvok
tower block dreamin
tower block dreamin
Posts: 361
Joined: Sun Aug 16, 2020 2:44 pm
Location: Probably up a mast

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Thu Oct 09, 2025 2:59 am

I can't take the SYNC out from U1B because the phase shift in the reconstruction filter means it won't be in phase with the output. That's really the main thing the phase adjustment control is correcting for, plus any further phase shift in the transmitter.

The filters are OK but nothing special. I wouldn't use them in serious hifi gear but for something like this they're ideal. I don't measure any significant distortion (within my measurement capabilities anyway) and I was surprised at how little clock bleed through there is.

My main reason for avoiding the gyrator approach was parts count - I figured all the extra soldering would put beginners off especially, whereas a couple of 8 pin DIPs are less intimidating. That said if I go SMD it might be worth rethinking - the per-placement cost at JLC is pretty low and the passives would all/mostly be standard parts. Whereas the MAX7411 isn't, so I'd either have to fit it myself or pay a stocking premium.

Albert H
proppa neck!
proppa neck!
Posts: 3088
Joined: Tue Apr 05, 2016 1:23 am

Re: jvok's Sleazy Listening stereo coder

Post by Albert H » Fri Oct 10, 2025 12:23 am

Surely the phase delay through the output filter is clearly defined - a CMOS monostable could accurately handle the timing offset..... Having said that, I extracted the 19kHz pilot from the composite multiplex with a 567 PLL, and used that to synchronise my RDS...

You really should conside the gyrator filter approach - the elliptic filter has remarkably good rejection out of the passband, and is sure to be cheaper at JLC.
"Why is my rig humming?"
"Because it doesn't know the words!"
;)

Post Reply