@Reticuli I have checked playback of the clean test file that was uploaded here. You can check this too.
The file contains a 440 Hz reference tone, that’s an A. Playback delivered clearly that note/tone, an A. The problem stated was that certain of these m4a files play slower on first import and analysis, as if the 48 kHz content was interpreted as 44.1 kHz content. That is very specific. It is not that they wrote that their cymbals sound strange …
If the 44.1 kHz interpretation situation is true, we can calculate the resulting playback tone:
440 Hz x 44.1 / 48 = 404.25 Hz … and that is no longer an A, it’s somewhere between G♯4 and G4, since G♯4 is 415.30 Hz and G4 is 392.00 Hz … in any case, that is a difference I would definitely hear …
So, the test file plays fine in Engine DJ and on the SC6000M. I don’t have a Prime 2. And we haven’t heard any news about the problematic files. Why and how are they different? I would like to know what the analysis showed there …
MP4/M4A has several places where timing and sample-rate-related information can occur, and AAC itself has its own AudioSpecificConfig, I don’t claim to know them all, this file format is alien to me
… but I enjoy a good whodunnit.
So far, @st.cool has not posted new info about the problematic files. And these are the files we would need to reproduce odd behaviour …
I played around with the clean and unproblematic test file, I left the content unchanged, but changed the info in the container.
test-files.zip (673.9 KB)
| File |
Expected if our metadata hypothesis fools Engine |
Result |
| 01_clean.m4a |
A = 440 Hz |
440 Hz ok |
| 02_declared_44.1.m4a |
~404.25 Hz ≠ A |
440 Hz ?! |
| 03_declared_48.m4a |
A = 440 Hz |
440 Hz ok |
| 04_control.m4a |
A = 440 Hz |
440 Hz ok |
Yeah, surprise! Expected is not what happened. All these versions played back perfectly fine in Engine DJ and on the SC 6000M, clearly an A, 440 Hz, all of them analysed as 11B, which corresponds to A major …
There was one weird exception: the small waveform of 03_declared_48.m4a was not rendered completely, and the option to re-analyse it was not present in the context menu. Since this file is byte-for-byte identical to the original, I don’t know what to make of that yet. It may simply be an Engine DJ analysis/cache oddity (?) … weird. Edit: file was still loaded to a deck, hence no re-analyse option (thank you @MrWilks).
We can look at interesting places in these files:
File size: 194,843 bytes
Target: 0x2F08D (192653)
0002F06D 00 00 00 5A 6D 70 34 61 00 00 00 00 00 00 00 01 ...Zmp4a........
0002F07D 00 00 00 00 00 00 00 00 00 01 00 10 00 00 00 00 ................
0002F08D BB 80 00 00 00 00 00 36 65 73 64 73 00 00 00 00 .......6esds....
0002F09D 03 80 80 80 25 00 01 00 04 80 80 80 17 40 15 00 ....%........@..
At 0x2F08D we have:
BB 80 00 00
which represents 48000 Hz in 16.16 fixed-point in the mp4a AudioSampleEntry.
I changed it in the second file, 02_declared_44.1.m4a, to:
AC 44 00 00
which represents 44100 Hz in 16.16 fixed-point. 
File size: 194,843 bytes
Target: 0x2F08D (192653)
0002F06D 00 00 00 5A 6D 70 34 61 00 00 00 00 00 00 00 01 ...Zmp4a........
0002F07D 00 00 00 00 00 00 00 00 00 01 00 10 00 00 00 00 ................
0002F08D AC 44 00 00 00 00 00 36 65 73 64 73 00 00 00 00 .D.....6esds....
0002F09D 03 80 80 80 25 00 01 00 04 80 80 80 17 40 15 00 ....%........@..
MediaInfo shows a sample rate of 48 kHz in both cases. And Engine DJ plays it correctly. But the mp4a sample rate entry has been changed. This suggests that Engine is obtaining the effective 48-kHz information from somewhere other than this mp4a field …
I have not touched the esds (Elementary Stream Descriptor) atom or AAC configuration … but that is another candidate place where the actual sample-rate info comes from (?) … and there is the stts (Time-to-Sample) atom, it looks interesting too …
Established:
Engine DJ and OS can play 48 kHz m4a files.
Engine DJ and OS can play 48 kHz m4a files with a conflicting 44.1 kHz value
in the mp4a audio sample entry box samplerate field - which is maybe not striking, but a result.
This particular metadata mismatch does not reproduce the reported bug. At least not here with Win 11, latest Engine DJ and OS and the SC6000M as a player …
That leaves the question:
Which piece of information does Engine DJ use to establish the relationship between AAC frames and playback time?
However, this is speculative … @st.cool could run some spectacular diagnostics on the files that cause the issues …