I'm confused about the Midi Tuning Standard. The spec gives some examples of frequency data:
0xxxxxxx 0abcdefg 0hijklmn
xxxxxxx = semitone
abcdefghijklmn = fraction of semitone, in .0061-cent unitsExamples of frequency data:
00 00 00 = 8.1758 Hz (C – normal tuning of MIDI key no. 0)
00 00 01 = 8.2104 Hz
[...]
However,
to the best of my knowledge, 8.2104 Hz differs 7 cents from 8.1758 Hz. How do we arrive at 00 00 01 then?
I would expect a value of 7/0.0061 = 1147 which I think then would result in 00 08 7A instead?
Another way to reach the same confusion is to try the reverse calculation:
00 00 00 -> 8.1758 because 440*(2^((0 - 69)/12)) = 8.1758 (yay!)
00 00 01 should then be 440*(2^(0.0061 - 69)/12)) = 8.1787 (eh? standard example says "8.2104" ??)
Can anyone please clear this up?
Maybe I completely misunderstand the system?
Thanks!
I just read over the spec, and I also feel that example is wrong.
Also note, your reverse calculation should be
440*(2^(( 0.0061/100 - 69)/12)) = 8.17583
because in the calculation 440*(2^((x-69)/12)), the x value is in semitones, not cents.
Yes, that table entry is wrong. Also, the table entries are rounded wrong — I can't reproduce what they did to get those numbers 😀 , but the correct numbers to four places are:
[code type=markup]
Input Given Actual
000000 8.1758 8.1758
000001 8.2104 8.1758
010000 8.6620 8.6620
0c0000 16.3516 16.3516
3c0000 261.6256 261.6256
3d0000 277.1827 277.1826
447f7f 439.9984 439.9984
450000 440.0000 440.0000
780000 8372.0190 8372.0181
780001 8372.0630 8372.0476
7f0000 12543.8800 12543.8540
7f0001 12543.9200 12543.8982
7f7f7e 13289.7300 13289.6566
[/code]
These errors have been there since the beginning yet no one bothered to correct them in the spec manuals.