About DolbyA:
Email me directly at johndyson10@xxxxxxxxx, and I'll try to help work through generally how the attack/release works -- but it is very very nontrivial.
Also, the frequency bands are a little more weird than what is suggested by the bandpasses. Essentially, the 2.7k->20+k band and the 8.8k->20+k bands are overlapped, so there is very significant interaction in the gain control dynamics.
I'll share a schematic of a DolbyA unit (publically available), where I'll explain that the 'diode pairs' aren't really normal rectifiers, but 'ride on the edge' of the nonlinear conduction curve. Don't even think about DolbySX -- I have detailed information about that also (proprietary), but it is far more complex than DolbyA, by an order of magnitude. With a few 'tricks', a reasonable DSP DolbyA decoder can be done... (The 'Sony patent' for DolbyA , to me, appears to be defective and doesn't describe the very critical attack/release scheme...) Changing the filter parameters dynamically on the Sony scheme just might be problematic -- so I suggest avoiding that, unless you have some workarounds. Using the Sony method is beyond my know-how.)
(For DolbyA, the feedback config and the interactions between the bands make a normal DSP-type implementation 'interesting'. My decoder only 'decodes' and doesn't 'encode'. At the time, I was being a purist, and believed that DolbyA ENCODING should never be done anymore.)
We all know that this discussion goes far beyond the SoX stuff, but maybe the eventual results of the explanation maybe be shared.
My guess is that explanations will take a few iterations -- but once the subtle actions of the attack/release mechanism is understood, it will be much easier to move forward on your own.
It took me a few weeks of experimentation with actual DolbyA materials to realize that the 'diode detectors' are not just 'detectors'.
TelcomC4 uses a similar 'riding the edge of the diode I/V curve,' but uses only one later. Unlike DolbyA, the bandpasses for the 'detector' are more narrow than the bandpass for each signal band -- but TelcomC4 is yet another matter.
Again -- email me, and usually I am 2-3 days responsive, only because sometimes I need to think and refer to my lousy-looking code.
(Far beyond DolbyA itself, my own decoder does a proprietary mitigation of the AM sidebands created by the fast and dense DolbyA gain control, the 'sidebands' historically called 'DolbyA Fog' when it appeared in the middle 1960's.)
John
On Thursday, February 13, 2025 at 09:13:01 AM EST, SoX NG <sox_ng@xxxxxxxxxxxx> wrote:
On 13/02/25 03:04, John Dyson via Sox-users wrote:
> About the DolbyA thing...
All I could find was a mention of "about" 0.1s attack time, apparently
the same decay time,
12dB/octave shoulders to the filters (not an mcompand parameter at present;
I dunno what it uses, 6dB per octave seems to be usual)
measuring Ray's graphs in the paper with a ruler, and someone saying that
it gets up to 10dB difference most of the way (which corresponds exactly
to the linear lower section of Ray's graphs) and up to 15dB at 15kHz,
which I took to mean the combined result of the parallel 3kHz and 9kHz
filters,
forgot to include the 4db "knees" so that the curves are rounded instead
of having corners
and rounded the figures to no decimal places so that each line would fit
into 80 chars.
If you have more precise detail about what Dolby A should be, I would be
happy
to amend the example so that it's closer. I'll even include decimal
places ;-)
Adding a parameter to mcompand to specify the steepness of the filters'
shoulders
also seems necessary for this use case, if I can figure out how to do that.
> (Also, the Q values for the band splitter are approx 0.42 for 8.8kHz,
> 0.45 for 2.7kHz
> and apprx 1 or 1.2 for somewhere around 75-80Hz??
Hmm. So filter shoulder steepness would need to be specifiable for each
frequency crossover point.
> Truly encoding/decoding DolbyA materials is a totally different world.
Yes. Emulating existing analog electronics is a totally different world.
Csound might be able to help;
it makes SoX look like a handcart, but then their application domains
are quite different.
> It is probably very off topic for this mailing list...
Not if it affects needed changes (or, rather extensions) to SoX.
I need to know what people use it for and how it could be improved in
the light of that.
M
_______________________________________________
Sox-users mailing list
Sox-users@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/sox-users
> About the DolbyA thing...
All I could find was a mention of "about" 0.1s attack time, apparently
the same decay time,
12dB/octave shoulders to the filters (not an mcompand parameter at present;
I dunno what it uses, 6dB per octave seems to be usual)
measuring Ray's graphs in the paper with a ruler, and someone saying that
it gets up to 10dB difference most of the way (which corresponds exactly
to the linear lower section of Ray's graphs) and up to 15dB at 15kHz,
which I took to mean the combined result of the parallel 3kHz and 9kHz
filters,
forgot to include the 4db "knees" so that the curves are rounded instead
of having corners
and rounded the figures to no decimal places so that each line would fit
into 80 chars.
If you have more precise detail about what Dolby A should be, I would be
happy
to amend the example so that it's closer. I'll even include decimal
places ;-)
Adding a parameter to mcompand to specify the steepness of the filters'
shoulders
also seems necessary for this use case, if I can figure out how to do that.
> (Also, the Q values for the band splitter are approx 0.42 for 8.8kHz,
> 0.45 for 2.7kHz
> and apprx 1 or 1.2 for somewhere around 75-80Hz??
Hmm. So filter shoulder steepness would need to be specifiable for each
frequency crossover point.
> Truly encoding/decoding DolbyA materials is a totally different world.
Yes. Emulating existing analog electronics is a totally different world.
Csound might be able to help;
it makes SoX look like a handcart, but then their application domains
are quite different.
> It is probably very off topic for this mailing list...
Not if it affects needed changes (or, rather extensions) to SoX.
I need to know what people use it for and how it could be improved in
the light of that.
M
_______________________________________________
Sox-users mailing list
Sox-users@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/sox-users
_______________________________________________ Sox-users mailing list Sox-users@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/sox-users