From cdd007dffb489fd4072eb1e95f9c111a5d06792f Mon Sep 17 00:00:00 2001 From: asb2m10 Date: Tue, 14 Oct 2014 00:29:43 -0400 Subject: [PATCH] 0.8.0b1 --- .../UserInterfaceState.xcuserstate | Bin 166696 -> 150345 bytes .../juce_AudioUnitPluginFormat.mm | 3 +- .../juce_core/javascript/juce_Javascript.cpp | 7 +- .../juce_core/javascript/juce_Javascript.h | 7 +- .../juce_core/native/juce_win32_Network.cpp | 46 +- .../juce_core/system/juce_PlatformDefs.h | 9 + .../messages/juce_MessageManager.cpp | 3 + .../messages/juce_MessageManager.h | 2 + .../native/juce_mac_NSViewComponent.mm | 5 +- README.md | 3 +- Resources/ui/GlobalEditor_864x144.png | Bin 16274 -> 27571 bytes Source/AlgoDisplay.cpp | 254 +++-- Source/DXComponents.cpp | 31 +- Source/DXComponents.h | 5 +- Source/DXLookNFeel.cpp | 12 +- Source/Dexed.h | 4 +- Source/GlobalEditor.cpp | 869 ++++++++++++------ Source/GlobalEditor.h | 2 + Source/OperatorEditor.cpp | 4 +- Source/PluginEditor.cpp | 78 +- Source/PluginEditor.h | 1 - Source/msfa/env.cc | 264 +++--- Source/msfa/lfo.cc | 194 ++-- Source/msfa/lfo.h | 86 +- Source/msfa/sin.cc | 284 +++--- Source/msfa/sin.h | 124 +-- Source/msfa/synth.h | 144 +-- 27 files changed, 1407 insertions(+), 1034 deletions(-) mode change 100755 => 100644 Source/msfa/env.cc mode change 100755 => 100644 Source/msfa/lfo.cc mode change 100755 => 100644 Source/msfa/lfo.h mode change 100755 => 100644 Source/msfa/sin.cc mode change 100755 => 100644 Source/msfa/sin.h mode change 100755 => 100644 Source/msfa/synth.h diff --git a/Builds/MacOSX/Dexed.xcodeproj/project.xcworkspace/xcuserdata/asb2m10.xcuserdatad/UserInterfaceState.xcuserstate b/Builds/MacOSX/Dexed.xcodeproj/project.xcworkspace/xcuserdata/asb2m10.xcuserdatad/UserInterfaceState.xcuserstate index 77d4c30f077a30ea36b8a526de0f49ec2e36122e..074c45a0b12f1cf543518d747300d812a59996cb 100644 GIT binary patch literal 150345 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%0Dc(cT4&8kZ^*(~O*2F6T61tt<8iu)Wi^`OuA z&K_ywVCpR?*+B{h! zGCadQJWw$%&=P3liNEE`S>UJyh7>cS3b`rlt1VOm2+1=z-uMH+Q^GS-@^Y}*G4q7` zPt^#SFmGHP)`=YU*aLuNWHMa`Lk~ebUzh`(+`z#~4-ib-#Cbdn`#57gH?vhDXLHXi9EAsL_{Jz#N7h=Bs7_y>N?H zrMUH=C}w_5bsZ0mVD*lJ;R8)mIhn;=waIVe$Oj@*Z1RgMxD^P0t)jRL%XLz5S!EUb zkVix&y42PBhgKDN$ z)cRDvFZnu-k+VN^FpSa)ZmGlb3JYZSW!>Q404LB^1+9cc<14Vc$XC&cS-oFHym;yJN$s z3K{%&ahP5<&8RTgZ=h9}Ggw*5V)Tko`3n(G*VgjA2gX09;7cnMJKtYYSHX>$NW}XO z9I?819DGDr*U=Fl;E26wuF&X}CB$c$&jW-g1=Vl@;6 zy;6S-lvtQ&`4~se-yb4ez&m33mk60bYKu}UyPRzjHDoYd0rJEHdU}Rx!=j*4pfs> z`H(+F?oY+F4wD5TH8yulzfBCJLS;3gJnom}I@i38m zi-Y!JM4)7HfpQj?JDWk)hhk?@LR#-~%xOIndH|Sk3~K!tN)a@QDni=)yw5+>i)lQ$ zzK!|Fo~qX7CLAYLObr&V1=@HdRG4>E<_`vNHQ0|hY%hjw&#+a+MW{X~)mG}K9BN$8 ztcVI#3x!gvk%fKQUtC>XS*;QH1xKy@SJZZRu)gMIPjk@J3THs!_~OC|{u-n%5Q}G) zWkl9J`D^}($%pg_Ujbry@IBbd2Y%7M3+y}om0o<&AbX+=L{X4@E{n^nkQXbcEYfVD zA31K_AyHp~+6Qih`U=^uQwXaB86K@JA^8{njb4n3o@r-`h*OUJp{R1Qsv>^ph}8!} zbr?5PLK(%~LP3A=4;-4@BLM1BjKV{IklmiCQA{*8lL+1=(s9ZyB^WEPTACp(FM zpx|H_7To>(h2h3sitB&I74BC+R29D-Q8bM!9{!Dk(*7D(g6j+g64e?r25{VilAf@o zTmzFAOS!TR=~s1C@4KLn;NLpwU>MKFpzQRp&VnT#NZhLYVgl5&4UjT~e|YvGepnrt zYWniPKC89i#bDhHkCb8jqmvHyqkPX}<5G+d?qjmu1hJ@!+7eZkNAiyxnr^8>MjoY5 zTuY*awXU{Ole!EJUv@}isH>Pzff_Op?i+`)3YGHg{|Pj=cGU?{q4PNOp{$?_|BlVPTo~mNDw~TqbT2WK zFr%(;=up(I^72|P*a%-?<7bfstRfcIXZajWHpU$QGdQxw-U8u8=N}NVLul=>2&^fHYuGn8$QKkkP zQWhx`R0o!_PdByHw=MD1w05>N1Ux062SFE8jsjxl0CFv?Jz#H%Ah zj@kvh^B|?Ox&yHZL=Dt*iTLUV!HKI`;Vc@G^mvOK$ zH65roY4G@3>YJA=MKua4QRW63=0TPeouMA&0YSbZetw4i1Lf&JSE1H&sA2mJHLg&L z9bCn`j@<9A^ zl{*_bX62z^D!ZL(Ca~$$c)yvW7aaWtlU=%gZ&<>R%~$oQ$S_i@t5Or%DGzbnDTjoM+9O7OFvvV*MjIN+xQo%{%2n(pTNoi)iXLN z+d2H9&29Jqs*z4pnezT?6_N*zm`Q$)RNPb9lUX3WMjmhD^V*@0Z3d&lJcr^_qvo_BqGi!tNc;Y zl|3D3#^oX@yHno6fdu992;2+7{ITvgt!zknJLMgAVMy=IaIyzCnRM?QymKSvy_7w= z5!d53LG>3OrhJU6R#HA9F=buKCnUOX!5KS7iaRNkL)pp&A8PY2Q@+uSSfBD$%GV^i zN%X8w`8MS{61^m*@jF`3wFp<%G~lKl<$f3(_R)S9eo)+RPHSA)(a784qM(NQ=HaZ~ zv=jHKj^;nkZEf$UZOY8cQ9u1_%AdHzB;~i1-&6h|aUh9W}_Nbjwc zZ}5vu28`tw*64H-J$2k|2y)()?83{w`wqe5^19MUOeb*^iR^`nv1SFJdbB4(YFvX| z?1syIcre^G!Ucw9k(f;)d&>H_?-YOroo7%VooA;jOV`hp?aG;qD+d~Ju-wF?jM*muz_8zG`*t6*MSQPWYXkK7R`!xJF_|^6Hgf4xTVSS>r%h)A#^_x^tQ_|YfftI+U zrnPOCE7jfC<4qfY-`6xP4dAP@OPcHFwBu*C+6Ih0LK(cpWbP8WL|k}O*4fb1SU;|< zzNIlRyr8wYapw_74jwX1p|S;irYQdmFbwvs^@EQBtYT5VI&65~5hK&_`N`~d1`LXm zQL~`FAyAO6GskxI1zbj^O5gg7qwsTf4jL9UVfC~!=WTs9`(<9f-)s$IN~0n)>qj3I z_4oXuhY5itfkwXIF%3J8IkvW~wY8%wMknelx+L8I-EduoE>~Bqo1m-KouHegYt@~s zYu9z^PSu^MJ70H&?rPn&y6bftbT{ZW>u%EBsoSD^T=$G_hwcsC`?`;GpXff*{S^}v z(?2F5CMCulGdN~sOm0k3%($4+m!Q5xi{win1>Vw z_lZ&dt2-|E-{5~@9w9N8UsvJEbLG#_E~{XdJ#WCTM(Z8`pV?39!WiSi%bA-X*T=e! zbH%xQt^&To^GO_yMNZ<;B#znSDw5r<64yA{jT?-_V{mT~iN}&Smj8p_VU*VU60Kdb z0QV35OCyklMo0FJ#2VFfENTAtmbFbx|D)xAv7*ABovw*kjMc6hCi)%tGrMJK-P$2X zVDTTPaIMZYNnuc6y{nGxROZ^&#`-0m`VLRd=*$dHRk`^KMKLJa^8{>_y11^`Fm35~ z;r*67%wE@tu6oxjSA(n36>!aV&2i0jHMvf5&2u%o=DS*4t*!;GlU;4Dc2|dPscWHY zk!!JQiEF8AnQOUgh3gd8sje;(i%A?uVkwCeNGvC@lEjH5){t07;$#x1l6V4%Gf4E4 zSWjXDi2)Mlkk~}xJQC-3%_Omv#FI&EC$W>nMIs{+y>q$I=#B)hJpTvtvyqv@;vNz|BoSNq=Olhb;`cqZ`TVqe`$+z{Lc|5@f!VWRhz0*rT3U@57VMJ|;g`_6 z?o((f^P9^Kf|ejZ`GDJ(v~uJW5p z4<4FR-?%uprL`l_jr8pbezo81J9vD4#atxUpHpya4~Zq5?m)}JNa&Xp=t+L_xPvE| zLoZ+~@5Yc_3i=ek`S^oJS6;MeZBy>)izNR|y984#G#iA>evf`M`9)dBVYu zpu50FEU6EbFU&k7p)8tGh9@j4N&iDVo}i)=2h_LJGwsr;rd$nz^p_1 zfFeRo5FsX_kqYn!KgJ+Mj01*jL zUjFGmjDE^6S`Lj(&7HVjfitT+zFEP?(>RBqrN%Y4&Z=*Yszg!~ln=l^{lB=4_jX-B z-5qcm?n+HkzJoVw4%ym?qHI&$3Ou~`l7pY?u)QK&4WH@!uK4 z70>E~Sqy$~dwJi-eLxd`S|YVLbv!OePAy4=7j`CzXRS{yO+B8(vq?m5(^0pmsj*}3 zq`85nIdeM(j6Ll!?q+KLP(dc9)-sT42C|BS)TK@$@jMc7sxkVXT4{z z-WTxRC#J&LyO6|-qV-;RA}2!aJty@f)_X4NeF^V9FSVJ(OG!j(@?XE*mfFdBx3k`B zc<+U&@FLfeh$D{w+IvN67wdfr>wOjPO{u4mcr}UF>__jjQ&+Lx=dj+_@!sd9t|sw% z5|KaL_uJjZeM#!&-M+mh6=ZK95t%~VY~9mbU6Xn}>vt{t>L&ixb*XSjt z2%~cQ#?)I_@0(cfn|beBQ{nyILgKCa(fgj%`&jRLS?}9<@B35XGT%WW@^AZoyW5B# zNqwC44x8z1sZWr2H;Kr!^)ljTQlDr2o@HPC5C7^5sc_5hBN3nKwUw$izIKkJ;SKmq9!}`6;zWNaV>iel5koYi(kL<@+KTG|R^$we*uTsAz@i7t~ z@Aa!cr2gFPtG}coyZ|;m8QHHJZ~sc&%liGzsC|l2>(;qrNPL<^q>cWKM{dF07rosg z>-`+>-Ot^h#OF!GA-R9;ZFMKG-Zs|zCEnZNP9*VV5?=}HePLHn_ndKI`1*Id+@5Z| zz3wy;car#OZzFae={}0}8_d4?8vp80_b?J)C-J{wU+rNPxij3^tam2s{U-07pTrM( z9dWh04*kN`k9(4PGKt74eH_^@as{}jySaW2tpN9lZs_MvN&KwWezV<8?0cuMQF86* zKFN)!-4`T&*=xTA?snEMq+{G2ZUpxr{@?I^m#qx)<;+M)Sn6KE__BLn|hcHvp)8@d+GM6yA7EwlvwHgXDH{Gzh0G0+xhoZQ+rubriuYU^h){;}6uU^C(p zLakG2O9^st?G0^#K#TG?!Z7wXwWER@>We$0PVNkZzu0kXc=L$w`0*sqsDh%5g5d>) z1;xX&atbns=VcY<4uHe`y2PS?(aylkz^++fg}e>i6l8ml1WM;DfuS%54r*FpWHvY ze{uh+8|MDq{Rc@Ym>kJPQYuMI>XvSKJSAxWg*&8}Iq^&+q?h!qGQQzQ! zoV(X~Am<)lrV#xp8BaW(lJS^57LvRq;pmi_#P`@eiO{7HPsw;>_STD(#&z&%Z-lE} zkITahhsfq=h~@)%^Bmq<7qommM|jdP_nsp?gFQn$M|p;NhM}Bjgl8m4N04+RNrOom zLefzr4J8SyaX3k6J<5~e$@FA-vOPJTTu+`SpCojcNYV);EhcFRN#~Gs2}xIzgohIS z<`iCBG6Ia7fCPg!JtK+&vpVOfMJ4M-Sd6;_Zw4b@tv<4%f%gns z+TPyD9%fPAL)rJU1(?=(3tF3abw+Xz-)6Vd^-LL()SdiI0>8N@06Ztvu1-R+2Tz)9 z@|1YSdB%H6J;!?{kd#i+D3UTr$|Na^r0h+)VV(-SMKjDZ(NoQrRt_GbVN0x%q$Erx3Z;qNh!7syokUq(BoT33y4j`-#N$euy{**6RJ;GSrg+#B3`-D7#D1>s6|$s zqGDEewy;zD1t^i3#}`FV9aSSwrKlv}HOynX06xvCB6w+sI>-||^?0DlGu<=8Gt=Yu zoJdkGNqHnect(?S^bMX_o(8D=0iM|;jUnlnE;CanJ~lFzS}tCU@;_D@P~5Vxsjanz zRnPbu8`+nXk^p4=)q)>LRq^5ltaPD~Kh}gRUDdJsnlZbLOW2rNN?O}00*k8ZJMn@K zXNBK93hl<%FAS6-6NVse^AZ)OunO5@;Id0$3+Fa9pcrRCzEt6Nym{iwzdp4BU9P`c?J#gjN(ac&qB{4ltcty zZo-p38}OUOx(9GM6Mj&DmLiYsSw>O;G{$S5Q#_~Y`gyuMq`T8|x@V>549}VDb*a{d zPR1^^E^20ICu0hYx0qkw)DrqN+bhAn#g((wzM;Q$=}0Ofse+_JlFGp{ZG|Wz6dd=6 zXcJb{%D$seeooBljh=Hot32mHOYN>T|)R#o43Y9l_HsOIaP#M9_5XmSjgV19-`BjMPJ)0TD``sRw zTQ6fzJf}0`ATu9^LN*>&U19E{F4J2)c*<_G=T^^cp4&Zlc<%Jv<++=rYLaS5swJt8 zq)8-ACTYrMzF6Ye_aOQ9AH<4Xaw)q54{p-eJ{y z`?g~HtyZEItj1C*6}7hIY+nwm_0j&Y4{g=0i}>1On-DY8_H7AiZ-yzq?-%Xi%^6Wj zsS?`+_eEiUS2i?OQmOsDbWTfaTc8k%Lz!yr4;rD`3vc7vT00kL8}=8TuXNURo-aw7 zv(EE1NpoRZ!43pA-}2gh?X_?%R8jce^Mg|OYUwlcRnITbZNGYc^Zf4lL#zIaDElL6 z9!c04nu8_09{9{7roga-uQ*>LVXrp^BzU2W=dbhjAqi)^9Klk&U0$PC@QS*AUdh|n z+t1q{zwf>5uRlbom81pJ!^{4-I`YPQ%|Y1p-gw;u$}g>68@32-YwA8b8@zUJ0#i#p zH;G!kx67LdqMcqjc8WJC=Bk*hP~xbHFIdE%+$?PEZ0P{w$^tEOI_8qpu27WXb)hjA zChU#ty{Wnf!hYV#xbF3MekZ9DybUte3yXL})lRQd*DrR97xwNV1#7T(2rNo%bSmfu z?@`{NY*hRHDeP1GVH5`C!aKs72iw~_(wpub<<0PBdb7OQ-W)H?qNOBZPhU>b3X)DC z=~R-sNFtI>yGb|9JKB4+cMSe}toJzlzmMC1r<1gjq%-)x&m;*CdBZR~n<)oo!4Q#<3>JH&y87B2_E4+9Wn3df};bwlu3iU-}?`ht%7&A`yuJoSag$!Lv(q$xFPSTo< zh{z1{p6gx3IKc#KElF1~JT{#*s1cbT*mpXaRa{aJDQaY{Qv1FQn6?aOMK^g=$-mfp zDH|HR$t%`*LC}@Ga^?!}l|2s@c8-dAt#=cw94x%+z3aT|y&Jq6y%-nP+%+U!OVV{D zLAKVBw0^U9GavoU;J~fk+eq4=GGQZU#Z4sL!dSsdWb0bm;W{*`CiA{SW_D#wAwLJx z8HFQEwzS0-k}YQGD2t|NvpR$(3@Mk=@N_ikl#u!W=> z)_ETwX;ZIr@QC*@ggv~ElC*i9_i>VL>{_T)-m12d_bKl)A-rcv!kIcvTwn0M)V;S# z#!m09P`B4eV!1i>Z*O?tj9e0Ld-06@X74-RcfId<_jup;e&GF(q}xflgQPo2x{D;3 zwfB&8?`H4EnA=bJEPvs}mi`|;vG=R^l1i?AS4gM8lKF;VLUuA z06HHhNJbY076%$fw{xYT{NM?;89gdEmuY>|`a=YixLKNsq=&l}avIXi&fOc*ENRv> z8%d9l1ldCRPYsl%Inw0F$X8lYS~5wHLtOX?ZOWVoZJJo@Zot^Z5vi6mPuhTP2m{jw zk+hAZCx8$c_!}_x{D_=K+EHo4yLBFsHjt?uca|mjmS$R(z4Thx)Hae<)r1N<)!7PjZQl{ zZA{uRX~(7=mo}Cptjgy|dY+^gNP3Z^mq>bDn!WevkLHW6+bJl#sV5fy)@grbiKL^_@8+q98ak#yy z6N}P=gLw6w%^g*6?hvnr)JFQ-Xkr5m!B(6!M%OgF)r@d<*p{9)Ep0laSb0c14es7+ zsuZ8dR!MytT)x*ydNWLb18H-+Nl;VTNhJN3Bpl*%Ox2h)VC=GpAZ}V~T3fe{?P(n( z?Iww(Z568{oQng-&Kt`S)D^cRZ5e1ygXQqfx-^)b@3NU1q_8I#sPBm(DnwV>X$%5J z>U- ze3t968sr9A=J0=N=Y#nB*$I(tgB~x!fDykR7igUy=x9?M^|VWo07-)(@v)WwNn4wC zJ@$&UE7Gn^yDIJKv}@9?O@jsS$^T>SF5s%ly2g)hThDdI9AiXfIJZf2z>_2IS+n&#XU|#TQtgKJnxDy&Ru@ufibO)cWn# zFP|>WKK)*Uy8LiJ)^@#mIJB`2*KinQ{W}VWkMFpjO0&&wkI1+x+ktEcvw3Dal#PFi zky@roBU33d6;CfryUK2Fwqtht?L4yampRnvSD7Y6rs40OdD@L{(+WE;e5i$+mCyCU)E{iw1Pk*rN8~w$}_k+D^4VHWA^_Rv8wBw76?~ReS zyK8sv^BDOwZ=}MH%6u6kADxJ&+Q@agXLir+LhN4Hy|fFp3$qKii?DlT7iss}?v34B zyLWc)?V{{H@E!6bYEm_snp{nxrc_g@sns;9qUzMN>M!cAYC1K&nnBH|W>Pb&zo}W& ztZFtjyZXDDL$y(Js=3tMs;&BmYNx8IUNxvj)ufu$JZfGwpK7n>R~^&>s-s#^by5qd zh1DWzQMH&_TrHuNRGrmQ>Yu8MYEet8Wz@22Ikmi6L9M7(QY))f)T(MVwYpkEt*O>h zYpZqCx@tYOzS=--s5Vj?t4-9VYBROD+Cpuqwo+TGZPd1EJGH&qLG7q^Qah_%)UIkb zwY%Cw?Wy)sd#im^SGBL&PwlS`PzS1m)WPZyb*MT_9j=a0N2;S#sg731sAJV}>Ued6 zI#HdZPFAO=Q`KqebajS0Q=O&GR_CaHseh|;)qm7^>U?#9x=>xDE>@SQOVwqno4QexcP3mTKi@H_arfyevs5{kN>TY$9x>wz&?pHn31L{H5 zQ$3^}R*$Gh)nn>$)k{60o>Wh%r`0p6w|Z7Rr=C}R)C;Pw>Ze{*`4aW5O!H2rc`wsM z$uu9NBBYW;DoLf1Oe)Exl0qserIJc2sil%eDvDHeQb{Y7U!?M@RMJT$y;L$tC8Ja_ zNhPyXev?WTsbrN(HmPKn%I{LiAr%{`rJPjCOQnKTDoUl2R4PlQid3pfrJ7W#OQnWXYD%S+RBB75j#TPO zrJhvkOQnHS8cL;+R2oaAiBy_OrI}QkOQnTWT1usrR9Z`=ja1r7rJYpTOQnNUI!dLJ zR60wgi&VNwrJGc`OQnZYdP=32RC-ILk5pWx(pM_|q|#q11EexgDubjlSSmxLGE^$V zq%vG8Bcw7?Dx;(#r7~J7W27=xD&wRwUMdr$GEpj%q%v75Q=~FgD$}GgT`DuAGE*wE zq%vD7bENW@RQ{IAT&escm3dN`FO>ySStyl7QdumOB~n=`m1RbmsEC3Wsg+$N@br^ z_DjV>DhH%;P%55MIV6?CQaK`(qf$90mE%(JlFA9GoRrEbshpO|8L4*Q$_=U9l*%os@b9g%fBY7i z%GW0hiTnPbb#3H}dR@CZzK0D&U&FrzW5w@GPgjY7tA1d5y2`)y;uVRQp04umySVbZ z)6-S{Jy+b<@obzJlZI73^||hcrl+efwAUnVdb%2>U7U#N>FO)(${(GcuD;P;_Jh;Y zRqOYq`3F{CPaU^DXPhT|S;u8+L+HND225~zx?X6@{qXd3eKPHJKR-QPpHf>OvD4G_ zd}XASTN_H2xasNowAyPDJw08YPP_hRrl;#OYA^kf>FN64w3mEmdb&QFc2#1gr|WYh zcxlYB-}+qIrLhN1f0@Z1V|u#&5ADhyou00@ev{ui3N_|vc=|KG>FIitc70-}r|a`- zm;c!GbbWs9Mc<#Eu6In}!dPi6q+OV}>FN5S+QkV?PuG{wF8S{CbbTr9x*wXJuD8VT z8lGrZo+q`&e5hp1>FIj@eFIgD9Zww7)Abd!>k>6RU0+$d_D80t>#J!m`QG$&eNFAM z*iHRqlrj@ZK0O*qU+3eManD4LF=$&~U%N6f)6?~h5?nOK^mKhw?aIVWPuI85E{-wq zIj-sH`qtW2F(zMse|oyUo%WjCUxq{{G(BD4QM)=()6?}`v}=EGdb+;5_Nt$mp04lp z^-*}o~|FEy(q!y>3XSM zlhE{Z{aEdi7(EpIe9hQHyY&;at77!f=b4i6PEXfQ)?O3i=zJZb4VQ{BJzdWaZt*q} zV;Xn@)6?}cwTlxyJzYQN>&3s^^50BP*U!~1j**B@;l_Nlb|;YQodg z^-I5A_tW@+uL`kTyDmn)5}2N@U!`6AL(|jsYqZzInxdV+^mP4t?ebVdp<`T53crl3 z)o;?S{fX)6`mNe46Fog$zvJ7ezD$vhJ^V$_4`rZKy|Jd|&y|?zFADo`9 z=lh97_Py!pdSC6bADN!6zx3@PzB@f#&$s>w=SQcf>-ok%FN<}f#5X-%AEaIT^|0>m zOi$O}(q8pL)6?~LwAUnldb<9;_JSXnp00nSy&{p*)AdiatN)AX>H3g3m-_f;;2)Zv zuIIbn6z}VTG_Ve^kAHf)o*(GqRk^N9QcZJ3ZaNU+a*H1jhMk-}s36H1KlT z^o@k4ryFu=%O)_Z^_yj_PtO1N(EP8aryFdw#S)mq66a!{zl!AFfHtTU$MkfAs;!&A zsL43j{WPC8*7S6PQClm4AtrII^*P4)r>7h8{M6~cJ3ZZC|5Fk3WZv&hPd60MR{oKm zvKIg2V9_^mIdUZK(uiQOCJdJk!$+ z&f01}dRNCgJ>B4p(Q+y>FI{%+8Y0Edb**Nwn(BY|M8tF z>ofw%S_%a(cR=i$r zQ5y{L&Gd9bH*K*5-e2Ne?Ca_2hMw9o34CbAxlAIaryKhGSpN8Go4>$HXnMM#-;b}D z@bq-UKyAeY-nqV7gn zXfIDxzeWEMs9apr(+%UbW&W$_>4r(#a*28mwBDp~eQU%p^~XZ`cw5FdJ>4)vTkc2S z$>N-zZkVmDmB80qU;5K}ylX&Dx3YyR)2 zryG`N8zu0i@yGc`KQ=wx;HE8`z!$dhFZbi+z*ssDI-y1`vrHE~19er|fYVV$;N zrui}#IHBq3hLb;EiO*X_-@)HbPdA*=7Ejzr$N0|id8p?%)6)&-wB=hQYSd$4}kaU)AE%d16mbH(b#+`0u8t8v_2btbCdV z{>}7sL!h?DPrdtp&Pp89(+xMZb$_aRV%*A!nx1Y5*7o|ppPp{Gr)~UyJ3Za-P}}r> zJ3Za-MBC)wy|=_aJ>BqJTmFABJ>Br~KUtbTK9_Ix=}VFI{3|1Qm6O;0x_(Uwl&dnhr!sQaPm>Bi(gkc`-~$P=8N zZcO!~5q~b*cc!Ns6>a6j4TX*!arDPwg45HDzi6u`@CVNXG9AzKbYpsL&BT3uTT2@{ zW_@VX=K-$TA0}EQI6d8%N!ucEU%OecnEOA-UW`Awey-WK)6BS_ZSm97)0u;2{VV%_F+JT_ zI68vp>DfO%J>6JLdwt@jryEOZ7bkLhy7ABWul{y=y0LW3gM9UUzeG$=H7g+Ypa+4HxYj|J>A$zTk=1io^I@_ty=lt1RBTmbYl-~*?(2BucxOQ zd;j}TAik<3w%s|IPGt;}mW2#7$2(PS-9@aC*9NCXdoJ^5foj zzWn&JG5W777?0aE{$reHJJz_s$j^g6mI{vzsVS9vQhC%WeSx?ij~o3YT!+t3 zLglHX(NB!lo(ExE!m}of{6P7Gk59ujF6TkA3J)Tw6#cY{&(DnYOEOF7lFZ1q*SJRT z7e*B)#x<+`)3Y#&MMoX|@Qm8g4{@s3zqfUuxkK~= zO+Gzg#39x-(a~?UM$b>Rhm7hU>v>TniWRcAE$UR{^OMDlyNr8yYK)N|d4K6<k|Bce3+Y&ACM1^{oonnF(VHfTVXtI^fL03@)1&bC6&k(##6#zw*QL<&loRQv%=5fzxn+95aT6dAP=4~UN&Aa`Wvqr1B};<{5bwwsl1cQd#OZ8 z<%84-sY~K+3^Lv@-Zb7a-Zlms??_!zsY@nxsif{VsZ*pbi_~TP|L?&w*?aeI+r3LW zhj#gUckkaf`hWH9)!((3C6~Gs)~B)QQc@>IKVMkve9GZLi=hRJIu9rI9-Rqm#N{q%NJ*W%zXG z-R90C#ny*UXSF_Fx>bzlX|-xt$U2%sd)Bilz4gMhT-YqeBeBnO zZ`Z45-+s2yzr>TnwWYM@6I&OyP8zo^8vV;g+rHXw^90zUpWnHyQwzR&*NYx{V*Q7t z*5}=~aqZHVC)2m@!u*ODV`xma+B_9q=ID0I#~XmjUh1;P`LeU-sEg@v94dr^rzJ2 zmO9(zCX1=G)cqlK9M7!cW;yi9fZoHo^yI^&l|rS_%huQzKJjQxj8DQ!`U@6VIG8 zNu62h@M`D|1 zVct1u=8tcjo9S<-UFQ{F;&a%4xI1VCW96+>8DCetM5w5d9um>f?Llj}JA99p_hJfAwEmr8mZkFWz^InC}n^qTeA( zMZZI=wzjsr)Rm>Rzx~R|$vVa7Q|Z^6Hpg{4QZLgssVi^29r+eUmgseNTHkqgNnM36 zrP^ycoY*_&i0P>5nCZC5i#z6|)K!$aN>W!%>Y7MhP3?|pYAy43KkQB3rVH_QtFOtA zZoMRRyth=*x|M%>|EXK+u53QEV2L7*MXX;vIt_0+)XA|>G5$;JhP`IG{^_H>k<{@l zO6%9)pE~xI^`ri_DcE$!bk}rG>S{<`Evc&`b-a-@`1nz8^0I!?*5s3xCr`$z{O8a3 zr`9WKb4A_$U7|moUs!*oF2B++`XeFwSHrEpTAyEy{>+a4#n;wfWO~9^ALQ?&o3!!A zCjB(5J`o?}A17~p9V&0ZF@LFK$-W)>X`_~FFnXd*rw-=m5eT+D`gY0_vlrh-_hMtM zXUwVS8FOl>YaZ99Rbj_34^uX$HUARp*}LZS=4`^j-JHRk(VWSg+5DS1i#e;*wUWBl zQrAZ6+DctJscSEF9o&V%{JS}a*~XmHoXecs+O!>|uD8^=O5G5t8zyy9Td?yQ*)i%uV(*l8}n6Fbe0=7Lh!S?c(%(5FYvnhTqY z@!(B!5pz+g>mqesmz#^5OGsTesq0SnwqVrLmuE84Q~Y=9el^;3V!TZM_8mUQqLv;u zD&_+@&85xdzFN4vxq{U7l)7Fl{3Ud?^eEd{FRW^2l#rX5yR(m*;6vGZXJ+`Ao#+Qr zTl4to#C6Q|xH|e7rRMrl*Z0$j8(B}>*vuW?PwMzr>7P&B+-#ki7-PJYxwV;+_Ln-o zO_Zg@=QLZ-sg`zK7Av@pX6xw0m@n>XCRc-`j_(C!Y4$P9=x5^&DIM#jz0I!HbM=wB zp`Xw7d#v3)J)XH~7!Nf!4>Aun4>1pwy5UkcLh43J-6-or%?%7LQF*f= zO+%PpLaK7aUefxU`?_rgMh|u1r}kt2?x$%X)(!dD(OAD}J%2s^w9JUHcCKA|^K~Il zj?EJ5674Da)<=YXs>THKB)>yGOX{XD-A6Z8>ZV^d&o%$U z9`nre%?sFPmU(fKh2|y6_B3wyar#k1K56-AZr0AabkBa#!vJjCf1EWG-*Zlz^>VdN zp3-L5SofMDb$p#LF2*0(%*)Jf*7tGqN~xPHbv%h)`(BD}QuN!>YU|q)ACVJ2zG<7+ zS>IJBetuU?_&X!9j%D7?!4@amBeo=2D0Ne<;Y_oB^F-m?d#u~=g~(X85j({$vxoUW z^dPFw-?CvQoHeb{;{{`9f4TXf^*b!qxmAg|JbH&i=EKns1^?blmYa`QSGPVt{Ck)3 z=gpe+cvg6a_R$6D;CjJ)-0aoB`mOQ~qmpoorABtxAs>pMBrHN?ZG%qehhdn2>6nAR z@edYZ3EZ#}`*9o3g~*l?te;ImTKtOi$cW6yf^7I5HYf!4&sGd2PzuD6tt={_GOD2_ z>YyIFg1EA=f3{6Hj!2Hgp4sz)*JW>o0T>9TtY#m$4>0VUXY_42f&&+4&x|TH^&K_ z0&C}B?HuQE0e-lIE4Yel2*eHCLNKg*-p4~c##2y(94`=xa1d*b*LaKf_#lK$5+p+k zG(~d|vrTKXMSFBaXOL@~?&t~5YU2ue!-m}248jl$!w8JRXpnE4@tBCon2PD($?G<= z@fYS|9u{B`=qHa*>N%i=d-ni z9rS2|j_8c8=nglKE88vDh8>_k7=|NkBk>0Bg!rQ%Tu>TiQ67Ua9uqMcQ*jvQ-~(S= zFbbnF7JK1^ zlQ<1;A@oV`E7Bt)GNTF_qA{AHIc8xAmSH(o;wtXp0UqIr5QabC07p2XFuGs>24M(> zVJi;e5RTv&UJGGNiPTV#7G+QqwNV%KF$r@q4-2pe7Z8M-xQ#nPn6kqNGxEY7ZO{|F z;fj7(i(S}*eel2wLnCF1F%*4eP0K&|gW>0WFGv_mV zf%hRZ?>pv5A@ZkJo^Mp?8(Cv-+vuvgw8pmupjf^+8` zgQeJj&De?^;M{rl;39a>%}XqKsY%{Dcn#i5^YUJrm;B}vAiw$2Ap^)kK3k|D)_fEo zAGOOz?eY}?ImuTNr9eLN)k6a`L}QSje8ioPp364?gE15%FbbnF12ZuT)GXgJtiUR) z!8&lJd?#@MoFm_5_~R*_;{{$K3=u-uCqoKQM|;j-pBY)eIqb=|J?F6Ju=e>;0Gz{~ zoZJ5i3+kgGID>r?G(!uJd;9L-9QNeio^#lfd;2jM2RCfOR&2*E?7=>qz-f5nJUENJ zABf*R64b$-I@o^@B0urwC*J(okR3UY6XZTWxzFza;?3`Z(kO=tsDyUle#+k${V@pi zN`B(aPmK8|Vlt+Jc=NBoDy#If!=W_hVrP0dLZWx^o~O#vF4WAMUlkavfd2*WG91~n*<9Gs&7=P00qE$pC& z0Vd=@Q4~i7R7O?QKrPfk50Li)LqW_1h`GQNOvg;j0r3|g{sJrEj*CaInKZ=a306a*n|Bb?~df%kzR4U41W-}<23~05uSj&JHA7d z5CxMU8R(^gzaj&Oz2I-i3wt=A01BcIN~0{ud%?P(j|w(I6Es6-bOZG$NDmcsML!J3 zD2&Ef%*R43#u6;Ua&V@CTR{y99>!77Lj}1n3ZBM2gdzfwc#HR-22MF(Mn2?+Be(~g z3gb@@yA!cHQ3EI9bs}D;7HEmqXp3IxgAtGzgYlRMYT!iwI4!^;ECu(p6Zf-`M7)KPASsd~C7e+iRZ$(pSg1LOuTUGb13gkmg1#;^ z3v)0R^FUmM=<7o3umR+<5Vj=aR+`==2fEY=eC`^2X z>5syxkOop~xX5%J^uPE^qCAMOjz&VSR0R3K!HHx(YwJ6pe9YK7>#$p;+rx@!L zBOk?9!5wR{9vksah~nh3ct&uK6(^6yiM@C(*rF6FfF3Ab4K+Z_#fiB%wJ*+o#o4bo z^(^jzQ~c4JI7)T`IV#x$z0nr~Fc`xy5~DE=6EOvxyW}hoYe{NXasd`&8R+Mdt3m7~ z>7$bLQORwfw@dE9ejEh7RPq>3fSQy%3m^F5GOpq}=&h2saTgCjeoH>X3y|lMuR#4v z(sRxN$-w>KoCax;4&=<4oH>&-XL9CD&Yb^%9wy{PemJ5Kih{a1lT&94%7WZFlUrwU z>s%9cP#=xZ6fHomoyoN`xpwY??&t+q^v56!#Ry1Hd*=zDpPZ+G9&nz6xtNbdSc>IX zg*8}@P1uSZ*o}Rlx1A5+D7-*@oxO1$zPJQ`Ttg6U;STQO5uPFhp@_h1yu$|}N+m@K zq=pW^A_FobD}F~#*g}O7d0>wMa6%Cj2SqC7f-)$NN~nq&sEvAPh$d)`R%nY3=!|aY zi9YCuff$0}7=q329sILq4b)mj4 z)Ypajx=>#i>gz&%U8t`M^>v}XE(bt;U8t`M^>v}XF4WhB`nphG7wYTc59;eeeO;)p z3-xuOzAn_)h5EWsUl;1@LVaDRuM72cp}rRCYoWdt>T99C7V2xEz830hp}rRCYoWdt z>T99C7V2xEz830hp}rRCYoWfD;-J137f@dd^|er63-z^7UkmlMP+tr6wNPIR^|er6 z3-z^7UkmlMP+tr6wNPIR^|er63-z^7UkmlMP+tr6wNPIR^|er63-z^7U&}l!#1c?n z3-z^7UkmlMP+tr6wNPIR^|er63-z^7UkmlMP+tr6wVc5@T);(KK>z}A6T!HLhj@bL zc!_XC;w_?tD4hh!kqQcaL3(6D7G#GFa>EV=n2`?-D2T!+hLZRbrBMzQQ3cge3w6-| zjnND((FX0&30=_xz0nr~Fc`xy5~DE=6EOwTF$;g;A1uIPEW-+{##(H^W^BVw?7@B< z#9d`7HASp@|gn*h?VC{<3r6T=Zky=!&i8?rkYv7y}Z-5vp6+kI)o=ViQ z5_PP!5&Pf)a#o3)Rknb&DzjGQ+91}-3$X_Dapesl=T+FZ3j0>!+A3UIg?+2ARu%GH zdYV2E$*HoiNs*MMI zQEf7&2~nNit**iV6Y^pyShM;jY{7ORYUBjJSHm6-D2TP#1^T20vDRSkn&hNr6;R`v z)VL;l*Svx|xCd%j^RW=MilIC>Pp!(}`dXZ?7J04}2=ZKuJlA#tXQ^EVh~(xC?rw?js@U zu};0-a78~1M1&CalOY9CK>>YLzYDs7zN*h_>QjsQUO0)18*u+M z*a+(1U@LYA(XbHcr-o%gei~K+b#2I64Oy$9H_i*uC@b_Z!i;>NPK~I2qa!$m6GAku z1!8R660O0x8ehddJisG76`~0_ZbH8_sR?S?xhyQ*Mj(35MK-8Ye9T1c7n6E;H)jkcMH~SnGNK)B{8-n#+LMJ%MqA@X_$f8 z2*7!K)*lK2yxyEVCQO+2lMr#0tn zlMXh>1zS-6HcPPqo3I7Eu5Es>PTNv&0lnU~6X?6P1270f!MbfPzz>(;FGM>%3Zf8- zfSB5i2Ip)y3v)16i1wL44DIc}Yub~a_HH1K_QcVi+O{X39UR~c&eVaNcPI<%uXC;r z?B9VrcOcIlGvg0%rjF#hBR$x01z4*iYjvcTJ5s|=NkJYuWdJdB$^!1wPCd~ZuILZe z?{prVuah4x3(>g-=!wqsZ|9cab)D(O&imkjgE%Zi7uN1Vj=ONaE_NWEF09*SBqYXQ zJkBBj*AawULUe764j|uMyP!MnAr#?wg*QTUX2*FE)fqi-m!z9qFJ*I)z^dQzA4?&OicnV(A(*@N~ z1GP{WCvgc^K(F@Xb-fy*9XMYv&ey9ew&M`UcQ5MMi!=15KD})~4ttZs-YQtXH@WHE z6wT2J8?g@_I0$mzr!0t}PaV_)d-hp`wO9{c(`SniuJng%5flSCaV-U6a_xr!Ag`|U zxGOQa(gXZ6Md8YMT*+(SX6Ov!?@N99_5x?>es&rn>_f=ckQSh3L)v0J_JG{(&g&6t^euoXH`_MnI0@P~g zHW0(m-5};+#5|0chY|BIVjji;hmFN}Oa$i}&hHP;itNY%)*Rji)OI*E7*0NhbI%Na zfN;D5IUD{?h!NCh#BBV9xtNcKh(ILXfV_@$1^4twi7{aRk(_ztZQQ{<@VZeAz_~|} z*HIlo9HSnAJx8(UD9$u0N(f0FCD+PEXoBXT&hk2fa1+5oj4lRpKe{4#&1iBzdI8+A z7UXyICJ^hG6i9_MAYWsqfosPs!V=2NvvE*tj zxf)B{V~Kk#xf;jb;~JwWh<6+{9=8TNu^W5gA;kCsC5&n?VIan0JSKwrPVmJI+yXh7a8HPdj`$N6lmR)Kcog*GM6REB5m$tmlpGn539LUU z8>r8uUg(3q;OvvGf^{cx?n%^Z68Gig-XIr~srzIJ;+jmprqFLw$nO+lpTgQxTB8S8 za|&xt>4!r&3u-#$0*GfSxtLl5wNMB3Vf}T^HI;Ksy$klA)(Gv<5uMQu$Tx{g*QUX9g2zIJaealoXx!kYBiU9%_U!Rp9}Gi zGb*Dhs-qSbz#VI`9-Hu1h~5Uhts$DAIXJT$d3Ix8w-K0t$>2V8O&cBixuO#M`)OaN|UU>jsI0bK?g<@4Qqy)8Fl@Y&z zv#!bk>bS}l&S(qrv}zvQK!2^;k7GE2(>MzsT*Yy6(tMi~3$j|D|=m*ZV znx0zyH&}l)XIs4l?6Z0uHew65gZpar9vlYwTPs)1AHCIg>kQa_3C$oXMRtxpO9W&g9OS+&PmwXL9FE?(FH#ncPD_ z-PW+j8uGV>{H@7`93X#dOvsD;a6};#L2V4gIB>o-oNLWdP_H%YvxfE8Jiudcwl$n> z4QE5aAQwU*vk zdkN%mZ2-cBSZ4!bURM{*&;h+L48*%`BBo$EW?=yqV;NRpHP&D&$mcpQ_j`OYKT9#^R452>plpvo^!3w0y`8yaX7;TWl$b9Kpxjq%k>S>1jM_3 z0ElP(da&<$_FexF?6V;W6#Rnp$OQJ;kQ?l^!2mPzAwMdEvu_xVRUn@m_TUK4gS>6H zh9KO+9Xv${LJkJp z3&Su0e}SIaLJx1DhqutfTh?M5IP(^2zGXiS;t;M0v6Vb;rH8f_M;X)v`)p8qeYY;hDO>@y+m;%cK@PXsqX<}kn=@R%KHI9I2B_UOYPXHrZR3pF zINLUAwrvn3#)3VzO~y3L#e6KnQn2^7mDq?~@Ps!m!5^G)TM%yH5uPFhp@=}F5Zg0> zyl<}z&bgg)ZXb_1V4v;mvz>jmbMI_l1M0nf2X=$HZ$AL`-5wysjwDD2`ea9GaK;@? z(GJvWM;CMlb=$!icMQb{aMm51bqD+Im;v_PLG5->yB*YS#~$nlwcBw5r*RfO@B`=F z!MS#3g#qllvmsi6{dV>T`|V`Eo$R-h{dSVmozpNAoOS11%)@qYmYolT*p(jHp~4X* zPzn~5MFr3^yXt^@Vpk(@-d)Yn0evwNQ}H)gf7e1Rfg9FgBesBjckKda-E|n}a25CP z9Nb5{!V!tLLhMeCR8a5>h;?^HHH_pkk&Yk!~+9?6jrB~cEwK@WP6GmqY2eGks%!MQv*m&Z78E)UM-!MQv*m&Y6| z!fI@X2Ry+Z9>+nCcwE3mTtNV=d*8qVyg-x?2U0-+XFQM|nP7w5u!8|+bo;z3#9Wf2`>%pV&#$^QK37&(x9pv6S7%7Bj5|DFG&g#ioJvpmqI%I^o+a|!5i&vn>{EucQ0yRZl3 z!1Elg;vR_AlUO~8)zcd5TOke+>mg!2M68F1^$>MAM4k@iKpv2rLuF7EHBcMW<4{Ai z0`)jVJq}TiL&SQh2PR@O4&W}HfxQl=0Bav+?Zdh72lOz(5!C!}QItR_xS$fq&*7Hn zgsxzZ!@bcL!$58hkH$E#_uIYJGN%mleU;)V0L4)S><6z}jsh@2*Z0JjteA1N~8h#JZ?k{5W{iyJgbgpMNt;D z&=|zy)e>z$ZoGPce(~yy0pPvPYbeHo+IsPR;YD7&wqQGUVJ|$u!M#r649?*Kh}(-E z@OlX1Jwd!Di1!5Xo*>>6#Cw8xPY~}3;yppUCy4h1@tz>w6U2L>9BQKpnxhrkq62!O z5BgyshF}=znG@vk1if*>x-WG(NgYmRg&wSZ(h-Hg9w)hvPLh|C6;K(~Ku@1!-;?Zn zlKoE7izf$xe4HEs3G#As8fIb+=3+h;VkI_V7mk8hPM!z-bCP~NNi9#_!X4ZPH9h$h z&k-raspLop8<3Y%(i1(By?tz@0X5Z87d)f)?bGj<(p&`i0>E>Xc)1ARyr>VthYH^xc zoF0IYpwCaU*Xb3Y&rfg0Hqh^<_uw#&;RH_OEXdJma&wwEPQSzlA>)RPR<;` zah${jT*MUwAP_h30AYv{!kbvViP4*W^Zp&g>P@WP#OQ600wAy6MNkaH>s=k>)|*(p ziP5_kTtTef#Oh6q-qg{XI(knAb@ZNrd02(bAYO0c^d?U4GdKt0^(Ibl;`F|WV31pH z;`M$3;ys%NS&$ocpzdeQAfIQ+=UHMrTM~bQSkIP4H8e(B5bIfDJWD>$lFzfmdX`wv z660C!jkDYvXX%5p^xRqQjkEOH*^StRqwvOg_~H`$aSM0Ay>a#tp5nO>=M)r#1)b0v zgE1a6FdKh^yqsgNbL@4_9qYiJ=eA%Q_TvP|&$%G5&pGxv$3Evm5Q=yBAjJ8kNP*N~ z|MTSMJoP%?6r(W(|6n;bV-HyW{6QSXF`R`D{BRjpaSfdDJo}x0FN9A@Pz#^5NQaEb zfn4|ldYC{T`8a`E_z;H=_oEMW@acfg=mzdbpMe;H;TQ#a+-Dr7VH53%|X zs}HgIkQX0f^&wUtV)Y?bpX(q`KIF-VzVUe@#D!Eyk4(sd?63j(xj_G1pnonnfO=gh zgi@%0x@d-$XoL3Xgx=_j0T_&77=a0xgT`TnP#OzDVzCA$9zQpWH%)Z3z zI}~Fv4Rf&q8$e(9l55|cpg(-cwJ*8$J%Q7pKYY)_A9oP~dcu#M@S`XE=m|f1!Y?Co zAQ%3C9wyKeeonA}p73h`V)i3uKVtSHX1}f=WScCQ0gss?z z12_ckS3fV1Z$I+v7l8X9UcXR~XTR5YC&Weae33j~B+nOrMFwO7J#mrvF1EuI`~^3V zr;F6|;t?DNdt5vNYI^Ys*y~~-ZXy`u>EbiI65>*F{DSmgk4ssQ9n|uY0cPX_dtY)y z2~MKm&@ZY5#;sq zbj-pWP}|F^unGG??_E9tdhas5ci9J5aUI+ z-O&rK7>W^~FZ}5X{|O*&|JfkN{^Zzy8_2Q$K^z9T_CEn~?C*!mAlLrn+CK=dg}6%X zuR5S1T7g_$rLI@W%~f)8bq3hu>fe|La&vVh+_4TDu^H6!>I?8*7r^-fs7C<36Hp#? zK<@-_wt&`X2hJG4*#bCQKz|GZXABq)Y7)S{0h}vyM5T$=*&bB+95BR|*3&o%OMjr?5Og}v~ACys#HTsw=)2*wjU$4i7G zQi$tGkQ}L?;1{GrHW)yTum6dPsDkRKg}P{lmS}_a=mg@vPQI@X1HE&7HmK`$;=aBR zOF-P$iTgTnU*Cf5*a>>-`WX=Kb>h8Fyw{2MI`Lj7-s{90NW6i>8%Vr?#2ZMwfy5g~ zyn%Y;2R#v34#XTt%z?xlNX&taLCk@~97xQ8#2iSj1ABqK2po?&ScIim4tgVy-Uy^8 z0(n0SDVg|8A0(o7=D-^xMtDIEEAOfgh;n&8xVMAlwJ_yp);EMhj z1c|YjfXSeyw`X7;=%L#iK)kn);5bg=49?*S0zf@)-$XF(;u(lHn7Rg&qhMkVCP%@) zgV=+KIhdG($x(0t5PL9n4gM3AP#-PO8pIvk5nVvs!NeU*+`&UZPJ>5b66pQl#aM^! z*ahMa_JAjdJD9kGi97fLE`k~d-@pTq=iv83+)0TvNQ-pHh#bg;KcI&R#D9ml?^sX; zg-@S3z2A_u4{|B#x;K<_PFUSJw{*byqWS@uB{b4>hpdi@uVKJ0IS=2%kbVM(>qCcqpLvr(w z+&r9s$(V+jm<@9Ea1FMD+CL;W56R8L^B^}5FChrGa0mDC2-M{vb$LXN9ue;&a`H%p z5qV&b0w@k=xPTlzDvye&g=QcxkBIdVF+Lgr31WRjtdEHC(HzVLz4~YomcSi5a2WK> zqqFdVA1>ntZiBo&dVt4xiU=Y2f5l_seN28Ili$bW_c8f>Onx7e-^b+lG5LK=ejk(H z$K>~MeGuQ{NuZ}5(@T#}g8d%Tua7C(WAgF%IbMRiJdP6LNfIPSDkw;c-@txP$j_4^ zAU{vY&lB?Vg#0|IiW;DYp43A_G)7-60JVC;S)W`5_sJ8^_2i8ZPq`nSrbHUB&(n0s zh8)O+KcENoc}iWL{t5Pa${tVI<7pE#M=NwjH}pgw^uqv*#554cQ)=*Z3$|ky_QC_l zL2jO&!8u%jAFhKuJq;7$8F_g|KAusBXX%j%SwLQ%QHN&+m_a?Bp@ChP%w zJ!6k&?D6a(t{?#9<=H*3-!tm+jJiB~0rK>m96iqfa`N1SykL*#jwpmuu%Ij|fW4oS zr{^6o6`cL~5pcfe?DzZ@p5Ya&>%SKwgdPi_9wF2rggS&|1a%Lg9wEO&g+1u45cUaS zpAhy5sfL#+%2u>-q7Z9<4SgqTD8LChg{ za37EG6cKohclaR0i=?1;U;F}k=!F4JpjThet1rr+JSw3!>Y*W;pgCG%FqVOMUR=fv zu-A)7Azr4yub>t$Gb1a=%}a9gk{*4T2ju7_z522sN}?jz>m_-4*%4jP9rVUa-a}pv z#Ry1@#RN>kY%Bq}c}Y%Ql9QMFZ~%vJ3f?#mUtGc!+ywEyB;HWs4JF=C;teIzbvQW=zl~>jD?~(cq=EwOk%;uj4jbf#9k^#A$a91vh&Q4lYN0L~pfQ@EJvyN) zdZ0ImJ%X4c$Z-VmMi6fV@kS7D1o1`?Zv^p15N`zWMi6fV@kS7D1o1`?Z$uF8BMk3_ zAkE@cGNc4Kew7jA_!T*Rl>_AXl`Zn15G<$;VtqxduZZuX|tO{}lU@oRGY`VdaR z7dP+#k3rn8iTgEizotJ3Tf8CeH^lvhxZjZLH<^(O`A`_eP!fNlG^&7{zai&u$oU&` z{-zOHqdNv-ET&;5=3p-7V>woVzJ9YFo3I6YaU4Df#63L36FkRDyhW4{Z7hx%g z`z>+5bqDdjCEmAQI1h6C_7ePY4R>%KkMI;BApW<+|BilsmkG8|VMHDf`#T2^_dD|Z z&VsUF&v)Cve(yZsi6b}#Z?OM6_J4N~?}T{In(sOH`^u<;me`J6V2$^z@t!r_v&MV! z{r)7*;2bW1b>3e=0I0+Jn+OK=cuzgvQ;+x5<2~njAC5?HuJ_a>in>HmmniBIrQjE& z2j`8-g6yzCZrH&9Gw8D@&K@-e<1qmcR`wK`o-zVI!zX6z7cMoKc)J zigQMB&M3|q#W|xmXB6j*;+#>OGm3LYan2~t8O1rHIA;{+jN+V8oHL4ZMsdz4&Kboy zqc~?2=ZxZ<9|Snthjhq*%pk@O%RyWpR%5M5BAj4B8I(gs9L72Lz!#T9k|a&g5uMQ$ zJrF9ABo#=CfW;z7vfp7s9^``qw!stZmFy_IM3Usy!9K~Gp#@swHl8B_ zukj8aM3NLKkp^jz4jGUG2C#k#XOu++R7N$_MFTVjd!%5G6r3eRUyK5=r;!SAIFIWH#yvd56Ofw}#GHbdQxJ2CD3K&(Y7l42Tp-SrW{{7R#GA4R zii5aQx}Y?wpds3UI8&1Il)XW`DTiPg!N+e{-Qg$KCFk{JX>|+dLi0u0wB2kHwEZHjS*o~P%`#B;~S7{&-jGZ8iCOkxHzu`fASvyFGz&0hAQ z-ke7{fx2^^;u1Ib5jp3Sb56SvkpuNc9FEETXbxvEo-rnEz?xzw7g2fdMZt~lZu%5c=4OWnEVqRw3F*~AvM zA@5xB&L!_$`%rr>HRn2yjB|a<|B!XAUyyY!S?A8dJ>*2jxz(HdLDZOA&bjNL*4$6g z1U2VwP76BGlR>C4_ejPto~cYHg;dg5%o?`y9v|=_AM+{4_>7aBCWEi|m4AXTPrzNs zIggz4$T^Rk^T;_*45g{UV>F}@PxCCTupfEsN1l#!M%H;^8N~!9GYvWCQE#5tu^)LB zu>^VN*@1lX9Oft|_=0pUas_qg$wc0Heh}J$+JWprT9;N0e?^2Z6MvZ48>W!L38n5#Pi&%pC zqtqRx-l#*!IqEo{bB+sK<{H;gd(_`SnExKsn7;@QP!ju?zcLT;FzU{4zWL>xzbWl_ ziLUgZHv@M5X}0%l&IBkC$(h6VO;n4@?<3w*(8WKlr>1+uw?T`%w*?k@0S5Z`2T(KEJ_>QIjcJV|4o zp&2b`MH|}Fk(cO74|>y={=_nvAq;0EV;IjwrjW!8W|7A0yul)tvVzsDVVD`nDVdll$SIj-d+*8b1#n!R`c^8v&F*z6e zmS6Zi2p=d#Wgg;rUZfMRk;o*r@-Dl{MlBEg5QN3$Ra{QRz4Te1d^(w3L$ zhAd0Uu;hHyTJjSP@fAO!=Thch%G^ttd#R?h#u=psGm%@ZzNO8#^cwV2dK>9vkcD2#=%tKa%6Ps^b!yRum*~n^v2Yz9oUC5S8!IDKZCIBUEE7G>QE1LlzoMMB$3AJe8^#r@<$Msvq$Cbp(2k^llHj3 zTo25$Tq0&uZV7g&+y+i^5p|T4X*vCr4>8;Fr76b~G^IIqvb>!vKaMw8!D1dZC|+DWtL&J5te%D}IM}tfFix6`>4fT*>c%O7^spcfZnjWLjwk+p%YroKfj} ze#1;Em!dM>smiVBh`Cm_6P0H&8_!k#1b0`y&eypA!Dx!(j0c-xCmuAD2NSUi532jY z&FthoGWiDgSGk{(sJn{Xs>rR1+^URZB2!q;Hg@2hsPY%)_fP|#!JQ8cVGMfpw?)E- zHnD}zInO2J^w6CkteS%dkW*E8SJiJ-{Z`d)RcBOnXH|Jsb!XN0*~2xyMBUXQDNIr7 z(*(6w8^BOr;{)tUHFJLWK8jI-ZuG-vAAXm8$n=rB$V(Jm=)--RekJY9jjj(%<*}cb7 zxJVW^gRrhWt6PO?^q@bn$gr+H>dLV0Z$Vfuz)b4Z$DQ@ew_Y-Hna??{kr{;b^-#Yw z<#1O0;n?5$A9IuwLHPKC)I^PsPrzA^&qNlFpT$fXsI7t88mO&-IW(9>8sG3U>Uu(^ zPqd&F>ygtFJNP3A8|L61I@1d~(r_CANeH+n>fvY2)ZXlMZt_3$(A>|OH|80< zOU>7@F$kZFpa9Vf!5z=Z_c`Z3=ltiK-@-F3TG58>=%I!AJRgM}dcGKOyv8Vwafb9D zY^k=EYHR8KmOj(cXIlD9OS5Syzm|LW0ejH$?;vbdoC;LtIoiO~Nf?>G!S zbksw~vCJTiWvpf$_N(Jow(}0VkZZ@xAnasboxB^JiXgjAdhcZJoy@({Bh;iebx}(v zy>yz+D&E9-o!-SRcCw3|_VEe&=_Jce7r8ax_<*BsH?(3q*E_&=@SGpEJc3r!ZjGnqK zVGa7|s*kSD@464?c6DA?d3DX;EB-q}?OoO0_1_@u)|h9ISGN|lq7Cio$V+sk2fgV_ ze_|QT5QZ}n?`5~~Ok^_CP-C~5%to!<=CcqrcaujqGw-$*{dN0}ANUEGcKd_Bxf6ul zbKpJb9zh-=kwy1t|6KBJjBD);87lhH_LyKfaec?BVl0%%R7QAnd8`o_3pV;RS4(za(*xU^wLi+nfDsYcqSm{UOwN;&h)y%H8O*+x1M`Hjy`)o zi8=Q+gWgL~XYZA)!TZwtP7uBlau;^^74v_k8$HnfD}B(*EBn~b0S*VD@9z%#l%_1@ zsYDvfSivgHwvV~?`4hA3^KTILbyr_m_w9_V`^wt)d53*v)>jUFKjLHD)6X6K+|kb+ z{oK*d9sPzffk{juiL>atUp6#sJzTwiTLOI~0J8}WPQ)h)R5ReRQ7-~H`Y|J>xG z1HI9E|9%W$7oTtt{r5Mo0cJYD9taIyi)A?W zAub7Z$IU|Baq5m+h`GnDWh)=B53`Ir#4*$!r}j9t$H_ZR&T-!&i!4}?T zC-1QrwGUGJAhi!V&RMSV4fbNtPyEVXsC}^72djN>KJKS1m8e2BYEqlJsDH592R}zU zdSEXGzsf-38Om#@fAAzykn!MUti)~%-pFR&Lj8kfKKKAK9(;}q*pI>2$>tVcqyE7% zkI#XO>}{M?zi-p!Ni{ zC#XH46qTug{YYqn{YbDM39V3jg4z?*p3s%P490#WOvHX9*pGyns69dL32IMR&IWd} z8~c%9KN1e2_5`&js68Q_48G$>e&Kii3Bn-(ccK0vG9MCyjEC6iAys*VM|q6;Jb~JW zv_{TDdh!bWh(+B)hA^D*sC&pf7O|8StVP{J-efE9p!Ok$kn@o9T;eKO+~h01Mg2qm z3c{gxBj=&_Q-lX7O*tx}{-HIo(?grlk{4)4Ctju->L051q4A7j5(}^wL+!;-dok2r z3|-GAwy=#I?BadYJ@iwKav}(a<)=6$QPVIr4Rhu&eGhZau#I>>hW)@l+zGdmk(+$zXGB3{J)#J*9-+4pWhl>M)TaSY(inY=ko$-h*zpl| ze1z;r=w(DADeU2M{td#BW;wDH)p&$Pcy6TUMz*ITFVO|F8fjJ|$1{;BBw^1++Ov^M z(f>%jkKBMg8)?r*zRLlQa2$7!JcIXRE$UDY z{g2ZBDE*Jp|0w;B(*G!ZjIw*9%y5)>joQIsZUy0J=Z}7n=NZ5V^fOvNqh~OSG+yTo z)?kN5Z(=iV@isfr-)Oyzz8!>P@=$?CX^q^*^urxv;*jB(p}d9+$GCHhJI5rGLMrYZ z^8u&%D+tFvjI+je!&zg^a;%=l4#8fI9gTCws(I{URr6bcbq!MsdL;Y#*)ZHW?=9Ay@znz63$?T&MDIYNcOX&SiRw;NcVZpt zQlBTV3yF3i@oAo=Ir2)J!&>ZNqJ5i?o9fu137(zc*$EA4K@WP6(@176^HJBN&Af%(owSqp_<;SK<|0{q z%}@NwAN(DJlXGz&MJPc<O+AGErk+BM zQ_pb?eNNTqRQ*lW-&Flgy%U7fa-h#?krW`B!W88JYGSU_?A^3cj3tptOl3NY*}z6N zp|)vinx>{{dYz`%X=}1Yy#>@jy%TDfo{AYy*W>h`gD}|{$uX!uS^dfCPgZ}j`jhMO49#dk zE85Twb553Zaz6$Thu=%dLwSwK=r=i;napMm%UQ)*%puu+ByZ&d%piF$=8$}xOI*df zpPbDt+Hv zFeM-#&Pg%b6lbLrMLsF=N%8w6T_m(3ZloEMX1OlG@ubr z^DNJ!|Cw!hkyl9|gYSZH*4^YJH~OCC+*!_@<=k1$o#nlnRgyB4=W!b1j#=)Q)s*JQ zV3z%uWj|)Mrz7@bRu|%t$*iU5eb#ikr>rap;!Q`MWQ-cL0o*aiEasG0e-jyccS#CG1{ zU3T*^YMFDGqa5cpYMQIpx$d9q{<-d-TaM~@*XBM&6Pluqxpri(9huvO?#O-oo|~t?dHS38-}7cS&+O(+U^3H4 zW+tZ z@ipJ^13&RAc6Z+2+zG<@<~!ef=SPr-ND2^5VTw|mQk10vm3fGVsllT>Mt#g+z8TCn zgZXAK-wfuP!F)5A-_fWsW+1YdBPb6nsu*U01sU-Av# zbDN*}jX(J(2p0t0#l1vvA2M1Xn+392p#KH>UZC#<?jkg>qXckA-qrD2Ii5T&TB&dRu7r3(b6?nJ+TGMO84jMe&ScEHYXo zn?;^m^ff>6YY;9r`^BDFZ03uf=S4c9zoAbU*;A1F$MEq>WrmZd6(T>BAZ+M8-&Yp zlA8)VObt5Ii#|AGnaq}{W7#geXUq1JiGG%SAB4*bQG(LwWw~CK>t(s;mk%O=*(_uU zc5AsjmLKK@|DAC=2v^vH6~%DYipO}0CJba4BT&Z*ySri?hxnXR{2hcV?;(OZ*rSz= zd4)LQnTz{ZF2^ia+JTj3v+^Q#Y30ozTxB0u#h{K=GF_#gRShxQRo&>x7^aYfom^!n zSMA{}SGgX9t8?g@iGJ1`#e2HuuOM7&N7kD0+A4U**2-pW2fAa%YZI}jYg5>Z zOxGUaf7r9N&RF*lk76e4y3!Z#)Vi6>$6VLhiFL>L49~3(argR?RKor1+wc<3SU(Lr zvEEG9e~4XJukQ6<^Ao=Y;f7LF#{C=G(FJvHklO~iZIIiBciG1$+~9j|2jNEV#KyXq z-^S5Q#+@6tvm3o`yvCP&6NH=caX&?n)20SINoVA=N#2|EyGg&B^t;I!o80N|F@>Al zx#>6l48k{yQvr3q*@E_TWF!+&`-$nohjTQr6+Kn}6ZoAlxF; zEl<&$=UL1e)*~~2vnbqhCkVItnZH34ZgtjHKi|3qd%E=|=DPLAAbhJj_0Z>AV>Zs+v4l*_ZHMgNc^JF-PJM=>pLZtm z1sAv+ggeV%2X|IuC}T;)?(MXDJC6q8t{6&F4tuuiRR*%04ZMjAcj;r74Bvf}Coq$D zN8-+R&DY;?3Ew@*nIL>Gn&Ol~5ASuOC(e5B9qjLWcY^T!2=dU6c+~j*M>y;KV?nrE z7P|{#CcD+PTW!15w%Z(bALsKR{Gc*5P}c`C{UDi{+(1qr+z!G$b$F7-EMO&eWY1qg zxYsQA%6)G~de9p+?%m72ApEc>WvPHZKb%DxnS6sgK9a>pX7-UC{K(#YvEdHp*G)5ANp?k@R-jW^OoL3q3x_TYFuUZOXBna&*MA(!K3eq8^@J$EADF6z>Vry0vsJa$Cba!E8SB+0RmO$7dgNloQ+u!p|efLu>T+xjB8lhAnIh!Y^{*=U+t9p04!3 z9KSHfFVuU|XHNReNuN0>r;}!RvM0_sX%A1nAB3l5bxKyJ3gP)v{fWhUcIqT&g7EZ% z*um4a(c5YDo|egJdv;oHr*8-0nZ~rhEYGZ9Bl13@pEKvUz)$>*{?4lH>^-RMtassT zW$f(Pr;yKC`JA=8XP;+0cK_@QW?>J`E@TPIS<6;F;6r42R`zF)lZib$`%e&_Gp}=@o!z|M6T6#S0N}q(CNSASX3U(u1*6FfNH~aMUY{LA~?Lhht z%rV^@)76%)o^N}Ui^Kw0} z_w&v_zn^q2a)k`C(Chi{`Gdc?6NDFXa1RmWrXcrIgql1~LmDCb3mxc87X~5!3u?Te z#tY_s;dS0%5%%hW-Y@9=g5EEf%f+fecqu1OVplG;;sx5_%uC(rh5j#%LAIA>k%qG` z>GzU;FX{KvO5Q@RmoD=a`nzO~mwrZ{m;OedmqWZ;m-ADca#X~-a#>B6Yf*=~JdU0( z55SBsFUCB5A8~luJTL3%@@|e`XD@%wDeTte^IYO8-|+)K@hj@Nte(s2xgz%~cT)iM zTzL%peWf3E>WV$O;?67Eao3f-?Bf#-;m#}WyyDI)?!4m8EAG5QjwNg2vhi7Hg1I{MG3O&hvl1{r4WdxFCZHD?TEEHdyt!C{6B zGGve;gADI_#wzSY#(oZ>)(o{~s5RpYnSk?-}9jA0z=y8b;fy8aJ$f-o}&d5EL{1u?J8 zI=Cm(+%oIquFMW}#yy$t$#hRdG>=totd3oy{suIm|1|tg_UX^*Hu6s|oftt2rGRfSF~fDJvN@ zWX-{>vKFzF6|BbGvUc$ahd9D<%r499vdk^(Hb3(lfASA%&Q@!-I5qN5>0Q6+{F}pY=FOSRW-jwt$ST&Nmz$f|!7kqCBR<8R-1NKc zrXFuz;aC1ZJvY^JOFg%8k(Ve6P!#)cs~PgVH3oOxTF(itA*Wkk2mkktimeout = Time::getCurrentTime() + maximumExecutionTime; } +void JavascriptEngine::prepareTimeout() const noexcept { root->timeout = Time::getCurrentTime() + maximumExecutionTime; } void JavascriptEngine::registerNativeObject (Identifier name, DynamicObject* object) { @@ -1715,6 +1715,11 @@ var JavascriptEngine::callFunction (Identifier function, const var::NativeFuncti return returnVal; } +const NamedValueSet& JavascriptEngine::getRootObjectProperties() const noexcept +{ + return root->getProperties(); +} + #if JUCE_MSVC #pragma warning (pop) #endif diff --git a/JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.h b/JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.h index 42368a4..eafc3cd 100644 --- a/JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.h +++ b/JuceLibraryCode/modules/juce_core/javascript/juce_Javascript.h @@ -96,10 +96,13 @@ public: */ RelativeTime maximumExecutionTime; + /** Provides access to the set of properties of the root namespace object. */ + const NamedValueSet& getRootObjectProperties() const noexcept; + private: JUCE_PUBLIC_IN_DLL_BUILD (struct RootObject) - ReferenceCountedObjectPtr root; - void prepareTimeout() const; + const ReferenceCountedObjectPtr root; + void prepareTimeout() const noexcept; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JavascriptEngine) }; diff --git a/JuceLibraryCode/modules/juce_core/native/juce_win32_Network.cpp b/JuceLibraryCode/modules/juce_core/native/juce_win32_Network.cpp index 1b35453..f0b6061 100644 --- a/JuceLibraryCode/modules/juce_core/native/juce_win32_Network.cpp +++ b/JuceLibraryCode/modules/juce_core/native/juce_win32_Network.cpp @@ -45,13 +45,14 @@ public: address (address_), headers (headers_), postData (postData_), position (0), finished (false), isPost (isPost_), timeOutMs (timeOutMs_) { - createConnection (progressCallback, progressCallbackContext); - - if (! isError()) + for (int maxRedirects = 10; --maxRedirects >= 0;) { - if (responseHeaders != nullptr) + createConnection (progressCallback, progressCallbackContext); + + if (! isError()) { DWORD bufferSizeBytes = 4096; + StringPairArray headers (false); for (;;) { @@ -65,11 +66,10 @@ public: for (int i = 0; i < headersArray.size(); ++i) { const String& header = headersArray[i]; - const String key (header.upToFirstOccurrenceOf (": ", false, false)); + const String key (header.upToFirstOccurrenceOf (": ", false, false)); const String value (header.fromFirstOccurrenceOf (": ", false, false)); - const String previousValue ((*responseHeaders) [key]); - - responseHeaders->set (key, previousValue.isEmpty() ? value : (previousValue + "," + value)); + const String previousValue (headers[key]); + headers.set (key, previousValue.isEmpty() ? value : (previousValue + "," + value)); } break; @@ -77,14 +77,34 @@ public: if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) break; + + bufferSizeBytes += 4096; } - } - DWORD status = 0; - DWORD statusSize = sizeof (status); + DWORD status = 0; + DWORD statusSize = sizeof (status); + + if (HttpQueryInfo (request, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &status, &statusSize, 0)) + { + statusCode = (int) status; + + if (status == 301 || status == 302 || status == 303 || status == 307) + { + const String newLocation (headers["Location"]); + + if (newLocation.isNotEmpty() && newLocation != address) + { + address = newLocation; + continue; + } + } + } + + if (responseHeaders != nullptr) + responseHeaders->addArray (headers); + } - if (HttpQueryInfo (request, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &status, &statusSize, 0)) - statusCode = (int) status; + break; } } diff --git a/JuceLibraryCode/modules/juce_core/system/juce_PlatformDefs.h b/JuceLibraryCode/modules/juce_core/system/juce_PlatformDefs.h index 4086dfa..aadf388 100644 --- a/JuceLibraryCode/modules/juce_core/system/juce_PlatformDefs.h +++ b/JuceLibraryCode/modules/juce_core/system/juce_PlatformDefs.h @@ -337,6 +337,10 @@ namespace juce #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && ! defined (JUCE_DELETED_FUNCTION) #define JUCE_DELETED_FUNCTION = delete #endif + + #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && ! defined (JUCE_COMPILER_SUPPORTS_LAMBDAS) + #define JUCE_COMPILER_SUPPORTS_LAMBDAS 1 + #endif #endif #if JUCE_CLANG && defined (__has_feature) @@ -356,6 +360,10 @@ namespace juce #define JUCE_DELETED_FUNCTION = delete #endif + #if __has_feature (cxx_lambdas) && ((! JUCE_MAC) || (defined (MAC_OS_X_VERSION_10_8) && MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_8)) + #define JUCE_COMPILER_SUPPORTS_LAMBDAS 1 + #endif + #ifndef JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL #define JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL 1 #endif @@ -372,6 +380,7 @@ namespace juce #if defined (_MSC_VER) && _MSC_VER >= 1700 #define JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL 1 + #define JUCE_COMPILER_SUPPORTS_LAMBDAS 1 #endif #ifndef JUCE_DELETED_FUNCTION diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.cpp b/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.cpp index cfaf8cf..44c2adc 100644 --- a/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.cpp +++ b/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.cpp @@ -131,6 +131,7 @@ void MessageManager::stopDispatchLoop() #endif //============================================================================== +#if JUCE_COMPILER_SUPPORTS_LAMBDAS struct AsyncFunction : private MessageManager::MessageBase { AsyncFunction (std::function f) : fn (f) { post(); } @@ -146,7 +147,9 @@ void MessageManager::callAsync (std::function f) { new AsyncFunction (f); } +#endif +//============================================================================== class AsyncFunctionCallback : public MessageManager::MessageBase { public: diff --git a/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.h b/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.h index bd91977..0901b29 100644 --- a/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.h +++ b/JuceLibraryCode/modules/juce_events/messages/juce_MessageManager.h @@ -91,10 +91,12 @@ public: #endif //============================================================================== + #if JUCE_COMPILER_SUPPORTS_LAMBDAS /** Asynchronously invokes a function or C++11 lambda on the message thread. Internally this uses the CallbackMessage class to invoke the callback. */ static void callAsync (std::function); + #endif /** Calls a function using the message-thread. diff --git a/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm b/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm index b7e814d..4fd30aa 100644 --- a/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm +++ b/JuceLibraryCode/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm @@ -142,7 +142,6 @@ public: if (currentPeer != peer) { - removeFromParent(); currentPeer = peer; if (peer != nullptr) @@ -151,6 +150,10 @@ public: [peerView addSubview: view]; componentMovedOrResized (false, false); } + else + { + removeFromParent(); + } } [view setHidden: ! owner.isShowing()]; diff --git a/README.md b/README.md index a5157c7..39481fa 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ FAQ (possibly) Credits & thanks ---------------- * DX Synth engine : Raph Levien and the [msfa](https://code.google.com/p/music-synthesizer-for-android) team -* AZur Studio - Graphical design +* AZur Studio : Graphical design * LP Filter : Filatov Vadim (2DaT); taken from the excellent [Obxd](https://obxd.wordpress.com) project * PPPlay : Great [OPL3](http://sourceforge.net/projects/peepeeplayer) implementation, with documented code :D * DX7 program compilation : Jean-Marc Desprez (author of [SynprezFM](http://www.synprez.com/SynprezFM)) @@ -147,6 +147,7 @@ Planned milestones TODO - Dexed ------------ * Yamaha 4 operators (DX21/DX27/DX100) sysex import +* UI threaded messaging to avoid DAW automation 'clicks' * Various code cleanup * AU Version diff --git a/Resources/ui/GlobalEditor_864x144.png b/Resources/ui/GlobalEditor_864x144.png index 863b46c5b4835656e396c07892d484b9d4a33304..a23f739008524903b012967c14f8aaa454c071f7 100644 GIT binary patch literal 27571 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 literal 16274 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 Y1G)CF(src); if(img != 0) { return; diff --git a/Source/Dexed.h b/Source/Dexed.h index 74722d4..0532721 100644 --- a/Source/Dexed.h +++ b/Source/Dexed.h @@ -24,14 +24,14 @@ void dexed_trace(const char *source, const char *fmt, ...); #ifdef DEBUG - #define DEXED_VERSION "0.8.0a DEBUG" + #define DEXED_VERSION "0.8.0b1 DEBUG" #ifdef _MSC_VER #define TRACE(fmt, ...) dexed_trace(__FUNCTION__,fmt,##__VA_ARGS__) #else #define TRACE(fmt, ...) dexed_trace(__PRETTY_FUNCTION__,fmt,##__VA_ARGS__) #endif #else - #define DEXED_VERSION "0.8.0a" + #define DEXED_VERSION "0.8.0b1" #define TRACE(fmt, ...) #endif diff --git a/Source/GlobalEditor.cpp b/Source/GlobalEditor.cpp index f36e08b..95ca368 100644 --- a/Source/GlobalEditor.cpp +++ b/Source/GlobalEditor.cpp @@ -19,12 +19,50 @@ //[Headers] You can add your own extra header files here... #include "PluginEditor.h" +#include "DXLookNFeel.h" //[/Headers] #include "GlobalEditor.h" //[MiscUserDefs] You can add your own user definitions and misc code here... + +/** + * Ugly but usefull midi monitor to know if you are really sending/receiving something from the DX7 + * If the midi is not configured this component wont show up + */ +class MidiMonitor : public Component { + SysexComm *midi; +public: + MidiMonitor(SysexComm *sysexComm) { + midi = sysexComm; + } + + void paint(Graphics &g) { + if ( ! (midi->isInputActive() || midi->isOutputActive() ) ) + return; + + /*g.setColour(DXLookNFeel::lightBackground); + g.fillRoundedRectangle(0, 0, getWidth(), getHeight(), 3); + */ + g.setColour(Colours::white); +// g.drawSingleLineText("DX7 ACT ", 0, 13); + + Image myStrip = ImageCache::getFromMemory(BinaryData::Light_14x14_png, BinaryData::Light_14x14_pngSize); + + if ( midi->isInputActive() ) { + g.drawSingleLineText("DX7 IN", 17,14); + g.drawImage(myStrip, 0, 3, 14, 14, 0, midi->inActivity ? 14 : 0, 14, 14); + midi->inActivity = false; + } + + if ( midi->isOutputActive() ) { + g.drawSingleLineText("DX7 OUT", 17, 28); + g.drawImage(myStrip, 0, 17, 14, 14, 0, midi->outActivity ? 14 : 0, 14, 14); + midi->outActivity = false; + } + } +}; //[/MiscUserDefs] //============================================================================== @@ -32,7 +70,7 @@ GlobalEditor::GlobalEditor () { addAndMakeVisible (lfoSpeed = new Slider ("lfoSpeed")); lfoSpeed->setRange (0, 99, 1); - lfoSpeed->setSliderStyle (Slider::Rotary); + lfoSpeed->setSliderStyle (Slider::RotaryVerticalDrag); lfoSpeed->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); lfoSpeed->addListener (this); @@ -122,6 +160,7 @@ GlobalEditor::GlobalEditor () addAndMakeVisible (oscSync = new ToggleButton ("oscSync")); oscSync->setButtonText (String::empty); + oscSync->addListener (this); addAndMakeVisible (pitchModSens = new Slider ("pitchModSens")); pitchModSens->setRange (0, 7, 0); @@ -131,6 +170,7 @@ GlobalEditor::GlobalEditor () addAndMakeVisible (lfoSync = new ToggleButton ("lfoSync")); lfoSync->setButtonText (String::empty); + lfoSync->addListener (this); addAndMakeVisible (pitchEnvDisplay = new PitchEnvDisplay()); pitchEnvDisplay->setName ("pitchEnvDisplay"); @@ -218,6 +258,7 @@ GlobalEditor::GlobalEditor () lfoType->setImage(ImageCache::getFromMemory(BinaryData::LFO_36_26_png, BinaryData::LFO_36_26_pngSize)); programs = programSelector; + //[/Constructor] } @@ -281,6 +322,9 @@ void GlobalEditor::paint (Graphics& g) //[UserPaint] Add your own custom painting code here.. Image myStrip = ImageCache::getFromMemory(BinaryData::Light_14x14_png, BinaryData::Light_14x14_pngSize); g.drawImage(myStrip, 300, 70, 14, 14, 0, monoMode->getToggleState() ? 14 : 0, 14, 14); + + g.drawImage(myStrip, 621, 102, 14, 14, 0, lfoSync->getToggleState() ? 14 : 0, 14, 14); + g.drawImage(myStrip, 705, 102, 14, 14, 0, oscSync->getToggleState() ? 14 : 0, 14, 14); //[/UserPaint] } @@ -301,12 +345,12 @@ void GlobalEditor::resized() pitchLevel4->setBounds (823, 56, 34, 34); pitchLevel1->setBounds (739, 57, 34, 34); transpose->setBounds (202, 60, 34, 34); - oscSync->setBounds (652, 95, 48, 26); + oscSync->setBounds (650, 96, 48, 26); pitchModSens->setBounds (666, 5, 34, 34); - lfoSync->setBounds (571, 96, 48, 26); + lfoSync->setBounds (567, 96, 48, 26); pitchEnvDisplay->setBounds (751, 10, 93, 30); algoDisplay->setBounds (338, 30, 146, 91); - feedback->setBounds (501, 80, 34, 34); + feedback->setBounds (501, 81, 34, 34); algo->setBounds (501, 22, 34, 34); lcdDisplay->setBounds (6, 87, 140, 13); output->setBounds (157, 60, 34, 34); @@ -318,7 +362,7 @@ void GlobalEditor::resized() loadButton->setBounds (50, 111, 50, 30); saveButton->setBounds (98, 111, 50, 30); storeButton->setBounds (270, 109, 50, 30); - monoMode->setBounds (248, 65, 48, 26); + monoMode->setBounds (249, 65, 48, 26); lfoType->setBounds (584, 8, 36, 26); programSelector->setBounds (153, 115, 112, 18); //[UserResized] Add your own custom resize handling here.. @@ -443,7 +487,19 @@ void GlobalEditor::buttonClicked (Button* buttonThatWasClicked) //[UserbuttonClicked_Pre] //[/UserbuttonClicked_Pre] - if (buttonThatWasClicked == initButton) + if (buttonThatWasClicked == oscSync) + { + //[UserButtonCode_oscSync] -- add your button handler code here.. + repaint(); + //[/UserButtonCode_oscSync] + } + else if (buttonThatWasClicked == lfoSync) + { + //[UserButtonCode_lfoSync] -- add your button handler code here.. + repaint(); + //[/UserButtonCode_lfoSync] + } + else if (buttonThatWasClicked == initButton) { //[UserButtonCode_initButton] -- add your button handler code here.. editor->initProgram(); @@ -527,6 +583,11 @@ void GlobalEditor::bind(DexedAudioProcessor *parent) { algoDisplay->algo = &(parent->data[134]); pitchEnvDisplay->pvalues = &(parent->data[126]); processor = parent; + + midiMonitor = new MidiMonitor(&(processor->sysexComm)); + addAndMakeVisible(midiMonitor); + midiMonitor->setBounds(155, 21, 80, 80); + repaint(); } @@ -579,8 +640,8 @@ BEGIN_JUCER_METADATA + style="RotaryVerticalDrag" textBoxPos="NoTextBox" textBoxEditable="1" + textBoxWidth="80" textBoxHeight="20" skewFactor="1"/> + explicitFocusOrder="0" pos="650 96 48 26" buttonText="" connectedEdges="0" + needsCallback="1" radioGroupId="0" state="0"/> + explicitFocusOrder="0" pos="567 96 48 26" buttonText="" connectedEdges="0" + needsCallback="1" radioGroupId="0" state="0"/> @@ -654,7 +715,7 @@ BEGIN_JUCER_METADATA virtualName="" explicitFocusOrder="0" pos="338 30 146 91" class="AlgoDisplay" params=""/> midiMonitor; //[/UserMethods] void paint (Graphics& g); diff --git a/Source/OperatorEditor.cpp b/Source/OperatorEditor.cpp index 88f57f6..02d2296 100644 --- a/Source/OperatorEditor.cpp +++ b/Source/OperatorEditor.cpp @@ -244,14 +244,14 @@ void OperatorEditor::paint (Graphics& g) //[UserPaint] Add your own custom painting code here.. g.setColour (Colours::white); g.setFont(Font (30.00f, Font::plain)); - g.drawText(opNum, 242, 9, 30, 30, Justification::centred, true); + g.drawText(opNum, 242, 10, 30, 30, Justification::centred, true); Image myStrip = ImageCache::getFromMemory(BinaryData::Light_14x14_png, BinaryData::Light_14x14_pngSize); bool state = opMode->getToggleState(); // 129 x 24 - g.drawImage(myStrip, 128, 24, 14, 14, 0, state ? 0 : 14, 14, 14); + g.drawImage(myStrip, 127, 24, 14, 14, 0, state ? 0 : 14, 14, 14); // 199 x 24 g.drawImage(myStrip, 199, 24, 14, 14, 0, !state ? 0 : 14, 14, 14); diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp index ea52791..14074aa 100644 --- a/Source/PluginEditor.cpp +++ b/Source/PluginEditor.cpp @@ -57,53 +57,6 @@ public: } }; -/** - * Ugly but usefull midi monitor to know if you are really sending/receiving something from the DX7 - * If the midi is not configured this component wont show up - */ -class MidiMonitor : public Component { - SysexComm *midi; -public: - MidiMonitor(SysexComm *sysexComm) { - midi = sysexComm; - } - - void paint(Graphics &g) { - if ( ! (midi->isInputActive() || midi->isOutputActive() ) ) - return; - - //g.setColour(DXLookNFeel::dxDarkBrown); - g.fillRect(0, 0, getWidth(), getHeight()); - g.setColour(Colours::black); - g.drawSingleLineText("DX7 ", 0, 13); - - if ( midi->isInputActive() ) { - g.drawSingleLineText("IN", 27,13); - if ( midi->inActivity ) { - g.setColour(Colours::red); - } else { - g.setColour(Colours::darkgrey); - } - g.fillRect(44, 4, 7, 9); - - midi->inActivity = false; - } - - if ( midi->isOutputActive() ) { - g.setColour(Colours::black); - g.drawSingleLineText("OUT", 55, 13); - if ( midi->outActivity ) { - g.setColour(Colours::red); - } else { - g.setColour(Colours::darkgrey); - } - g.fillRect(83, 4, 7, 9); - - midi->outActivity = false; - } - } -}; - //============================================================================== DexedAudioProcessorEditor::DexedAudioProcessorEditor (DexedAudioProcessor* ownerFilter) : AudioProcessorEditor (ownerFilter), @@ -111,12 +64,12 @@ DexedAudioProcessorEditor::DexedAudioProcessorEditor (DexedAudioProcessor* owner { LookAndFeel::setDefaultLookAndFeel(&dx_lnf); - setSize (866, 677); + setSize (866, ownerFilter->showKeyboard ? 677 : 583); processor = ownerFilter; - addAndMakeVisible(midiMonitor = new MidiMonitor(&processor->sysexComm)); - midiMonitor->setBounds(645, 6, 110, 18); + /*addAndMakeVisible(midiMonitor = new MidiMonitor(&processor->sysexComm)); + midiMonitor->setBounds(645, 6, 110, 18);*/ // OPERATORS addAndMakeVisible(&(operators[0])); @@ -149,8 +102,7 @@ DexedAudioProcessorEditor::DexedAudioProcessorEditor (DexedAudioProcessor* owner // The DX7 is a badass on the bass, keep it that way midiKeyboard.setLowestVisibleKey(24); - const int keyboardHeight = 90; - midiKeyboard.setBounds(4, getHeight() - keyboardHeight - 4, getWidth() - 8, keyboardHeight); + midiKeyboard.setBounds(4, 583, getWidth() - 8, 90); global.editor = this; addAndMakeVisible(&global); @@ -283,33 +235,18 @@ void DexedAudioProcessorEditor::parmShow() { processor->setEngineType(tp); processor->savePreference(); + setSize (866, processor->showKeyboard ? 677 : 583); + midiKeyboard.repaint(); + if ( ret == false ) { AlertWindow::showMessageBoxAsync(AlertWindow::WarningIcon, "Midi Interface", "Error opening midi ports"); } - - //sendButton->setVisible(processor->sysexComm.isOutputActive()); } void DexedAudioProcessorEditor::initProgram() { processor->resetToInitVoice(); } -/* - if (buttonThatWasClicked == monoButton ) { - processor->setMonoMode(monoButton->getToggleState()); - monoButton->setState(processor->isMonoMode() ? Button::ButtonState::buttonDown : Button::ButtonState::buttonNormal); - return; - } - - if (buttonThatWasClicked == aboutButton) { - AboutBox about(this); - about.runModalLoop(); - return; - } - - AlertWindow::showMessageBoxAsync(AlertWindow::WarningIcon, "Sorry", "Soon !"); -}*/ - void DexedAudioProcessorEditor::comboBoxChanged (ComboBox* comboBoxThatHasChanged) { processor->setCurrentProgram(global.programs->getSelectedId()-1); processor->updateHostDisplay(); @@ -330,7 +267,6 @@ void DexedAudioProcessorEditor::timerCallback() { } global.updatePitchPos(processor->voiceStatus.pitchStep); global.updateVu(processor->vuSignal); - midiMonitor->repaint(); } void DexedAudioProcessorEditor::updateUI() { diff --git a/Source/PluginEditor.h b/Source/PluginEditor.h index 3e9462d..b7ccd5d 100644 --- a/Source/PluginEditor.h +++ b/Source/PluginEditor.h @@ -39,7 +39,6 @@ class DexedAudioProcessorEditor : public AudioProcessorEditor, MidiKeyboardComponent midiKeyboard; DXLookNFeel dx_lnf; - ScopedPointer midiMonitor; OperatorEditor operators[6]; public: diff --git a/Source/msfa/env.cc b/Source/msfa/env.cc old mode 100755 new mode 100644 index 4c73705..63e44ac --- a/Source/msfa/env.cc +++ b/Source/msfa/env.cc @@ -1,132 +1,132 @@ -/* - * Copyright 2012 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include "synth.h" -#include "env.h" - -#include "../Dexed.h" -//using namespace std; - -uint32_t Env::sr_multiplier = (1<<24); - -void Env::init_sr(double sampleRate) { - sr_multiplier = (44100.0 / sampleRate) * (1<<24); -} - -void Env::init(const int r[4], const int l[4], int32_t ol, int rate_scaling) { - for (int i = 0; i < 4; i++) { - rates_[i] = r[i]; - levels_[i] = l[i]; - } - outlevel_ = ol; - rate_scaling_ = rate_scaling; - level_ = 0; - down_ = true; - advance(0); -} - -int32_t Env::getsample() { - if (ix_ < 3 || ((ix_ < 4) && !down_)) { - if (rising_) { - const int jumptarget = 1716; - if (level_ < (jumptarget << 16)) { - level_ = jumptarget << 16; - } - level_ += (((17 << 24) - level_) >> 24) * inc_; - // TODO: should probably be more accurate when inc is large - if (level_ >= targetlevel_) { - level_ = targetlevel_; - advance(ix_ + 1); - } - } else { // !rising - level_ -= inc_; - if (level_ <= targetlevel_) { - level_ = targetlevel_; - advance(ix_ + 1); - } - } - } - // TODO: this would be a good place to set level to 0 when under threshold - return level_; -} - -void Env::keydown(bool d) { - if (down_ != d) { - down_ = d; - advance(d ? 0 : 3); - } -} - -void Env::setparam(int param, int value) { - if (param < 4) { - rates_[param] = value; - } else if (param < 8) { - levels_[param - 4] = value; - } - // Unknown parameter, ignore for now -} - -const int levellut[] = { - 0, 5, 9, 13, 17, 20, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 42, 43, 45, 46 -}; - -int Env::scaleoutlevel(int outlevel) { - return outlevel >= 20 ? 28 + outlevel : levellut[outlevel]; -} - -void Env::advance(int newix) { - ix_ = newix; - if (ix_ < 4) { - int newlevel = levels_[ix_]; - int actuallevel = scaleoutlevel(newlevel) >> 1; - actuallevel = (actuallevel << 6) + outlevel_ - 4256; - actuallevel = actuallevel < 16 ? 16 : actuallevel; - // level here is same as Java impl - targetlevel_ = actuallevel << 16; - rising_ = (targetlevel_ > level_); - - // rate - int qrate = (rates_[ix_] * 41) >> 6; - qrate += rate_scaling_; - qrate = min(qrate, 63); - inc_ = (4 + (qrate & 3)) << (2 + LG_N + (qrate >> 2)); - - // meh, this should be fixed elsewhere - inc_ = ((int64_t)inc_ * (int64_t)sr_multiplier) >> 24; - } -} - -void Env::getPosition(char *step) { - *step = ix_; -} - -void Env::transfer(Env &src) { - for(int i=0;i<4;i++) { - rates_[i] = src.rates_[i]; - levels_[i] = src.levels_[i]; - } - outlevel_ = src.outlevel_; - rate_scaling_ = src.rate_scaling_; - level_ = src.level_; - targetlevel_ = src.targetlevel_; - rising_= src.rising_; - ix_ = src.ix_; - inc_ = src.inc_; - down_ = src.down_; -} - +/* + * Copyright 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include "synth.h" +#include "env.h" + +#include "../Dexed.h" +//using namespace std; + +uint32_t Env::sr_multiplier = (1<<24); + +void Env::init_sr(double sampleRate) { + sr_multiplier = (44100.0 / sampleRate) * (1<<24); +} + +void Env::init(const int r[4], const int l[4], int32_t ol, int rate_scaling) { + for (int i = 0; i < 4; i++) { + rates_[i] = r[i]; + levels_[i] = l[i]; + } + outlevel_ = ol; + rate_scaling_ = rate_scaling; + level_ = 0; + down_ = true; + advance(0); +} + +int32_t Env::getsample() { + if (ix_ < 3 || ((ix_ < 4) && !down_)) { + if (rising_) { + const int jumptarget = 1716; + if (level_ < (jumptarget << 16)) { + level_ = jumptarget << 16; + } + level_ += (((17 << 24) - level_) >> 24) * inc_; + // TODO: should probably be more accurate when inc is large + if (level_ >= targetlevel_) { + level_ = targetlevel_; + advance(ix_ + 1); + } + } else { // !rising + level_ -= inc_; + if (level_ <= targetlevel_) { + level_ = targetlevel_; + advance(ix_ + 1); + } + } + } + // TODO: this would be a good place to set level to 0 when under threshold + return level_; +} + +void Env::keydown(bool d) { + if (down_ != d) { + down_ = d; + advance(d ? 0 : 3); + } +} + +void Env::setparam(int param, int value) { + if (param < 4) { + rates_[param] = value; + } else if (param < 8) { + levels_[param - 4] = value; + } + // Unknown parameter, ignore for now +} + +const int levellut[] = { + 0, 5, 9, 13, 17, 20, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 42, 43, 45, 46 +}; + +int Env::scaleoutlevel(int outlevel) { + return outlevel >= 20 ? 28 + outlevel : levellut[outlevel]; +} + +void Env::advance(int newix) { + ix_ = newix; + if (ix_ < 4) { + int newlevel = levels_[ix_]; + int actuallevel = scaleoutlevel(newlevel) >> 1; + actuallevel = (actuallevel << 6) + outlevel_ - 4256; + actuallevel = actuallevel < 16 ? 16 : actuallevel; + // level here is same as Java impl + targetlevel_ = actuallevel << 16; + rising_ = (targetlevel_ > level_); + + // rate + int qrate = (rates_[ix_] * 41) >> 6; + qrate += rate_scaling_; + qrate = min(qrate, 63); + inc_ = (4 + (qrate & 3)) << (2 + LG_N + (qrate >> 2)); + + // meh, this should be fixed elsewhere + inc_ = ((int64_t)inc_ * (int64_t)sr_multiplier) >> 24; + } +} + +void Env::getPosition(char *step) { + *step = ix_; +} + +void Env::transfer(Env &src) { + for(int i=0;i<4;i++) { + rates_[i] = src.rates_[i]; + levels_[i] = src.levels_[i]; + } + outlevel_ = src.outlevel_; + rate_scaling_ = src.rate_scaling_; + level_ = src.level_; + targetlevel_ = src.targetlevel_; + rising_= src.rising_; + ix_ = src.ix_; + inc_ = src.inc_; + down_ = src.down_; +} + diff --git a/Source/msfa/lfo.cc b/Source/msfa/lfo.cc old mode 100755 new mode 100644 index 6b86df5..a3836b8 --- a/Source/msfa/lfo.cc +++ b/Source/msfa/lfo.cc @@ -1,97 +1,97 @@ -/* - * Copyright 2013 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Low frequency oscillator, compatible with DX7 - -#include "synth.h" - -#include "sin.h" -#include "lfo.h" - -uint32_t Lfo::unit_; - -void Lfo::init(double sample_rate) { - // constant is 1 << 32 / 15.5s / 11 - Lfo::unit_ = (int32_t)(N * 25190424 / sample_rate + 0.5); -} - -void Lfo::reset(const char params[6]) { - int rate = params[0]; // 0..99 - int sr = rate == 0 ? 1 : (165 * rate) >> 6; - sr *= sr < 160 ? 11 : (11 + ((sr - 160) >> 4)); - delta_ = unit_ * sr; - int a = 99 - params[1]; // LFO delay - if (a == 99) { - delayinc_ = ~0u; - delayinc2_ = ~0u; - } else { - a = (16 + (a & 15)) << (1 + (a >> 4)); - delayinc_ = unit_ * a; - a &= 0xff80; - a = max(0x80, a); - delayinc2_ = unit_ * a; - } - waveform_ = params[5]; - sync_ = params[4] != 0; -} - -int32_t Lfo::getsample() { - phase_ += delta_; - int32_t x; - switch (waveform_) { - case 0: // triangle - x = phase_ >> 7; - x ^= -(phase_ >> 31); - x &= (1 << 24) - 1; - return x; - case 1: // sawtooth down - return (~phase_ ^ (1U << 31)) >> 8; - case 2: // sawtooth up - return (phase_ ^ (1U << 31)) >> 8; - case 3: // square - return ((~phase_) >> 7) & (1 << 24); - case 4: // sine - return (1 << 23) + (Sin::lookup(phase_ >> 8) >> 1); - case 5: // s&h - if (phase_ < delta_) { - randstate_ = (randstate_ * 179 + 17) & 0xff; - } - x = randstate_ ^ 0x80; - return (x + 1) << 16; - } - return 1 << 23; -} - -int32_t Lfo::getdelay() { - uint32_t delta = delaystate_ < (1U << 31) ? delayinc_ : delayinc2_; - uint32_t d = delaystate_ + delta; - if (d < delayinc_) { - return 1 << 24; - } - delaystate_ = d; - if (d < (1U << 31)) { - return 0; - } else { - return (d >> 7) & ((1 << 24) - 1); - } -} - -void Lfo::keydown() { - if (sync_) { - phase_ = (1U << 31) - 1; - } - delaystate_ = 0; -} +/* + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Low frequency oscillator, compatible with DX7 + +#include "synth.h" + +#include "sin.h" +#include "lfo.h" + +uint32_t Lfo::unit_; + +void Lfo::init(double sample_rate) { + // constant is 1 << 32 / 15.5s / 11 + Lfo::unit_ = (int32_t)(N * 25190424 / sample_rate + 0.5); +} + +void Lfo::reset(const char params[6]) { + int rate = params[0]; // 0..99 + int sr = rate == 0 ? 1 : (165 * rate) >> 6; + sr *= sr < 160 ? 11 : (11 + ((sr - 160) >> 4)); + delta_ = unit_ * sr; + int a = 99 - params[1]; // LFO delay + if (a == 99) { + delayinc_ = ~0u; + delayinc2_ = ~0u; + } else { + a = (16 + (a & 15)) << (1 + (a >> 4)); + delayinc_ = unit_ * a; + a &= 0xff80; + a = max(0x80, a); + delayinc2_ = unit_ * a; + } + waveform_ = params[5]; + sync_ = params[4] != 0; +} + +int32_t Lfo::getsample() { + phase_ += delta_; + int32_t x; + switch (waveform_) { + case 0: // triangle + x = phase_ >> 7; + x ^= -(phase_ >> 31); + x &= (1 << 24) - 1; + return x; + case 1: // sawtooth down + return (~phase_ ^ (1U << 31)) >> 8; + case 2: // sawtooth up + return (phase_ ^ (1U << 31)) >> 8; + case 3: // square + return ((~phase_) >> 7) & (1 << 24); + case 4: // sine + return (1 << 23) + (Sin::lookup(phase_ >> 8) >> 1); + case 5: // s&h + if (phase_ < delta_) { + randstate_ = (randstate_ * 179 + 17) & 0xff; + } + x = randstate_ ^ 0x80; + return (x + 1) << 16; + } + return 1 << 23; +} + +int32_t Lfo::getdelay() { + uint32_t delta = delaystate_ < (1U << 31) ? delayinc_ : delayinc2_; + uint32_t d = delaystate_ + delta; + if (d < delayinc_) { + return 1 << 24; + } + delaystate_ = d; + if (d < (1U << 31)) { + return 0; + } else { + return (d >> 7) & ((1 << 24) - 1); + } +} + +void Lfo::keydown() { + if (sync_) { + phase_ = (1U << 31) - 1; + } + delaystate_ = 0; +} diff --git a/Source/msfa/lfo.h b/Source/msfa/lfo.h old mode 100755 new mode 100644 index 809df1e..e769535 --- a/Source/msfa/lfo.h +++ b/Source/msfa/lfo.h @@ -1,43 +1,43 @@ -/* - * Copyright 2013 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Low frequency oscillator, compatible with DX7 - -class Lfo { - public: - static void init(double sample_rate); - void reset(const char params[6]); - - // result is 0..1 in Q24 - int32_t getsample(); - - // result is 0..1 in Q24 - int32_t getdelay(); - - void keydown(); - private: - static uint32_t unit_; - - uint32_t phase_; // Q32 - uint32_t delta_; - uint8_t waveform_; - uint8_t randstate_; - bool sync_; - - uint32_t delaystate_; - uint32_t delayinc_; - uint32_t delayinc2_; -}; +/* + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Low frequency oscillator, compatible with DX7 + +class Lfo { + public: + static void init(double sample_rate); + void reset(const char params[6]); + + // result is 0..1 in Q24 + int32_t getsample(); + + // result is 0..1 in Q24 + int32_t getdelay(); + + void keydown(); + private: + static uint32_t unit_; + + uint32_t phase_; // Q32 + uint32_t delta_; + uint8_t waveform_; + uint8_t randstate_; + bool sync_; + + uint32_t delaystate_; + uint32_t delayinc_; + uint32_t delayinc2_; +}; diff --git a/Source/msfa/sin.cc b/Source/msfa/sin.cc old mode 100755 new mode 100644 index 5b09de4..3257dcd --- a/Source/msfa/sin.cc +++ b/Source/msfa/sin.cc @@ -1,142 +1,142 @@ -/* - * Copyright 2012 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define _USE_MATH_DEFINES -#include - -#include "synth.h" -#include "sin.h" - -#define R (1 << 29) - -#ifdef SIN_DELTA -int32_t sintab[SIN_N_SAMPLES << 1]; -#else -int32_t sintab[SIN_N_SAMPLES + 1]; -#endif - -void Sin::init() { - double dphase = 2 * M_PI / SIN_N_SAMPLES; - int32_t c = (int32_t)floor(cos(dphase) * (1 << 30) + 0.5); - int32_t s = (int32_t)floor(sin(dphase) * (1 << 30) + 0.5); - int32_t u = 1 << 30; - int32_t v = 0; - for (int i = 0; i < SIN_N_SAMPLES / 2; i++) { -#ifdef SIN_DELTA - sintab[(i << 1) + 1] = (v + 32) >> 6; - sintab[((i + SIN_N_SAMPLES / 2) << 1) + 1] = -((v + 32) >> 6); -#else - sintab[i] = (v + 32) >> 6; - sintab[i + SIN_N_SAMPLES / 2] = -((v + 32) >> 6); -#endif - int32_t t = ((int64_t)u * (int64_t)s + (int64_t)v * (int64_t)c + R) >> 30; - u = ((int64_t)u * (int64_t)c - (int64_t)v * (int64_t)s + R) >> 30; - v = t; - } -#ifdef SIN_DELTA - for (int i = 0; i < SIN_N_SAMPLES - 1; i++) { - sintab[i << 1] = sintab[(i << 1) + 3] - sintab[(i << 1) + 1]; - } - sintab[(SIN_N_SAMPLES << 1) - 2] = -sintab[(SIN_N_SAMPLES << 1) - 1]; -#else - sintab[SIN_N_SAMPLES] = 0; -#endif -} - -#ifndef SIN_INLINE -int32_t Sin::lookup(int32_t phase) { - const int SHIFT = 24 - SIN_LG_N_SAMPLES; - int lowbits = phase & ((1 << SHIFT) - 1); -#ifdef SIN_DELTA - int phase_int = (phase >> (SHIFT - 1)) & ((SIN_N_SAMPLES - 1) << 1); - int dy = sintab[phase_int]; - int y0 = sintab[phase_int + 1]; - - return y0 + (((int64_t)dy * (int64_t)lowbits) >> SHIFT); -#else - int phase_int = (phase >> SHIFT) & (SIN_N_SAMPLES - 1); - int y0 = sintab[phase_int]; - int y1 = sintab[phase_int + 1]; - - return y0 + (((int64_t)(y1 - y0) * (int64_t)lowbits) >> SHIFT); -#endif -} -#endif - - -#if 0 -// The following is an implementation designed not to use any lookup tables, -// based on the following implementation by Basile Graf: -// http://www.rossbencina.com/static/code/sinusoids/even_polynomial_sin_approximation.txt - -#define C0 (1 << 24) -#define C1 (331121857 >> 2) -#define C2 (1084885537 >> 4) -#define C3 (1310449902 >> 6) - -int32_t Sin::compute(int32_t phase) { - int32_t x = (phase & ((1 << 23) - 1)) - (1 << 22); - int32_t x2 = ((int64_t)x * (int64_t)x) >> 22; - int32_t x4 = ((int64_t)x2 * (int64_t)x2) >> 24; - int32_t x6 = ((int64_t)x2 * (int64_t)x4) >> 24; - int32_t y = C0 - - (((int64_t)C1 * (int64_t)x2) >> 24) + - (((int64_t)C2 * (int64_t)x4) >> 24) - - (((int64_t)C3 * (int64_t)x6) >> 24); - y ^= -((phase >> 23) & 1); - return y; -} -#endif - -#if 1 -// coefficients are Chebyshev polynomial, computed by compute_cos_poly.py -#define C8_0 16777216 -#define C8_2 -331168742 -#define C8_4 1089453524 -#define C8_6 -1430910663 -#define C8_8 950108533 - -int32_t Sin::compute(int32_t phase) { - int32_t x = (phase & ((1 << 23) - 1)) - (1 << 22); - int32_t x2 = ((int64_t)x * (int64_t)x) >> 16; - int32_t y = (((((((((((((int64_t)C8_8 - * (int64_t)x2) >> 32) + C8_6) - * (int64_t)x2) >> 32) + C8_4) - * (int64_t)x2) >> 32) + C8_2) - * (int64_t)x2) >> 32) + C8_0); - y ^= -((phase >> 23) & 1); - return y; -} -#endif - -#define C10_0 (1 << 30) -#define C10_2 -1324675874 // scaled * 4 -#define C10_4 1089501821 -#define C10_6 -1433689867 -#define C10_8 1009356886 -#define C10_10 -421101352 -int32_t Sin::compute10(int32_t phase) { - int32_t x = (phase & ((1 << 29) - 1)) - (1 << 28); - int32_t x2 = ((int64_t)x * (int64_t)x) >> 26; - int32_t y = ((((((((((((((((int64_t)C10_10 - * (int64_t)x2) >> 34) + C10_8) - * (int64_t)x2) >> 34) + C10_6) - * (int64_t)x2) >> 34) + C10_4) - * (int64_t)x2) >> 32) + C10_2) - * (int64_t)x2) >> 30) + C10_0); - y ^= -((phase >> 29) & 1); - return y; -} +/* + * Copyright 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define _USE_MATH_DEFINES +#include + +#include "synth.h" +#include "sin.h" + +#define R (1 << 29) + +#ifdef SIN_DELTA +int32_t sintab[SIN_N_SAMPLES << 1]; +#else +int32_t sintab[SIN_N_SAMPLES + 1]; +#endif + +void Sin::init() { + double dphase = 2 * M_PI / SIN_N_SAMPLES; + int32_t c = (int32_t)floor(cos(dphase) * (1 << 30) + 0.5); + int32_t s = (int32_t)floor(sin(dphase) * (1 << 30) + 0.5); + int32_t u = 1 << 30; + int32_t v = 0; + for (int i = 0; i < SIN_N_SAMPLES / 2; i++) { +#ifdef SIN_DELTA + sintab[(i << 1) + 1] = (v + 32) >> 6; + sintab[((i + SIN_N_SAMPLES / 2) << 1) + 1] = -((v + 32) >> 6); +#else + sintab[i] = (v + 32) >> 6; + sintab[i + SIN_N_SAMPLES / 2] = -((v + 32) >> 6); +#endif + int32_t t = ((int64_t)u * (int64_t)s + (int64_t)v * (int64_t)c + R) >> 30; + u = ((int64_t)u * (int64_t)c - (int64_t)v * (int64_t)s + R) >> 30; + v = t; + } +#ifdef SIN_DELTA + for (int i = 0; i < SIN_N_SAMPLES - 1; i++) { + sintab[i << 1] = sintab[(i << 1) + 3] - sintab[(i << 1) + 1]; + } + sintab[(SIN_N_SAMPLES << 1) - 2] = -sintab[(SIN_N_SAMPLES << 1) - 1]; +#else + sintab[SIN_N_SAMPLES] = 0; +#endif +} + +#ifndef SIN_INLINE +int32_t Sin::lookup(int32_t phase) { + const int SHIFT = 24 - SIN_LG_N_SAMPLES; + int lowbits = phase & ((1 << SHIFT) - 1); +#ifdef SIN_DELTA + int phase_int = (phase >> (SHIFT - 1)) & ((SIN_N_SAMPLES - 1) << 1); + int dy = sintab[phase_int]; + int y0 = sintab[phase_int + 1]; + + return y0 + (((int64_t)dy * (int64_t)lowbits) >> SHIFT); +#else + int phase_int = (phase >> SHIFT) & (SIN_N_SAMPLES - 1); + int y0 = sintab[phase_int]; + int y1 = sintab[phase_int + 1]; + + return y0 + (((int64_t)(y1 - y0) * (int64_t)lowbits) >> SHIFT); +#endif +} +#endif + + +#if 0 +// The following is an implementation designed not to use any lookup tables, +// based on the following implementation by Basile Graf: +// http://www.rossbencina.com/static/code/sinusoids/even_polynomial_sin_approximation.txt + +#define C0 (1 << 24) +#define C1 (331121857 >> 2) +#define C2 (1084885537 >> 4) +#define C3 (1310449902 >> 6) + +int32_t Sin::compute(int32_t phase) { + int32_t x = (phase & ((1 << 23) - 1)) - (1 << 22); + int32_t x2 = ((int64_t)x * (int64_t)x) >> 22; + int32_t x4 = ((int64_t)x2 * (int64_t)x2) >> 24; + int32_t x6 = ((int64_t)x2 * (int64_t)x4) >> 24; + int32_t y = C0 - + (((int64_t)C1 * (int64_t)x2) >> 24) + + (((int64_t)C2 * (int64_t)x4) >> 24) - + (((int64_t)C3 * (int64_t)x6) >> 24); + y ^= -((phase >> 23) & 1); + return y; +} +#endif + +#if 1 +// coefficients are Chebyshev polynomial, computed by compute_cos_poly.py +#define C8_0 16777216 +#define C8_2 -331168742 +#define C8_4 1089453524 +#define C8_6 -1430910663 +#define C8_8 950108533 + +int32_t Sin::compute(int32_t phase) { + int32_t x = (phase & ((1 << 23) - 1)) - (1 << 22); + int32_t x2 = ((int64_t)x * (int64_t)x) >> 16; + int32_t y = (((((((((((((int64_t)C8_8 + * (int64_t)x2) >> 32) + C8_6) + * (int64_t)x2) >> 32) + C8_4) + * (int64_t)x2) >> 32) + C8_2) + * (int64_t)x2) >> 32) + C8_0); + y ^= -((phase >> 23) & 1); + return y; +} +#endif + +#define C10_0 (1 << 30) +#define C10_2 -1324675874 // scaled * 4 +#define C10_4 1089501821 +#define C10_6 -1433689867 +#define C10_8 1009356886 +#define C10_10 -421101352 +int32_t Sin::compute10(int32_t phase) { + int32_t x = (phase & ((1 << 29) - 1)) - (1 << 28); + int32_t x2 = ((int64_t)x * (int64_t)x) >> 26; + int32_t y = ((((((((((((((((int64_t)C10_10 + * (int64_t)x2) >> 34) + C10_8) + * (int64_t)x2) >> 34) + C10_6) + * (int64_t)x2) >> 34) + C10_4) + * (int64_t)x2) >> 32) + C10_2) + * (int64_t)x2) >> 30) + C10_0); + y ^= -((phase >> 29) & 1); + return y; +} diff --git a/Source/msfa/sin.h b/Source/msfa/sin.h old mode 100755 new mode 100644 index d84a7d3..6605e99 --- a/Source/msfa/sin.h +++ b/Source/msfa/sin.h @@ -1,62 +1,62 @@ -/* - * Copyright 2012 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -class Sin { - public: - Sin(); - - static void init(); - static int32_t lookup(int32_t phase); - static int32_t compute(int32_t phase); - - // A more accurate sine, both input and output Q30 - static int32_t compute10(int32_t phase); -}; - -#define SIN_LG_N_SAMPLES 10 -#define SIN_N_SAMPLES (1 << SIN_LG_N_SAMPLES) - -#define SIN_INLINE - -// Use twice as much RAM for the LUT but avoid a little computation -#define SIN_DELTA - -#ifdef SIN_DELTA -extern int32_t sintab[SIN_N_SAMPLES << 1]; -#else -extern int32_t sintab[SIN_N_SAMPLES + 1]; -#endif - -#ifdef SIN_INLINE -inline -int32_t Sin::lookup(int32_t phase) { - const int SHIFT = 24 - SIN_LG_N_SAMPLES; - int lowbits = phase & ((1 << SHIFT) - 1); -#ifdef SIN_DELTA - int phase_int = (phase >> (SHIFT - 1)) & ((SIN_N_SAMPLES - 1) << 1); - int dy = sintab[phase_int]; - int y0 = sintab[phase_int + 1]; - - return y0 + (((int64_t)dy * (int64_t)lowbits) >> SHIFT); -#else - int phase_int = (phase >> SHIFT) & (SIN_N_SAMPLES - 1); - int y0 = sintab[phase_int]; - int y1 = sintab[phase_int + 1]; - - return y0 + (((int64_t)(y1 - y0) * (int64_t)lowbits) >> SHIFT); -#endif -} -#endif +/* + * Copyright 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +class Sin { + public: + Sin(); + + static void init(); + static int32_t lookup(int32_t phase); + static int32_t compute(int32_t phase); + + // A more accurate sine, both input and output Q30 + static int32_t compute10(int32_t phase); +}; + +#define SIN_LG_N_SAMPLES 10 +#define SIN_N_SAMPLES (1 << SIN_LG_N_SAMPLES) + +#define SIN_INLINE + +// Use twice as much RAM for the LUT but avoid a little computation +#define SIN_DELTA + +#ifdef SIN_DELTA +extern int32_t sintab[SIN_N_SAMPLES << 1]; +#else +extern int32_t sintab[SIN_N_SAMPLES + 1]; +#endif + +#ifdef SIN_INLINE +inline +int32_t Sin::lookup(int32_t phase) { + const int SHIFT = 24 - SIN_LG_N_SAMPLES; + int lowbits = phase & ((1 << SHIFT) - 1); +#ifdef SIN_DELTA + int phase_int = (phase >> (SHIFT - 1)) & ((SIN_N_SAMPLES - 1) << 1); + int dy = sintab[phase_int]; + int y0 = sintab[phase_int + 1]; + + return y0 + (((int64_t)dy * (int64_t)lowbits) >> SHIFT); +#else + int phase_int = (phase >> SHIFT) & (SIN_N_SAMPLES - 1); + int y0 = sintab[phase_int]; + int y1 = sintab[phase_int + 1]; + + return y0 + (((int64_t)(y1 - y0) * (int64_t)lowbits) >> SHIFT); +#endif +} +#endif diff --git a/Source/msfa/synth.h b/Source/msfa/synth.h old mode 100755 new mode 100644 index 68c1181..5275775 --- a/Source/msfa/synth.h +++ b/Source/msfa/synth.h @@ -1,72 +1,72 @@ -/* - * Copyright 2012 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __SYNTH_H -#define __SYNTH_H - -// This IS not be present on MSVC. -// See http://stackoverflow.com/questions/126279/c99-stdint-h-header-and-ms-visual-studio -#include -#ifdef _MSC_VER -typedef __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef __int16 SInt16; -#endif - -#define LG_N 6 -#define N (1 << LG_N) - -#if defined(__APPLE__) -#include -#define SynthMemoryBarrier() OSMemoryBarrier() -#elif defined(__GNUC__) -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) -#define SynthMemoryBarrier() __sync_synchronize() -#endif -#endif - - -// #undef SynthMemoryBarrier() - -#ifndef SynthMemoryBarrier -// need to understand why this must be defined -// #warning Memory barrier is not enabled -#define SynthMemoryBarrier() -#endif - -template -inline static T min(const T& a, const T& b) { - return a < b ? a : b; -} - -template -inline static T max(const T& a, const T& b) { - return a > b ? a : b; -} - - -void dexed_trace(const char *source, const char *fmt, ...); - -#define QER(n,b) ( ((float)n)/(1< +#ifdef _MSC_VER +typedef __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef __int16 SInt16; +#endif + +#define LG_N 6 +#define N (1 << LG_N) + +#if defined(__APPLE__) +#include +#define SynthMemoryBarrier() OSMemoryBarrier() +#elif defined(__GNUC__) +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) +#define SynthMemoryBarrier() __sync_synchronize() +#endif +#endif + + +// #undef SynthMemoryBarrier() + +#ifndef SynthMemoryBarrier +// need to understand why this must be defined +// #warning Memory barrier is not enabled +#define SynthMemoryBarrier() +#endif + +template +inline static T min(const T& a, const T& b) { + return a < b ? a : b; +} + +template +inline static T max(const T& a, const T& b) { + return a > b ? a : b; +} + + +void dexed_trace(const char *source, const char *fmt, ...); + +#define QER(n,b) ( ((float)n)/(1<