From 04dab158705744844619761ac571b715eabd0f90 Mon Sep 17 00:00:00 2001 From: James H Ball Date: Fri, 10 Jan 2025 15:22:55 +0000 Subject: [PATCH] Add stereo effect --- Resources/audio/sosci.flac | Bin 32956 -> 37187 bytes Source/audio/StereoEffect.cpp | 35 +++++++++++++++++++++++ Source/audio/StereoEffect.h | 19 ++++++++++++ Source/visualiser/VisualiserSettings.cpp | 3 ++ Source/visualiser/VisualiserSettings.h | 13 +++++++++ sosci.jucer | 3 ++ 6 files changed, 73 insertions(+) create mode 100644 Source/audio/StereoEffect.cpp create mode 100644 Source/audio/StereoEffect.h diff --git a/Resources/audio/sosci.flac b/Resources/audio/sosci.flac index 7c1c515c87a5484057417e53f6dfb1256266d122..354beefd252f63bd8b72aab62a87335fe19816dc 100644 GIT binary patch literal 37187 zcmc$FiCa@w{&%Of{y@+Yf|xK`4GA{^5=ibO7F^m&AS7fF0z?vl%AFfag6#-y)!Oz| z111oZEMzM#gb-y3mPi~?TWgxMS=35ctW0fxBDgQ((yF7@_b`3`hu7!vF;^0D?>XOd z&S(3s6;!cbd+oL4xYy#qKXYD-Et}=b`S)vo+4!UWtN-B%-o(7Uw7W;D`eD3R1%5me zyhoh3qA*VkUcC0|X%P3Ccly<9uN}WPef1arpI4b*PG7x#_Rp)tzf51f5&rXP$HwWa z8Nd8_C1*`vy?N=+tB3DTU(LMm=T&%o`s#l!{&`h?Wcn)VKYw2Bs+hitewp~^Wz>7G z{=feDgH`(9KP4vweddhfbkkt@ajgd)tQ*Fdtb!AQK^7zwGdB0yMqTAjVyek1%;-<* zVxd8Urh8O2svI@6g1=1@cT43r8ZtUZJYm_WuIWlFu}Lt8Y2&t z0l#}BEU<1CXbG*lR$p~9rVGB+?SplyI+3`pf95=JGeJYC6n+pZt8UI9=Av2=)ZOi! zPfRbymdZy4*1YdW$0{rMt7uR!r!y=7zeYuGz!*}EVaTKG4tH0s$}sg6r;SE?24d6zEM!0*qlA(KXI<%68S8}QedLT)>78|>VObzFCMq>ZDl02AQ?6RPG|LL3A=Ee3!}VXP34wue zL>{liwARA43bQ7x@ddjbL3L0CkN6@ryw01OXz&z#f=m&LO6@22CeS z-c2Sy&NkwkVmckc?olwHimkA6u$&zg4w`~2CwBzQJDy0@9&Z4HA`znhZm7W6vySk( zU8TN>n%24rm>nH1Z}HZR^+`PCA7FW1EXWSa8LU1?MDdRdgeC5u2C9-|@|sdd~R)D6%Is+Ob;-uJl-Y}aAegDnHc{qcTH&sjNE8s z5T)Cu44pM(>WcbXBB-(gYMrR_bO*dFNWfWzX*GFS{7x`1Lo=g>lFD7OUP}W_0jk*m zaWG~`W+kSL8X$xCp;cizMd+;Y;$;`pE@C^&J@Ckyh6<=y{P=5$u%;wz0&@}sKOM$~ zg{A0}tJ=F2MnSy`j%09nT}|>9FMNx`(`kJ2n$D?hm4?z9G3+sP*5VqX9^gPVnml0n z)wyfIBJSE&kx}l1IHd^AS|@i2gi@w;6Bx8y95Gi>7Ysv{mBid?+XPw_Tfs9~393;B zOHyH$Z(aovQ#BEfOVA@53F2i_UFs@U&MOC8{cHZ; z-uM4?t9$k8>YsaEX(>9^SDbFZw1%a)Q>Qqx0V{mm77oe728@A*vz_P>*sSYBqqnT^ zCa&Kds9GWmb}?W?390=ELn)PtLt#h?k67zYi3}#~NvCrkXLY3yhH=f=N$9oJWXJ;} zOcxEJ70^;Ns$dmdCNMTpx+t79J|A-?wvq!`m+iN0X;;_4%q`D3dtTLSTh?zx@3QI? z0wFeymK@qyO`Jt7qBJEY@^XUMcz-K4x>MIUHH?+tU75cf#V6tan*YPv{nwupIz-oX zeUrmc$OERG&Pk;h3p?LDI6!Hq&Up+(HKV|ErL=c!9b2i`iAcAoC7}&+aAjm-I6jbv=dk6&TFKoyqe_H=p0RaOZmKLImsOfc6-`YXHP%= z?Ed9_wxq@E>hTZP4__M=9uaw(&9q#<_X;mpn!q*YHYV3&kkpuDe}b`uIJb!Tb+zyD z94DYCpWHWM1$%;TRIhj=EifSD+;CYDRB;N|JqE~CJe%Dicg7NfgJ2dOA4r+R1eqxbkA@HF~E3>P3XAVyztoWe>_lcdw0u! zaBM>ya?22X1=mG#6ky}D@c}U@ufCB$@26;XqF)WT?IZp%&dN9>J9hs~%P!8|U*EoN zow;ZC=hr_^L? z&`pl7+eN*)DDYzV)0czaiI!GBMwtzUK!~9*9_P%}Xm|-c5-%Z9rB6(G^Wbr6JAz8Z zrD;9}u9-s|fLXRLZ0m1SUwewK-G4QoO+3UL^KDfa(hGEOy(ur=>#gDnqP$Q%SC>;o zu@_J!xoa8<+`rY~Y`8toUQ}QIPWZz+=kD)UJntAhv;~#ltfA#O>|Ruy5}o7KW9aQw zh-O8#vA#1o5^g0&F+ThG#_*SfcHQ6)_tvtnvSQ*}>j=g0cAY(bX4}NzA3pk7m#R`N_M?-}7I)o;-~iXFV4E zw&M4!Cz(&l&ldh?-t)K@(VnQ+XZ(=~f1dP46z$dPGaOmxTP`h*ccef3k)dy&weLec zkwM6RTN+IF2leYzo=bY)VH>h%Ks1{IuBXpQF9 z#hoQs*ea4i6^Q$42Q_N$>oZj(J&&ZvlJs02%p;I4>|P|$^P&R+Rj{T0{T&I5s&fq9 zwK>6~q-zE2?*#jz@v}&it+7?qOOd?jYbLSb2Pr*MsG9_HN_Ruo_;`krC zsP*xmOS8j^i)`Sxw}tiPI<2?O;DV|)23}S{-NYYJ1#jKkZLeU+Ap}` zFvYKLgX-q*o*oMk)|(g?!R4sPQK-s0e}{tr<`7Pb%X&XhH-ASefs(_E5~u=f5>rKu zu7YO-siYPo#4Y2g!UV@0tV$b=hdy*4y7bkZ%O6r( zqdz!$NV-2bnYivuK zp7&N%9ao_8@}gDxID^Wv=E=25wCOPvu727Gp_M^!-xOL+@HC^mnFedV1>FYi)JhKURM6Y%OUl z3_ZT~<64S*ch%NQ*^#*fjXwMQR?^YJYulmuHa1rg?F~|LuBdZb>KnXxQZ}h2P@WQ% zBcAb9N{c0jN1YuN4{pU84Qki=I*&jlz+AzOS*q;U-<}bCU78Yww$0%|ULGNP&dO{( z??-}zX=Uukp4A^hTfZb-x_-8}>i6x(@(7w)2I1ONrU5(Lm47aUhxP^5{mOh)#jO7_ zE$)Ijg%k`LRL=F^>BTbw{ADSNa=taiO_I3rUKA31M}XqKvg9P}2u71s4nhmz3ZVs> zUSvTMf#860L|D~q0vtDKog>g!{f#u44bA_~@U4zeR#&$HeOOY@OA~N6tOYAJg}W;K z5s!LF`fTmd^M?ve1^VrM1>U@r&%an4pZX3#ob*XqL4!V5b>YBnQ213@{Aezc^KFC5 zjU|wy6mP`;C5zp%A64n=u#0k9tY9g(T!|*6Mv1XtM99%u0w|{%+tNl}REO2CSACVT zs32ay{?HqN4JmqY)#Txv_E{~L0*b}FwdbM>b!2|~BlM{7#Ur7u;L8`oBdrIZ?@$-{ zQg#M^8L805w!Vu#GGr6}HcMrNzTHijgm~UE5ifQ(l!FGrUx=sD3mS63W|D(u6TI;) zDPUVE$U&pZL~%jAfIwh^B_AY#Enr7>3|wV>{oiNX{%C1S`7njFA;&8`pburCk3Vo*FDe*mxZOJ>B1b+;#Qp@Bin2Hi3g|;y5{473fFBIjS{;ow@|B zo>ZpKOD=PZ{Yoi}4zIfW;`-L18*tL!<9^@WlD+Vo+A$^TAuDoA%BYF*&&ALknkX+< zipgy`O!>;8L&^s95kYr&as>S^J{df@nEm7|GW+ikirahFr3+7uHdVnx)ttFI>4)oc zc?p;u)n#SU6-ZSog&3pq2Wv3Ci<_P#{r-46ia|h$B+O z2qi)>IsREBwFyI)<`lXy>dwSQJ5rMwhg|C*3g6z-aP-vGMZ@Pee99TF)&1yfATzaE zGG7&GUq6uR6XaAC0<1vMCwtpTUkM~p{?@rBHyWI}lYhv0;|6`#aP|xQoZbKU`RAeU zqQsELVkD{r|g zJiQwCpC!)&XfsriVwg*jP#o08oW=w!rYaAU5~Ync(g?WD)&hgfcJG;U`04e3->61r zwlRNwd-tKQlP+H#JJD4l6W2Rb{+-oOymt-QwW#%)DvYXKo)~wgPSffbg)c2%zPRm* z;n#1LcWgg5|HrZ%eFdi9wk z>1J2<($h!dYQ8u=bnnyZ>YCX60o>l^kMK#41CiUQwbDerdH|y`Qgo#H_??X_7}#j! zptgv9Y#xo*<65%uG5k^N?w0E7*Y-ZTaDDmt@8fE&SF+Q)TkZcIOkSfcbmztAmNf!6 z&6UO%CAZ6)a;r9WyEbd{JD~gH@4dJ_|LpF?4SPO%=U=vMIJWWOMN@Y=$*rlPa}pZk zTcDi>`zZy<8cGwTpWenZb!Bs?J{ErQfqReI9tn`YvR5)$`|iDT1<#(wbPh3KyGFxx z@RIA*7AyfNY$5=dSuLZQAoZE~-EMqc>}uNvz&RGoerI6q(U*T*dP_L``0jGRZ#%gb zi?PhXpW!=b$#@+G_$e=*%Hs;81+=oSOX26%*aK@1yxrVBbn@MgaXSnfUOm0I{4<$i zE2vkDu27&)RJSACgO(x^RTt&e<?a zE_N4jL-RWy@8Pg{<5p&0nnr{6Q~5J42(XK^i8($!sWHl1kdiDdJY^cNdHNT36o%mi z?_^yYI*FfielrvOc+cali*+t0$2=D~EX&hT3mrT_G@yjE83EHQpQG%sI}`?tf1sfy z_#=Dem6pfMPuT}f*PgFE)Iamk2dkiRiwMg-4&{2K@%0I$MnI4Vym+e0uT!KJbe0-M zZ@SNY6ub9Jw(#!k*$ZcX_~2j9w|#Egq%gOd6HCPPcB(E{LrIO#(Ire{aD8KuAfr{{ z6a^HA(aU#dzw^U#_nZy2?Jejyel};{GImK&9f=I#h>6s%EK&+BdW|+_XCq)$TqBQ~ zTJL>O=l;#5zI_#AX=r0!sQLKgt?laA{CgiQ|Mi#PxI!J7YPCD;O$p*;Z$Q5TN9Dh% z80H_4FSe`7jFLW?nmt%>}yY7wkQVv*z!0q8o4R&G}^&|UTERvsJ@Z{ z>d0+MZc0p3`9kH3&MYP?S!)ZCrQ2eUDo$@-w(F>15>p*I;*}38>6bK1D~BQ8bFeoKkcw3{bSF^Yfhw0WA2zoiMgNT*5y{ewhG(X zqX`26u%}d3X+}P2PSyAjWv~lIa3a~nPhV$d2wck1>Spm&uPx|jWt6*=ZZzBt)D@2d zK_lx|=pWiv@l76Q9Ks>SeY>Oacym-WP-9wuVizdt==efw~j+0R3sC3J)uNum}8nKM_bmJQp`K+SA(Ny;LqT4X!Gfs2gRh ztLy>lSSIFhGuGsc10tOv&Rd5tHY5V2NEDw@;XN|F~*R*&MF%O0?#Resjt-qgvQKNLq^zD+SN4ayG78b5j5aKfKF`gyd77y zjzi>|{NpZoATo*CEH-P6PKAydi0Q;!Ig`@`qa$r1AXy3-EZ@!P8zrbNrcL#f`htOm z5}R2a8OEAi5+Tn(gFOsfJ{F9o&R$bm%I~a^7{s@+W~`hD86Is)pAP0q2I`)sc=Q9q{lQ6G@EP4 zw7N;47NbZlzNT`OS^m?m8MWI*ys&i1DiXcT(?FklRBxLXy^^+qubrp~~pLjX za=bZr{R-oXom*K3GNx$)=B!HBM8<$ZUoMh4fnd(-iCeP|46*%_HlZ@;hyZ;vUAoO6 zwn<#{{kELv-z6ooBiRfLyDz2vrZK`pDQ) zb);JBsf8Ipg#{LgNa6uy!bvq7gPO>2x(umNgQDyc5KK<89-cNf96`q@I_6@m8<>{q z-L<&=amc9?KKSsN`IcsgpjQs~raGc;Zu2NqOsl}kDh2zDITO<@ELDmmB3a)msJP_!$IRk1=TUa&IV2L^w% zPrxz6gO4*M9J zGAgiMJlFul|6Mc^7cnYAZyQtw{Zmu$7)N3#6%Xf53Bc2WH7y`?>hv%tGgEv!)qpWZ zJVBsc*NwUuFq1>5e>j{Db_F?(qib@>AC86vpz69^=v0>-HvmkZuvx5N8BBehm$vn4 zyG+(VIYoyn0Lx3UaS z1thVwt)3^x^_e`f9>SU>2Nmy|znT%K-u(F8pNBUk4Rt?Ak{Oam^y0)8cgoHS4oYKA zQGB7k#obtFE9ioH!rFcK_nw{nSN;GHZss&J|8?c%_Xgl+O9U31Jz~s=4+sh!Pz;G$ z7I%h9Eg%);0c@abYLyM#K3RS77+VlHyW;l^n_1djn9~Qo&li28>kPK?5W3snsP0dR zJ4`Jg0PZ4A_BZnK3OV|K|2DDWGxzeht-Z+X`7egPE8KXt`NA-p7(gE;359%_q(Fz7 zl7lPIqU4=)+N|6H0!$K61tsJeqqNdZpD*&U?!MQ+&j0YkwY%TVy8B(+h7tvSjh&A;R|!g>^Q5 zHh#e``%pAQ&rdjP5kNbu#n||iSp>R$r#+!DM~4!lRaF83S+5+ujU+w$o^bw))}jX*zC`HWPD45IOxM!TH(WZW+5y`b6)ZuX4nzoEI%#NfPbUU}7K>y0I^M9qJf+%kh*IjnJ*Yfo$ zsI8f)Xb+5k{PE{cfTFgzq3z}Dl^mi=VA1vp+yW?#q^A}{t2qF~Itq;#l^{jW^BCK(<=WBaWmkpwwhq16z$OkJa+zIB7moox*PpY-2ISzJ7E`nu=+LBo%+BgA zWXdtMr8w~X=*r8stn2q{e;Rx8Ui0F7k!?ti8$?4=t~HSg?F_}_c)fvxmKN;{l-i_$hCLtuxIcjZbjaB(WYw%`Xllm^Xs>ig#wKD*Shxmxk{>;;dMz?0b2641I4c`C)xxHFUt zROrTJwSX(2HgZixVtxtOzJ=LIiYK;T?`?IyygM`h-V*%GxEe+O93t51dp#6OIn_>^ z1q4#HouZ-SHRj5a|93E%QJUsC5}3S7T>1On=9z>a);6EVgSuZnq`S>{*R?5~I$)|t zA+B*}RbiQ((irb6pzsq)sQqxOCWx~sH{tO!i9@dz4>LDxsJ-+r#qq#n=3XH)*k>kr zVF4D1&9pb|JA(<}Yk3KI$+T#dx4P4z#e_xz!9#~WAAa)Dg=hD7#XY^6-`WZxB%U#+{5jubeLvacGA=xbbp+^@RY=`ollgk8M87 z-oKY~%=Vu#ZCoe_>&x64ZV|Hcf<12*s6lQ&MV6Xe%}EpV5HVf4Bl}|6qIYXwZ2y#l z%oGH0?5isuZ%tyhd6S3*K4gTa3UCqu8;0UFF^MrbEsi3RG#L><#JL%zu4Vrun6B+P z+uXwV>jlOAUoPBz@GpUnd2yf_jIUL0A4#L~X912F5KzjR;=%X(`l*7Q3QCE_66a#&xV110bPUDQ#E5>w)fa^z9o zYMabe$NKEN;?>FQgMp{jD3kdw;g44j4IK{4A6`u3HR>C={Zy_yp^P?*RA1koE6Bsn zYAoYG{PIQKv&0s^^~1uEFP8uC;YSZ1e80E(9XNJ>^Jgu7%ObygvL9#St!Y@)5RGUs zblnlNgum!DkUhP-ob_pLm+R&yrefN8I!d3Q^N`O@MV42Pi!U?@?ie?*F!QJ*F#YZKVIa3VvLLgpeyPlb&^+}DsHqg*6qAz2(V#$Ka>4PrEO zvz7&r^oX_?D%ZwEZUWq6(Q+iyxM!GD-4G=Yhi;k8zDt8ejZE*6Xw`B_j~NWAPzu+m za3Uff0Jm*D(vn~d{PJRgn%!;F#_@p7j{Y)B5hAPXw>o}#6$*QCti3hfBY$Hlx_;}mEP?8{j z9txanb0`>^1ObYyHcxMx$51YmO)neB%vTSAg46=$3dyEg&dk>}^*UR_vhHxWq6uy5 z1`>&!k&RBE0WT~M$(#(VStjndRd`8K=ZIffI4C z?z`MjUgQnSnr$!T+ z0x2qkQR{+wzvhEf1Ct~3IOHW-f=cczP6X4*Gm8hySI^^t@RR?cp{c7*j#jg=k|I@g z1GOR12X0Zpl9X##$v4q9a@0OLJNHJzyf7f-FtTxw5xYu0R-trefE(}g0gA~^mss`_ zp-Mt4Dz7n}nJp2@P7wKk#R7qZuC;ES=4PO_G(kJ_>x}TIS}x6&^hrdm^j$F^A{2wv zkkg_5nNbsWB+(4+;3d_TGu)eyxs=d!vCF87{GQcxI2EOkhr#K2hkz1V+ zz}{sZiGin6J)8`iGg^ay8#*P{@+0Y-D20&ENj31ggMe5J_}vKn@QxL*X-&`=2IY=h zjqMDYyz30I;q-0}WqMOAronek5~CE70Uuagos&Me5fb-`)ca z*m|JK;_2G}#R^DLFFSg~<3oNEkP#+GY#AhEbHVVu?(k5OY5E-?I74Wvl%WlYK|B!z z(Qa;vsa*I=MP>JEsl&v>H-9`Z`@;|a0soco1G~3o%ZuT_)c8eGNCWh`Sw3mJx}6SD zvGF-oxjMQA0RO6WkU70#)43(My?1WZ;1`~T=UAQS#|`aAu4X>mn$2J#4qn#-S+nyjjV(x}HRwu_~|c@{i4G_ZZc=IX6)KwAcFdjl|YtZHTjNXyxH8r20Y zRg&Be6wa2f>}p4%nv*bnr1ugN{GlnQcIC;-YmfeOal`w;?*iGE9w|<4o`nAhAU|n2 zkfcPKdj@CB(^13;g#yaKfs}d;U6z_RFUtFHs_wV*qAl;%{&MxeH%Uo9T6K5d-t$Lw z_@`#sSf^K>gM?Dz^EAn47!+y&Ku$RTl*n`B1;HgnO*OX7W3N^iSk3P(g=a1bT)x&E z`{l|2yid3)ohHw-8|&=_@n>+_K5%ig7H5M5yhdGKPMMyX_r66>;pKo+JtaY!iaglpB+`tv3q`LOZ)ta} ztiALj7+zw#>&eTT7p1ti;#8_z4Aj(|fSsbt(Im#~Jg7~kmtz`>7%kT&s8Wh4L7yCu&dSv%6h)mWN~G%jhlSKrB7yB$ zZ2tCZd#~NObECR?XyBs-);ZUiHFuW;U2=aHRZ1080rAstQwiLIZeF}5uTe~lHi4Aq z;mGIzWNx|l`O~L=EN(b@4OuYQad<@jn-q6KH3SzGx(gDDlIuaH!Q0}_)$c?F)UF(b zf`R8`P9*JfFJ6Sace(B54`%}#UVV{NYd~Uc*NCzKi$yEeXsBX}5!CAiajrN)lZe^D z1i2^s=sfYTZ2bQHC&C}A$KN}*@Y)KUJ9f`F^FNBw$uS`xqnBXk*5~ReKps!##U#f2 z+EMAe86k0~tL~@$`Ne_F&ARXRd||`S*}io1wya@xk#pbHB!GLU$AwYeaI&6aPf>m4 zpi&!?b;(9-azBLKi8F|A;yFao{j0*38}P0UcK#24j4xgCMRrT@XRVC`mG?6M$Dq;@ z)cv{OIRQ*_K+%m9dtksWPjiF^!Yt;6-~bxCX!yx@E1Bo_KKUsyTphUKeVfoZIY#7F zTPYS|yoSP$i6IruQt5O23B0@n6ZLp^n1czng!lcJ-*Mn?gn#XQaUT!<0k!y3!--S2 z&LDj-MNgZ708d~ICjt1;T+R%CauH?+KG7%(f}m~1rJ3a~7t8@_z|Sv#_+febp?l-C zI_EdRTkea|_9}d|j(%95vXf4XnNdZ7KzPZn$&0BsN#f4L8ZtZ`t8TtLk+k9L`&Do4 zeKP;|-7B|!v^L|?Dxnxf7i8sM8yjHxjcX%((D#XQeIGY)tCT=R(7 z{Lb?4_x`+jBlGI%<|T^B^$p#QKtqC$lb5oyTA#Ye0!p}qq{GHp9AZo(Z#_FI2&2f$ z&pKA-ulFULOIl!kYtQ;I##;y88?O6oQ$&HQl<=|12tU3tp@2XafT>MPsc+ng1ar?M zK^YJSi@azccdTA{HJ>xQVZ(+i=VmW%$UlGS?Rqo;5ek?&3!Ys zAi18D3maJgga*R9v>sf1cgJc!SEA{nn!4&99o5$FeKG2}I-}J1UGi zQ=1oGD9F<#w-|vwR6vj))bjHRq_R=QVxqw|j@$d{vUbl>=BJC~2ikw$a{f6R>#7M2 zlxuYB`wROKuRs1wp&e9lE)i4M72O)`uqr)HjtCv!^K|Ik+ZQGm%>Vi7vB0(^AAPaq z$SU!GW%~!yJYx2h#BY1QEjs<=wH31=BD4x3X98E@2-Y-MH+2Nl*%3V%9ymr>(_AAN z1h@wU!gNhBR+wsbj4G$#0D59TD=JR+DGjASCkIF1Jxn*qB7=k7!0*BM$9tsHs(5K= zTEzvKS3;}AF$#4~zz73hGwp%N%=iLcaBLUI z;n5z6p=sb`hLCb*W_oBi4#>IYbhCL)$zkz>=PXU+Qn z14(&WfF!0iA&kx76_CNd-BCXoK|^xbBOn0zc^QyFC+Qtnv9dxF)J*(zjMfxE5iODH z-Do3X0tW_THcr@dO_7>R&9rpuyE1d0H#QUC?Vu~JYLomDBdHS9mx?I@ zoC$=WZ-RKgsKm=MX;(p|z-5a3#3?^PPUrf^z{qQzKv6O9ys!<#lx3p|+$o!orW#TK z)+O%~uxBs_Lbr$+b{0V9y(hvRF#W63%Pm@K9Rv6r5 ztL#ySfka)_j0Sy34M2Mn)5Wmp%<@u$29P3h+Gr01v|9th$Tlw z6aq^daN~Xwxd&^rO95PzGm_#WJ!Q?jPG2?X6L6y-%8LTj{Q;&4dE8bZ5BQmb@D%t~ z;CgjBWe=_3E}cRkg1c+8+WKUm6F?|sO-KJL7kQOIkdxm8gmI6+wei#-9&{5-4{K?u z85FYdznu!q6F^S?O+8iWzZIz)XzLy|l$yJHIlz0H99jk_X*Z}yLjk>Qz&FOp)%94VVB#- zD@@!n(5934oH$?DZG}g|fM^6lJ-lvCDrnRY3~sFfEF)+F)vDMk$_S4%%)l#R<3d(o zUjPG5r?1gC$*rS2U(i)P2&MuSq8HN*sRlr}Im9S>+lfkIX(@P@+V>!P`aXR%m|p8v z+^KIMFcAtCIw}FHoIeyRdyoViP#Ewca3@|E1*_51Q)-q^)eWb4(5hutMQdLv$Y*9$ z0#gO}w7@VqQM5CboUR5#j|p*TxD#O^A3T6{s}SQ@)8Ghq3v87-{ZC)Zz&rt}ni1#5v#WzPdUDd>i&$i#-Ge8XTb1wxJ&24uBMjJi>J z17x;mE%NtHuPYAt3VrF@$hg@U+vLYYS8NUSGt+bPDJY4{Y;XzT#A-u?Xa zwJ%pzKfRy*@4)6KYro82Qmd}3Q4ZFPst|gwv9Z39%1cZnfdmGDejJ;aHg|4JiJq<% zk&W~{?J79w)ysc@_yw}?kg}|k^u3b@oe&Gg4D*2MwvUP)wi8?`70hFRqTY%!7 ztD|U0MG4@%)uDo>0u>!J)bw0rf_VFl=U?2ta3OH{twn*FC7;y*qKAs^cYGz(wLw+Q(aV*r}FysXYiD6tO@~2!R?iT-5)&o^*X`* z&f10p-!Lz~deW}Gs55(UgYr})qTve4N}w4?+Kga)4!tBb*`Go(#Q26-@=3)K6n=zx zaxDLBVEiBB3u2p{kE`$MhL04PAt9zo$86$SKu*S6rr&v?JbsNkFQ+k22SX4|4E)bA z?Y{HP*+1^tvjqRvu>k(>(6v2VV;hK0PL~>G&vkffsU~pG8Z{>-*{7>Q%1Uw&fZ7@Z zTBzKCG-EH`T5@SN{;w;mU;TQG-KMxdbfbo?e#ja}HXiqwN~AoJkw>9|Of?`M2rn^} zvm_|J?MjHXD|5ZGpEg^G$b=h z#86rch<+c2a=ZvHxq#F}virOW>T%FEwH)iq0SJ5=w!Vq+$2 z2F64ZvT8(%I*hcKxif%BP@h~74X7~14MA8wwyAZ3#ln3lTx(-)gx~w}=+^^h_wIQG zLTO8H*?^L#>B{R&4swlUB@}yJyvojtUo#-C?^GcJy&P#QanL^AeMhJYdN1NSZ1};eb8l=*tkwYC2Xu;_T7xBC-iX zkE*W)Hk{rZxL1Qd-f!R;=B1d5)(bTCjhe*dATV+$`m}_m6jg+$!8tKqtV#}tbGqH6 z_;LJWcxK$w3uBjNu4LdfCvE?^wyN6<#)((&wQF)gR!41Dok1NbMl8jEf$hOgo+CK+ z%~i*?b$giTTHy_NDf3CkkbCL#>$E;_nD|2wKQ$#WH926fZ%Rl@Pd>(%Hivi~NyI&0ca{s#Mn}M-Yq9*Bj7fHr-@2t*<=Ot@$%A~;Mqj2Un zQ3rZG%E0JE(sOq4{=JLj)|tW|$CK8F@eACsZ1T?+3Bc}81)ugbHWnT>rp5cD$wkQl zS)wK{CsLw%IAGZ?`(%&Hpj}~}8HZlJf8pV5upzI_?>K#WrJ+x#>~;TJE2TRV%N+W= z#uN;_q+U;!2LT=V7;MY|e4zvs#!{LFuTzyJR4|2*{Bq2f$Qw+zzg z7-a%|L2?x@nLi^SBk7^|3vQp6ZY_fQlT5ag!X=6u_cmOAvHd#OV22govkU+B%`}6U zb0hIw!`T~Wg|C&hv1fb&prz#`INl8<$FTiLmE~HpoW+maIhhG{dn5x|fOQ1U3IPAM z6V%=$kfXT;1b(D8YhQ-BR3iK@P_r3Y4XqPr$p8`w$ykY-ffop2TX8N!VUNZ7;0l23 z<|z$Lp3G99|AMx*A^?GoYeiyMSfV9D#RXPnFo-*p5NwSAU{or;Iqi?2L$O96?4-+d z?Mc0CfWd)L-Rde%^iKh#-4u3Z^23oyWD)_5l?+zLMi3t_6JYwIQf5p?+(Ll2TFK?kR#uQ(MXMK*z+IK0daTlUd5=Fh;Vc2}Uj zS`ch8cWpB?DuujhdSGr1tB0~>!CqTWhA6QLr*+cw44A=43f%_Wivu16DApn~z>*;J zv`RgcM5bzm(ybLxX9RSS`unqG>=`x0s0jt`L`1=YfB@+qs{jEF_fIE5f1kuj22{Wd zRhU6~LW(cjFy841L&B9LF*>4S#Alr{&CAOBFJ!MNt?nRBDOe6&R~Kz+B%^2 zI)>)UlmMX1r!H+KGyz8mu!2*dC-p(rG_>M@x0bQ%54g{pHhCpkeTsAGb zMy7H%I_N@`QV1*z$v`uZT0z834$EDi9FqY0;_qik0927~6KH|{tZQ;B2W&xr^rnZ@ z2s#rPNg(!x+ylzA3Z4pgJH|f1Y9dzQ^aMnKv|LDD6GFq&ADMtJ(wH4lKyRPsbMhMX z(30}Ojn<8)*oj|b{LapaEI{vy`JG_^kHDaUSdkY8h@4{Dg`s+tNNw$M;tYHSP|n9V zJiw(g%7MAz7^_qxlhg0l06fP7{DWx$lV3L#1~wAz8wu!QHu-Pj*l8R-a+eqdgl-~f z%q1IzJ$)elVrkBViU1JfkTJl!wpT;1;9kBfpe0fMus6`CPd6|3<1W}I`PSVat0+70Is(i9W4bBH(;xc z^~i*!Mv%6uk>X1YrI0xnyZ2&y}vdlj%EFbRLA0w4ZHP6M5_(Gj53cMq=0D9&(1l;JTBF)>^W zk>wz`)U9g;(L8KxA86ye^2Uq@*?{SScH3#<4l*&aix_*I#Wva_g&9m+HwcyCM3po> zt`bC@8W{p>O{Yr$`oG;kcUM!;g-|GP>JiJ_4&tyQ7= zPF>K~fBXBo5Z8DiS8mBsP6D){Ppiu}0H}L@X*LY(kgPUl$ z0pwiFXbs5d05${qUvKpStsX(AB%WGUACU^ePM}KKPLQFvswHGvEok2cQw=6cDZ&__ zBH(+hiUT$C(=iY+QVKXGYdL!s>{f<@W-&5NoQdf?|4pzL0n*enE!rc>up5M@6b6t) z1EUY3aDtZUn#&eU_ex_-Aj{Q9Pz?i;MQ;N)V*o+`;Prq=GDYPBkA?h^Hc<8^apK`83>gZbA>V!!UJX?)5U_qxT#*U|Wah%=`tct-xr`ON~FgHP3Ndvqq&6QYS zbX2ziDkB5zV%kS&fA_!32nZ0ia?3t&7fO%03+L>-B%`xw0uj_}bKmOP2%4m&c$rA7 z>=v9l62%aRG`)c7^Z{o05a=ARt&&_d2Yf%UnK2-Y3JrvT$|2wA6nKI_%h|fA#Ma$w z#b>I0fwD`?Ur$Zl_{)vpSpGa05cwT$K1G6!uGiPspLso&Mk2n+b?D11!W0y2**%rk zq{q*%f102FDY|`I_M@w-hZ&388i+C_u)2s*A!4+CO+$>gKMw?V^#vgF(hgG8d3wLe zR7xw`HG`3K@&vr$o9)-%WnRA4wr$-m!=BT&23j}(S}|aUMPP_YrO2Xu0&HTU+MTze z%y`g7@=kP82YJ4WN_hPF%LOMsT{JNpKj+EX{0F-BuCon7Ttks2Xx1xvB}NBSl{_^OBK%W#gzG*JojSXOme2_s72{{;{-SpRG2q@%i-)<-?`7iCCV|;vx0& z6IB7bK81h^un8^JXq`O4A!w!cPSZx6qlVK_{=9*xc;EzwIeX))f`v(3v}x;N{dhy&u0Wqx{INEO$ z48o=NFI>E{izx8n7k>JD^ZkAAt{hwvs9MI6b++oOYEe@v1tcY!lG}L+I#fpGwKHnP zRZDomB}b&8O`dCnK+WcBdp?`}>DRr1A>HAsnOr$;AA(1i&Uq$r5E()ZZz3SEHg^^j zQwE7KD!;~l*h4F^ZVDsIj*>t7V~^t1gF~+tByG6hW4V{@5uMsk1VkRPPYMJQOuf;V z9+R>YNAk7Hllde;2~^;>!$1#ngfCW%Z`<;iF^5gi-9X`YFMrb@VkIeVjtmnqhNcL@ zkQrrsY;+R^G||DP06Nm*}eVkcD#S!_s_HeaDTB)WUq_VR*n>9Yr}cJ<>; zN&DbUAfL?i!Xurn$ydq_+x1iG$`LMtQ= z+iSP$e0M)zgftL2$Bq(Dw>{qA9J{{yoBg&1?nuBV-&)=!<>z&#sKW8Vykvi_jN;HY z7FttzVj0)ZU=>Fx15-)26&)XZ51PnXC##2CH->FnJ`%3WmwsMMV{9}>or!JqBc>F+ zj#}1__NQp-t8fxpO6$Bt0}oHeXl{#~wm0HY#_a8n84K60yjtkPvp-;CF8pWE+&+}j4(CY{OVK7Pu8ok!};jM4CN{(^UKW<=^88r2YwKUZTv4rIUz zo?{BvOf-m&actR1th>t>+(7H_NgGimZr{yd-=yyoVdFy~$>+PEEzvYKCF;Z=HV3RU zzoseAi%j-%u>PrtVwu!j9e&Y_&mJDW4!`^ApCaH|Y($by_5~+!UyC1BW{BJ2s`VZM zPDYib<{(Wus41sH4dI-?=H@xcVf3c%BL3sY@VQS#YjE%HUCG(El#MxD_4Z1F z>L+bmr3f5Y_Az2~YoavIA%OVNdVgy2|Ju^1rY3$`lLYD=+_Z`ebwK+*JGWNUP>C#m zCr&Y&GkALwQ?YzQobM(}*~MTAd1anlOL>_)pv9&p5?{y3Xi?sXrU|3L$$WB+1DOQi zm>3tTVMn3LEuy+5TkwmIQim6L-_EbTi03#vQVovL?%vf=K^$3yxTS^cMOtIoKne6( z6mF!TNSWu|D zg;;LxkHE>NGS>J6R zcQ+!o2~Y)VTN5B~k2t=A8dIXXa%4 z8b@%jGDWz2ach0}OGK5lOG5~V_+;O=H|Su8hf9v&V(JpaP!E^b_Y z$w40#lXuY9g|Csk<;yy#(fbO6c=syTr&YD&Kd!Es)A3~B(&m9D2YwiS{p?TcHg8|M z==O(Wm!f|D`oP9hd8ckJ>W%7MbmND-Qy;wYb?w^PsKKbgB`5N#qwWsWZeMbC@OIv% zQ^Tj%{o>ek)3L2RcjO-rN4M|^>gR`XY7Z;+qXA8 z8mP{Dbbs*X*RSLa)aIQX{Q2x)?}ovfQFkAmy4j2RT$+1x`v-X=Pv4AwKYG{jlTYi; z7tGnQex2>JLp`?Z*H>@hJWOeBP7#y`1SAK?1^DaTB)+V~hP|wk2EN*(kiq38s?qj^ z(;3WVT&xRMDwN6+Wl2ft^y$;*siw~(5eC^93>T&gUKL)cLQ#U&;PT0pDiytK8gtb}LoWSxofOL^T8NRH0&^*YZ_}^Y^-WDA4;7)!f8V{tAym z7QcaFmHHoCL9q_*l>`Wa{7*IsROLa!6d|Czu1vSyvikbYZNr<-Z<{lI=V`~*tv@}Q z82QWih4-iN1hS;ps=GehUq*@i0=Uk^##TfV+8&teM$1j&b5f&}{Ft3q9n{9#)5^|Ybu zM<3T@EF3&~D{|r3$hVEX)p(ojkxMV_7;b;_&0Sl^e){3m_>4g7juJtjRUvGNiIZjX{fm_8BUQM$rI6EI6n@r(k2yRR?xa$KND z3n*t6Gzkt>rZuOvrld4mubAWy51)B>X3NgVfs6uiSjP;X|YMi)(H@eEjfC_Vv$Ki>iKX*^)A2L;l8XkGKEDFMj))ZcFySW<&8O8#jBG zwM67+d47fkJn|-CTv%9Wak7?CQXE%!C_Tt`)~eV50p5^FBr<;ZNl4cXziDB~ zP3hjk_+aaga#_#A`yCzgo(rXWC!C;Pc@n!k=}NY(?E31mvbdgwahl5H*y+a-sL->) zD+B`ADAX4YW_1C^76+{e<6I3qC)Aa_t?QRo#P}WE8k728v%0f~ZoJoiBf?O#AtuS& zFZ*G7RbS5W2x*);)AMw^`^)|(nY$~>rtjljcq=Y|*MsE*v4#Eb?q};lLf&Q;R+W9L z8Xf8K61St2^N&ipII`RGG9wNfBUbBjTIMGo5k2o}GVQ%wG~x=cdmPV#h>Kd=iwlsWK(^FO!!Y|G zD{b+LtSDN&zRB}!rTnf}vL3p`72)*G{xm@+0Es~8K1&qhTOJTRZ{EdLHV}c-v&!JD zGE{C}6MHgj$*!7>%)|dOdd1M>TRYxiS3S!AR@Kx1W2LnDZ8w=vpwX%{NenOdS(lNqvZj3Rg(e=pSxrIGvN$LieyTdVoN9^i{3Jj3xzN9OTa+^G z!_Pv#)n55l^Ggxi6gF23)SpCYday>!8&kuiWt5~xmR)gLBx-W^Z8#ZA%M9}@RdMu^ zF6k;vc*goQi|WREbaQ|9_3zhpZMk@Ye?21dX~MaMk=G4|gtT0^P7}2rY0K`q(j;Uv z)Mmk|N^}K$H~&&a(EgL9QUkD znpK&W^)HhROCv04>kWo8-+dAhp532)pLzIPe%Nd5%vY71gl_W{^VJr)HK*@dlO)?H zqf{J|HaR_I_OvkXY5irsQZ}{sN`m{|EY4~y#k$rW(qO%n#u+`8{$tHH+4b)3s~2N5 zSF*c2&n@KqHzU}XEyX-mwzgGZJbBn%Q2thERsBL=z4C%SYh7`0TC(wUEIZBI)qTM; zLDZyyt+e8k?C)Zzdked>ZbZy!kM%Cq^{+R?#=gV;EY8qsAL`olCgZTTPd1c>vM|r~ z`9Y~GLjt^CX1lNOT(LVWJbk4~rJv7G-1V$XP30KZRhgSa20vAQpJzgAx4Ghzt!)jV zMTbmVW6$MpF;o?w+a^2Q+Hdo$cozyzWpRKfw?mv5VR8v#U70hHXf{ zV0;(?^-!7MS}aW}xzZBQaI&HebJ3a^nnT4Y?mUxOxT-jI)&+CQe08>2e{Z4kT0)c8 zJF|Ms-Py~^8=1QoF_qosV&>uQtG7zK{&lVRzn*_#y{J02DXPqD{IMDRrz-tO?8>yB z@?dJ8veSMgHi#VpsGJpwr8qybSH`=0&&aOiTx~w?Dmq)auu0h$w&An+2}y6G4ZM{- zE&DhRdmhGb^Gk+rk)ESHSJxk(3k6MZ-;cV$>a=^(t}F2?INhB&D^oXdOnqkcl_Q7U z*~zWJ!QSrFKI1iLf^44csa~sd`tNZ@^5z)c2`MXi?zu0Ye}3Wj*)~_YH0+P=71doo zeUftZ=#k=fOnb-d`(V8ZGrfaUx&Xbtt7l&m{r}8m>!q@6lR2(jl5RY0ND)Fj^`8E% zS8AyFIDzZ)7oBnZ$n)_}hd)k*h(?1SHG+Xgyx5&lKohk8R zmehw*(>voz?iRhvd(pip?#qUYGhF__$rP1UR!3=~?r+xg))r7>ZNlKy;b$^--nxDB z4D;32@6TMjdgY_Pf9qe8%Rjj(t@&hH^Wi_ey!XPprOQ3meY^Mg+}N8A&WrPXs@fQi|Vbui#mHyRH#z^;r-0Gip?*IB0~EsK4iJGy?p9@{zo2DkwR0dFtDSql%^2ca!)E_>Cy(i zVtZ50JM{hEDK>tsdgXBIr?0&8s@JTepB!HIeaqfu*QRHk{`+x$eNKm|j_gagqI% zI#Cn4yCU&^W`Ae3f8zaw7(W+*N7SW+%?mEpbH9p<<5t@XX+`R4L!wf4U)`(aE4Wn! z)gg_y%ir?(MfZeeLZ{lJ>0++ua%j=QcgucznL<)#Eo`J;>lQ zJw8#r^XhulwAL;ATk$*9AoDmPxVL2

%DT%>uk9!iM>%zNv(Ff70seK)=?#`5-w#F)kQVvXL2e< zK`-WA%B!}zkU=u*HF@IT;^$}hm0dJ>Xeek@LmL;+_AH3#slF@HR8#(vwF~?zl6?JM zTHsgazd6*HcuD@@;NrZp>Yhs?`-e)wdmr}6H&<5=%=A<9B6{LP12ZBtOE+H(-h6Rn zz<(7l95cr{P4eo-I#ZrNt{Lm1)v@LziO1UHX8#vxJXS$`xY5z48|n&)*9q2Wj(889 z$>4V`)#^@q+uU=N%UpD46vAwwGB&wM<|Vn!d^LdA)qYx$d-U;R_O15zZ5to^3b)?A z`9(A1rgFK=ZRuHoRxkMZU-OmAw?4l2-}6r`=a+{4`}Skzs~-o%u4b)azRuUE=%1gv z#~*(}S1y0TKTtYu`=}`N(;G=UgJUJO4*k%bZc~QM=&%TQZ-h8(CPJJHmzTM=z^^*ZKwuocPcsSgS4&Y3l(r9TXn>cx-js$nEwjU zhvnrod(+G+rO9+vdBNJOPfcCuuC|s1C(SCxG&mT9Y|O%Af1Tc>2ygWihol(N!Zx#+ zs-p=>AxUvPWvl&CLjUR`i%qkKEux$3-xXJK7Q(?S&z_A*p&!NYvM(I>N@)tOD4y48 zuVN?6>hWwz-Q*dY)^OoQ3h&<4vcNN`d9uaxy3PgV=*_^f>8*#$<$d8;Da9;rS@?Dc zJ68AQ^Sht(j&-j%LA%m5RFlG~syN}E6nw>e)I08Q8Z1@Tp5}y; zl~evETOJ3~wH6n-UoqvJ>^bsDYQ(~@s45G)^=eCa^=H$M?}(XQhRRjJfPNTWC&-Hb zT)3j>%F)IuILfTQO!I_NmW@R~ELZn*QDstgFU}Hg-_xyvL>+b0Z{ymuYR#A2GBs>L(D$`mS2g5kl!#r84+zOvn**&Twr#!;E zXA9Gn(%@9D)Ge?=HEETWN*sLT{M+t*c9@|WV9NHaZp$}%ih~p!i!duE zv>5Nn;>kEH$ZvduA0J%HoQt$!jgPi9yQkbN*_2)p6VN2j`mR0rU^pg9 zz-d*fE&y{SQ@)74dQDJ;K^skmiWAt&q#+ZvB`gz0CT zPC~qAbuNwxIKFv)x%_HbIi^5h)tmB4thb=sbfnl@BE{OOcNqIx*sHm&D`Cn!9(5Gv z?S`K6Z#}E-x~|qqECJH>A^T3AgHLXQx4_D2l~-bFfr4}O?o39xRi@{VRa`A_g2AZ_ zb6rgwwNUV;+z&f!TP`MK$}7F&u*R{EllkJT%sFK%Ma4%xVd$~4vG14Vm`c$MuMdUB zt4Gr@w^65yJG7tX$%Z3c*q_&{uzZjBa>g=I&|PWVg?k_+r;BE9S}3(%4SqWa(;C?E z!MY&WI^!|#RU*A|x`;}x_UsP8CWVWR9BB^!mTbJ@enUuDh*ZgBH|KWeu<(K zT&77ngSMx4!9eYYCnH1+$Mn8Y7yoSOjTr1zaH|_Bjb_BkQN)c5_A6xrCb=Sp|FJ$o z9LSm@NflF8#WJ^Qec|PRgy& z*V88*`77xjO+tMTm6X5w4P)Q1E%zLYp`aHx#0R`@*4uKGyz@F?JeOn3J(I=I32(Ub zwP_joSq#$wJxgNSIdrnkYx_`>YWR*mb8hjuknG0F1L2o=>P322Q zd0`4^PAW+JswbLElw^`=$!+RPyOQj9rSVbvC_U${SJ+D=OD0{JB&M(h1{Z0p)QA{) zCsy$uY_OQAiKKdY=dml{4szeIV=6n-P@9^dMqD3VuMfB5wMu=m+XT5*Q<6A1NjxH8 z)KwHx792KOO)~r>HMB}qm`hUQM7o}`I8e$QJh~A-absg+eAJ&+3G;Y>wlX>zJ-zF`pQE%^@t#6T2?Nh|j7Q4Q z%w~rLea37RchNKk=4N->%p%C(GTpS2@koi))~C(Thc|Ga z(o7kn5}ota^WMN|lVm(xuS1s|O-e)`RS2nFRTA@1pV=Wu;w!}6oxbEofgM9AV8~GF zN>VguPa=a^ERY~qmS+)@u8ifIB=(^p^5l9-jyqPAxw9B*4j#@1bN|jrnJ~mbXGtoG z{3cL+slCxcu0~yqj$b}@({%ahskavY&^G&H;=)YwmfpWrh^b5`ua{nb^Na1(<52s4 zuyFvkquPzN8*VPRc;m!t&;PaP_UoUV*l=?ZzH2{Sup#fnqHijHxY)bsqu!{sGf#Yd zU~T0umloZOp1XL{z-zlUjXb?mQx);^&5qpB+{f)dUQfH$+LWUz_kD}s)jW+Wf3kJF&UW4TSA#%D3-!LsB=Q*xIvX$l_}y@bbI#-J&A%a)-L z6bjyM9~M479!||a3{Hx_89h`imCs)Op@RoCcumTJb`JfcKg?_<$ZN?@rVDux#UD|)Zm7@U+t;Q8#wUIK<(N^+hIOi zeEU-L+}pSB)O|7X^V8v1&%eKU;KtF&UwVcfwl@Z!X+7Ftx+>8Nk`Ffd96Hz_i1XRY zJE&0a?s4-Gz@W0i!^1yrx(lkwnasmNV71 zI}vvrOW)kTL)P|mcuw@Dr^6kK?~jcSym9sim@M+X{vqbTO&Bn0_D3(?n)h`_)K7y4 z_N?uQIK6KC$)<0<`TB#w__QoK2BXdmLqpS|rUY z@+1vS5`jhyl|H=P2;5(GlTa*m97|2PseDviH9V1&`on9u2Nq(g;Ee~1NBt8I!c3to z#o|>aU*b{d!rSYHg=!@YDi*(z)q4)6BN>;loRxU-e1sZhFe!?j2v%GV8Oy9=w{<^6K(; z%MY$pz4O`|>4L|YC-IZ&Oje#37PKXSLlIUOH&|Jlz?dFaRB;PI;U~gJtKuu> zbF@FWmNDtRFR0_-8alfOT8omqp*=6UGyi?ir zTub`*xGv7DbnR4prOy1yZ+ed(du~qzNB-delYS{PyW#FyPNB;ls<*JdG0+yADo89g znk`a8y_;=&`>ihTc1Z)j^x^*R%9}hOk<<6>X5{>jB5mHh={Y|#=QKzbHpe!3{FQa} z@2%@s9{=|5r~iKS$i`Ry``s!Zx0AVBgOB8H^>I7M*sx{)@$X8zb~7O0AAh*I_2$O! z|NT(Ei8h=+u8)^Kxm}@VdPzZCgp`zukEXajs_44f#Kzvmyztr&m7A*rt4(t+KKFuG z<)sfB8u|xa_#gLQO31FisPSjKm>JVk=;t!`VnoGe_J@Dt`M$uc+_T_Ck!JB)_G@z^ z3UPjcAA6419<@CCe%!^cdde!xB4~U3UJ5lpd7<&oqd0r~69=nnH&>bjYoi8h^F$3N zSg&iW;aWx+y{|4*% ztQRoT-ll)LfxF~5?O*5krKLBw{&4ftjrkA1c5lMB9p`Tyy zr9?6Gu8ZPv&H^q+1NyrwLkup{XG#UTaWp1qpl=COzP~2JVf!~DGHaS3Nhzr)tSG!F z>M&2#4Rv3t3HSDoO)LiIN=18X(~WkkeXPUo=ww9W{6rnN+|s&6!t2B~B%n-(-7%42 zw%V;`orCsayg2%36)+B$Dn&~mS-V&ES zI9iEGqN(?cWhmZ@>|x6eB|sQz_AO(JDT67mFJmX1i4@Vd}#TRk9(+#2Va7qCwo| zaFF6rcxZ8Houi+7pIoI6d%;g^89SeDWa_E-aNB6!F6RZfm&0uKPtr#gh|ME%GfV4uTeBn@XcoFJZ7P^Dg_@J{ z#-qnN&=OOxD;|ltLwJRb5VHN9_x0Jbx=MC(*OOd&A=J?FZU935HTX9 z9&gKnYUhsb!~;4U=CO{Dkl=K*K&mtluNkGH&B-Ri6E`N*MCR{|7XMO(S0W%O_@Z)= z`T6-f(N9MUpqauAGbS?Z6B!|9@rHM`#glu;P*u`WWa}fP$A=pZ z@KMJc(k-2R^VgsOLk=yA6NvROl`;g*SVIiIs1#KrhXP)>QpQL7{5~iQCnqR9x*_u6 zEDq7faRu_>3g-zI=M_m)`Isc_cfnN2&U^5SmZqOyvnC@%XEs|$cAU@9Sx0tdm`4gi z?0aV|*ZS|ClYBPeDO7r~nDJH~wsc&pIg_4lxW1dsQR}?x%b05U!+H7NO%2hlE z{G6Jpu}14sNwuD%VR?**qkSMj)kTc-Rzni2PuO9av$-;}!SE3;YG8)C@@_(+f$>rV zMQQw3?f9~Hfk`k+^k)m@pQOQV$sF`gUAkElekt*og`x^CB^q`N_$Sro)kWNg z&uObm-axgz@}EkXMpG}CBd<(g__F?3$LXveu@`DsbMhMWoK7ZvC~&MXupYFRYG`Yu zGCfo27DKu|Qf}2)8b{>TFxO?z0hb5XPot!PZJ><=Vvov<4nrxe5UAH`(NE}xuCN$^ z=ct{5sxHdS+^0QYL6fY}=`HSegm-p)s_*OTm+EaFJl37-HVgG#0TTU_oi^F3Wi+#p zuMq0>eavY{>+>D{o=23*VJ=poEeVQJn=JpoX`^epD+;+wb;5fu)5goGB=;vBg3bu9 z{0yN;1TjsSvuatmk*(AJQrM@{2Zf)(p`J*KEQaQcY?r2kUsUgAT2qyN68c_)4-wb` zjib4M=`y1Z`c@hG8m-8$WF9EG4zJcchBpqHVyu$XL>7$XVazcU+=(J4NX&>_V;M7Q zEdSi?ajYpOv9BsmN=-^#t&@J7gJkgM|N$O0P&MO~5nqPk1! zPEOVEJgf#H7$G=+eqD^50t`RaD>}5VCDW~%TT#SRRn*x^ zs~8$Rq+$!CtdJ0!MHC|pfq{zXh-dQf1DPK01-Rx_c?Rx2UV(64~(TPHF`3MMkf2&Z@>hOT_S z=)wC$;(T8blgsi1o1;T)r72?Q9rg6C5W-dH9gcc>afo9aoT-4z^aMXe=VmbqFM}`B zKs<^A2uE~sBAg`*3~bCN^ACkkg77J4ca2yhIRqJ0Lupsnrst2%>;Y{B=2Nk2nbFxNwm&w zvN0rPGN}UJHnazt!aN;6=jT~-*xBGkliY8zVdKe@IGb4?NOq(^(z?#}rAXrf!%cF! zbTl+f8wk#}$?aD1vD?Q8iN#gWpKr1| zgQ_I<+n5J3wUzgq?9x0=mB_Fr3662sIKL2bD)X?Q37SU=-ro{J{M@n4#*+7a_p-75 z@)s^}j{*T79-DloUL^i?;8-z&&?Dq+I)i8L)dcY335ZMHYoPPxIuUQZm-7ujd(BdR z9(pS6+1r|GW>eyB57N>?|79+z=n2kENF)=qI-nRn^0BsE>F0qp2efXQS> zdj?c6?ntkj+Hizkl7tF4N1_wjKkGC9(R-ZL0K`J~arQ?I0rLbMnaMyEqGSHrm!4rK z3|lks>{O4Hnpt~x4}ARGUl>$FjC&ZZ7u`KoK2fUyDRV$X2|Rml$sz^?ZP-L?t~V56 z9S*1)1KSEfk^p?<4%@wHcucrna7>b3oMJssy0tm*e1_xLNgFg`s0Q?D=d%hN7Vk&~ z2(&lIic@209gnuz2st9y%_K2XayVty+0oc&Rxv?}gkAwQPY%jS@>Dh16wVzJ#L~bN zaW!2O5sD}!ohbMw-#i2rd?7DwAOcIKdt>~P$oyS(1fc?50ia^o66{7U02Kr^0Nu1Z zh_+Y?f(NPyunP3oI!PdeiFqxl9$yvkWl9g+O4NIHAr#6v3!QA21dw0a=e+ z16q`e0zgYpYbk*pMEoISR{3W_vz>*I&S|lXM_VV>q{>a?Duag96QxYmoQO~ch$A+P zkr0SBq}3tKXtAV#K3QHaN+pEl$)ne$Wxq={6WwWayz~ zywP_EBXw55X2Xp@9UetH#yTLWfmFi_2BF}DMUb&c_~}&lB(3Tk{?5xAv2+;Xr5IAP z1%)_8Akt4k>2+ume5`1Iv-+X4XWR1Rge9~|Q6yd}n1v7xM#`QPwlHeZ5y@-A&KWof z2yhYj88|+8emwOzb`Aj(9!K4HLDLr0=JiHlO8G$4AQYIrOY;Wmq6YCB8H74-$H?G- z^D{U&GB!~VUDrD>GEq=BFye?F7<2UEJ5ey`=ylXNqVXGWOcXfA&|1CtIR;5E^||BR z7dRZ_5bhj~rw&Jfd|pDJj(^ARRXLK4nBd!FB(dh+p|k46F< zZl5gn*N{9I4t`f796D={dQG;}IXsc`@kkN>QBCrslLvP|}S5y6J&GXMg`80`2 z2@Jy*oRdH^GAiODbB92k8wrrDJDM+gzezd@O zB`FGW2`S(3I&L$%tD4~2-yj0%=uqH8r(>pZ>;6gy+cn^yP$IJOY5mo*F7 z&Vy(w39u#Tmk?tpT)3fUzzCejQ@g_N2q@-;9wG{(dH~@W$CM|SZoAy0I}6!{x$g^0&ss9>IrBk zIzr6Q$vBl04%~_$B%Q-dZig=@?BuO*A95o?eN3P~1baE@(KG1$3_uH}Xx1e0BG^Sr zh$Ml)&iy0`CV&O-8bBCQ2b4gBoPr3096E&$0ES?|<2=DiYCOxO%lRt&c zpdxW9sbB=o&u!E%p={!K%C^51F2jiN`)W(dVd6b32cFchTknitLkx#FN%kah5@jP4 z88jw)Wjs}G&HF9DN_1=9uR*v$^f{oj6dB6qo3fFeQ^`4N5dE(k;BylG`-N&SNv*i# z8KVB2ofL;@!SK>V&LUtFn2pKPXMgvFPXS32?DPK0>@uU_rUL(eN*1zvsmgD zGKs%?x=3O+k~#m+ZHK5@gvHfTOj`MPp$Fk66q0_+GohX?gW%7nF$e)D- z3)l$f#bo^iXrw1k5?RgmtH4HtHgMfZLLq|9%^lHkHzq-ur$wlzbO^hA)KWD(@c2wg!M6f8vi(=YjtzDb~> zhA10IA59YEIuD%E;O{yk5fC-V@gH6Dx6b)%_k?DVg`Ua(*sY33)AY^b8A@O94R83f zDxM-IkftX`=({9}o{XH&x}cs#B)4b%5&hU{DL_Yr$Uv+y==so=#8Uv$B(2oN894J1 zy>`5R{b||hzs!RIhRE&D0-}Y%wNeP%=+Q*q;*1g@+^CsX7^tT)g%qqGCOTJ3(vSn9 z13B^gjdc6piL_t~T8S0?^gpFpz+uyxRH2#56PngY>^dC( z#g?41J7M+sPV#lIK!5{+4+uLay<;G_|t z9+P4_TGmM%h!SbCmHlI#vEPunGo73!EjGy{aT4-Lsu05AGmb|FCX`E19XmBl&)DA7 zKm_A+ejwcJI171WicjmTL>o8Op&Kc{*X#%x>li5jA|N9N^#`;WEtsgoPCOp%1VfPb z$T+c#X4*z~)sdE%!~>HobrNZTrHY;43qylYW}@UE4MV;lsib*8P6?g;Rl)H)!aCVh zXr5;qIvUY$pm7K(bgDZ3Uvw0CU|IQ%N)j!OQ{W-JMEXqQ0otbrMRVeZ|DbwEB*TN4r#+I0#;5C{Pc8^JxmJi%+oC&P(;tk4y}phc(_nv#$#D>|1M^lA!XId!kU zb}`bv=v}0ZVeza(dpk8mq>tf;?uEHVQ*8^mzYz^NLZgT`zM^tFr%teq7pE` z(jekiNwl)}v@$882i~ATn?6k#Zq%HBWQ(1#qUf87!bK8o)|^yfxN?I&u!|hLLcLcy zQ`5DGw@C7h2B`;FuR!y{G*%QIV9iNYX3g55l*!GDc;UwT%=fyBtYI?(^`$dSS)OIt zF;ZRF45Ihx3iH({Q4+liimH%6a(F1~m5L%Cefi87>3yb(lEx%w zFVJb-rMIn1mHQ~ujefzruqd2PbuXQvEA`;ztjomo&i!+~R3VQI8|40@7Tyb*wQl#2uCv4PEJI1udyTBmp5umDzVs6R5$8@Nn& zhXW_<1kM+bWK}&KbKGz}vRx+1Zeag<_aPSS^)SM~u0;}dnQ{fTth92s^WLD zD?NDzl;0?Zjw?QLU9t^9?91Wa;g^d8*2O}tS4h-55JYA!QLK&g($hKtz`o-ds#5jjlC^opmBA&K@46|Z~TR_zsM+K!J*6-%|>P{N84plrW zRahXqm&Dgfq8jo(2-4bb@J&3U!oAC6&U9m!&gc-tN|^51Qr7J3cvj*OReWin>K`g& z=^_ccySDoP<(?g{Q5i|R0(6A6L8TgT&(0RJvU2j=-80?YySwY0VbNk<*Hc<|jY1?o zl$GcCmMeC`J?Njc3+mLbh^*G@_ zm2XidN$E>^L7qUO)(Ir#6#A?L=osE9GGKv}s5N+z0v_viO6-_m+D0Xs2K`d_$v`$u zR0B7f>@`%us6<`&&tfI7p}v4N?l$wN#qej!u^Pw<3R*tx`& zs2BF+br&(|51_VCe8da+Cn(e6<;bDrL2sezRIWoIB^@zPK*W5A>@RjQ={HIXJN*k- zUY^Ns%=l#m)4je_%{;XA!-H<4P>8^all5w0A${C6W(;a;7v`9Mi82c(pvO>VXVSaS zgk4LEm_uPN)hl;py&gj^Rm8Y43VU~ZmK6UIn?EPtv*ctL(`)KGedo-jj6L+O!utAk zvi{! znYAueKO;Qw@(J!YGs5fNE3BH0q&2hF@$MH^C0;%um^Hg9tyqzFH5g8`9le!d%qg2-BDMDquRCoV|8WrU2CfcFOEd-xu0j>(YsV!iEDZWC%3zU{kXm^VrgE_ zVDC${c|8Ml3qlQ%j$iVWv!`9U;_*`WOJUE!q^Z9Ory(i9#J1Voyqd(xNAjcd_pgb8{;^&NsvTC9)t26DkQ>kpbCAdd}~DNK3=H zoXH)sI%8K?HvjfbYrcyAE6Qm}ffG+e$(|gyt|UQvQ#t-q75|Tmf9{gl@uyg_{P+|d z96KJy>BA{q*IHH{O*#B_z_r$#dvaKD52sy4dRhy7tsh<)5ATKWW)6?*dAVoweNuC| zS=-tI@A^jE4Ig0>*anQdxMvR94U5H~r^3UN6EFm)T%gfQnv$DSUPe@p zP15x1mQ130%tO}0KTLVRXqp69DM@({C{zmO z*#t}UR9ZPDxY7hh8IU57G~=8=)10gil4x25lB-lQZbhX~LQKsNq-pd`k}LWkINcFS zboiAEaM*->oKT`gdYYycg=2S;r0S`h6knW6*5gz|v!qYk&>En|t+10c1;yp0N&1=u z<^ELy(@IRM7S0b)HwCD2l7(vhTLH=CzLX?QlJfFfO@Vq}83oUEO>rw$wY?=#_ejcT zmA~w(Rri?$<-U4MHrG=tQhWm>xT8SbBowI8WaR<-gvn`mynvJdbu(!vp-?Ef8qkzN ZrKLCJ==DcaB+bp`DakOoH#c|2{$Fj$ZS(*D literal 32956 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 dnN z$}aDcx2jNOA672SD~Yj`-s}YN7Dj=^y9u2&V*|H5DGJ+PC8nj+W^&R`sRALk~*6IMl*@6y!d-cyWB^&cREU(BXJy^rLw` z`$hNQLe2`^*#6P-V5YAH!eUi!UiMgC*sX>N{GVStt*#7L{;u-3mA|Qczw&=o1}n!$ zn49hSr~ddiT}`b&=y~x@(VS*N*n_sE#A;C!O!x9Q5a9X5DhVMx@r5+H5Q^&4^*ld; zlV44E_~nosw;mfF2Gbh6?y=EcNGlUe=%Iu=Cl}!ls&rpp{X~7xmG94$7kd)+v#MwAbZw7WJ~)+!>oK=1`l|JqTQKxg5$eS0a&) znoJf9S64X9E*nmlqi4v4dji^6ZBA}Y$ugmCDMBI<7lVFFWwxd=A_R)9sj$iBNt=tU zISl}TjF(z7qI`&-^kih31(PQuU(gt()_knkK9trOtN8_MCRZD4aIR?NeAeC78e^s3 z3i0&|PTNY`qj|T{S?9EI&K+$UU+YSb$1G|Hu?uRa%|AI<*Xj=~OLYs1o{+{VF17~C z@Fo{?N*1jBSzB42m&HxZ{pO*>*-#lLqJ4)#Gn5%B+6tnqr@lUG_ta+-?v0_Lp;hQo zE;JO-8pYd9#tQp!=~3H+s;ocMIy4;$mPb{&?WX4vqlwXstxuI_^68dPkdr=_N%3`k zwxTj_4RvXTRx~+D{TFl(^g=No3Vnep5A@m=>GJ7-`+&#Po5xwyj6Re}tmZw|(7eYZ zJz7+09^~a)mtuT=AYLDo6FaPJtD=uQsCuvuKW7dVGj7dt0#{Yk@}Mj+Z(B~RrVltQ zlBlwlNd!f~vRvMsFIwduM9j-^@Hru(RU6Nr;TM(iPm75&#b~5IwmK?r3$;$qMvpW( zjx;5v&xG1yWsK}W^Wc1$TRD0u7jZGE3DtatN!9Y6sD;lL&4`ZYi7)x~tS4YAhBeb_ ztFY_rgYa;kj!q_JirqDo^==_@{0VKbPP8~# z?Dl+8F4Ks^mU>Otf;13L)|TSO1AMmOP@SwT>clC*!y1cTyDf0K_UU3Z2*+w!vBQ!= zxD7t);!H)jCn9zE^r*`Qw$9*e)7ew8HymwFUr$n&skkI_w7GI&b44nu^Emx7bzgg` z&Ybbca#4L$4|Q9Ul9^qsE0wCvr(|bbDFPGj4OVGv&%eEdmFmGO^mv$PwJ# zgHR^gPWPX9YI7fFQf`f>7LMSxxkL_^XwO1lyGInWWn_QtGskS{zIL~HGVeh^L(?fd zqR;ZNI*l_G%GBcLbrxaosq1m&5}A}JCabf2oQcV5GYjo*%Oui@ecgh5IFTQ?i~zXD zggr_IM`j(JMab+}z~O`=f3znhbEV+AH%_$DHk^Q*=V)!0D@nPD{7X#(f1PnSL0h>KV#a&&u)-<75(0NqY)FNw(UB$4NEs1 z!$MtN3fPA$E4TH>5!Mc!9j0e^Wesb0dA*8VL-+mdBY(SN0}O52u};UAJD!ycMwj8$ U+Ie9g9=z*;VLU5;aq&O?FICK0j{pDw diff --git a/Source/audio/StereoEffect.cpp b/Source/audio/StereoEffect.cpp new file mode 100644 index 0000000..4de3770 --- /dev/null +++ b/Source/audio/StereoEffect.cpp @@ -0,0 +1,35 @@ +#include "StereoEffect.h" + +StereoEffect::StereoEffect() {} + +StereoEffect::~StereoEffect() {} + +OsciPoint StereoEffect::apply(int index, OsciPoint input, const std::vector>& values, double sampleRate) { + if (this->sampleRate != sampleRate) { + this->sampleRate = sampleRate; + initialiseBuffer(sampleRate); + } + double sampleOffset = values[0].load() / 10; + sampleOffset = juce::jlimit(0.0, 1.0, sampleOffset); + sampleOffset *= buffer.size(); + + head++; + if (head >= buffer.size()) { + head = 0; + } + + buffer[head] = input; + + int readHead = head - sampleOffset; + if (readHead < 0) { + readHead += buffer.size(); + } + + return OsciPoint(input.x, buffer[readHead].y, input.z); +} + +void StereoEffect::initialiseBuffer(double sampleRate) { + buffer.clear(); + buffer.resize(bufferLength * sampleRate); + head = 0; +} diff --git a/Source/audio/StereoEffect.h b/Source/audio/StereoEffect.h new file mode 100644 index 0000000..39d0911 --- /dev/null +++ b/Source/audio/StereoEffect.h @@ -0,0 +1,19 @@ +#pragma once +#include "EffectApplication.h" +#include "../shape/OsciPoint.h" + +class StereoEffect : public EffectApplication { +public: + StereoEffect(); + ~StereoEffect(); + + OsciPoint apply(int index, OsciPoint input, const std::vector>& values, double sampleRate) override; + +private: + void initialiseBuffer(double sampleRate); + + const double bufferLength = 0.1; + double sampleRate = -1; + std::vector buffer; + int head = 0; +}; diff --git a/Source/visualiser/VisualiserSettings.cpp b/Source/visualiser/VisualiserSettings.cpp index decf045..570dd50 100644 --- a/Source/visualiser/VisualiserSettings.cpp +++ b/Source/visualiser/VisualiserSettings.cpp @@ -21,6 +21,7 @@ VisualiserSettings::VisualiserSettings(VisualiserParameters& p, int numChannels) addAndMakeVisible(screenOverlay); #if SOSCI_FEATURES addAndMakeVisible(screenSaturation); + addAndMakeVisible(stereo); addAndMakeVisible(xOffset); addAndMakeVisible(yOffset); addAndMakeVisible(xScale); @@ -62,6 +63,7 @@ VisualiserSettings::VisualiserSettings(VisualiserParameters& p, int numChannels) #if SOSCI_FEATURES screenSaturation.setSliderOnValueChange(); + stereo.setSliderOnValueChange(); xOffset.setSliderOnValueChange(); yOffset.setSliderOnValueChange(); xScale.setSliderOnValueChange(); @@ -102,6 +104,7 @@ void VisualiserSettings::resized() { smooth.setBounds(area.removeFromTop(rowHeight)); #if SOSCI_FEATURES + stereo.setBounds(area.removeFromTop(rowHeight)); xScale.setBounds(area.removeFromTop(rowHeight)); yScale.setBounds(area.removeFromTop(rowHeight)); xOffset.setBounds(area.removeFromTop(rowHeight)); diff --git a/Source/visualiser/VisualiserSettings.h b/Source/visualiser/VisualiserSettings.h index e2283cb..6d165c4 100644 --- a/Source/visualiser/VisualiserSettings.h +++ b/Source/visualiser/VisualiserSettings.h @@ -8,6 +8,7 @@ #include "../LookAndFeel.h" #include "../components/SwitchButton.h" #include "../audio/SmoothEffect.h" +#include "../audio/StereoEffect.h" enum class ScreenOverlay : int { Empty = 1, @@ -105,6 +106,16 @@ public: VERSION_HINT, 1.0, 0.0, 5.0 ) ); + std::shared_ptr stereoEffectApplication = std::make_shared(); + std::shared_ptr stereoEffect = std::make_shared( + stereoEffectApplication, + new EffectParameter( + "Stereo", + "Turns mono audio that is uninteresting to visualise into stereo audio that is interesting to visualise.", + "stereo", + VERSION_HINT, 0.0, 0.0, 1.0 + ) + ); std::shared_ptr scaleEffect = std::make_shared( [this](int index, OsciPoint input, const std::vector>& values, double sampleRate) { input.scale(values[0].load(), values[1].load(), 1.0); @@ -249,6 +260,7 @@ public: smoothEffect, #if SOSCI_FEATURES screenSaturationEffect, + stereoEffect, scaleEffect, offsetEffect, #endif @@ -367,6 +379,7 @@ private: #if SOSCI_FEATURES EffectComponent screenSaturation{*parameters.screenSaturationEffect}; + EffectComponent stereo{*parameters.stereoEffect}; EffectComponent xScale{*parameters.scaleEffect, 0}; EffectComponent yScale{*parameters.scaleEffect, 1}; EffectComponent xOffset{*parameters.offsetEffect, 0}; diff --git a/sosci.jucer b/sosci.jucer index 27261c2..3bea5d4 100644 --- a/sosci.jucer +++ b/sosci.jucer @@ -108,6 +108,9 @@ + +