Lab_interaccio/2023/smartcitizen-kit-21/lib/AudioAnalysis/ConstantsSound.h

36 lines
24 KiB
C
Raw Normal View History

2025-02-25 21:29:42 +01:00
#pragma once
///// MICROPHONE PROPERTIES (INVENSENSE)
const int BIT_LENGTH = 24;
const int FULL_SCALE_DBSPL = 120; // FULL SCALE dBSPL (AOP = 116dB SPL)
const double FULL_SCALE_DBFS = 20*log10(pow(2,(BIT_LENGTH)));
const double RMS_HANN = 0.61177;
const int CONST_FACTOR = 8; // IF change this, change window_reduced
const int NOISE_FACTOR = 2;
///// WEIGHTING TABLES
//Table for 44100Hz and 256 spectrumSize (512 fftSize)
#define WEIGHTINGTA_44100Hz_256 {0,0.0862538915555343,0.239252440067295,0.381499718566378,0.506174881840981,0.613491046469462,0.704657091342527,0.781358835632495,0.845492532387227,0.898943803532723,0.943446758613464,0.980518052821849,1.011442168756,1.03728522618051,1.05892148026641,1.07706317893995,1.09228900743996,1.10506909425038,1.11578603774419,1.12475213161783,1.13222326008119,1.13841000815891,1.14348650518794,1.14759745249792,1.15086370996276,1.15338674443019,1.15525218115916,1.15653264835139,1.15729006385055,1.15757748064798,1.15744058242197,1.15691890053426,1.15604680851176,1.15485433808098,1.15336785152296,1.15161059787385,1.14960317484241,1.14736391388858,1.144909202431,1.14225375441076,1.13941083827188,1.13639246969807,1.13320957507457,1.12987213054712,1.12638928067012,1.12276943992611,1.1190203798254,1.11514930382876,1.11116291195666,1.10706745663856,1.10286879110129,1.09857241138616,1.09418349291168,1.08970692235556,1.08514732551056,1.08050909166977,1.07579639501394,1.0710132134039,1.06616334492279,1.0612504224636,1.05627792661571,1.05124919706901,1.04616744272406,1.04103575067143,1.03585709418121,1.03063433982534,1.02537025383928,1.02006750781565,1.0147286838109,1.00935627893557,1.00395270948995,0.998520314699319,0.99306136009617,0.987578040591138,0.982072483269213,0.976546749943447,0.971002839494508,0.965442690021033,0.959868180822797,0.954281134236092,0.948683317338438,0.943076443537719,0.937462174059082,0.931842119341346,0.92621784035331,0.920590849839106,0.914962613500672,0.909334551124467,0.903708037658683,0.898084404246482,0.892464939220101,0.886850889060089,0.881243459323409,0.875643815543675,0.870053084106385,0.864472353101651,0.858902673156583,0.853345058249221,0.847800486505647,0.842269900981679,0.836754210430351,0.83125429005623,0.825770982257424,0.820305097356057,0.814857414317805,0.809428681461038,0.804019617155993,0.79863091051432,0.793263222069304,0.787917184446967,0.782593403028247,0.777292456602357,0.772014898011446,0.766761254786601,0.761532029775251,0.756327701759963,0.751148726068651,0.745995535176175,0.740868539297297,0.735768126970984,0.730694665635993,0.725648502197718,0.720629963586252,0.715639357305606,0.710676971974081,0.705743077855713,0.700837927382786,0.695961755669379,0.691114781015906,0.686297205404659,0.681509214986311,0.676750980557397,0.672022658028753,0.667324388884942,0.662656300634656,0.658018507252134,0.653411109609613,0.648834195900849,0.644287842055744,0.639772112146134,0.635287058782778,0.63083272350362,0.626409137153377,0.622016320254532,0.617654283369795,0.613323027456127,0.609022544210399,0.60475281640678,0.600513818225947,0.596305515576211,0.592127866406669,0.587980821012465,0.583864322332297,0.579778306238247,0.575722701818072,0.571697431650051,0.567702412070528,0.563737553434233,0.559802760367541,0.555897932014755,0.552022962277563,0.54817774004777,0.544362149433441,0.540576069978573,0.536819376876427,0.533091941176635,0.529393629986214,0.52572430666461,0.522083831012889,0.518472059457211,0.5148888452267,0.511334038525829,0.507807486701459,0.504309034404633,0.500838523747253,0.497395794453758,0.493980684007924,0.490593027794891,0.487232659238545,0.483899409934353,0.480593109777784,0.477313587088399,0.474060668729743,0.470834180225132,0.467633945869448,0.464459788837038,0.461311531285828,0.45818899445774,0.455091998775533,0.45202036393613,0.448973909000568,0.445952452480626,0.442955812422246,0.439983806485832,0.437036252023507,0.434112966153428,0.431213765831224,0.428338467918663,0.42548688924961,0.422658846693364,0.419854157215444,0.417072637935918,0.41431410618532,0.411578379558249,0.408865275964721,0.406174613679325,0.403506211388266,0.400859888234358,0.398235463860026,0.395632758448378,0.39305159276242,0.390491788182462,0.387953166741769,0.385435551160528,0.382938764878175,0.380462632084138,0.378006977747047,0.375571627642463,0.373156408379176,0.370761147424114,0.368385673125924,0.366029814737245,0.363693402435748,0.36137626734396,0.359078241547929,0.356799158114758,0.354538851109067,0.352297155608395,0.350073907717599,0.347868944582282,0.345682104401278,
// #define WEIGHTINGTC_44100Hz_256 {0,0.952628134952832,0.992767364583671,1.00035430484132,1.00277562043501,1.00361283564517,1.0037631041543,1.00353597886827,1.00306143427889,1.00240194293949,1.00159071733807,1.00064689017988,0.999582257249026,0.998404545265,0.997119109928524,0.995729870037116,0.994239846333974,0.992651485035501,0.990966858798191,0.989187795227597,0.987315961107345,0.985352918765801,0.98330016444933,0.981159154801695,0.978931325314663,0.976618103254758,0.974220916723174,0.971741200965762,0.969180402699053,0.966539982986071,0.963821419039575,0.961026205223628,0.958155853450507,0.955211893118062,0.952195870695709,0.949109349040722,0.945953906507166,0.942731135895601,0.939442643281183,0.936090046749816,0.932674975066071,0.929199066291959,0.925663966372134,0.922071327698301,0.91842280766347,0.914720067214922,0.910964769413382,0.907158578004741,0.903303156009766,0.89940016433641,0.895451260418736,0.891458096885871,0.887422320263952,0.883345569713601,0.8792294758051,0.875075659333126,0.870885730172598,0.866661286176942,0.862403912119845,0.858115178681348,0.853796641478933,0.849449840144076,0.845076297444583,0.840677518452865,0.836254989760153,0.831810178736554,0.827344532836699,0.822859478950635,0.818356422799508,0.813836748375498,0.809301817425351,0.80475296897682,0.800191518907207,0.795618759553167,0.791035959360859,0.786444362575474,0.781845188969146,0.777239633606173,0.772628866644485,0.768014033172213,0.763396253078245,0.758776620955586,0.754156206036345,0.749536052157167,0.744917177753896,0.740300575884273,0.735687214277464,0.731078035409214,0.726473956601424,0.721875870144974,0.717284643444607,0.712701119184713,0.708126115514862,0.703560426253966,0.699004821111946,0.694460045927822,0.689926822923172,0.685405850969895,0.680897805871282,0.676403340655403,0.671923085879834,0.667457649946813,0.663007619427899,0.658573559397277,0.654156013772843,0.649755505664278,0.645372537727292,0.641007592523321,0.636661132883915,0.63233360227914,0.628025425189332,0.623737007479544,0.619468736776102,0.615220982844674,0.61099409796931,0.606788417331926,0.602604259391733,0.598441926264149,0.594301704098744,0.590183863455803,0.586088659681111,0.582016333278595,0.57796711028047,0.57394120261458,0.569938808468608,0.565960112650905,0.562005286947654,0.558074490476144,0.554167870033922,0.550285560443631,0.546427684893348,0.54259435527224,0.538785672501405,0.535001726859754,0.531242598304806,0.527508356788298,0.523799062566514,0.520114766505241,0.516455510379307,0.512821327166611,0.509212241336624,0.505628269133322,0.5020694188525,0.498535691113488,0.495027079125224,0.491543568946709,0.488085139741838,0.484651764028622,0.481243407922828,0.477860031376062,0.474501588408317,0.471168027335048,0.46785929098879,0.464575316935388,0.461316037684885,0.458081380897112,0.454871269582063,0.4516856222951,0.448524353327059,0.44538737288933,0.442274587293972,0.43918589912895,0.43612120742856,0.433080407839119,0.43006339278,0.427070051600096,0.424100270729787,0.42115393382849,0.418230921927885,0.415331113570892,0.412454384946474,0.409600610020372,0.406769660661833,0.403961406766419,0.401175716374998,0.398412455788974,0.395671489681853,0.39295268120723,0.39025589210327,0.387580982793766,0.384927812485857,0.382296239264488,0.379686120183677,0.377097311354694,0.374529668031192,0.371983044691396,0.369457295117419,0.366952272471763,0.364467829371096,0.362003817957369,0.359560089966342,0.357136496793595,0.35473288955808,0.352349119163295,0.34998503635614,0.34764049178351,0.345315336046708,0.343009419753721,0.340722593569432,0.338454708263821,0.336205614758216,0.333975164169656,0.331763207853403,0.329569597443691,0.327394184892727,0.325236822508024,0.32309736298811,0.320975659456653,0.318871565495064,0.316784935173621,0.314715623081152,0.312663484353336,0.310628374699657,0.308610150429057,0.306608668474327,0.304623786415283,0.302655362500762,0.300703255669473,0.298767325569752,0.296847432578245,0.294943437817568,0.293055203172963,0.291182591308001,0.289325465679349,0.287483690550645,0.285657131005505,0.283845652959697,0.282049123172506,0.28026740925
//To be applied in the non-DB spectrum
const float A_WEIGHTINGTAB[] = WEIGHTINGTA_44100Hz_256;
//const double C_WEIGHTINGTAB[] = WEIGHTINGTC_44100Hz_256; //JUST FOR NOW
///// HANN WINDOW
#define HANN_WINDOW_512_REDUCED {0,0.00000472457215926203,0.0000188975743464284,0.0000425168637976092,0.0000755788695996074,0.000118078593229792,0.000170009609311808,0.000231364066587011,0.00030213268910146,0.000382304777608318,0.000471868211185424,0.00057080944906783,0.000679113532694967,0.000796764087972163,0.00092374332774621,0.00106003205449451,0.0012056096632275,0.00136045414460381,0.00152454208825784,0.00169784868633902,0.00188034773726243,0.00207201164967016,0.00227281144660269,0.00248271676987987,0.00270169588469061,0.00292971568439077,0.00316674169550843,0.00341273808295582,0.00366766765544706,0.00393149187112101,0.00420417084336825,0.0044856633468614,0.00477592682378782,0.00507491739028376,0.00538258984306903,0.00569889766628107,0.00602379303850755,0.00635722684001631,0.00669914866018157,0.00704950680510534,0.00740824830543282,0.00777531892436066,0.00815066316583681,0.00853422428295076,0.00892594428651289,0.00932576395382168,0.00973362283761731,0.0101494592752205,0.0105732103978551,0.0110048121401529,0.0114441992498394,0.0118913052975993,0.0123460626871194,0.0128084026653086,0.0132782553326918,0.0137555496539787,0.0142402134688022,0.0147321735026292,0.0152313553778379,0.015737683624963,0.0162510816941057,0.0167714719665068,0.0172987757662816,0.0178329133723149,0.0183738040303136,0.0189213659650155,0.0194755163925525,0.0200361715329669,0.0206032466228774,0.0211766559282941,0.0217563127575805,0.02234212947456,0.0229340175117655,0.0235318873838291,0.0241356487010117,0.024745210182868,0.0253604796720475,0.025981364148227,0.0266077697421741,0.0272396017499392,0.0278767646471729,0.0285191621035687,0.029166696997426,0.0298192714303342,0.0304767867419735,0.0311391435250307,0.0318062416402284,0.0324779802314649,0.0331542577410618,0.0338349719251185,0.0345200198689699,0.035209298002746,0.0359027021170297,0.0366001273786123,0.0373014683463425,0.0380066189870682,0.0387154726916664,0.039427922291162,0.0401438600729297,0.0408631777969785,0.0415857667123168,0.0423115175733934,0.0430403206566143,0.0437720657769314,0.0445066423045007,0.0452439391814082,0.0459838449384604,0.0467262477120369,0.0474710352610023,0.0482180949836762,0.0489673139348564,0.0497185788428949,0.0504717761268231,0.0512267919135238,0.0519835120549467,0.0527418221453667,0.05350160753868,0.0542627533657373,0.0550251445517104,0.0557886658334898,0.0565532017771109,0.0573186367952063,0.0580848551644807,0.0588517410432069,0.0596191784887394,0.0603870514750433,0.0611552439102361,0.0619236396541387,0.0626921225358347,0.0634605763712336,0.0642288849806364,0.0649969322063001,0.0657646019299994,0.0665317780905823,0.0672983447015165,0.0680641858684256,0.0688291858066101,0.0695932288585529,0.070356199511405,0.0711179824144494,0.0718784623965408,0.0726375244835174,0.073395053915584,0.0741509361646617,0.0749050569517031,0.0756573022639698,0.0764075583722696,0.0771557118481506,0.0779016495810501,0.0786452587953954,0.079386427067654,0.0801250423433304,0.0808609929539073,0.0815941676337281,0.0823244555368191,0.0830517462536477,0.0837759298278147,0.0844968967726784,0.0852145380879075,0.0859287452759602,0.0866394103584879,0.0873464258926597,0.0880496849874066,0.0887490813195817,0.0894445091500349,0.0901358633395992,0.0908230393649867,0.09150593333459,0.0921844420041906,0.0928584627925671,0.093527893797004,0.0941926338086988,0.0948525823280625,0.0955076395799143,0.096157706528566,0.0968026848927949,0.0974424771607029,0.0980769866044582,0.0987061172949201,0.0993297741161413,0.0999478627797492,0.1005602898392,0.101166962703906,0.101767789653238,0.102362679850385,0.102951543356096,0.103534291142268,0.104110835105417,0.104681088079988,0.105244963851538,0.105802377169771,0.106353243761425,0.106897480343012,0.107435004633414,0.107965735366315,0.108489592302496,0.10900649624196,0.109516369035908,0.110019133598555,0.110514713918781,0.111003035071628,0.111484023229622,0.111957605673939,0.112423710805398,0.112882268155284,0.113333208396003,0.113776463351565,0.11421196600789,0.114639650522938,0.115059452236666,0.115471307680802,0.115875154588442,0.116270931903462,0.116658579789751,0.1170
const float HANN_REDUCED[] = HANN_WINDOW_512_REDUCED; //SCALED DOWN BY 32
///// EQUALIZER
//Table for 256 spectrumSize (512 fftSize)
#define EQUALIZER_256 {0.99944472020062,0.99944472020062,0.99944472020062,0.791691845437474,0.791691845437474,0.791691845437474,0.806874263578552,0.806874263578552,0.806874263578552,0.782391870292537,0.782391870292537,0.782391870292537,0.764008032973381,0.764008032973381,0.764008032973381,0.740836694406232,0.740836694406232,0.740836694406232,0.662813044723655,0.662813044723655,0.662813044723655,0.611065166756965,0.611065166756965,0.611065166756965,0.520677017563484,0.520677017563484,0.520677017563484,0.433648165790253,0.433648165790253,0.433648165790253,0.402717034325459,0.400405468330546,0.400405468330546,0.373680125382116,0.367456667203267,0.367456667203267,0.367705393378215,0.367705393378215,0.367705393378215,0.359534111407157,0.355802274039972,0.352297625781609,0.34901419582051,0.345946424091544,0.343089145597823,0.340437575927183,0.337987297906512,0.335734249341827,0.333674711796481,0.331805300364099,0.330122954396886,0.328624929153728,0.327308788336203,0.326172397484063,0.325213918205129,0.324431803217763,0.323824792187179,0.323391908339925,0.32313245584379,0.323046017943297,0.32313245584379,0.323391908339925,0.32382479218718,0.324431803217763,0.325213918205129,0.323738169086782,0.324779177396242,0.323391908339925,0.324692298997894,0.323391908339925,0.322096725738533,0.320806730335484,0.319521901356081,0.318242218108827,0.316967659985098,0.318924076738664,0.321064315438612,0.323391908339925,0.322355346616686,0.321322107364351,0.320292179933469,0.319265553708725,0.322096725738533,0.321150223092037,0.320206501806506,0.323391908339925,0.322527875888645,0.321666151943106,0.320806730335484,0.319949604914438,0.319094769545058,0.318242218108827,0.317391944503575,0.316543942643437,0.314854729896291,0.314854729896291,0.307876496099889,0.307876496099889,0.307876496099889,0.313916271389929,0.313916271389929,0.313916271389929,0.321084500271999,0.321084500271999,0.321084500271999,0.286182576041339,0.286182576041339,0.286182576041339,0.239482390696028,0.239482390696028,0.239482390696028,0.203592223809067,0.203592223809067,0.203592223809067,0.1993214258075,0.1993214258075,0.1993214258075,0.173421104726997,0.173421104726997,0.173421104726997,0.162462756050898,0.162462756050898,0.162462756050898,0.154442744054414,0.154442744054414,0.154442744054414,0.162557143503298,0.162557143503298,0.162557143503298,0.154139135132832,0.154139135132832,0.154139135132832,0.15697314489965,0.15697314489965,0.15697314489965,0.187846651771955,0.187846651771955,0.187846651771955,0.179904900185986,0.179904900185986,0.179904900185986,0.20127170175393,0.20127170175393,0.20127170175393,0.216756542147008,0.216756542147008,0.216756542147008,0.228911748756275,0.228911748756275,0.228911748756275,0.23984875408568,0.23984875408568,0.23984875408568,0.251379442523248,0.251379442523248,0.251379442523248,0.270319152447248,0.270319152447248,0.270319152447248,0.290508593675112,0.290508593675112,0.290508593675112,0.321140074158077,0.321140074158077,0.321140074158077,0.345147669966558,0.345147669966558,0.345147669966558,0.41635648232466,0.41635648232466,0.41635648232466,0.495075049751057,0.495075049751057,0.495075049751057,0.528201180096559,0.528201180096559,0.528201180096559,0.469953842903717,0.469953842903717,0.469953842903717,0.477037018994246,0.477037018994246,0.477037018994246,0.475322210052277,0.475322210052277,0.475322210052277,0.417864108903507,0.417864108903507,0.417864108903507,0.402016972133253,0.402016972133253,0.402016972133253,0.437008241675398,0.437008241675398,0.437008241675398,0.456826967994132,0.456826967994132,0.456826967994132,0.490968754638594,0.490968754638594,0.490968754638594,0.514222874090816,0.514222874090816,0.514222874090816,0.497511485534609,0.497511485534609,0.497511485534609,0.511219059235035,0.511219059235035,0.511219059235035,0.483774164217154,0.483774164217154,0.483774164217154,0.464262505496569,0.464262505496569,0.464262505496569,0.452826913887372,0.452826913887372,0.452826913887372,0.401219545565618,0.401219545565618,0.401219545565618,0.365331086170239,0.365331086170239,0.365331086170239,0.360903517452142,0.360903517452142,0.3609035
const float EQUALTAB[] = EQUALIZER_256;
const int EQUALTABSIZE = 256;
const int EQUALTABSAMPLERATE = 44100;
///// AFSK
const double THRESHOLD_DETECT = 40;