00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "osc.h"
00023 namespace osc{
00024
00025
00026
00027
00028
00029
00030 const int tableSize = 256;
00031
00032
00033
00034
00035
00036 shortfract co_h[tableSize]= {
00037 32767,
00038 32757,
00039 32728,
00040 32678,
00041 32609,
00042 32521,
00043 32412,
00044 32285,
00045 32137,
00046 31971,
00047 31785,
00048 31580,
00049 31356,
00050 31113,
00051 30852,
00052 30571,
00053 30273,
00054 29956,
00055 29621,
00056 29268,
00057 28898,
00058 28510,
00059 28105,
00060 27683,
00061 27245,
00062 26790,
00063 26319,
00064 25832,
00065 25329,
00066 24811,
00067 24279,
00068 23731,
00069 23170,
00070 22594,
00071 22005,
00072 21403,
00073 20787,
00074 20159,
00075 19519,
00076 18868,
00077 18204,
00078 17530,
00079 16846,
00080 16151,
00081 15446,
00082 14732,
00083 14010,
00084 13279,
00085 12539,
00086 11793,
00087 11039,
00088 10278,
00089 9512,
00090 8739,
00091 7962,
00092 7179,
00093 6393,
00094 5602,
00095 4808,
00096 4011,
00097 3212,
00098 2410,
00099 1608,
00100 804,
00101 0,
00102 -804,
00103 -1608,
00104 -2410,
00105 -3212,
00106 -4011,
00107 -4808,
00108 -5602,
00109 -6393,
00110 -7179,
00111 -7962,
00112 -8739,
00113 -9512,
00114 -10278,
00115 -11039,
00116 -11793,
00117 -12539,
00118 -13279,
00119 -14010,
00120 -14732,
00121 -15446,
00122 -16151,
00123 -16846,
00124 -17530,
00125 -18204,
00126 -18868,
00127 -19519,
00128 -20159,
00129 -20787,
00130 -21403,
00131 -22005,
00132 -22594,
00133 -23170,
00134 -23731,
00135 -24279,
00136 -24811,
00137 -25329,
00138 -25832,
00139 -26319,
00140 -26790,
00141 -27245,
00142 -27683,
00143 -28105,
00144 -28510,
00145 -28898,
00146 -29268,
00147 -29621,
00148 -29956,
00149 -30273,
00150 -30571,
00151 -30852,
00152 -31113,
00153 -31356,
00154 -31580,
00155 -31785,
00156 -31971,
00157 -32137,
00158 -32285,
00159 -32412,
00160 -32521,
00161 -32609,
00162 -32678,
00163 -32728,
00164 -32757,
00165 -32767,
00166 -32757,
00167 -32728,
00168 -32678,
00169 -32609,
00170 -32521,
00171 -32412,
00172 -32285,
00173 -32137,
00174 -31971,
00175 -31785,
00176 -31580,
00177 -31356,
00178 -31113,
00179 -30852,
00180 -30571,
00181 -30273,
00182 -29956,
00183 -29621,
00184 -29268,
00185 -28898,
00186 -28510,
00187 -28105,
00188 -27683,
00189 -27245,
00190 -26790,
00191 -26319,
00192 -25832,
00193 -25329,
00194 -24811,
00195 -24279,
00196 -23731,
00197 -23170,
00198 -22594,
00199 -22005,
00200 -21403,
00201 -20787,
00202 -20159,
00203 -19519,
00204 -18868,
00205 -18204,
00206 -17530,
00207 -16846,
00208 -16151,
00209 -15446,
00210 -14732,
00211 -14010,
00212 -13279,
00213 -12539,
00214 -11793,
00215 -11039,
00216 -10278,
00217 -9512,
00218 -8739,
00219 -7962,
00220 -7179,
00221 -6393,
00222 -5602,
00223 -4808,
00224 -4011,
00225 -3212,
00226 -2410,
00227 -1608,
00228 -804,
00229 0,
00230 804,
00231 1608,
00232 2410,
00233 3212,
00234 4011,
00235 4808,
00236 5602,
00237 6393,
00238 7179,
00239 7962,
00240 8739,
00241 9512,
00242 10278,
00243 11039,
00244 11793,
00245 12539,
00246 13279,
00247 14010,
00248 14732,
00249 15446,
00250 16151,
00251 16846,
00252 17530,
00253 18204,
00254 18868,
00255 19519,
00256 20159,
00257 20787,
00258 21403,
00259 22005,
00260 22594,
00261 23170,
00262 23731,
00263 24279,
00264 24811,
00265 25329,
00266 25832,
00267 26319,
00268 26790,
00269 27245,
00270 27683,
00271 28105,
00272 28510,
00273 28898,
00274 29268,
00275 29621,
00276 29956,
00277 30273,
00278 30571,
00279 30852,
00280 31113,
00281 31356,
00282 31580,
00283 31785,
00284 31971,
00285 32137,
00286 32285,
00287 32412,
00288 32521,
00289 32609,
00290 32678,
00291 32728,
00292 32757
00293 };
00294
00295
00296
00297
00298 shortfract co_l[tableSize]= {
00299 32767,
00300 32767,
00301 32767,
00302 32767,
00303 32767,
00304 32767,
00305 32767,
00306 32767,
00307 32767,
00308 32767,
00309 32767,
00310 32767,
00311 32767,
00312 32767,
00313 32767,
00314 32767,
00315 32767,
00316 32767,
00317 32767,
00318 32767,
00319 32767,
00320 32767,
00321 32767,
00322 32767,
00323 32767,
00324 32767,
00325 32767,
00326 32767,
00327 32767,
00328 32767,
00329 32767,
00330 32767,
00331 32767,
00332 32767,
00333 32767,
00334 32767,
00335 32767,
00336 32767,
00337 32767,
00338 32767,
00339 32767,
00340 32767,
00341 32767,
00342 32767,
00343 32767,
00344 32767,
00345 32767,
00346 32767,
00347 32767,
00348 32767,
00349 32767,
00350 32767,
00351 32767,
00352 32767,
00353 32767,
00354 32767,
00355 32767,
00356 32767,
00357 32766,
00358 32766,
00359 32766,
00360 32766,
00361 32766,
00362 32766,
00363 32766,
00364 32766,
00365 32766,
00366 32766,
00367 32766,
00368 32766,
00369 32766,
00370 32766,
00371 32766,
00372 32766,
00373 32766,
00374 32766,
00375 32766,
00376 32766,
00377 32766,
00378 32766,
00379 32766,
00380 32766,
00381 32766,
00382 32766,
00383 32766,
00384 32766,
00385 32766,
00386 32766,
00387 32766,
00388 32766,
00389 32766,
00390 32766,
00391 32766,
00392 32766,
00393 32766,
00394 32766,
00395 32766,
00396 32766,
00397 32766,
00398 32766,
00399 32765,
00400 32765,
00401 32765,
00402 32765,
00403 32765,
00404 32765,
00405 32765,
00406 32765,
00407 32765,
00408 32765,
00409 32765,
00410 32765,
00411 32765,
00412 32765,
00413 32765,
00414 32765,
00415 32765,
00416 32765,
00417 32765,
00418 32765,
00419 32765,
00420 32765,
00421 32765,
00422 32765,
00423 32765,
00424 32765,
00425 32765,
00426 32765,
00427 32765,
00428 32764,
00429 32764,
00430 32764,
00431 32764,
00432 32764,
00433 32764,
00434 32764,
00435 32764,
00436 32764,
00437 32764,
00438 32764,
00439 32764,
00440 32764,
00441 32764,
00442 32764,
00443 32764,
00444 32764,
00445 32764,
00446 32764,
00447 32764,
00448 32764,
00449 32764,
00450 32764,
00451 32764,
00452 32763,
00453 32763,
00454 32763,
00455 32763,
00456 32763,
00457 32763,
00458 32763,
00459 32763,
00460 32763,
00461 32763,
00462 32763,
00463 32763,
00464 32763,
00465 32763,
00466 32763,
00467 32763,
00468 32763,
00469 32763,
00470 32763,
00471 32763,
00472 32762,
00473 32762,
00474 32762,
00475 32762,
00476 32762,
00477 32762,
00478 32762,
00479 32762,
00480 32762,
00481 32762,
00482 32762,
00483 32762,
00484 32762,
00485 32762,
00486 32762,
00487 32762,
00488 32762,
00489 32762,
00490 32762,
00491 32761,
00492 32761,
00493 32761,
00494 32761,
00495 32761,
00496 32761,
00497 32761,
00498 32761,
00499 32761,
00500 32761,
00501 32761,
00502 32761,
00503 32761,
00504 32761,
00505 32761,
00506 32761,
00507 32760,
00508 32760,
00509 32760,
00510 32760,
00511 32760,
00512 32760,
00513 32760,
00514 32760,
00515 32760,
00516 32760,
00517 32760,
00518 32760,
00519 32760,
00520 32760,
00521 32760,
00522 32760,
00523 32759,
00524 32759,
00525 32759,
00526 32759,
00527 32759,
00528 32759,
00529 32759,
00530 32759,
00531 32759,
00532 32759,
00533 32759,
00534 32759,
00535 32759,
00536 32759,
00537 32758,
00538 32758,
00539 32758,
00540 32758,
00541 32758,
00542 32758,
00543 32758,
00544 32758,
00545 32758,
00546 32758,
00547 32758,
00548 32758,
00549 32758,
00550 32758,
00551 32757,
00552 32757,
00553 32757,
00554 32757
00555 };
00556
00557
00558
00559
00560 shortfract si_h[tableSize]= {
00561 0,
00562 804,
00563 1608,
00564 2410,
00565 3212,
00566 4011,
00567 4808,
00568 5602,
00569 6393,
00570 7179,
00571 7962,
00572 8739,
00573 9512,
00574 10278,
00575 11039,
00576 11793,
00577 12539,
00578 13279,
00579 14010,
00580 14732,
00581 15446,
00582 16151,
00583 16846,
00584 17530,
00585 18204,
00586 18868,
00587 19519,
00588 20159,
00589 20787,
00590 21403,
00591 22005,
00592 22594,
00593 23170,
00594 23731,
00595 24279,
00596 24811,
00597 25329,
00598 25832,
00599 26319,
00600 26790,
00601 27245,
00602 27683,
00603 28105,
00604 28510,
00605 28898,
00606 29268,
00607 29621,
00608 29956,
00609 30273,
00610 30571,
00611 30852,
00612 31113,
00613 31356,
00614 31580,
00615 31785,
00616 31971,
00617 32137,
00618 32285,
00619 32412,
00620 32521,
00621 32609,
00622 32678,
00623 32728,
00624 32757,
00625 32767,
00626 32757,
00627 32728,
00628 32678,
00629 32609,
00630 32521,
00631 32412,
00632 32285,
00633 32137,
00634 31971,
00635 31785,
00636 31580,
00637 31356,
00638 31113,
00639 30852,
00640 30571,
00641 30273,
00642 29956,
00643 29621,
00644 29268,
00645 28898,
00646 28510,
00647 28105,
00648 27683,
00649 27245,
00650 26790,
00651 26319,
00652 25832,
00653 25329,
00654 24811,
00655 24279,
00656 23731,
00657 23170,
00658 22594,
00659 22005,
00660 21403,
00661 20787,
00662 20159,
00663 19519,
00664 18868,
00665 18204,
00666 17530,
00667 16846,
00668 16151,
00669 15446,
00670 14732,
00671 14010,
00672 13279,
00673 12539,
00674 11793,
00675 11039,
00676 10278,
00677 9512,
00678 8739,
00679 7962,
00680 7179,
00681 6393,
00682 5602,
00683 4808,
00684 4011,
00685 3212,
00686 2410,
00687 1608,
00688 804,
00689 0,
00690 -804,
00691 -1608,
00692 -2410,
00693 -3212,
00694 -4011,
00695 -4808,
00696 -5602,
00697 -6393,
00698 -7179,
00699 -7962,
00700 -8739,
00701 -9512,
00702 -10278,
00703 -11039,
00704 -11793,
00705 -12539,
00706 -13279,
00707 -14010,
00708 -14732,
00709 -15446,
00710 -16151,
00711 -16846,
00712 -17530,
00713 -18204,
00714 -18868,
00715 -19519,
00716 -20159,
00717 -20787,
00718 -21403,
00719 -22005,
00720 -22594,
00721 -23170,
00722 -23731,
00723 -24279,
00724 -24811,
00725 -25329,
00726 -25832,
00727 -26319,
00728 -26790,
00729 -27245,
00730 -27683,
00731 -28105,
00732 -28510,
00733 -28898,
00734 -29268,
00735 -29621,
00736 -29956,
00737 -30273,
00738 -30571,
00739 -30852,
00740 -31113,
00741 -31356,
00742 -31580,
00743 -31785,
00744 -31971,
00745 -32137,
00746 -32285,
00747 -32412,
00748 -32521,
00749 -32609,
00750 -32678,
00751 -32728,
00752 -32757,
00753 -32767,
00754 -32757,
00755 -32728,
00756 -32678,
00757 -32609,
00758 -32521,
00759 -32412,
00760 -32285,
00761 -32137,
00762 -31971,
00763 -31785,
00764 -31580,
00765 -31356,
00766 -31113,
00767 -30852,
00768 -30571,
00769 -30273,
00770 -29956,
00771 -29621,
00772 -29268,
00773 -28898,
00774 -28510,
00775 -28105,
00776 -27683,
00777 -27245,
00778 -26790,
00779 -26319,
00780 -25832,
00781 -25329,
00782 -24811,
00783 -24279,
00784 -23731,
00785 -23170,
00786 -22594,
00787 -22005,
00788 -21403,
00789 -20787,
00790 -20159,
00791 -19519,
00792 -18868,
00793 -18204,
00794 -17530,
00795 -16846,
00796 -16151,
00797 -15446,
00798 -14732,
00799 -14010,
00800 -13279,
00801 -12539,
00802 -11793,
00803 -11039,
00804 -10278,
00805 -9512,
00806 -8739,
00807 -7962,
00808 -7179,
00809 -6393,
00810 -5602,
00811 -4808,
00812 -4011,
00813 -3212,
00814 -2410,
00815 -1608,
00816 -804
00817 };
00818
00819
00820
00821
00822 shortfract si_l[tableSize]= {
00823 0,
00824 3,
00825 6,
00826 9,
00827 13,
00828 16,
00829 19,
00830 22,
00831 25,
00832 28,
00833 31,
00834 35,
00835 38,
00836 41,
00837 44,
00838 47,
00839 50,
00840 53,
00841 57,
00842 60,
00843 63,
00844 66,
00845 69,
00846 72,
00847 75,
00848 79,
00849 82,
00850 85,
00851 88,
00852 91,
00853 94,
00854 97,
00855 101,
00856 104,
00857 107,
00858 110,
00859 113,
00860 116,
00861 119,
00862 123,
00863 126,
00864 129,
00865 132,
00866 135,
00867 138,
00868 141,
00869 145,
00870 148,
00871 151,
00872 154,
00873 157,
00874 160,
00875 163,
00876 166,
00877 170,
00878 173,
00879 176,
00880 179,
00881 182,
00882 185,
00883 188,
00884 192,
00885 195,
00886 198,
00887 201,
00888 204,
00889 207,
00890 210,
00891 214,
00892 217,
00893 220,
00894 223,
00895 226,
00896 229,
00897 232,
00898 236,
00899 239,
00900 242,
00901 245,
00902 248,
00903 251,
00904 254,
00905 258,
00906 261,
00907 264,
00908 267,
00909 270,
00910 273,
00911 276,
00912 280,
00913 283,
00914 286,
00915 289,
00916 292,
00917 295,
00918 298,
00919 302,
00920 305,
00921 308,
00922 311,
00923 314,
00924 317,
00925 320,
00926 324,
00927 327,
00928 330,
00929 333,
00930 336,
00931 339,
00932 342,
00933 346,
00934 349,
00935 352,
00936 355,
00937 358,
00938 361,
00939 364,
00940 368,
00941 371,
00942 374,
00943 377,
00944 380,
00945 383,
00946 386,
00947 390,
00948 393,
00949 396,
00950 399,
00951 402,
00952 405,
00953 408,
00954 412,
00955 415,
00956 418,
00957 421,
00958 424,
00959 427,
00960 430,
00961 434,
00962 437,
00963 440,
00964 443,
00965 446,
00966 449,
00967 452,
00968 456,
00969 459,
00970 462,
00971 465,
00972 468,
00973 471,
00974 474,
00975 477,
00976 481,
00977 484,
00978 487,
00979 490,
00980 493,
00981 496,
00982 499,
00983 503,
00984 506,
00985 509,
00986 512,
00987 515,
00988 518,
00989 521,
00990 525,
00991 528,
00992 531,
00993 534,
00994 537,
00995 540,
00996 543,
00997 547,
00998 550,
00999 553,
01000 556,
01001 559,
01002 562,
01003 565,
01004 569,
01005 572,
01006 575,
01007 578,
01008 581,
01009 584,
01010 587,
01011 591,
01012 594,
01013 597,
01014 600,
01015 603,
01016 606,
01017 609,
01018 613,
01019 616,
01020 619,
01021 622,
01022 625,
01023 628,
01024 631,
01025 635,
01026 638,
01027 641,
01028 644,
01029 647,
01030 650,
01031 653,
01032 657,
01033 660,
01034 663,
01035 666,
01036 669,
01037 672,
01038 675,
01039 679,
01040 682,
01041 685,
01042 688,
01043 691,
01044 694,
01045 697,
01046 701,
01047 704,
01048 707,
01049 710,
01050 713,
01051 716,
01052 719,
01053 722,
01054 726,
01055 729,
01056 732,
01057 735,
01058 738,
01059 741,
01060 744,
01061 748,
01062 751,
01063 754,
01064 757,
01065 760,
01066 763,
01067 766,
01068 770,
01069 773,
01070 776,
01071 779,
01072 782,
01073 785,
01074 788,
01075 792,
01076 795,
01077 798,
01078 801
01079 };
01080 }