From 502ea0e9215e35ddb0848ac14fde944b2619d395 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 17 Feb 2014 15:19:05 +0100 Subject: [PATCH] Lower sounds must have a greater amplitude in order to have the same energy --- radio/src/audio_arm.cpp | 213 ++++++++++++++++++++-------------------- radio/src/audio_arm.h | 2 +- 2 files changed, 108 insertions(+), 107 deletions(-) diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index b656ead9c..45b53ba67 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -41,113 +41,111 @@ extern OS_MutexID audioMutex; const int16_t sineValues[] = { - 0, 6, 12, 18, 25, 31, 37, 43, 50, 56, - 62, 69, 75, 81, 87, 94, 100, 106, 112, 119, - 125, 131, 137, 144, 150, 156, 162, 168, 175, 181, - 187, 193, 199, 205, 212, 218, 224, 230, 236, 242, - 248, 254, 260, 267, 273, 279, 285, 291, 297, 303, - 309, 315, 321, 327, 333, 339, 344, 350, 356, 362, - 368, 374, 380, 386, 391, 397, 403, 409, 414, 420, - 426, 432, 437, 443, 449, 454, 460, 466, 471, 477, - 482, 488, 493, 499, 504, 510, 515, 521, 526, 531, - 537, 542, 547, 553, 558, 563, 568, 574, 579, 584, - 589, 594, 599, 604, 609, 615, 620, 625, 629, 634, - 639, 644, 649, 654, 659, 664, 668, 673, 678, 683, - 687, 692, 696, 701, 706, 710, 715, 719, 724, 728, - 732, 737, 741, 745, 750, 754, 758, 762, 767, 771, - 775, 779, 783, 787, 791, 795, 799, 803, 807, 811, - 814, 818, 822, 826, 829, 833, 837, 840, 844, 847, - 851, 854, 858, 861, 865, 868, 871, 875, 878, 881, - 884, 887, 890, 894, 897, 900, 903, 906, 908, 911, - 914, 917, 920, 922, 925, 928, 930, 933, 936, 938, - 941, 943, 946, 948, 950, 953, 955, 957, 959, 962, - 964, 966, 968, 970, 972, 974, 976, 978, 979, 981, - 983, 985, 986, 988, 990, 991, 993, 994, 996, 997, - 999, 1000, 1001, 1003, 1004, 1005, 1006, 1007, 1008, 1009, - 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1017, 1018, - 1019, 1019, 1020, 1020, 1021, 1021, 1022, 1022, 1022, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1022, 1022, 1022, 1021, 1021, 1020, - 1020, 1019, 1019, 1018, 1017, 1017, 1016, 1015, 1014, 1013, - 1012, 1011, 1010, 1009, 1008, 1007, 1006, 1005, 1004, 1003, - 1001, 1000, 999, 997, 996, 994, 993, 991, 990, 988, - 986, 985, 983, 981, 979, 978, 976, 974, 972, 970, - 968, 966, 964, 962, 959, 957, 955, 953, 950, 948, - 946, 943, 941, 938, 936, 933, 930, 928, 925, 922, - 920, 917, 914, 911, 908, 906, 903, 900, 897, 894, - 890, 887, 884, 881, 878, 875, 871, 868, 865, 861, - 858, 854, 851, 847, 844, 840, 837, 833, 829, 826, - 822, 818, 814, 811, 807, 803, 799, 795, 791, 787, - 783, 779, 775, 771, 767, 762, 758, 754, 750, 745, - 741, 737, 732, 728, 724, 719, 715, 710, 706, 701, - 696, 692, 687, 683, 678, 673, 668, 664, 659, 654, - 649, 644, 639, 634, 629, 625, 620, 615, 609, 604, - 599, 594, 589, 584, 579, 574, 568, 563, 558, 553, - 547, 542, 537, 531, 526, 521, 515, 510, 504, 499, - 493, 488, 482, 477, 471, 466, 460, 454, 449, 443, - 437, 432, 426, 420, 414, 409, 403, 397, 391, 386, - 380, 374, 368, 362, 356, 350, 344, 339, 333, 327, - 321, 315, 309, 303, 297, 291, 285, 279, 273, 267, - 260, 254, 248, 242, 236, 230, 224, 218, 212, 205, - 199, 193, 187, 181, 175, 168, 162, 156, 150, 144, - 137, 131, 125, 119, 112, 106, 100, 94, 87, 81, - 75, 69, 62, 56, 50, 43, 37, 31, 25, 18, - 12, 6, 0, -6, -12, -18, -25, -31, -37, -43, - -50, -56, -62, -69, -75, -81, -87, -94, -100, -106, - -112, -119, -125, -131, -137, -144, -150, -156, -162, -168, - -175, -181, -187, -193, -199, -205, -212, -218, -224, -230, - -236, -242, -248, -254, -260, -267, -273, -279, -285, -291, - -297, -303, -309, -315, -321, -327, -333, -339, -344, -350, - -356, -362, -368, -374, -380, -386, -391, -397, -403, -409, - -414, -420, -426, -432, -437, -443, -449, -454, -460, -466, - -471, -477, -482, -488, -493, -499, -504, -510, -515, -521, - -526, -531, -537, -542, -547, -553, -558, -563, -568, -574, - -579, -584, -589, -594, -599, -604, -609, -615, -620, -625, - -629, -634, -639, -644, -649, -654, -659, -664, -668, -673, - -678, -683, -687, -692, -696, -701, -706, -710, -715, -719, - -724, -728, -732, -737, -741, -745, -750, -754, -758, -762, - -767, -771, -775, -779, -783, -787, -791, -795, -799, -803, - -807, -811, -814, -818, -822, -826, -829, -833, -837, -840, - -844, -847, -851, -854, -858, -861, -865, -868, -871, -875, - -878, -881, -884, -887, -890, -894, -897, -900, -903, -906, - -908, -911, -914, -917, -920, -922, -925, -928, -930, -933, - -936, -938, -941, -943, -946, -948, -950, -953, -955, -957, - -959, -962, -964, -966, -968, -970, -972, -974, -976, -978, - -979, -981, -983, -985, -986, -988, -990, -991, -993, -994, - -996, -997, -999, -1000, -1001, -1003, -1004, -1005, -1006, -1007, - -1008, -1009, -1010, -1011, -1012, -1013, -1014, -1015, -1016, -1017, - -1017, -1018, -1019, -1019, -1020, -1020, -1021, -1021, -1022, -1022, - -1022, -1023, -1023, -1023, -1023, -1023, -1023, -1023, -1024, -1023, - -1023, -1023, -1023, -1023, -1023, -1023, -1022, -1022, -1022, -1021, - -1021, -1020, -1020, -1019, -1019, -1018, -1017, -1017, -1016, -1015, - -1014, -1013, -1012, -1011, -1010, -1009, -1008, -1007, -1006, -1005, - -1004, -1003, -1001, -1000, -999, -997, -996, -994, -993, -991, - -990, -988, -986, -985, -983, -981, -979, -978, -976, -974, - -972, -970, -968, -966, -964, -962, -959, -957, -955, -953, - -950, -948, -946, -943, -941, -938, -936, -933, -930, -928, - -925, -922, -920, -917, -914, -911, -908, -906, -903, -900, - -897, -894, -890, -887, -884, -881, -878, -875, -871, -868, - -865, -861, -858, -854, -851, -847, -844, -840, -837, -833, - -829, -826, -822, -818, -814, -811, -807, -803, -799, -795, - -791, -787, -783, -779, -775, -771, -767, -762, -758, -754, - -750, -745, -741, -737, -732, -728, -724, -719, -715, -710, - -706, -701, -696, -692, -687, -683, -678, -673, -668, -664, - -659, -654, -649, -644, -639, -634, -629, -625, -620, -615, - -609, -604, -599, -594, -589, -584, -579, -574, -568, -563, - -558, -553, -547, -542, -537, -531, -526, -521, -515, -510, - -504, -499, -493, -488, -482, -477, -471, -466, -460, -454, - -449, -443, -437, -432, -426, -420, -414, -409, -403, -397, - -391, -386, -380, -374, -368, -362, -356, -350, -344, -339, - -333, -327, -321, -315, -309, -303, -297, -291, -285, -279, - -273, -267, -260, -254, -248, -242, -236, -230, -224, -218, - -212, -205, -199, -193, -187, -181, -175, -168, -162, -156, - -150, -144, -137, -131, -125, -119, -112, -106, -100, -94, - -87, -81, -75, -69, -62, -56, -50, -43, -37, -31, - -25, -18, -12, -6, + 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, }; -const unsigned int toneVolumes[] = { 2, 4, 8, 12, 16 }; - #if defined(SDCARD) const char * audioFilenames[] = { "tada", @@ -541,6 +539,8 @@ int AudioQueue::mixWav(AudioContext &context, AudioBuffer *buffer, int volume, u } #endif +const unsigned int toneVolumes[] = { 2, 4, 8, 12, 16 }; + int AudioQueue::mixBeep(AudioContext &context, AudioBuffer *buffer, int volume, unsigned int fade) { AudioFragment & fragment = context.fragment; @@ -553,6 +553,7 @@ int AudioQueue::mixBeep(AudioContext &context, AudioBuffer *buffer, int volume, if (fragment.tone.freq) { context.state.tone.step = double(DIM(sineValues)*fragment.tone.freq) / AUDIO_SAMPLE_RATE; + context.state.tone.volume = (fragment.tone.freq * fragment.tone.freq * 32) / (110 * 110 * toneVolumes[2+volume]); if (fragment.tone.freqIncr) fragment.tone.freq += AUDIO_BUFFER_DURATION * fragment.tone.freqIncr; else @@ -577,7 +578,7 @@ int AudioQueue::mixBeep(AudioContext &context, AudioBuffer *buffer, int volume, } for (int i=0; idata[i], sample, fade); toneIdx += context.state.tone.step; if ((unsigned int)toneIdx >= DIM(sineValues)) diff --git a/radio/src/audio_arm.h b/radio/src/audio_arm.h index fadceeb59..6191da79f 100644 --- a/radio/src/audio_arm.h +++ b/radio/src/audio_arm.h @@ -106,7 +106,7 @@ class AudioContext { struct { double step; double idx; - double volume; + int volume; } tone; } state;