Lower sounds must have a greater amplitude in order to have the same

energy
This commit is contained in:
Bertrand Songis
2014-02-17 15:19:05 +01:00
parent 408d0ef26d
commit 502ea0e921
2 changed files with 108 additions and 107 deletions
+107 -106
View File
@@ -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; i<points; i++) {
int16_t sample = sineValues[int(toneIdx)] * toneVolumes[2+volume];
int16_t sample = sineValues[int(toneIdx)] / context.state.tone.volume;
mix(&buffer->data[i], sample, fade);
toneIdx += context.state.tone.step;
if ((unsigned int)toneIdx >= DIM(sineValues))