Note that speed is not being judged, I found it significantly easier to get 32/32 after realizing this might be the case.
For some reason I find +1/64th harder to distinguish than -1/64th, is it possible to have asymmetrical perception differences this subtle? or is it more likely software / hardware limitations?
I was the opposite! I couldn't tell the -1/64 from 0 at all, but I was able to identify the +1/64 cases. (My strategy quickly became "if I can't hear the difference, it went down")
I actually had the same experience, with -1/64 being much easier to hear. I don't have a good hypothesis as to why that would be either. I'm using pretty lousy headphones, fwiw.
I feel like this is likely due to some kind of quantization. I'm doing my best to figure it out with my armchair sound theory but i'm very far from an expert in that or PCM... correction invited:
A semitone at 440 = +-26.16 Hz
1/64 = 26.16/32 = +-0.8175 Hz
So i guess the question is: Are 0.8175 Hz differences close to limitations of PCM at a normal 48 KHz sample rate for reasonable tone lengths?
So for 440 Hz there are either 109 or 110 points per sinusoid, averaging 109.09. For 440.8175 Hz there are either 108 or 109 points per sinusoid averaging 108.88
Although the true sinusoid doesn't start and end at exactly on those points, this is how many points "land" on each period. There are also subtle differences in the amplitude of each point on different periods with the same number of points - i'm not sure how to rate that in terms of perception but my suspicion is that we are affected more by the average period, by using the highest/lowest points (half a period).
If true, the duration becomes very important, 108 periods fit into 1 second, which gives us a max precision of 1/108 = about 0.93% i.e +-1.013 Hz error... which is larger than the difference we are trying to detect.
I'm not confident in these calculations, but It does at least seem very close to the precision limit of 48KHz... So I'm guessing the starting position of the modulation has quite an influence on which way that error swings, and this could account for the differences we are hearing between +1/64 and -1/64
In passing your math looks correct but I don't think that's the right way to assess the resolution of the system here.
The sample rate has a fixed spacing. Each sample will have some amplitude. Your ear reconstructs the sinusoid from these discreet samples.
In general, as long as we're well below the Nyquist frequency (https://en.wikipedia.org/wiki/Nyquist_frequency) the question (AFAIK) is how much jitter exists in the horizontal (time) and vertical (amplitude) directions. The tone will need to go on long enough for any noise in the system to average out relative to the size of the difference that you want to detect. This is addressed (IIUC) by the Fourier uncertainty principle.
On the hardware side of things, I'd naively expect modern systems to have very low jitter in both dimensions. However, I fully expect the human side of things is significantly more complicated. An article from 2013 describes research purporting to show that humans exceed the Fourier uncertainty principle (apparently through some sort of nonlinear biological wizardry) by more than ten fold. (https://phys.org/news/2013-02-human-fourier-uncertainty-prin...)
As you expected, you probably shouldn't read to much into these calculations. ;-)
The Shannon-Nyquist sampling theorem guarantees that we (as in the DAC in your computer) can perfectly reconstruct the analogue signal for any discretised signal that is bandlimited to frequencies below Nyquist, i.e., 24 kHz for a 48 kHz sample rate. No matter how crooked the sample points may look to you. And 440 Hz is way below the 24 kHz limit.
Sure, this doesn't take quantisation into account, but 16 bit is sufficient to encode the difference in amplitude at the individual sample points between 440 and 440.8175 Hz with plenty of headroom (about 210 digital steps at 109 samples). Indeed, the smallest frequency difference that would have a zero difference after 109 samples due to quantisation is about 0.001 Hz (modulo mistakes in my hasty calculations). And this doesn't take dithering into account. Dithering essentially gives you an infinite dynamic range (depending on your definition of dynamic range) at the exchange of a higher noise floor. Of course your signal is likely also longer than 109 samples.
See this excellent video [1] by Xiph.Org's Chris Montgomery
for a whirlwind overview of digital signal processing.
For some reason I find +1/64th harder to distinguish than -1/64th, is it possible to have asymmetrical perception differences this subtle? or is it more likely software / hardware limitations?