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.
jvok
no manz can test innit
no manz can test innit
Posts: 220
Joined: Sun Aug 16, 2020 2:44 pm

jvok's Sleazy Listening stereo coder

Post by jvok » Fri Feb 10, 2023 10:45 pm

After all the talk of stereo coders on here recently I decided to design my own. I haven't seen any designs for oversampling coders on here yet so that's what I went for:
  • 16x oversampling for 38kHz subcarrier and 19kHz pilot generation
  • Jumper selectable 50/75us pre-emphasis
  • Active 6-pole low ripple Chebyshev low-pass filters for left and right audio channels
  • Active 6-pole Chebyshev reconstruction filter for 19kHz pilot
  • Passive 4-pole Bessel reconstruction filter for main output
  • Low-pass filters and pre-emphasis can be individually bypassed for use with external audio processor
  • 19kHz sync output for use with RDS coder. This is an open-collector output for easy interfacing to different logic levels
  • Runs on single 15VDC supply (external voltage regulator recommended for lowest noise)
PCB layout to follow as soon as it's done.
You do not have the required permissions to view the files attached to this post.

User avatar
sinus trouble
proppa neck!
proppa neck!
Posts: 1410
Joined: Fri Aug 22, 2014 11:34 pm

Re: jvok's Sleazy Listening stereo coder

Post by sinus trouble » Sat Feb 11, 2023 1:17 am

Excellent work Jvok! :)

Good to see some other projects coming through!

The title "Sleazy" Is that linked to some sinister ritual you carry out whilst listening? Or just a label? :lol:

Either way? It sounds original and on the edge!
I am as stupid as I look! :|

jvok
no manz can test innit
no manz can test innit
Posts: 220
Joined: Sun Aug 16, 2020 2:44 pm

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Sat Feb 11, 2023 3:59 am

All electronics designs need some amount of sinister rituals done before they'll work properly.

But in seriousness I like to give all my designs a punny name. This one is a pun on the "easy listening" genre aka elevator music, mainly as a dig at mainstream radio because that's what it sounds like most of the time. Whereas us pirates try to be a bit more edgy than the squeaky-clean mainstream stations, hence "sleazy".

I've spotted a few things I'm not totally happy about since I posted the schematic, mainly how the MPX level isn't right and will vary with the pilot level control. I'll have a new version up tomorrow/whenever I get time to look at it.

User avatar
reverend
no manz can test innit
no manz can test innit
Posts: 235
Joined: Sat Jul 25, 2020 12:03 pm

Re: jvok's Sleazy Listening stereo coder

Post by reverend » Sat Feb 11, 2023 5:05 pm

Great work Jvok. I've been working on a similar design myself. From what I've learned so far, the LPF on the 19kHz generator is massive overkill. The lowest harmonics are at 304 kHz so a simple one-pole RC filter will be more than enough. I couldn't quite get the MPX correct - it seemed to be overly wide. I've noticed a few circuits have a 'stereo width reducer' on the input which may be necessary.

Keep it up though, it would be nice to see a decent stereocoder design.
if it ain't broke, keep tweaking

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

Re: jvok's Sleazy Listening stereo coder

Post by Albert H » Sat Feb 11, 2023 11:34 pm

Hi Jvok

That's a pretty good first iteration.....

The output filter is going to ring - you need to damp it (or go for an active filter instead). I'd be inclined to go for an active filter.

Your 15kHz filters will help, but aren't sharp enough. We had a design that used a mixture of filter types to get the right response (I'll dig it out and post it here for you), which gave reasonable results, but we found that the gyrator-based filter gave the best results without the need for extreme tolerance (or hand-selected) components.

Your oversampled switches are very similar to the circuit I came up with for the NRG Pro IV Coder. We corrected the difference amplitude by introducing a very small amount of crosstalk - the stereo image was then exactly correct!

You're right about the pilot level tweak - you'll have to change that!

I'll be interested to see the final version.
"Why is my rig humming?"
"Because it doesn't know the words!"
;)

jvok
no manz can test innit
no manz can test innit
Posts: 220
Joined: Sun Aug 16, 2020 2:44 pm

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Sun Feb 12, 2023 1:51 am

Thanks everyone for your comments and thanks for the tips albert. Just to be clear this is a work in progress, I wouldn't recommend anyone tries building it yet until I get all the bugs ironed out.

I'm not convinced the filter will ring because its terminated into its design impedance (240ohms) at both input and output. At least my simulator shows it as flat anyway. That said in hindsight I think 240ohms is too low for the opamps to drive comfortably, think I'll redesign it for around 10x higher.

An active filter would be my first choice too but I don't think standard opamps will give enough rejection at the higher alias frequencies. I could use higher GBW ones but I want to stick to jellybean parts so anyone can build it anywhere in the world (not just places with cheap farnell/digikey delivery).

I've seen your gyrator filter in other threads and while its a neat design it does use a lot of opamps, especially in stereo. Again a big goal for me is low cost. This is for pirates and hobbyists, not commercial broadcasters who can just buy an orban/innovonics/other dsp thing and be done with it. But I'm interested to know how sharp you think it needs to be - 6 pole already seems like a lot to me.

Also interested by what you mean about correcting the difference amplitude? I've seen the crosstalk circuit on a few other coders (including the pro iv on the other thread) but can't quite get my head round why its necessary.

Anyway I've spotted another bug with the pilot generator. The sequence is wrong so the two halves of the sine wave don't line up right, with a sudden jump from one to the other. Also its out of phase because the pilot generator counts from 0 degrees while the subcarrier generator counts from -90. Plus I think that fancy 6 pole reconstruction filter will screw up the phase even worse anyway. Maybe I should take rev's advice and ditch the filter.

More work needed I think...

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

Re: jvok's Sleazy Listening stereo coder

Post by Albert H » Sun Feb 12, 2023 8:08 pm

The output filter is essential to avoid interference to adjacent channels - there are plenty of switching products produced at multiples of 38kHz!

The crosstalk correction is needed because a switching coder generates an S component that's pi/4 times too big (I can give you all of the equations if you want). If you omit the crosstalk correction, you either end up with a stereo signal that appears "too wide", or (more usually) has a "hole in the middle" effect.

There's a dodgy copy of Stephen's old Pro II coder around (made by the company that we don't name) that has a very obvious "hole in the middle", doesn't know its left from its right (it comes on with random channels), and has products from the crystal oscillator appearing in its output, causing plenty of spurious interference.....

If you look at the NRG Pro III (my update of the Pro II simple coder), I added a start-up circuit that ensured that the inputs were always the right way 'round, and added mono/stereo switching and indication. Even that simple coder includes an active output filter to keep things clean, and simple crosstalk correction to give a nice, solid stereo image.

As far as the 15khz filter is concerned, if you do the analysis, you need to be a minimum of 36dB down by 19 kHz - your cascaded filters won't quite achieve this. My pal in the Netherlands, "Katruud" (now also sadly deceased), used more op-amps than I did in his "brickwall" filter. He also used quite exotic "audio" op-amps. I just use two generic TL074 quad types per channel, and got great results. I didn't have the weird resistor values (from the E24 series) in stock, so my Veroboard prototype had plenty of resistors in various parallel and series combinations to make up the values! My filter has almost no measurable effect in the passband apart from a very slight phase shift up near 15 kHz, and about 0.15dB ripple.....

The TL071,2,4 series have plenty of bandwidth (to over 1 MHz), so you won't run out of "go" in an output filter - take a look at the Pro IV coder circuit (one of mine), and you'll see the output filter I used. You'll also see how I did the pilot and switching - and I can assure you that all the components of the multiplex are accurately phased. The resistors supplied were just 5% types, and even with the furthest values from nominal, the results were remarkably accurate.

The Inovonics "David" series of audio processors and stereo coders are a bit more complicated than the Pro IV, but they provide industry-standard composite broadcast signals. I really liked the I, II, and III, but the "digital" IV model measures extremely well, but lacks that certain "something" that you get from analogue processing. The first three models were continually updated as components became obsolete... A truly never-ending problem! If anyone wants the maintenance manuals for those, I'll put them up on line, though I won't provide the firmware for the IV!
"Why is my rig humming?"
"Because it doesn't know the words!"
;)

jvok
no manz can test innit
no manz can test innit
Posts: 220
Joined: Sun Aug 16, 2020 2:44 pm

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Sun Feb 12, 2023 11:09 pm

Damn I didn't know Katruud had passed. I've taken a lot of inspiration from his 8x coder. Sad news...
Albert H wrote: Sun Feb 12, 2023 8:08 pm The output filter is essential to avoid interference to adjacent channels - there are plenty of switching products produced at multiples of 38kHz!
Should have been more clear, I don't mean ditching the main output filter, just the 19kHz one. I.e. using the same reconstruction filter for both 19/38kHz signals (which is also what you did in the pro iv). That way I avoid the extra phase shift from the separate filter (and save a shit load of parts). My gut feeling is this would need both signals to be sampled at the same rate (i.e. 32x oversampling for the pilot) to put the alias frequencies in the same places. But I really need to have a look at the spectrum to decide.
Albert H wrote: Sun Feb 12, 2023 8:08 pm The crosstalk correction is needed because a switching coder generates an S component that's pi/4 times too big (I can give you all of the equations if you want). If you omit the crosstalk correction, you either end up with a stereo signal that appears "too wide", or (more usually) has a "hole in the middle" effect.
I can see why that's true for a plain (hard switched 38kHz) switching coder because the fundamental of a square wave is 4/pi times the square wave ampitude, i.e. the nasty fourier equation on wikipedia https://en.wikipedia.org/wiki/Square_wa ... r_analysis

But an oversampling coder is reconstructing a pretty accurate sine wave, not a square wave. In other words if I had an infinite number of taps on the resistor chain then the circuit would work exactly the same as a true analog multiplier. Obviously with 8 taps its not perfect but its still much closer than a switching coder. But if you have equations that prove me wrong I'd like to see them.
Albert H wrote: Sun Feb 12, 2023 8:08 pm As far as the 15khz filter is concerned, if you do the analysis, you need to be a minimum of 36dB down by 19 kHz - your cascaded filters won't quite achieve this.
Hmm now I've seen that toko data krakatoa posted in the other thread I didn't realise just how sharp those tokos where. Amazing what they could do with a few ferrite pot cores. My filter is only 15dB down in comparison. But I'd still like to find some compromise between performance and cost, better than my 6-pole design but still not using 16 opamps for a stereo circuit.

I mentioned in another thread about using a notch filter to clean out anything around 19kHz which might be a cheaper way to go. You can make a pretty sharp notch using a single opamp with a twin-t circuit, so that would only add two opamps for stereo. I'd have this alongside the 6-pole circuit so there's still some rejection by 23kHz, to stop the mono/subcarrier signals interfering with each other. I'll do some simulations and see what I can come up with.

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

Re: jvok's Sleazy Listening stereo coder

Post by Albert H » Mon Feb 13, 2023 3:58 am

The problem with the 19kHz notch filter approach is the nasty phase shifts in the passband - as ever, electronics is a set of compromises! If you make the notch filter really sharp (and you would want to) the phase shifts get really weird!

The oversampling switcher does reduce the pi/4 problem (a bit) but less than you would imagine with each successive stage of switching. Look at the Walsh functions.... In the David coder prototype, I tried out 32 times oversampling (more to prove that it could be done, rather than for any practical reason), and the results really didn't measure much better than just 8 times! I also found that the switching artifacts were best at about 8 to 12 times oversampled - and I was simply going for fidelity, rather than the absolute ultimate in measured performance. The fact that we knocked Bext, Orban and RCA off their pedestals was just a bonus! It also allowed for really accurate time domain alignment, minimising decoding errors. I was really surprised by the crosstalk errors that are introduced by even minute phase errors, and wanted to make sure that we didn't suffer from avoidable distortion and phase or timing errors.

You'll see that we went for PWM for the limiter attenuators - partly to eliminate manufacturing adjustments, and because it gave the least distortion of any simple approach that we tried. Simple FET attenuators (as used in RCA products) are really horrible (unless you enjoy the sound of gross second harmonic distortion!), the transistor "long-tailed pair" approach can be made to work well but requires precise calibration, and the VCAs used by some other products vary in performance from nearly acceptable to simply horrible!

The band filters used in the limiter section were designed for minimum phase errors - they're entirely phase linear! To achieve this took eight op-amps per channel.....

I don't understand your reluctance to use a lot of op-amps - they're cheap and easy to use, even if you buy high performance types. The noise and distortion introduced by even cheapies like the TL074 is vanishingly small! I find that the expensive parts (and in limited supply at the moment) are high tolerance capacitors. I've taken to buying big boxes of the same value and selecting them. It adds a bit of time to the construction of gear, but it saves a fortune!
"Why is my rig humming?"
"Because it doesn't know the words!"
;)

jvok
no manz can test innit
no manz can test innit
Posts: 220
Joined: Sun Aug 16, 2020 2:44 pm

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Thu Feb 16, 2023 7:21 pm

wait did you design the david gear? if so hats off. you obviously know your audio processing.

my issue isn't really with opamps themselves, its more just overall parts count. i'm designing for hobbyists and know that if its too complex no one will build it.

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

Re: jvok's Sleazy Listening stereo coder

Post by Albert H » Thu Feb 16, 2023 8:56 pm

Jvok - if you design a nice, tidy (ideally single-sided) PCB, and the device provides good quality and doesn't cost too much to build, you'll be able to sell plenty of the PCBs (or complete kits if you want to go shopping!).

If you want to design an integrated limiter, lowpass audio filter, and oversampled stereo coder, it shouldn't be too difficult. My old pal K used to build multi-section Bessel and Butterworth filters that were cascaded to give the response wanted. It's possible to get nearly as good a result by using simple L/C filters, and you can easily add a 19kHz "trap" to prevent interference to the pilot tone. You have to buffer the L/C filter on the way in and the way out - most easily done with either dual op-amps or a single quad package. The input pair of op-amps can be easily used to provide pre-emphasis.

The limiter can use the 4049UBE logic IC configured as enhancement mode FETs (the channels would be identical without tweaking) - the stereo limiter would then just be a 4049, any generic quad op-amp (LM324 is good enough) for the sidechain, a dual op-amp for the signal recovery after the attenuator, and a couple of transistors if you want blinking LEDs to show when it's limiting. You can prevent overshoots with a simple clipper - another dual op-amp - then feed your stereo coder with the filtered, limited audio.

The "deluxe" version could have split-band limiting. It would just be the same limiter as above - twice - fed by a lowpass filter for <250Hz and a highpass filter for everything from 250Hz to 15kHz. This keeps the bass from crushing the rest of the audio, and can sound very good. After the two limiters, you'd have a simple mixer stage to recombine the audio to feed to the coder.....

Practically, I've found that 8 times oversampling is fine for both the audio and the pilot, but I have actually gone further with the pilot in most designs - again it's a question of how much filtering after the switches you want to include! As a side point - I did use a function generator IC to make a really nice 19 kHz pilot, with it phase-locked to the 38kHz switches. It took some debugging, but the results were surprisingly good!

I'll be happy to supply some suggested circuits....
"Why is my rig humming?"
"Because it doesn't know the words!"
;)

jvok
no manz can test innit
no manz can test innit
Posts: 220
Joined: Sun Aug 16, 2020 2:44 pm

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Thu Feb 16, 2023 9:58 pm

Well I just spent a bit of time in the simulator and you're right the notch filter doesn't work. You need a really sharp notch if you want it to be flat up to 15k. Which is easy enough to do but then component values end up really critical. Even just rounding to E24 puts the centre frequency down to 18.75k. With such a sharp notch that means its only 20dB down at 19k and tolerances will ruin it.

The phase response actually isn't too bad at least in the audio band, only 30 degrees out by 15k. The 6-pole lowpass has done almost a full 360 by that point.

I saw your post about the max7411 in the other thread. I'd actually picked out one of those maxim chips (max7408) originally before i went down the opamp filter route. I decided against it because I wanted to keep things jellybean, but thinking about it now its probably the closest thing to the old school toko filters and they weren't exactly jellybean parts either. Plus by the time you've added up all the passives for an opamp filter its probably not much cheaper than the maxim chip.

Only issue is the DIP version is end of life. I have no issue soldering smd parts personally and do it all the time at work but again its not really hobbyist friendly. But at least you can still get them for the time being.

jvok
no manz can test innit
no manz can test innit
Posts: 220
Joined: Sun Aug 16, 2020 2:44 pm

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Thu Feb 16, 2023 10:06 pm

I actually have a compressor/limiter design I really like using the LM13700 that I came up with during the second covid lockdown. Its 2-stage with a wideband limiter followed by a variable de-emphasis circuit to stop the pre-emphasis causing overshoots. The idea came from an old BBC R&D paper I found. One day I'll get round to posting it on here but theres still a few things I want to change on it first.

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

Re: jvok's Sleazy Listening stereo coder

Post by Albert H » Thu Feb 16, 2023 10:51 pm

I know the paper you mean (I think) - I'm ex-Big Broadcasting Concern myself (back in the 70s!).

I did a design (that Roger Howe ripped off!) that used a 13600 in the negative feedback loop of a good quality dual op-amp. My version used NE5532s in the audio path, and 4558s in the sidechain. I had (originally) two precision rectifiers (one off each channel input) feeding a time constant circuit through a diode wired-OR gate. The DC control voltage was fed through equal value resistors to the control pins of the 13600 (so they're current-driven), to pull the gain down by increasing the 13600 gain, thereby introducing more negative feedback around the op-amps, reducing the output level.....

It works pretty well, but is prone to overshoots, so I messed with adding response shaping to the sidechain. This helped a bit, but I still had to add anti-overshoot clippers! The clippers were back-to-back LEDs in the negative feedback loop of another op-amp.... I happened to discover that a particular type of green LED went into conduction precisely at PPM 6 (+8dBm), so I used those, with great results!
"Why is my rig humming?"
"Because it doesn't know the words!"
;)

jvok
no manz can test innit
no manz can test innit
Posts: 220
Joined: Sun Aug 16, 2020 2:44 pm

Re: jvok's Sleazy Listening stereo coder

Post by jvok » Sun Feb 19, 2023 3:30 am

Albert H wrote: Thu Feb 16, 2023 10:51 pm I know the paper you mean (I think) - I'm ex-Big Broadcasting Concern myself (back in the 70s!).
The paper was Frequency Dependent Limiters for FM Sound Transmitters:

- Part 1: https://downloads.bbc.co.uk/rd/pubs/reports/1973-25.pdf
- Part 2: https://downloads.bbc.co.uk/rd/pubs/reports/1975-22.pdf

Never bothered with the delay line method they talked about though. I started breadboarding it but decided all the all-pass delay stages made it too complex so just went with a fast attack time and a clipper to catch the peaks.

My circuit puts the 13700 in the feedback network too. Means the 13700 runs at min gain (= lowest noise floor) at smallest signal level so keeps the SNR effectively flat against gain (vs the 13700 running barefoot which would give lowest SNR at smallest signal level).

LeeCavanagh
tower block dreamin
tower block dreamin
Posts: 361
Joined: Sat Feb 18, 2017 5:56 pm

Re: jvok's Sleazy Listening stereo coder

Post by LeeCavanagh » Mon Feb 20, 2023 12:02 am

Albert H wrote: Thu Feb 16, 2023 10:51 pm I know the paper you mean (I think) - I'm ex-Big Broadcasting Concern myself (back in the 70s!).

I did a design (that Roger Howe ripped off!) that used a 13600 in the negative feedback loop of a good quality dual op-amp. My version used NE5532s in the audio path, and 4558s in the sidechain. I had (originally) two precision rectifiers (one off each channel input) feeding a time constant circuit through a diode wired-OR gate. The DC control voltage was fed through equal value resistors to the control pins of the 13600 (so they're current-driven), to pull the gain down by increasing the 13600 gain, thereby introducing more negative feedback around the op-amps, reducing the output level.....

It works pretty well, but is prone to overshoots, so I messed with adding response shaping to the sidechain. This helped a bit, but I still had to add anti-overshoot clippers! The clippers were back-to-back LEDs in the negative feedback loop of another op-amp.... I happened to discover that a particular type of green LED went into conduction precisely at PPM 6 (+8dBm), so I used those, with great results!
Sony ST 920 QS

LeeCavanagh
tower block dreamin
tower block dreamin
Posts: 361
Joined: Sat Feb 18, 2017 5:56 pm

Re: jvok's Sleazy Listening stereo coder

Post by LeeCavanagh » Mon Feb 20, 2023 12:02 am

Albert H wrote: Thu Feb 16, 2023 10:51 pm
I did a design (that Roger Howe ripped off!) that used a 13600 in the negative feedback loop of a good quality dual op-amp. My version used NE5532s in the audio path, and 4558s in the sidechain.
Is that the same person I’m thinking of I wonder

I once bought a compressor that was entirely put in potting compound by Neil as they thought I’d steal the design.
Is that Roger from ‘Roger’s Systems’ near the Wirral (), they had two , the smaller one was called the cosworth if I recall. Also the pilot tone kept drifting off and I couldn’t do anything due to the potting compound.

Anyway, those were the days
Sony ST 920 QS

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

Re: jvok's Sleazy Listening stereo coder

Post by Albert H » Mon Feb 20, 2023 2:32 am

Nope - the Roger I'm talking about was at Broadcast Warehouse (now deceased). He was actually quite a competent engineer, but wasn't above ripping of other people's designs!
"Why is my rig humming?"
"Because it doesn't know the words!"
;)

User avatar
reverend
no manz can test innit
no manz can test innit
Posts: 235
Joined: Sat Jul 25, 2020 12:03 pm

Re: jvok's Sleazy Listening stereo coder

Post by reverend » Tue Feb 21, 2023 4:46 pm

jvok wrote: Sun Feb 12, 2023 11:09 pmI can see why that's true for a plain (hard switched 38kHz) switching coder because the fundamental of a square wave is 4/pi times the square wave ampitude, i.e. the nasty fourier equation on wikipedia https://en.wikipedia.org/wiki/Square_wa ... r_analysis

But an oversampling coder is reconstructing a pretty accurate sine wave, not a square wave. In other words if I had an infinite number of taps on the resistor chain then the circuit would work exactly the same as a true analog multiplier. Obviously with 8 taps its not perfect but its still much closer than a switching coder. But if you have equations that prove me wrong I'd like to see them.
So I've done some analysis of this. A basic square wave (i.e. +1 / -1 switched) does produce a fundamental (i.e. at 38 kHz) which is pi/4 (1.273) times too big. There is also a third harmonic component (at 114 kHz) which is 0.33 times the size of the fundamental which needs to be filtered out meaning some pretty severe filtering requirements.

If you change this for a waveform which goes 0, 1, 0, -1, 0 ... the fundamental is now too small (0.9) and the third harmonic is still a third the size of the fundamental, so this is effectively worse.

If you change the timing of the 0, 1, 0, -1, 0 pattern so that the 1 and the -1 are on for twice as long as the 0, so the pattern is roughly 0, 1, 1, 0, -1, -1, 0... then the fundamental is still too large (1.1 roughly) but the third harmonic disappears completely! Note that you would need a clock which runs at 6 times 38 kHz to switch this correctly. The fifth harmonic (which at 190 kHz is much easier to get rid of) is 0.2 times the size of the fundamental.

If you change the sequence to 0, 0.71, 1, 0.71, 0, -0.71, -1, -0.71, 0... all with equal timing, then the fundamental is pretty close to 1 (I get 0.97) and the third and fifth harmonics both disappear. The 7th harmonic (which is even easier to get rid of being at 266 kHz) is 0.15 time the fundamental.

Based on this, therefore, I reckon that it probably isn't worth going above 8 times oversampling (i.e. 0, 0.71, 1, 0.71 etc...) as the result is pretty accurate, and the harmonics are easy to get rid of.
if it ain't broke, keep tweaking

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

Re: jvok's Sleazy Listening stereo coder

Post by Albert H » Wed Feb 22, 2023 2:00 am

Bingo! Your analysis is pretty much on the money!

One coder that I was involved with the design of used an second modulator centred on the 114 kHz subcarrier, which was subtracted from the products of the main modulator, thereby cancelling out the pi/4 issue (and eliminating the spurs in the process!). This was - possibly - the simplest and most elegant solution I ever saw, and achieved remarkable spectral purity without critical filters!

Eight times oversampling is about as far as you need to go - it's just about the best compromise between spectral purity, distortion, and complexity. It is worth using more steps for the pilot generation (if you have the logic and board space available), but again this isn't essential.

Another approach that I've used with success is an entirely analogue means of deriving the stereo multiplex signal - generating a really clean 19 kHz pilot, then using both inputs of an analogue multiplier to derive 2×19 kHz (sin²f = 2f+c) which gives an accurately phase coherent 38 kHz subcarrier, which gets fed to another analogue multiplier (carrier input). Meanwhile, the audio is lowpass filtered and fed to a couple of op-amps to derive sum and difference signals. The difference is fed to the 38kHz analogue multiplier, and the resultant output is the "S" subcarrier, and if the multiplier is well balanced, there's no actual 38kHz residual in there at all. The three components - the sum ("M"), difference ("S") and the 19 kHz sine pilot are sent to a final mixer stage, where their relative proportions are adjusted.

This approach obviates the complex and difficult output filtering requirements needed by the traditional switching methods, and the spectral purity of the composite multiplex signal can be extremely close to perfect!

I'll dig out the circuit switching coder with the 114kHz (sub)subcarrier modulator. It really was a brilliant design (even if I say it myself - it was my original concept!).
"Why is my rig humming?"
"Because it doesn't know the words!"
;)

Post Reply