Thanks for you comments.I'm not sure what you mean about volume being "the weakest point". First, let me explain the point of the exercise:
In particular "how many bits can you hear?" is asking how many bits of the exercise, not of digital audio in general. I'm trying to make it easily identifiable, and even generously loud for a given bit level. By contrast, hearing tests I've experienced use soft edge sine tones and headphones emitting a calibrated level. That tends to leave you questioning whether you're hearing a tone or not when it's on the edge. With a harmonic-rich sweep, if you're not sure if you hear it, you probably don't.
The point of having the announcing voice (at the default output level) is so that a person knows how loud their system is. Not just to keep people from "cheating"—this is a personal test and I'm only asking "how many" rhetorically—I'm not looking for an answer from anyone. Also, if people are just going to keep turning up the volume as the sweeps get quieter, there is no point to the test at all. Lastly, I'm concerned that people will do this, and forget about it or have a system alert go off and blow out their system or their ears.
The point of this is only personal introspection. A lot of people say they can hear all the way down to 24-bits, other call for true 32-bit DACs apparently because they don't think 24 is nearly enough, usually without having any idea what -100 dBFS sounds like on their system, at their normal listening levels.
So, I think my self-test is what it was designed to be. But I still like to hear and talk about what other people think are also interesting tests, so I welcome your thoughts. I just wasn't sure if you were saying you'd like to hear the first sweep ("5-bit") as a reference ahead of each subsequent sweep, or something else.![]()
"because by turning up the volume one can hear less or more bits"—Yes, but that is the nature of dynamic range. At lowest volume, we're constrained by factors such as the minimum energy our ears can detect, the noise floor of the electronics, and the ambient noise floor of the room (I say this as it garbage collection day and a truck is outside). At the top end, we're constrained by how loud we wish to listen (discomfort, and concern for ear damage), assuming our amp and speakers can attain that level. So, basically to hear the most "bits", it's a matter of making it as loud as we care to, and minimizing room and electronics noise.Thanks for you comments.
What I meant is that thing of the reference volume you also mention, because by turning up the volume one can hear less or more bits. So it's weak in the sense that I decide how many bits I can hear.
The idea of putting the first sweep, the unattenuated one, before the others was to somehow address this problem, because the voice is a different sound and is not "calibrated" against the sweeps, so as a reference is less precise, and only has the function of dissuading to turn up the volume.
Extending my suggestion, perhaps I would start the video by saying that the first sweep must be set in a volume that allows to hear perfectly all the spectrum, but not higher. Or I would introduce some other noise, and tell the users to turn up the volume until they can hear it, to set a more or less equal loudness for everybody according to their hearing capabilities.
Of course this is just a happy thought from an inexperienced guy.
My take out was that I can hear at least up to 18 bit, so that CD dynamic range isn't enough. However, I'm unsure about this conclusion, and that motivated my comment.
Anyway, I've definitely learned something with your test and now with this discussion, so thanks for the effort.
Um... AFAIU such square wave is not bandlimited and therefore has aliases. Only it just so happens that those aliases align with the in-band harmonics, so maybe they are not so obvious.The steps are on exact sample-periods, generated algorithmically (not recorded through a converter), so they are bandlimited. And on exact bit levels
[...]
consider that if you record a square wave, through an ADC, in which the period is an exact multiple of the sampling period, and with phase such that the transitions land halfway between samples, you end up with the same thing.
0.5 * 4/pi / 5 = 0.12732 = -17.90 dBFS
0.5 * 4/pi / 7 = 0.09095 = -20.82 dBFS
0.5 * 4/pi / 9 = 0.07074 = -23.01 dBFS
First of all, I want to be clear this is completely immaterial to the purpose of the waveform I generated. I generated this waveform to be easy to hear. A sine wave would have sufficed, and it's the one typically used, but it has a serious drawback: its signal to noise changes with its magnitude. That is, sample a sine wave sweep for near full scale. It has a signal to noise ratio approaching 144.5 dB. But if we take that and scale it to plus/minus the least significant bit, it's not a sine wave anymore, it has more frequencies than expected. We'd have to dither it to even sound like a sine wave, then it would be a sine wave buried in noise (essentially spreading those extra frequencies randomly). The waveform I created does not rely on intermediate levels (due to the fact it's "square" and synchronous), so at plus/minus 1 lsb it's integrity is still exactly the same as at a thousand times that amplitude—it can be scale down, then back up with no loss. Again, not true of sine—if you scale the original down to 1 lsb and back up, you'll have a horrific waveform that 24-bit dither will not save you from.Um... AFAIU such square wave is not bandlimited and therefore has aliases. Only it just so happens that those aliases align with the in-band harmonics, so maybe they are not so obvious.
PS—OK, with fresh eyes today, I see what you were finding fault with.