diff --git a/Core/Inc/wavetable.h b/Core/Inc/wavetable.h new file mode 100644 index 0000000..f068ea6 --- /dev/null +++ b/Core/Inc/wavetable.h @@ -0,0 +1,1141 @@ +#ifndef __WAVETABLE_H__ +#define __WAVETABLE_H__ + +static const int16_t Wave_Sin[1024] = { + 0, 201, 402, 603, 804, 1005, 1206, 1406, 1607, 1808, + 2009, 2209, 2410, 2610, 2811, 3011, 3211, 3411, 3611, 3811, + 4011, 4210, 4409, 4608, 4807, 5006, 5205, 5403, 5601, 5799, + 5997, 6195, 6392, 6589, 6786, 6982, 7179, 7375, 7571, 7766, + 7961, 8156, 8351, 8545, 8739, 8932, 9126, 9319, 9511, 9703, + 9895, 10087, 10278, 10469, 10659, 10849, 11038, 11227, 11416, 11604, + 11792, 11980, 12166, 12353, 12539, 12724, 12909, 13094, 13278, 13462, + 13645, 13827, 14009, 14191, 14372, 14552, 14732, 14911, 15090, 15268, + 15446, 15623, 15799, 15975, 16150, 16325, 16499, 16672, 16845, 17017, + 17189, 17360, 17530, 17699, 17868, 18036, 18204, 18371, 18537, 18702, + 18867, 19031, 19194, 19357, 19519, 19680, 19840, 20000, 20159, 20317, + 20474, 20631, 20787, 20942, 21096, 21249, 21402, 21554, 21705, 21855, + 22004, 22153, 22301, 22448, 22594, 22739, 22883, 23027, 23169, 23311, + 23452, 23592, 23731, 23869, 24006, 24143, 24278, 24413, 24546, 24679, + 24811, 24942, 25072, 25201, 25329, 25456, 25582, 25707, 25831, 25954, + 26077, 26198, 26318, 26437, 26556, 26673, 26789, 26905, 27019, 27132, + 27244, 27355, 27466, 27575, 27683, 27790, 27896, 28001, 28105, 28208, + 28309, 28410, 28510, 28608, 28706, 28802, 28897, 28992, 29085, 29177, + 29268, 29358, 29446, 29534, 29621, 29706, 29790, 29873, 29955, 30036, + 30116, 30195, 30272, 30349, 30424, 30498, 30571, 30643, 30713, 30783, + 30851, 30918, 30984, 31049, 31113, 31175, 31236, 31297, 31356, 31413, + 31470, 31525, 31580, 31633, 31684, 31735, 31785, 31833, 31880, 31926, + 31970, 32014, 32056, 32097, 32137, 32176, 32213, 32249, 32284, 32318, + 32350, 32382, 32412, 32441, 32468, 32495, 32520, 32544, 32567, 32588, + 32609, 32628, 32646, 32662, 32678, 32692, 32705, 32717, 32727, 32736, + 32744, 32751, 32757, 32761, 32764, 32766, 32767, 32766, 32764, 32761, + 32757, 32751, 32744, 32736, 32727, 32717, 32705, 32692, 32678, 32662, + 32646, 32628, 32609, 32588, 32567, 32544, 32520, 32495, 32468, 32441, + 32412, 32382, 32350, 32318, 32284, 32249, 32213, 32176, 32137, 32097, + 32056, 32014, 31970, 31926, 31880, 31833, 31785, 31735, 31684, 31633, + 31580, 31525, 31470, 31413, 31356, 31297, 31236, 31175, 31113, 31049, + 30984, 30918, 30851, 30783, 30713, 30643, 30571, 30498, 30424, 30349, + 30272, 30195, 30116, 30036, 29955, 29873, 29790, 29706, 29621, 29534, + 29446, 29358, 29268, 29177, 29085, 28992, 28897, 28802, 28706, 28608, + 28510, 28410, 28309, 28208, 28105, 28001, 27896, 27790, 27683, 27575, + 27466, 27355, 27244, 27132, 27019, 26905, 26789, 26673, 26556, 26437, + 26318, 26198, 26077, 25954, 25831, 25707, 25582, 25456, 25329, 25201, + 25072, 24942, 24811, 24679, 24546, 24413, 24278, 24143, 24006, 23869, + 23731, 23592, 23452, 23311, 23169, 23027, 22883, 22739, 22594, 22448, + 22301, 22153, 22004, 21855, 21705, 21554, 21402, 21249, 21096, 20942, + 20787, 20631, 20474, 20317, 20159, 20000, 19840, 19680, 19519, 19357, + 19194, 19031, 18867, 18702, 18537, 18371, 18204, 18036, 17868, 17699, + 17530, 17360, 17189, 17017, 16845, 16672, 16499, 16325, 16150, 15975, + 15799, 15623, 15446, 15268, 15090, 14911, 14732, 14552, 14372, 14191, + 14009, 13827, 13645, 13462, 13278, 13094, 12909, 12724, 12539, 12353, + 12166, 11980, 11792, 11604, 11416, 11227, 11038, 10849, 10659, 10469, + 10278, 10087, 9895, 9703, 9511, 9319, 9126, 8932, 8739, 8545, + 8351, 8156, 7961, 7766, 7571, 7375, 7179, 6982, 6786, 6589, + 6392, 6195, 5997, 5799, 5601, 5403, 5205, 5006, 4807, 4608, + 4409, 4210, 4011, 3811, 3611, 3411, 3211, 3011, 2811, 2610, + 2410, 2209, 2009, 1808, 1607, 1406, 1206, 1005, 804, 603, + 402, 201, 0, -201, -402, -603, -804, -1005, -1206, -1406, + -1607, -1808, -2009, -2209, -2410, -2610, -2811, -3011, -3211, -3411, + -3611, -3811, -4011, -4210, -4409, -4608, -4807, -5006, -5205, -5403, + -5601, -5799, -5997, -6195, -6392, -6589, -6786, -6982, -7179, -7375, + -7571, -7766, -7961, -8156, -8351, -8545, -8739, -8932, -9126, -9319, + -9511, -9703, -9895, -10087, -10278, -10469, -10659, -10849, -11038, -11227, + -11416, -11604, -11792, -11980, -12166, -12353, -12539, -12724, -12909, -13094, + -13278, -13462, -13645, -13827, -14009, -14191, -14372, -14552, -14732, -14911, + -15090, -15268, -15446, -15623, -15799, -15975, -16150, -16325, -16499, -16672, + -16845, -17017, -17189, -17360, -17530, -17699, -17868, -18036, -18204, -18371, + -18537, -18702, -18867, -19031, -19194, -19357, -19519, -19680, -19840, -20000, + -20159, -20317, -20474, -20631, -20787, -20942, -21096, -21249, -21402, -21554, + -21705, -21855, -22004, -22153, -22301, -22448, -22594, -22739, -22883, -23027, + -23169, -23311, -23452, -23592, -23731, -23869, -24006, -24143, -24278, -24413, + -24546, -24679, -24811, -24942, -25072, -25201, -25329, -25456, -25582, -25707, + -25831, -25954, -26077, -26198, -26318, -26437, -26556, -26673, -26789, -26905, + -27019, -27132, -27244, -27355, -27466, -27575, -27683, -27790, -27896, -28001, + -28105, -28208, -28309, -28410, -28510, -28608, -28706, -28802, -28897, -28992, + -29085, -29177, -29268, -29358, -29446, -29534, -29621, -29706, -29790, -29873, + -29955, -30036, -30116, -30195, -30272, -30349, -30424, -30498, -30571, -30643, + -30713, -30783, -30851, -30918, -30984, -31049, -31113, -31175, -31236, -31297, + -31356, -31413, -31470, -31525, -31580, -31633, -31684, -31735, -31785, -31833, + -31880, -31926, -31970, -32014, -32056, -32097, -32137, -32176, -32213, -32249, + -32284, -32318, -32350, -32382, -32412, -32441, -32468, -32495, -32520, -32544, + -32567, -32588, -32609, -32628, -32646, -32662, -32678, -32692, -32705, -32717, + -32727, -32736, -32744, -32751, -32757, -32761, -32764, -32766, -32767, -32766, + -32764, -32761, -32757, -32751, -32744, -32736, -32727, -32717, -32705, -32692, + -32678, -32662, -32646, -32628, -32609, -32588, -32567, -32544, -32520, -32495, + -32468, -32441, -32412, -32382, -32350, -32318, -32284, -32249, -32213, -32176, + -32137, -32097, -32056, -32014, -31970, -31926, -31880, -31833, -31785, -31735, + -31684, -31633, -31580, -31525, -31470, -31413, -31356, -31297, -31236, -31175, + -31113, -31049, -30984, -30918, -30851, -30783, -30713, -30643, -30571, -30498, + -30424, -30349, -30272, -30195, -30116, -30036, -29955, -29873, -29790, -29706, + -29621, -29534, -29446, -29358, -29268, -29177, -29085, -28992, -28897, -28802, + -28706, -28608, -28510, -28410, -28309, -28208, -28105, -28001, -27896, -27790, + -27683, -27575, -27466, -27355, -27244, -27132, -27019, -26905, -26789, -26673, + -26556, -26437, -26318, -26198, -26077, -25954, -25831, -25707, -25582, -25456, + -25329, -25201, -25072, -24942, -24811, -24679, -24546, -24413, -24278, -24143, + -24006, -23869, -23731, -23592, -23452, -23311, -23169, -23027, -22883, -22739, + -22594, -22448, -22301, -22153, -22004, -21855, -21705, -21554, -21402, -21249, + -21096, -20942, -20787, -20631, -20474, -20317, -20159, -20000, -19840, -19680, + -19519, -19357, -19194, -19031, -18867, -18702, -18537, -18371, -18204, -18036, + -17868, -17699, -17530, -17360, -17189, -17017, -16845, -16672, -16499, -16325, + -16150, -15975, -15799, -15623, -15446, -15268, -15090, -14911, -14732, -14552, + -14372, -14191, -14009, -13827, -13645, -13462, -13278, -13094, -12909, -12724, + -12539, -12353, -12166, -11980, -11792, -11604, -11416, -11227, -11038, -10849, + -10659, -10469, -10278, -10087, -9895, -9703, -9511, -9319, -9126, -8932, + -8739, -8545, -8351, -8156, -7961, -7766, -7571, -7375, -7179, -6982, + -6786, -6589, -6392, -6195, -5997, -5799, -5601, -5403, -5205, -5006, + -4807, -4608, -4409, -4210, -4011, -3811, -3611, -3411, -3211, -3011, + -2811, -2610, -2410, -2209, -2009, -1808, -1607, -1406, -1206, -1005, + -804, -603, -402, -201 +}; + + +static const int16_t Wave_Organ[1024] = { +// SIN(x) + 0.7*SIN(2*x) + 0.7/2*SIN(4*x) +// + normalized to 32767 + 0 + ,522 + ,1044 + ,1566 + ,2088 + ,2608 + ,3128 + ,3647 + ,4166 + ,4682 + ,5198 + ,5712 + ,6224 + ,6735 + ,7244 + ,7750 + ,8255 + ,8757 + ,9257 + ,9753 + ,10248 + ,10739 + ,11227 + ,11712 + ,12194 + ,12672 + ,13147 + ,13618 + ,14086 + ,14549 + ,15008 + ,15463 + ,15914 + ,16361 + ,16803 + ,17240 + ,17672 + ,18100 + ,18523 + ,18940 + ,19353 + ,19760 + ,20162 + ,20559 + ,20950 + ,21335 + ,21715 + ,22089 + ,22457 + ,22819 + ,23175 + ,23525 + ,23869 + ,24207 + ,24539 + ,24864 + ,25183 + ,25495 + ,25801 + ,26101 + ,26394 + ,26680 + ,26960 + ,27233 + ,27500 + ,27759 + ,28012 + ,28258 + ,28498 + ,28730 + ,28956 + ,29175 + ,29387 + ,29593 + ,29791 + ,29983 + ,30168 + ,30346 + ,30518 + ,30682 + ,30840 + ,30991 + ,31135 + ,31273 + ,31404 + ,31529 + ,31647 + ,31758 + ,31863 + ,31962 + ,32054 + ,32139 + ,32219 + ,32292 + ,32359 + ,32420 + ,32475 + ,32524 + ,32567 + ,32604 + ,32635 + ,32661 + ,32681 + ,32695 + ,32704 + ,32708 + ,32706 + ,32699 + ,32687 + ,32670 + ,32648 + ,32621 + ,32589 + ,32553 + ,32512 + ,32467 + ,32417 + ,32363 + ,32305 + ,32243 + ,32177 + ,32107 + ,32033 + ,31956 + ,31875 + ,31791 + ,31704 + ,31613 + ,31519 + ,31422 + ,31323 + ,31221 + ,31116 + ,31008 + ,30899 + ,30787 + ,30672 + ,30556 + ,30438 + ,30318 + ,30196 + ,30073 + ,29948 + ,29821 + ,29694 + ,29565 + ,29435 + ,29305 + ,29173 + ,29041 + ,28908 + ,28775 + ,28641 + ,28507 + ,28373 + ,28238 + ,28104 + ,27969 + ,27835 + ,27701 + ,27568 + ,27435 + ,27302 + ,27170 + ,27039 + ,26908 + ,26779 + ,26650 + ,26523 + ,26397 + ,26271 + ,26147 + ,26025 + ,25904 + ,25784 + ,25666 + ,25549 + ,25434 + ,25321 + ,25210 + ,25100 + ,24992 + ,24887 + ,24783 + ,24681 + ,24581 + ,24483 + ,24388 + ,24294 + ,24203 + ,24114 + ,24027 + ,23942 + ,23860 + ,23780 + ,23702 + ,23627 + ,23554 + ,23483 + ,23415 + ,23349 + ,23285 + ,23223 + ,23164 + ,23108 + ,23053 + ,23001 + ,22951 + ,22904 + ,22858 + ,22815 + ,22774 + ,22735 + ,22699 + ,22664 + ,22632 + ,22601 + ,22573 + ,22547 + ,22522 + ,22499 + ,22479 + ,22459 + ,22442 + ,22426 + ,22412 + ,22400 + ,22389 + ,22379 + ,22371 + ,22364 + ,22358 + ,22354 + ,22350 + ,22348 + ,22346 + ,22346 + ,22346 + ,22347 + ,22349 + ,22351 + ,22354 + ,22357 + ,22360 + ,22364 + ,22368 + ,22372 + ,22376 + ,22380 + ,22384 + ,22388 + ,22391 + ,22394 + ,22397 + ,22398 + ,22400 + ,22400 + ,22400 + ,22398 + ,22396 + ,22392 + ,22388 + ,22382 + ,22374 + ,22366 + ,22355 + ,22343 + ,22330 + ,22314 + ,22297 + ,22278 + ,22257 + ,22233 + ,22208 + ,22180 + ,22150 + ,22117 + ,22082 + ,22045 + ,22004 + ,21962 + ,21916 + ,21867 + ,21816 + ,21761 + ,21704 + ,21643 + ,21580 + ,21513 + ,21443 + ,21369 + ,21292 + ,21212 + ,21128 + ,21041 + ,20950 + ,20856 + ,20758 + ,20656 + ,20551 + ,20442 + ,20329 + ,20212 + ,20092 + ,19967 + ,19839 + ,19707 + ,19571 + ,19431 + ,19288 + ,19140 + ,18988 + ,18833 + ,18673 + ,18510 + ,18342 + ,18171 + ,17996 + ,17817 + ,17634 + ,17447 + ,17257 + ,17063 + ,16864 + ,16662 + ,16457 + ,16247 + ,16034 + ,15818 + ,15598 + ,15374 + ,15147 + ,14916 + ,14682 + ,14445 + ,14205 + ,13961 + ,13714 + ,13464 + ,13211 + ,12955 + ,12696 + ,12435 + ,12170 + ,11903 + ,11634 + ,11362 + ,11087 + ,10811 + ,10532 + ,10250 + ,9967 + ,9682 + ,9395 + ,9106 + ,8816 + ,8524 + ,8231 + ,7936 + ,7640 + ,7343 + ,7044 + ,6745 + ,6445 + ,6145 + ,5843 + ,5542 + ,5239 + ,4937 + ,4634 + ,4332 + ,4029 + ,3727 + ,3425 + ,3124 + ,2823 + ,2522 + ,2223 + ,1924 + ,1627 + ,1330 + ,1035 + ,742 + ,450 + ,159 + ,-130 + ,-416 + ,-701 + ,-984 + ,-1264 + ,-1542 + ,-1818 + ,-2091 + ,-2361 + ,-2629 + ,-2894 + ,-3155 + ,-3413 + ,-3669 + ,-3920 + ,-4169 + ,-4413 + ,-4654 + ,-4891 + ,-5125 + ,-5354 + ,-5579 + ,-5800 + ,-6017 + ,-6229 + ,-6437 + ,-6640 + ,-6839 + ,-7033 + ,-7222 + ,-7406 + ,-7585 + ,-7760 + ,-7929 + ,-8092 + ,-8251 + ,-8404 + ,-8552 + ,-8694 + ,-8831 + ,-8963 + ,-9088 + ,-9208 + ,-9323 + ,-9431 + ,-9534 + ,-9630 + ,-9721 + ,-9806 + ,-9885 + ,-9958 + ,-10025 + ,-10086 + ,-10141 + ,-10190 + ,-10233 + ,-10270 + ,-10300 + ,-10325 + ,-10343 + ,-10355 + ,-10361 + ,-10361 + ,-10355 + ,-10343 + ,-10325 + ,-10301 + ,-10271 + ,-10234 + ,-10192 + ,-10144 + ,-10090 + ,-10031 + ,-9965 + ,-9894 + ,-9817 + ,-9734 + ,-9645 + ,-9552 + ,-9452 + ,-9347 + ,-9237 + ,-9122 + ,-9001 + ,-8875 + ,-8744 + ,-8608 + ,-8467 + ,-8322 + ,-8171 + ,-8016 + ,-7857 + ,-7692 + ,-7524 + ,-7351 + ,-7174 + ,-6993 + ,-6808 + ,-6619 + ,-6427 + ,-6230 + ,-6030 + ,-5827 + ,-5621 + ,-5411 + ,-5198 + ,-4982 + ,-4764 + ,-4542 + ,-4319 + ,-4092 + ,-3864 + ,-3633 + ,-3400 + ,-3165 + ,-2929 + ,-2691 + ,-2451 + ,-2210 + ,-1967 + ,-1724 + ,-1479 + ,-1234 + ,-988 + ,-742 + ,-495 + ,-247 + ,0 + ,247 + ,495 + ,742 + ,988 + ,1234 + ,1479 + ,1724 + ,1967 + ,2210 + ,2451 + ,2691 + ,2929 + ,3165 + ,3400 + ,3633 + ,3864 + ,4092 + ,4319 + ,4542 + ,4764 + ,4982 + ,5198 + ,5411 + ,5621 + ,5827 + ,6030 + ,6230 + ,6427 + ,6619 + ,6808 + ,6993 + ,7174 + ,7351 + ,7524 + ,7692 + ,7857 + ,8016 + ,8171 + ,8322 + ,8467 + ,8608 + ,8744 + ,8875 + ,9001 + ,9122 + ,9237 + ,9347 + ,9452 + ,9552 + ,9645 + ,9734 + ,9817 + ,9894 + ,9965 + ,10031 + ,10090 + ,10144 + ,10192 + ,10234 + ,10271 + ,10301 + ,10325 + ,10343 + ,10355 + ,10361 + ,10361 + ,10355 + ,10343 + ,10325 + ,10300 + ,10270 + ,10233 + ,10190 + ,10141 + ,10086 + ,10025 + ,9958 + ,9885 + ,9806 + ,9721 + ,9630 + ,9534 + ,9431 + ,9323 + ,9208 + ,9088 + ,8963 + ,8831 + ,8694 + ,8552 + ,8404 + ,8251 + ,8092 + ,7929 + ,7760 + ,7585 + ,7406 + ,7222 + ,7033 + ,6839 + ,6640 + ,6437 + ,6229 + ,6017 + ,5800 + ,5579 + ,5354 + ,5125 + ,4891 + ,4654 + ,4413 + ,4169 + ,3920 + ,3669 + ,3413 + ,3155 + ,2894 + ,2629 + ,2361 + ,2091 + ,1818 + ,1542 + ,1264 + ,984 + ,701 + ,416 + ,130 + ,-159 + ,-450 + ,-742 + ,-1035 + ,-1330 + ,-1627 + ,-1924 + ,-2223 + ,-2522 + ,-2823 + ,-3124 + ,-3425 + ,-3727 + ,-4029 + ,-4332 + ,-4634 + ,-4937 + ,-5239 + ,-5542 + ,-5843 + ,-6145 + ,-6445 + ,-6745 + ,-7044 + ,-7343 + ,-7640 + ,-7936 + ,-8231 + ,-8524 + ,-8816 + ,-9106 + ,-9395 + ,-9682 + ,-9967 + ,-10250 + ,-10532 + ,-10811 + ,-11087 + ,-11362 + ,-11634 + ,-11903 + ,-12170 + ,-12435 + ,-12696 + ,-12955 + ,-13211 + ,-13464 + ,-13714 + ,-13961 + ,-14205 + ,-14445 + ,-14682 + ,-14916 + ,-15147 + ,-15374 + ,-15598 + ,-15818 + ,-16034 + ,-16247 + ,-16457 + ,-16662 + ,-16864 + ,-17063 + ,-17257 + ,-17447 + ,-17634 + ,-17817 + ,-17996 + ,-18171 + ,-18342 + ,-18510 + ,-18673 + ,-18833 + ,-18988 + ,-19140 + ,-19288 + ,-19431 + ,-19571 + ,-19707 + ,-19839 + ,-19967 + ,-20092 + ,-20212 + ,-20329 + ,-20442 + ,-20551 + ,-20656 + ,-20758 + ,-20856 + ,-20950 + ,-21041 + ,-21128 + ,-21212 + ,-21292 + ,-21369 + ,-21443 + ,-21513 + ,-21580 + ,-21643 + ,-21704 + ,-21761 + ,-21816 + ,-21867 + ,-21916 + ,-21962 + ,-22004 + ,-22045 + ,-22082 + ,-22117 + ,-22150 + ,-22180 + ,-22208 + ,-22233 + ,-22257 + ,-22278 + ,-22297 + ,-22314 + ,-22330 + ,-22343 + ,-22355 + ,-22366 + ,-22374 + ,-22382 + ,-22388 + ,-22392 + ,-22396 + ,-22398 + ,-22400 + ,-22400 + ,-22400 + ,-22398 + ,-22397 + ,-22394 + ,-22391 + ,-22388 + ,-22384 + ,-22380 + ,-22376 + ,-22372 + ,-22368 + ,-22364 + ,-22360 + ,-22357 + ,-22354 + ,-22351 + ,-22349 + ,-22347 + ,-22346 + ,-22346 + ,-22346 + ,-22348 + ,-22350 + ,-22354 + ,-22358 + ,-22364 + ,-22371 + ,-22379 + ,-22389 + ,-22400 + ,-22412 + ,-22426 + ,-22442 + ,-22459 + ,-22479 + ,-22499 + ,-22522 + ,-22547 + ,-22573 + ,-22601 + ,-22632 + ,-22664 + ,-22699 + ,-22735 + ,-22774 + ,-22815 + ,-22858 + ,-22904 + ,-22951 + ,-23001 + ,-23053 + ,-23108 + ,-23164 + ,-23223 + ,-23285 + ,-23349 + ,-23415 + ,-23483 + ,-23554 + ,-23627 + ,-23702 + ,-23780 + ,-23860 + ,-23942 + ,-24027 + ,-24114 + ,-24203 + ,-24294 + ,-24388 + ,-24483 + ,-24581 + ,-24681 + ,-24783 + ,-24887 + ,-24992 + ,-25100 + ,-25210 + ,-25321 + ,-25434 + ,-25549 + ,-25666 + ,-25784 + ,-25904 + ,-26025 + ,-26147 + ,-26271 + ,-26397 + ,-26523 + ,-26650 + ,-26779 + ,-26908 + ,-27039 + ,-27170 + ,-27302 + ,-27435 + ,-27568 + ,-27701 + ,-27835 + ,-27969 + ,-28104 + ,-28238 + ,-28373 + ,-28507 + ,-28641 + ,-28775 + ,-28908 + ,-29041 + ,-29173 + ,-29305 + ,-29435 + ,-29565 + ,-29694 + ,-29821 + ,-29948 + ,-30073 + ,-30196 + ,-30318 + ,-30438 + ,-30556 + ,-30672 + ,-30787 + ,-30899 + ,-31008 + ,-31116 + ,-31221 + ,-31323 + ,-31422 + ,-31519 + ,-31613 + ,-31704 + ,-31791 + ,-31875 + ,-31956 + ,-32033 + ,-32107 + ,-32177 + ,-32243 + ,-32305 + ,-32363 + ,-32417 + ,-32467 + ,-32512 + ,-32553 + ,-32589 + ,-32621 + ,-32648 + ,-32670 + ,-32687 + ,-32699 + ,-32706 + ,-32708 + ,-32704 + ,-32695 + ,-32681 + ,-32661 + ,-32635 + ,-32604 + ,-32567 + ,-32524 + ,-32475 + ,-32420 + ,-32359 + ,-32292 + ,-32219 + ,-32139 + ,-32054 + ,-31962 + ,-31863 + ,-31758 + ,-31647 + ,-31529 + ,-31404 + ,-31273 + ,-31135 + ,-30991 + ,-30840 + ,-30682 + ,-30518 + ,-30346 + ,-30168 + ,-29983 + ,-29791 + ,-29593 + ,-29387 + ,-29175 + ,-28956 + ,-28730 + ,-28498 + ,-28258 + ,-28012 + ,-27759 + ,-27500 + ,-27233 + ,-26960 + ,-26680 + ,-26394 + ,-26101 + ,-25801 + ,-25495 + ,-25183 + ,-24864 + ,-24539 + ,-24207 + ,-23869 + ,-23525 + ,-23175 + ,-22819 + ,-22457 + ,-22089 + ,-21715 + ,-21335 + ,-20950 + ,-20559 + ,-20162 + ,-19760 + ,-19353 + ,-18940 + ,-18523 + ,-18100 + ,-17672 + ,-17240 + ,-16803 + ,-16361 + ,-15914 + ,-15463 + ,-15008 + ,-14549 + ,-14086 + ,-13618 + ,-13147 + ,-12672 + ,-12194 + ,-11712 + ,-11227 + ,-10739 + ,-10248 + ,-9753 + ,-9257 + ,-8757 + ,-8255 + ,-7750 + ,-7244 + ,-6735 + ,-6224 + ,-5712 + ,-5198 + ,-4682 + ,-4166 + ,-3647 + ,-3128 + ,-2608 + ,-2088 + ,-1566 + ,-1044 + ,-522 +}; + +#endif + diff --git a/Core/Src/main.c b/Core/Src/main.c index edd9b9d..f3ddd2b 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -21,6 +21,7 @@ /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ +#include #include #include @@ -31,6 +32,7 @@ #include "usart2_dma.h" #include "usart3_dma.h" #include "uart5_it.h" +#include "wavetable.h" /* USER CODE END Includes */ @@ -66,6 +68,9 @@ LL_DMA_LinkNodeTypeDef Node_GPDMA1_Channel1; uint32_t I2S2RxDmaBuf[I2S2_RXDMA_BUF_SAMPLE_CNT][2] = {0}; uint32_t I2S2TxDmaBuf[I2S2_TXDMA_BUF_SAMPLE_CNT][2] = {0}; +uint8_t ChSel = 0; +uint8_t Vol = 0; + /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ @@ -207,15 +212,35 @@ void TLV320_AIC3204_Init() { TlvWriteReg(CODEC_A, TLV_PAGE_0, 72, 0x01); } -static uint32_t sound_read_index = 0; void Fill_I2S_Buffer(uint32_t *buf, uint32_t start_sample, uint32_t sample_count) { for (uint32_t i = 0; i < sample_count; i++) { - int8_t s = 0; - if (sound_read_index < Sound_DE_len) { - s = Sound_DE[sound_read_index++]; + int16_t pcmsample = 0; + switch (ChSel) { + case 0: + case 1: + case 2: { + static uint16_t Phase = 0; + pcmsample = Wave_Sin[Phase] / 4; // sine waveform + uint16_t phase_inc = (ChSel == 0) ? 4 : ((ChSel == 1) ? 8 : 16); // different frequency for different channel selection + Phase = (Phase + phase_inc) % ARRAY_COUNT(Wave_Sin); + }break; + case 3: + case 4: + case 5: { + static uint16_t Phase = 0; + pcmsample = Wave_Organ[Phase] / 4; // organ waveform + uint16_t phase_inc = (ChSel == 3) ? 4 : ((ChSel == 4) ? 8 : 16); // different frequency for different channel selection + Phase = (Phase + phase_inc) % ARRAY_COUNT(Wave_Organ); + }break; + case 6: { + static uint32_t SoundIdx = 0; + int8_t s = Sound_DE[SoundIdx++]; + if (SoundIdx >= ARRAY_COUNT(Sound_DE)) SoundIdx = 0; + pcmsample = s << 8; // 8-bit PCM in MSB + }break; } - int32_t frame = ((int32_t) s) << 24; // 8-bit PCM in MSB + int32_t frame = pcmsample << 16; // convert to 32-bit sample with 16-bit left justified uint32_t pos = (start_sample + i) * 2; // Stereo: L,R buf[pos + 0] = frame/4; // Left buf[pos + 1] = frame/4; // Right @@ -368,29 +393,27 @@ int main(void) DispPutDigit(3, ' ', dot); } - static uint8_t AudioRun = 0; int16_t ch = Uart5_GetByte(); if (ch != -1) { // if data received char c = ch; - DispPutDigit(0, c, 0); if (c == 'a') { printf("I2S RX buf:\n"); for (size_t i = 0; i < I2S2_RXDMA_BUF_SAMPLE_CNT; i++) { printf("%d;%d\n", I2S2RxDmaBuf[i][0]/65536, I2S2RxDmaBuf[i][1]/65536); } } else if (c == ' ') { - AudioRun = 1; - sound_read_index = 0; } else if (c == 'd') { TLV320_AIC3204_DumpRegs(); } + if (isdigit(c)) { + ChSel = c - '0'; + DispPutDigit(0, c, 0); + } } Usart2_DMA_Task(); // handle USART2 DMA rx/tx Usart3_DMA_Task(); // handle USART3 DMA rx/tx - if (AudioRun) { - Audio_Task(); // handle audio data feeding to I2S Tx buffer - } + Audio_Task(); // handle audio data feeding to I2S Tx buffer /* USER CODE END WHILE */