From ae35d8bd3868a209e5dfef01cf980fd328e46010 Mon Sep 17 00:00:00 2001 From: Coela Can't! Date: Wed, 1 Jun 2022 01:22:08 -0400 Subject: [PATCH] Threshold detection on microphone --- .pio/build/project.checksum | 2 +- .pio/build/teensy40/.sconsign39.dblite | Bin 375824 -> 380252 bytes .pio/build/teensy40/firmware.elf | Bin 416072 -> 416336 bytes .pio/build/teensy40/firmware.hex | 17130 ++++++++-------- .pio/build/teensy40/idedata.json | 1 - .../lib06a/libAdafruit Unified Sensor.a | Bin 3148 -> 3148 bytes .../lib0b5/libAdafruit APDS9960 Library.a | Bin 17282 -> 17282 bytes .pio/build/teensy40/lib150/libSmartMatrix.a | Bin 68244 -> 68244 bytes .pio/build/teensy40/lib16c/libOctoWS2811.a | Bin 23144 -> 23144 bytes .../build/teensy40/lib178/libSerialTransfer.a | Bin 13542 -> 13542 bytes .pio/build/teensy40/lib4f9/libWire.a | Bin 11672 -> 11672 bytes .pio/build/teensy40/lib770/libSPI.a | Bin 12830 -> 12830 bytes .../build/teensy40/lib93a/libAdafruit BusIO.a | Bin 21448 -> 21448 bytes .pio/build/teensy40/libFrameworkArduino.a | Bin 244828 -> 244828 bytes .../teensy40/liba6c/libAdafruit BNO055.a | Bin 15198 -> 15198 bytes .pio/build/teensy40/src/main.cpp.o | Bin 111432 -> 111228 bytes src/Animation/ProtogenKitFaceAnimation.h | 2 +- src/Filter/DerivativeFilter.h | 33 + src/Filter/FFTFilter.h | 9 +- src/Filter/KalmanFilter.h | 15 +- src/Filter/PeakDetection.h | 43 +- src/Materials/Animated/SpectrumAnalyzer.h | 4 - src/Sensors/MicrophoneFourier_MAX9814.h | 72 +- src/Sensors/MicrophoneSimple_MAX9814.h | 13 +- 24 files changed, 8689 insertions(+), 8635 deletions(-) delete mode 100644 .pio/build/teensy40/idedata.json create mode 100644 src/Filter/DerivativeFilter.h diff --git a/.pio/build/project.checksum b/.pio/build/project.checksum index 8e35fc7b..b175a473 100644 --- a/.pio/build/project.checksum +++ b/.pio/build/project.checksum @@ -1 +1 @@ -33fbac06369f5bf11a69f69fbfd44d9348159aec \ No newline at end of file +dccaf109dbb3390bdd324df2834753b42018e721 \ No newline at end of file diff --git a/.pio/build/teensy40/.sconsign39.dblite b/.pio/build/teensy40/.sconsign39.dblite index a3a2220e22498b26934a1c4a58aec38e7089a2b6..8230d28a9f6f64b4719fc2bb34756ddef86176db 100644 GIT binary patch delta 17769 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 delta 12027 zcmbtad3+Q__D@%JO^%sdgoFSg2@nK?z#KhSL=rCH7mPq)S4Bve(`FRHxvK~W7!M!< zaRLunAlw3S1Ov9ZEP`?=2&gC`sH_6Yq2lW9Mg{%7?w-!f1a>vQU;fCay63&`yI)mT z)!AjO7Bys~%;Fb6!*en6-;A0rRjpw5Caz`TFuvqtPtT+y+{Ep{w9)*)!hObh0a-Q68#i`nh*3T~g@ z=JZ)y9+TPOvHhY%ZDMZ=VNc z+dfkm{1&&vXmMGMMz_uDHhb*o7@ON`wAtNuzs2X38E%|X7{uVd>a=`^fL7ZaZl~b! znT_r8g7m)011J*WaBNNY1xAZC01dYc~1?bcw@nc6zKH zm(OG|oBU?GUyuboqIkV{P<{OumciT|zZs~i_$gz@`6f?sjhj%Tgsh66Ja(F|rsP=t zSnEbzvtm|%XD@ebyGxiqm?)pBX{6+let5;hW4-;Rx_v>DaASnSZZW%T4i|b&@H;F< zx7BWRx;;j>(`|A%O!k^6r9OTq)uky#d9lr4GS#jAuQK#?c^-OjQpMEq-r#I&|KL(8 z=#<~5){_Bw@y*Pf;r9fZ7nYVBMFcaH21#4^{>HKy3%EFnB~) z2xGqGih|b+g)qy-&8$CnLS)jaZ#fGImVPw~ivPj+pj8L{ZaCML8(cr+(lvt&95n4o z3#J~Q7hfU{74H{EiGK{He$}njO0ifRF0K~Wi7$wo#jRqUSTDXTz8Y-!Xe2N075CNe zIDIKG4*BJ(;)4VKH6~VO9{L;X*Zwso4!On5(KTJ5+KGA(xzwtD+rQ0;vTf2AJh#1# ztd+Dlhg*@QytDS=dSxr4DI>WC9xgq?4O4ADqU#LW_W#gylp{$%+Ns%(R?06AVsDrMj zih>i`7P2rGAXghWI~FC*n#UzbF9f)5NgBwkM0gpvk;z{1J`^QGG+~s=mU5-4lj_%V z?Q;}|oZ8PFNL5C)A97r>GFp3q8`oADrEz4tPO3DJ0i0@M*CcXG6L>uq3KGaSiX-8$ zAKmi&R!$EUsaydV^<=D+5Knjx1{+9684M;GNE*y+L59;0#nW)I1$me|2Yu4W`x;=E zl$VoaWE-qVCW&w}J5D$RD7of#G{ zB*EAWvQjoj2ff>n5`}s}o3QxJZA0SUZHs3AHIt0wwnIj1GKG_1^<+93erc@|1ousE zDP3qwy2c|xawp=8la$=9$_Fl$+$OE*M0Oh#LtJJ=$`Z&aB>X`j6*`p=st<9QkdjU^ z0IcMUX2ysFc+gDBP_gZB*h~VjOiyYSpCIkv3k&HO7fQV?FwI5=a*N;%8!6{bLkByV z5O+>hpg>Uo_S(rtB^w@cAPLGo;v|ov6)8LEXt-9wjg+nzkWPkHA;e4?)vj})=Tg=l zY8|9KcenJ@A4rl65q~e476I{!^!$AYp{YK|023XgjU2C3SneQs+(?)j2&+W9Ey*9tY z@AV5_v)k-9*>O5fFGf7+y@yF^8^!vIPmzmi^&GDuE7VG(hwfwdN`(ouG9HE|u=}J5 zMskFM_r40(MVAbCx)Uu+5evn8#J=JH@mX=EI7l2E+_)#F)oig+d|I3*E)si*L2-%r zytrJf71uz`ZPd?WKiaIO%Y`G{1Jdr!^liNsYq6bFxQY1Ur4M&uYQXrTGmyQ!5MX zmU*+r&`%I`cm`T8dxRJfTE?ex0Ek4z@$E5d3kZNyeuH^ zkS;9HTQ;!!J0vT!8SwvpheW}@^)dFfkpKE8!jL(%kQ)RG=g=IzSQ&Vfpk4FCVDP;_ zQOgQ(5=OWdV=KpgaNs%o5du$8FB3Nfo+r@fIvoK+dyo`qZYABtD_-q07rnaNLX+Y9 zmt~zrS?6{VY1iuad&K>Ew93NKu*&F>A=R{i%Z7Q?G$%#QLrv+vs307urmjf!&h=mi zpzQ+s2UyjTje=Fz`SIYd348ct$iq7?%i4~Vwf*#R^E|xiO0>F#Zqb4iP7obJxd_2_lkrVE@sD!g5Gy!N%!qxSSPPjQk!tT%#Zf*wc z;tW(q3Dy07gwAXgEp%w!%|g!)qZor#atxA6X|uBYbg2fPJDD#xz?O2_QS)I6g;zYZ zHw$c&ksCbp0lBHkDJ_>~B^KtO;D$Zz(`VnZr4b+Xs&Pr}z?VvI_~=}NhP+&ds~6gj z1v<#cv2pZ);PO4rM6I^fo|qa>$EpBW-=)$jKMNS3C?jlsmo{*)iuT5J6nmEDriDuI zF{PdT_0lEU4+>m(wtjZIph>ASGyQ46tIhBoDVafkA<3b$ovBwUw2F973-s!$GsG0 zb|gd2Vp_lgZ_744u$Z>vWe?p#g>Fl<3ewvBsQS7Fg8_!D4a2?C0+zi*dvPDZsh4i4 z%ldliYBc0~8oxLu1_k4vwE7vonwQ4(ARkj0znA7I{ciDIT1dtd_;4>RC*spku#e7) z#SW^3?a)3tMh%zwj6@24V zvF;w|6-$HCygZt~NxO&8)KJy4&2+tp+0{Kn{#}CqMg01}9gH*(+SQ>SR5{@p%Dcf}z zCl{nmhVt{sb@e38C%@{T?FTBu9UrK@|GikKolNhCy%rV=KhCG=(E3Bn07Q^Kzq$~3 z?>t=w)yJr*^9Q=f0Gvp>DF91wQj~Q$rWK$x>Np+BX<%Pb`2H|;kXLn({}#=TS6YY? z`_XUF@=(dnp2d%lzoFd`b5Q>yVU1#R@a$E3Cpn~pqgQEmtXQZ_X~C6y>`4*5MAl>Z z*NwAp(oXuKvZkq@dgg*&HZ}|P{}e_Yl?uB~&;s(J4!%1{a-wB@3FAXXVc-&KT|ug$3orDG$&r|g|gviex_xiQo?1&;Kl&(48FgJ zR<6)N&o60?PUQ&RURlJ;3l>=UWuukI_Zj5AMQ(?bOY}$0$f|VMVBiZnwT+F;gshe~ zWr6}1m&j|&i;0Q+zcmmcJ~*9o(!duwc=raqRc)>OCA!7=^jKS=j5P2tF^RX6uCcH= ziO)`IvZVPei4U0$S|%mJxmaAyG+EcQPYq)>w1mQ8d~4X^;ky!7EcD3Z+cjs|xYo-* zsP=-;s&pc+MmoPAp93@xQHM7l^{2dO)VEBLsP_#+)QaY#4k?X5onufEQc?5k*$6nJ z`GDu=L;zwVtX~**>~#vh7JMHvAQm>Z;M?7zjZR79)sG-aoeKNr@_BKgP&dHJiF`lu zeDihMK1tIFS2%MFTJE4a|IFq4ayoFd=gVU!#l^%ZY2Th78!8vfncFz9b_|;!GBr2u z?uYJ~-+Wd2_19EUbECzu$S4+B5%q=UquOoJsJecUsMl8@>aOOae!nsr^~j51KcMgS zz040FZ^puqL$?g&Nr?}AJgK4Fus_Tl$IIMV@>Im2>mfdmT=CSa0inNnuvL)}?YGvyl#>T*og zx-ciNgKMYxqI|s}%JiE)%cD&n{W1Sw6y!h7 zL_o&D`}` z<$IIP1}HzaNADwgu9*vJMFyibEbf0cDr?{*ObH zq>DrUqohC@9uSG6<)yzk3^&CJ@!L{euaCg(sFC6r(IfiBvEsv`ysa`-d<55HGsW4s zikCOh8n@7VVp>(M(PuR|d=9^0hIyCy`_*|EKWfHvaIBP#mR`Ba2lNybRgN77-QX=; zJxssB=d^A#Tvca`qE1kr5f0wal3nqDgdWJ^;OjUx6moAT2I%xQ-2r1-vxD#m$MPD% z;}cm=?l?FT*-ha7F!&RR%%fIP1h`a|%)aMjBv5vRu3X@IlDP)Ry2$6oDc{|=(F8*; z@`|0jgaL@$ zw}PEI7Ao~{{H0!TOyV0Y-IvYG6WFa{FGx;a0I%B=s%`HjpP8}@cSVUb&KYAB_6 zp8XKvZASy&gA6l(*uZD!Hty`HZC^=M?Q=l+TKQ{3bbYA1dOz};sOI>XEa=&X_2$;Y z_&zL$;1(fnb?7597kc$&9`)P6^ad>ruDW1=>~DBwoB6YN>CO`NjjCRcA?!{v&H&?v zuv+CQ0(cLwkXBCdZPYSoqx%b_oAX!qXHc z6tIqAF<4th=ULeSjXSN&(to3@riPt$rp+zN3b3q(2J2SFODXN5!aA&snFhQRCG0iJ zZwUJjj=WNKQ@A4>`4okXUhK$nLLK+AKAkQ{35`i?Dm1W`zvceec^?byFl!r;3k(XX zX);TXEB&LoB87cp@hq=c*pHrZ`N}2Y7VX zOObJHI-5p1n*^)ZWHQ@KX2D}O+Keu@&*HZjEl#J&>a>_OEus2xwD8(9s)cZRZspa#=b6r-B>bfuHu}`>siyv(*6?b~MHy#Wb=bU=SZKc$r|eJpUb?9ff!bWk4RmoF)zVVYEEthXo z1sBY{tH^41VuG06F1(5+xZQTQ(Ioi1Ca>KoV2az^^6jlrwSGJ@ERHd7F>2we|MB3u zDowtNmj<(zhcapGicluKx&lp-YpFpS*jJ+SLluG>yWCcE)54W3bmoy!f+u@QK#t)% zg>y$O`p8g=K9X^ir@;|Vtzmv`m{Jv{5XG&EWErSEq03dGt=izKHt4oG^ix0^Y|;i_ z;Xud0J26HF$3XfjDt3xYqX!IS|hU84#j;2jp8`5*N z{94|UJf{tE)`i}bMGP`w*E-~o3D4qdb$=$KIaMO;lcg74bR~I&X|*@kc$ak9s;E_0(}w*kat-P)zY`LTzzZ0_JWCYb&bS zo|Ea7Po<2Kk9ai!b2p=hLhsJ2WM!MfWcb0Tz^+6xWkI}uGX_TfJfJUz27R@`Y;CYt z8~mybdT$94&(H?DwZYHYpkQl==22~+B*}@bVQuh3LdmC;Z6R%xdmHy`3sa;ds~Nf= zisC3zC`v2z`t6}71;04rsh2Xf)@?^c!=9pT^Zi677#5$^^P2 z%#sOxLr>D!9qgADolQ7;quHHll{GH1I*}{v$&FmI`x8}_HeQ>gE-ZU?#^KHL#lB+z#a-EnOsBH15-84p3 z*B5Akvs_g!t|06_zg4i|V!~m;+unWw=Q6yC?e(}U7Q09KvkGFc)7~x zz3Uf`k2J-mvp10A5s~C^h zgtMmE=`&kRPO}NGpG(`1uyI_G(dYK~tuDJoFdB{WEh)TaZox~{M#1W{3Jza{p!lV_ NkTI%BIIm9a@xSlJ_GbV9 diff --git a/.pio/build/teensy40/firmware.elf b/.pio/build/teensy40/firmware.elf index c666abe459753ceb03e1d69bc3e389e86c99dda6..34d3cfadb0cfbfb0af5775b20463ccce9b3bcd1d 100644 GIT binary patch delta 49087 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 Ij&I!l2T@}7XaE2J delta 49056 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 delta 29 fcmX>jaYkZ-G`q2dxq*e5;Y6jqP^Q7gXKCC3gp&x{ diff --git a/.pio/build/teensy40/lib0b5/libAdafruit APDS9960 Library.a b/.pio/build/teensy40/lib0b5/libAdafruit APDS9960 Library.a index c18d2713aaa140335da5a47de321ef180bbfb7a3..4a70d7a71c55119bde402226e6efc625d1cab3cc 100644 GIT binary patch delta 33 icmZo_XKZR`oFL6^Vqj`%Xlk}msh1ACI+UKhNfm4m3aAJ?8$jz;+uW>q&Q##oAboxa=|!YSxrSZZn(fd zFY(R2I&8@L#WruSaue~K$m@3A_)NWKwM$~ delta 319 zcmbO-m1W9QmI>1A#unxVmPSS!m3aBUYzs5P$$4Vpn|=ADIA8*s^Tg(I!8l-9O+`0u zxWGRz@y)$DY{>e>HgB+U7l5hQ{Ld>DA^Xoua&vQJ073v{-N*Dt$To;={!paP4%0tb zZneZ_yDCFwxBy5?Z|y0#md$Y;oe0jmNxlfBAlF4sOXES&dv}o)!gq43T@lLVE{bn% ZTsKV#rhK#9#jWx%4$$vFmwi|w2>=-UT$}&^ diff --git a/.pio/build/teensy40/lib16c/libOctoWS2811.a b/.pio/build/teensy40/lib16c/libOctoWS2811.a index cda9a39a2663f6a89e8f764278a995b712eeea84..6ca219add9cd5e75c3abdc870b179571782f4574 100644 GIT binary patch delta 46 ncmaE{h4IA}#tG8wCI+UKhNfm4l_Z&A?9EQhjtEW{+r3}_Kz0n| delta 46 scmaE{h4IA}#tG8w#unxVmPSS!l_Z(LYzs4k%}&gYFplBoF1CBY06`@T>Hq)$ diff --git a/.pio/build/teensy40/lib178/libSerialTransfer.a b/.pio/build/teensy40/lib178/libSerialTransfer.a index 4fccf497a0e861d010284721c638ff57734ad770..453d5642ec0b3f150a2847eda0c71d787ebbae15 100644 GIT binary patch delta 82 zcmaEs`7CpSG`op`simQ**+!*c78rYSfTq~yNi6euQ3U*iHVdN&$f;>F!vr=5Xinn> E0L3R2;{X5v delta 82 zcmaEs`7CpSG`q2dxq+pT(MF|U7BJhw%y4pmrr735Ec1C$1pI_H3!@0gscAFA1U3g~ HPU8ju$9fg; diff --git a/.pio/build/teensy40/lib4f9/libWire.a b/.pio/build/teensy40/lib4f9/libWire.a index 6ba9ad2ddfa0e24b13dfa8ba96a931a787720d55..fbf5196b1e3d69e7c55e5a3956317a1640d90c7c 100644 GIT binary patch delta 74 zcmbOcJtKO8G`op`simQ**+wN+W*B?39ZWvmUc0jAOVtk8P&{LPp&YCSx#Jk6Cs#1I?+ delta 59 xcmX@HobkkR#tG8w#unxVmPSS!l@4-&*%oGon_qFMO2Ii|s=54dPM3+DJOBw15GDWs diff --git a/.pio/build/teensy40/libFrameworkArduino.a b/.pio/build/teensy40/libFrameworkArduino.a index 06103e74453604130c9ed0887d8b8e86ebe35a44..48e0d0632487f4e9ed8633f9eb424def83bf31ca 100644 GIT binary patch delta 1447 zcmZWpZAep580NgEG7T4gY`e1@Y5gc;Yntm~pfKrcAcGA05(c$G1S_xzD&~(0=|@T8 zk4qzlQGbL`>V|Jb34IZLFsL6zpn^n1L`ErTP|~?~_q_LR`?vSG&wHNddEaw3vEZ6m za9v$h)EEjk)rZwPwci`8-&-`-E#}n&n|F8!>D|V?`ara=S|Yl?b6|xm2K}8L{Y}r# zsvID6WwbU2_&b^?m4N1NV~XDUD6%{knR=d&v}E#;^!t2daVj5)e{mqfy`qo*2yoJB zc`6bX&puct5fQ- zN7o*xvDD-S@zmhSB+WL!MtWXvQA8FO7uM!dU_aiqt|5QAy9eTeEU!%t_Sn|v4> z_2RK4^x1h9hegDS3ovJQx-Nl_HiW@`n51vn6E+M&IZe`7p@IifP(wZDaIXzPoQ8`+ zrpy*KuWfJ?YUtW(f}r4W1h>sH-QIWz<9Sf>2~?3hiXDY*g7HUzKQrK8E%$Dk34DVY zdIH%UZv72M>m1qry1_r%U|Rg4(#V+?G#I}&M-{e=Ff` R4gUGALpS^IGxvCZ(SImxiR1tP delta 1447 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 delta 31338 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 { sA.Update(); sA.SetHueAngle(ratio * 360.0f * 4.0f); - float mouthMove = sA.GetCurrentValue(); + float mouthMove = MicrophoneFourier::GetCurrentMagnitude(); if (isBooped){ Surprised(); diff --git a/src/Filter/DerivativeFilter.h b/src/Filter/DerivativeFilter.h new file mode 100644 index 00000000..4db3d3c5 --- /dev/null +++ b/src/Filter/DerivativeFilter.h @@ -0,0 +1,33 @@ +#pragma once + +#include +#include "KalmanFilter.h" +#include "MinFilter.h" +#include "..\Math\Mathematics.h" + +class DerivativeFilter{ +private: + KalmanFilter<10> output = KalmanFilter<10>(0.2f); + MinFilter<40> minFilter; + float previousReading = 0.0f; + float outputValue = 0.0f; + +public: + DerivativeFilter(){} + + float GetOutput(){ + return outputValue; + } + + float Filter(float value){ + float amplitude = fabs(value - previousReading); + float normalized = output.Filter(amplitude); + float minimum = minFilter.Filter(normalized); + + previousReading = value; + outputValue = Mathematics::Constrain(normalized - minimum, 0.0f, 1.0f); + + return outputValue; + } + +}; diff --git a/src/Filter/FFTFilter.h b/src/Filter/FFTFilter.h index 2b7c0ef9..c3f9ba5e 100644 --- a/src/Filter/FFTFilter.h +++ b/src/Filter/FFTFilter.h @@ -7,9 +7,8 @@ class FFTFilter{ private: - KalmanFilter<10> mv = KalmanFilter<10>(0.1f); MinFilter<40> minF = MinFilter<40>(); - KalmanFilter<10> output = KalmanFilter<10>(0.1f); + KalmanFilter<5> output = KalmanFilter<5>(0.5f); float previousReading = 0.0f; float outputValue = 0.0f; @@ -20,12 +19,12 @@ class FFTFilter{ return outputValue; } - float Update(float value){ + float Filter(float value){ float changeRate = value - previousReading; float amplitude = fabs(changeRate);//mv.Filter(fabs(changeRate)); float minimum = minF.Filter(value); float normalized = value - amplitude - minimum; - float truncate = normalized < 0 ? 0 : output.Filter(normalized);//output.Filter(normalized); + float truncate = normalized < 0 ? 0 : normalized;//output.Filter(normalized); previousReading = value; outputValue = Mathematics::Constrain(truncate, 0.0f, 1.0f); @@ -33,4 +32,4 @@ class FFTFilter{ return outputValue; } -}; +}; \ No newline at end of file diff --git a/src/Filter/KalmanFilter.h b/src/Filter/KalmanFilter.h index 2374a2ec..e3bda2e8 100644 --- a/src/Filter/KalmanFilter.h +++ b/src/Filter/KalmanFilter.h @@ -7,14 +7,6 @@ class KalmanFilter { float values[memory]; uint8_t currentAmount = 0; - void ShiftArray(float* arr){ - for(uint8_t i = 0; i < memory; i++){ - arr[i] = arr[i + 1]; - } - - arr[memory - 1] = 0.0f; - } - public: KalmanFilter() { this->gain = 0.25f; @@ -37,11 +29,14 @@ class KalmanFilter { values[currentAmount++] = value; } else{ - ShiftArray(values);//pop first + for(uint8_t i = 0; i < memory - 1; i++){ + values[i] = values[i + 1]; + } + values[memory - 1] = value; } - for(int i = 0; i < currentAmount; i++){ + for(uint8_t i = 0; i < currentAmount; i++){ sum += values[i]; } diff --git a/src/Filter/PeakDetection.h b/src/Filter/PeakDetection.h index 344c803a..e86380c6 100644 --- a/src/Filter/PeakDetection.h +++ b/src/Filter/PeakDetection.h @@ -3,16 +3,16 @@ #include #include "..\Math\Mathematics.h" +template class PeakDetection{ private: - const uint8_t sampleSize; uint8_t lag; float threshold; float influence; - float* filData; - float* avg; - float* std; + float filData[sampleSize]; + float avg[sampleSize]; + float std[sampleSize]; void GetStdDev(uint8_t start, uint8_t length, float* data, float& avgRet, float& stdRet){ float average = 0.0f; @@ -21,51 +21,43 @@ class PeakDetection{ for (uint8_t i = 0; i < length; i++){ average += data[start + i]; } + - average /= length; + average /= (float)length; for (uint8_t i = 0; i < length; i++){ stdDev += powf(data[start + i] - average, 2.0f); } avgRet = average; - stdRet = sqrtf(stdDev / length); + stdRet = sqrtf(stdDev / (float)length); } public: - PeakDetection(uint8_t sampleSize, uint8_t lag = 7, float threshold = 1.2f, float influence = 0.25f) : sampleSize(sampleSize) { - filData = new float[sampleSize]; - avg = new float[sampleSize]; - std = new float[sampleSize]; - + PeakDetection(uint8_t lag = 12, float threshold = 0.75f, float influence = 0.5f) { this->lag = lag; this->threshold = threshold; this->influence = influence; - - for(uint8_t i = 0; i < sampleSize; i++){ - filData[i] = 0.0f; - avg[i] = 0.0f; - std[i] = 0.0f; - } - } - - ~PeakDetection(){ - delete avg; - delete std; } void Calculate(float* data, float* peaks){ + float average = 0.0f; + float stdDev = 0.0f; + for (uint8_t i = 0; i < sampleSize; i++){ filData[i] = 0.0f; avg[i] = 0.0f; std[i] = 0.0f; } - GetStdDev(0, lag, data, avg[lag - 1], std[lag - 1]); + GetStdDev(0, lag, data, average, stdDev); + + avg[lag - 1] = average; + std[lag - 1] = stdDev; for(uint8_t i = lag; i < sampleSize - lag; i++){ if(fabs(data[i] - avg[i - 1]) > threshold * std[i - 1]){ - if(data[i] > avg[i - 1] && data[i] > 0.05f) peaks[i] = 1.0f; + if(data[i] > avg[i - 1]) peaks[i] = 1.0f; //else peaks[i] = -1.0f; filData[i] = influence * data[i] + (1.0f - influence) * filData[i - 1]; @@ -76,6 +68,9 @@ class PeakDetection{ } GetStdDev(i - lag + 1, i, data, avg[i], std[i]); + + avg[i] = average; + std[i] = stdDev; } } }; diff --git a/src/Materials/Animated/SpectrumAnalyzer.h b/src/Materials/Animated/SpectrumAnalyzer.h index 93aa368b..5e57d06b 100644 --- a/src/Materials/Animated/SpectrumAnalyzer.h +++ b/src/Materials/Animated/SpectrumAnalyzer.h @@ -54,10 +54,6 @@ class SpectrumAnalyzer : public Material { this->material = material; } - float GetCurrentValue(){ - return MicrophoneFourier::GetCurrentValue(); - } - float* GetFourierData(){ if(bounce){ return bounceData; diff --git a/src/Sensors/MicrophoneFourier_MAX9814.h b/src/Sensors/MicrophoneFourier_MAX9814.h index 22ee3b30..d8e8c8a2 100644 --- a/src/Sensors/MicrophoneFourier_MAX9814.h +++ b/src/Sensors/MicrophoneFourier_MAX9814.h @@ -7,6 +7,7 @@ #include #include "..\Math\Mathematics.h" #include "MicrophoneSimple_MAX9814.h" +#include "..\Filter\DerivativeFilter.h" #include "..\Filter\FFTFilter.h" #include "..\Filter\PeakDetection.h" @@ -18,23 +19,26 @@ class MicrophoneFourier{ static const uint8_t OutputBins = 128; static uint16_t sampleRate; static uint16_t samples; + static uint16_t samplesStorage; static uint8_t pin; static float minDB; static float maxDB; + static float threshold; static float currentValue; static bool samplesReady; - static PeakDetection peakDetection; + static PeakDetection peakDetection; + static DerivativeFilter peakFilterRate; static uint16_t frequencyBins[OutputBins]; static float inputSamp[FFTSize * 2]; + static float inputStorage[FFTSize]; static float outputMagn[FFTSize]; static float outputAR[OutputBins]; static float outputData[OutputBins]; static float peaks[OutputBins]; - static FFTFilter fftFilters[FFTSize]; + static FFTFilter fftFilters[OutputBins]; static arm_cfft_radix4_instance_f32 RadixFFT; - static MicrophoneSimple microphoneFilter; static float AverageMagnitude(uint16_t binL, uint16_t binH){ float average = 0.0f; @@ -47,20 +51,21 @@ class MicrophoneFourier{ } static void SamplerCallback(){ - inputSamp[samples++] = (float32_t)analogRead(pin); + inputSamp[samples++] = (float)analogRead(pin); inputSamp[samples++] = 0.0f; + inputStorage[samplesStorage++] = inputSamp[samples - 2]; + if(samples >= FFTSize * 2){ sampleTimer.end(); samplesReady = true; } - - currentValue = inputSamp[samples - 2]; } static void StartSampler(){ samplesReady = false; samples = 0; + samplesStorage = 0; sampleTimer.begin(SamplerCallback, 1000000 / sampleRate); } @@ -72,7 +77,7 @@ class MicrophoneFourier{ pinMode(pin, INPUT); analogReadResolution(12); - analogReadAveraging(4); + //analogReadAveraging(8); MicrophoneFourier::sampleRate = sampleRate; MicrophoneFourier::samples = 0; @@ -88,35 +93,36 @@ class MicrophoneFourier{ StartSampler(); } - static float GetCurrentValue(){ - return microphoneFilter.Update(currentValue); - } - static float* GetFourier(uint8_t &bins){ bins = OutputBins - 1; return outputData; } + static float GetCurrentMagnitude(){ + return threshold; + } + static void Update(){ if(!samplesReady) return; arm_cfft_radix4_init_f32(&RadixFFT, FFTSize, 0, 1); arm_cfft_radix4_f32(&RadixFFT, inputSamp); arm_cmplx_mag_f32(inputSamp, outputMagn, FFTSize); - /* - Serial.print(10); - Serial.print(','); - Serial.println(10); - */ + + + + float averageMagnitude = 0.0f; + for (uint8_t i = 0; i < OutputBins - 1; i++){ float intensity = 20.0f * log10f(AverageMagnitude(i, i + 1)); intensity = map(intensity, minDB, maxDB, 0.0f, 1.0f); - fftFilters[i].Update(intensity); + fftFilters[i].Filter(intensity); outputData[i] = intensity; + if (i % 12 == 0) averageMagnitude = peakFilterRate.Filter(inputStorage[i] / 4096.0f); if (i > 5){ float average = 0.0f; @@ -129,8 +135,28 @@ class MicrophoneFourier{ } } - peakDetection.Calculate(outputAR, peaks); + averageMagnitude *= 10.0f; + threshold = powf(averageMagnitude, 2.0f); + threshold = threshold > 0.2f ? (threshold * 5.0f > 1.0f ? 1.0f : threshold * 5.0f) : 0.0f; + + if (threshold > 0.2f){ + peakDetection.Calculate(outputAR, peaks); + } + else{ + for (uint8_t i = 0; i < OutputBins; i++) peaks[i] = 0; + } /* + Serial.print(inputStorage[0] / 4096.0f); + Serial.print(','); + Serial.print(averageMagnitude); + Serial.print(','); + Serial.println(threshold * 10.0f); + */ + + Serial.print(10); + Serial.print(','); + Serial.println(10); + for (uint8_t i = 0; i < OutputBins - 5; i++){ for (uint8_t j = 0; j < 2; j++){ Serial.print(peaks[i] * 6.0f); @@ -144,7 +170,7 @@ class MicrophoneFourier{ Serial.print(','); Serial.println(0); } - */ + StartSampler(); } }; @@ -155,15 +181,18 @@ const uint16_t MicrophoneFourier::FFTSize; const uint8_t MicrophoneFourier::OutputBins; uint16_t MicrophoneFourier::sampleRate; uint16_t MicrophoneFourier::samples; +uint16_t MicrophoneFourier::samplesStorage; uint8_t MicrophoneFourier::pin; float MicrophoneFourier::minDB; float MicrophoneFourier::maxDB; -float MicrophoneFourier::currentValue; +float MicrophoneFourier::threshold; bool MicrophoneFourier::samplesReady; -PeakDetection MicrophoneFourier::peakDetection = PeakDetection(OutputBins); +PeakDetection MicrophoneFourier::peakDetection; +DerivativeFilter MicrophoneFourier::peakFilterRate; uint16_t MicrophoneFourier::frequencyBins[]; float MicrophoneFourier::inputSamp[]; +float MicrophoneFourier::inputStorage[]; float MicrophoneFourier::outputMagn[]; float MicrophoneFourier::outputData[]; float MicrophoneFourier::outputAR[]; @@ -171,4 +200,3 @@ float MicrophoneFourier::peaks[]; FFTFilter MicrophoneFourier::fftFilters[]; arm_cfft_radix4_instance_f32 MicrophoneFourier::RadixFFT; -MicrophoneSimple MicrophoneFourier::microphoneFilter; diff --git a/src/Sensors/MicrophoneSimple_MAX9814.h b/src/Sensors/MicrophoneSimple_MAX9814.h index a952fc84..92dbdd80 100644 --- a/src/Sensors/MicrophoneSimple_MAX9814.h +++ b/src/Sensors/MicrophoneSimple_MAX9814.h @@ -16,6 +16,7 @@ class MicrophoneSimple{ float clipping = 1.0f; long previousMillis = 0; long startMillis = 0; + float currentValue = 0.0f; public: MicrophoneSimple(){ @@ -34,6 +35,10 @@ class MicrophoneSimple{ startMillis = millis(); } + float GetCurrentValue(){ + return currentValue; + } + float Update(){ float read = analogRead(pin) * gain; float change = read - previousReading; @@ -59,7 +64,9 @@ class MicrophoneSimple{ previousReading = read; previousMillis = millis(); - return Mathematics::Constrain(truncate, 0.0f, 1.0f); + currentValue = Mathematics::Constrain(truncate, 0.0f, 1.0f); + + return currentValue; } float Update(float read){ @@ -86,6 +93,8 @@ class MicrophoneSimple{ previousReading = read; previousMillis = millis(); - return Mathematics::Constrain(truncate, 0.0f, 1.0f); + currentValue = Mathematics::Constrain(truncate, 0.0f, 1.0f); + + return currentValue; } };