Hello guest, if you like this forum, why don't you register? https://fanrestore.com/member.php?action=register (December 14, 2021) x


How to decode 6-track APTX-100 (cinema DTS) with the correct channel levels
#91
(2026-06-04, 09:29 PM)stwd4nder2 Wrote: Would that filtering be an inherent part of the mix, or just something introduced in the DTS encoding process?

It is always the result of the Cinema DTS format, because of the missing dedicated LFE channel. I analyzed many home releases in the past and none of them had a high pass at 80 Hz in the surrounds.
Reply
Thanks given by:
#92
DTS' official specs are/were 20Hz-20kHz for L-C-R, 80Hz-20kHz for L/R surrounds and 20Hz-80Hz for subwoofer. Any information below 80Hz that was originally in the surround channels will be sent to the subwoofer (but low frequencies are non-directional). In the theatrical environment the subwoofer level is set to +10dB in-band gain using a RTA, home codecs electronically add +10dB gain to the LFE channel, it wouldn't surprise me if an RTA is needed to 100% get the levels correct.
Reply
Thanks given by:
#93
(2026-06-04, 10:40 PM)zoidberg Wrote: it wouldn't surprise me if an RTA is needed to 100% get the levels correct.

Room EQ Wizard has an RTA that can load WAV files. I threw in the band limited pink noise which contains the Center and the LFE (Reel 10) from the DS3 test disc. With a low pass at 80 Hz of 4th order the +6 dB produces a difference of 1 dB when measured with dB C. So, this seems to be correct (there are always small differences).

The spectrum of the pink noise (not band limited) of Reel 1 is interesting. The bass of the surrounds are attenuated by -10 dB. This seems to be correct, because after the routing to the LFE the level will be raised by +10 dB. But, there is a large dip in the range of about 60 Hz. Maybe during the mix the bass was separated by a low pass, attenuated and mixed back. I don't know if this can be reconstructed properly or if it is by design.

If anyone has captures from a DTS-6D/DTS-6AD this could help to find the filter function for LFE extraction. Pink noise from DS3 test disc would be helpful.
Reply
Thanks given by:
#94
The whole LFE level thing is much more trivial than we thought. The +6 dB is only necessary, because the foobar plugin multiplies both surrounds with 0.5 before mixing them. SoX does the same. This is necessary to avoid clipping. The +6 dB is just a compensation of that. It has nothing to do with the calibration of the speakers.
There is a test signal on the DS3 test disc that proofs that -20 dB on the Center equals -30 dB on the LFE (like in home environment). And this can be reached by a simple sum of the surrounds and a low pass. No correction factor is needed. The correction factor is only needed when using the foobar plugin, because it halves the level before summing.

The bass for the surround channel itself is attenuated by -10 dB as stated in my last post, because it will be played with +10 dB by the subwoofer. We can calculate the following maximum level for the summed and low passed LFE channel:

-6 dBFS (LFE/2) -6 dBFS (LFE/2) -10 dBFS (Surround left) -10 dBFS (Surround right) = +2.4 dBFS

This explains why some movies show clipping in the extracted LFE. A good master should never exceed -6 dBFS in the bass of the surrounds before the encoding. It is interesting that this is violated by real mixes.

Maybe the hardware decoder handle that in some way by attenuating all channels by -2.4 dB before extracting the LFE. That has to be validated...

Of course all this doesn't explain why some early movies (e.g., "Jurassic Park") seems to have a too low LFE. But it explains the +6 dB.


PS: Audacity doesn't apply 0.5 when mixing channels.
Reply
Thanks given by: little-endian
#95
Thanks a lot for your additional research, great to have you aboard here!

(2026-06-06, 08:27 PM)FoLLgoTT Wrote: The whole LFE level thing is much more trivial than we thought. The +6 dB is only necessary, because the foobar plugin multiplies both surrounds with 0.5 before mixing them.

However, that doesn't explain the "3dB rule" for earlier APT-X100 releases before 1999, does it?

(2026-06-06, 08:27 PM)FoLLgoTT Wrote: SoX does the same. This is necessary to avoid clipping.

At least in the integer domain. Just like AC3 which is fine by itself but may have clipping when mapped to integer pcm at a certain level which eac3to knows to nicely compensate for in a 2nd pass.

(2026-06-06, 08:27 PM)FoLLgoTT Wrote: This explains why some movies show clipping in the extracted LFE. A good master should never exceed -6 dBFS in the bass of the surrounds before the encoding. It is interesting that this is violated by real mixes.

Very interesting insight indeed. I wonder how real DTS-Decoder machines back then did it because one could argue that neither would the clipping occur despite exceeding -6dBFS in the individual channels if floating point is used in the entire chain and a negative gain applied afterwards before D/A-conversion.

(2026-06-06, 08:27 PM)FoLLgoTT Wrote: Maybe the hardware decoder handle that in some way by attenuating all channels by -2.4 dB before extracting the LFE. That has to be validated...

Yep, now, retrospectively, the technically best way seems to be to decode everything to floating point and adjust the levels later one while raising the LFE only close to 0dBFS but certainly not beyond and rather attenuate the other stuff accordingly instead as mentioned in this thread. At least today, we have the possibility to avoid clipping of the LFE despite surrounds mixed in violation to the original standard (if so).

(2026-06-06, 08:27 PM)FoLLgoTT Wrote: Of course all this don't explain why some early movies (e.g., "Jurassic Park") seems to have a too low LFE. But it explains the +6 dB.

Here, I'm still successfully confused as doesn't require Jurassic Park only a raise of 3db for the LFE, certainly being a candidate of the pre-1999 era?

(2026-06-06, 08:27 PM)FoLLgoTT Wrote: PS: Audacity doesn't apply 0.5 when mixing channels.

And clips like shit when one dares to play a multichannel mix which apparently is always rendered as stereo only, yet another annoyance of Audacity which seems to be the GIMP for audio (free, powerful, but buggy and not necessarily user-friendly).

Quick note: meanwhile, we arrived at APT-X100 plugin version 0.4.0. 🤗
Reply
Thanks given by:
#96
(Yesterday, 02:16 PM)little-endian Wrote: However, that doesn't explain the "3dB rule" for earlier APT-X100 releases before 1999, does it?

Unfortunately not. From my understanding the subwoofer was not calibrated with +10 dB, but with +6 dB before January 01, 1999. So in fact, we have to lower it by -3 dB after decoding and summing (without correction factor of 0.5).

Quote:Here, I'm still successfully confused as doesn't require Jurassic Park only a raise of 3db for the LFE, certainly being a candidate of the pre-1999 era?

"Jurassic Park" is interesting, because there is only a chinese DVD with the cinema mix. All other releases seems to have new mixes (I counted 3-4 non-cinema mixes). The UHD BDs alone have two different mixes (DTS:X and Atmos are different).

But again, the German track may help. The Blu-ray contains a German track that fits the cinema track very well. But only, when the cinema track is decoded with an uncorrected sum (+6 dB in the plugin) on the LFE. So there was no lowering by -3 dB when mastering the German track. If this was a mistake or not is unknown.

Just to create more confusion. Wink

Quote:Quick note: meanwhile, we arrived at APT-X100 plugin version 0.4.0. 🤗

Yes, I requested a symmetrical Linkwitz Riley filter with configurable order. Smile
Reply
Thanks given by:
#97
Sorry for interrupting the discussion, but I also ran into a little issue with Cinema DTS and Foobar: Since I got a new computer, I also had to reinstall Foobar and the APT-X plugin. The first Cinema DTS I tried messing with was "Star Wars: A New Hope (Special Edition)" from 1997. I set LFE to +3 dB in the APT-X settings and then just threw the AUD-files into Foobar and converted them to WAV-files (no dithering, bit depth set to auto). It gave me 44.1 kHz/16 Bit WAVs as usual and while the German version seems to be ok, the English version had clipping in at least one scene and channel (Surround Left when the Death Star explodes in R6). I can't imagine that this was already the case in the original AUD-files.

Is there any way to figure this out? After all the surrounds need to be lowered by 3 dB either way, but of course it'd be great to do so before the clipping happens. Wink
Reply
Thanks given by:
#98
High pass filtering causes it, if you decode without the LFE you'll have no clipping.
Reply
Thanks given by:
#99
Try just extracting the subwoofer channel as-is and adjust the LFE level afterwards.

Clipping isn't an issue with the theatrical decoder units as the level adjustments are made electronically once the D->A conversion has taken place, individual channel levels are set with trim pots and playback level is adjusted with a fader (7 being reference level). To clip in this environment it would either have to be baked into the APT-X100 encode or the decoded output would have to be severely overdriven.
Reply
Thanks given by:
(Yesterday, 11:28 PM)Dr. Cooper Wrote: It gave me 44.1 kHz/16 Bit WAVs as usual and while the German version seems to be ok, the English version had clipping in at least one scene and channel (Surround Left when the Death Star explodes in R6). I can't imagine that this was already the case in the original AUD-files.

Is there any way to figure this out?

Yep, use 32-bit floating point PCM instead in Foobar's export settings and attenuate the levels in an audio editor of your trust. This should avoid the clipping.
Reply
Thanks given by:


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Help] Sync separate audio track to mkv file JackForrester 11 19,283 2022-06-16, 10:57 AM
Last Post: Hitcher
  How to add a flag Surround, EX or ES on a track? Falcon 5 9,181 2020-01-22, 07:55 PM
Last Post: schorman
  [Help] Correct Bad Frame Rate Conversion CSchmidlapp 29 42,550 2019-05-24, 10:17 PM
Last Post: zoidberg

Forum Jump:


Users browsing this thread: 1 Guest(s)