#if 1
/*********
* A-Law *
*********/
// Für PWM-Ausgabe zwischen 0 und 2000 skaliert
#define lawPwmVal \
829,837,813,821,861,869,845,853,\
766,774,750,758,798,806,782,790,\
915,919,907,911,931,935,923,927,\
883,887,875,879,899,903,891,895,\
317,349,254,286,444,476,381,413,\
63,95,0,32,190,222,127,159,\
659,675,627,643,722,738,690,706,\
532,548,500,516,595,611,563,579,\
989,990,988,989,991,992,990,991,\
985,986,984,985,987,988,986,987,\
997,998,996,997,999,1000,998,999,\
993,994,992,993,995,996,994,995,\
957,959,953,955,965,967,961,963,\
941,943,938,939,949,951,945,947,\
979,980,977,978,983,984,981,982,\
971,972,969,970,975,976,973,974,\
1171,1163,1187,1179,1139,1131,1155,1147,\
1234,1226,1250,1242,1202,1194,1218,1210,\
1085,1081,1093,1089,1069,1065,1077,1073,\
1117,1113,1125,1121,1101,1097,1109,1105,\
1683,1651,1746,1714,1556,1524,1619,1587,\
1937,1905,2000,1968,1810,1778,1873,1841,\
1341,1325,1373,1357,1278,1262,1310,1294,\
1468,1452,1500,1484,1405,1389,1437,1421,\
1011,1010,1012,1011,1009,1008,1010,1009,\
1015,1014,1016,1015,1013,1012,1014,1013,\
1003,1002,1004,1003,1001,1000,1002,1001,\
1007,1006,1008,1007,1005,1004,1006,1005,\
1043,1041,1047,1045,1035,1033,1039,1037,\
1059,1057,1063,1061,1051,1049,1055,1053,\
1021,1020,1023,1022,1017,1016,1019,1018,\
1029,1028,1031,1030,1025,1024,1027,1026
// Für 16-Bit-Audio (so wie es Windows konvertiert)
#define lawVal \
-5504,-5248,-6016,-5760,-4480,-4224,-4992,-4736,\
-7552,-7296,-8064,-7808,-6528,-6272,-7040,-6784,\
-2752,-2624,-3008,-2880,-2240,-2112,-2496,-2368,\
-3776,-3648,-4032,-3904,-3264,-3136,-3520,-3392,\
-22016,-20992,-24064,-23040,-17920,-16896,-19968,-18944,\
-30208,-29184,-32256,-31232,-26112,-25088,-28160,-27136,\
-11008,-10496,-12032,-11520,-8960,-8448,-9984,-9472,\
-15104,-14592,-16128,-15616,-13056,-12544,-14080,-13568,\
-344,-328,-376,-360,-280,-264,-312,-296,\
-472,-456,-504,-488,-408,-392,-440,-424,\
-88,-72,-120,-104,-24,-8,-56,-40,\
-216,-200,-248,-232,-152,-136,-184,-168,\
-1376,-1312,-1504,-1440,-1120,-1056,-1248,-1184,\
-1888,-1824,-2016,-1952,-1632,-1568,-1760,-1696,\
-688,-656,-752,-720,-560,-528,-624,-592,\
-944,-912,-1008,-976,-816,-784,-880,-848,\
5504,5248,6016,5760,4480,4224,4992,4736,\
7552,7296,8064,7808,6528,6272,7040,6784,\
2752,2624,3008,2880,2240,2112,2496,2368,\
3776,3648,4032,3904,3264,3136,3520,3392,\
22016,20992,24064,23040,17920,16896,19968,18944,\
30208,29184,32256,31232,26112,25088,28160,27136,\
11008,10496,12032,11520,8960,8448,9984,9472,\
15104,14592,16128,15616,13056,12544,14080,13568,\
344,328,376,360,280,264,312,296,\
472,456,504,488,408,392,440,424,\
88,72,120,104,24,8,56,40,\
216,200,248,232,152,136,184,168,\
1376,1312,1504,1440,1120,1056,1248,1184,\
1888,1824,2016,1952,1632,1568,1760,1696,\
688,656,752,720,560,528,624,592,\
944,912,1008,976,816,784,880,848
#else
/*********
* µ-Law *
*********/
// Für PWM-Ausgabe zwischen 0 und 2000 skaliert
#define lawPWMVal \
0,32,64,96,128,159,191,223,\
255,287,319,351,383,414,446,478,\
502,518,534,550,566,582,598,614,\
630,645,661,677,693,709,725,741,\
753,761,769,777,785,793,801,809,\
817,825,833,841,849,857,865,873,\
879,883,887,891,895,899,903,906,\
910,914,918,922,926,930,934,938,\
941,943,945,947,949,951,953,955,\
957,959,961,963,965,967,969,971,\
973,974,975,976,977,978,979,980,\
981,982,983,984,985,986,987,988,\
988,989,989,990,990,991,991,992,\
992,993,993,994,994,995,995,996,\
996,997,997,997,997,998,998,998,\
998,999,999,999,999,1000,1000,1000,\
2000,1968,1936,1904,1872,1841,1809,1777,\
1745,1713,1681,1649,1617,1586,1554,1522,\
1498,1482,1466,1450,1434,1418,1402,1386,\
1370,1355,1339,1323,1307,1291,1275,1259,\
1247,1239,1231,1223,1215,1207,1199,1191,\
1183,1175,1167,1159,1151,1143,1135,1127,\
1121,1117,1113,1109,1105,1101,1097,1094,\
1090,1086,1082,1078,1074,1070,1066,1062,\
1059,1057,1055,1053,1051,1049,1047,1045,\
1043,1041,1039,1037,1035,1033,1031,1029,\
1027,1026,1025,1024,1023,1022,1021,1020,\
1019,1018,1017,1016,1015,1014,1013,1012,\
1012,1011,1011,1010,1010,1009,1009,1008,\
1008,1007,1007,1006,1006,1005,1005,1004,\
1004,1003,1003,1003,1003,1002,1002,1002,\
1002,1001,1001,1001,1001,1000,1000,1000
// Für 16-Bit-Audio (so wie es Windows konvertiert)
#define lawVal \
-32124,-31100,-30076,-29052,-28028,-27004,-25980,-24956,\
-23932,-22908,-21884,-20860,-19836,-18812,-17788,-16764,\
-15996,-15484,-14972,-14460,-13948,-13436,-12924,-12412,\
-11900,-11388,-10876,-10364,-9852,-9340,-8828,-8316,\
-7932,-7676,-7420,-7164,-6908,-6652,-6396,-6140,\
-5884,-5628,-5372,-5116,-4860,-4604,-4348,-4092,\
-3900,-3772,-3644,-3516,-3388,-3260,-3132,-3004,\
-2876,-2748,-2620,-2492,-2364,-2236,-2108,-1980,\
-1884,-1820,-1756,-1692,-1628,-1564,-1500,-1436,\
-1372,-1308,-1244,-1180,-1116,-1052,-988,-924,\
-876,-844,-812,-780,-748,-716,-684,-652,\
-620,-588,-556,-524,-492,-460,-428,-396,\
-372,-356,-340,-324,-308,-292,-276,-260,\
-244,-228,-212,-196,-180,-164,-148,-132,\
-120,-112,-104,-96,-88,-80,-72,-64,\
-56,-48,-40,-32,-24,-16,-8,0,\
32124,31100,30076,29052,28028,27004,25980,24956,\
23932,22908,21884,20860,19836,18812,17788,16764,\
15996,15484,14972,14460,13948,13436,12924,12412,\
11900,11388,10876,10364,9852,9340,8828,8316,\
7932,7676,7420,7164,6908,6652,6396,6140,\
5884,5628,5372,5116,4860,4604,4348,4092,\
3900,3772,3644,3516,3388,3260,3132,3004,\
2876,2748,2620,2492,2364,2236,2108,1980,\
1884,1820,1756,1692,1628,1564,1500,1436,\
1372,1308,1244,1180,1116,1052,988,924,\
876,844,812,780,748,716,684,652,\
620,588,556,524,492,460,428,396,\
372,356,340,324,308,292,276,260,\
244,228,212,196,180,164,148,132,\
120,112,104,96,88,80,72,64,\
56,48,40,32,24,16,8,0
#endif
.section .lawtbl
.global lawPWM,law
#define LO(x) (x)&255
#define HI(x) (x)>>8&255
// Diese Tabellen kommen an /256 teilbaren Adressen zu liegen,
// d.h. deren Low-Teile sind jeweils 0
// ".irp" geht nur in Assembler, keine C/C++-Entsprechung.
// Auch „constexpr“ kann das 2021 noch nicht bewerkstelligen.
lawPWM: .irp p,lawPwmVal
.byte LO(\p) // Low-Teile zusammen
.endr
.irp p,lawPwmVal
.byte HI(\p) // High-Teile zusammen
.endr
law: .irp p,lawVal
.byte LO(\p) // Low-Teile zusammen
.endr
.irp p,lawVal
.byte HI(\p) // High-Teile zusammen
.endr
Detected encoding: UTF-8 | 0
|