-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New waveforms have much higher visual gain than legacy ones #12448
Comments
Did a quick bisect over the |
Well, either this is the bug or #12115 is the bug. My changes were to have the colored waveforms have the same amplitude as the simple waveform. As reported in 12115 by @ronso0 , it was strange that that wasn't the case. You will also find my analysis there that shows that the combined high-mid-low is not the same as all. Anyway, I am fine with either approach but note that there are now two contradicting bug reports. |
My expectation as user is, that 100% amplitude is the same as the threshold for the clipping LED in the VU-Meter - accross all waveform types. |
I agree that that's the reasonable expectation. Now, why the waveform In any case, if we want the same waveform amplitude across waveform types, which I think makes sense, the current glsl waveform types are correct. |
I agree, the current waveforms look a bit "clipped", despite not extending to the full height. For example, here's Thunder by Imagine Dragons using the current GLSL waveforms and a visual gain of 1.0: There's certainly compression going on, but it doesn't feel that heavy. Compare the legacy waveforms: Legacy waveforms with a visual gain of 2.0: The preview doesn't look as chunky as the current GLSL waveforms either: |
I have been investigating this and I have come to the following conclusion:
I think this is wrong. Also I don't see any relevant comment in EnginePregain. So maybe this "arbitrary /2 gain chop" was fixed there, but this gain adjustment compensation was not removed? If you agree this is indeed wrong, I will create a PR to remove this |
Found it:
Does anybody know the reasoning behind this code? |
investigating using the commit history pointed me to this: |
Thanks for digging that up. So from reading those comments it looks like the Anyway, I will put the unscaling code behind a condition. At least the next time someone wonders why the waveforms look differently in mixxx than in any audio editor it will be more clear. |
We still need an explanation for that strange *2 scaling to compensate for the "arbitrary /2 gain chop" though... |
I agree. probably was just easier back then... mixxx has always been a pile of hacks ontop of each other. I'd highly appreciate if that was getting moved to the waveforms. making it optional could be done later. The only issue I see then is that scaling would get applied twice (once already in the cached waveform data and once in the render)... |
Well, the problem is that this would require reanalysing all tracks. Or maybe there is a versioning mechanism? Also, maintaining all the different waveform types (or accepting they diverge) will be a pain. Post 2.4 I would really like to do a big clean-up. |
Unfortunately not that I'm aware of (though there are heuristics somewhere the invalidate cached data such as waveforms info, though idk where). Reanalysing the waveform data is not a big deal IMO since its fairly quick and fortunately doesn't cause the other analyzers to rerun too. The problem is that I don't know how to automatically invalidate the previous waveforms.
I assume you don't mean the different renderers but the cached analyzer data? If so, then I agree. |
No, I mean that if we decide to "un-scale" the filtered.all data in the waveform renderers, we need to change all of them. Unless we decide we can remove all of them :-) |
yup, eventually I'd be nice to remove them. IMO since we declared them as legacy anyways, I'd propose to ignore them (feature-wise) and only work on the non-legacy ones. Fyi, this discussion also reminds me of #11833. Maybe a more general waveform-data preprocessing facility is in order anyways... |
is this resolved by #12466? |
It hasn't made its way to |
Yes. Fixed. |
Sorry for being so nitpicky here... the scaling is fixed, but the new waveforms still lack a fair bit of detail. Compare GLSL: to GLSL (legacy): The peaks feel a fair bit more accentuated. I remember seeing something about scaling frequency bands differently, perhaps that is somehow related? (Though this should probably be tracked in a separate issue, since the overall visual gain is fixed) |
#8406 and #8367 are related, no? Also, why does changing ReplayGain setting levels not change waveform heights? Thirdly; I think I mentioned in Zulip maybe previously, but it's hard to tell when a track is clipping past it's own 0dB, or whether is or will clip past the channels 0dB, aka redline, given the current gain(s), or if the waveform calculation is so broken as to chop the top off (as has been discovered and fixed, to a hopefully large degree, though the comment directly prior shows there is still some kind of discrepancy). Imho, because there is no visual 0dB delimitation (for track, or channel, or main gain, or I guess ReplayGain also); it just disappears into black. Displaying in advance when the waveform at the current gain(s) would redline the channel could be done with, say, a red line at top and bottom at those points, but that certainly deserves a separate issue - I'm just musing here because there appears a conflux of multiple things that have been making it really confusing to understand what is literally happening to the signal, and so much ambiguity added together is, to me, fairly scary. |
Bug Description
Screen.Recording.2023-12-18.at.21.32.45.mov
Is this intended?
cc @m0dB
Version
2.5-alpha-164-g6acfe63a39 (HEAD)
OS
macOS 14.2
The text was updated successfully, but these errors were encountered: