-
Notifications
You must be signed in to change notification settings - Fork 14
Technical info
Tidal has a few different codecs it supports (only music is covered here)
Quick glossary:
EAC-3: Actually Dolby EAC-3 JOC aka Dolby Digital Plus with Dolby Atmos (Lossy)
AC-4: Dolby AC-4 (Lossy)
360: 360 Reality Audio on Tidal, actually the MPEG-H codec (Lossy)
MQA: Master Quality Authenticated in the FLAC container (Lossy)
FLAC: Free Lossless Audio Codec, the most popular lossless audio codec by far (Lossless)
ALAC: Apple Lossless [Audio Codec], similar to FLAC (Lossless)
AAC: Advanced Audio Coding, designed as a successor to MP3 (Lossy)
Quality of these codecs from highest to lowest:
Normal listening
- MQA (even though it is lossy and highly debatable, a normal lossless 16 bit FLAC can be extracted, so it wins by technicality)
- FLAC (16 bit, 44.1kHz)/ALAC (both are lossless and can be converted from one another without loss)
- AAC (96 or 320 kbps depending on selected quality, 320 being higher quality, variable bitrate (VBR))
Immersive surround sound listening:
- EAC-3 (based on 5.1 surround with Dolby Atmos metadata added, 768kbps bitrate but it is a significantly less efficient than AC-4 and it has more channels so quality is debatable)
- AC-4 (based on stereo (2.0 not surround) with Dolby Atmos metadata added, 256kbps bitrate)
- 360 (garbage in testing, though untested with actual supported headphones so it may actually be great)
Different devices are allocated different tokens, and are only allowed to retrieve specific codecs. Tidal has a relatively complex system of handling these. No way near as complex as Amazon's system, but still:
Supported Codecs with an Android TV login:
Most client IDs: MQA, FLAC, AAC
NVIDIA Shield TV 2019, Amazon FireTV, some actual TVs that run Android: MQA, FLAC, AAC plus EAC-3 (theoretically nearly every Android TV should be able to support EAC-3, but Tidal does not allow them)
Supported Codecs with an Android Mobile login:
Most client IDs: MQA, FLAC, AAC, 360
Devices with a dedicated AC-4 hardware decoder: MQA, FLAC, AAC, 360 plus AC-4
iOS: MQA, ALAC, AAC, 360
tvOS: The specifics are unknown but we do know it uses MPEG-DASH streaming
macOS: ALAC, AAC
Desktop: MQA, FLAC, AAC (MQA is encrypted with extremely basic encryption, handled by RedSea fine, though the client ID (token) currently used by default does not support MQA)
Browser: FLAC, AAC
- To get the EAC-3 codec version of Dolby Atmos Music, the TV sign in must be used with the client ID and secret of one of the supported Android TVs (full list below)
- To get the AC-4 codec version of Dolby Atmos music, the Mobile sign in must be used with the client ID of one of the supported phones (default mobile works)
- To get MQA, use literally anything that is not the browser, nearly all client IDs work. (In this case change the client ID of the desktop login) (bring your own anything (TV, mobile, desktop))
- To get ALAC without conversion, use the client ID of an iOS device, or the optional desktop token included from macOS (comment out the default FLAC supporting one, and uncomment the ALAC one) (secondary desktop works, or bring your own mobile)
- To get 360, use the client ID of a supported Android or iOS device (nearly all support it anyway, so that's easy) (default mobile works)
- TV: FireTV with EAC-3 support Thanks to openTIDAL
- Mobile: Default has AC-4 support (which also supports MQA by extension). There is also another one which only supports MQA without AC-4 optionally (commented out)
- Desktop: Neither of the included ones support MQA! You must replace it with your own if you want MQA support! Default token can get FLACs only, whereas the optional one can get ALACs only (both are also able to get AAC)
- Browser: Is completely unsupported for now, though why would you want it anyway?
Note: Currently, Tidal now uses a different CAPTCHA service: DataDome which only triggers reCAPTCHA v2 when its detection suspicious activity, such as VPN, multiple login tries and maybe even more. So mobile/desktop login works again, if you encounter a problem try again later or even tomorrow.
Further Reading on supported devices and codecs:
- https://support.tidal.com/hc/en-us/articles/360004255778-Dolby-Atmos-Music (full up to date list of supported Android TVs for EAC-3 JOC)
- https://github.com/google/ExoPlayer/issues/6667#issuecomment-555845608 (Android phones that are actually capable of decoding AC-4, slightly outdated)
- https://www.dolby.com/experience/tidal/#tidal%20devices (some devices that support Dolby Atmos, missing a few devices that Tidal does actually support, but relatively up-to-date)
- https://avid.secure.force.com/pkb/articles/en_US/faq/AvidPlay-Distributing-Dolby-Atmos-Music-FAQ (bitrates and other background information, really interesting)
Note: Android TVs use a slightly different system of client IDs plus client secrets, and the only way to retrieve EAC-3s is to root an NVIDIA Shield TV 2019, which is extremely complex and comes with its own issues, to get its client ID and secret, as none of the supported devices can have user certificates installed, and the NVIDIA Shield TV is the only one that can be rooted to do this.
To get a client ID, you must do a man-in-the-middle-attack or otherwise. On Android this involves getting Tidal to accept user certificates. This can be done in two ways:
- Somehow modify the APK to add the certificate in yourself (difficult!)
- Force it to target Android Marshmallow (6.0, API 23) as it is the last version that user certificates are allowed