XXHighEnd - The Ultra HighEnd Audio Player
April 29, 2024, 11:57:42 am *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: August 6, 2017 : Phasure Webshop open ! Go to the Shop
Search current board structure only !!  
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: Cue Files and Ticks for nitwits ?  (Read 6487 times)
0 Members and 1 Guest are viewing this topic.
PeterSt
Administrator
High Grade Audiophile
*****
Offline Offline

Posts: 16837



View Profile Email
« on: September 17, 2008, 09:58:55 am »

Allow me to notice something I never realized, and possibly nobody did ...

In order to understand, you should grab that EAC grid that shows the file offsets in bytes and the track times next to it. Now you tell me :

There are 44100 samples in one second, and since one "audio word" for one channel takes 2 bytes, one sample takes 4 bytes, so there are 4 x 44100 = 176400 bytes in one second. Track times are reported (by EAC) with a granularity of .01 (1/100) second.

1 sample takes 1/44100 seconds. We don't need to calculate more to see that the theoretical granularity needed is higher than EAC reports. What I say is this :

It is the data domain (the bytes) that determine where a track ends. This is a random offset in the file, as long as it can be divided by 4 (for 44100 files). Of course the base for my statement that this is "random" emerges from the fact that musicians don't stop playing at 1/100 second boundaries *and* that during the mastering process this isn't mapped onto 1/100 seconds either. The latter I actually don't know, because it might well be that the (software) consoles used work in the time domain, and that cutting and all is presented with a 1/100 second boundary. But hey, there won't be a law in this, so I take it this is *not* the case.

Need I say more ?
A Cue File composer like EAC will be using a(n unintended) virtual rounding of the end/start of tracks at 1/100 second boundaries, whereas it is not said at all that this can be reversed to the actual byte offset. Example :

We have a track that is reported (by EAC) to last 50.01 seonds. That means a byte offset of 8,821,764 bytes (50.01 x 176400).
In reality though, the track lasts e.g. 10 samples more, thus 10 x 4 = 40 bytes more = 8,821,804 bytes.
Now, when this track lasts 50.01 seconds, the next track (think gapless) starts at 50.02 seonds. And keep in mind : there is no better granularity like 50.01350 or whatever seconds. It's 50.01 or 50.02 and nothing in between that. So, the next track will start at 50.02 is byte offset 8,823,528. Uhmm, we missed 8,821,764 - 8,823,528 = 1764 bytes = (/4) 441 samples = (44100/441) = ... 1/100 second.

441 samples is way enough to let jump the voltage from e.g. completely negative to completely positive, whereas the music intended to let that slide by means of 441 steps.

Looking at beforementioned EAC grid again, this indirectly works out (or is worked out) differently : Where the byte offsets do not show a gap of even one (four) byte, the lot including the time domain is represented as :

Track end8,821,763Time end50.01
Track start8,821,764Time start50.01

The above implies that
a. The track ends 10 samples early (see above outlay);
b. The next track starts 10 samples early (no problem for gapless)
c. One sample is repeated.

Where the above example was about 10 samples being off, the maximum will be right in the middle of the 50.01 and 50.02, hence 50.005, or 8,820,882 - 8,821,764 = 882 bytes or (rounded) 220 samples. That is, if EAC rounds and not cuts (which we don't know).

Even when we're 220 samples off, this is never a problem, because when we's start an e.g. 3rd track of a gapless album, who will know that the 220 samples early or late start belog to the wrong track ? ... it just can't (be known);
When it's a non-gapless album, the 220 bytes (0.005 seconds) is way too short to end up in the previous or next track, knowing that the gap is in between 1 and 2 seconds.


Concluded : The only thing being wrong is that with two subsequent tracks playing while the music is gapless, one sample will be repeated without very special attention. This special attention means : start the track one sample later than the start time implies. And, since this would be wrong for the first track, this comes down to end the track one sample early. Too bad for the last track.

At the moment of writing this, I am dead sure that XXHighEnd applies the end at 50.01 and start at 50.02 syndrom, just because this is (was !) the most logical thing to do, and this is how the human being calculates. This means that for Cue Files, currently, 0.01 second will be missing between tracks ...
... which for gapless may incur for a tick because of voltage jumps which should be spread over 441 steps which is now done in 1 step.


swoon

PS: This is all *not* related to the tick and small repeat or echo which may be audible in Cue Files in between gapless tracks which shows in all versions u/i 0.9v-6a (and unofficial 0.9v6-b), which was caused by a calculation error in the time domain, which reformed an e.g. 0.09 to 0.90 (implying a very similar error as what this topic is about, although of a 10 times higher magnitude, but which is exactly what brough me to the subject here).

Logged

For the Stealth III LPS PC :
W10-14393.0 - July 17, 2021 (2.11)
XXHighEnd Mach III Stealth LPS PC -> Xeon Scalable 14/28 core with Hyperthreading On (set to 14/28 cores in BIOS and set to 10/20 cores via Boot Menu) @~660MHz, 48GB, Windows 10 Pro 64 bit build 14393.0 from RAM, music on LAN / Engine#4 Adaptive Mode / Q1/-/3/4/5 = 14/-/0/0/*1*/ Q1Factor = *4* / Dev.Buffer = 4096 / ClockRes = *10ms* / Memory = Straight Contiguous / Include Garbage Collect / SFS = *10.13*  (max 10.13) / not Invert / Phase Alignment Off / Playerprio = Low / ThreadPrio = Realtime / Scheme = Core 3-5 / Not Switch Processors during Playback = Off/ Playback Drive none (see OS from RAM) / UnAttended (Just Start) / Always Copy to XX Drive (see OS from RAM) / Stop Desktop, Remaining, WASAPI and W10 services / Use Remote Desktop / Keep LAN - Not Persist / WallPaper On / OSD Off (!) / Running Time Off / Minimize OS / XTweaks : Balanced Load = *62* / Nervous Rate = *1* / Cool when Idle = n.a / Provide Stable Power = 1 / Utilize Cores always = 1 / Time Performance Index = Optimal / Time Stability = Stable / Custom Filtering *Low* (16x) / Always Clear Proxy before Playback = On -> USB3 from MoBo -> Lush^3
A: W-Y-R-G, B: *W-G* USB 1m00 -> Phisolator 24/768 Phasure NOS1a/G3 75B (BNC Out) async USB DAC, Driver v1.0.4b (16ms) -> B'ASS Current Amplifier -> Blaxius*^2.5* A:B-G, B:B-G Interlink -> Orelo MKII Active Open Baffle Horn Speakers. ET^2 Ethernet from Mach III to Music Server PC (RDC Control).
Removed Switching Supplies from everywhere (also from the PC).

For a general PC :
W10-10586.0 - May 2016 (2.05+)
*XXHighEnd PC -> I7 3930k with Hyperthreading On (12 cores)* @~500MHz, 16GB, Windows 10 Pro 64 bit build 10586.0 from RAM, music on LAN / Engine#4 Adaptive Mode / Q1/-/3/4/5 = 14/-/1/1/1 / Q1Factor = 1 / Dev.Buffer = 4096 / ClockRes = 1ms / Memory = Straight Contiguous / Include Garbage Collect / SFS = 0.10  (max 60) / not Invert / Phase Alignment Off / Playerprio = Low / ThreadPrio = Realtime / Scheme = Core 3-5 / Not Switch Processors during Playback = Off/ Playback Drive none (see OS from RAM) / UnAttended (Just Start) / Always Copy to XX Drive (see OS from RAM) / All Services Off / Keep LAN - Not Persist / WallPaper On / OSD On / Running Time Off / Minimize OS / XTweaks : Balanced Load = *43* / Nervous Rate = 1 / Cool when Idle = 1 / Provide Stable Power = 1 / Utilize Cores always = 1 / Time Performance Index = *Optimal* / Time Stability = *Stable* / Custom Filter *Low* 705600 / -> USB3 *from MoBo* -> Clairixa USB 15cm -> Intona Isolator -> Clairixa USB 1m80 -> 24/768 Phasure NOS1a 75B (BNC Out) async USB DAC, Driver v1.0.4b (4ms) -> Blaxius BNC interlink *-> B'ASS Current Amplifier /w Level4 -> Blaxius Interlink* -> Orelo MKII Active Open Baffle Horn Speakers.
Removed Switching Supplies from everywhere.

Global Moderator
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1 RC2 | SMF © 2001-2005, Lewis Media Valid XHTML 1.0! Valid CSS!
Page created in 0.114 seconds with 19 queries.