aboutsummaryrefslogtreecommitdiff
path: root/tests/.xttest_scalar.cpp.swp
blob: f730587ce94af7bcc367f9f2ac92c0c134ee7b0d (plain)
ofshex dumpascii
0000 62 30 56 49 4d 20 37 2e 33 00 00 00 00 10 00 00 8a 41 62 54 f6 8e e9 09 9d 8e 00 00 6a 61 6d 69 b0VIM.7.3........AbT........jami
0020 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e...............................
0040 00 00 00 00 61 6c 75 6d 69 6e 69 75 6d 2d 32 2e 6c 6f 63 61 6c 00 00 00 00 00 00 00 00 00 00 00 ....aluminium-2.local...........
0060 00 00 00 00 00 00 00 00 00 00 00 00 7e 6a 61 6d 69 65 2f 44 6f 63 75 6d 65 6e 74 73 2f 4c 69 62 ............~jamie/Documents/Lib
0080 58 74 72 61 63 74 2f 74 65 73 74 73 2f 78 74 74 65 73 74 5f 73 63 61 6c 61 72 2e 63 70 70 00 00 Xtract/tests/xttest_scalar.cpp..
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 75 74 66 2d 38 0d 00 33 32 31 30 00 00 00 00 23 22 21 20 13 12 55 00 .........utf-8..3210....#"!...U.
0400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1000 74 70 0c 00 7f 00 00 00 02 00 00 00 00 00 00 00 69 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 tp..............i...............
1020 01 00 00 00 00 00 00 00 0d 00 00 00 00 00 00 00 62 00 00 00 00 00 00 00 6a 00 00 00 00 00 00 00 ................b.......j.......
1040 01 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 00 61 00 00 00 00 00 00 00 cc 00 00 00 00 00 00 00 ................a...............
1060 01 00 00 00 00 00 00 00 0b 00 00 00 00 00 00 00 61 00 00 00 00 00 00 00 2d 01 00 00 00 00 00 00 ................a.......-.......
1080 01 00 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 60 00 00 00 00 00 00 00 8e 01 00 00 00 00 00 00 ................`...............
10a0 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 66 00 00 00 00 00 00 00 ee 01 00 00 00 00 00 00 ................f...............
10c0 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 65 00 00 00 00 00 00 00 54 02 00 00 00 00 00 00 ................e.......T.......
10e0 01 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 5d 00 00 00 00 00 00 00 b9 02 00 00 00 00 00 00 ................]...............
1100 01 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 60 00 00 00 00 00 00 00 16 03 00 00 00 00 00 00 ................`...............
1120 01 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 77 03 00 00 00 00 00 00 ........................w.......
1140 01 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00 60 00 00 00 00 00 00 00 79 03 00 00 00 00 00 00 ................`.......y.......
1160 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 4d 00 00 00 00 00 00 00 d9 03 00 00 00 00 00 00 ................M...............
1180 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2000 61 64 00 00 0c 00 00 00 cc 01 00 00 00 10 00 00 69 00 00 00 00 00 00 00 ff 0f 00 00 e4 0f 00 00 ad..............i...............
2020 e3 0f 00 00 c1 0f 00 00 a3 0f 00 00 a2 0f 00 00 8d 0f 00 00 8c 0f 00 00 8b 0f 00 00 45 0f 00 00 ............................E...
2040 43 0f 00 00 28 0f 00 00 0f 0f 00 00 0e 0f 00 00 d0 0e 00 00 ca 0e 00 00 a8 0e 00 00 85 0e 00 00 C...(...........................
2060 67 0e 00 00 47 0e 00 00 26 0e 00 00 25 0e 00 00 bc 0d 00 00 b2 0d 00 00 87 0d 00 00 86 0d 00 00 g...G...&...%...................
2080 35 0d 00 00 ed 0c 00 00 ec 0c 00 00 80 0c 00 00 72 0c 00 00 40 0c 00 00 18 0c 00 00 0a 0c 00 00 5...............r...@...........
20a0 00 0c 00 00 ff 0b 00 00 96 0b 00 00 8c 0b 00 00 61 0b 00 00 60 0b 00 00 0f 0b 00 00 c7 0a 00 00 ................a...`...........
20c0 c6 0a 00 00 5a 0a 00 00 4c 0a 00 00 1a 0a 00 00 f2 09 00 00 e4 09 00 00 da 09 00 00 d9 09 00 00 ....Z...L.......................
20e0 d0 09 00 00 68 09 00 00 5e 09 00 00 34 09 00 00 33 09 00 00 e2 08 00 00 a3 08 00 00 a2 08 00 00 ....h...^...4...3...............
2100 57 08 00 00 49 08 00 00 1b 08 00 00 e8 07 00 00 c5 07 00 00 a0 07 00 00 72 07 00 00 64 07 00 00 W...I...................r...d...
2120 63 07 00 00 62 07 00 00 06 07 00 00 f8 06 00 00 cf 06 00 00 ce 06 00 00 79 06 00 00 36 06 00 00 c...b...................y...6...
2140 35 06 00 00 e6 05 00 00 d4 05 00 00 a2 05 00 00 6b 05 00 00 44 05 00 00 1b 05 00 00 e9 04 00 00 5...............k...D...........
2160 d7 04 00 00 c9 04 00 00 bf 04 00 00 b9 04 00 00 b8 04 00 00 79 04 00 00 73 04 00 00 4b 04 00 00 ....................y...s...K...
2180 22 04 00 00 fa 03 00 00 d3 03 00 00 b2 03 00 00 b1 03 00 00 48 03 00 00 3e 03 00 00 13 03 00 00 "...................H...>.......
21a0 12 03 00 00 c1 02 00 00 79 02 00 00 78 02 00 00 0c 02 00 00 fe 01 00 00 cc 01 00 00 cb 01 00 00 ........y...x...................
21c0 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 ............................REQU
21e0 49 52 45 28 72 76 20 3d 3d 20 58 54 52 41 43 54 5f 4e 4f 5f 52 45 53 55 4c 54 29 3b 20 00 20 20 IRE(rv.==.XTRACT_NO_RESULT);....
2200 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 66 ..........{.............THEN(."f
2220 72 65 71 75 65 6e 63 79 20 64 65 74 65 63 74 69 6f 6e 20 66 61 69 6c 73 20 63 6f 72 72 65 63 74 requency.detection.fails.correct
2240 6c 79 20 28 58 54 52 41 43 54 5f 4e 4f 5f 52 45 53 55 4c 54 20 69 73 20 72 65 74 75 72 6e 65 64 ly.(XTRACT_NO_RESULT.is.returned
2260 2c 20 72 65 73 75 6c 74 20 73 65 74 20 74 6f 20 30 2e 30 29 22 20 29 00 00 20 20 20 20 20 20 20 ,.result.set.to.0.0)".).........
2280 20 20 20 20 20 69 6e 74 20 72 76 20 3d 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 .....int.rv.=.xtract_f0(table,.b
22a0 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b locksize,.&samplerate,.&result);
22c0 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 .............xttest_gen_sine(tab
22e0 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 le,.blocksize,.samplerate,.frequ
2300 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 ency,.amplitude);..............d
2320 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 38 36 2e 31 33 32 38 31 32 35 3b 00 20 20 ouble.frequency.=.86.1328125;...
2340 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 ......{.........WHEN(."the.frequ
2360 65 6e 63 79 20 69 73 20 38 36 2e 31 33 32 38 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 ency.is.86.1328125.Hz".).//.peri
2380 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 35 31 32 20 73 61 6d 70 6c 65 73 3a 20 32 20 63 79 63 od.of.exactly.512.samples:.2.cyc
23a0 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 les.in.the.block..........double
23c0 20 74 61 62 6c 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c .table[blocksize];.........doubl
23e0 65 20 61 6d 70 6c 69 74 75 64 65 20 20 20 20 20 20 20 20 3d 20 31 2e 30 3b 00 20 20 20 20 20 20 e.amplitude........=.1.0;.......
2400 20 20 64 6f 75 62 6c 65 20 72 65 73 75 6c 74 20 20 20 20 20 20 20 20 20 20 20 3d 20 2d 31 2e 30 ..double.result...........=.-1.0
2420 3b 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 73 61 6d 70 6c 65 72 61 74 65 20 20 20 20 20 ;.........double.samplerate.....
2440 20 20 3d 20 34 34 31 30 30 3b 00 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 62 6c 6f 63 ..=.44100;.........uint32_t.bloc
2460 6b 73 69 7a 65 20 20 20 20 20 20 3d 20 31 30 32 34 3b 00 20 20 20 20 7b 00 20 20 20 20 47 49 56 ksize......=.1024;.....{.....GIV
2480 45 4e 28 20 22 61 20 31 30 32 34 20 73 61 6d 70 6c 65 20 62 6c 6f 63 6b 20 77 69 74 68 20 61 20 EN(."a.1024.sample.block.with.a.
24a0 73 61 6d 70 6c 65 20 72 61 74 65 20 6f 66 20 34 34 31 30 30 22 20 29 00 00 20 20 20 20 7d 00 20 sample.rate.of.44100".)......}..
24c0 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 .......}.............}..........
24e0 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 .......}.....................REQ
2500 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 UIRE(actual.==.expected);.......
2520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 ...............CAPTURE(.expected
2540 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 .);.....................CAPTURE(
2560 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 .actual.);.....................e
2580 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 xpected.=.xttest_ftom(frequency)
25a0 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 ;.....................actual.=.x
25c0 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 ttest_ftom(result);.............
25e0 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 ....{.................THEN(."the
2600 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 .detected.F0.is.accurate.to.the.
2620 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 nearest.MIDI.cent".)............
2640 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 ......xtract_f0(table,.blocksize
2660 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 ,.&samplerate,.&result);........
2680 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 .........xttest_gen_sine(table,.
26a0 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 blocksize,.samplerate,.frequency
26c0 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 ,.amplitude);..................d
26e0 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 30 31 3b 00 20 20 20 20 20 20 20 20 ouble.amplitude.=.0.01;.........
2700 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 61 6d 70 ....{.............WHEN(."the.amp
2720 6c 69 74 75 64 65 20 69 73 20 30 2e 30 31 22 20 29 20 2f 2f 20 4f 6e 6c 79 20 74 65 73 74 20 61 litude.is.0.01".).//.Only.test.a
2740 20 64 69 66 66 65 72 65 6e 74 20 61 6d 70 6c 69 74 75 64 65 20 66 6f 72 20 6f 6e 65 20 63 61 73 .different.amplitude.for.one.cas
2760 65 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e...............}...............
2780 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 ..REQUIRE(actual.==.expected);..
27a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 ................CAPTURE(.expecte
27c0 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 d.);.................CAPTURE(.ac
27e0 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 tual.);.................expected
2800 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 .=.xttest_ftom(frequency);......
2820 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 ...........actual.=.xttest_ftom(
2840 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 result);.............{..........
2860 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 ...THEN(."the.detected.F0.is.acc
2880 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 urate.to.the.nearest.MIDI.cent".
28a0 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 )..............xtract_f0(table,.
28c0 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 blocksize,.&samplerate,.&result)
28e0 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 ;.............xttest_gen_sine(ta
2900 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 ble,.blocksize,.samplerate,.freq
2920 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 uency,.amplitude);..............
2940 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 33 34 34 2e 35 33 31 32 35 3b 00 20 20 double.frequency.=.344.53125;...
2960 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 ......{.........WHEN(."the.frequ
2980 65 6e 63 79 20 69 73 20 33 34 34 2e 35 33 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f ency.is.344.53125.Hz".).//.perio
29a0 64 20 6f 66 20 65 78 61 63 74 6c 79 20 31 32 38 20 73 61 6d 70 6c 65 73 3a 20 34 20 63 79 63 6c d.of.exactly.128.samples:.4.cycl
29c0 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 20 20 20 20 20 20 20 20 00 00 20 20 20 20 20 20 es.in.the.block.................
29e0 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..}.............}...............
2a00 20 20 52 45 51 55 49 52 45 28 72 65 73 75 6c 74 20 3d 3d 20 30 2e 30 29 3b 00 20 20 20 20 20 20 ..REQUIRE(result.==.0.0);.......
2a20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 72 76 20 3d 3d 20 58 54 52 41 43 54 5f 4e ..........REQUIRE(rv.==.XTRACT_N
2a40 4f 5f 52 45 53 55 4c 54 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 O_RESULT);..............{.......
2a60 20 20 20 20 20 20 54 48 45 4e 28 20 22 66 72 65 71 75 65 6e 63 79 20 64 65 74 65 63 74 69 6f 6e ......THEN(."frequency.detection
2a80 20 66 61 69 6c 73 20 63 6f 72 72 65 63 74 6c 79 20 28 58 54 52 41 43 54 5f 4e 4f 5f 52 45 53 55 .fails.correctly.(XTRACT_NO_RESU
2aa0 4c 54 20 69 73 20 72 65 74 75 72 6e 65 64 2c 20 72 65 73 75 6c 74 20 73 65 74 20 74 6f 20 30 2e LT.is.returned,.result.set.to.0.
2ac0 30 29 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 76 20 3d 20 78 74 72 61 0)".)..............int.rv.=.xtra
2ae0 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 ct_f0(table,.blocksize,.&sampler
2b00 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 ate,.&result);.............xttes
2b20 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d t_gen_sine(table,.blocksize,.sam
2b40 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 plerate,.frequency,.amplitude);.
2b60 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 .............double.frequency.=.
2b80 31 37 32 2e 32 36 35 36 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 172.265625;.........{.........WH
2ba0 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 31 37 32 2e 32 36 35 36 32 35 EN(."the.frequency.is.172.265625
2bc0 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 32 35 36 20 .Hz".).//.period.of.exactly.256.
2be0 73 61 6d 70 6c 65 73 3a 20 32 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 samples:.2.cycles.in.the.block..
2c00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 ........}.............}.........
2c20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 72 65 73 75 6c 74 20 3d 3d 20 30 2e 30 29 3b 00 ........REQUIRE(result.==.0.0);.
2c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 72 76 20 3d 3d 20 58 54 ................REQUIRE(rv.==.XT
2c60 52 41 43 54 5f 4e 4f 5f 52 45 53 55 4c 54 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 RACT_NO_RESULT);..............{.
2c80 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 66 72 65 71 75 65 6e 63 79 20 64 65 74 ............THEN(."frequency.det
2ca0 65 63 74 69 6f 6e 20 66 61 69 6c 73 20 63 6f 72 72 65 63 74 6c 79 20 28 58 54 52 41 43 54 5f 4e ection.fails.correctly.(XTRACT_N
2cc0 4f 5f 52 45 53 55 4c 54 20 69 73 20 72 65 74 75 72 6e 65 64 2c 20 72 65 73 75 6c 74 20 73 65 74 O_RESULT.is.returned,.result.set
2ce0 20 74 6f 20 30 2e 30 29 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 76 20 .to.0.0)".)..............int.rv.
2d00 3d 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 =.xtract_f0(table,.blocksize,.&s
2d20 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 amplerate,.&result);............
2d40 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a .xttest_gen_sine(table,.blocksiz
2d60 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 e,.samplerate,.frequency,.amplit
2d80 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 ude);..............double.freque
2da0 6e 63 79 20 3d 20 38 36 2e 31 33 32 38 31 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 ncy.=.86.1328125;.........{.....
2dc0 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 38 36 2e 31 ....WHEN(."the.frequency.is.86.1
2de0 33 32 38 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 328125.Hz".).//.period.of.exactl
2e00 79 20 35 31 32 20 73 61 6d 70 6c 65 73 3a 20 31 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 y.512.samples:.1.cycles.in.the.b
2e20 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 74 61 62 6c 65 5b 62 6c 6f 63 6b lock..........double.table[block
2e40 73 69 7a 65 5d 3b 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 size];.........double.amplitude.
2e60 3d 20 31 2e 30 3b 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 72 65 73 75 6c 74 20 3d 20 2d =.1.0;.........double.result.=.-
2e80 31 2e 30 3b 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 73 61 6d 70 6c 65 72 61 74 65 20 3d 1.0;.........double.samplerate.=
2ea0 20 34 34 31 30 30 3b 00 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 62 6c 6f 63 6b 73 69 .44100;.........uint32_t.blocksi
2ec0 7a 65 20 3d 20 35 31 32 3b 00 20 20 20 20 7b 00 20 20 20 20 47 49 56 45 4e 28 20 22 61 20 35 31 ze.=.512;.....{.....GIVEN(."a.51
2ee0 32 20 73 61 6d 70 6c 65 20 62 6c 6f 63 6b 20 77 69 74 68 20 61 20 73 61 6d 70 6c 65 20 72 61 74 2.sample.block.with.a.sample.rat
2f00 65 20 6f 66 20 34 34 31 30 30 22 20 29 00 00 20 20 20 20 75 69 6e 74 31 36 5f 74 20 61 63 74 75 e.of.44100".)......uint16_t.actu
2f20 61 6c 20 3d 20 30 3b 00 20 20 20 20 75 69 6e 74 31 36 5f 74 20 65 78 70 65 63 74 65 64 20 3d 20 al.=.0;.....uint16_t.expected.=.
2f40 30 3b 00 7b 00 53 43 45 4e 41 52 49 4f 28 20 22 46 30 20 69 73 20 63 6f 72 72 65 63 74 6c 79 20 0;.{.SCENARIO(."F0.is.correctly.
2f60 64 65 74 65 63 74 65 64 20 66 6f 72 20 61 20 73 69 6e 65 20 77 61 76 65 22 2c 20 22 5b 78 74 72 detected.for.a.sine.wave",."[xtr
2f80 61 63 74 5f 66 30 5d 22 20 29 00 00 00 23 69 6e 63 6c 75 64 65 20 22 63 61 74 63 68 2e 68 70 70 act_f0]".)...#include."catch.hpp
2fa0 22 00 00 23 69 6e 63 6c 75 64 65 20 22 78 74 72 61 63 74 2f 6c 69 62 78 74 72 61 63 74 2e 68 22 "..#include."xtract/libxtract.h"
2fc0 00 23 69 6e 63 6c 75 64 65 20 22 78 74 72 61 63 74 2f 78 74 72 61 63 74 5f 73 63 61 6c 61 72 2e .#include."xtract/xtract_scalar.
2fe0 68 22 00 00 23 69 6e 63 6c 75 64 65 20 22 78 74 74 65 73 74 5f 75 74 69 6c 2e 68 70 70 22 00 00 h"..#include."xttest_util.hpp"..
3000 61 64 00 00 cf 03 00 00 1f 05 00 00 00 10 00 00 4d 00 00 00 00 00 00 00 df 0f 00 00 de 0f 00 00 ad..............M...............
3020 74 0f 00 00 6a 0f 00 00 3e 0f 00 00 1a 0f 00 00 19 0f 00 00 c4 0e 00 00 7c 0e 00 00 7b 0e 00 00 t...j...>...............|...{...
3040 0f 0e 00 00 01 0e 00 00 cf 0d 00 00 a7 0d 00 00 99 0d 00 00 8f 0d 00 00 8e 0d 00 00 25 0d 00 00 ............................%...
3060 1b 0d 00 00 f0 0c 00 00 cc 0c 00 00 cb 0c 00 00 76 0c 00 00 2e 0c 00 00 2d 0c 00 00 e2 0b 00 00 ................v.......-.......
3080 d4 0b 00 00 a6 0b 00 00 73 0b 00 00 50 0b 00 00 2b 0b 00 00 fd 0a 00 00 ef 0a 00 00 e5 0a 00 00 ........s...P...+...............
30a0 e4 0a 00 00 7b 0a 00 00 71 0a 00 00 46 0a 00 00 22 0a 00 00 21 0a 00 00 cc 09 00 00 8d 09 00 00 ....{...q...F..."...!...........
30c0 8c 09 00 00 41 09 00 00 33 09 00 00 05 09 00 00 d2 08 00 00 af 08 00 00 8a 08 00 00 5c 08 00 00 ....A...3...................\...
30e0 4e 08 00 00 44 08 00 00 43 08 00 00 da 07 00 00 d0 07 00 00 a6 07 00 00 a5 07 00 00 7a 07 00 00 N...D...C...................z...
3100 6c 07 00 00 44 07 00 00 43 07 00 00 ea 06 00 00 a7 06 00 00 a6 06 00 00 57 06 00 00 45 06 00 00 l...D...C...............W...E...
3120 13 06 00 00 dc 05 00 00 b5 05 00 00 8c 05 00 00 5a 05 00 00 48 05 00 00 32 05 00 00 28 05 00 00 ................Z...H...2...(...
3140 22 05 00 00 20 05 00 00 1f 05 00 00 2e 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "...............................
3160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3520 7d 00 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 }.....}.........}.............}.
3540 20 20 20 20 20 20 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 ........................}.......
3560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 ..............REQUIRE(actual.==.
3580 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 expected);......................
35a0 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 CAPTURE(.expected.);............
35c0 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 .........CAPTURE(.actual.);.....
35e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 ................expected.=.xttes
3600 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 t_ftom(frequency);..............
3620 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 .......actual.=.xttest_ftom(resu
3640 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 lt);.................{..........
3660 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 .......THEN(."the.detected.F0.is
3680 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 .accurate.to.the.nearest.MIDI.ce
36a0 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 nt".)..................xtract_f0
36c0 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 (table,.blocksize,.&samplerate,.
36e0 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 &result);.................xttest
3700 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 _gen_sawtooth(table,.blocksize,.
3720 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 samplerate,.frequency,.amplitude
3740 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 );..................double.ampli
3760 74 75 64 65 20 3d 20 31 2e 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 tude.=.1.0;.............{.......
3780 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 61 6d 70 6c 69 74 75 64 65 20 69 73 20 31 2e ......WHEN(."the.amplitude.is.1.
37a0 30 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 0".)..............double.frequen
37c0 63 79 20 3d 20 33 34 34 2e 35 33 31 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 cy.=.344.53125;.........{.......
37e0 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 33 34 34 2e 35 33 ..WHEN(."the.frequency.is.344.53
3800 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 31 125.Hz".).//.period.of.exactly.1
3820 32 38 20 73 61 6d 70 6c 65 73 3a 20 31 36 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 28.samples:.16.cycles.in.the.blo
3840 63 6b 00 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 ck..........}.............}.....
3860 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 ............REQUIRE(actual.==.ex
3880 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 pected);..................CAPTUR
38a0 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 E(.expected.);.................C
38c0 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 APTURE(.actual.);...............
38e0 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e ..expected.=.xttest_ftom(frequen
3900 63 79 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 cy);.................actual.=.xt
3920 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b test_ftom(result);.............{
3940 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 .............THEN(."the.detected
3960 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d .F0.is.accurate.to.the.nearest.M
3980 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f IDI.cent".)..............xtract_
39a0 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 f0(table,.blocksize,.&samplerate
39c0 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 ,.&result);.............xttest_g
39e0 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 en_sawtooth(table,.blocksize,.sa
3a00 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b mplerate,.frequency,.amplitude);
3a20 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d ..............double.amplitude.=
3a40 20 31 2e 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e .1.0;.............double.frequen
3a60 63 79 20 3d 20 31 37 32 2e 32 36 35 36 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 cy.=.172.265625;.........{......
3a80 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 31 37 32 2e 32 ...WHEN(."the.frequency.is.172.2
3aa0 36 35 36 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 65625.Hz".).//.period.of.exactly
3ac0 20 32 35 36 20 73 61 6d 70 6c 65 73 3a 20 38 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c .256.samples:.8.cycles.in.the.bl
3ae0 6f 63 6b 00 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 ock..........}.............}....
3b00 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 .............REQUIRE(actual.==.e
3b20 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 xpected);..................CAPTU
3b40 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 RE(.expected.);.................
3b60 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 CAPTURE(.actual.);..............
3b80 20 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 ...expected.=.xttest_ftom(freque
3ba0 6e 63 79 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 ncy);.................actual.=.x
3bc0 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 ttest_ftom(result);.............
3be0 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 {.............THEN(."the.detecte
3c00 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 d.F0.is.accurate.to.the.nearest.
3c20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 76 MIDI.cent".)..............int.rv
3c40 20 3d 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 .=.xtract_f0(table,.blocksize,.&
3c60 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 samplerate,.&result);...........
3c80 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f ..xttest_gen_sawtooth(table,.blo
3ca0 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 cksize,.samplerate,.frequency,.a
3cc0 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 mplitude);..............double.a
3ce0 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 mplitude.=.1.0;.............doub
3d00 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 38 36 2e 31 33 32 38 31 32 35 3b 00 20 20 20 20 20 le.frequency.=.86.1328125;......
3d20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 ...{.........WHEN(."the.frequenc
3d40 79 20 69 73 20 38 36 2e 31 33 32 38 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 y.is.86.1328125.Hz".).//.period.
3d60 6f 66 20 65 78 61 63 74 6c 79 20 35 31 32 20 73 61 6d 70 6c 65 73 3a 20 34 20 63 79 63 6c 65 73 of.exactly.512.samples:.4.cycles
3d80 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 .in.the.block..........}........
3da0 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 72 .....}.................REQUIRE(r
3dc0 65 73 75 6c 74 20 3d 3d 20 30 2e 30 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 esult.==.0.0);.................R
3de0 45 51 55 49 52 45 28 72 76 20 3d 3d 20 58 54 52 41 43 54 5f 4e 4f 5f 52 45 53 55 4c 54 29 3b 20 EQUIRE(rv.==.XTRACT_NO_RESULT);.
3e00 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 .............{.............THEN(
3e20 20 22 66 72 65 71 75 65 6e 63 79 20 64 65 74 65 63 74 69 6f 6e 20 66 61 69 6c 73 20 63 6f 72 72 ."frequency.detection.fails.corr
3e40 65 63 74 6c 79 20 28 58 54 52 41 43 54 5f 4e 4f 5f 52 45 53 55 4c 54 20 69 73 20 72 65 74 75 72 ectly.(XTRACT_NO_RESULT.is.retur
3e60 6e 65 64 2c 20 72 65 73 75 6c 74 20 73 65 74 20 74 6f 20 30 2e 30 29 22 20 29 00 00 20 20 20 20 ned,.result.set.to.0.0)".)......
3e80 20 20 20 20 20 20 20 20 69 6e 74 20 72 76 20 3d 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 ........int.rv.=.xtract_f0(table
3ea0 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c ,.blocksize,.&samplerate,.&resul
3ec0 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f t);.............xttest_gen_sawto
3ee0 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 oth(table,.blocksize,.samplerate
3f00 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 ,.frequency,.amplitude);........
3f20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 3b 00 20 20 ......double.amplitude.=.1.0;...
3f40 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 34 33 2e ..........double.frequency.=.43.
3f60 30 36 36 34 30 36 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 06640625;.........{.........WHEN
3f80 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 34 33 2e 30 36 36 34 30 36 32 35 20 (."the.frequency.is.43.06640625.
3fa0 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 32 35 36 20 73 Hz".).//.period.of.exactly.256.s
3fc0 61 6d 70 6c 65 73 3a 20 32 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 amples:.2.cycles.in.the.block...
3fe0 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 74 61 62 6c 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b 00 .......double.table[blocksize];.
4000 61 64 00 00 02 00 00 00 b6 01 00 00 00 10 00 00 66 00 00 00 00 00 00 00 97 0f 00 00 8d 0f 00 00 ad..............f...............
4020 62 0f 00 00 3e 0f 00 00 3d 0f 00 00 ec 0e 00 00 ad 0e 00 00 ac 0e 00 00 61 0e 00 00 53 0e 00 00 b...>...=...............a...S...
4040 25 0e 00 00 f2 0d 00 00 cf 0d 00 00 aa 0d 00 00 7c 0d 00 00 6e 0d 00 00 64 0d 00 00 63 0d 00 00 %...............|...n...d...c...
4060 fa 0c 00 00 f0 0c 00 00 c6 0c 00 00 c5 0c 00 00 9a 0c 00 00 8c 0c 00 00 64 0c 00 00 63 0c 00 00 ........................d...c...
4080 0e 0c 00 00 cb 0b 00 00 ca 0b 00 00 7b 0b 00 00 69 0b 00 00 37 0b 00 00 00 0b 00 00 d9 0a 00 00 ............{...i...7...........
40a0 b0 0a 00 00 7e 0a 00 00 6c 0a 00 00 56 0a 00 00 4c 0a 00 00 46 0a 00 00 44 0a 00 00 43 0a 00 00 ....~...l...V...L...F...D...C...
40c0 f9 09 00 00 f7 09 00 00 dc 09 00 00 c3 09 00 00 c2 09 00 00 84 09 00 00 7e 09 00 00 5c 09 00 00 ........................~...\...
40e0 39 09 00 00 1b 09 00 00 fb 08 00 00 da 08 00 00 d9 08 00 00 70 08 00 00 66 08 00 00 3b 08 00 00 9...................p...f...;...
4100 3a 08 00 00 e5 07 00 00 9d 07 00 00 9c 07 00 00 30 07 00 00 22 07 00 00 f0 06 00 00 c8 06 00 00 :...............0..."...........
4120 ba 06 00 00 b0 06 00 00 af 06 00 00 46 06 00 00 3c 06 00 00 11 06 00 00 10 06 00 00 bb 05 00 00 ............F...<...............
4140 73 05 00 00 72 05 00 00 06 05 00 00 f8 04 00 00 c6 04 00 00 9e 04 00 00 90 04 00 00 86 04 00 00 s...r...........................
4160 85 04 00 00 84 04 00 00 1c 04 00 00 12 04 00 00 e8 03 00 00 e7 03 00 00 92 03 00 00 53 03 00 00 ............................S...
4180 52 03 00 00 07 03 00 00 f9 02 00 00 cb 02 00 00 98 02 00 00 75 02 00 00 50 02 00 00 22 02 00 00 R...................u...P..."...
41a0 14 02 00 00 13 02 00 00 12 02 00 00 b6 01 00 00 c1 01 00 00 00 00 20 20 20 20 20 20 20 20 20 20 ................................
41c0 20 20 57 48 45 4e 28 20 22 74 68 65 20 61 6d 70 6c 69 74 75 64 65 20 69 73 20 30 2e 30 31 22 20 ..WHEN(."the.amplitude.is.0.01".
41e0 29 20 2f 2f 20 4f 6e 6c 79 20 74 65 73 74 20 61 20 64 69 66 66 65 72 65 6e 74 20 61 6d 70 6c 69 ).//.Only.test.a.different.ampli
4200 74 75 64 65 20 66 6f 72 20 6f 6e 65 20 63 61 73 65 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 tude.for.one.case...............
4220 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c }.................REQUIRE(actual
4240 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .==.expected);..................
4260 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 CAPTURE(.expected.);............
4280 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 .....CAPTURE(.actual.);.........
42a0 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 ........expected.=.xttest_ftom(f
42c0 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 requency);.................actua
42e0 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 l.=.xttest_ftom(result);........
4300 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 .....{.............THEN(."the.de
4320 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 tected.F0.is.accurate.to.the.nea
4340 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 78 rest.MIDI.cent".)..............x
4360 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 tract_f0(table,.blocksize,.&samp
4380 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 lerate,.&result);.............xt
43a0 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 test_gen_sawtooth(table,.blocksi
43c0 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 ze,.samplerate,.frequency,.ampli
43e0 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 tude);..............double.frequ
4400 65 6e 63 79 20 3d 20 33 34 34 2e 35 33 31 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 ency.=.344.53125;.........{.....
4420 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 33 34 34 2e ....WHEN(."the.frequency.is.344.
4440 35 33 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 53125.Hz".).//.period.of.exactly
4460 20 31 32 38 20 73 61 6d 70 6c 65 73 3a 20 34 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c .128.samples:.4.cycles.in.the.bl
4480 6f 63 6b 00 00 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 ock...........}.............}...
44a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 72 65 73 75 6c 74 20 3d 3d 20 ..............REQUIRE(result.==.
44c0 30 2e 30 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 72 76 0.0);.................REQUIRE(rv
44e0 20 3d 3d 20 58 54 52 41 43 54 5f 4e 4f 5f 52 45 53 55 4c 54 29 3b 20 00 20 20 20 20 20 20 20 20 .==.XTRACT_NO_RESULT);..........
4500 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 66 72 65 71 75 65 6e ....{.............THEN(."frequen
4520 63 79 20 64 65 74 65 63 74 69 6f 6e 20 66 61 69 6c 73 20 63 6f 72 72 65 63 74 6c 79 20 28 58 54 cy.detection.fails.correctly.(XT
4540 52 41 43 54 5f 4e 4f 5f 52 45 53 55 4c 54 20 69 73 20 72 65 74 75 72 6e 65 64 2c 20 72 65 73 75 RACT_NO_RESULT.is.returned,.resu
4560 6c 74 20 73 65 74 20 74 6f 20 30 2e 30 29 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 69 lt.set.to.0.0)".)..............i
4580 6e 74 20 72 76 20 3d 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 nt.rv.=.xtract_f0(table,.blocksi
45a0 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 ze,.&samplerate,.&result);......
45c0 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 .......xttest_gen_sawtooth(table
45e0 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e ,.blocksize,.samplerate,.frequen
4600 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 cy,.amplitude);..............dou
4620 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 31 37 32 2e 32 36 35 36 32 35 3b 00 20 20 20 20 ble.frequency.=.172.265625;.....
4640 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e ....{.........WHEN(."the.frequen
4660 63 79 20 69 73 20 31 37 32 2e 32 36 35 36 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 cy.is.172.265625.Hz".).//.period
4680 20 6f 66 20 65 78 61 63 74 6c 79 20 32 35 36 20 73 61 6d 70 6c 65 73 3a 20 32 20 63 79 63 6c 65 .of.exactly.256.samples:.2.cycle
46a0 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 s.in.the.block..........}.......
46c0 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 ......}.................REQUIRE(
46e0 72 65 73 75 6c 74 20 3d 3d 20 30 2e 30 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 result.==.0.0);.................
4700 52 45 51 55 49 52 45 28 72 76 20 3d 3d 20 58 54 52 41 43 54 5f 4e 4f 5f 52 45 53 55 4c 54 29 3b REQUIRE(rv.==.XTRACT_NO_RESULT);
4720 20 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e ..............{.............THEN
4740 28 20 22 66 72 65 71 75 65 6e 63 79 20 64 65 74 65 63 74 69 6f 6e 20 66 61 69 6c 73 20 63 6f 72 (."frequency.detection.fails.cor
4760 72 65 63 74 6c 79 20 28 58 54 52 41 43 54 5f 4e 4f 5f 52 45 53 55 4c 54 20 69 73 20 72 65 74 75 rectly.(XTRACT_NO_RESULT.is.retu
4780 72 6e 65 64 2c 20 72 65 73 75 6c 74 20 73 65 74 20 74 6f 20 30 2e 30 29 22 20 29 00 00 20 20 20 rned,.result.set.to.0.0)".).....
47a0 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 76 20 3d 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c .........int.rv.=.xtract_f0(tabl
47c0 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 e,.blocksize,.&samplerate,.&resu
47e0 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 lt);.............xttest_gen_sawt
4800 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 ooth(table,.blocksize,.samplerat
4820 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 e,.frequency,.amplitude);.......
4840 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 38 36 2e 31 33 32 .......double.frequency.=.86.132
4860 38 31 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 8125;.........{.........WHEN(."t
4880 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 38 36 2e 31 33 32 38 31 32 35 20 48 7a 22 20 29 he.frequency.is.86.1328125.Hz".)
48a0 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 35 31 32 20 73 61 6d 70 6c 65 .//.period.of.exactly.512.sample
48c0 73 3a 20 31 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 s:.1.cycles.in.the.block........
48e0 20 20 64 6f 75 62 6c 65 20 74 61 62 6c 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b 00 20 20 20 20 20 ..double.table[blocksize];......
4900 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 3b 00 20 20 20 20 20 ...double.amplitude.=.1.0;......
4920 20 20 20 64 6f 75 62 6c 65 20 72 65 73 75 6c 74 20 3d 20 2d 31 2e 30 3b 00 20 20 20 20 20 20 20 ...double.result.=.-1.0;........
4940 20 64 6f 75 62 6c 65 20 73 61 6d 70 6c 65 72 61 74 65 20 3d 20 34 34 31 30 30 3b 00 20 20 20 20 .double.samplerate.=.44100;.....
4960 20 20 20 20 75 69 6e 74 33 32 5f 74 20 62 6c 6f 63 6b 73 69 7a 65 20 3d 20 35 31 32 3b 00 20 20 ....uint32_t.blocksize.=.512;...
4980 20 20 7b 00 20 20 20 20 47 49 56 45 4e 28 20 22 61 20 35 31 32 20 73 61 6d 70 6c 65 20 62 6c 6f ..{.....GIVEN(."a.512.sample.blo
49a0 63 6b 20 77 69 74 68 20 61 20 73 61 6d 70 6c 65 20 72 61 74 65 20 6f 66 20 34 34 31 30 30 22 20 ck.with.a.sample.rate.of.44100".
49c0 29 00 00 20 20 20 20 75 69 6e 74 31 36 5f 74 20 61 63 74 75 61 6c 20 3d 20 30 3b 00 20 20 20 20 )......uint16_t.actual.=.0;.....
49e0 75 69 6e 74 31 36 5f 74 20 65 78 70 65 63 74 65 64 20 3d 20 30 3b 00 7b 00 53 43 45 4e 41 52 49 uint16_t.expected.=.0;.{.SCENARI
4a00 4f 28 20 22 46 30 20 69 73 20 63 6f 72 72 65 63 74 6c 79 20 64 65 74 65 63 74 65 64 20 66 6f 72 O(."F0.is.correctly.detected.for
4a20 20 61 20 73 61 77 74 6f 6f 74 68 20 77 61 76 65 22 2c 20 22 5b 78 74 72 61 63 74 5f 66 30 5d 22 .a.sawtooth.wave",."[xtract_f0]"
4a40 20 29 00 00 7d 00 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 .)..}.....}.........}...........
4a60 20 20 7d 20 20 20 20 20 20 20 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 ..}.........................}...
4a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c ..................REQUIRE(actual
4aa0 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .==.expected);..................
4ac0 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 ....CAPTURE(.expected.);........
4ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 .............CAPTURE(.actual.);.
4b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 ....................expected.=.x
4b20 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 20 20 20 20 ttest_ftom(frequency);..........
4b40 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 ...........actual.=.xttest_ftom(
4b60 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 result);.................{......
4b80 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 ...........THEN(."the.detected.F
4ba0 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 0.is.accurate.to.the.nearest.MID
4bc0 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 I.cent".)..................xtrac
4be0 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 t_f0(table,.blocksize,.&samplera
4c00 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 te,.&result);.................xt
4c20 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 test_gen_sine(table,.blocksize,.
4c40 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 samplerate,.frequency,.amplitude
4c60 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 );..................double.ampli
4c80 74 75 64 65 20 3d 20 31 2e 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 tude.=.1.0;.............{.......
4ca0 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 61 6d 70 6c 69 74 75 64 65 20 69 73 20 31 2e ......WHEN(."the.amplitude.is.1.
4cc0 30 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 0".)..............double.frequen
4ce0 63 79 20 3d 20 33 34 34 2e 35 33 31 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 cy.=.344.53125;.........{.......
4d00 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 33 34 34 2e 35 33 ..WHEN(."the.frequency.is.344.53
4d20 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 31 125.Hz".).//.period.of.exactly.1
4d40 32 38 20 73 61 6d 70 6c 65 73 3a 20 31 36 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 28.samples:.16.cycles.in.the.blo
4d60 63 6b 00 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 ck..........}.............}.....
4d80 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 ............REQUIRE(actual.==.ex
4da0 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 pected);..................CAPTUR
4dc0 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 E(.expected.);.................C
4de0 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 APTURE(.actual.);...............
4e00 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e ..expected.=.xttest_ftom(frequen
4e20 63 79 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 cy);.................actual.=.xt
4e40 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b test_ftom(result);.............{
4e60 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 .............THEN(."the.detected
4e80 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d .F0.is.accurate.to.the.nearest.M
4ea0 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f IDI.cent".)..............xtract_
4ec0 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 f0(table,.blocksize,.&samplerate
4ee0 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 ,.&result);.............xttest_g
4f00 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 en_sine(table,.blocksize,.sample
4f20 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 rate,.frequency,.amplitude);....
4f40 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 ..........double.amplitude.=.1.0
4f60 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d ;.............double.frequency.=
4f80 20 31 37 32 2e 32 36 35 36 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 .172.265625;.........{.........W
4fa0 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 31 37 32 2e 32 36 35 36 32 HEN(."the.frequency.is.172.26562
4fc0 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 32 35 36 5.Hz".).//.period.of.exactly.256
4fe0 20 73 61 6d 70 6c 65 73 3a 20 38 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 .samples:.8.cycles.in.the.block.
5000 61 64 00 00 03 00 00 00 b3 01 00 00 00 10 00 00 65 00 00 00 00 00 00 00 f2 0f 00 00 c9 0f 00 00 ad..............e...............
5020 c8 0f 00 00 6f 0f 00 00 2c 0f 00 00 2b 0f 00 00 dc 0e 00 00 ca 0e 00 00 98 0e 00 00 61 0e 00 00 ....o...,...+...............a...
5040 3a 0e 00 00 11 0e 00 00 df 0d 00 00 cd 0d 00 00 bf 0d 00 00 b5 0d 00 00 af 0d 00 00 ae 0d 00 00 :...............................
5060 6f 0d 00 00 69 0d 00 00 41 0d 00 00 18 0d 00 00 f0 0c 00 00 c9 0c 00 00 a8 0c 00 00 a7 0c 00 00 o...i...A.......................
5080 3e 0c 00 00 34 0c 00 00 09 0c 00 00 08 0c 00 00 b3 0b 00 00 6b 0b 00 00 6a 0b 00 00 fe 0a 00 00 >...4...............k...j.......
50a0 f0 0a 00 00 be 0a 00 00 96 0a 00 00 88 0a 00 00 7e 0a 00 00 7d 0a 00 00 20 0a 00 00 16 0a 00 00 ................~...}...........
50c0 f2 09 00 00 f1 09 00 00 9c 09 00 00 5d 09 00 00 5c 09 00 00 11 09 00 00 03 09 00 00 d5 08 00 00 ............]...\...............
50e0 a2 08 00 00 7f 08 00 00 5a 08 00 00 2c 08 00 00 1e 08 00 00 14 08 00 00 13 08 00 00 b4 07 00 00 ........Z...,...................
5100 aa 07 00 00 86 07 00 00 85 07 00 00 30 07 00 00 f1 06 00 00 f0 06 00 00 96 06 00 00 88 06 00 00 ............0...................
5120 5a 06 00 00 0b 06 00 00 e8 05 00 00 c3 05 00 00 95 05 00 00 87 05 00 00 7d 05 00 00 7c 05 00 00 Z.......................}...|...
5140 7b 05 00 00 12 05 00 00 08 05 00 00 dd 04 00 00 dc 04 00 00 87 04 00 00 48 04 00 00 47 04 00 00 {.......................H...G...
5160 fc 03 00 00 ee 03 00 00 c0 03 00 00 8d 03 00 00 6a 03 00 00 45 03 00 00 17 03 00 00 09 03 00 00 ................j...E...........
5180 ff 02 00 00 fe 02 00 00 96 02 00 00 8c 02 00 00 62 02 00 00 3d 02 00 00 0e 02 00 00 ed 01 00 00 ................b...=...........
51a0 ec 01 00 00 c1 01 00 00 b3 01 00 00 c6 01 00 00 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7b ...............................{
51c0 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 61 6d 70 6c 69 74 75 64 .............WHEN(."the.amplitud
51e0 65 20 69 73 20 31 2e 30 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 e.is.1.0".)..............CAPTURE
5200 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 (.expected.);.............expect
5220 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 ed.=.xttest_ftom(frequency);....
5240 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 6e 6f 69 73 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d .........double.noise[blocksize]
5260 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d ;.............double.frequency.=
5280 20 33 34 34 2e 35 33 31 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 .344.53125;.........{.........WH
52a0 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 33 34 34 2e 35 33 31 32 35 20 EN(."the.frequency.is.344.53125.
52c0 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 31 32 38 20 73 Hz".).//.period.of.exactly.128.s
52e0 61 6d 70 6c 65 73 3a 20 38 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 amples:.8.cycles.in.the.block...
5300 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 .......}.............}..........
5320 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 .......REQUIRE(actual.==.expecte
5340 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 d);..................CAPTURE(.ex
5360 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 pected.);.................CAPTUR
5380 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 E(.actual.);.................exp
53a0 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 ected.=.xttest_ftom(frequency);.
53c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f ................actual.=.xttest_
53e0 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 ftom(result);.............{.....
5400 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 ........THEN(."the.detected.F0.i
5420 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 s.accurate.to.the.nearest.MIDI.c
5440 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 ent".)..............xtract_f0(ta
5460 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 ble,.blocksize,.&samplerate,.&re
5480 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 sult);.............xttest_gen_sa
54a0 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 wtooth(table,.blocksize,.sampler
54c0 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 ate,.frequency,.amplitude);.....
54e0 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 31 37 32 2e .........double.frequency.=.172.
5500 32 36 35 36 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 265625;.........{.........WHEN(.
5520 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 31 37 32 2e 32 36 35 36 32 35 20 48 7a 22 "the.frequency.is.172.265625.Hz"
5540 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 32 35 36 20 73 61 6d 70 .).//.period.of.exactly.256.samp
5560 6c 65 73 3a 20 34 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 00 20 20 20 les:.4.cycles.in.the.block......
5580 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 .....}.............}............
55a0 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 .....REQUIRE(actual.==.expected)
55c0 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 ;..................CAPTURE(.expe
55e0 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 cted.);.................CAPTURE(
5600 20 72 65 73 75 6c 74 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 .result.);.................expec
5620 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 31 35 35 2e 32 38 31 36 39 30 31 34 29 3b ted.=.xttest_ftom(155.28169014);
5640 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 32 38 34 20 73 61 6d 70 6c 65 73 00 20 20 20 20 20 20 .//.period.of.284.samples.......
5660 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 ..........actual.=.xttest_ftom(r
5680 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 esult);.............{...........
56a0 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 71 75 61 6e ..THEN(."the.detected.F0.is.quan
56c0 74 69 7a 65 64 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 77 68 6f 6c 65 20 6e 75 6d 62 65 tized.to.the.nearest.whole.numbe
56e0 72 20 6f 66 20 73 61 6d 70 6c 65 73 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 r.of.samples".)..............xtr
5700 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 act_f0(table,.blocksize,.&sample
5720 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 rate,.&result);.............xtte
5740 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 st_gen_sawtooth(table,.blocksize
5760 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 ,.samplerate,.frequency,.amplitu
5780 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e de);..............double.frequen
57a0 63 79 20 3d 20 31 35 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e cy.=.155;.........{.........WHEN
57c0 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 31 35 35 20 48 7a 22 20 29 20 2f 2f (."the.frequency.is.155.Hz".).//
57e0 20 70 65 72 69 6f 64 20 6f 66 20 32 38 34 2e 35 32 20 73 61 6d 70 6c 65 73 3a 20 33 2e 36 20 63 .period.of.284.52.samples:.3.6.c
5800 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 7d 00 20 20 ycles.in.the.block..........}...
5820 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 ..........}.................REQU
5840 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 IRE(actual.==.expected);........
5860 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 ..........CAPTURE(.expected.);..
5880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 ...............CAPTURE(.actual.)
58a0 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 ;.................expected.=.xtt
58c0 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 est_ftom(frequency);............
58e0 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 .....actual.=.xttest_ftom(result
5900 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 );.............{.............THE
5920 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 N(."the.detected.F0.is.accurate.
5940 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 to.the.nearest.MIDI.cent".).....
5960 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 .........xtract_f0(table,.blocks
5980 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 ize,.&samplerate,.&result);.....
59a0 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c ........xttest_gen_sawtooth(tabl
59c0 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 e,.blocksize,.samplerate,.freque
59e0 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f ncy,.amplitude);..............do
5a00 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 31 34 30 3b 00 20 20 20 20 20 20 20 20 7b 00 uble.frequency.=.140;.........{.
5a20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 ........WHEN(."the.frequency.is.
5a40 31 34 30 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 33 31 35 20 73 61 6d 70 6c 140.Hz".).//.period.of.315.sampl
5a60 65 73 3a 20 33 2e 32 35 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 es:.3.25.cycles.in.the.block....
5a80 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 ......}.............}...........
5aa0 20 20 20 20 20 20 52 45 51 55 49 52 45 28 72 65 73 75 6c 74 20 3d 3d 20 30 2e 30 29 3b 00 20 20 ......REQUIRE(result.==.0.0);...
5ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 72 76 20 3d 3d 20 58 54 52 41 ..............REQUIRE(rv.==.XTRA
5ae0 43 54 5f 4e 4f 5f 52 45 53 55 4c 54 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 CT_NO_RESULT);..............{...
5b00 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 66 72 65 71 75 65 6e 63 79 20 64 65 74 65 63 ..........THEN(."frequency.detec
5b20 74 69 6f 6e 20 66 61 69 6c 73 20 63 6f 72 72 65 63 74 6c 79 20 28 58 54 52 41 43 54 5f 4e 4f 5f tion.fails.correctly.(XTRACT_NO_
5b40 52 45 53 55 4c 54 20 69 73 20 72 65 74 75 72 6e 65 64 2c 20 72 65 73 75 6c 74 20 73 65 74 20 74 RESULT.is.returned,.result.set.t
5b60 6f 20 30 2e 30 29 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 76 20 3d 20 o.0.0)".)..............int.rv.=.
5b80 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d xtract_f0(table,.blocksize,.&sam
5ba0 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 plerate,.&result);.............x
5bc0 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 ttest_gen_sawtooth(table,.blocks
5be0 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c ize,.samplerate,.frequency,.ampl
5c00 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 itude);..............double.freq
5c20 75 65 6e 63 79 20 3d 20 38 36 2e 31 33 32 38 31 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 uency.=.86.1328125;.........{...
5c40 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 38 36 ......WHEN(."the.frequency.is.86
5c60 2e 31 33 32 38 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 .1328125.Hz".).//.period.of.exac
5c80 74 6c 79 20 35 31 32 20 73 61 6d 70 6c 65 73 3a 20 32 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 tly.512.samples:.2.cycles.in.the
5ca0 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 74 61 62 6c 65 5b 62 6c 6f .block..........double.table[blo
5cc0 63 6b 73 69 7a 65 5d 3b 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 cksize];.........double.amplitud
5ce0 65 20 20 20 20 20 20 20 20 3d 20 31 2e 30 3b 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 72 e........=.1.0;.........double.r
5d00 65 73 75 6c 74 20 20 20 20 20 20 20 20 20 20 20 3d 20 2d 31 2e 30 3b 00 20 20 20 20 20 20 20 20 esult...........=.-1.0;.........
5d20 64 6f 75 62 6c 65 20 73 61 6d 70 6c 65 72 61 74 65 20 20 20 20 20 20 20 3d 20 34 34 31 30 30 3b double.samplerate.......=.44100;
5d40 00 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 62 6c 6f 63 6b 73 69 7a 65 20 20 20 20 20 .........uint32_t.blocksize.....
5d60 20 3d 20 31 30 32 34 3b 00 20 20 20 20 7b 00 20 20 20 20 47 49 56 45 4e 28 20 22 61 20 31 30 32 .=.1024;.....{.....GIVEN(."a.102
5d80 34 20 73 61 6d 70 6c 65 20 62 6c 6f 63 6b 20 77 69 74 68 20 61 20 73 61 6d 70 6c 65 20 72 61 74 4.sample.block.with.a.sample.rat
5da0 65 20 6f 66 20 34 34 31 30 30 22 20 29 00 00 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 7d 00 20 e.of.44100".)......}.........}..
5dc0 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 ...........}.................}..
5de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 ...................REQUIRE(actua
5e00 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.==.expected);.................
5e20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 .....CAPTURE(.expected.);.......
5e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b ..............CAPTURE(.actual.);
5e60 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 20 3d 20 .....................expected.=.
5e80 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 20 20 20 xttest_ftom(frequency);.........
5ea0 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d ............actual.=.xttest_ftom
5ec0 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 (result);.................{.....
5ee0 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 ............THEN(."the.detected.
5f00 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 F0.is.accurate.to.the.nearest.MI
5f20 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 DI.cent".)..................xtra
5f40 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 ct_f0(table,.blocksize,.&sampler
5f60 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 ate,.&result);.................x
5f80 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 ttest_gen_sawtooth(table,.blocks
5fa0 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c ize,.samplerate,.frequency,.ampl
5fc0 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 itude);..................double.
5fe0 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 30 31 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 amplitude.=.0.01;.............{.
6000 61 64 00 00 0b 00 00 00 9b 01 00 00 00 10 00 00 5d 00 00 00 00 00 00 00 a7 0f 00 00 64 0f 00 00 ad..............]...........d...
6020 63 0f 00 00 14 0f 00 00 02 0f 00 00 d0 0e 00 00 a9 0e 00 00 77 0e 00 00 65 0e 00 00 57 0e 00 00 c...................w...e...W...
6040 56 0e 00 00 fa 0d 00 00 ec 0d 00 00 ca 0d 00 00 c9 0d 00 00 70 0d 00 00 2d 0d 00 00 2c 0d 00 00 V...................p...-...,...
6060 dd 0c 00 00 cb 0c 00 00 99 0c 00 00 72 0c 00 00 40 0c 00 00 2e 0c 00 00 20 0c 00 00 1f 0c 00 00 ............r...@...............
6080 cd 0b 00 00 bf 0b 00 00 9e 0b 00 00 9d 0b 00 00 3e 0b 00 00 ff 0a 00 00 ca 0a 00 00 87 0a 00 00 ................>...............
60a0 86 0a 00 00 37 0a 00 00 25 0a 00 00 f3 09 00 00 cc 09 00 00 9a 09 00 00 88 09 00 00 7a 09 00 00 ....7...%...................z...
60c0 79 09 00 00 47 09 00 00 39 09 00 00 18 09 00 00 17 09 00 00 b8 08 00 00 79 08 00 00 44 08 00 00 y...G...9...............y...D...
60e0 01 08 00 00 00 08 00 00 b1 07 00 00 9f 07 00 00 6d 07 00 00 46 07 00 00 14 07 00 00 02 07 00 00 ................m...F...........
6100 f4 06 00 00 f3 06 00 00 c1 06 00 00 b3 06 00 00 91 06 00 00 90 06 00 00 31 06 00 00 f2 05 00 00 ........................1.......
6120 bd 05 00 00 7a 05 00 00 79 05 00 00 2b 05 00 00 19 05 00 00 e7 04 00 00 b4 04 00 00 81 04 00 00 ....z...y...+...................
6140 5a 04 00 00 2c 04 00 00 fe 03 00 00 ec 03 00 00 de 03 00 00 dd 03 00 00 ab 03 00 00 9d 03 00 00 Z...,...........................
6160 7b 03 00 00 7a 03 00 00 1b 03 00 00 dc 02 00 00 a7 02 00 00 64 02 00 00 63 02 00 00 11 02 00 00 {...z...............d...c.......
6180 ff 01 00 00 cd 01 00 00 9b 01 00 00 b2 01 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 20 ................................
61a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 69 6e 20 3d 20 65 78 ...............uint16_t.min.=.ex
61c0 70 65 63 74 65 64 20 2d 20 35 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pected.-.50;....................
61e0 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 .actual.=.xttest_ftom(result);..
6200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...............{................
6220 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 .THEN(."the.detected.F0.is.accur
6240 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 71 75 61 72 74 65 72 2d 74 6f 6e 65 22 ate.to.the.nearest.quarter-tone"
6260 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 .)..................xtract_f0(ta
6280 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 ble,.blocksize,.&samplerate,.&re
62a0 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 sult);.................xttest_ad
62c0 64 28 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 d(table,.noise,.blocksize);.....
62e0 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 ............xttest_gen_noise(noi
6300 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 se,.blocksize,.amplitude);......
6320 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 ...........xttest_gen_sawtooth(t
6340 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 able,.blocksize,.samplerate,.fre
6360 71 75 65 6e 63 79 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 quency,.1.0.-.amplitude);.......
6380 20 20 20 20 20 20 20 20 20 20 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 32 35 3b 00 20 20 20 ...........amplitude.=.0.25;....
63a0 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 77 68 .........{.............WHEN(."wh
63c0 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 74 20 33 30 25 22 20 29 00 00 20 20 ite.noise.is.added.at.30%".)....
63e0 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 ..........}.................}...
6400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 61 63 74 75 61 ..................REQUIRE(.actua
6420 6c 20 3c 20 6d 61 78 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.<.max.);......................
6440 52 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3e 20 6d 69 6e 20 29 3b 20 00 20 20 20 20 20 20 REQUIRE(.actual.>.min.);........
6460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b ..............CAPTURE(.actual.);
6480 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 61 .....................uint16_t.ma
64a0 78 20 3d 20 65 78 70 65 63 74 65 64 20 2b 20 31 30 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 x.=.expected.+.100;.............
64c0 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 69 6e 20 3d 20 65 78 70 65 63 74 65 64 20 ........uint16_t.min.=.expected.
64e0 2d 20 31 30 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 -.100;.....................actua
6500 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 l.=.xttest_ftom(result);........
6520 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 .........{.................THEN(
6540 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f ."the.detected.F0.is.accurate.to
6560 20 74 68 65 20 6e 65 61 72 65 73 74 20 73 65 6d 69 74 6f 6e 65 22 20 29 00 00 20 20 20 20 20 20 .the.nearest.semitone".)........
6580 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b ..........xtract_f0(table,.block
65a0 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 size,.&samplerate,.&result);....
65c0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 64 28 74 61 62 6c 65 2c 20 6e .............xttest_add(table,.n
65e0 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 oise,.blocksize);...............
6600 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 ..xttest_gen_noise(noise,.blocks
6620 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ize,.amplitude);................
6640 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 .xttest_gen_sawtooth(table,.bloc
6660 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 31 2e ksize,.samplerate,.frequency,.1.
6680 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0.-.amplitude);.................
66a0 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 32 35 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b .amplitude.=.0.25;.............{
66c0 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 .............WHEN(."white.noise.
66e0 69 73 20 61 64 64 65 64 20 61 74 20 32 35 25 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 is.added.at.25%".)..............
6700 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 }.................}.............
6720 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 ........REQUIRE(actual.==.expect
6740 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 ed);......................CAPTUR
6760 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 E(.actual.);....................
6780 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 .actual.=.xttest_ftom(result);..
67a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...............{................
67c0 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 .THEN(."the.detected.F0.is.accur
67e0 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 ate.to.the.nearest.MIDI.cent".).
6800 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 .................xtract_f0(table
6820 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c ,.blocksize,.&samplerate,.&resul
6840 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 64 28 74 t);.................xttest_add(t
6860 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 20 20 20 able,.noise,.blocksize);........
6880 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 73 65 2c .........xttest_gen_noise(noise,
68a0 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 20 20 20 .blocksize,.amplitude);.........
68c0 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c ........xttest_gen_sawtooth(tabl
68e0 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 e,.blocksize,.samplerate,.freque
6900 6e 63 79 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 ncy,.1.0.-.amplitude);..........
6920 20 20 20 20 20 20 20 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 32 3b 00 20 20 20 20 20 20 20 ........amplitude.=.0.2;........
6940 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 77 68 69 74 65 20 .....{.............WHEN(."white.
6960 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 74 20 32 30 25 22 20 29 00 00 20 20 20 20 20 20 noise.is.added.at.20%".)........
6980 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 ......}.................}.......
69a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 ..............REQUIRE(actual.==.
69c0 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 expected);......................
69e0 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 CAPTURE(.actual.);..............
6a00 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 .......actual.=.xttest_ftom(resu
6a20 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 lt);.................{..........
6a40 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 .......THEN(."the.detected.F0.is
6a60 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 .accurate.to.the.nearest.MIDI.ce
6a80 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 nt".)..................xtract_f0
6aa0 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 (table,.blocksize,.&samplerate,.
6ac0 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 &result);.................xttest
6ae0 5f 61 64 64 28 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 _add(table,.noise,.blocksize);..
6b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 ...............xttest_gen_noise(
6b20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 noise,.blocksize,.amplitude);...
6b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 ..............xttest_gen_sawtoot
6b60 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 h(table,.blocksize,.samplerate,.
6b80 66 72 65 71 75 65 6e 63 79 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 frequency,.1.0.-.amplitude);....
6ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 31 3b 00 20 ..............amplitude.=.0.1;..
6bc0 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 ...........{.............WHEN(."
6be0 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 74 20 31 30 25 22 20 29 20 2f white.noise.is.added.at.10%".)./
6c00 2f 20 4f 6e 6c 79 20 74 65 73 74 20 6e 6f 69 73 65 20 66 6f 72 20 6f 6e 65 20 63 61 73 65 00 00 /.Only.test.noise.for.one.case..
6c20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 ............}.................}.
6c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 ....................REQUIRE(actu
6c60 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 al.==.expected);................
6c80 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 ......CAPTURE(.actual.);........
6ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f .............actual.=.xttest_fto
6cc0 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 m(result);.................{....
6ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 .............THEN(."the.detected
6d00 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d .F0.is.accurate.to.the.nearest.M
6d20 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 IDI.cent".)..................xtr
6d40 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 act_f0(table,.blocksize,.&sample
6d60 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rate,.&result);.................
6d80 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b xttest_gen_sawtooth(table,.block
6da0 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 size,.samplerate,.frequency,.amp
6dc0 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6d 70 6c 69 74 litude);..................amplit
6de0 75 64 65 20 3d 20 30 2e 30 31 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 ude.=.0.01;.............{.......
6e00 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 61 6d 70 6c 69 74 75 64 65 20 69 73 20 30 2e ......WHEN(."the.amplitude.is.0.
6e20 30 31 22 20 29 20 2f 2f 20 4f 6e 6c 79 20 74 65 73 74 20 61 20 64 69 66 66 65 72 65 6e 74 20 61 01".).//.Only.test.a.different.a
6e40 6d 70 6c 69 74 75 64 65 20 66 6f 72 20 6f 6e 65 20 63 61 73 65 00 00 20 20 20 20 20 20 20 20 20 mplitude.for.one.case...........
6e60 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 ...}.................}..........
6e80 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 ...........REQUIRE(actual.==.exp
6ea0 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 ected);......................CAP
6ec0 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 TURE(.actual.);.................
6ee0 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 ....actual.=.xttest_ftom(result)
6f00 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 ;.................{.............
6f20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 ....THEN(."the.detected.F0.is.ac
6f40 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 curate.to.the.nearest.MIDI.cent"
6f60 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 .)..................xtract_f0(ta
6f80 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 ble,.blocksize,.&samplerate,.&re
6fa0 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 sult);.................xttest_ge
6fc0 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d n_sawtooth(table,.blocksize,.sam
6fe0 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 plerate,.frequency,.amplitude);.
7000 61 64 00 00 45 0f 00 00 6d 0f 00 00 00 10 00 00 03 00 00 00 00 00 00 00 bd 0f 00 00 bc 0f 00 00 ad..E...m.......................
7020 6d 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 m...............................
7040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
71a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
71c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
71e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
76a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
76c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
76e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f60 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 .............................THE
7f80 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 N(."the.detected.F0.is.accurate.
7fa0 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 to.the.nearest.MIDI.cent".).....
7fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c .............xtract_f0(table,.bl
7fe0 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 ocksize,.&samplerate,.&result);.
8000 61 64 00 00 9d 00 00 00 39 02 00 00 00 10 00 00 60 00 00 00 00 00 00 00 ce 0f 00 00 a7 0f 00 00 ad......9.......`...............
8020 79 0f 00 00 4b 0f 00 00 39 0f 00 00 2b 0f 00 00 2a 0f 00 00 f8 0e 00 00 ea 0e 00 00 c8 0e 00 00 y...K...9...+...*...............
8040 c7 0e 00 00 68 0e 00 00 29 0e 00 00 f4 0d 00 00 b1 0d 00 00 b0 0d 00 00 5e 0d 00 00 4c 0d 00 00 ....h...)...............^...L...
8060 1a 0d 00 00 d8 0c 00 00 b1 0c 00 00 7f 0c 00 00 6d 0c 00 00 5f 0c 00 00 55 0c 00 00 4f 0c 00 00 ................m..._...U...O...
8080 4e 0c 00 00 0f 0c 00 00 09 0c 00 00 e1 0b 00 00 b8 0b 00 00 90 0b 00 00 6f 0b 00 00 6e 0b 00 00 N.......................o...n...
80a0 05 0b 00 00 fb 0a 00 00 d0 0a 00 00 ac 0a 00 00 ab 0a 00 00 56 0a 00 00 0e 0a 00 00 0d 0a 00 00 ....................V...........
80c0 c2 09 00 00 b4 09 00 00 86 09 00 00 53 09 00 00 30 09 00 00 0b 09 00 00 dd 08 00 00 cb 08 00 00 ............S...0...............
80e0 c1 08 00 00 c0 08 00 00 57 08 00 00 4d 08 00 00 22 08 00 00 fe 07 00 00 fd 07 00 00 a8 07 00 00 ........W...M..."...............
8100 69 07 00 00 68 07 00 00 1d 07 00 00 0f 07 00 00 e1 06 00 00 ae 06 00 00 8b 06 00 00 66 06 00 00 i...h.......................f...
8120 38 06 00 00 2a 06 00 00 20 06 00 00 1f 06 00 00 b7 05 00 00 ad 05 00 00 83 05 00 00 54 05 00 00 8...*.......................T...
8140 33 05 00 00 32 05 00 00 07 05 00 00 f9 04 00 00 d1 04 00 00 d0 04 00 00 77 04 00 00 34 04 00 00 3...2...................w...4...
8160 33 04 00 00 e4 03 00 00 d2 03 00 00 a0 03 00 00 79 03 00 00 47 03 00 00 35 03 00 00 27 03 00 00 3...............y...G...5...'...
8180 26 03 00 00 ca 02 00 00 bc 02 00 00 93 02 00 00 92 02 00 00 39 02 00 00 e4 01 00 00 f9 01 00 00 &...................9...........
81a0 aa 01 00 00 b9 01 00 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 ..........................THEN(.
81c0 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 "the.detected.F0.is.accurate.to.
81e0 74 68 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 the.................xttest_gen_s
8200 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 awtooth(table,.blocksize,.sample
8220 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 20 20 20 20 20 20 20 rate,.frequency,.amplitud.......
8240 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 .........xttest_gen_sawtooth(tab
8260 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 le,.blocksize,.samplerate,.frequ
8280 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 ency,.amplitude);...............
82a0 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 30 31 3b 00 20 20 20 20 ...double.amplitude.=.0.01;.....
82c0 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 ........{.............WHEN(."the
82e0 20 61 6d 70 6c 69 74 75 64 65 20 69 73 20 30 2e 30 31 22 20 29 20 2f 2f 20 4f 6e 6c 79 20 74 65 .amplitude.is.0.01".).//.Only.te
8300 73 74 20 61 20 64 69 66 66 65 72 65 6e 74 20 61 6d 70 6c 69 74 75 64 65 20 66 6f 72 20 6f 6e 65 st.a.different.amplitude.for.one
8320 20 63 61 73 65 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 .case..............}............
8340 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 .....}.....................REQUI
8360 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 RE(actual.==.expected);.........
8380 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 .............CAPTURE(.actual.);.
83a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 ....................actual.=.xtt
83c0 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 est_ftom(result);...............
83e0 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 ..{.................THEN(."the.d
8400 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 etected.F0.is.accurate.to.the.ne
8420 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 arest.MIDI.cent".)..............
8440 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 ....xtract_f0(table,.blocksize,.
8460 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 &samplerate,.&result);..........
8480 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 .......xttest_gen_sawtooth(table
84a0 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e ,.blocksize,.samplerate,.frequen
84c0 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 cy,.amplitude);.................
84e0 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 3b 00 20 20 20 20 20 20 20 .double.amplitude.=.1.0;........
8500 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 61 6d .....{.............WHEN(."the.am
8520 70 6c 69 74 75 64 65 20 69 73 20 31 2e 30 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 43 plitude.is.1.0".)..............C
8540 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 APTURE(.expected.);.............
8560 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 expected.=.xttest_ftom(frequency
8580 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 );.............double.frequency.
85a0 3d 20 33 34 34 2e 35 33 31 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 =.344.53125;.........{.........W
85c0 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 33 34 34 2e 35 33 31 32 35 HEN(."the.frequency.is.344.53125
85e0 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 31 32 38 20 .Hz".).//.period.of.exactly.128.
8600 73 61 6d 70 6c 65 73 3a 20 38 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 samples:.8.cycles.in.the.block..
8620 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 ........}.............}.........
8640 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 ........REQUIRE(actual.==.expect
8660 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 65 ed);..................CAPTURE(.e
8680 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 xpected.);.................CAPTU
86a0 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 RE(.actual.);.................ex
86c0 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b pected.=.xttest_ftom(frequency);
86e0 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 .................actual.=.xttest
8700 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 _ftom(result);.............{....
8720 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 .........THEN(."the.detected.F0.
8740 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 is.accurate.to.the.nearest.MIDI.
8760 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 cent".)..............xtract_f0(t
8780 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 able,.blocksize,.&samplerate,.&r
87a0 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 esult);.............xttest_gen_s
87c0 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 awtooth(table,.blocksize,.sample
87e0 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 rate,.frequency,.amplitude);....
8800 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 ..........double.amplitude.=.1.0
8820 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d ;.............double.frequency.=
8840 20 31 37 32 2e 32 36 35 36 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 .172.265625;.........{.........W
8860 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 31 37 32 2e 32 36 35 36 32 HEN(."the.frequency.is.172.26562
8880 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 32 35 36 5.Hz".).//.period.of.exactly.256
88a0 20 73 61 6d 70 6c 65 73 3a 20 34 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 .samples:.4.cycles.in.the.block.
88c0 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 20 20 20 00 20 20 20 .........}.............}........
88e0 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 .............REQUIRE(actual.==.e
8900 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 xpected);..................CAPTU
8920 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 RE(.expected.);.................
8940 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 CAPTURE(.actual.);..............
8960 20 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 ...expected.=.xttest_ftom(freque
8980 6e 63 79 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 ncy);.................actual.=.x
89a0 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 ttest_ftom(result);.............
89c0 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 {.............THEN(."the.detecte
89e0 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 d.F0.is.accurate.to.the.nearest.
8a00 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 76 MIDI.cent".)..............int.rv
8a20 20 3d 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 .=.xtract_f0(table,.blocksize,.&
8a40 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 samplerate,.&result);...........
8a60 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f ..xttest_gen_sawtooth(table,.blo
8a80 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 cksize,.samplerate,.frequency,.a
8aa0 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 mplitude);..............double.a
8ac0 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 mplitude.=.1.0;.............doub
8ae0 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 38 36 2e 31 33 32 38 31 32 35 3b 00 20 20 20 20 20 le.frequency.=.86.1328125;......
8b00 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 ...{.........WHEN(."the.frequenc
8b20 79 20 69 73 20 38 36 2e 31 33 32 38 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 y.is.86.1328125.Hz".).//.period.
8b40 6f 66 20 65 78 61 63 74 6c 79 20 35 31 32 20 73 61 6d 70 6c 65 73 3a 20 32 20 63 79 63 6c 65 73 of.exactly.512.samples:.2.cycles
8b60 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 74 61 .in.the.block..........double.ta
8b80 62 6c 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 72 ble[blocksize];.........double.r
8ba0 65 73 75 6c 74 20 20 20 20 20 20 20 20 20 20 20 3d 20 2d 31 2e 30 3b 00 20 20 20 20 20 20 20 20 esult...........=.-1.0;.........
8bc0 64 6f 75 62 6c 65 20 73 61 6d 70 6c 65 72 61 74 65 20 20 20 20 20 20 20 3d 20 31 31 30 32 35 3b double.samplerate.......=.11025;
8be0 00 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 62 6c 6f 63 6b 73 69 7a 65 20 20 20 20 20 .........uint32_t.blocksize.....
8c00 20 3d 20 31 30 32 34 3b 00 20 20 20 20 7b 00 20 20 20 20 47 49 56 45 4e 28 20 22 61 20 31 30 32 .=.1024;.....{.....GIVEN(."a.102
8c20 34 20 73 61 6d 70 6c 65 20 62 6c 6f 63 6b 20 77 69 74 68 20 61 20 73 61 6d 70 6c 65 20 72 61 74 4.sample.block.with.a.sample.rat
8c40 65 20 6f 66 20 31 31 30 32 35 22 20 29 00 00 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 7d 00 20 e.of.11025".)......}.........}..
8c60 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 ...........}.................}..
8c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 64 69 66 66 ...................REQUIRE(.diff
8ca0 65 72 65 6e 63 65 20 3e 20 31 30 30 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 erence.>.100.);.................
8cc0 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 .....CAPTURE(.actual.);.........
8ce0 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 64 69 66 66 65 72 65 6e 63 65 20 ............uint16_t.difference.
8d00 3d 20 61 62 73 28 65 78 70 65 63 74 65 64 20 2d 20 61 63 74 75 61 6c 29 3b 00 20 20 20 20 20 20 =.abs(expected.-.actual);.......
8d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 ..............actual.=.xttest_ft
8d40 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 om(result);.................{...
8d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 ..............THEN(."the.detecte
8d80 64 20 46 30 20 69 73 20 69 6e 61 63 63 75 72 61 74 65 20 62 79 20 6d 6f 72 65 20 74 68 61 6e 20 d.F0.is.inaccurate.by.more.than.
8da0 6f 6e 65 20 73 65 6d 69 74 6f 6e 65 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 one.semitone".).................
8dc0 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 .xtract_f0(table,.blocksize,.&sa
8de0 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 mplerate,.&result);.............
8e00 20 20 20 20 78 74 74 65 73 74 5f 61 64 64 28 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f ....xttest_add(table,.noise,.blo
8e20 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f cksize);.................xttest_
8e40 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 6d 70 6c gen_noise(noise,.blocksize,.ampl
8e60 69 74 75 64 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 itude);.................xttest_g
8e80 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 en_sawtooth(table,.blocksize,.sa
8ea0 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 mplerate,.frequency,.1.0.-.ampli
8ec0 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6d 70 6c 69 74 75 64 tude);..................amplitud
8ee0 65 20 3d 20 30 2e 33 35 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 e.=.0.35;.............{.........
8f00 20 20 20 20 57 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 ....WHEN(."white.noise.is.added.
8f20 61 74 20 33 35 25 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 at.35%".)..............}........
8f40 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 .........}.....................R
8f60 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3c 20 6d 61 78 20 29 3b 20 00 20 20 20 20 20 20 20 EQUIRE(.actual.<.max.);.........
8f80 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3e 20 6d .............REQUIRE(.actual.>.m
8fa0 69 6e 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 in.);......................CAPTU
8fc0 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 RE(.actual.);...................
8fe0 20 20 75 69 6e 74 31 36 5f 74 20 6d 61 78 20 3d 20 65 78 70 65 63 74 65 64 20 2b 20 35 30 3b 00 ..uint16_t.max.=.expected.+.50;.
9000 61 64 00 00 00 00 00 00 9c 01 00 00 00 10 00 00 60 00 00 00 00 00 00 00 ee 0f 00 00 bc 0f 00 00 ad..............`...............
9020 95 0f 00 00 63 0f 00 00 51 0f 00 00 43 0f 00 00 42 0f 00 00 10 0f 00 00 02 0f 00 00 da 0e 00 00 ....c...Q...C...B...............
9040 b1 0e 00 00 b0 0e 00 00 51 0e 00 00 12 0e 00 00 dd 0d 00 00 9a 0d 00 00 99 0d 00 00 47 0d 00 00 ........Q...................G...
9060 35 0d 00 00 03 0d 00 00 d1 0c 00 00 9f 0c 00 00 78 0c 00 00 4a 0c 00 00 1c 0c 00 00 02 0c 00 00 5...............x...J...........
9080 f4 0b 00 00 f3 0b 00 00 c1 0b 00 00 b3 0b 00 00 8b 0b 00 00 62 0b 00 00 61 0b 00 00 02 0b 00 00 ....................b...a.......
90a0 c3 0a 00 00 8e 0a 00 00 4b 0a 00 00 4a 0a 00 00 fb 09 00 00 e9 09 00 00 b7 09 00 00 84 09 00 00 ........K...J...................
90c0 51 09 00 00 2a 09 00 00 fc 08 00 00 ce 08 00 00 bb 08 00 00 ad 08 00 00 ac 08 00 00 7a 08 00 00 Q...*.......................z...
90e0 6c 08 00 00 44 08 00 00 1b 08 00 00 1a 08 00 00 bb 07 00 00 7c 07 00 00 47 07 00 00 04 07 00 00 l...D...............|...G.......
9100 03 07 00 00 b4 06 00 00 a2 06 00 00 70 06 00 00 3d 06 00 00 0a 06 00 00 e3 05 00 00 b5 05 00 00 ............p...=...............
9120 87 05 00 00 74 05 00 00 66 05 00 00 65 05 00 00 33 05 00 00 25 05 00 00 fd 04 00 00 d4 04 00 00 ....t...f...e...3...%...........
9140 d3 04 00 00 74 04 00 00 35 04 00 00 00 04 00 00 bd 03 00 00 bc 03 00 00 6a 03 00 00 58 03 00 00 ....t...5...............j...X...
9160 26 03 00 00 e4 02 00 00 bd 02 00 00 8b 02 00 00 79 02 00 00 6b 02 00 00 61 02 00 00 5b 02 00 00 &...............y...k...a...[...
9180 5a 02 00 00 1b 02 00 00 15 02 00 00 ed 01 00 00 c4 01 00 00 9c 01 00 00 ab 01 00 00 20 20 20 20 Z...............................
91a0 20 20 20 20 64 6f 75 62 6c 65 20 72 65 73 75 6c 74 20 20 20 20 20 20 20 20 20 20 20 3d 20 2d 31 ....double.result...........=.-1
91c0 2e 30 3b 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 73 61 6d 70 6c 65 72 61 74 65 20 20 20 .0;.........double.samplerate...
91e0 20 20 20 20 3d 20 34 34 31 30 30 3b 00 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 62 6c ....=.44100;.........uint32_t.bl
9200 6f 63 6b 73 69 7a 65 20 20 20 20 20 20 3d 20 32 30 34 38 3b 00 20 20 20 20 7b 00 20 20 20 20 47 ocksize......=.2048;.....{.....G
9220 49 56 45 4e 28 20 22 61 20 32 30 34 38 20 73 61 6d 70 6c 65 20 62 6c 6f 63 6b 20 77 69 74 68 20 IVEN(."a.2048.sample.block.with.
9240 61 20 73 61 6d 70 6c 65 20 72 61 74 65 20 6f 66 20 34 34 31 30 30 22 20 29 00 00 20 20 20 20 7d a.sample.rate.of.44100".)......}
9260 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 .........}.............}........
9280 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 .........}.....................R
92a0 45 51 55 49 52 45 28 20 64 69 66 66 65 72 65 6e 63 65 20 3e 20 31 30 30 20 29 3b 20 00 20 20 20 EQUIRE(.difference.>.100.);.....
92c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c .................CAPTURE(.actual
92e0 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 .);.....................uint16_t
9300 20 64 69 66 66 65 72 65 6e 63 65 20 3d 20 61 62 73 28 65 78 70 65 63 74 65 64 20 2d 20 61 63 74 .difference.=.abs(expected.-.act
9320 75 61 6c 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c ual);.....................actual
9340 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 .=.xttest_ftom(result);.........
9360 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 ........{.................THEN(.
9380 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 69 6e 61 63 63 75 72 61 74 65 20 62 "the.detected.F0.is.inaccurate.b
93a0 79 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 73 65 6d 69 74 6f 6e 65 22 20 29 00 00 20 20 20 y.more.than.one.semitone".).....
93c0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c .............xtract_f0(table,.bl
93e0 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 ocksize,.&samplerate,.&result);.
9400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 64 28 74 61 62 6c 65 ................xttest_add(table
9420 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 ,.noise,.blocksize);............
9440 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 73 65 2c 20 62 6c 6f .....xttest_gen_noise(noise,.blo
9460 63 6b 73 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 cksize,.amplitude);.............
9480 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 ....xttest_gen_sawtooth(table,.b
94a0 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c locksize,.samplerate,.frequency,
94c0 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 .1.0.-.amplitude);..............
94e0 20 20 20 20 64 6f 75 62 6c 65 20 6e 6f 69 73 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b 00 20 20 20 ....double.noise[blocksize];....
9500 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 .............double.amplitude.=.
9520 30 2e 38 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 0.8;.............{.............W
9540 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 74 20 38 30 HEN(."white.noise.is.added.at.80
9560 25 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 %".)..............}.............
9580 20 20 20 20 7d 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 ....}......................REQUI
95a0 52 45 28 20 61 63 74 75 61 6c 20 3c 20 6d 61 78 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 RE(.actual.<.max.);.............
95c0 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3e 20 6d 69 6e 20 29 .........REQUIRE(.actual.>.min.)
95e0 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 ;......................CAPTURE(.
9600 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 actual.);.....................ui
9620 6e 74 31 36 5f 74 20 6d 61 78 20 3d 20 65 78 70 65 63 74 65 64 20 2b 20 31 30 30 3b 00 20 20 20 nt16_t.max.=.expected.+.100;....
9640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 69 6e 20 3d 20 .................uint16_t.min.=.
9660 65 78 70 65 63 74 65 64 20 2d 20 31 30 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 expected.-.100;.................
9680 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 ....actual.=.xttest_ftom(result)
96a0 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 ;.................{.............
96c0 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 ....THEN(."the.detected.F0.is.ac
96e0 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 73 65 6d 69 2d 74 6f 6e 65 22 curate.to.the.nearest.semi-tone"
9700 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 .)..................xtract_f0(ta
9720 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 ble,.blocksize,.&samplerate,.&re
9740 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 sult);.................xttest_ad
9760 64 28 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 d(table,.noise,.blocksize);.....
9780 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 ............xttest_gen_noise(noi
97a0 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 se,.blocksize,.amplitude);......
97c0 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 ...........xttest_gen_sawtooth(t
97e0 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 able,.blocksize,.samplerate,.fre
9800 71 75 65 6e 63 79 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 quency,.1.0.-.amplitude);.......
9820 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 6e 6f 69 73 65 5b 62 6c 6f 63 6b 73 69 7a ...........double.noise[blocksiz
9840 65 5d 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 e];.................double.ampli
9860 74 75 64 65 20 3d 20 30 2e 36 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 tude.=.0.6;.............{.......
9880 20 20 20 20 20 20 57 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 ......WHEN(."white.noise.is.adde
98a0 64 20 61 74 20 36 30 25 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 d.at.60%".)..............}......
98c0 20 20 20 20 20 20 20 20 20 20 20 7d 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........}....................
98e0 20 20 52 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3c 20 6d 61 78 20 29 3b 20 00 20 20 20 20 ..REQUIRE(.actual.<.max.);......
9900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 ................REQUIRE(.actual.
9920 3e 20 6d 69 6e 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 >.min.);......................CA
9940 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 PTURE(.actual.);................
9960 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 61 78 20 3d 20 65 78 70 65 63 74 65 64 20 2b 20 31 .....uint16_t.max.=.expected.+.1
9980 30 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 00;.....................uint16_t
99a0 20 6d 69 6e 20 3d 20 65 78 70 65 63 74 65 64 20 2d 20 31 30 30 3b 00 20 20 20 20 20 20 20 20 20 .min.=.expected.-.100;..........
99c0 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 ...........actual.=.xttest_ftom(
99e0 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 result);.................{......
9a00 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 ...........THEN(."the.detected.F
9a20 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 73 65 6d 0.is.accurate.to.the.nearest.sem
9a40 69 2d 74 6f 6e 65 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 i-tone".)..................xtrac
9a60 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 t_f0(table,.blocksize,.&samplera
9a80 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 te,.&result);.................xt
9aa0 74 65 73 74 5f 61 64 64 28 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 test_add(table,.noise,.blocksize
9ac0 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f );.................xttest_gen_no
9ae0 69 73 65 28 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 ise(noise,.blocksize,.amplitude)
9b00 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 ;.................xttest_gen_saw
9b20 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 tooth(table,.blocksize,.samplera
9b40 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b te,.frequency,.1.0.-.amplitude);
9b60 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 6e 6f 69 73 65 5b 62 ..................double.noise[b
9b80 6c 6f 63 6b 73 69 7a 65 5d 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c locksize];.................doubl
9ba0 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 34 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b e.amplitude.=.0.4;.............{
9bc0 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 .............WHEN(."white.noise.
9be0 69 73 20 61 64 64 65 64 20 61 74 20 34 30 25 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 is.added.at.40%".)..............
9c00 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 20 20 20 20 20 20 20 00 20 20 20 20 }.................}.............
9c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 ................REQUIRE(.actual.
9c40 3c 20 6d 61 78 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 <.max.);......................RE
9c60 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3e 20 6d 69 6e 20 29 3b 20 00 20 20 20 20 20 20 20 20 QUIRE(.actual.>.min.);..........
9c80 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 ............CAPTURE(.actual.);..
9ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 61 78 20 ...................uint16_t.max.
9cc0 3d 20 65 78 70 65 63 74 65 64 20 2b 20 35 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.expected.+.50;................
9ce0 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 69 6e 20 3d 20 65 78 70 65 63 74 65 64 20 2d 20 35 .....uint16_t.min.=.expected.-.5
9d00 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 0;.....................actual.=.
9d20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 xttest_ftom(result);............
9d40 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 .....{.................THEN(."th
9d60 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 e.detected.F0.is.accurate.to.the
9d80 20 6e 65 61 72 65 73 74 20 71 75 61 72 74 65 72 2d 74 6f 6e 65 22 20 29 00 00 20 20 20 20 20 20 .nearest.quarter-tone".)........
9da0 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b ..........xtract_f0(table,.block
9dc0 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 size,.&samplerate,.&result);....
9de0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 64 28 74 61 62 6c 65 2c 20 6e .............xttest_add(table,.n
9e00 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 oise,.blocksize);...............
9e20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 ..xttest_gen_noise(noise,.blocks
9e40 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ize,.amplitude);................
9e60 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 61 77 74 6f 6f 74 68 28 74 61 62 6c 65 2c 20 62 6c 6f 63 .xttest_gen_sawtooth(table,.bloc
9e80 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 31 2e ksize,.samplerate,.frequency,.1.
9ea0 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0.-.amplitude);.................
9ec0 20 64 6f 75 62 6c 65 20 6e 6f 69 73 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b 00 20 20 20 20 20 20 .double.noise[blocksize];.......
9ee0 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 32 ..........double.amplitude.=.0.2
9f00 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e ;.............{.............WHEN
9f20 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 74 20 32 30 25 22 20 (."white.noise.is.added.at.20%".
9f40 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )..............}................
9f60 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 .}.....................REQUIRE(a
9f80 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 ctual.==.expected);.............
9fa0 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 .........CAPTURE(.actual.);.....
9fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f ................actual.=.xttest_
9fe0 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 ftom(result);.................{.
a000 61 64 00 00 31 00 00 00 cd 01 00 00 00 10 00 00 60 00 00 00 00 00 00 00 cb 0f 00 00 88 0f 00 00 ad..1...........`...............
a020 87 0f 00 00 38 0f 00 00 26 0f 00 00 f4 0e 00 00 c1 0e 00 00 8e 0e 00 00 67 0e 00 00 39 0e 00 00 ....8...&...............g...9...
a040 0b 0e 00 00 f8 0d 00 00 ea 0d 00 00 e9 0d 00 00 b7 0d 00 00 a9 0d 00 00 81 0d 00 00 58 0d 00 00 ............................X...
a060 57 0d 00 00 fc 0c 00 00 bd 0c 00 00 88 0c 00 00 45 0c 00 00 44 0c 00 00 f5 0b 00 00 e3 0b 00 00 W...............E...D...........
a080 b1 0b 00 00 7e 0b 00 00 4b 0b 00 00 24 0b 00 00 f6 0a 00 00 c8 0a 00 00 b5 0a 00 00 a7 0a 00 00 ....~...K...$...................
a0a0 a6 0a 00 00 74 0a 00 00 66 0a 00 00 3e 0a 00 00 15 0a 00 00 14 0a 00 00 b9 09 00 00 7a 09 00 00 ....t...f...>...............z...
a0c0 45 09 00 00 02 09 00 00 01 09 00 00 af 08 00 00 9d 08 00 00 6b 08 00 00 29 08 00 00 02 08 00 00 E...................k...).......
a0e0 d0 07 00 00 be 07 00 00 b0 07 00 00 a6 07 00 00 a0 07 00 00 9f 07 00 00 60 07 00 00 5a 07 00 00 ........................`...Z...
a100 32 07 00 00 09 07 00 00 e1 06 00 00 c0 06 00 00 bf 06 00 00 55 06 00 00 4b 06 00 00 1f 06 00 00 2...................U...K.......
a120 fb 05 00 00 fa 05 00 00 a9 05 00 00 61 05 00 00 60 05 00 00 f4 04 00 00 e6 04 00 00 b4 04 00 00 ............a...`...............
a140 8c 04 00 00 7e 04 00 00 74 04 00 00 73 04 00 00 0a 04 00 00 00 04 00 00 d5 03 00 00 b1 03 00 00 ....~...t...s...................
a160 b0 03 00 00 5f 03 00 00 17 03 00 00 16 03 00 00 cb 02 00 00 bd 02 00 00 8f 02 00 00 5c 02 00 00 ...._.......................\...
a180 39 02 00 00 14 02 00 00 e6 01 00 00 d8 01 00 00 ce 01 00 00 cd 01 00 00 cc 01 00 00 00 00 00 00 9...............................
a1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 ......................}.........
a1e0 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 ....}.................REQUIRE(ac
a200 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 tual.==.expected);..............
a220 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 ....CAPTURE(.expected.);........
a240 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 .........CAPTURE(.actual.);.....
a260 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 ............expected.=.xttest_ft
a280 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 om(frequency);.................a
a2a0 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 ctual.=.xttest_ftom(result);....
a2c0 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 .........{.............THEN(."th
a2e0 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 e.detected.F0.is.accurate.to.the
a300 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 .nearest.MIDI.cent".)...........
a320 20 20 20 69 6e 74 20 72 76 20 3d 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f ...int.rv.=.xtract_f0(table,.blo
a340 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 cksize,.&samplerate,.&result);..
a360 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 ...........xttest_gen_sine(table
a380 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e ,.blocksize,.samplerate,.frequen
a3a0 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 cy,.amplitude);..............dou
a3c0 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 ble.amplitude.=.1.0;............
a3e0 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 38 36 2e 31 33 32 38 31 32 35 3b 00 .double.frequency.=.86.1328125;.
a400 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 ........{.........WHEN(."the.fre
a420 71 75 65 6e 63 79 20 69 73 20 38 36 2e 31 33 32 38 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 quency.is.86.1328125.Hz".).//.pe
a440 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 35 31 32 20 73 61 6d 70 6c 65 73 3a 20 34 20 63 riod.of.exactly.512.samples:.4.c
a460 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 7d 00 20 20 ycles.in.the.block..........}...
a480 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 ..........}.................REQU
a4a0 49 52 45 28 72 65 73 75 6c 74 20 3d 3d 20 30 2e 30 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 IRE(result.==.0.0);.............
a4c0 20 20 20 20 52 45 51 55 49 52 45 28 72 76 20 3d 3d 20 58 54 52 41 43 54 5f 4e 4f 5f 52 45 53 55 ....REQUIRE(rv.==.XTRACT_NO_RESU
a4e0 4c 54 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 LT);..............{.............
a500 54 48 45 4e 28 20 22 66 72 65 71 75 65 6e 63 79 20 64 65 74 65 63 74 69 6f 6e 20 66 61 69 6c 73 THEN(."frequency.detection.fails
a520 20 63 6f 72 72 65 63 74 6c 79 20 28 58 54 52 41 43 54 5f 4e 4f 5f 52 45 53 55 4c 54 20 69 73 20 .correctly.(XTRACT_NO_RESULT.is.
a540 72 65 74 75 72 6e 65 64 2c 20 72 65 73 75 6c 74 20 73 65 74 20 74 6f 20 30 2e 30 29 22 20 29 00 returned,.result.set.to.0.0)".).
a560 00 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 76 20 3d 20 78 74 72 61 63 74 5f 66 30 28 .............int.rv.=.xtract_f0(
a580 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 table,.blocksize,.&samplerate,.&
a5a0 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f result);.............xttest_gen_
a5c0 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 sine(table,.blocksize,.samplerat
a5e0 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 e,.frequency,.amplitude);.......
a600 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 3b 00 20 .......double.amplitude.=.1.0;..
a620 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 34 33 ...........double.frequency.=.43
a640 2e 30 36 36 34 30 36 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 .06640625;.........{.........WHE
a660 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 34 33 2e 30 36 36 34 30 36 32 35 N(."the.frequency.is.43.06640625
a680 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 32 35 36 20 .Hz".).//.period.of.exactly.256.
a6a0 73 61 6d 70 6c 65 73 3a 20 32 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 samples:.2.cycles.in.the.block..
a6c0 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 74 61 62 6c 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b ........double.table[blocksize];
a6e0 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 72 65 73 75 6c 74 20 20 20 20 20 20 20 20 20 20 .........double.result..........
a700 20 3d 20 2d 31 2e 30 3b 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 73 61 6d 70 6c 65 72 61 .=.-1.0;.........double.samplera
a720 74 65 20 20 20 20 20 20 20 3d 20 34 34 31 30 30 3b 00 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 te.......=.44100;.........uint32
a740 5f 74 20 62 6c 6f 63 6b 73 69 7a 65 20 20 20 20 20 20 3d 20 32 30 34 38 3b 00 20 20 20 20 7b 00 _t.blocksize......=.2048;.....{.
a760 20 20 20 20 47 49 56 45 4e 28 20 22 61 20 32 30 34 38 20 73 61 6d 70 6c 65 20 62 6c 6f 63 6b 20 ....GIVEN(."a.2048.sample.block.
a780 77 69 74 68 20 61 20 73 61 6d 70 6c 65 20 72 61 74 65 20 6f 66 20 34 34 31 30 30 22 20 29 00 00 with.a.sample.rate.of.44100".)..
a7a0 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 ....}.........}.............}...
a7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............}.................
a7e0 20 20 20 20 52 45 51 55 49 52 45 28 20 64 69 66 66 65 72 65 6e 63 65 20 3e 20 31 30 30 20 29 3b ....REQUIRE(.difference.>.100.);
a800 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 ......................CAPTURE(.a
a820 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e ctual.);.....................uin
a840 74 31 36 5f 74 20 64 69 66 66 65 72 65 6e 63 65 20 3d 20 61 62 73 28 65 78 70 65 63 74 65 64 20 t16_t.difference.=.abs(expected.
a860 2d 20 61 63 74 75 61 6c 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 -.actual);.....................a
a880 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 ctual.=.xttest_ftom(result);....
a8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 .............{.................T
a8c0 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 69 6e 61 63 63 75 72 HEN(."the.detected.F0.is.inaccur
a8e0 61 74 65 20 62 79 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 73 65 6d 69 74 6f 6e 65 22 20 29 ate.by.more.than.one.semitone".)
a900 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c ..................xtract_f0(tabl
a920 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 e,.blocksize,.&samplerate,.&resu
a940 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 64 28 lt);.................xttest_add(
a960 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 20 20 table,.noise,.blocksize);.......
a980 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 73 65 ..........xttest_gen_noise(noise
a9a0 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 20 20 ,.blocksize,.amplitude);........
a9c0 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 .........xttest_gen_sine(table,.
a9e0 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 blocksize,.samplerate,.frequency
aa00 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 ,.1.0.-.amplitude);.............
aa20 20 20 20 20 20 64 6f 75 62 6c 65 20 6e 6f 69 73 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b 00 20 20 .....double.noise[blocksize];...
aa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d ..............double.amplitude.=
aa60 20 30 2e 38 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 .0.8;.............{.............
aa80 57 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 74 20 38 WHEN(."white.noise.is.added.at.8
aaa0 30 25 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 0%".)..............}............
aac0 20 20 20 20 20 7d 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 .....}......................REQU
aae0 49 52 45 28 20 61 63 74 75 61 6c 20 3c 20 6d 61 78 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 IRE(.actual.<.max.);............
ab00 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3e 20 6d 69 6e 20 ..........REQUIRE(.actual.>.min.
ab20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 );......................CAPTURE(
ab40 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 .actual.);.....................u
ab60 69 6e 74 31 36 5f 74 20 6d 61 78 20 3d 20 65 78 70 65 63 74 65 64 20 2b 20 31 30 30 3b 00 20 20 int16_t.max.=.expected.+.100;...
ab80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 69 6e 20 3d ..................uint16_t.min.=
aba0 20 65 78 70 65 63 74 65 64 20 2d 20 31 30 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .expected.-.100;................
abc0 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 .....actual.=.xttest_ftom(result
abe0 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 );.................{............
ac00 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 .....THEN(."the.detected.F0.is.a
ac20 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 73 65 6d 69 2d 74 6f 6e 65 ccurate.to.the.nearest.semi-tone
ac40 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 ".)..................xtract_f0(t
ac60 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 able,.blocksize,.&samplerate,.&r
ac80 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 esult);.................xttest_a
aca0 64 64 28 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 dd(table,.noise,.blocksize);....
acc0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f .............xttest_gen_noise(no
ace0 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 ise,.blocksize,.amplitude);.....
ad00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c ............xttest_gen_sine(tabl
ad20 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 e,.blocksize,.samplerate,.freque
ad40 6e 63 79 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 ncy,.1.0.-.amplitude);..........
ad60 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 6e 6f 69 73 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b ........double.noise[blocksize];
ad80 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 .................double.amplitud
ada0 65 20 3d 20 30 2e 36 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 e.=.0.6;.............{..........
adc0 20 20 20 57 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 ...WHEN(."white.noise.is.added.a
ade0 74 20 36 30 25 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 t.60%".)..............}.........
ae00 20 20 20 20 20 20 20 20 7d 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 ........}......................R
ae20 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3c 20 6d 61 78 20 29 3b 20 00 20 20 20 20 20 20 20 EQUIRE(.actual.<.max.);.........
ae40 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3e 20 6d .............REQUIRE(.actual.>.m
ae60 69 6e 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 in.);......................CAPTU
ae80 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 RE(.actual.);...................
aea0 20 20 75 69 6e 74 31 36 5f 74 20 6d 61 78 20 3d 20 65 78 70 65 63 74 65 64 20 2b 20 31 30 30 3b ..uint16_t.max.=.expected.+.100;
aec0 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 69 .....................uint16_t.mi
aee0 6e 20 3d 20 65 78 70 65 63 74 65 64 20 2d 20 31 30 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 n.=.expected.-.100;.............
af00 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 ........actual.=.xttest_ftom(res
af20 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 ult);.................{.........
af40 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 ........THEN(."the.detected.F0.i
af60 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 73 65 6d 69 2d 74 s.accurate.to.the.nearest.semi-t
af80 6f 6e 65 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 one".)..................xtract_f
afa0 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 0(table,.blocksize,.&samplerate,
afc0 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 .&result);.................xttes
afe0 74 5f 61 64 64 28 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 t_add(table,.noise,.blocksize);.
b000 61 64 00 00 11 00 00 00 b1 01 00 00 00 10 00 00 61 00 00 00 00 00 00 00 dc 0f 00 00 db 0f 00 00 ad..............a...............
b020 8a 0f 00 00 42 0f 00 00 41 0f 00 00 f6 0e 00 00 e8 0e 00 00 ba 0e 00 00 87 0e 00 00 64 0e 00 00 ....B...A...................d...
b040 3f 0e 00 00 11 0e 00 00 ff 0d 00 00 f5 0d 00 00 f4 0d 00 00 8b 0d 00 00 81 0d 00 00 56 0d 00 00 ?...........................V...
b060 32 0d 00 00 31 0d 00 00 e0 0c 00 00 a1 0c 00 00 a0 0c 00 00 55 0c 00 00 47 0c 00 00 19 0c 00 00 2...1...............U...G.......
b080 e6 0b 00 00 c3 0b 00 00 9e 0b 00 00 70 0b 00 00 62 0b 00 00 58 0b 00 00 57 0b 00 00 ef 0a 00 00 ............p...b...X...W.......
b0a0 e5 0a 00 00 bb 0a 00 00 8c 0a 00 00 6b 0a 00 00 6a 0a 00 00 3f 0a 00 00 31 0a 00 00 09 0a 00 00 ............k...j...?...1.......
b0c0 08 0a 00 00 b3 09 00 00 70 09 00 00 6f 09 00 00 20 09 00 00 0e 09 00 00 dc 08 00 00 b5 08 00 00 ........p...o...................
b0e0 83 08 00 00 71 08 00 00 63 08 00 00 62 08 00 00 06 08 00 00 f8 07 00 00 cf 07 00 00 ce 07 00 00 ....q...c...b...................
b100 79 07 00 00 36 07 00 00 35 07 00 00 e6 06 00 00 d4 06 00 00 a2 06 00 00 7b 06 00 00 49 06 00 00 y...6...5...............{...I...
b120 37 06 00 00 29 06 00 00 28 06 00 00 f6 05 00 00 e8 05 00 00 c0 05 00 00 97 05 00 00 96 05 00 00 7...)...(.......................
b140 3b 05 00 00 fc 04 00 00 c7 04 00 00 84 04 00 00 83 04 00 00 31 04 00 00 1f 04 00 00 ed 03 00 00 ;...................1...........
b160 bb 03 00 00 89 03 00 00 62 03 00 00 34 03 00 00 06 03 00 00 ec 02 00 00 de 02 00 00 dd 02 00 00 ........b...4...................
b180 ab 02 00 00 9d 02 00 00 75 02 00 00 4c 02 00 00 4b 02 00 00 f0 01 00 00 b1 01 00 00 b0 01 00 00 ........u...L...K...............
b1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
b1c0 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 .xttest_gen_noise(noise,.blocksi
b1e0 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ze,.amplitude);.................
b200 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 xttest_gen_sine(table,.blocksize
b220 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 31 2e 30 20 2d 20 61 ,.samplerate,.frequency,.1.0.-.a
b240 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 mplitude);..................doub
b260 6c 65 20 6e 6f 69 73 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b 00 20 20 20 20 20 20 20 20 20 20 20 le.noise[blocksize];............
b280 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 34 3b 00 20 20 20 .....double.amplitude.=.0.4;....
b2a0 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 77 68 .........{.............WHEN(."wh
b2c0 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 74 20 34 30 25 22 20 29 00 00 20 20 ite.noise.is.added.at.40%".)....
b2e0 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 20 20 ..........}.................}...
b300 20 20 20 20 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 ..........................REQUIR
b320 45 28 20 61 63 74 75 61 6c 20 3c 20 6d 61 78 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 E(.actual.<.max.);..............
b340 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3e 20 6d 69 6e 20 29 3b ........REQUIRE(.actual.>.min.);
b360 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 ......................CAPTURE(.a
b380 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e ctual.);.....................uin
b3a0 74 31 36 5f 74 20 6d 61 78 20 3d 20 65 78 70 65 63 74 65 64 20 2b 20 35 30 3b 00 20 20 20 20 20 t16_t.max.=.expected.+.50;......
b3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 69 6e 20 3d 20 65 78 ...............uint16_t.min.=.ex
b3e0 70 65 63 74 65 64 20 2d 20 35 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pected.-.50;....................
b400 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 .actual.=.xttest_ftom(result);..
b420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...............{................
b440 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 .THEN(."the.detected.F0.is.accur
b460 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 71 75 61 72 74 65 72 2d 74 6f 6e 65 22 ate.to.the.nearest.quarter-tone"
b480 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 .)..................xtract_f0(ta
b4a0 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 ble,.blocksize,.&samplerate,.&re
b4c0 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 sult);.................xttest_ad
b4e0 64 28 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 d(table,.noise,.blocksize);.....
b500 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 ............xttest_gen_noise(noi
b520 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 se,.blocksize,.amplitude);......
b540 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 ...........xttest_gen_sine(table
b560 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e ,.blocksize,.samplerate,.frequen
b580 63 79 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 cy,.1.0.-.amplitude);...........
b5a0 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 6e 6f 69 73 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b 00 .......double.noise[blocksize];.
b5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 ................double.amplitude
b5e0 20 3d 20 30 2e 32 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 .=.0.2;.............{...........
b600 20 20 57 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 74 ..WHEN(."white.noise.is.added.at
b620 20 32 30 25 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 .20%".)..............}..........
b640 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 .......}.....................REQ
b660 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 UIRE(actual.==.expected);.......
b680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 ...............CAPTURE(.actual.)
b6a0 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 ;.....................actual.=.x
b6c0 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 ttest_ftom(result);.............
b6e0 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 ....{.................THEN(."the
b700 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 .detected.F0.is.accurate.to.the.
b720 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 nearest.MIDI.cent".)............
b740 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 ......xtract_f0(table,.blocksize
b760 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 ,.&samplerate,.&result);........
b780 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 .........xttest_gen_sine(table,.
b7a0 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 blocksize,.samplerate,.frequency
b7c0 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 ,.amplitude);..................d
b7e0 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 30 31 3b 00 20 20 20 20 20 20 20 20 ouble.amplitude.=.0.01;.........
b800 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 61 6d 70 ....{.............WHEN(."the.amp
b820 6c 69 74 75 64 65 20 69 73 20 30 2e 30 31 22 20 29 20 2f 2f 20 4f 6e 6c 79 20 74 65 73 74 20 61 litude.is.0.01".).//.Only.test.a
b840 20 64 69 66 66 65 72 65 6e 74 20 61 6d 70 6c 69 74 75 64 65 20 66 6f 72 20 6f 6e 65 20 63 61 73 .different.amplitude.for.one.cas
b860 65 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e..............}................
b880 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 .}.....................REQUIRE(a
b8a0 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 ctual.==.expected);.............
b8c0 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 .........CAPTURE(.actual.);.....
b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f ................actual.=.xttest_
b900 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 ftom(result);.................{.
b920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 ................THEN(."the.detec
b940 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 ted.F0.is.accurate.to.the.neares
b960 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.MIDI.cent".)..................
b980 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d xtract_f0(table,.blocksize,.&sam
b9a0 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 plerate,.&result);..............
b9c0 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 ...xttest_gen_sine(table,.blocks
b9e0 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c ize,.samplerate,.frequency,.ampl
ba00 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 itude);..................double.
ba20 61 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 amplitude.=.1.0;.............{..
ba40 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 61 6d 70 6c 69 74 75 64 65 20 ...........WHEN(."the.amplitude.
ba60 69 73 20 31 2e 30 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 is.1.0".)..............CAPTURE(.
ba80 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 expected.);.............expected
baa0 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 .=.xttest_ftom(frequency);......
bac0 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 33 34 34 2e 35 33 .......double.frequency.=.344.53
bae0 31 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 125;.........{.........WHEN(."th
bb00 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 33 34 34 2e 35 33 31 32 35 20 48 7a 22 20 29 20 2f e.frequency.is.344.53125.Hz".)./
bb20 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 31 32 38 20 73 61 6d 70 6c 65 73 3a /.period.of.exactly.128.samples:
bb40 20 38 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 .8.cycles.in.the.block..........
bb60 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 }.............}.................
bb80 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 REQUIRE(actual.==.expected);....
bba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 20 ..............CAPTURE(.expected.
bbc0 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 );.................CAPTURE(.actu
bbe0 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 20 3d al.);.................expected.=
bc00 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 20 20 .xttest_ftom(frequency);........
bc20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 .........actual.=.xttest_ftom(re
bc40 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 sult);.............{............
bc60 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 .THEN(."the.detected.F0.is.accur
bc80 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 ate.to.the.nearest.MIDI.cent".).
bca0 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c .............xtract_f0(table,.bl
bcc0 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 ocksize,.&samplerate,.&result);.
bce0 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c ............xttest_gen_sine(tabl
bd00 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 e,.blocksize,.samplerate,.freque
bd20 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f ncy,.amplitude);..............do
bd40 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 3b 00 20 20 20 20 20 20 20 20 20 20 uble.amplitude.=.1.0;...........
bd60 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 31 37 32 2e 32 36 35 36 32 35 3b ..double.frequency.=.172.265625;
bd80 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 .........{.........WHEN(."the.fr
bda0 65 71 75 65 6e 63 79 20 69 73 20 31 37 32 2e 32 36 35 36 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 equency.is.172.265625.Hz".).//.p
bdc0 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 79 20 32 35 36 20 73 61 6d 70 6c 65 73 3a 20 34 20 eriod.of.exactly.256.samples:.4.
bde0 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 7d 00 20 cycles.in.the.block..........}..
be00 20 20 20 20 20 20 20 20 20 20 20 7d 20 20 20 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........}....................
be20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 .REQUIRE(actual.==.expected);...
be40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 ...............CAPTURE(.expected
be60 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 .);.................CAPTURE(.act
be80 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 20 ual.);.................expected.
bea0 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 20 =.xttest_ftom(frequency);.......
bec0 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 ..........actual.=.xttest_ftom(r
bee0 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 esult);.............{...........
bf00 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 ..THEN(."the.detected.F0.is.accu
bf20 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 rate.to.the.nearest.MIDI.cent".)
bf40 00 00 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 76 20 3d 20 78 74 72 61 63 74 5f 66 30 ..............int.rv.=.xtract_f0
bf60 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 (table,.blocksize,.&samplerate,.
bf80 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e &result);.............xttest_gen
bfa0 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 _sine(table,.blocksize,.samplera
bfc0 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 te,.frequency,.amplitude);......
bfe0 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 31 2e 30 3b 00 ........double.amplitude.=.1.0;.
c000 61 64 00 00 11 00 00 00 b1 01 00 00 00 10 00 00 61 00 00 00 00 00 00 00 bd 0f 00 00 bc 0f 00 00 ad..............a...............
c020 6d 0f 00 00 5b 0f 00 00 29 0f 00 00 02 0f 00 00 d0 0e 00 00 be 0e 00 00 b0 0e 00 00 af 0e 00 00 m...[...).......................
c040 7d 0e 00 00 6f 0e 00 00 4e 0e 00 00 4d 0e 00 00 f2 0d 00 00 b3 0d 00 00 7e 0d 00 00 3b 0d 00 00 }...o...N...M...........~...;...
c060 3a 0d 00 00 eb 0c 00 00 d9 0c 00 00 a7 0c 00 00 80 0c 00 00 4e 0c 00 00 3c 0c 00 00 2e 0c 00 00 :...................N...<.......
c080 2d 0c 00 00 fb 0b 00 00 ed 0b 00 00 cb 0b 00 00 ca 0b 00 00 6f 0b 00 00 30 0b 00 00 fb 0a 00 00 -...................o...0.......
c0a0 b8 0a 00 00 b7 0a 00 00 69 0a 00 00 57 0a 00 00 25 0a 00 00 f2 09 00 00 bf 09 00 00 98 09 00 00 ........i...W...%...............
c0c0 6a 09 00 00 3c 09 00 00 2a 09 00 00 1c 09 00 00 1b 09 00 00 e9 08 00 00 db 08 00 00 b9 08 00 00 j...<...*.......................
c0e0 b8 08 00 00 5d 08 00 00 1e 08 00 00 e9 07 00 00 a6 07 00 00 a5 07 00 00 53 07 00 00 41 07 00 00 ....]...................S...A...
c100 0f 07 00 00 dd 06 00 00 ab 06 00 00 84 06 00 00 56 06 00 00 28 06 00 00 16 06 00 00 08 06 00 00 ................V...(...........
c120 07 06 00 00 d5 05 00 00 c7 05 00 00 a5 05 00 00 a4 05 00 00 49 05 00 00 0a 05 00 00 d5 04 00 00 ....................I...........
c140 92 04 00 00 91 04 00 00 3f 04 00 00 2d 04 00 00 fb 03 00 00 b9 03 00 00 92 03 00 00 60 03 00 00 ........?...-...............`...
c160 4e 03 00 00 40 03 00 00 36 03 00 00 30 03 00 00 2f 03 00 00 f0 02 00 00 ea 02 00 00 c2 02 00 00 N...@...6...0.../...............
c180 99 02 00 00 71 02 00 00 50 02 00 00 4f 02 00 00 e6 01 00 00 dc 01 00 00 b1 01 00 00 b0 01 00 00 ....q...P...O...................
c1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 .............................dou
c1c0 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 38 36 2e 31 33 32 38 31 32 35 3b 00 20 20 20 20 ble.frequency.=.86.1328125;.....
c1e0 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e ....{.........WHEN(."the.frequen
c200 63 79 20 69 73 20 38 36 2e 31 33 32 38 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 cy.is.86.1328125.Hz".).//.period
c220 20 6f 66 20 65 78 61 63 74 6c 79 20 35 31 32 20 73 61 6d 70 6c 65 73 3a 20 32 20 63 79 63 6c 65 .of.exactly.512.samples:.2.cycle
c240 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 74 s.in.the.block..........double.t
c260 61 62 6c 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b 00 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 able[blocksize];.........double.
c280 72 65 73 75 6c 74 20 20 20 20 20 20 20 20 20 20 20 3d 20 2d 31 2e 30 3b 00 20 20 20 20 20 20 20 result...........=.-1.0;........
c2a0 20 64 6f 75 62 6c 65 20 73 61 6d 70 6c 65 72 61 74 65 20 20 20 20 20 20 20 3d 20 31 31 30 32 35 .double.samplerate.......=.11025
c2c0 3b 00 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 62 6c 6f 63 6b 73 69 7a 65 20 20 20 20 ;.........uint32_t.blocksize....
c2e0 20 20 3d 20 31 30 32 34 3b 00 20 20 20 20 7b 00 20 20 20 20 47 49 56 45 4e 28 20 22 61 20 31 30 ..=.1024;.....{.....GIVEN(."a.10
c300 32 34 20 73 61 6d 70 6c 65 20 62 6c 6f 63 6b 20 77 69 74 68 20 61 20 73 61 6d 70 6c 65 20 72 61 24.sample.block.with.a.sample.ra
c320 74 65 20 6f 66 20 31 31 30 32 35 22 20 29 00 00 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 7d 00 te.of.11025".)......}.........}.
c340 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 ............}.................}.
c360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 64 69 66 ....................REQUIRE(.dif
c380 66 65 72 65 6e 63 65 20 3e 20 31 30 30 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ference.>.100.);................
c3a0 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 ......CAPTURE(.actual.);........
c3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 64 69 66 66 65 72 65 6e 63 65 .............uint16_t.difference
c3e0 20 3d 20 61 62 73 28 65 78 70 65 63 74 65 64 20 2d 20 61 63 74 75 61 6c 29 3b 00 20 20 20 20 20 .=.abs(expected.-.actual);......
c400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 ...............actual.=.xttest_f
c420 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 tom(result);.................{..
c440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 ...............THEN(."the.detect
c460 65 64 20 46 30 20 69 73 20 69 6e 61 63 63 75 72 61 74 65 20 62 79 20 6d 6f 72 65 20 74 68 61 6e ed.F0.is.inaccurate.by.more.than
c480 20 6f 6e 65 20 73 65 6d 69 74 6f 6e 65 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .one.semitone".)................
c4a0 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 ..xtract_f0(table,.blocksize,.&s
c4c0 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 amplerate,.&result);............
c4e0 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 64 28 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c .....xttest_add(table,.noise,.bl
c500 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 ocksize);.................xttest
c520 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 6d 70 _gen_noise(noise,.blocksize,.amp
c540 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f litude);.................xttest_
c560 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c gen_sine(table,.blocksize,.sampl
c580 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 75 64 erate,.frequency,.1.0.-.amplitud
c5a0 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6d 70 6c 69 74 75 64 65 20 3d e);..................amplitude.=
c5c0 20 30 2e 33 35 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 .0.35;.............{............
c5e0 20 57 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 74 20 .WHEN(."white.noise.is.added.at.
c600 33 35 25 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 35%".)..............}...........
c620 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 ......}.....................REQU
c640 49 52 45 28 20 61 63 74 75 61 6c 20 3c 20 6d 61 78 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 IRE(.actual.<.max.);............
c660 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3e 20 6d 69 6e 20 ..........REQUIRE(.actual.>.min.
c680 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 );......................CAPTURE(
c6a0 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 .actual.);.....................u
c6c0 69 6e 74 31 36 5f 74 20 6d 61 78 20 3d 20 65 78 70 65 63 74 65 64 20 2b 20 35 30 3b 00 20 20 20 int16_t.max.=.expected.+.50;....
c6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 69 6e 20 3d 20 .................uint16_t.min.=.
c700 65 78 70 65 63 74 65 64 20 2d 20 35 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 expected.-.50;..................
c720 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b ...actual.=.xttest_ftom(result);
c740 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 .................{..............
c760 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 ...THEN(."the.detected.F0.is.acc
c780 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 71 75 61 72 74 65 72 2d 74 6f 6e urate.to.the.nearest.quarter-ton
c7a0 65 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 e".)..................xtract_f0(
c7c0 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 table,.blocksize,.&samplerate,.&
c7e0 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f result);.................xttest_
c800 61 64 64 28 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 add(table,.noise,.blocksize);...
c820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e ..............xttest_gen_noise(n
c840 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 oise,.blocksize,.amplitude);....
c860 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 .............xttest_gen_sine(tab
c880 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 le,.blocksize,.samplerate,.frequ
c8a0 65 6e 63 79 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 ency,.1.0.-.amplitude);.........
c8c0 20 20 20 20 20 20 20 20 20 61 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 32 35 3b 00 20 20 20 20 20 .........amplitude.=.0.25;......
c8e0 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 77 68 69 74 .......{.............WHEN(."whit
c900 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 74 20 33 30 25 22 20 29 00 00 20 20 20 20 e.noise.is.added.at.30%".)......
c920 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 ........}.................}.....
c940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 ................REQUIRE(.actual.
c960 3c 20 6d 61 78 20 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 <.max.);......................RE
c980 51 55 49 52 45 28 20 61 63 74 75 61 6c 20 3e 20 6d 69 6e 20 29 3b 20 00 20 20 20 20 20 20 20 20 QUIRE(.actual.>.min.);..........
c9a0 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 ............CAPTURE(.actual.);..
c9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 61 78 20 ...................uint16_t.max.
c9e0 3d 20 65 78 70 65 63 74 65 64 20 2b 20 31 30 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.expected.+.100;...............
ca00 20 20 20 20 20 20 75 69 6e 74 31 36 5f 74 20 6d 69 6e 20 3d 20 65 78 70 65 63 74 65 64 20 2d 20 ......uint16_t.min.=.expected.-.
ca20 31 30 30 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 100;.....................actual.
ca40 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 =.xttest_ftom(result);..........
ca60 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 .......{.................THEN(."
ca80 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 the.detected.F0.is.accurate.to.t
caa0 68 65 20 6e 65 61 72 65 73 74 20 73 65 6d 69 74 6f 6e 65 22 20 29 00 00 20 20 20 20 20 20 20 20 he.nearest.semitone".)..........
cac0 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 ........xtract_f0(table,.blocksi
cae0 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 ze,.&samplerate,.&result);......
cb00 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 64 28 74 61 62 6c 65 2c 20 6e 6f 69 ...........xttest_add(table,.noi
cb20 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 se,.blocksize);.................
cb40 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a xttest_gen_noise(noise,.blocksiz
cb60 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 e,.amplitude);.................x
cb80 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c ttest_gen_sine(table,.blocksize,
cba0 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 31 2e 30 20 2d 20 61 6d .samplerate,.frequency,.1.0.-.am
cbc0 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6d 70 6c 69 plitude);..................ampli
cbe0 74 75 64 65 20 3d 20 30 2e 32 35 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 tude.=.0.25;.............{......
cc00 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 .......WHEN(."white.noise.is.add
cc20 65 64 20 61 74 20 32 35 25 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 ed.at.25%".)..............}.....
cc40 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............}...................
cc60 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 ..REQUIRE(actual.==.expected);..
cc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 ....................CAPTURE(.act
cca0 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 ual.);.....................actua
ccc0 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 l.=.xttest_ftom(result);........
cce0 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 .........{.................THEN(
cd00 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f ."the.detected.F0.is.accurate.to
cd20 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 .the.nearest.MIDI.cent".).......
cd40 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 ...........xtract_f0(table,.bloc
cd60 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 ksize,.&samplerate,.&result);...
cd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 64 28 74 61 62 6c 65 2c 20 ..............xttest_add(table,.
cda0 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 noise,.blocksize);..............
cdc0 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b ...xttest_gen_noise(noise,.block
cde0 73 69 7a 65 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 size,.amplitude);...............
ce00 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 ..xttest_gen_sine(table,.blocksi
ce20 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 31 2e 30 20 2d ze,.samplerate,.frequency,.1.0.-
ce40 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6d .amplitude);..................am
ce60 70 6c 69 74 75 64 65 20 3d 20 30 2e 32 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 plitude.=.0.2;.............{....
ce80 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 .........WHEN(."white.noise.is.a
cea0 64 64 65 64 20 61 74 20 32 30 25 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 dded.at.20%".)..............}...
cec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............}.................
cee0 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b ....REQUIRE(actual.==.expected);
cf00 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 ......................CAPTURE(.a
cf20 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 ctual.);.....................act
cf40 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 ual.=.xttest_ftom(result);......
cf60 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 ...........{.................THE
cf80 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 N(."the.detected.F0.is.accurate.
cfa0 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 to.the.nearest.MIDI.cent".).....
cfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c .............xtract_f0(table,.bl
cfe0 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 ocksize,.&samplerate,.&result);.
d000 61 64 00 00 33 00 00 00 d7 01 00 00 00 10 00 00 62 00 00 00 00 00 00 00 d8 0f 00 00 ca 0f 00 00 ad..3...........b...............
d020 c0 0f 00 00 bf 0f 00 00 62 0f 00 00 58 0f 00 00 34 0f 00 00 33 0f 00 00 e2 0e 00 00 a3 0e 00 00 ........b...X...4...3...........
d040 a2 0e 00 00 57 0e 00 00 49 0e 00 00 1b 0e 00 00 e8 0d 00 00 c5 0d 00 00 a0 0d 00 00 72 0d 00 00 ....W...I...................r...
d060 64 0d 00 00 5a 0d 00 00 59 0d 00 00 fa 0c 00 00 f0 0c 00 00 cc 0c 00 00 cb 0c 00 00 7a 0c 00 00 d...Z...Y...................z...
d080 3b 0c 00 00 3a 0c 00 00 e0 0b 00 00 d2 0b 00 00 a4 0b 00 00 55 0b 00 00 32 0b 00 00 0d 0b 00 00 ;...:...............U...2.......
d0a0 df 0a 00 00 d1 0a 00 00 c7 0a 00 00 c6 0a 00 00 c5 0a 00 00 5c 0a 00 00 52 0a 00 00 27 0a 00 00 ....................\...R...'...
d0c0 26 0a 00 00 d5 09 00 00 96 09 00 00 95 09 00 00 4a 09 00 00 3c 09 00 00 0e 09 00 00 db 08 00 00 &...............J...<...........
d0e0 b8 08 00 00 93 08 00 00 65 08 00 00 57 08 00 00 4d 08 00 00 4c 08 00 00 e4 07 00 00 da 07 00 00 ........e...W...M...L...........
d100 b0 07 00 00 8b 07 00 00 5c 07 00 00 3b 07 00 00 3a 07 00 00 0f 07 00 00 01 07 00 00 ac 06 00 00 ........\...;...:...............
d120 69 06 00 00 68 06 00 00 19 06 00 00 07 06 00 00 d5 05 00 00 ae 05 00 00 7c 05 00 00 6a 05 00 00 i...h...................|...j...
d140 5c 05 00 00 5b 05 00 00 ff 04 00 00 f1 04 00 00 cf 04 00 00 ce 04 00 00 79 04 00 00 36 04 00 00 \...[...................y...6...
d160 35 04 00 00 e6 03 00 00 d4 03 00 00 a2 03 00 00 7b 03 00 00 49 03 00 00 37 03 00 00 29 03 00 00 5...............{...I...7...)...
d180 28 03 00 00 d6 02 00 00 c8 02 00 00 a7 02 00 00 a6 02 00 00 4b 02 00 00 0c 02 00 00 d7 01 00 00 (...................K...........
d1a0 d6 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 20 ................................
d1e0 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 61 64 64 28 74 61 62 6c 65 2c 20 6e 6f 69 73 65 2c 20 .......xttest_add(table,.noise,.
d200 62 6c 6f 63 6b 73 69 7a 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 blocksize);.................xtte
d220 73 74 5f 67 65 6e 5f 6e 6f 69 73 65 28 6e 6f 69 73 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 61 st_gen_noise(noise,.blocksize,.a
d240 6d 70 6c 69 74 75 64 65 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 mplitude);.................xttes
d260 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d t_gen_sine(table,.blocksize,.sam
d280 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 31 2e 30 20 2d 20 61 6d 70 6c 69 74 plerate,.frequency,.1.0.-.amplit
d2a0 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6d 70 6c 69 74 75 64 65 ude);..................amplitude
d2c0 20 3d 20 30 2e 31 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 .=.0.1;.............{...........
d2e0 20 20 57 48 45 4e 28 20 22 77 68 69 74 65 20 6e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 61 74 ..WHEN(."white.noise.is.added.at
d300 20 31 30 25 22 20 29 20 2f 2f 20 4f 6e 6c 79 20 74 65 73 74 20 6e 6f 69 73 65 20 66 6f 72 20 6f .10%".).//.Only.test.noise.for.o
d320 6e 65 20 63 61 73 65 00 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 ne.case..............}..........
d340 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 .......}.....................REQ
d360 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 UIRE(actual.==.expected);.......
d380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 ...............CAPTURE(.actual.)
d3a0 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 ;.....................actual.=.x
d3c0 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 ttest_ftom(result);.............
d3e0 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 ....{.................THEN(."the
d400 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 .detected.F0.is.accurate.to.the.
d420 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 nearest.MIDI.cent".)............
d440 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 ......xtract_f0(table,.blocksize
d460 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 ,.&samplerate,.&result);........
d480 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 .........xttest_gen_sine(table,.
d4a0 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 blocksize,.samplerate,.frequency
d4c0 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 ,.amplitude);..................a
d4e0 6d 70 6c 69 74 75 64 65 20 3d 20 30 2e 30 31 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 mplitude.=.0.01;.............{..
d500 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 61 6d 70 6c 69 74 75 64 65 20 ...........WHEN(."the.amplitude.
d520 69 73 20 30 2e 30 31 22 20 29 20 2f 2f 20 4f 6e 6c 79 20 74 65 73 74 20 61 20 64 69 66 66 65 72 is.0.01".).//.Only.test.a.differ
d540 65 6e 74 20 61 6d 70 6c 69 74 75 64 65 20 66 6f 72 20 6f 6e 65 20 63 61 73 65 00 00 20 20 20 20 ent.amplitude.for.one.case......
d560 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 ........}.................}.....
d580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d ................REQUIRE(actual.=
d5a0 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.expected);....................
d5c0 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 ..CAPTURE(.actual.);............
d5e0 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 .........actual.=.xttest_ftom(re
d600 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 sult);.................{........
d620 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 .........THEN(."the.detected.F0.
d640 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 is.accurate.to.the.nearest.MIDI.
d660 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f cent".)..................xtract_
d680 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 f0(table,.blocksize,.&samplerate
d6a0 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 ,.&result);.................xtte
d6c0 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 st_gen_sine(table,.blocksize,.sa
d6e0 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b mplerate,.frequency,.amplitude);
d700 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e 28 .............{.............WHEN(
d720 20 22 74 68 65 20 61 6d 70 6c 69 74 75 64 65 20 69 73 20 31 2e 30 22 20 29 00 00 20 20 20 20 20 ."the.amplitude.is.1.0".).......
d740 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 .......CAPTURE(.expected.);.....
d760 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 ........expected.=.xttest_ftom(f
d780 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 6e 6f requency);.............double.no
d7a0 69 73 65 5b 62 6c 6f 63 6b 73 69 7a 65 5d 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 ise[blocksize];.............doub
d7c0 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 33 34 34 2e 35 33 31 32 35 3b 00 20 20 20 20 20 20 le.frequency.=.344.53125;.......
d7e0 20 20 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 ..{.........WHEN(."the.frequency
d800 20 69 73 20 33 34 34 2e 35 33 31 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 .is.344.53125.Hz".).//.period.of
d820 20 65 78 61 63 74 6c 79 20 31 32 38 20 73 61 6d 70 6c 65 73 3a 20 38 20 63 79 63 6c 65 73 20 69 .exactly.128.samples:.8.cycles.i
d840 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 n.the.block..........}..........
d860 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 ...}.................REQUIRE(act
d880 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 ual.==.expected);...............
d8a0 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 ...CAPTURE(.expected.);.........
d8c0 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 74 75 61 6c 20 29 3b 00 20 20 20 20 20 ........CAPTURE(.actual.);......
d8e0 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f ...........expected.=.xttest_fto
d900 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 m(frequency);.................ac
d920 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 tual.=.xttest_ftom(result);.....
d940 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 ........{.............THEN(."the
d960 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 75 72 61 74 65 20 74 6f 20 74 68 65 20 .detected.F0.is.accurate.to.the.
d980 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 29 00 00 20 20 20 20 20 20 20 20 20 20 nearest.MIDI.cent".)............
d9a0 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 ..xtract_f0(table,.blocksize,.&s
d9c0 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 amplerate,.&result);............
d9e0 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a .xttest_gen_sine(table,.blocksiz
da00 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 e,.samplerate,.frequency,.amplit
da20 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 72 65 71 75 65 ude);..............double.freque
da40 6e 63 79 20 3d 20 31 37 32 2e 32 36 35 36 32 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 ncy.=.172.265625;.........{.....
da60 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 31 37 32 2e ....WHEN(."the.frequency.is.172.
da80 32 36 35 36 32 35 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 65 78 61 63 74 6c 265625.Hz".).//.period.of.exactl
daa0 79 20 32 35 36 20 73 61 6d 70 6c 65 73 3a 20 34 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 y.256.samples:.4.cycles.in.the.b
dac0 6c 6f 63 6b 00 00 00 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 lock...........}.............}..
dae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d ...............REQUIRE(actual.==
db00 20 65 78 70 65 63 74 65 64 29 3b 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 .expected);..................CAP
db20 54 55 52 45 28 20 65 78 70 65 63 74 65 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 TURE(.expected.);...............
db40 20 20 43 41 50 54 55 52 45 28 20 72 65 73 75 6c 74 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 ..CAPTURE(.result.);............
db60 20 20 20 20 20 65 78 70 65 63 74 65 64 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 31 35 35 2e .....expected.=.xttest_ftom(155.
db80 32 38 31 36 39 30 31 34 29 3b 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 32 38 34 20 73 61 6d 70 28169014);.//.period.of.284.samp
dba0 6c 65 73 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 les.................actual.=.xtt
dbc0 65 73 74 5f 66 74 6f 6d 28 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 est_ftom(result);.............{.
dbe0 20 20 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 ............THEN(."the.detected.
dc00 46 30 20 69 73 20 71 75 61 6e 74 69 7a 65 64 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 77 F0.is.quantized.to.the.nearest.w
dc20 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 61 6d 70 6c 65 73 22 20 29 00 00 20 20 20 20 20 hole.number.of.samples".).......
dc40 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a .......xtract_f0(table,.blocksiz
dc60 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 e,.&samplerate,.&result);.......
dc80 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 62 6c 65 2c 20 62 6c 6f ......xttest_gen_sine(table,.blo
dca0 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 61 cksize,.samplerate,.frequency,.a
dcc0 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 66 mplitude);..............double.f
dce0 72 65 71 75 65 6e 63 79 20 3d 20 31 35 35 3b 00 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 requency.=.155;.........{.......
dd00 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 73 20 31 35 35 20 48 7a ..WHEN(."the.frequency.is.155.Hz
dd20 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 32 38 34 2e 35 32 20 73 61 6d 70 6c 65 73 3a ".).//.period.of.284.52.samples:
dd40 20 33 2e 36 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 20 20 20 20 20 20 .3.6.cycles.in.the.block........
dd60 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..}.............}...............
dd80 20 20 52 45 51 55 49 52 45 28 61 63 74 75 61 6c 20 3d 3d 20 65 78 70 65 63 74 65 64 29 3b 20 00 ..REQUIRE(actual.==.expected);..
dda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 65 78 70 65 63 74 65 ................CAPTURE(.expecte
ddc0 64 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 50 54 55 52 45 28 20 61 63 d.);.................CAPTURE(.ac
dde0 74 75 61 6c 20 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74 65 64 tual.);.................expected
de00 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 66 72 65 71 75 65 6e 63 79 29 3b 00 20 20 20 20 20 .=.xttest_ftom(frequency);......
de20 20 20 20 20 20 20 20 20 20 20 20 61 63 74 75 61 6c 20 3d 20 78 74 74 65 73 74 5f 66 74 6f 6d 28 ...........actual.=.xttest_ftom(
de40 72 65 73 75 6c 74 29 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 7b 00 20 20 20 20 20 20 20 20 20 result);.............{..........
de60 20 20 20 54 48 45 4e 28 20 22 74 68 65 20 64 65 74 65 63 74 65 64 20 46 30 20 69 73 20 61 63 63 ...THEN(."the.detected.F0.is.acc
de80 75 72 61 74 65 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 4d 49 44 49 20 63 65 6e 74 22 20 urate.to.the.nearest.MIDI.cent".
dea0 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 72 61 63 74 5f 66 30 28 74 61 62 6c 65 2c 20 )..............xtract_f0(table,.
dec0 62 6c 6f 63 6b 73 69 7a 65 2c 20 26 73 61 6d 70 6c 65 72 61 74 65 2c 20 26 72 65 73 75 6c 74 29 blocksize,.&samplerate,.&result)
dee0 3b 00 20 20 20 20 20 20 20 20 20 20 20 20 78 74 74 65 73 74 5f 67 65 6e 5f 73 69 6e 65 28 74 61 ;.............xttest_gen_sine(ta
df00 62 6c 65 2c 20 62 6c 6f 63 6b 73 69 7a 65 2c 20 73 61 6d 70 6c 65 72 61 74 65 2c 20 66 72 65 71 ble,.blocksize,.samplerate,.freq
df20 75 65 6e 63 79 2c 20 61 6d 70 6c 69 74 75 64 65 29 3b 00 00 20 20 20 20 20 20 20 20 20 20 20 20 uency,.amplitude);..............
df40 64 6f 75 62 6c 65 20 66 72 65 71 75 65 6e 63 79 20 3d 20 31 34 30 3b 00 20 20 20 20 20 20 20 20 double.frequency.=.140;.........
df60 7b 00 20 20 20 20 20 20 20 20 57 48 45 4e 28 20 22 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 69 {.........WHEN(."the.frequency.i
df80 73 20 31 34 30 20 48 7a 22 20 29 20 2f 2f 20 70 65 72 69 6f 64 20 6f 66 20 33 31 35 20 73 61 6d s.140.Hz".).//.period.of.315.sam
dfa0 70 6c 65 73 3a 20 33 2e 32 35 20 63 79 63 6c 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 63 6b 00 00 ples:.3.25.cycles.in.the.block..
dfc0 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 20 20 20 20 20 20 20 20 ........}.............}.........
dfe0 20 20 20 20 20 20 20 20 52 45 51 55 49 52 45 28 72 65 73 75 6c 74 20 3d 3d 20 30 2e 30 29 3b 00 ........REQUIRE(result.==.0.0);.