From 43c67d84014b037a25deb4dd1534a530ed3eb5f3 Mon Sep 17 00:00:00 2001 From: "Phyks (Lucas Verney)" Date: Thu, 4 Mar 2021 22:44:05 +0100 Subject: [PATCH] Voice detection + bugfixes --- .gitignore | 2 + README.md | 11 +- end.mp3 | Bin 0 -> 6686 bytes index.html | 227 +++---- index.js | 191 ++++++ package-lock.json | 1633 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 22 + tick.mp3 | Bin 0 -> 2398 bytes vad.js | 129 ++++ 9 files changed, 2062 insertions(+), 153 deletions(-) create mode 100644 .gitignore create mode 100644 end.mp3 create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 tick.mp3 create mode 100644 vad.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d1c1dbe --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +bundle.js diff --git a/README.md b/README.md index a0bb242..51b2d8b 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,20 @@ A simple timer for extracting expressos. ## Usage -Just open `index.html` with your browser. +``` +npm install +npm run build +``` + +Then, just open `index.html` with your browser. ## License +Tick sound from https://soundbible.com/2044-Tick.html. + +End sound from https://soundbible.com/1630-Computer-Magic.html. + Code published under an MIT license. ``` diff --git a/end.mp3 b/end.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f86c1447c55551acc994b6b049053ecd0c3f0941 GIT binary patch literal 6686 zcmd6rc{r5q`~R5_|Gr=mj|%~Mr%+fG9X{(03hKg@>V^@ z1}&x4SUl=Uec~s4sF{;5XFZ!d0emk%v7{5eO@4>)@ATf}M8ZQxBr#b`#cY7$y7?#w z2bVsZiP<=Q!a8%SCVY)AQDvF0nXQO%5YL<1HCz?%)mM^p;?@_Nx*t$yiGO!8-aziO zJJHusvgsln`qL+I6Q%FD?{Bk2IM@1xtxgVAg{%nLm6&clDB|B{3HbL1|7i|kn8-Em z+XTP4**Xay8|e%uwMdzFb7$a!yPX6;e5^i8STlg(Uyb9fRREtc<*WJuNZrmfvQVG` z?Q68Pc1x1V2imW~t3FUTHnuPxqo91_Th4uFS2djLs0GnI!^rl*(#Ib}F0~J{e!X%D z^z`hU|3ZU;4i+4_>}97Y)=8B7BjYJ_W^9%R44hDQYC5QW=-9`&_nZ6MUU26H7O=!6 zYyYhHJ1mhYorq=i&D3yks`vH7$R`@Gbm+;v}}z1B#(V9TVV-AFaF) zXtZuy=-m4k4b>wjBYcphe>00>tpCs z11N>k@vHlD_;Xjc&8yu-Flg4I9{#?u``YKTzrzc*`E3mCix5*c@LQ8&l0}d~@!+G) z_7;j9A1;xl=Jd?n zuc6b64SGs|`}WwOx|QU85q{ zBWgHMYZhvxvt?SqjP!3@r|qUGQpmWpCU*4hSs3Q8+Lo4n$_2g?m-X~iUHz+XQ=q1l z#8n-gWihqN5vsHo3+i+^cG}6Q0<$dppeR%aYJr&$GmMjeo zvitF&P6MUj8M+XF6GSZ7ABSmgjUHi7Iu*g&aqGc2{SH2*f$(LS z#$tse5o8x_&x_jiR9)RJU?!Q5A83l6&IDBM`RYFfJg{)tlT`nCq!va%acLzK6_*~i z;mNL8#=6k=)RPsY*|vIEO1k&`uM1C($gJIbETMEZdOt6z63*`5zg3D|p=ES$XzC^$V*xFrX9%SF;FZ#AB3xk&_D@3=YZZppAu@%38KPElDB;s(n zHaW{@~FoIXig(6L%xaWM(=Z6J1t^!{sW;h_{|F;~e*6Pdr>6O%F zTBkz6OFao*Q^XZ(CNqRo4J0pp(mrOnrzrc9kKxg^JI^KKw|1tyw~tdvVmg+vc-z_s zVbQcaghGuO_=6u#1-%pOP#|ktfS=S?vXQzl;c7{~lwSLx3s%pc1{|&;fCgu zH46w9BJL09^Qlx^&k}3zOkM3}jTr8)TV1*J1KnL~b`eO5jhx!(6KkNPqo&(MG{ZDY zP_qwRDfA%vrqonm3VEcySi;(xzDbxC;4>XACmt2krqMc$z_`1!v#y;S{_n`P2gSKI zMH}-H)@O4USnWa(6Pw5$vu96}6}(_h_q?|&+ykL=(>>(uVT5s)p=O~n^UBM; z_3qBNc%}2Kan<9DV^izHjGk4|AzyG3)h85)43Ibn?^s`DqPlfxHqe($BhID{WK1yk zWc*@-OU>v~P~yp|7q@c(NMs|XAtA?$NO!22V2$r1=Oh|e=Z&Ns z4pq^#wDHipNR5~qP3wX`;9q^ddAYEt@kGjH_EEqjp zl;OE80NlLYtD4h54oMb7;%gaxa_bFN=+VcsNqkh;c{G+LgcG%}9*RjUc-mL8%NeNK z0mTQ@$8N-(RFILZ>Ld9?8X<)0HW~FkXBGrW$a6Xj5kp<^}z)m=0 zPn6lDgS<06;a}rutoZewR5-(hY){X%VqB;wefx+t;PW@ycq!XpDTK9fWREx|Tp&|v zBlzs@db!HZ9liRy;qyM8yyRb}!G_38dz6!2>8_Nc({3T@x z%v-pVI~UI(@odjQ|MHT})`S9KXO-3J(WyB*3w#CHVze z*UmZLLf1xtXh17cvoEHXoUew{Fri2{;~f)|Ip@Zh2Xl;isphW)=0?G8H)WU?T?+O? z(VCCyM$Zits9NrCMlAetoEH)90+V?CRrp=dQ=wJc zL354zdP93T zD!>s5d50ux*uLEz@n5_Scx6}8s{D1CVOCrScfJZizo$qI5N_jA0eOcF6D$JJ0TOQ9 zJFlzcp*|pMN0GUWA8tBYZdApKAk-egQu^3PX1b{Q>^H~#r8E7Z?HUlKvf%EfhE;ia z08mWitj>;XF|ap%o_GUK{plq8lB-lu<&VON0jaSR_O?Sovo<1r?zkZ&IC%7O#A_Zc zY9S%_9ge6iwd^yjmG`@$rHe=wd8^mD=j?|nink&E#^W2gp&OCZ&TRd<|5FRB*fpiJC>mWC@F^I6^hMx zkA*l+;UM#{ifKGkHi^A2KmX5P`KptZlm@NWWfS~M+Oj;;I5gt2CLh>l!xC}fJPT$P ziBpfCp-9(nsQ*)ixjKT`9n!i6PR5B`wo6i#cn$WImo!?dbuhcAiJ26#-B`;Nj(Qvm zLfJGlbV!@xkBIGb^b|a;E776yOWPIx#8lARC8{Vgrg3ZmLOsoolfxKr9x08|dzI~$ za(F~lGRY~M%xXz6sGd>c!~6f(m12dsnbc zG5{KEt*m~FjOpI>gv3K1DGHkslC0lL?8Wl$T*EAJMWltzA z+5a6gy$BSOsFkhR9lP9}qqcnEj1s;XAKAouqSK$VpHO4MGz3+J#bw_L`BR#dPfN2{ zP$09c2MyZ*3JY<6-!ZF`D#TV#VvfkJ&^g{M;HI&rq4-|W&;5Bx04M^*7tB*+%^vln zuj%C6n-Pj+Z?pWzmjkaS$zSO`Q^tp4li#HM%uwKmtvNqzWFh|&9WRl5S0$H&;!H=&LEMlm&%~YSxW9>OZ3Jcw7ThR69cF^F5w}NI( zmK9C{>2t=N_*0aoY@E!67&?rG!oo z*kkTjNGlD(*O=ghgB_(}xZwW-UYe_o9tB~#b$}>2b4Ko{x{~A~P#&9fM)OO|%HT*f zWMwJP!>497#r9V8=lBuEh>YS9(IL$&3034{&14Pj$M%n|$Xea6x4d!q zJoDBTim66|p}E4}o1QU5sO;c-L_TQq8C-zpg!ST`$o<(wUti7cmS*Vq0a?|y<0c2r zzkx5;3|2k;#s-95wV}MrTIzE5rV3USJ~Mv);LFqD1FUM*zvsM{hAt(dRai%G>_Sty zZrALI#%ARkhJZ~4@t@aB{@Q9TO)5!d{dkI|P7;b1fyw}Ko8}$k$`q#UW+C^{t`??sqXwyRjLY1wlYs7h7&@6trq zQ_B_6eO!Nn&Dtpdun|#VaJrjKnpzWU5UN3_!;p z*;vc{CkrklX>|MG(2*DlZ=8T5Vn^iSGep#(LJ%xfe7Plekn6I;Qjax*d4l*r&WWF6 zPiCYd8Q@3BHMZaDZS(CK9211^OdN+!%n#&sC zik)FDkU!ciMZ{N8+7Ie5CE%bY)OD%)CZbv*fHj`Qq36z_pE29n2j z1{?ueUCed9pU*0dBI8%<&1EdF7<}E??kAh~@;I`fm|2Y9`cIIuy7n;LJ%Kw_7DeB3 z;f8a$+)8VfA4{*L&qRSa8&5qAx+Wai=Zd+Pu!k?dBjw0jH2t*PfC@SSJz?^5U zn{G<&ZFS8|>J2UYb!AngaPwlz@!3coZC5aXIY3Tc2&G`or|(no>$S4w9U}b5i8KTe zt;aJTI_N?82bAwYJ8USEJMSr=PnuyKn^Q;$Mt`nk>K979E%RZ)Vu^sr!(8!6;4%CH zB-Mc7S6T5=f+o|JiE@d$af__GI`ZY%gx(DOS8TPQ zyEeaFwS+zRLBtgleP>kwWY<4RQg|kKpEB7~Ugb4$<$~&ZNcTZ?)ldx49oj7ay95Mq znX8>B{?|9&&0Pc<0$T5^KF!Gm4=ha`YCm>hk6;0GcXR-HjKGST8f*_(C##n%U zC+a0ox{o}_s=#g59V1M8D!RCRs7uVVQZ>3Sb1@0H^U)U_r1Qm{=v-}b3+5&m*3J{b znd_!*dj+uMr*1!oTf?A`GelfXM~A0ngSk%~zNL?H>u z(9VeXPd1vR;cU9q^dP+eI95MrV>rmyx_YaaSQ1uY%F=}&Juno34rK{wlVt4%yAHnw zuihr2^)-v)MbzAQyI=5i`3t3!t%;UFEA|b`Cdc-E^&64h$Bl5E#@~Js&4sfgPZ<=s zxP)#761JU<$sSXDB2q=uSc3O^>^HKs;*X_c)|R#zPYn;9KD3^L>!C@aGQ z*Lv;JqH6Prw=+oGOkptTP!aX1tXyyh*-p>?dLl`aHM|7Y^a@m=`?-^SvS19Ubmk-`Nq_k8!yZM*m zt*+-G+e?k8>Nj4$32-b=SJ-mV@vM>A$(4~SaC*`p_pnapj{HD7nFsdk7l8)YNVVDf zVS<~7YJgxX1>YK;PI%zwx^;D+W#--9u#=AnPmNzCj(R@^Xg0YY@SIMWFxJAQpkR lgo)kDstKSODEs2wdeI9LKq}BLDgb6|0C4};XZ=_B{XgQGIqLub literal 0 HcmV?d00001 diff --git a/index.html b/index.html index f47d0a8..05e3724 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,6 @@ Espresso timer - @@ -44,7 +43,7 @@ v-model="preinfusionTimer" thumb-color="primary" thumb-label="always" - :readonly="interval !== null" + :readonly="hasTimed || interval" @change="storeValue('preinfusionTimer')" min="0" max="10" @@ -61,12 +60,15 @@ v-model="totalTimer" thumb-color="primary" thumb-label="always" - :readonly="interval !== null" + :readonly="hasTimed || interval" @change="storeValue('totalTimer')" - min="0" + :min="preinfusionTimer" max="40" > + + + {{ extraTotalTime }}s + @@ -78,17 +80,61 @@ large color="primary" @click="buttonFunction" + v-if="interval || voiceDetector || hasTimed" > - + mdi-stop mdi-replay - - mdi-play - + + + + + + Use audio detection? + + Trigger start/stop timer through voice level detection. + + + + No + + + Yes + + + + @@ -136,156 +182,33 @@

History

- -