From 7164375b7598b45c7e6449d6a85c36c699d8c956 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 17 Feb 2014 15:27:15 +0100 Subject: [PATCH] 2 harmonics added to the sine wave --- radio/src/audio_arm.cpp | 206 ++++++++++++++++++++-------------------- radio/util/sinus.py | 14 +++ 2 files changed, 117 insertions(+), 103 deletions(-) create mode 100644 radio/util/sinus.py diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 45b53ba67..55c216afa 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -41,109 +41,109 @@ extern OS_MutexID audioMutex; const int16_t sineValues[] = { - 0, 201, 402, 603, 804, 1005, 1206, 1406, 1607, 1808, - 2009, 2209, 2410, 2610, 2811, 3011, 3211, 3411, 3611, 3811, - 4011, 4210, 4409, 4609, 4807, 5006, 5205, 5403, 5601, 5799, - 5997, 6195, 6392, 6589, 6786, 6983, 7179, 7375, 7571, 7766, - 7961, 8156, 8351, 8545, 8739, 8933, 9126, 9319, 9511, 9704, - 9895, 10087, 10278, 10469, 10659, 10849, 11039, 11228, 11416, 11605, - 11792, 11980, 12167, 12353, 12539, 12725, 12910, 13094, 13278, 13462, - 13645, 13827, 14009, 14191, 14372, 14552, 14732, 14911, 15090, 15268, - 15446, 15623, 15799, 15975, 16151, 16325, 16499, 16673, 16845, 17017, - 17189, 17360, 17530, 17700, 17868, 18037, 18204, 18371, 18537, 18703, - 18867, 19031, 19195, 19357, 19519, 19680, 19841, 20000, 20159, 20317, - 20475, 20631, 20787, 20942, 21096, 21250, 21402, 21554, 21705, 21855, - 22005, 22153, 22301, 22448, 22594, 22739, 22884, 23027, 23170, 23311, - 23452, 23592, 23731, 23869, 24007, 24143, 24279, 24413, 24547, 24680, - 24811, 24942, 25072, 25201, 25329, 25456, 25582, 25707, 25832, 25955, - 26077, 26198, 26319, 26438, 26556, 26673, 26790, 26905, 27019, 27132, - 27245, 27356, 27466, 27575, 27683, 27790, 27896, 28001, 28105, 28208, - 28310, 28410, 28510, 28609, 28706, 28803, 28898, 28992, 29085, 29177, - 29268, 29358, 29447, 29534, 29621, 29706, 29791, 29874, 29956, 30037, - 30117, 30195, 30273, 30349, 30424, 30498, 30571, 30643, 30714, 30783, - 30852, 30919, 30985, 31050, 31113, 31176, 31237, 31297, 31356, 31414, - 31470, 31526, 31580, 31633, 31685, 31736, 31785, 31833, 31880, 31926, - 31971, 32014, 32057, 32098, 32137, 32176, 32213, 32250, 32285, 32318, - 32351, 32382, 32412, 32441, 32469, 32495, 32521, 32545, 32567, 32589, - 32609, 32628, 32646, 32663, 32678, 32692, 32705, 32717, 32728, 32737, - 32745, 32752, 32757, 32761, 32765, 32766, 32767, 32766, 32765, 32761, - 32757, 32752, 32745, 32737, 32728, 32717, 32705, 32692, 32678, 32663, - 32646, 32628, 32609, 32589, 32567, 32545, 32521, 32495, 32469, 32441, - 32412, 32382, 32351, 32318, 32285, 32250, 32213, 32176, 32137, 32098, - 32057, 32014, 31971, 31926, 31880, 31833, 31785, 31736, 31685, 31633, - 31580, 31526, 31470, 31414, 31356, 31297, 31237, 31176, 31113, 31050, - 30985, 30919, 30852, 30783, 30714, 30643, 30571, 30498, 30424, 30349, - 30273, 30195, 30117, 30037, 29956, 29874, 29791, 29706, 29621, 29534, - 29447, 29358, 29268, 29177, 29085, 28992, 28898, 28803, 28706, 28609, - 28510, 28410, 28310, 28208, 28105, 28001, 27896, 27790, 27683, 27575, - 27466, 27356, 27245, 27132, 27019, 26905, 26790, 26673, 26556, 26438, - 26319, 26198, 26077, 25955, 25832, 25707, 25582, 25456, 25329, 25201, - 25072, 24942, 24811, 24680, 24547, 24413, 24279, 24143, 24007, 23869, - 23731, 23592, 23452, 23311, 23170, 23027, 22884, 22739, 22594, 22448, - 22301, 22153, 22005, 21855, 21705, 21554, 21402, 21250, 21096, 20942, - 20787, 20631, 20475, 20317, 20159, 20000, 19841, 19680, 19519, 19357, - 19195, 19031, 18867, 18703, 18537, 18371, 18204, 18037, 17868, 17700, - 17530, 17360, 17189, 17017, 16845, 16673, 16499, 16325, 16151, 15975, - 15799, 15623, 15446, 15268, 15090, 14911, 14732, 14552, 14372, 14191, - 14009, 13827, 13645, 13462, 13278, 13094, 12910, 12725, 12539, 12353, - 12167, 11980, 11792, 11605, 11416, 11228, 11039, 10849, 10659, 10469, - 10278, 10087, 9895, 9704, 9511, 9319, 9126, 8933, 8739, 8545, - 8351, 8156, 7961, 7766, 7571, 7375, 7179, 6983, 6786, 6589, - 6392, 6195, 5997, 5799, 5601, 5403, 5205, 5006, 4807, 4609, - 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, -4609, -4807, -5006, -5205, -5403, - -5601, -5799, -5997, -6195, -6392, -6589, -6786, -6983, -7179, -7375, - -7571, -7766, -7961, -8156, -8351, -8545, -8739, -8933, -9126, -9319, - -9511, -9704, -9895, -10087, -10278, -10469, -10659, -10849, -11039, -11228, - -11416, -11605, -11792, -11980, -12167, -12353, -12539, -12725, -12910, -13094, - -13278, -13462, -13645, -13827, -14009, -14191, -14372, -14552, -14732, -14911, - -15090, -15268, -15446, -15623, -15799, -15975, -16151, -16325, -16499, -16673, - -16845, -17017, -17189, -17360, -17530, -17700, -17868, -18037, -18204, -18371, - -18537, -18703, -18867, -19031, -19195, -19357, -19519, -19680, -19841, -20000, - -20159, -20317, -20475, -20631, -20787, -20942, -21096, -21250, -21402, -21554, - -21705, -21855, -22005, -22153, -22301, -22448, -22594, -22739, -22884, -23027, - -23170, -23311, -23452, -23592, -23731, -23869, -24007, -24143, -24279, -24413, - -24547, -24680, -24811, -24942, -25072, -25201, -25329, -25456, -25582, -25707, - -25832, -25955, -26077, -26198, -26319, -26438, -26556, -26673, -26790, -26905, - -27019, -27132, -27245, -27356, -27466, -27575, -27683, -27790, -27896, -28001, - -28105, -28208, -28310, -28410, -28510, -28609, -28706, -28803, -28898, -28992, - -29085, -29177, -29268, -29358, -29447, -29534, -29621, -29706, -29791, -29874, - -29956, -30037, -30117, -30195, -30273, -30349, -30424, -30498, -30571, -30643, - -30714, -30783, -30852, -30919, -30985, -31050, -31113, -31176, -31237, -31297, - -31356, -31414, -31470, -31526, -31580, -31633, -31685, -31736, -31785, -31833, - -31880, -31926, -31971, -32014, -32057, -32098, -32137, -32176, -32213, -32250, - -32285, -32318, -32351, -32382, -32412, -32441, -32469, -32495, -32521, -32545, - -32567, -32589, -32609, -32628, -32646, -32663, -32678, -32692, -32705, -32717, - -32728, -32737, -32745, -32752, -32757, -32761, -32765, -32766, -32767, -32766, - -32765, -32761, -32757, -32752, -32745, -32737, -32728, -32717, -32705, -32692, - -32678, -32663, -32646, -32628, -32609, -32589, -32567, -32545, -32521, -32495, - -32469, -32441, -32412, -32382, -32351, -32318, -32285, -32250, -32213, -32176, - -32137, -32098, -32057, -32014, -31971, -31926, -31880, -31833, -31785, -31736, - -31685, -31633, -31580, -31526, -31470, -31414, -31356, -31297, -31237, -31176, - -31113, -31050, -30985, -30919, -30852, -30783, -30714, -30643, -30571, -30498, - -30424, -30349, -30273, -30195, -30117, -30037, -29956, -29874, -29791, -29706, - -29621, -29534, -29447, -29358, -29268, -29177, -29085, -28992, -28898, -28803, - -28706, -28609, -28510, -28410, -28310, -28208, -28105, -28001, -27896, -27790, - -27683, -27575, -27466, -27356, -27245, -27132, -27019, -26905, -26790, -26673, - -26556, -26438, -26319, -26198, -26077, -25955, -25832, -25707, -25582, -25456, - -25329, -25201, -25072, -24942, -24811, -24680, -24547, -24413, -24279, -24143, - -24007, -23869, -23731, -23592, -23452, -23311, -23170, -23027, -22884, -22739, - -22594, -22448, -22301, -22153, -22005, -21855, -21705, -21554, -21402, -21250, - -21096, -20942, -20787, -20631, -20475, -20317, -20159, -20000, -19841, -19680, - -19519, -19357, -19195, -19031, -18867, -18703, -18537, -18371, -18204, -18037, - -17868, -17700, -17530, -17360, -17189, -17017, -16845, -16673, -16499, -16325, - -16151, -15975, -15799, -15623, -15446, -15268, -15090, -14911, -14732, -14552, - -14372, -14191, -14009, -13827, -13645, -13462, -13278, -13094, -12910, -12725, - -12539, -12353, -12167, -11980, -11792, -11605, -11416, -11228, -11039, -10849, - -10659, -10469, -10278, -10087, -9895, -9704, -9511, -9319, -9126, -8933, - -8739, -8545, -8351, -8156, -7961, -7766, -7571, -7375, -7179, -6983, - -6786, -6589, -6392, -6195, -5997, -5799, -5601, -5403, -5205, -5006, - -4807, -4609, -4409, -4210, -4011, -3811, -3611, -3411, -3211, -3011, - -2811, -2610, -2410, -2209, -2009, -1808, -1607, -1406, -1206, -1005, - -804, -603, -402, -201, + 0, 207, 414, 621, 829, 1036, 1243, 1450, 1657, 1864, + 2071, 2278, 2485, 2691, 2898, 3104, 3310, 3516, 3722, 3928, + 4133, 4338, 4543, 4748, 4953, 5157, 5361, 5565, 5769, 5972, + 6175, 6378, 6580, 6783, 6984, 7186, 7387, 7588, 7788, 7988, + 8188, 8387, 8586, 8785, 8983, 9180, 9378, 9574, 9771, 9967, + 10162, 10357, 10551, 10745, 10939, 11132, 11324, 11516, 11707, 11898, + 12088, 12278, 12467, 12656, 12844, 13031, 13218, 13404, 13589, 13774, + 13959, 14142, 14325, 14507, 14689, 14870, 15050, 15230, 15409, 15587, + 15764, 15941, 16117, 16293, 16467, 16641, 16814, 16986, 17158, 17329, + 17498, 17668, 17836, 18004, 18170, 18336, 18502, 18666, 18829, 18992, + 19154, 19315, 19475, 19634, 19793, 19950, 20107, 20262, 20417, 20571, + 20724, 20876, 21028, 21178, 21327, 21476, 21623, 21770, 21916, 22060, + 22204, 22347, 22489, 22630, 22770, 22909, 23047, 23184, 23320, 23455, + 23589, 23722, 23854, 23985, 24115, 24244, 24372, 24499, 24624, 24749, + 24873, 24996, 25118, 25239, 25358, 25477, 25595, 25711, 25827, 25941, + 26054, 26167, 26278, 26388, 26497, 26605, 26712, 26818, 26923, 27026, + 27129, 27231, 27331, 27430, 27529, 27626, 27722, 27817, 27910, 28003, + 28095, 28185, 28275, 28363, 28450, 28536, 28621, 28705, 28788, 28869, + 28950, 29029, 29107, 29184, 29260, 29335, 29409, 29481, 29553, 29623, + 29692, 29760, 29827, 29893, 29958, 30021, 30084, 30145, 30205, 30264, + 30322, 30378, 30434, 30488, 30542, 30594, 30645, 30694, 30743, 30791, + 30837, 30882, 30927, 30970, 31011, 31052, 31092, 31130, 31167, 31204, + 31239, 31272, 31305, 31337, 31367, 31397, 31425, 31452, 31478, 31502, + 31526, 31549, 31570, 31590, 31609, 31627, 31644, 31660, 31674, 31688, + 31700, 31711, 31721, 31730, 31738, 31744, 31750, 31754, 31757, 31760, + 31761, 31760, 31759, 31757, 31753, 31749, 31743, 31736, 31728, 31719, + 31709, 31698, 31685, 31672, 31657, 31641, 31624, 31606, 31587, 31567, + 31546, 31524, 31500, 31475, 31450, 31423, 31395, 31366, 31336, 31305, + 31273, 31239, 31205, 31169, 31133, 31095, 31056, 31016, 30975, 30933, + 30890, 30846, 30801, 30754, 30707, 30659, 30609, 30558, 30507, 30454, + 30400, 30345, 30289, 30232, 30174, 30115, 30055, 29994, 29932, 29868, + 29804, 29738, 29672, 29605, 29536, 29466, 29396, 29324, 29252, 29178, + 29103, 29027, 28951, 28873, 28794, 28714, 28633, 28552, 28469, 28385, + 28300, 28214, 28127, 28039, 27950, 27861, 27770, 27678, 27585, 27491, + 27396, 27301, 27204, 27106, 27007, 26908, 26807, 26705, 26603, 26499, + 26395, 26289, 26183, 26076, 25967, 25858, 25748, 25637, 25525, 25412, + 25298, 25183, 25067, 24951, 24833, 24715, 24595, 24475, 24354, 24232, + 24109, 23985, 23860, 23735, 23608, 23481, 23353, 23223, 23093, 22963, + 22831, 22698, 22565, 22431, 22296, 22160, 22023, 21885, 21747, 21608, + 21468, 21327, 21185, 21043, 20899, 20755, 20611, 20465, 20319, 20171, + 20023, 19875, 19725, 19575, 19424, 19272, 19120, 18967, 18813, 18658, + 18503, 18347, 18190, 18032, 17874, 17715, 17556, 17395, 17234, 17073, + 16910, 16747, 16584, 16420, 16255, 16089, 15923, 15756, 15589, 15421, + 15252, 15083, 14913, 14743, 14572, 14400, 14228, 14055, 13882, 13708, + 13534, 13359, 13183, 13007, 12831, 12654, 12476, 12298, 12120, 11941, + 11761, 11581, 11401, 11220, 11039, 10857, 10675, 10492, 10309, 10125, + 9941, 9757, 9572, 9387, 9202, 9016, 8830, 8643, 8456, 8269, + 8081, 7894, 7705, 7517, 7328, 7139, 6949, 6759, 6569, 6379, + 6189, 5998, 5807, 5615, 5424, 5232, 5040, 4848, 4656, 4463, + 4270, 4077, 3884, 3691, 3498, 3304, 3110, 2917, 2723, 2529, + 2334, 2140, 1946, 1752, 1557, 1362, 1168, 973, 779, 584, + 389, 194, 0, -194, -389, -584, -779, -973, -1168, -1362, + -1557, -1752, -1946, -2140, -2334, -2529, -2723, -2917, -3110, -3304, + -3498, -3691, -3884, -4077, -4270, -4463, -4656, -4848, -5040, -5232, + -5424, -5615, -5807, -5998, -6189, -6379, -6569, -6759, -6949, -7139, + -7328, -7517, -7705, -7894, -8081, -8269, -8456, -8643, -8830, -9016, + -9202, -9387, -9572, -9757, -9941, -10125, -10309, -10492, -10675, -10857, + -11039, -11220, -11401, -11581, -11761, -11941, -12120, -12298, -12476, -12654, + -12831, -13007, -13183, -13359, -13534, -13708, -13882, -14055, -14228, -14400, + -14572, -14743, -14913, -15083, -15252, -15421, -15589, -15756, -15923, -16089, + -16255, -16420, -16584, -16747, -16910, -17073, -17234, -17395, -17556, -17715, + -17874, -18032, -18190, -18347, -18503, -18658, -18813, -18967, -19120, -19272, + -19424, -19575, -19725, -19875, -20023, -20171, -20319, -20465, -20611, -20755, + -20899, -21043, -21185, -21327, -21468, -21608, -21747, -21885, -22023, -22160, + -22296, -22431, -22565, -22698, -22831, -22963, -23093, -23223, -23353, -23481, + -23608, -23735, -23860, -23985, -24109, -24232, -24354, -24475, -24595, -24715, + -24833, -24951, -25067, -25183, -25298, -25412, -25525, -25637, -25748, -25858, + -25967, -26076, -26183, -26289, -26395, -26499, -26603, -26705, -26807, -26908, + -27007, -27106, -27204, -27301, -27396, -27491, -27585, -27678, -27770, -27861, + -27950, -28039, -28127, -28214, -28300, -28385, -28469, -28552, -28633, -28714, + -28794, -28873, -28951, -29027, -29103, -29178, -29252, -29324, -29396, -29466, + -29536, -29605, -29672, -29738, -29804, -29868, -29932, -29994, -30055, -30115, + -30174, -30232, -30289, -30345, -30400, -30454, -30507, -30558, -30609, -30659, + -30707, -30754, -30801, -30846, -30890, -30933, -30975, -31016, -31056, -31095, + -31133, -31169, -31205, -31239, -31273, -31305, -31336, -31366, -31395, -31423, + -31450, -31475, -31500, -31524, -31546, -31567, -31587, -31606, -31624, -31641, + -31657, -31672, -31685, -31698, -31709, -31719, -31728, -31736, -31743, -31749, + -31753, -31757, -31759, -31760, -31761, -31760, -31757, -31754, -31750, -31744, + -31738, -31730, -31721, -31711, -31700, -31688, -31674, -31660, -31644, -31627, + -31609, -31590, -31570, -31549, -31526, -31502, -31478, -31452, -31425, -31397, + -31367, -31337, -31305, -31272, -31239, -31204, -31167, -31130, -31092, -31052, + -31011, -30970, -30927, -30882, -30837, -30791, -30743, -30694, -30645, -30594, + -30542, -30488, -30434, -30378, -30322, -30264, -30205, -30145, -30084, -30021, + -29958, -29893, -29827, -29760, -29692, -29623, -29553, -29481, -29409, -29335, + -29260, -29184, -29107, -29029, -28950, -28869, -28788, -28705, -28621, -28536, + -28450, -28363, -28275, -28185, -28095, -28003, -27910, -27817, -27722, -27626, + -27529, -27430, -27331, -27231, -27129, -27026, -26923, -26818, -26712, -26605, + -26497, -26388, -26278, -26167, -26054, -25941, -25827, -25711, -25595, -25477, + -25358, -25239, -25118, -24996, -24873, -24749, -24624, -24499, -24372, -24244, + -24115, -23985, -23854, -23722, -23589, -23455, -23320, -23184, -23047, -22909, + -22770, -22630, -22489, -22347, -22204, -22060, -21916, -21770, -21623, -21476, + -21327, -21178, -21028, -20876, -20724, -20571, -20417, -20262, -20107, -19950, + -19793, -19634, -19475, -19315, -19154, -18992, -18829, -18666, -18502, -18336, + -18170, -18004, -17836, -17668, -17498, -17329, -17158, -16986, -16814, -16641, + -16467, -16293, -16117, -15941, -15764, -15587, -15409, -15230, -15050, -14870, + -14689, -14507, -14325, -14142, -13959, -13774, -13589, -13404, -13218, -13031, + -12844, -12656, -12467, -12278, -12088, -11898, -11707, -11516, -11324, -11132, + -10939, -10745, -10551, -10357, -10162, -9967, -9771, -9574, -9378, -9180, + -8983, -8785, -8586, -8387, -8188, -7988, -7788, -7588, -7387, -7186, + -6984, -6783, -6580, -6378, -6175, -5972, -5769, -5565, -5361, -5157, + -4953, -4748, -4543, -4338, -4133, -3928, -3722, -3516, -3310, -3104, + -2898, -2691, -2485, -2278, -2071, -1864, -1657, -1450, -1243, -1036, + -829, -621, -414, -207, }; #if defined(SDCARD) diff --git a/radio/util/sinus.py b/radio/util/sinus.py new file mode 100644 index 000000000..0eeb135f1 --- /dev/null +++ b/radio/util/sinus.py @@ -0,0 +1,14 @@ +#!/bin/env python + +import math + +samples = 1024 +amplitudes = (63999, 1024, 512) + +for i in range(samples): + sample = 0.0 + for harmonic, amplitude in enumerate(amplitudes): + sample += math.sin(math.pi*2*i*(harmonic+1)/samples) * amplitude / 2 + print "%d," % int(sample), + if i % 10 == 9: + print