From 71ac67bc49615c3a6ff2cbfcb6d2e2f3f707b167 Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 6 Feb 2020 11:09:50 +0100 Subject: [PATCH 01/26] set Version number in a constant we'll use this to test our first sysex inquiry --- .../D9-drawbars-controller.ino | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index eea18ad..4e9988c 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -1,10 +1,7 @@ /* D9 programmable drawbars controller - ver 1.3.5 - - Created 2018 - By Stefano Garuti stefano@garuti.it + (c) 2018 - 2020 Stefano Garuti stefano@garuti.it Project home: https://github.com/garubi/MIDI-Drawbars-Commander @@ -28,6 +25,7 @@ //S #define DEBUG_OUT Serial #include "Debug.hpp" // https://github.com/tttapa/Arduino-Debugging +String version = "1.3.5-sysEx"; /* ************************************************************************* * Pins assign */ @@ -503,7 +501,7 @@ void getAnalogData() { analogDataLag[drwb_scanned] = analogData[drwb_scanned]; DEBUGFN( "DWB changed: " ); DEBUGVAL(drwb_scanned,analogData[drwb_scanned]); - + // check if this drawbar is dedicated to the VIB/CHO control if ( STATUS == VIBCHO_SEL_STATUS && drwb_scanned == VIBCHO_SEL_DRWB ){ DEBUGFN("This DWB controls VIBCHO selection"); @@ -605,13 +603,13 @@ void getDigitalData() { // Caso "normale" il pulsante è premuto da solo DEBUGFN("BTN pressed / value: "); DEBUGVAL(btn_scanned, btn_val); - + // if the Pedal is aliased, we use the settings of the relative button if( isPedalAliased == true && btn_scanned == BTN_PED ){ btn_scanned = PRESETS[curr_preset][btn_index][STATUS_IDX[ST_UP] + PARAM]; btn_index = btn_scanned + BTN_IDX_START; } - + if ( (PRESETS[curr_preset][btn_index][STATUS_IDX[STATUS] +BEHAV] & IS_TOGGLE )== IS_TOGGLE){ DEBUGFN("toggle..."); // il pulsante è TOGGLE @@ -655,7 +653,7 @@ void getDigitalData() { btn_scanned = PRESETS[curr_preset][btn_index][STATUS_IDX[STATUS] + PARAM]; btn_index = btn_scanned + BTN_IDX_START; } - + if ( (PRESETS[curr_preset][btn_index][STATUS_IDX[STATUS] +BEHAV] & IS_TOGGLE) != IS_TOGGLE){ DEBUGFN("Btn released - No TOOGLE & No PRESET..."); DEBUGVAL(!btn_val); @@ -742,7 +740,7 @@ void ledCarousel(){ } // Sets the "leds are changed" bit - bitWrite(vibchoLedState, 7, 1 ); + bitWrite(vibchoLedState, 7, 1 ); } void MidiMerge(){ @@ -792,6 +790,9 @@ void MidiMerge(){ midi::MidiType mtype = (midi::MidiType)type; MIDI.send(mtype, data1, data2, channel); } else { + + // TODO: intercept the sysex specific for this devices + // SysEx messages are special. The message length is given in data1 & data2 unsigned int SysExLength = data1 + data2 * 256; MIDI.sendSysEx(SysExLength, usbMIDI.getSysExArray(), true); @@ -802,8 +803,8 @@ void MidiMerge(){ } } - - + + if (STATUS == BTN_PRST_STATUS) { byte midiLedStatus = bitRead(ledState[BTN_PRST_STATUS], BTN_PRST_START + 1 + curr_preset ); //DEBUGFN( NAMEDVALUE(midiLedStatus) ); @@ -813,12 +814,12 @@ void MidiMerge(){ led_midi_on_time = millis(); // midi_activity = false; } - + if( (millis()-led_midi_on_time > 100) && (midiLedStatus == 0) ){ // digitalWriteFast(BTN_PRST_START + 1 + curr_preset, 1); // DEBUGFN( "activity off" ); setBtnLedState(BTN_PRST_STATUS, BTN_PRST_START + curr_preset, 1); - } + } } From 6b5b4e97489b749ed420f631beb9b54b43193e96 Mon Sep 17 00:00:00 2001 From: Stefano Date: Sat, 15 Feb 2020 11:30:05 +0100 Subject: [PATCH 02/26] adds 24LC64 eeprom --- schematic/schematic-cache.lib | 27 +++++++ schematic/schematic.pdf | Bin 102284 -> 200913 bytes schematic/schematic.sch | 133 +++++++++++++++++++++++++--------- 3 files changed, 124 insertions(+), 36 deletions(-) diff --git a/schematic/schematic-cache.lib b/schematic/schematic-cache.lib index 0ab8de7..00d7003 100644 --- a/schematic/schematic-cache.lib +++ b/schematic/schematic-cache.lib @@ -486,6 +486,33 @@ X VCC 8 300 200 100 L 50 50 1 1 P ENDDRAW ENDDEF # +# Memory_EEPROM_24LC64 +# +DEF Memory_EEPROM_24LC64 U 0 20 Y Y 1 F N +F0 "U" -250 250 50 H V C CNN +F1 "Memory_EEPROM_24LC64" 50 250 50 H V L CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +ALIAS 24LC02 24LC00 24LC04 24LC08 24LC01 24LC512 24LC64 24LC1025 24LC32 24LC256 24LC128 CAT24C256 CAT24C128 +$FPLIST + DIP*W7.62mm* + SOIC*3.9x4.9mm* + TSSOP*4.4x3mm*P0.65mm* + DFN*3x2mm*P0.5mm* +$ENDFPLIST +DRAW +S -300 200 300 -200 1 1 10 f +X A0 1 -400 100 100 R 50 50 1 1 I +X A1 2 -400 0 100 R 50 50 1 1 I +X A2 3 -400 -100 100 R 50 50 1 1 I +X GND 4 0 -300 100 U 50 50 1 1 W +X SDA 5 400 100 100 L 50 50 1 1 B +X SCL 6 400 0 100 L 50 50 1 1 I +X WP 7 400 -100 100 L 50 50 1 1 I +X VCC 8 0 300 100 D 50 50 1 1 W +ENDDRAW +ENDDEF +# # Switch_SW_Push # DEF Switch_SW_Push SW 0 40 N N 1 F N diff --git a/schematic/schematic.pdf b/schematic/schematic.pdf index a32bcb226b88e1e36354e308ef0a8f39075d2161..2703aee3850319bbb8ac441bbbb952910cc962bf 100644 GIT binary patch literal 200913 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

y}uinM_AG+~9ma!e-*NbV{G6{eV6_ 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 !XytKfC$9@B^ z*^Mc+6(R24HZkT7vVe2-$KiXO^_RohGp4K=2lXXnxl#h7YCoHnLD3%1)=*AN*)^qd z*1fI9-W$2RaB`iA-pa!3^P)T-mmG}!`?9-wB#K_0-0{Ne>9Iu0leZ6gEu#txOPp2u zFWm{=!~WzY3#FSnf81`8y?D2MtoL0gCPSJ2w8JmC<e#TP-i_ST+kx;Vyiq4L`2{kKvfj}0jlCNT*;DwwQGZ|QRLQ-9$|_cch&jU72DKr zg@ft|te~s6c!K^Thc91rVtscZBmKYun-!pW*F5{1HnoxQJl7Jcn75CgZeq-$D4XWX zJn0{_*;(%cD7=+=r&fUC#5|ruwY6TMhjpn+yW2vI<`P zZ@pS{PsQSl!4|mph0PhRYV!y8xBbaAdZ?u~P#WL1REFr`jxy9x526~6@C|H!4b6eA z5hrQL;QaPpywsmj^4{HeO3w$`(Jia47<<1DAbXH$#xDM4Q`$_n`{u{NE7WE-Tymds z9b6?Z#rv~)r3?+3+)_x+R9_6*qMBAh_w*~%sW2Qja+#AFCvvoUg9~Fns6G7YA}i2o zrtlxoefSH=jfbCbDMrj~%>54vUS;y`hG>*Z)j~92zsTg86|bLw7QqxogGw@|{XYc3 zE21cmYWJTgR5dt+XuQ<^tuyDmgZ6Z5Xq0K;WK+J!-FX~a-@IP4jArl8AS`bD!aC1~ zb08Jv>sOA4UXIH?&?XFDWZd=QM!8VRFXkJs2RqTlm@0Oq+@OTq94y;e7+)TBEsy@` zZJF^nt+oO!ZsL<84|-JJ+-{ul^m|y%xe2i6CdJpNLmxnRhod|8oGm+FQS}dKP?pm? zG5s*=SQuP^6rYXj+28P7rMrgZmF%`}s_SNV5v2lW!tl-57F4W!8+g7oj( z-eqszm}hNg9G0{W^nl(f@;tM!K&9LFi*E1{uza!jY)_4QaHICJ7BOl~9m7aG3l}A; zD&SRvL-&*NuARSq(cQ>+nM+S^yM?n%g)?j8Nls&Z+bA>l*d=TyCs&!y>|GusEaK0V3>vb9Oh**Hh^NDig(f7rGjX|?y1cNb{U3DS1(n{nK6s2z=^2g8 zEY`H^Cug760_W};+<4J%emJL##sZUbfZVA+Al>+ivFt-VvZh|!W!g1_+gfpi_ihT%x@FN>h=y^IIj8Iv%} zoVidjL{r>TJ{&@4IUEl;+?6gJsUWyilD$TxT8fhxy|RP!8MAV3_Q`9T5-dr|qRivw z&B;T7hMMbJ3>~t10y~10o6i%;0l$$^dkSLic^pXUHL;JaJ+Pi~=0k5_0c}x1xm{rG zuD3N6j9Y*cOLL$7+dIzC0VLjgkF+Mkxc_$Vh1LS8z-v`$Ji9~!c9@^tncQk`7k;bv z0wvfcbI`YI7kKB{!@QO0g|P8woSj|Q&o7Nv{iX9o9E z{oQjgBPU@}=+v6i)9miZQOlv;5Li0F8_cFHO_IkQ% z!%;!=8GcW_uR&TgtwFJdjiSX{7Bvj-xky>)?x-&|!T43;-!K$9X0mfQv%@*yQWc8r z;`0XnegEK2J2b$q!tJXw2Iw}S^@Qp6%3So-8@3&(ylI9bYAFv{iiu9_zgLMjc(eXl zZFB=%ug@;#-&UXIp)>Bt8?ZM*PG!T()d-E}-Y)7wWw@13Fg`!e_>?=PRTcA9N`4x} z?u(2TkN4%Vhb@Kjxc+miQg@_3~I%Yj;U%X~mM;J

  • ?cr8lyIU{r!Lp`aEi~nqoga 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 GOaFh3=B=p! literal 102284 zcmbrlV{mUl(=Qq)JI0P}+qP}nHg;^=c6My<*tY+%ZTsdq=bm%lFZccOR&~|t`gPCr zte#n2Ju|&X6-2~n8R=M|N&N!?gP@rS7zpf*te|;#2dp^K@AsjUoO*&yQHnDLpvT#uK^^rFmJD@$SigOuoze;N9la)>Y708Y_NU@#91W0T6 z{{DD9Z>4{n==t|`pI34)as93L{j%QkrX>A(7q{*6c)gu+T@N3)3y!3Jc*ni>t<^N1 z#^p(^pTGOK&0iT)bGQBdG=Y#%M^B+YjI-jm(g3X&40^;J%s@wGOall8T_(GL>n5|w z$-bLHRKMAG&oI7zM5OYJiw9_hDa?5VH_q_{M{W^U9VVVDV0jaKD!-YjeP2p<{d4`s zf2RMwW&WO+u)?RAJo0w^n(=!*)c-i&{(MvKd7bcksr7qdvU=@Cf4iIbzLx&Jo7ipy z{n0ezwI$q zMYh?vzgV*@aL?LKHF0O2;%Yv(xvhJVv$54wLW{d-C*SR+0Z+3&Yt2n;t6m9hwo zmy^dRd7fZjA%BW&eO$XfLGf}v|I>j80cUh=69N=yAQF6eawx>}_)rqw?h;-`I?hFu zwmGgWtUA6$WJRnLx!8Y*nu#xaahQ6v8+-KZJ&ko>IT61$e-g4TtpqT^VPC#h&}~YK z*ngMwd;wx+tQnL-1Fx0Hf9OPcPSFsofg*_5tur^W3~WqjgA` zCy`QQqA;x|$y#f&1xF8{++5g&WRt4GStl?5Ymx=lf)a?-tCn~s?8Y}cvi4ih9=J)u z>>bBU!OK8*Vhxwmf;hfDzkkP7yU45Jt9Kgesn{BuxD{s&9k_1|O%U5$y?DnptI+H6 zt2b9dR)!7T%BZ1LVSNs{o@y<@-}cXw*`Yt`XnHf_Y6m_mA2@B|>#}*fD&;vAHLCz| zJW}W4iwlBFEjnKV_`KaLE@C#W{Jo~)Gd~yYnOiR!+!|cj8(cForO*3(97uJjR=+Pv zzDNYM)2`*FwZWox@ddF{fJ%_PB|$+hg{IYUKkeCNB^>xQZVmJhY7?#Kk2ifDcTGUH zh$}BZl$n5Q8R=W7GlSWy&S$PQ(A^QID7AS6Ksz`UBB=5IeRlL#IH&2lsNMCu4e0EP zb@=&KZg!4z{)M!3H}CbL1)?kmX~C&f0x|_}DC{wW2tkGH{Fo*+d8DqZgTe#{^75cb z55QI^gR}z50nw}t2*BwR-tU|jqra?llO1J$JEOOIM0Ei7YU+uArkmAW^6Enb`tfy3 zoF005O^}r$$aoF0C=E~e-pB&Z3$8v zH_9Y))o(?q8O91sNokX>c03kSew)tqzY2I^;$p|MW+Jv zSd%21S)l^mDliAxu{J_gySz|LGJ1s;6Hr>K!_uU0v!)QT8kvu4SQ&C94>~9Vdrm`8 zfv+vZ7Tg%lQJffVNvZ~_Bx+2`XeKK(y;>TefyJT6`=HlWRp#kpsAy6-wmdBpe?miV zwb0UA=4KP2czHr(Y%vU64HI)WS0Y9|HzYo7~xVHh3E^SFQeI zT=3W3t&(LTa~&Ha=CIXacuf_YLkSq!0MqMMcb2I=zv?PJoyI@6-Ynp9kA|U2i6rqL z=t>$H)5e`UGCd%W-7j%SA244p;d53-L{{pI6M4+=x^X}sw8R0kv{vCbl{Nukm5l?Ff>{nJ2(*ba zRS?{2({Xq{1QTi*gs=*ey@B<8y7>90$~s$&>ckgHWy{#BF9lRJDuGyqNyE7UM1_fA z^;w#fDi_j-AdCqUAO*PNceHDW0wpMlI1d6bLme4|wRQHnzv?{93oPRwC4@7ldkK-b!v)U z_())~4`?on+OxSptQ3SrNEqoHycqr}RzQS5QE1qIx(@J`!FI0u7ND0sqzcg#+uY9~ zJprcH!v<=`Kjn{^3Cui61){=7sGNihQQ>V^y$M1bO$xQ}X>#0^qO!NvI;ra>Btw@uDXre_O~MG9V|Wbp(w|GQ$!I?j`C2Mvk(s#IW!82 zVtRUb;AuS0S7;yu3An|5hzu$*tcq#BRtjZGMJA=3*>7=JU~mYafJeS5j}llJ95QCX zi~v^P{s(s#0xC^IGbe_fO?`d+!U;Y> z`@o@Qf!dC|PAtEOQMacDxqJQZD|+9@Ec)-ecYW{g<88m!JAJm#wC|gq-DmWL@0%H4 zw{tn~AdZYCGgB-x|aP=JrEBFD&MlDYTW0X zxF5~jlUPF(eli09%wkBv9EdiWqC1y4E96p}!8(*LZXApNjOipG04w}wsg)?%4kpNo zl=x=C|MnXqeWIp{BLzH2w7lM8%nC?uc&UQjHTW(Dl0HC&=Kh09;8qP0Vgs+%l2W0# zIIkB8i8Mjy*R!cM0^WKSDKj=noBHUmBs=Z7ACAV|FyH}yiKbF8UnKmb@2Vmtx+^>U zU*0|ve~cap@K9mc+rhEHu85nvJu$wKD%e-_j}<3W-baSu!V|{{R4NCSYFyjMVps?U z%E2}N^KnG1>~f zMJ8okCy<0NK*eS#HXG}$EQ9(xdI1}xi9J}xOBf^liJ*%1#{}9)^9Vdz@L)|z2J7Rj0LJFUxGJ~0KXH5v)_-Q4R+CEi^To>{!OQL@8rE$lbF6WF1y)>2 z1;IL$)vdbGL}w#2iPBo>Sd??27=$9AO4z^vPJjPlE7R}^#WC6@JH)QFEbrF?$Ou_; zaRzZYPii_WuUvj(TTG*|)!&AI0vnvlPJ!F4whJupM+LM2IlkstV!I7j%ZNyAYQEI6 zwuH%Sen3Ive8xiQh2r0T9v*Q_Dfre7Wl`qYef;}ZqGL_#F7#jl&647@qcQbJ8lad6 z1jfBjR#j_>)k-IV|K~fjw!n#H;Fnpm7=!BUy+iW&MDqdDGkAgOj72RV*Sh2bLEV8e zDT06?ZeR;I2vz4brHPH}g;-kYSUZ|~c2gFptG!zIm)wjw4pOuGi|ta7SG&Lz(`z@-4GMCwPyiW+>-=|v%w)M zjlGST&iD}OLv=3j%@)RHb&thvzzT6PIM_>cf`g2apww$ZPViW-f^f+SsNXPmDOd_B z*4TUO3t0mt$9s(Nvl$6 z*Zp9==H6Pv(~8C-d`i*m2=4+cy9dgs6|kHJM?I!4?pO@EIo!jei!Hk=4V-ebx#J@Q z4hxqLYy5WmY`^kwzI43{1sr0sT8Fj%+dA)DafOq}urz;oQq6euEZ)#Dx4e?-RM0nk znEn^&(kLoBZGyjU=-ouBBcmNyCnDuPIz*DQ``2&<&(;(zI{8pX*MWL)uJYe*e2TC% z;;X`E#bn8^53v?dsqR+h)86G6`evlzA6o9T}|hJ`!Ei z5VfjAKvN;@B;5*A8nn)22a1*+k3^qm=!sLumlq;DaGkP8N->ZFL4ngZ?olAKR6oO z1q)(PI!hY*sG22;jSr+SIJs)xdJM#z3uF4qj;+fS=igt%ZD!4*O24<$uAb<$Tf8FdiGkoXyeMa?s-9>GGpW%P+*ZO`R(tqtTJ&l_dy=?Y7CV-_P_YL}c z2=GF&6qO|jMSLFxTtNCXb6%!8%tSSwHni1V=@zRR|AH6;UDMkzt1IaaB)o~L(0mB} zB~6hq2~LI_-3xLQ&Kr^#BsyNVYuMi^0go8VNp!CE%-P0Hs;qn8Ry$Cos#K^YE+bq2UWNqKxm-`{~8zWMdpXXZ?Z>k z6|B_8+RE_>a6t{+foyWS+*vC9C{1ub7%_Ars1ks_JB@Oy)QD8cHb2fPJNE>%Ffv$k zql_n)OxI9(o{;PH!NbU!FdI3s#`F&sJ&q|N!+Vmz5Nm@7S9isLS2#$?aK#!dVT!b! zZV=tpah*@1wLmB3L2_UuMBCnNFspDupC8g}B_XJo8FqoK?;|%#@yTVBWy|&dUJH6N zM_}$_rCt;mo(N#vLBq7Jhoq(y%*L|`M=<+)xqxT66+V?UhWAf{(+U$jK@BnW^BLa6 z#Y*CDlbSKDwGNi>8a%0OUw1zE`yP7`Ji%x$IfOZUeELiyg)G!PbXv>;m4+dKarz9Y z&b>e8C}3?zX7Y^3lzXo+WZDeB<35PNlt2uVp$wML&Vj7C(O1_Wp0GLJwW5H(Y|yL< z@0j=y63Z3qFM$q5FYJC&?WK)3k^Pj5HxWH57yfRhIdmZw8F@D($30TVp=&@!aC;Y6 zX=%6+`fRvt^f^Qb+@?uf=sATg#8G}D%@pHagNbQjIubeERwBoVd3$`g0=BO(866KP zn~6BW!kNFp6L;xfc4LLQR7R(ir4zJmSs@riRv8)}1w9z;@Yx8VsGfkwX zS%7OSY|^u!8N@{gJ99b@w#AI|BYeIHb9zx2+f-XX+xU@Y>fag3tO!`sYL5`cAp}-) z``SmXp6{#MxIcMcckb^FKj&PZdA{#YmHZ!9E8F^ho7^bZoN{@q5!9=Bb(9yZ$<#My}uu_$<>)XL|$pXAU1d6FlvtlB0O*riATY zxXZ^i#>ewq2Fe`#zOq+e2lq`nV~fD_up7)e#25jv>IS_6xS#!4x{G7uB)o+)1haz# zXEypNv+6&Q-3}ooFYMe1G2-Gh3sZ1D9FeSV<9Wh_ZrHEuz3LpShts2|<2Z z=(mVvFB@K4@$R)*Jgu1!Fw5~EFIhWSiT)}T7&36Ha_ATE48)o^Wbu$IlwJ$7`rk{?pA+@nkYG$(NLbFm)7iXq%T&N(60CK- z`TTD894FLTiFXTSMtD?Rq57C71;X_UrwYLS0kFo+Tzri1YUPXe;SQPJ7mo$2%5Ch* zEh*83A7kXsB zhy(_ikPycL#H~@mLMTuUTd+(iT;xP}-SSt86mIeKQ7@vlnAk5Si-@;&srQQDZld)M zPtI!7o{UC+Bp@;029+wHre+~C!7&Gj#i3gboXYuC;~>5hpxyxq93!*8Cg0I2sQ%wjI5y2;tY>=)X4Vuw^E7Awd(Fl(Gr9h-z+fs2pS720dud_0L4hxw z;(9rp7L(1s8Jnj+AK8;EL)ShT3-ds?GDp0kNL+m?(00VMpjLcf+w7exqCXdL+4R+L zVw3ZHrk9r+H~rPh|9wu+|FNs?_r0FQylqEquHwNwXi4RfYZ2`NzuR47ajVbsdTy%S zmpU7stU{F5wa>@OVD*@NlySbeKt~=|sa&0N+-ils#?zzfwL>M*PF2DyiAqNW#~;F* zSo4OeWT}!G6s`!zqn%OEt(KT=JqWlY%4t`T4M)-PGRfd;y~FBj=)&a6+*4_ouVC+T ze|B>~Ywbnb+Dwy%12D^8h^+UyQ*4QKpFKZSE?R?`c%n!x zlsho`NW(3oC%%p$NmnQ1xC}edbGUy6Hn9LY@~vj<&7(3inXMeba~hHiLbnu)v38=6 z?47R9vX@a-+tU@}#T5q4jG zjf6DCBx!G`V(Il+t4sbta}x=;TQsCa<69mMKvKjR84sI`K)TdO&?;4`;H5%8$1d;l z6t-e7u6}Oh6_MmjtDAs;L!lB>l0!Z7DUzTSrBuZ_Y`9>&4~Nn!28-7DouV;t-c49C zfl}J}$5Z=j`}<41=Ntb&$@kZ@eb3uw-1hey{uW;yzx_Y*giV{qPa<+;*TIfhw!N(u z&Fn^^@Z=U@G&(fjN#kXtXK8Ihmp3eBRzj#`UHo+DG(GLIKBSeJWd7B!Huc9&W-GLv zt~Ot8?mAsI7#Q;`TTe2x);|IP^XCq<(0NVgZiD;%%@p1&(HVJac(hDTwy<+zH|zMe z4sct(HJ|wzO@v-If8RL-{~G(cpXj{$6y7KBwh`+IcOO-B!1T@Er5bvR-Yxn3Jt_f_8wbvM~Ml$9S`Q9Al>*n0aW3 zmCbXWJdP*6zIF!7wZns2gRdKhODa`80J=&k$>5b5cf4=c&Wh0vRwUX@9P7F3tkrMl zw(>V0uUleCm{zy@&`6V}xN7cpmOu6JiS_X4A1~RK_=SW!wW<8SXN}{99^z($5-?ce z@S@F4GuRXXOJe!9^qOJ_>>{NO;(iH9Lp0cG3_v7@xEt>I;|4ZZ6H&<|KG|tBaq2$* zhEQ`i*9_@E$pV(Ep(*cY4SB9@s3W;4oo1;4Wks_``7U#1%ks4-#oBLuzP3Z?2K~V7 zEE*DJGvJOGgOT*9eg$n2Z#sVG2B#%X$=7J#8c}#E>S&0=BHl?!nNE7J4AEaDYq<{f z?ZQ?JaMG8t#gC>#Q7HI^fzwdRRceFJRHbN{3D+1%QzD%E7|6fh_LBjR(*&z7x$FJ~idA;!HA7CS2b4fDItO%yA^eM|cMx8VW3m((aYo9<-R*G z-vQy^#J;rTiMWb&VCpLr-jeu1@*^5Af;-Z1-V{3%`Udr5va|2Se0|EFuc6SoWZ<%Uy)%RbUq8O@ev z#{+(wx<7&7_oi(X@HNGWzQ1vaZ5-`}!NQ%X3D`7q3u4~$#@_@CC99U0;<7JM-B=Sl z>f7jEZaZpWET0`|j<&ikKRD67%!{~B{L=BIt zy=^+>_PD87+}~~A%1QjW+wS3ew8Z?oZMgHg{q3@HUqtd}rDdJ8tkPTd9M}h4>%l%% z@Gyx#HAYB#j7{d_@6nKPu_s({3xHDA=~y8B#3?i*|Izn}y8Pc0JrxAQfe&lg>s zU3L;iJqF@h1In43hL}9LJzbUoiPT@~zs*Rb``l;bp4->awv;v-x94*{mTP*jS>&U- zuZ?}KP^Q{E)-I9lT$jQ^-I$+1QxqyBAyih5u@}R=9t>=ECEb_G%gXj6CG-fIpFG{o>lf910f%h9(KTynE1zF|Ox8_V zD9YNZO)TcVK7A{>G<~Gf^pH;2kKJiE{9iUp+c!#r#Cc+5;P5PR*6iJwdN0SXdya7s z4{I9v-eu&YlIL+dQ5qL+aj*{Dk_&rtrsxSPY!l(P{vIg>zM`uv=`y?41!zO72LoJf zV$it)pO;|*7CRPi0Vd@i@E zzwS`F%$EwQ2%|$unC5wzB$Jt(DrS_2!)aD=I3H{7kyt9y?2fl6O%JkHEsrEfEh0H) z6fz8j86s_=+P>90` zUARGwG!{av!pusURsBOIDOfUU<)8Uj6p~scIxouVdO<|hx)iztl@R5^?`>T{xC2{y zV#UTHxqQ}6oCneG;&yUlCW&{p1A-UOZc_cDA!1blVyR|A@uAzuBlE1nGrzFN1y|Vb z+YxSUDrbDc@il#}g81ib`P_eDGUs*ZJZ8@52Hs5`({(%Cw@6m?ub1sO z9~X7MZ@8bW>^r9!2>nQ5#O~YU^a5veKmHy$qa(DxZou)L(?&noPq$+n?>OUoGn(){ z_n|W%Ij7Bv|MbxSme*lJGIh+y0UY|eVH#!qW7M1_uPGQdv&YkGE0$iHi6bLVyJleu zl8>W4_;uuvoA`)3O}OQCDQqLQY(|&nAo=m9-|YRqKSbbp@A1jdWH6+hui6G%5Zz^u zPmW@eKkqf|X7gjU9A)yD&jgs&XC9W%z5R+MuS2Hg$Qi%sXS6j!KSLOn<;EP7OI9CI zhmg?MbQ^geS=qn!4>VscEM(Os|lX%)?u*KsE0b5$Y!BaU4>v)QJ+i2ci zJg)Jn;B&vUe{4r^tlPYAw_d6#ME3SVhvpM(4`a{UVeNy++d&-h|Ar6zo{oQc`f#_! z%{@bT_z6_S+bP<7eT3=>X9KJx-K#L*_*aN40dEekk7e%;rufG_%8SVj5c(Idy1#ga z!o1Fs8j$?Z54nIX*}D$Ro@tJnR}yv1 zc8T1toZ;wxO7t8?FLwOpNP|H|rjMiFzc8G(RBD>+EB-vJo~_jrMf`>7E}%2G)g7hw zxLE5|!7cH%SSxyGmKe7)8czHXN-|veJW8!Ge$VHgH^_=s2}$2!2hIHN*xB!-MN@CL zXi+AD{-GT~GPPLGRd!)@M%#s^{&&!f&&6WKl{3B*`;Tw;@2h4$b*aCW`JS!SZ;bLf zct{!ZI?Pa1^E$GDCy(t$K@t8sh z35UOK4CS1otrNU#9J*=?^c~YBJRUi-)2$NSsW zM5Qyy@zy(W#s>|W*__Sr{%PwfWtln_X!p8-pPKfB71I3mGaxN(=JTt*;~KQ3Ni(mT zc7!kA&Od8QbpIu6{a@DZm9~(N*wn9U#z!J}M>fyvyKO}c7w*hi{b1WDr|;Nz&Euzo zUwRKS^-6c`(idIMLwFx&cfgBLQNtz9>05&LFVn8%gQdOrF)&&@9b51Z0+#xEzv;-z z7Y!1nZVm(yDM{OGtJI(BbliP%trq}s&U$!Z9vKACzj{4) zh(~h@gbQ`Mev2Q7MAS+daQl1ej93MqWv4;nA7!(f#OV!rj6mrus#decA3s80hC5ZX zi?xI2sO`R9W)&#>D-;9Mq$a&BU!ofI!|XV#KX=Rf1LRj? zbAZqB7&@jb5!JFc1iDRD@5l>Op$Ce4#aAcY8)^DGT*i~Ij^$KTnqoA&ZU2?=-5Rc>e-U~bpxbHcu zIEHPEdFmFrR!e)0cXKWoTN_*ySO2=b1Jc?dms$`m=Yd_Iu>`3D zXDaRmQa6x&v$cm77`%OWn2jw&T?H`4O?6|=(oZNGFflHZYO(tV$fU0ay)2zDs1u;l zUn+qYpr=JsoVJl3QK(t}REU&IVuo*wYc-Xo6n0nXP)Bc)lF{fknt=t$@zb(`zzSF+ zGgIiW3x>gJ-IA@!;O13RtDjR*TpJtfDoR51{vn~2^N*#3#{#CZT zx))W+;Vz3OT5-QD{Jog!*{~En&tl}Qa(q{fo0LB!IpbU2&{7O6TH#!xl0%KY)Ua$I zVdb9F%2>oAiBDTIn7FzxL9Cn+3*?9mfKn(X7NB$mqd;H47F=9B`88G5+Q`$*=>!um zL2Y-a3b4MC9BOb_v)|R``)%*!K6agEa5CZzuIRVCHl@GA(UaTiOWT_D5eyNEqeOQ7 z0LDu$0N0Z`5qWc-#sS0$16=jF^L*-aqVH|=&i}GN+spmNF8c(&~J7k{;5M) zWrR7YSwG~~kmXc!(DxNFonP)jA@+xxF(7rUNq6i;< zwi?P5X@5!qd;$$)cEJbe_qzZd8^$rD$aCSdi$SX|UmeZBhqy4;B=KR6p#55CmOL;& z*Ik=HX{RBiXf!#Mm}VKSiHmvLeSD)xHqD0Q(4<6KwZQ9v!^XphCG^b69J}7kZ3>adIMjTOf7=PGh_L2wAW@T978jR4}a6lx^ybRgO|{!}^Ob<036$t5n4VO4<7UlJ&Im^oI4)a;u+eSh>GV9?6)#&wUxk zS?+@00_YnsDi@n6H%Fsp?sBRlguIZ=zR0tl=q?q4_1W>C4r@ib`Iy{Md0hB(%x(=t zvMr^_sW@tF$!_)qrFFCWZ_7DD?T(I{XH{8_?i;)%=ji5ODUN$PWxqKb9ZI7+YF1m( zz?$(WFWJP}9-O)hgoca`+K6!-(K$%n*jEhY6)R>TA9h|rU?tULf5TWcD=Ui-ZW7$a@1RA+6=ADvuBj8#e{{W(y!>SG=; zQYWBP8LcWpMx<|w=*TcsyXz5l%wUc(HzjTYw2G;tB_oUlqp|Qp<;zt%i}TH)TgI26 zB1}b#iUy~V>Q%cj#wla|NEzqOrvf*MG&W`WGO!`ts|J80S5s{Iu>65u+jARhU}o?8luj zfD-6jz-B^ zh!GOOqk@v~K~&@9_ZMl;K8{sLUn@iw3MDH@3UuBEYdC=Fg(<&9m>aHC!ekrb;QyJt z|2SLV`>Nc7j&-}$qB;dh%P>e{g6l|M?(r{-=K;6Xfpu5Cy-C?0`x^pg%RhV2-U1LJ zFy0qk$xZ)O%7V5ETP|+sxlXuL!{M`Gp8biha7zzzo#{5nY7K`9Dw0!UblO&d$BOGU z$P*T;thV8FD71>Yn2hm#1xS?|WVzAjqAe8_8ou}nAKhcd=CLL#irrf4(I`dFkZdQd zIWD;YY-3_EN(hm(nZK$R`Q|9Zv@a~1{#**37ST4#Th*b(L|a*HzZqY8y$J^3MI60D z7IO!@%X3MrNyd1oy)d0(qZEt(&_@5;L~|GqJsV z8(~^<#j2x3dTU-Bt}Om8{`V=Lqa^Sl$%)4il4Pvu{I%>i{JTQQVuAa9;) z)`3n?eZ{{ER9W#Up72~l=Q%@B3=A$2$|r6p9@g8)706tR!Jkdn$79;}i!BVtal z!dK+WZZ*pnUoM{W4sk#51&@!YqSQW|!l|2aj^cbjgpZLh~VEAi-{UBgn_6o0R6h|KnUt zdjLtR7gkt~$B;=>`K6Tb$z*9&fhPG=U@My-$2tTLw31waOsT3o4o?K15-%E@9=L-GEq8d@|z#=Sleip-W8c5W*xv?xhr^8^KX^nGMAtISE z?l;^!PsO4?>oWW~4S(oMQXciVENL2ibO~{@aWVzxd$q39E;Dc3z_c<|&juM?SCKad z3OU^7lXXUmrjgr26(>i=qu{($Q8HF^)QNF&ILnq4<%=kIK<8&Jd{Hw^ zpi(*E3ERX?FK_9mBMJ?g=O|w$tYWo>%SDb8NEjU^OpaUqok2y$QkD2MoAZJaZ?oG} zsyyR&?+)`jDz4^eyn{o8oqwGlODP2OlDubb1l8j9-&W099IH;?5wO(~<*}fLg^dZz z`PIdXW_t;H$+*Pmc!qjGKYyIaGVK~EvD?qZmHUV@;m%Pt`!K0#642 z!Nmh0%YDQsm5i)af}X zPHDFqYV3c6K5mg`R6RXwzbC>G)v24@poC+$8s>2vk8&?g3|5eFR$hEBcfr%VPKTsG zC!(ruHR288|DG$wA&77mkh@cZTnvAahLl@VJD3-%5-hF<$g(95a?xRv4+R+MKPBpL zX<3b$94>MJQ2`$>2h<=#2%mS$oS&k)LFQ!R2*@q78Tz6Z~nZDEH zbgx-H1!I(DO4rJEu2Z8!KBxwrm|&AU?rJC!d z^)hFzNb;vtJR^Pt1Pwf|>rReMR25u@QTk?`Wt<{RtRx+8>YpE@OYns$>U*`5pC)k1 ze3t%;BY*8CKStl2GD)IH-HSR1vKPHFhC|XQ_f9snptMI}Q9o&Rnj7Pn>ea3f`s;(d zC$3y=#>h&SX{eAOvW8_^n-E3Dyoi;#JpH;1A1LvQkpA3m=x(yA1GTfu6#$+PXW}wt zN+w&}+19YX;2J~}a3&fH=|!dIEY<}+c4-$QSwk4@gCF8)W@Bz*4>Z{Ew49=9R`k6nCOPs$alfxwg`Mb(c|!jCiYZ>Ytbj0|g4-p%h* z6=h>*XIV_E1SQrI9Y8dz#k=_OV!}PP-$|oW=E(5$A3o2I3o{9qLr~>~G8SQZazu1b zsh%%~>BiD6K+`{GXjb1$pM9Xa2y=~?pnPn%Tw?6fBWs?KD={t03?%^0=ZOTHCc4p> zX(Qk)Hwb&2a9>DoM9fPVeKtC|%H+6kK017SvOyMc4NUWhY@kSF>=3!#F)=0dt~~&z z9<10@feHVMbWCtKeyr6UD~3vJQOg3o{lZ47;ZF~u7~MLh+brHlEhw&XV{<3ktTnCtmGd8;`-q^iwGmslPLD^V^vyvv_Z&+-aiN1Ra7iJoza zWsi?WoItUL~&lKjIgE$s^3LbA8PwTG|TSLoWLEbgAc%aA%{*9HUS!mNJz6Kj% zBStwtsx}dS*foz;o@o4c+Idim37BCgcA z;;xcdRbLZ*a~c{cGl>#5DGA*?z=T<4H>*~++Q;eAinc~KG*`DHId{HRztgQRY`Nws z;uL5e0FGddUfc}x!&qJhHn|CEbr4kR#xK)J{2%y#%klmT@}n5mEUndV-JjL0)I(6B zQ=S^`VyY;W)HQ-C`CwR?vgq+M1wqqTCS|SanFilu>czQg{~dkR5j{5jw-kn2Uiv?v z9y`(gnHq_7HImMDB15f&n^KL0;V`vg`Qmsx;%bR~Ls2Zt|CSJ_=Ow7;Jv0);wEjOD z9*AU_rrK#f$v8}2MzS(IXpSeLUDUd`V0IDcViJ@p%Ja4@XlhZ=(x#}UONuS|79!qtW& zidnj9cNu(_o~u=Fne@9sa>Jh zN*)CfUL_)J8ZDX85LOpX0mv$abEWj{B+su8i#FM_KA>5nn1lN{T5WPeSb7oPWx?TJadEi{j%xj9mvgIyDmO6K?C1& zDPG%3`skI%Tl?JYITf+~Pi%InAHVwyPo#yvGqzkO-Y^?eYR<4&tUs2yvNcrh1D)l$1whwr|~GO+~*4=`L^BLDPx#)wPLvXDFn7K3kOE# z=@s^0D0Pw}$Zp$Mq+O~RKLGDKXZPszGiY9i+m^lCs9h5VU2Acz#Yo%r7oBwTmnC%{ zZ^@Gpexhlbz)HTnc?hlG`&lKjyHwQ$OuLpMJ0q2u268=1LC@XiJlk;PKfUWNkXQGc zTOV243(7V$#!GCzgXiUs0lPMK#8MqXweNAe(9sTNY{c~-U%{mwHE`BG_=vXZ!HO6a z#rpt_#`Hm-_1Vk-I@a&ZVWcGU9~1uDDGPu2 z9ItPV$jV*)JnvJeAhrw!T%>${eeDU${iT5YO1^~>ixmr{DTIp{n~0&u3SJ0iJJZ&P zxZ!ZZ)ujN6S-537gK(x*KSd+K4mz~$1iIm7dM6poX3m%xTIR>4Ll zQZ{O3H8WGKgp4H>Y!?lpdbWbSN_Z+z!$~tFYWitD$o+1<(>SJ)JS3{kX?`Fpu1eh&cNveHXDvNvna;?& zI=)H`)t;az5411SX_s;!A_CRk&dY6GzlQ?SN;tj>kxoLoJXu$30>KtfSzFG2)P)W_ z)$_%NFeK{5Y5txY4J2ySX}%M|wZJ3Z=rrCNu86tnykN*eEUwXitTW@P82k;A@+U=d zMoC_ZLZAZse@OcZptzc@&4eTnECdf8oWb4Q8GLXjNN@@61Shx*?lQOs4Nh?H4J@4x@QyH#7&oId9{r=QceYG!WV+XA%PkLPfh9S#bL3^!Z_E)8vpV?yL@r6QWU znb{hBO+|6oY~(Si#?kO9V%w(Lm>oXfJDP-)fP?Q&1ISXT;wWoo|^Hu5ZgrOYT;SvZckp z+t5e`a?>eF<&$ggy7-^J%o|6GaL^P6=9B0CqY4^Fn{?2$v*V&$1?EGP`n3#-Q1Z!B zcdPwb(&C$NsxVe1{{)YHL^2WEt#){wbS$XWEV-!=!MTLqkpyLDdj8lACDevGe}8Z! z*@)z%@p<9C3)fMcNu-M~Ev#meQ)b^sq{H$E(;w6gD-RSp0}4StVLx zB5&=%Bp&A?@?6q+ACDpK&TzD1cEeCi5Opbr>b6Jd9Fqd)d#Ut+q(#2PJBg{^j@&!m~f^d7PmB0nmChU0XADP)vlS!dNsi z5SrS>u8=Uoa%3!8Hus7Yud^}7^8vNb$PZTPh>syd^;C+wV?vTY zAWb|X8Mn|jLi8Yf!5g0`?!&%Cc*&`0lPAJGIO+8Eb;$B1BX1qW46{+q%}2^30s&uC z`Ila=Nz-ArUX^^CiO}yTnn9JJ=Dwbx6_+xh_T$B(NKUk=#l^Sd_tCaXs!;<%N-kY; zNV0EGEsqlzOmjXFJHKu>Raa27V98eC>eEg& zFtZLA+>C?2>{4CWsjQ2|9GI~%<=%o9;9{?}%xJZbmuuzuHRz_hw&l~@6o<#JT3z2A zy&t7EiM5x=M75V$+H29{wM*$CJGCu}b5rx*d$xHFv&L81=I>w`mZzkze9)O;&9oS9 z;b3H-keQZuJH~H-Xf>o0jTEZbbjsW8NB;hKNUgi%ID88g{(b14puEN4YBfc8OV-p#$k02A6B33W6kj+fpcR?ST;_E#cLr33XRKDsxjQ+Vqn@Yjt0rT6y9@i4C6g=l2EqiP=Q5SDLMn z`}97IFN^=k|Ms4=Qkiv(PZn=CJulorejJK5=*wfKg(k%jiyByUgdUr@L=s099WRc1 z-1(1CrM;h%r1XEQA-(Hw+wLN43YL3&CM?jA96S!6rN~XJ&6xfk7lQ69BtRUT=q1d# z!Q09Pr1V$l*Caxr^cUa#!yw0UA?3nN%nEfNcB6Ng#qocXm++O~9D^tBm_YAv%|#c+ z+x35s@zEd`y<<0j8iL*5o&VT;amhPrny?2~+AU|u2`Kom(O7D$^hIFfvq&T%g3+Y~~e=jCj*#gWQ*X@OE)O`PP4CC-wj;yao zh4MIE=SP}4bwR}W7gvePTy7eRU1tOfkPbl6(W>;P%Gctde&ysC<$P^{ydObuODB~K zWqH!2&SNAVxuj$i_DRSztXkDCSX4t{`;(9d2H5|!{}qUtOt;5CY{!N-g$t2^R4%{K zICd6&d+y$2b@F9WNR_~7Qb_q<;_qg=i87ownf}>&(fO*t*$L5?n_=Du6Z|I@l;@aNhBGjaW^Gs3aG$o2fEk9^3V40x#}sTMB7cqYQ9t-d z!GfiI$o#A@7@OT;n&PBnt4wxf(v`n0IhgP3R}CMy_qJlT%qFtvXFasvBh-s1C^!u6 zhheznnO4eVbyrsWvD?f@P%u!tbW-jE?|t82TQ7w@9!@NVMQ1j$2h8ZCboA?_M7=S4 z{P$gOH0>)Dfl|ze(3lVWVRixmTX2QG7O{@VN9Y@DxCX(eVX$nSMSd(ttmCiV%QbF< zCRu}WgrUQ3EM3@~Qr(*A){ASoZ+1UMUf{yBX}`l}26 z&!jU4SeIZM{2p7#IbGTG#%|~38E;xWC|%BHl@qJ~O&)LB^h;vGp0X}(!XA1~YbVX4 zi_>H%NWVYX!-Nlzr;GsSpZkLK`^Q~1+;}5&7@=VwA`MZ?BnP({p#FSR0Z)7$rwE2B zd;W;U>hs9osd&?RB5paIG|YJ;-qc^u{!XV2kl%izXpbhr`QsaQ zOoV@V#P;m*i}#iN%VprY;iTcZ zaS=nf2X<2AR_)QLY|LrnghW~8Qn1P(Tavfi6Ag8e*G;4QmE^i$=4@QuJ%N%H?A(Vx zSBo-%XZ)2_t(wM{rp4P78q&BiTgCP!n&Ax%m2D1}OePzXB=l`$V@jgsy!hD%>2n62s% zAeK=J++Q4fyYQQ-pnQ;2p;9Cam=oIi(IJ_r(?v4P?Heko{_DAiX#+jm*D_Hl^2|dz z(xuih5q#%F6!k!o_>k1ejtM51X3B|7#>%tw-Yc=u7VX|S5W1Y(DDj=ltyYeB_pbWz zGH$6e)z8G%xHG&tmfj5qHPDmlz9z~yuD$K=BcHnK0wr>k?wB`i_ze{^fZ1XVl4&g)j78KWYKv@%XQ1|MLFk_?z*YFvxcGKL~H3X{TQ&{>A=3 z8v=b6Fwnl~d)&PUg+}qW{1@WCW%w?c;PKl=eL*MPA+uHH!45F-)-0eFgHgQEAkDZ4O zzw)6-Fw|+_X6K&VZet0BwK^|0u$cH7_)1CoecNtuL2h<dPVdkt44y74@>3C3<7|p=;5mat<#sU|=32gn|Jz*ROwx;J$uEv?AHb{T1Xc zF9y>C?4&1)nDC!jN@%iwvP=f`;?S&GLn|{NaXug*H4oz`4-gRabrTx`2$=p0Ashz_ z%PEC$$pW@mA&KMQwMAA)WZF|UE9B&k6%zHwivaa*{P%|QUjYn2C4_SM|DZAWPflop z|Bd2-%nW!6?c3c$A6Y)2tLIPhzqR_`j7T#e6EqZh8CrcAZHOCMog+xA=~eN8pDn*J zG_1>NMQMGE6Ae2hK^VSnQbmi66i;MWddIX(N1!UgDooyvk?t~)Um_PzUS?WL7AS(s z{6;n~edMY(V`aukAc5NBX(ryj&|nA>!j(Y1rCpTxKN>fQ(wO%2DuWHmOxvKYRB242 z|1mT%HlM!(8u7RAzZw5%%alMJQroyV9k!tMDz{v-H`f7!Gxv&#|19(R)B0B;FHIb; zCprJ&AVPC~ekI%tx2xO4GgHrq`8!fILZY=R7oW3F%>m`GmezdUqAMZ`AMO26?0=rg z38!BI+}%A^SopgRiKm~pb?bz^J|NwGV(biRPb7jh^!N}4HMaiKfO?{cV1M4D_z|i7 ztVW9H2f$;Ulb0=H6XoCue*nbk$oA^y@ zFwU$vV#u(&0F!DLHx|*3@7fy4mvrxBwZHDQ8BUKBm>uHCw`$f9P24psb3A)Gf6;X@ zT3H-7b?EtiF?_$>GQjCX6an1^bJY%ygx3^msxCMj$On7T_7qgK`8`_*UN7l>dZ4v6 z0A5w~tco+KIkZWigDQLQH5~ccC>o7CP)XYyHHU%|fF_NeoCfFIHUzZt?X)~1Xl0A; zlK{0-OTDrGj9HTFs}h5tx~ur6qhBR+L^-oF55{?hy^~XJ(&t9~Zcnin=R}N6KC+|rE=A9S`oy78ls;C`o8hBYVvk>cqJ8~hg)nUe zi>O~fRzT3v`N|{L)ih5RxIQQ1S&gAg>EFlp)U1k;OcZFz^ zCQf1-d70~MsoDNib!_qcVDbyw5+dww_)ETN{?&23%XCVU&#t2h7bilvhY4UtIw?MV z$$8CO$l5jAkxc0Tau~lbgMR$f)=0VZNV7DIe<;2wvLBW72x=uKy;7E ziL+GPGPX!e__i?g-u;y!yYzG48cW$XuW@w^=r#@II8fBa+UfEanW!_ezSZ?hsigkw zRz$m_^VK@7`p=^a4kd~rV?5vWg-@Yla2{iIy#^!X7OI5T!veoT*s$`QUbAs{iNTH( zQNJKvE9cl%Gp3)w@gb2CXnE~u-PK?42KZ|(OPiHh-C`#vXzrd-LsgWvMkxlYD5^>X z>+nlSIz}Rr`cP-H+V(7~$9eLRaPLAX_Z225 zzV}B5A&|Ic?GnKK%IMa*^kj^n)WgX^q1nFVf#dnf26_(MbELp?apW+nPQ(YY9ug6| zryV;^CNfIwmLmO$4{T!Y5ORF@I7#>q4U(hPxbYdkmN+7+O`90$#@t`186=c`(`U2!Gxue9&db}}LbJBLwrJ>Do$QzE2JwY+ zsK};=6nGe;U$qwmSJO(oe9aQhvf{W7#}rYPiSVTxku;3)w2e(O<-D-Qy_}{o@qU%mKvf9gwBiWWGvq`y-VDpl=)7Qr-3?N61<;Q zm2c8@ZSHwkLZxSa(`OGthrX*tTYD6m`uMy5<>Ny>D zsL4P08}~^3M*vg-{0aeo7IXWfTrkprl7AymC4%*D3H-h$`QH_n*^*v7t+CQV z;t2Ufg<>GVlTW^R3NB<#}n&WYOr-Tt9>xG`@C9TQs8M#43BCBCAFi&o$QS7Q;2Rg3PLu);7ID9}xJ zb${HP5ok5>S(86p&2F^F$~B2 ztB{GB`+M)9c7TStd^n6%=}3q!DbdiyC#yMk@nE_m(%QuFFD`gIU0BzsT7z{oO9rb3 zbgH>@&}sTg+e#-%WO_h1mUA#2R$+6O{8CMmdv$K);(XJ7(>_sSkJq(ZuD2uHhGLtS zqxbd?W$T`M_R5~@}j6=@_Pi`F&NB7A^eyrV<+g|(K>&>SV3a<1*cuw zK(B>Se3|09Tus$t5;^hg>q0*wADp$wc^=4Argk2gJ>Y%Rq9=lJ!nv>AuEBRrzr~-x zL%29euI|+iRBG~STSBV??)P%;t-DIl9h|Gt`B!v=?pqn&lKh;QUyb+KE)J-3F2G*l z42zn`PdhwSu6)l=RdMqEFk$^>U$Z1hX9WYT(gS&$&p|?GKO9f4v0;)^8C~AS_%nT$ z0rk+L?y|Lj%r64$h(p+dSydYcYJWCWzaxx!zrStLK%Zh{=HwrZW&#ES!OBsAAE+Qw z{pJ2}WI!s4l#OAHYz`bJ)mGll%Den(#r^FzwQ}zecJc7HYPtTH4KKQJH=2xUQgTU> zvZSIx?plt-wFPWQQV>7*a9n__MMoDaHCrO|*kN7HU|183+5Lm_Z|F~#`Q7ig349bSbKxwO!|j{fJSk#d7SD(y>Hg;+z~3dKendF1t~kx_)!E zH01=-J8ML{*ROyGt_31uhyIAcrHu!g*KyLg9`6T3oPaURA-#J)zdAV-kj;)4&&u_Vf9pHJEuo3nIu6T@CRll z>d4NK=NJ=t1mJkLXC*`fRFQjS}>{T|Rk;q5q7c?$vVKD+TBc*zytkS>(7C!*;7G zPMl|>p>`8$%=pRLvS!SO#uw7j@mHpFbHUtH`+cnaVuW$`S>l16^DxR~#qd>Z&Y2v| zG&gr^|6a7m8C&?H-Ps$EAStNUZqAgc=d;Oo!7AwXOb&}$Q0RNucnQ^Q4N)!9*Uj_z z(EtuL+)6o|+kCksq0U-{iO4(?9ES^z0i@Pc@*za*47a(*TEz)?6M8OOO%`*>?%-XG zYI;@I$FhJsF8HA7;RF%5J|uH+sRVr~!F=u9uUZobR<)8@*X&gXUoC=(C8p8qER}~} z2>aK3$`MvtNi(&Na%{SjB-I2n26zBcV6Dz}1#Vrgy_lIpi;9#<%*De|^jY7!$RlXn zAc0Zu^klBTY?q>8{s*_a*HiBIoecfc+*V0W!Dw3Ql=kle(|S`V&sCl`36DQp{ZXFL z1RkXCP8fQEytxD(1};bS)`G0w3RsHVpyFj4o(kNL$nW=f&+$KvKb>ZD^mvC5Jp()+ z^4He|(ukgS?@r`T*Qfl6>L?zf*mm1S-Kzs5T0R91Sa9@kap_)%i|!m8S>PHjkW*&& zz+D7ZDn~79oh>QpaSb5Tm}|aVKR@U}wc-ou_kSvlo8{CoZ_OXHlTS$v{$AX|nH2bO zlww=E1|;Tm+`Q48zLd^DuVh6{6sfi0u7A6kvV_W$QD$?$)zDm<5P=dU z+)NUlqXwjkmd;oAgH<#;#7)SK;VO!bK~Lqz9XRf>W9mV?Jf zJJ0X)jT{fzRGsbLPNS&nNUKg0mXwhfTlDQ|R{e-CDI+L0MEt_PAdwaCsmTTL9i(_E zOgHAouk3_EFpnkVyJ@>1O@uhVhOvP4CE_Bebf#_dN_Uj9IH`VrC2F4W+?aFF8D z0m&y!jFVqF!1FC0B-rHbGq0CuTk>zF^P65fR1&T~jic=0V29C&`qT@9<)TB&;UB9N zd+wn-gvHFC_x58=-qn0N#Z8H_+~%-?v7UXcSPj27OTqc-0?=iO{(6++<}rER|LjZ3 zO4M7bt3BzFLa`F*wV1CWWP+^)a3YpiTcuuwg?f7ycbi)!VMIF#$#)R`3u)O$kW%Z! z1OwaUKvEo+t(aF|a(-{neS3C5jf@24u68-Y3Q*n@7Fhc7P=!Egk5e^wT^-J)zKVWOi;W__5oS;)d#1s)v<_M`^lJH z0kj95Ah0zS&|H#RR+(*GbJNzd`ts~EdWL=+!>Q}9*k@vqui)?w`e5Cw+S4s7DDikr zH;gL3~8oXIAKc7)9wcrRDh zg-nUVUP!JJh^Ll+>O_6VZy^|U_`H3n!c?fp4jZoI4VB?4$d3-XCUzJMThbMqA~3-Xa;k!O~i>)VfA=Nx5W zwEqH@Z1v_MX9W`zw*jny1)mDuh*X!Y#%Zo! zV2pxl!eF%=k;`Ev6@L`GNofa$8$gcQsoCPz$cu1Qu``ciT)aG^J!+bJ)aKdr!Z|!@ zqRZLOCdFIkde!i5%}MpFHj2al0oHn`JQlf%Od~!PA?xLQu2B3w(ZrQ@xm2Jvlb&u{ zx2a#W`;?x1G;PkkSg{X8uD-*16~}@V;z7gL0r&S8+XTTrTbW z-z98vI!^wjRf-5t-7k=?Wex0Yk4vO?n8j1H%}vk8=MNi1eh-FG-biPWLQhP+0#NrK z@YMt9VUKcYVEj|xf?uGjAH^FuS%i1V82A$}30VQ0rXbsq+?6Wj44+>!r3A&3K&}3B zEy0o44ZhfWJ1aYZxczjpmwdZEZLwsTlvcUJOWBl#7}sy%cch;B)AL2;&#-}fo7PGf zTuRz#QR6XRNB$ITZM65AXi?X+@Y)0lz2S3V$|=$2EFdfKqF<6VIECz_lb>_{0ScoK z*NfY5_+z2{KbDO(Vc!v9-zF2{)iwGOWg8a_5(eoF<8Mv0(Fx>dRie7_y#r{je}TK5 zIMojy|9{Fbg8+v4;h4K7PnvDR)SS-3Vy0~HF;DLar)A$AckMB&k+v(*8!`N?hql|M{gbzr&fTqv_CL%)l(vChFpd}s=v$@8G*bC~Cl zUdfM(S=(g$L$g#yo zq_;-Ddoy}ohd~gZy`2z|uE*`>wYzg`@z!JxyFU?B+Ol&SPF>ZUPf{*>F@cx9%x!6; z`<9Y-z>*b84?Ba&fTv7Uqb6!o2aCXsBFgH=$r!7|t1+sd& zTDl&9X_C465%&8+V;U43i24(K%_oa)?q-v2&9wEoFvrHFz*4DCkRQMyMTR3y3~Dr2 z`DksefyUbE(pfAm2i1(|O(A=;LaY;}!IKP}6AK@Zl(RL|D)Hq!4y3Bw(Uyvcw2% za8Ff1sTdqHU?(6npzPP^XP&Qw9*`VF-gU;Yufi&Js$TMdDg#Jc1{?;+wUbW zyd}4B+w!wXNPMjYTWgDdNAEDtCMh570U1%Eb%vl&dar3;anwV^AkXSkE5oVa34Op| z3Ly%ZIV%F7;wPPSO)=NK z5_sAiZuPn?Z+#wz9&3Fj=zX_N^z=CF?Yen%xbEu{glQNrXH^RN&?`r!q+ zj4OWZ@M7w=OVO3!)4Yt?q;W6x6zIwyauQO7)hUpSc#vY!YN0KSiz=Q|#> zHobm7{3yx-X^6?X1Se%KQg@|Jva-7Gd_)qh)bCdp>Tl9|;B+Zr;a z^Ji2A{;cPy=7C9p@E@2Js=%PZ#0Q<0ZMrJBQrQu7H~NA!=OfjuL}h4D_h+JNgz~b= zq!;NTN?#dp5VObgS_-8RaYAPow*k?(qVbrDKdRf$HHP?{S=x-y6tpn5 zz=S=Ku-97`1eqT|kuJ?`8Xk4FxUGzeGq=H{JMJx_FqvF``=QZqE)$i}Nuq6r&B(PD z9KY>jm1$9-9T8l~gXXp%`Js{Y(*dsCA-v%<^e3P*o78qA%-1tPv3}WX#?4=(fT z$dANiBG?Y*9b`%+hA}%C<7vxMYpCvk``Ts$IdE+!>e>GgGUtSK$bGsj4Yp z(jbwKLFCz~4SOrMkGYK$ku;Y-6IkoKW(cAMAfXAePjoo)OYFBFWcsjB56-IcTN0d} z$Gx7%zub@G9(m&)dnX@xCm(xj9(hw=3p5|gUbb*dVmC=4Tknq-FL`edc-;?txt6wn zWMRLIaRef~jnK0Zy5&TX?Se;#pu zy}+)qZO9)lOVO6!Ip=*DB)g#KRK}?F*Vt>WJ7Y}n zxc1OsE+K1)y?Qcqy*1nz_-F3atKALjG@EV93GTcDvdzTTbGY1Q#{*SqRj}af#+TZD zZ_TISaq9-7H4g!ZQlkq$0+Hr2vL%pKAJX5;;dYSNG+I?rgpZZ!nn*5aA#q&(0Ass> z)yF>6-T`rcswPVrCT?y-jZd9XRSmXw*VY)h7wgpUDlBP&zi1D{pBtsIm3$vI32_Jl zjD>UC=SfoLNp@mY^NwSpt0go(P!VqD+ zexwbYjF_hGG?4*4)dpS6#7*9zn`hK@msdO-BkdF;EjpV8 zeGBA2y&WYw7WHmeMJIeb#dwU)764sHggi-(63LGWaLkxu*wD2MDs1y?6=S1nePy4H z8s6h&s&7{hKmImpOR36`MqlV-z?N#jrceSKGAUSzOQre~pz0@{KNQV{aAh2DRk4>> zeVNkrMbJnQiz?z(*OyGrcNjfBYn%%Ba3O{wWs7U-3jO1yF1ef$$KTd%DI@lgy-zvc z<^M<2x^0Nz{n*-!LJfBnVa07|?ZlBYwTh8@Z^+3=MGrxV4Sl1v8qvJnDlYdGI<2t< zRhOpsxIUlXuHRRZylP#Md9P+Rs-mQ`5ycQKolg@d6Uy)GR9z5F`s#mbBnZ0B44l=eaS}) z>8h5hbde9%ZtSYoaC&gm3jh9^88=JrRs{Au*%mqNEC^`}v|w(;INhSq4emBs?p;1A+r~U?=@jFrT>!~Q8TV6NZ+|2=r7u)D?IYmS3Km?lF^~D9AQ+ z&>#L7KN-z)QtS|arKHJ{in_VB;iI%2fd$__(Xh_}Jmz$yC&(XSqvGf&w1;HUy~!V1 zWS@>u+D;z>yw4xffqsn>!s5B0&f#e3_CkBwgnW-U)z%HZV!bhIR*h-v6pZkTtjN`n zsK|!bBQ`9vplIl3N24Jzk%mgA{G7%hyTL~gnHSYw5s~4iuuo?UY?-~9((fbYiH8vXl zEF;L4SO{{oY)jl8Emr;BCl<#%qvg$I_tOdwJv6Tf+HDwbWv*fKo=P z5x!)812>A64KiK{R4istR{hz3_b^-OX6SSu58e~RW51?PUN zB-f{U=O0$^8`V;nf7jI~^;>{O0<~jrdbKza7&_Z`XE@bqi|adiOWP<;nz}bcNA#xFzb(sS!mD zt4}pDht~Ar?`s=pr(9T4In{BQZ3EI|Po7M=;a~8KGfqi``IxGn0X1lVNkXd z_Px6jP?+5rMV`_jlHU8mr&2{DxYty`_lpLTk{hN%D|lF%kB|x{8Gue)j3+xA=*=-w zt2t7;ZjL2Lpmg;WV#{rEC82Y^a%#VEO|mU#a|A)s%>~2**UTn1Fy8p*UVW=%rg0c(DTOz z)3vV?n0tb#@{uR9d#9?4H8<=ug}Gw4u(&lj<>5iaQgl)B_hZpsX5`HC-71<9)OjVS zkelQPb9K{$JI)fEMXNL#bb^bz`u z4W&+Tiwk5SjvTCGQ&$TxTujyM&f*1Xu?7$p=I){3GdAWcW-TmXdX^;5On$9OTMS0X z=2Gs>=YgAhh{FJP_k?NhaFoFO6w0mRMvoL4*dR^o!{Qh&W8NNq!4Z`vs2C{5f5w1~Fh7M0 zBRVRKsWcS~@{sm24`vn{&H02rNZQ@;R5K@T>qAwP1xxD#bhXA1LuuqTWvb?Oc(SO` zV~KC43chPYYftw47|bbAW7zLV<-2FCznF9tP%v4n*dT3l@A1)e-=eej$!Fwf1~*Sx z;Cu2!j<#;B;(B`|hN>wSudzH8gkwTq={C<3qk0ha%7<5i-xGv>B}GW(vnZwYj^;S` zz;ZLKBJL9GrOqZ~)5Uf(I;s8k(=W39J~B?#M%It5ZooRE+etQc*<4Z2isag5FWQUA za;IF}hP_cfX;Usc71>@D6lEVSBsu~v*ow9hwN{FIHopb@N-~x&3KU-bojP1B!<&o4 zoDTW|>pPkx9bV#TYDWwL>>J!pdS=pJ=5a}Bi!D7NUwg}G6p+2M(y&CCqwlLfel<*>;TSIvaN@zW{;sMV}qXTrQ$kI?kW)7o4I05V2`#`o*OOa zyCTS^gZRKoE$Z$v;(_mw3to;eo$-~1gMjyL3mXY^#`?b>3||@6z5j`AFxs)6PmMZH z|82nur?ys_gt<`vQ8}wOnpNT5JMLk>5!Xd+RF|5XzFn1$?Ur{pY`n486Vv45)4OZa z-&!KDTk|{;LT`tB^|tL!_knr?UFCS5It*TmyZcuM(<&$^n;~^*kh_EFv=(dZR_hDL z<{L*y`R3ZRuwFu_9`+r#-UIi)xgstc>#r`KZ!#jEpHg)08mRJ4evZWNB$o(QbWY9CGcD_{GwA^=TVGm z82})kYvJyhV%jg?49v2YFobUFp~fknf+k)j&K8lY#5;y?&-{pTBIbjN-T3TW4T@4^zLI2%{cZ_5lIBF2qGB&ws42{k=#kFur$TBi0BRh&*2&U(4$%=1E7UC07+-ln`3Q z(nn7@8(_2@T7}*>L^+#elpk6}+9yXj`^~5)wCYt~1m$eBQIJKIan$dZ3JSIPo|;Y) zvysnHmOWP%tyGQC2VOCYQcjIjjWGvKF^iH;%~UCCAh|C9j06(rejYg5WBmH2>GJq1 zP1oac`M+KxsQrGS@aNS6VqY2MY@E@6T2%&4;>ttsv@@q3-o}b$-}E*YeSZ;IaSIuu z)20_+xt*davBoC3M$%cLUcVtpKOCaHs6>>H+22vk`;SIq;3QM8)mh>3l3SH3~ybtNH4Z0?hFsz zR%$z`^OrjXlz>Q+ymz?_{f((V(v|yAH#VZA2DE?9wNjtuOS9(Zky{MOg!UEAm^JE2 zX_TpeT=F8S^a%iSj^H=@RESfGSOo!Ft%PP;9o4bQVj0pl_HUR&-$fER@@%q7bLlC@ zCBNS#-AS){4UVBP9})7m7(RLxuFwHy%LLyh&yCsM^h}lY(v5?yYk;Ttg|Nei^a-u1 z&)8+WZZ2~-opi7Rqkn!1BYhq}$ZAEfkZ4+7D!_3E>+uSlR$ek=m{j zR}!PCJn~&Ymo%4+1+Q^LhSJufX3}9rQ*m9m07Av`>5>zzV&@z`k!E@N>d?T7apz02i zKa_%8<$``I-`4sbiT0;!Ogbv$tu_PRNu3WBncn}}Yx>^b;JV~owYk8+*P!IKyc$cb z>}E&JmotD1ZIOW#{zJZ^OjV@>Qj4Ar5whU5@p-|@2$_t3 zQ3WmsyEZ6oK?!;!5eJ%5`>oFbDmR?9bW< z7V<7aVvZByj}yvc?p21xx!X8b!@)uwSI1xGS9n?8i}7mqJ}$W`YkC_~Dz}vhH_`6S zt~-5yDzo67%r10nevoe#;RSiH8i>!3FTQ;EzWr9>j$BFEBxFxUF%3|}BIcM^FoZFg zl+C?P+fyq8DftkD-+YjSMjt_*kt`Dl$0>XBCiw(0AHEd|`%pZ< z{AIg$Fwo;|feHKj%rhFc7tl%C7woMyygy2FZ! zbY?~t`=3R?f-KfrW$c;)3ta`o4gJ55K%lbJuCmlOYCsw_K#`ohC|5KNTo5x>7=tFO zN0Hnj!|Iu2ddEC^VVu1?AUdA#Esp{H|H`uYoqxFoAZUTCx83fSjyM%2)G^1-c;Z)`q>i3fmgjL$oU&;c#7`xo9T5 zM(`YfQ^*FtgcwmtN#qCv&!MB?7E9d0VcC1(@v6A78_uI?huXk20dHp$E%xIk4OP(^L4v?bG71B_k*Pz5wB~0LmivBKf^> zd(X}~hjEAD2hiR6^!nxP$_fe`ujb{YR`xNHs(g{c-i_>{9u`=Ww$N;1c@X#co#o@t z1n=hf;qF_@)ZxI}gVf=O-(u)rTHtTTl`uba)_r<=0_ro zex79jgyglys zy;c4i#g>ni(0=7t`j%^(;at&NTq>Llx~g9f6TiO?8d0ptFZvT+{dC($H`7 zEbnQ)(31hTM`RQc$^CFp)Y~Qf{m?96r7u?dnqKQZGumsjkeAaoBK!78sY!a2K!@V5 zhB_OVWxy_*Hy;Q^G_ERF?;rN-an4b3c0;_IH*_7T!(JlXXDz1*PT+s}08fZs7^SYm z;`U_=hk796OeU4OJr!_T#DS^84Tur_92^ymXpW_7@GH|FFGp{4rTb89{VMyD`)GZ$ z>5ML`H3M!PcKCc~;D5l^63|6p0p}Ww86CG6gZZ}n0q1~J`F0P4?eF^hh}++7`E49f zQ*=sBR8qbio&-z|#ZR>Y4hsW$yuL-Y)~rk2+datLoZgR+a-Rc+GPbC#QsFe8&UzSH zJ+ljWWp40D(k-i0I&zi>PcLI-ez=|4-!m^fR)x*$UCry&&g)J6nf(|zWH>)$82>X3 z(r_qp8-WscckjCAD6N0v>o z;>TFJXWJqb8IOrn-gZIT*A#C`FdrHetZpsgw)n(?u|&A(ycdVz!Js(#L(UsCW%+tb z@20&WklDb~^bR(Kup8QoCFDlv^QeuB)VmTgx?y$;9ayuz4BB>XVV7i_Zs*&4KG0vE zRY|btMYY;jpEag3)8cl+Gx4ImfF2IC8HWD>ZGFC`pFTmUE8gQP_JXZ7zO(RQ*dnX^ zu0{#=XpGIz#Up2rf&CVYCuDj91)qLaVd)NVR5ZWolsrgSR|X809K6ZosP$FfWZ{!7 zbw?YWpeOF6we(oB+pkYI9e7elI7xY~mR9RZPq6z+p^!|CXGXhMJx0Vh({bp1xPY>QSi92sAkB4f zjv@7*=9{7wHVH*u4qs4Jw41VHyu*>yY3sW74iute>9t^dktpCWkV?*AWp=KAcNIioitkBg>P(NsP-#K$hF7}Fql zY|l^g=hH(|ucg$Gh`XT3F~iymLlxTV6f)`LiQCD%2J--4`+2aIkrFYjOw}z&HhubY z&Ab=){=7VL)zWIIMEbPCBZTjyK|W&BrF}TnZdKw(Mr{c_UYO)>7NN{qRz1bP!$zh%2g+>z z3D}Ba>|aY|?Z5gTI&$5&9d+wXJax)oqg=^TDXqGUBHxr^26C8GN}$br?!af!B1g1k z7pP3}^PG8L+36{bX=O!vko-!v}#ju+DM z+>%s#%l}ohK;0otMoSdR$*zl{N0s)$6g~8kJsfOBs-N~uapA%A6LRq$imIRxkCouNX|93Gd6`ni~ z%-@B%zSvHl-&aSo!tn(`Q{>*Cghj?zu=y{qt;(&saZ|tgMf76e8Nu{N8rx+qVJop4 z2F$2vWC~Ik{yNjS*HiJvA<{Ta;l1<9F=*_?+pjMGsmrqdaRFGB@CRIm?lS4v=LBqe z@Crxp0lM6ad$w@_gK-mHeAcYP>WZ}B6blcPy&dT|YmKEjhPQp}bRhd?;e72(v*#%m z)6OtYqBC3MP*WEr+-;rQpp&%FQ$}QN&s5yECnDY$OnS}l82Zr-K6jzUxRYTqiLD1q zwY&^{bW;2U{uaO)O3hvukcjC?&8qaaq^EI{V_Ax=M@Xe(hO)hNlAsv*+=YjUi^Zuj z2CM`FPRCs7#KUbZU0(gateC%tuEU}k1?}$e;bt}Gt~s3F1DvhdgW}u<-Ku-u zC@kAAP`nah8hp*qta+{=+HhOhGM~44+8Ks888wIz{V7a^-VdBeQn;e_Ll=sX2$Rir zJ4_w~goq1wjxUnAf1qz=V;v>5XXowmxA^|!ZAr?6<#%jtah-vP8k>^NY<56eqC4;&TJV)AP4}`&bc6X?C_mpkD%@rr7 z-93Ju3pPgEW1sPVRpV>j4c|4^`$!gEnNy5@*}RJ36O7%KJiV35B@@lZQl-IVk}O3k~uQbNG)%eh({lF_o-VMx-2$imtWcU@N@x~i!MtH zapB-xV{~h1htB0 zbjrtn&tZ|fJB+MpS|5*x5V}>H1eBK^TpP5Ru6#=Y6Yf532MPkdmBEMgB zHfVV2Xe)$wiM4FwIuw3VNUut%JMPUq3KPu-tj@7L-c29ND%r=Mx{ZO>Zh47id}^>C zy9ADWA%X*#)~tr#e445ss+I&{X3MO5X3CWowXMf~H{%hq%W>1J>6GbFVp6FlP6R6x z59j#~qO26Ddeq=U*C<3PulAUx*CQ!_aMVfAFzVs%i{I_!!=0a@@BQSl-`&~6^{L_g z)!@p*mEyl7ZHSPLNRrCX3Yj*FXWak@?$Gjv>h?rH| zed0Oo91>t)VRtlIJOsq<$wi~SKgCY3#sVR%XQBx~v3~C0MquUksF6Y%QgRjKY4r2RB&(2wxY6{uIVnuhtJU%y@YZ#wN=U-1dS+6X`qCwc z2Rj3txeNL=@V>}gWof4R-hh!(LD?97Up(L{^Q@qSQ(F2X>BXrYQ2k(or@a+A$M~+~ zMVD4ny88fQIrbHi=D9NU&M&8k6J~k~6J%O8pHX4dzoB z(}Ke!=pJdMEXJ5BQ~L}eVXTI=@jCaY!5Pl`%q!GHxs|mN)Y*_N@kBZkGEoEk)Ct+J zmRWXp{E(Nt`?79Z#6J2`8dz7IP3Smgden3=xPX+dE>-j%)401W!%hB#uf9j zth*Eun1)>vFEC?6GfD}Q?Vaxqycpl84blSK#@UuW!!V8@J)XP zcl)btw{>sPa`=VUN$d5>UQ;v!ymh8T3xS}H8*|f32f-K5T)7aT6B6K=jzi+UYWN0(kw%Xy-h+op~!m;?im{ppM(|o^XHrmn}we4HJv>ja2_Nj7+EmM;TX>cVv@kTbk zEUiZ&99L6b7G|EwPOyT7eal`1poX^ycud#+LbomgYv%24)8)E>);M_Cw0bG za|@g3&_~8|V zfe38f2;c2Q@bN3&Vm#b7}0D&J~k$|f`M;Gcf`&soK-_XG3|zr>czq!~7ie}FcOYDS!!d^?1vQ$x(X89ZIrv;nnQkT- z-|BZ)ejrvoDgCH0Og#8loh^rzAl;<(E_9DIV~QZoCRM&sFHv|wx~({B77lKVD1CUnxv%IHT}}vH2;m{_N>NB#?odsQC`&^N z$ZXy(6Q}Qlx-y1R=&+ubL?9V9vw1F|ZRxQt1eruM&NSrcM3BI(ej#!j^4A0EZ>kGOl9}DVf_~j;3sl8@I6>&rHF9Y)8y(Nl{K~qGICY^1AhLYDh z4APE}e7?rr?9*N+)y&0Bwn5Je*f^JwxJY8e*LUhME^+mEfQnn{?A;rILA`feS0;uj zLsiN_!OtT}4H4hdXuq`1^OT8XNy<6d#%Jd|+k7WvT=1cUUnL>*@c?P!(x9gjDavgV zJwiOh@f-d;nWfdve0Y|y<1-UBxPINZ)`gmbteUwbnTI?+=!`~;pa25h{5syx_bz! z6&(o#zmZkab?VKF-<-KE$CKQ-JMDC!)_*O&oW<6bZ9-@CJudpL&(kW_MB&SruvbA+ zuhulV=N)AqaA^O%6`*e^ZdW37?4r>Hv?ZuMXR zkp*9+)ydHp>c{Bj(=6@bGfNhCxah96Whd=FtansqZLnQb@H1EV9e?q-+n-~ucyKMP z*w?Pqf8aOO!Mv|~aa*?z*I`hgx1hIh@!5c=c}lkM&_(8Wek~_!QWb<-biQ76{x-oN zZ(^aqmLtpe)XftN2xq^u_M4N6BEC9}=l@YeSr+p-M*ViP0@TIua-TjHG?cYj1%6R@ zo1R5`CT5Z3ggz$uO*lZMUq)jLjR4HE<=ZPe! zDI};B#tsz4qNuB6%h0Mx2h&;$8Zoa|8*9K1;Mructd3#UvaBW-WZ%X-E!#6uw(HYz zlik%#QG2`q-=JM^qj<^Yu#X;Vh?UBgkBV&PhiK5BD`1nb&ZB~!x$xZetSL>u`QU#0 zIz9>6BPG2>u5U1?#m-QrLT`5zzmNp^Dn?0{2L0M)-^BZZ7E`380=!BFe<7jm)Advl zms-`4o!R^gHE2T>IYeXd zRE~w4=m{;^ne&HD^Y$&=hO#BT8Y__b?s37(f`PBfc(tl{?6iRr=3^hVPXId(VEWEk zGySGggK=ua+iDBhxv~9)Fp7zlH*4MFdxMdl8L&mRIbV;!>IBPnay3&Q51~P8t`w(( zaE;ntf5wi6rkFt7HMh_Kdm5%cS61T++Y2F|ve)jEEv4~O99?7AF|vLS-+y7x&ahsd zsPV&aj?<0FM5l>G;0|*9ueY@zK-*&@wct6%{;>zkw0#1Gk^c{dwZ`_DRE@nt#K=#=0wen~u-^mm&ibs3lB z1HnjOAz-UbwZAs(c~XVWM28#aoq7TM?YEES##TlH0HrYCmR{htbe$LDRCO>Qe~OTU zV7@keKa<_P%OXJUjc4Qjc3D-XXHNSi zop&Fb6Zw3to zWNJBEIhYQc`TLH)g3?M=k1Y=4@iZuPKczaRn+*clJ+;q&=YL4N!r zvJQi~%wFep+$>(_;(!~5ZO1-qgQsCR+G-bT3^f`^3;oVHou}+WKp!s}VGnlNk_6{O z(=$HB<|IUM7E_rD^aQMD96@O2Eipzibwi-p(8P#GJ#TSjMtg(HdHJdo4xy$4Ds8*< z!%gtcSd6p0OPc5ui=lktVBy9*{&eqFfL2U4Wl>@Nnzidh`G+|6c5MC|8|QGJqV@!v z!ZF8aXC3C-yDkh#hUlq!1|>t3WT1Fct9%m5W-a8Rtd)n8zCdKf_bp_wB%Vp^$~opV znA*_y8RQ$MgOaabN6|L@R?e+O)E?~g;IHkzATRJ1m4F+z(%;QCr#O|MSc#Y+a+ND8 zK+q4-R7ejP|gYWjB3Tx2lj==6%06; zO!GNnvzX&ki;o(-8OCQ#t&2B!O51HU!(NKjE747V7B4Z1F5_)Id!-9$r;iKLuqEH( zDGtJiC|dgJ%jDj23}oeh7=)P|^oB<9%%JgUuG7nMp)wcZ<4>G|(>cOvS@XfES;YeO z!-{1@sU+gfS4A!)4P1hCmR7!UQe5PRPW9k!)B!lEeWXPS+A_o>OQA*vehcUPP6VfKpkSTRO88I-XxO=vpZgZiXJ zDZlQs%lM+eEU+3GqRlBER_aBAibQOV$50IHY5syrf-2juKsTlX*%PJ$-=ddfsKYzj zG?r!zG&-CdbEeS}U?)TYVe{w}<$^!CJAUJ&NR9xyE5NtP~lV zxDdH{HtodzJvkngLsW6OA`L$}zxI~z*ARhyKTF@bQI~nqupZ?Dfs=reG2iL!q7z}+Z&GX-@|5ajz9=F4ry}EWw z^NMn1JL%ZYAR^@#<*RnH^(495*ib{(6WMpZ{asA|0fg=UBhC9aQ}OTQtKa;rf99e3 zE7gB+{acCC-=ziqd-cCcbkjTHohj3aeZEX$7qM|Ink8qm4LUG*?q!zZ`R|K{D!S== zP_2Mg&mvdECTQt8YZEm<&YZ_H*m}|@KjE0!{%yW|S8ZrAC+6fklX)?@w9nSBSpEa3 zx*6a1NXvL+=D+$o8StA=^^ZK0p?{_Nr|aKKeE3~j;lEb@!>7vU7)&z~$TRhj5|0#d zwh^0pns4_8VZ=LBiv`p4oyp|m?gyi*(~4%ZdS|@e@X?@OG47TseG~ecyvl?^BcdxT zMvDcDPQv6rfIWRQF^@F9-%P5%lih#w75|Z^=ha`S{^|Pn5+}b)Xa3jffB1@}R_!_u zlXkWqSDRDXW$#oG64|G&OAcNg)r`8m(C!sFc=g%mX_X==6uC>lf0pXy%`=m%e}X}< zLwTfe|7KGCo&5ecU*R8lf?oZV>YuKEFR}K!bozg-{)Z3CV+9;mA}@L^JMAUzf35$| zC4_dSjV(+1WSHVxisK?x+wszle+ySM6tQ|)Xo8^61D?i_bOW8D#owDN`UtUlNvN8j z&lSGNfpjubs{i9Q;>4m+B7u~1AddrSH@aDa|1+-W6~xH}As~UA1AL=BX&t&*y?+;H zG#GJW-bjN$$_Adto*9I0R_h-=7l2TK6Cbd%5m_k5$Lq9F%sYgo$Vh$q`)hzD8kB#RLFUlq6C1{t14G zN27kE~AJ4q3VB5__r$m%=yp#$)G88e5y5bB^E90b5pz#`@?%- z$a1lnkxcFVEoII;XJdQgzQX7rh2K}PUy;ejz8SmwFrBZM;dVIe5duK}7BB`rnFj|7 zyZ{Rv{W@uY+IKqg`rUYFLL^!j$lMB(?`B5hkg8=`E;$6z^Ah7vmpAl;NoXIOG$B1x zYYwcE_aV?8=B=jg>CbMl>VaA2B`7mK+U zi{)`KAz0+-l^qy5k$9~-;@yB<_dmkctHu(&i;u$9lGGpIeRaMly)kGXsZ|tI#^mik zqMFMvyR0x1ykx}^DEsPF?QP8zf(8ZLV$Ck=fpUPIF^wTo+W5rUg#9yRrx9^RW zfxeCU&6$1x2JD}+FS$jIohP(89P>YLI4a3FpWJGCWQQhSKCcL!@l7w2s#Y+WtpMH+ zelh}xTlOg|4SljDagHCd^R_5xDus8XYV+(50_3L$x8x;rppOF{%JJ?)JaEI;(6{BwU>;%$>@UZhg13>bCL*DOA9wm`TX3)rSFODK z>7w=&W&Ry{S=EJ;C_}D&S*|_*S9|_k`=}{S#iAK0ky=mP;wp)6^2$he9Oh%kE?dPb z+e2w`pUzZDUn_UcUCcTYXZ(C zMyJw7Jn~TsvBGx#8H}`&AAg;%+~y#ieL)QHa#KkGhR>|(x(>b&%b6` zwAAg*eYy;7VKy&GmYOjhFapjerP@DWg;Pl|@a)$~(y8luV3;N;@zsYN2(;w1cA6cC zu+nJAZERK|40(i$zZe?HUvMfW4^T@p3iM`ImXEn+u`2toAinszCDWpul$2F9$X< zLMaPPjKg$5M`>W>P-4FqL+zu0}h!quLIyCpk;!^biI}HNiY( zuc|GxBWO5C7{z03$KuiV>AV{2g$nJ^>Ar~L!qaOa$O!$^lqaZc3rnir8n89G_8@)( z@6oX0DuSSDBTz_;I=wL=pc(*D9pUq>xy{}TGV~noujO_9939DRE(H5$Q~PB?1dXgH zO)&d&Yuo|VY`#X=D4z~zoq0?2<6GC->z|<+x!O?FiwK%JAe-mz#MeSnRfa(|88UQ{ zdChwOq~gBrwzX0uS+s5VdWGjUc{@L<``Sgd*JP-%$h2zLTh#i*TdMEcg>6J3CFVj@ zVumYEF0E(BkbJ|8m%#`^__X?dv8nC?!R)S4+qNL0?>c%R5@&z(6DjUKfpa}@KjLCL zKe78d(bUvu&@`8jX@;w@XCJz6;!^|mi|o6;2Gz8Y`|I)U+m57PsP|gZl90qqT~_jFL&L)nd_;AhVEwXna)($GrAO+B|nSp*XopohxYM-pddZiJwWVQlaJE9Dr4>R1~WTqdnXwfHBQ6;fLH&uEv^#*3+WbwS5X-pMIVw`MqGWCA^ z9b+^<=m$mcHzJAT56{NA)FyMnc;hC0LHv#JRaDzNoPXd=vxEMtig0T-=q4Xi=b`u` zS`$A~3rn1D%4QF%N`5xi#m_UC^4rLzRYDxef;k;VMfx5|kEdu;@9`9E4)JnLTI}^x z9`&b`-P`tLE{edpKsY|~^Mu1*P8`9{Q_`D&<>mb69A$YrTQp85WJfF?L=@p)I^wy5 zm4p}4m*iwRR9rQt2pQvJ+(>&a4{=|8w+fSeIwlqQhqCukYW(qGsM@L_LP(Y|rKo zz*f1GmZWso6}BYJO~iZaIjl+PbQp0Tk=Ok8ov9oG zXYtdnPwATYQO)H-OLzJ>Na>oenKaGB&qlh#EYeOgA;m(-Pv|`7KVGP}#K*iI9*x|m zM~pyX_{xLf(VviLh0|djbyZiEA9g_<=FI%ln6KaiJb{pH~I#wcJ+4ThKF@4obT9@$K^Mt5GCIKOdFQ!n!0J;bOE&`wn0N?`PavlJj2VBnK1LpwH zSpaYr00jfwzyRnBz-0njM`a0&pO1OO)imlFWs1OPgY?=}vAjsbvU0O%+H zI0}G{0DvO^=r8~{41f*+fI|T2AOJWBxEufg2kb`BvT8|m+zrwPayHBMZFdX!ES9B+q%mkm{V4c}%0q^)nxoM#uH z0)+jorbNBQ`3!?&`r3GhtRGZ02&o67Tbw_b_s1rgQPMMsYML95^P$)P)JwDc`dCNF z$DmJRpH9YFl5vk27W-HDdF)puAx-lA$cehotrxW9F`%&q7@s|XJZT~q@y~3lH#0Ek zl_i(IED{vr|9FHRvmxGPk*2e`N`U0T+d`Fgv!X8)X&s)~yrN(9bOArV|HFr*?L-f+ z&r9bowHA!k#3G~l7kYBqBc6B=ovVZ4QLc3_7ZpARPqa2fiR@ae(8nLWyFi|(AMK#W zR^&wOMi^Rbvf@BO1@+o~LU6enxB~g^H_W?zaT-+`@R7bTSygs#@4pc8xy|>DxjL`5 z;lIE7gygPv?-=$F`;%OJdP1J`f-L`_VjxkIJ;OG&y%6($y#5%&@cu%=WgS7?fT6H) zdKp#5f1AgQntIv>;WaI`n$@{-V1UZ12NV`%i2zAGPm&{nG$Vk@a*b+kM1(;o#OB{m zZ-tt_%9Y@#*{muTWlQ1}C%)jf@lmhmV<-e!->Z!0es3E@Na)D@I^}?)hWLeb)njB; zIe!|3Hc%3@xI_Mv8a{IyjoAFO^ed}-JYJPR)1mTw1?B;BtCEtFkT6~)pWqlH^<*)^ zYb0zn!bpLD09GRp1H%M{3M~LNHJgdghxV_}P*7wJErgMA;*}m7qyO3ZyV-viAoE>W z$%YG+_NgS^Pd>?2>PZ`fgpaxB^&1z;PorQvrtn?)-6#sooq~C<+%l|8L`3Top3_Dp zl_qoCZK+>YJZexA&{^LLK0!DA=n+NNJKgwDiN0Sa;PKo533GBRtjxem;KvaX675F{SUrSO z`V%;K_Xo{YDfRHN3L8=bO#taz>V>|VCDYg09ttr2C9bUG#7uP7<` zb|1?(6BZQrswJu41>nG1bckYndlU@rA-Nt9&Jfm}*jm*@BF9fY^9Ow51gk{mkQk}d zW-5i5J}t|?Qs{l^GCvdxYT&sy7M{PCNlHlvY6wvln;L={0UUvrzoj`!2P z8s-)0xhJP=;ZDd>(Ig1@YH=w%wBOOx#}g6Mn}ojKo;z-D>tn`PisjwsrjGG(#V&Lr zBidztD3`-`=iXcl*Ka01P-C9iJ<;CD4v3Btd8wsUT5)beelxtU!#|Z{1^|I~A|xu5 zFGNem;S_jQsC11aat+;Hc66VeW3(@m`cK#|u!+*>)uj?u$ilPe>3Vt-ZO(%O4EOns zaoZHE8X0i~A2{?OEXy1p3CHp-_B(rDWF-3f{N(JF*u4x#D^?&=Qa>T&Ao4$|t5H`P&-?cnFt9Z#x%{Hpr#v#MjKs$;dP zW45Yetg550s^fcAM?+OdWmQLERjc(_Awl6S{-C?hSfRXHcj$yIS~(7T?botz7~goJ z4+89&ts;;^LJ(=6K0qeEDyzRqO8fdk&+ z?{Su37)`;+@$Ok%D07vJQqq|oc)ZSFxoYtqdEn

    GcSdz0j=rvE|B^tNCQ)U}Lr( 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 HDUAOG(~EOU diff --git a/schematic/schematic.sch b/schematic/schematic.sch index b2d70fb..d020a13 100644 --- a/schematic/schematic.sch +++ b/schematic/schematic.sch @@ -6,11 +6,11 @@ $Descr A4 11693 8268 encoding utf-8 Sheet 1 1 Title "MIDI Drawbar Commandar" -Date "2019-04-02" -Rev "ver. 3.0" +Date "2020-02-15" +Rev "ver. 4.0" Comp "UBI Stage" Comment1 "sgaruti@gmail.com" -Comment2 "" +Comment2 "this version adds eeprom memory" Comment3 "" Comment4 "" $EndDescr @@ -1299,9 +1299,6 @@ F 3 "~" H 3200 6150 50 0001 C CNN $EndComp Wire Wire Line 2050 5350 2050 5550 -Wire Wire Line - 950 3950 1050 3950 -Connection ~ 950 3950 NoConn ~ 3400 6250 NoConn ~ 3400 6150 NoConn ~ 3400 6050 @@ -1316,24 +1313,8 @@ F 3 "" H 3400 5950 50 0001 C CNN 1 3400 5950 -1 0 0 1 $EndComp -Connection ~ 850 3950 -Wire Wire Line - 550 3950 850 3950 -Wire Wire Line - 850 3950 950 3950 Wire Wire Line 950 5850 950 5350 -$Comp -L Interface_Expansion:MCP23017_SP U1 -U 1 1 5C8F91DE -P 1650 4650 -F 0 "U1" V 1650 5931 50 0000 C CNN -F 1 "MCP23017_SP" V 1800 5850 50 0000 C CNN -F 2 "Package_DIP:DIP-28_W7.62mm" H 1850 3650 50 0001 L CNN -F 3 "http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf" H 1850 3550 50 0001 L CNN - 1 1650 4650 - 0 1 1 0 -$EndComp NoConn ~ 1750 3950 NoConn ~ 1850 3950 NoConn ~ 7150 3650 @@ -1587,7 +1568,7 @@ L Connector_Generic:Conn_02x13_Counter_Clockwise J8 U 1 1 5CA980CA P 1950 2950 F 0 "J8" V 2000 2200 50 0000 C CNN -F 1 "Teensy Digital Connector" V 1650 2300 50 0000 C CNN +F 1 "Teensy Digital Connector" V 1900 1750 50 0000 C CNN F 2 "" H 1950 2950 50 0001 C CNN F 3 "~" H 1950 2950 50 0001 C CNN 1 1950 2950 @@ -1873,14 +1854,11 @@ Wire Wire Line Connection ~ 2450 850 Wire Wire Line 2450 850 2100 850 -Connection ~ 1050 3950 Wire Wire Line 1550 3950 1550 3850 Connection ~ 1550 3850 Wire Wire Line - 2350 3950 2350 3450 -Wire Wire Line - 2450 3350 2450 3950 + 2450 3350 2450 3850 Wire Wire Line 3400 6350 3500 6350 Wire Wire Line @@ -1917,7 +1895,7 @@ Text Notes 8700 5700 0 50 ~ 0 Drawbars Board Text Notes 2800 1500 0 50 ~ 0 Jack pedals assembly -Text Notes 2950 4250 0 50 ~ 0 +Text Notes 3000 5200 0 50 ~ 0 Control Board\nButtons/Led $Comp L power:+3V3 #PWR? @@ -1930,14 +1908,6 @@ F 3 "" H 2750 4650 50 0001 C CNN 1 2750 4650 1 0 0 -1 $EndComp -Wire Bus Line - 750 5950 1450 5950 -Wire Bus Line - 750 6650 3500 6650 -Wire Bus Line - 7550 3250 7550 4900 -Wire Bus Line - 6100 4900 7550 4900 $Comp L power:GND #PWR? U 1 1 5CACBC14 @@ -1960,4 +1930,95 @@ F 3 "" H 4750 3050 50 0001 C CNN 1 4750 3050 -1 0 0 1 $EndComp +$Comp +L Memory_EEPROM:24LC64 U4 +U 1 1 5E48F1C2 +P 3150 3750 +F 0 "U4" H 3150 3269 50 0000 C CNN +F 1 "24LC64" H 3150 3360 50 0000 C CNN +F 2 "" H 3150 3750 50 0001 C CNN +F 3 "http://ww1.microchip.com/downloads/en/DeviceDoc/21189f.pdf" H 3150 3750 50 0001 C CNN + 1 3150 3750 + -1 0 0 1 +$EndComp +Wire Wire Line + 2350 3950 2350 3750 +Connection ~ 1050 3950 +Wire Wire Line + 950 3950 1050 3950 +Connection ~ 950 3950 +Wire Wire Line + 850 3950 950 3950 +Wire Wire Line + 550 3950 850 3950 +Connection ~ 850 3950 +$Comp +L Interface_Expansion:MCP23017_SP U1 +U 1 1 5C8F91DE +P 1650 4650 +F 0 "U1" V 1650 5931 50 0000 C CNN +F 1 "MCP23017_SP" V 1800 5850 50 0000 C CNN +F 2 "Package_DIP:DIP-28_W7.62mm" H 1850 3650 50 0001 L CNN +F 3 "http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf" H 1850 3550 50 0001 L CNN + 1 1650 4650 + 0 1 1 0 +$EndComp +Wire Wire Line + 2750 3850 2450 3850 +Connection ~ 2450 3850 +Wire Wire Line + 2450 3850 2450 3950 +Wire Wire Line + 2750 3750 2350 3750 +Connection ~ 2350 3750 +Wire Wire Line + 2350 3750 2350 3450 +Wire Wire Line + 3550 3850 3550 4050 +Wire Wire Line + 3550 4050 3150 4050 +$Comp +L power:+3V3 #PWR? +U 1 1 5E674495 +P 3150 4050 +F 0 "#PWR?" H 3150 3900 50 0001 C CNN +F 1 "+3V3" H 3165 4223 50 0000 C CNN +F 2 "" H 3150 4050 50 0001 C CNN +F 3 "" H 3150 4050 50 0001 C CNN + 1 3150 4050 + -1 0 0 1 +$EndComp +Connection ~ 3150 4050 +Wire Wire Line + 3550 3750 3550 3650 +Wire Wire Line + 3550 3450 3150 3450 +Connection ~ 3550 3650 +Wire Wire Line + 3550 3650 3550 3450 +$Comp +L power:GND #PWR? +U 1 1 5E6D20BB +P 3550 3450 +F 0 "#PWR?" H 3550 3200 50 0001 C CNN +F 1 "GND" H 3555 3277 50 0000 C CNN +F 2 "" H 3550 3450 50 0001 C CNN +F 3 "" H 3550 3450 50 0001 C CNN + 1 3550 3450 + -1 0 0 1 +$EndComp +Connection ~ 3550 3450 +Wire Wire Line + 2750 3650 2750 3450 +Wire Wire Line + 2750 3450 3150 3450 +Wire Bus Line + 750 5950 1450 5950 +Wire Bus Line + 750 6650 3500 6650 +Wire Bus Line + 7550 3250 7550 4900 +Wire Bus Line + 6100 4900 7550 4900 +Connection ~ 3150 3450 $EndSCHEMATC From f8a27ff9580832e9dcd923dbf0e09ce4a895897b Mon Sep 17 00:00:00 2001 From: Stefano Date: Mon, 17 Feb 2020 17:18:58 +0100 Subject: [PATCH 03/26] Activate eeprom and store the selected preset_id in it ( #5 ) Refactor the loading and changing presets functions. Also remove the preset's default settings (see #66 and #36 ) --- .../D9-drawbars-controller.ino | 161 +++++++++--------- 1 file changed, 85 insertions(+), 76 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 79a4fa8..fad65be 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -19,6 +19,7 @@ * */ #include +#include // https://github.com/jlesech/Eeprom24C32_64 #include #include // https://github.com/thomasfredericks/Bounce2/wiki #include @@ -28,6 +29,14 @@ //S #define DEBUG_OUT Serial #include "Debug.hpp" // https://github.com/tttapa/Arduino-Debugging +/* ************************************************************************ + * Instatiate the I2C eeprom + */ +#define EEPROM_ADDRESS 0x51 +static Eeprom24C32_64 eeprom(EEPROM_ADDRESS); +const word ACTIVE_PRST_ID_ADDR = 0; + + /* ************************************************************************* * Pins assign */ @@ -55,7 +64,7 @@ const byte LSL_STOP = 3; const byte LSL_FAST = 2; const byte LED_ALT = 0; -const byte BTN_COUNT = 8; // configurable digital input number (less the Alternate button, counted a part) include the pedal input +const byte BTN_COUNT = 8; // configurable digital input number (less the Alternate button, counted apart) include the pedal input const byte DRWB_COUNT = 10; // configurable number of drawbars used (add the exp pedal too) const byte CONTROLS_NUM = BTN_COUNT + DRWB_COUNT; const byte BTN_LED_COUNT = 7; // number of digital inputs that have leds (less the Alternate button, counted a part) @@ -169,21 +178,7 @@ const byte MAX = 3; const byte CHAN = 4; const byte BEHAV = 5; -byte curr_preset; // the currennt selected preset. - -// declares the default status of buttons when we switch to a new preset -byte btn_default[BTN_LED_COUNT+1][STATUSES_COUNT] = { - //ALT UP LOW - /*PEDAL TO LOWER */ {1, 1, 0}, /*CHOVIB_ON*/ - /*preset */ {0, 1, 0}, /*PERC_ON*/ - /*preset */ {1, 0, 0}, /*PERC_SOFT*/ - /*preset */ {0, 0, 0}, /*PERC_FAST*/ - /*preset */ {0, 0, 1}, /*PERC_3RD*/ - /* leslie off */ {1, 0, 0}, /*LSL_STOP*/ - /* rev off */ {0, 1, 0}, /*LSL_FAST*/ - /* vib/cho sel. value*/ {127,0,0} // we start with C3 -}; - +byte curr_preset = 5; // the currennt selected preset. We start with 5 that's /* ************************************************************************* * Drawbars initialization @@ -230,18 +225,21 @@ const byte BTN_PRST_START = 1; // the btn at wich the preset selectors starts const byte BTN_PRST_COUNT = 4; // the number of presets selectors (even if inactive!!) const byte BTN_PED= 7; byte isPedalAliased; + /* ************************************************************************* * LEDs initialization */ // Controls LEDs attacched to MCP23017 Adafruit_MCP23017 led; -// An array that store the state of the buttons leds (including the Alt btn/led). -byte ledState[STATUSES_COUNT] = {}; + +byte ledState[STATUSES_COUNT] = {}; // An array that store the state of the buttons leds (including the Alt btn/led). byte ledState_old[STATUSES_COUNT] = {}; // the previous leds state, to check if we have to update the leds register long led_alt_on_time; + byte vibchoLedState; // stores the Vibrato/chorus leds state byte vibchoLedState_old; // the previous leds state, to check if we have to update the leds register + byte old_preset_led; // the previous selected preset's led byte vibcho_led_on_old; long led_midi_on_time; @@ -256,7 +254,10 @@ void setup() { Serial.begin(38400); MIDI.begin(MIDI_CHANNEL_OMNI); - + + // Initialize EEPROM library. + eeprom.initialize(); + // set ALT button as input Pullup and attach debouncer pinMode(BTN_ALT, INPUT_PULLUP); btn_alt.attach(BTN_ALT); @@ -290,13 +291,8 @@ void setup() OLD_STATUS = ST_LOW; btnAlt_released = 1; - // load the default preset - for (byte btn_scanned = BTN_PRST_START; btn_scanned < (BTN_PRST_COUNT + BTN_PRST_START); btn_scanned++) { - if( 0 != btn_default[btn_scanned][BTN_PRST_STATUS] ){ - changePreset( btn_scanned ); - break; - } - } + curr_preset = eep_read_curr_preset_id(); // load the last used preset from memory. + load_preset(curr_preset ); syncAnalogData(); } @@ -321,6 +317,40 @@ void loop() { } +void load_preset( byte preset_id ){ + byte btn_scanned = btn_scanned + BTN_PRST_START; + DEBUGFN(NAMEDVALUE(btn_scanned)); + setBtnLedState(BTN_PRST_STATUS, old_preset_led, 0); + setBtnLedState(BTN_PRST_STATUS, btn_scanned, !btn_state[BTN_PRST_STATUS][btn_scanned]); + + // reset all data + DEBUGFN("Reset btns and leds data"); + // SET al buttons to 0 + for (byte st = 0; st < STATUSES_COUNT; st++){ + for (byte btn_scanned = 0; btn_scanned < BTN_LED_COUNT; btn_scanned++) { + if ( !isPresetButton(btn_scanned, st) ){ // check that's not a Preset button + updateBtn( btn_scanned, 0, st ); + } + } + } + // setVibchoType( btn_default[7][ST_ALT] ); + + /* ************************************** + * TODO: implement load from eeprom the preset's parameters + */ + + // Check if the pedal is aliased + if( PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MIN ] == 0 && PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MAX ] == 0 && PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + CHAN ] == 0){ + isPedalAliased = true; + } + else { + isPedalAliased = false; + } + DEBUGFN( NAMEDVALUE( isPedalAliased ) ); + + old_preset_led = btn_scanned; +} + bool isPresetButton( byte btn_scanned, byte the_status ) { if( the_status == BTN_PRST_STATUS && (btn_scanned >= BTN_PRST_START && btn_scanned <= (BTN_PRST_COUNT + BTN_PRST_START -1) ) ){ return true; @@ -328,60 +358,26 @@ bool isPresetButton( byte btn_scanned, byte the_status ) { return false; } -void changePreset( byte btn_scanned ){ - DEBUGFN(NAMEDVALUE(btn_scanned)); - // set it only if is defined in the preset array - if( btn_scanned - BTN_PRST_START <= PRESETS_COUNT - 1){ - DEBUGFN("CHANGING preset"); - setBtnLedState(BTN_PRST_STATUS, old_preset_led, 0); - setBtnLedState(BTN_PRST_STATUS, btn_scanned, !btn_state[BTN_PRST_STATUS][btn_scanned]); - - // set the new preset value - curr_preset = btn_scanned - BTN_PRST_START; +void changePreset( byte preset_id ){ + if( preset_id == curr_preset) return; + + if( preset_id <= PRESETS_COUNT - 1){ // set it only if is defined in the preset array + DEBUGFN("CHANGING preset"); - // reset all data - resetToDefaultData(); - - // Check if the pedal is aliased - if( PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MIN ] == 0 && PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MAX ] == 0 && PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + CHAN ] == 0){ - isPedalAliased = true; - } - else { - isPedalAliased = false; - } - DEBUGFN(NAMEDVALUE(isPedalAliased)); + load_preset( preset_id ); + + // set the new preset id value + curr_preset = preset_id; + + // save it in memory + eep_store_curr_preset_id(); + DEBUGFN( NAMEDVALUE(curr_preset) ); - old_preset_led = btn_scanned; + } else{ DEBUGFN("CAN'T CHANGE preset: preset location empty"); } - -} - -void resetToDefaultData(){ - DEBUGFN("Reset to default data"); - // SET al buttons to 0 - for (byte st = 0; st < STATUSES_COUNT; st++){ - for (byte btn_scanned = 0; btn_scanned < BTN_LED_COUNT; btn_scanned++) { - if ( !isPresetButton(btn_scanned, st) ){ // check that's not a Preset button - updateBtn( btn_scanned, 0, st ); - } - } - } - - //Set the default value for all buttons, only if it's not 0 (since we have already set all of them to 0) - for (byte st = 0; st < STATUSES_COUNT; st++){ - for (byte btn_scanned = 0; btn_scanned < BTN_LED_COUNT; btn_scanned++) { - if ( !isPresetButton(btn_scanned, st) ){ // check that's not a Preset button - if (btn_default[btn_scanned][st] != 0 ){ - updateBtn( btn_scanned, btn_default[btn_scanned][st], st ); - } - } - } - } - - setVibchoType( btn_default[7][ST_ALT] ); } void getAltBtn(){ @@ -597,7 +593,7 @@ void getDigitalData() { if (btn[btn_scanned].fell()) { //se il pulsante è un preset... if(isPresetButton( btn_scanned, STATUS )) { - changePreset( btn_scanned ); + changePreset( btn_scanned - BTN_PRST_START ); } else{ if( btnAlt_pushed == 0){ @@ -820,6 +816,19 @@ void MidiMerge(){ setBtnLedState(BTN_PRST_STATUS, BTN_PRST_START + curr_preset, 1); } } +} +// Return a byte with the last active preset (ranging from 0 to 3) +byte eep_read_curr_preset_id(){ + // Read a byte at address 0 in EEPROM memory. + byte data = eeprom.readByte(ACTIVE_PRST_ID_ADDR); + DEBUGFN(NAMEDVALUE(data)); + return data; + } -} +void eep_store_curr_preset_id(){ + // Write a byte in EEPROM memory. + DEBUGFN(NAMEDVALUE(curr_preset)); + eeprom.writeByte(ACTIVE_PRST_ID_ADDR, curr_preset); + delay(10); + } From 5d1df9a17653ffbf91f4a6ac913e59971d667897 Mon Sep 17 00:00:00 2001 From: Stefano Date: Mon, 17 Feb 2020 17:29:06 +0100 Subject: [PATCH 04/26] remove the changePreset function and compact the code --- .../D9-drawbars-controller.ino | 38 +++++++------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index fad65be..189ee58 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -318,7 +318,7 @@ void loop() { } void load_preset( byte preset_id ){ - byte btn_scanned = btn_scanned + BTN_PRST_START; + byte btn_scanned = preset_id + BTN_PRST_START; DEBUGFN(NAMEDVALUE(btn_scanned)); setBtnLedState(BTN_PRST_STATUS, old_preset_led, 0); setBtnLedState(BTN_PRST_STATUS, btn_scanned, !btn_state[BTN_PRST_STATUS][btn_scanned]); @@ -358,28 +358,6 @@ bool isPresetButton( byte btn_scanned, byte the_status ) { return false; } -void changePreset( byte preset_id ){ - if( preset_id == curr_preset) return; - - if( preset_id <= PRESETS_COUNT - 1){ // set it only if is defined in the preset array - DEBUGFN("CHANGING preset"); - - load_preset( preset_id ); - - // set the new preset id value - curr_preset = preset_id; - - // save it in memory - eep_store_curr_preset_id(); - - DEBUGFN( NAMEDVALUE(curr_preset) ); - - } - else{ - DEBUGFN("CAN'T CHANGE preset: preset location empty"); - } -} - void getAltBtn(){ static unsigned long btnAlt_DownTime; @@ -593,7 +571,19 @@ void getDigitalData() { if (btn[btn_scanned].fell()) { //se il pulsante è un preset... if(isPresetButton( btn_scanned, STATUS )) { - changePreset( btn_scanned - BTN_PRST_START ); + byte preset_id = btn_scanned - BTN_PRST_START; + if( preset_id != curr_preset && preset_id <= PRESETS_COUNT - 1){ // change preset only if the new one is different from the previous ande if is defined in the preset array + DEBUGFN("CHANGING preset"); + load_preset( preset_id ); + // set the new preset id value + curr_preset = preset_id; + // save it in memory + eep_store_curr_preset_id(); + DEBUGFN( NAMEDVALUE(curr_preset) ); + } + else{ + DEBUGFN("CAN'T CHANGE preset: preset location empty"); + } } else{ if( btnAlt_pushed == 0){ From a2d1e24faf7b87ad94c3aa6fd483a6203ad575c2 Mon Sep 17 00:00:00 2001 From: Stefano Date: Mon, 17 Feb 2020 21:59:17 +0100 Subject: [PATCH 05/26] Load current preset values from factory --- .../D9-drawbars-controller.ino | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 189ee58..beb3c82 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -26,7 +26,7 @@ #include #define PRINTSTREAM_FALLBACK -//S #define DEBUG_OUT Serial +#define DEBUG_OUT Serial #include "Debug.hpp" // https://github.com/tttapa/Arduino-Debugging /* ************************************************************************ @@ -168,6 +168,7 @@ const byte PRESETS[][CONTROLS_NUM][18]= } }; +byte preset[CONTROLS_NUM][18]={}; const byte PRESETS_COUNT = sizeof(PRESETS) / sizeof(PRESETS[0]); /* Array index position labels */ @@ -178,7 +179,7 @@ const byte MAX = 3; const byte CHAN = 4; const byte BEHAV = 5; -byte curr_preset = 5; // the currennt selected preset. We start with 5 that's +byte curr_preset; // the currennt selected preset. /* ************************************************************************* * Drawbars initialization @@ -335,10 +336,8 @@ void load_preset( byte preset_id ){ } // setVibchoType( btn_default[7][ST_ALT] ); - /* ************************************** - * TODO: implement load from eeprom the preset's parameters - */ - + eep_load_preset_params( preset_id ); // Load the preset's parameters + //NAMEDVALUE(preset); // Check if the pedal is aliased if( PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MIN ] == 0 && PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MAX ] == 0 && PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + CHAN ] == 0){ isPedalAliased = true; @@ -808,7 +807,7 @@ void MidiMerge(){ } } -// Return a byte with the last active preset (ranging from 0 to 3) +// Return a byte with the last active preset byte eep_read_curr_preset_id(){ // Read a byte at address 0 in EEPROM memory. byte data = eeprom.readByte(ACTIVE_PRST_ID_ADDR); @@ -822,3 +821,12 @@ void eep_store_curr_preset_id(){ eeprom.writeByte(ACTIVE_PRST_ID_ADDR, curr_preset); delay(10); } + +void eep_load_preset_params( byte preset_id ){ + for (byte st = 0; st < CONTROLS_NUM; st++){ + for (byte te = 0; te < 18; te++) { + preset[st][te] = PRESETS[preset_id ][st][te]; + } + } + +} From b7c8f6d7a7566c7c39985566e08907f1676f2889 Mon Sep 17 00:00:00 2001 From: Stefano Date: Mon, 17 Feb 2020 22:05:06 +0100 Subject: [PATCH 06/26] uses loaded preset's parameters values for controls --- .../D9-drawbars-controller.ino | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index beb3c82..90f1a57 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -339,7 +339,7 @@ void load_preset( byte preset_id ){ eep_load_preset_params( preset_id ); // Load the preset's parameters //NAMEDVALUE(preset); // Check if the pedal is aliased - if( PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MIN ] == 0 && PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MAX ] == 0 && PRESETS[curr_preset][BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + CHAN ] == 0){ + if( preset[BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MIN ] == 0 && preset[BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MAX ] == 0 && preset[BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + CHAN ] == 0){ isPedalAliased = true; } else { @@ -460,7 +460,7 @@ void setVibchoType( byte CCvalue ){ vibcho_led_on_old = vibcho_led_on; vibchoLedState = 0; // reset the leds bitWrite(vibchoLedState, vibcho_led_on, 1 ); - sendMidi( PRESETS[curr_preset][VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +TYPE], PRESETS[curr_preset][VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +PARAM], CCvalue, VIBCHO_SEL_DRWB, PRESETS[curr_preset][VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +CHAN] ); + sendMidi( preset[VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +TYPE], preset[VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +PARAM], CCvalue, VIBCHO_SEL_DRWB, preset[VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +CHAN] ); } } @@ -468,7 +468,7 @@ void getAnalogData() { for (int drwb_scanned = 0; drwb_scanned < DRWB_COUNT; drwb_scanned++) { // update the ResponsiveAnalogRead object every loop drwb[drwb_scanned].update(); - if( PRESETS[curr_preset][drwb_scanned][STATUS_IDX[STATUS] +TYPE] != TP_NO ){ + if( preset[drwb_scanned][STATUS_IDX[STATUS] +TYPE] != TP_NO ){ // if the repsonsive value has changed, go if (drwb[drwb_scanned].hasChanged()) { analogData[drwb_scanned] = drwb[drwb_scanned].getValue() >> 3; @@ -496,7 +496,7 @@ void syncAnalogData() { for (int drwb_scanned = 0; drwb_scanned < DRWB_COUNT; drwb_scanned++) { // update the ResponsiveAnalogRead object every loop drwb[drwb_scanned].update(); - if( PRESETS[curr_preset][drwb_scanned][STATUS_IDX[STATUS] +TYPE] != TP_NO ){ + if( preset[drwb_scanned][STATUS_IDX[STATUS] +TYPE] != TP_NO ){ analogData[drwb_scanned] = drwb[drwb_scanned].getValue() >> 3; analogDataLag[drwb_scanned] = analogData[drwb_scanned]; DEBUGFN( "DWB synced: " ); @@ -509,23 +509,23 @@ void syncAnalogData() { } void sendAnalogMidi ( byte value, byte control, byte curr_status ){ - if ( ( PRESETS[curr_preset][control][STATUS_IDX[curr_status] +BEHAV] & SEND_BOTH ) == SEND_BOTH ){ - sendMidi( PRESETS[curr_preset][control][STATUS_IDX[curr_status] +TYPE], PRESETS[curr_preset][control][STATUS_IDX[curr_status] +PARAM], value, control, PRESETS[curr_preset][control][STATUS_IDX[ST_UP] +CHAN] ); - sendMidi( PRESETS[curr_preset][control][STATUS_IDX[curr_status] +TYPE], PRESETS[curr_preset][control][STATUS_IDX[curr_status] +PARAM], value, control, PRESETS[curr_preset][control][STATUS_IDX[ST_LOW] +CHAN] ); + if ( ( preset[control][STATUS_IDX[curr_status] +BEHAV] & SEND_BOTH ) == SEND_BOTH ){ + sendMidi( preset[control][STATUS_IDX[curr_status] +TYPE], preset[control][STATUS_IDX[curr_status] +PARAM], value, control, preset[control][STATUS_IDX[ST_UP] +CHAN] ); + sendMidi( preset[control][STATUS_IDX[curr_status] +TYPE], preset[control][STATUS_IDX[curr_status] +PARAM], value, control, preset[control][STATUS_IDX[ST_LOW] +CHAN] ); } - else if ( ( PRESETS[curr_preset][control][STATUS_IDX[curr_status] +BEHAV] & IS_GLOBAL ) == IS_GLOBAL ) { - sendMidi( PRESETS[curr_preset][control][STATUS_IDX[ST_UP] +TYPE], PRESETS[curr_preset][control][STATUS_IDX[ST_UP] +PARAM], value, control, PRESETS[curr_preset][control][STATUS_IDX[ST_UP] +CHAN] ); + else if ( ( preset[control][STATUS_IDX[curr_status] +BEHAV] & IS_GLOBAL ) == IS_GLOBAL ) { + sendMidi( preset[control][STATUS_IDX[ST_UP] +TYPE], preset[control][STATUS_IDX[ST_UP] +PARAM], value, control, preset[control][STATUS_IDX[ST_UP] +CHAN] ); } else { - sendMidi( PRESETS[curr_preset][control][STATUS_IDX[curr_status] +TYPE], PRESETS[curr_preset][control][STATUS_IDX[curr_status] +PARAM], value, control, PRESETS[curr_preset][control][STATUS_IDX[curr_status] +CHAN] ); + sendMidi( preset[control][STATUS_IDX[curr_status] +TYPE], preset[control][STATUS_IDX[curr_status] +PARAM], value, control, preset[control][STATUS_IDX[curr_status] +CHAN] ); } } void updateBtn( byte btn_scanned, byte btn_val, byte curr_status ){ byte btn_index = btn_scanned + BTN_IDX_START; - if ( ( PRESETS[curr_preset][btn_index][STATUS_IDX[curr_status] +BEHAV] & SEND_BOTH ) == SEND_BOTH ){ - sendMidi( PRESETS[curr_preset][btn_index][STATUS_IDX[curr_status] +TYPE], PRESETS[curr_preset][btn_index][STATUS_IDX[curr_status] +PARAM], btn_val * 127, btn_index, PRESETS[curr_preset][btn_index][STATUS_IDX[ST_UP] +CHAN] ); - sendMidi( PRESETS[curr_preset][btn_index][STATUS_IDX[curr_status] +TYPE], PRESETS[curr_preset][btn_index][STATUS_IDX[curr_status] +PARAM], btn_val * 127, btn_index, PRESETS[curr_preset][btn_index][STATUS_IDX[ST_LOW] +CHAN] ); + if ( ( preset[btn_index][STATUS_IDX[curr_status] +BEHAV] & SEND_BOTH ) == SEND_BOTH ){ + sendMidi( preset[btn_index][STATUS_IDX[curr_status] +TYPE], preset[btn_index][STATUS_IDX[curr_status] +PARAM], btn_val * 127, btn_index, preset[btn_index][STATUS_IDX[ST_UP] +CHAN] ); + sendMidi( preset[btn_index][STATUS_IDX[curr_status] +TYPE], preset[btn_index][STATUS_IDX[curr_status] +PARAM], btn_val * 127, btn_index, preset[btn_index][STATUS_IDX[ST_LOW] +CHAN] ); if( curr_status == ST_ALT ){ setBtnLedState(curr_status, btn_scanned, btn_val); btn_state[curr_status][btn_scanned] = btn_val; @@ -538,15 +538,15 @@ void updateBtn( byte btn_scanned, byte btn_val, byte curr_status ){ } } - else if ( ( PRESETS[curr_preset][btn_index][STATUS_IDX[curr_status] +BEHAV] & IS_GLOBAL ) == IS_GLOBAL ) { - sendMidi( PRESETS[curr_preset][btn_index][STATUS_IDX[ST_UP] +TYPE], PRESETS[curr_preset][btn_index][STATUS_IDX[ST_UP] +PARAM], btn_val * 127, btn_index, PRESETS[curr_preset][btn_index][STATUS_IDX[ST_UP] +CHAN] ); + else if ( ( preset[btn_index][STATUS_IDX[curr_status] +BEHAV] & IS_GLOBAL ) == IS_GLOBAL ) { + sendMidi( preset[btn_index][STATUS_IDX[ST_UP] +TYPE], preset[btn_index][STATUS_IDX[ST_UP] +PARAM], btn_val * 127, btn_index, preset[btn_index][STATUS_IDX[ST_UP] +CHAN] ); setBtnLedState(ST_UP, btn_scanned, btn_val); setBtnLedState(ST_LOW, btn_scanned, btn_val); btn_state[ST_UP][btn_scanned] = btn_val; btn_state[ST_LOW][btn_scanned] = btn_val; } else { - sendMidi( PRESETS[curr_preset][btn_index][STATUS_IDX[curr_status] +TYPE], PRESETS[curr_preset][btn_index][STATUS_IDX[curr_status] +PARAM], btn_val * 127, btn_index, PRESETS[curr_preset][btn_index][STATUS_IDX[curr_status] +CHAN] ); + sendMidi( preset[btn_index][STATUS_IDX[curr_status] +TYPE], preset[btn_index][STATUS_IDX[curr_status] +PARAM], btn_val * 127, btn_index, preset[btn_index][STATUS_IDX[curr_status] +CHAN] ); setBtnLedState(curr_status, btn_scanned, btn_val); btn_state[curr_status][btn_scanned] = btn_val; } @@ -586,18 +586,18 @@ void getDigitalData() { } else{ if( btnAlt_pushed == 0){ - if ( PRESETS[curr_preset][btn_index][STATUS_IDX[STATUS] + TYPE] != TP_NO ){ + if ( preset[btn_index][STATUS_IDX[STATUS] + TYPE] != TP_NO ){ // Caso "normale" il pulsante è premuto da solo DEBUGFN("BTN pressed / value: "); DEBUGVAL(btn_scanned, btn_val); // if the Pedal is aliased, we use the settings of the relative button if( isPedalAliased == true && btn_scanned == BTN_PED ){ - btn_scanned = PRESETS[curr_preset][btn_index][STATUS_IDX[ST_UP] + PARAM]; + btn_scanned = preset[btn_index][STATUS_IDX[ST_UP] + PARAM]; btn_index = btn_scanned + BTN_IDX_START; } - if ( (PRESETS[curr_preset][btn_index][STATUS_IDX[STATUS] +BEHAV] & IS_TOGGLE )== IS_TOGGLE){ + if ( (preset[btn_index][STATUS_IDX[STATUS] +BEHAV] & IS_TOGGLE )== IS_TOGGLE){ DEBUGFN("toggle..."); // il pulsante è TOGGLE btn_val = !btn_state[STATUS][btn_scanned]; @@ -634,14 +634,14 @@ void getDigitalData() { // Pulsante rilasciato else { // reagisce solo se questo pulsante non è TOGGLE e non è PRESET - if ( !isPresetButton( btn_scanned, STATUS ) && PRESETS[curr_preset][btn_index][STATUS_IDX[STATUS] + TYPE] != TP_NO ){ + if ( !isPresetButton( btn_scanned, STATUS ) && preset[btn_index][STATUS_IDX[STATUS] + TYPE] != TP_NO ){ // if the Pedal is aliased, we use the settings of the relative button if( isPedalAliased == true && btn_scanned == BTN_PED ){ - btn_scanned = PRESETS[curr_preset][btn_index][STATUS_IDX[STATUS] + PARAM]; + btn_scanned = preset[btn_index][STATUS_IDX[STATUS] + PARAM]; btn_index = btn_scanned + BTN_IDX_START; } - if ( (PRESETS[curr_preset][btn_index][STATUS_IDX[STATUS] +BEHAV] & IS_TOGGLE) != IS_TOGGLE){ + if ( (preset[btn_index][STATUS_IDX[STATUS] +BEHAV] & IS_TOGGLE) != IS_TOGGLE){ DEBUGFN("Btn released - No TOOGLE & No PRESET..."); DEBUGVAL(!btn_val); //if is_pedal && pedalAlias > 0 --> btn_scanned = pedalAlias, btn_index = btn_scanned + BTN_IDX_START @@ -691,8 +691,8 @@ void sendMidi( int type, byte parameter, byte value, byte control, byte channel) data[8] = partsB[channel - 1]; data[10] = parameter; data[11] = value; - if ( PRESETS[curr_preset][control][STATUS_IDX[STATUS] +MAX] != 127 || PRESETS[curr_preset][control][STATUS_IDX[STATUS] +MIN] != 0 ) { - data[11] = map(value, 0, 127, PRESETS[curr_preset][control][STATUS_IDX[STATUS] +MIN], PRESETS[curr_preset][control][STATUS_IDX[STATUS] +MAX]); + if ( preset[control][STATUS_IDX[STATUS] +MAX] != 127 || preset[control][STATUS_IDX[STATUS] +MIN] != 0 ) { + data[11] = map(value, 0, 127, preset[control][STATUS_IDX[STATUS] +MIN], preset[control][STATUS_IDX[STATUS] +MAX]); } /* From f2b4f40d95324c48c759575e25237f6d41e4f5d7 Mon Sep 17 00:00:00 2001 From: Stefano Date: Tue, 18 Feb 2020 12:40:22 +0100 Subject: [PATCH 07/26] Add some notes on Factory Restore --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 93e9a0c..77ec008 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,19 @@ # MIDI Drawbars Commander -## Notes: -You should use a Normally Open pedal to switch from the Leslie's speed, otherwise the "switch impulse" is sent on pedal release instead of pedal push (see issue #24) +## Pedals: +### Expression pedal +Any "standard" expression pedal compatible with the Roland EV5 will do. + +### Switch pedal (leslie speed) +You should use a Normally Open non latching (momentary) pedal to toggle the Leslie's speed, otherwise the "switch impulse" is sent on pedal release instead of pedal push (see issue #24) + +## Factory restore +You can restore the presets factory defaults with the following procedure +- **turn off** the MIDI Drawbars Comamnder (i.e. detach from the USB cable) +- **press and hold the *ALT* button while turning on the Commander** (i.e. attach the USB cable). This will boot the Commander in *Reset mode*. The "*Leslie fast*" button's led will start blinking +- **while holding the *ALT* button, press the blinking "*Leslie fast*" button** to wipe the memory and reload the factory presets. The led will stop blink. +- **TODO: how to know when the restore finish?** +- Now **release the *ALT* button**: the Commander will exit from the *Reset mode* and it's ready to perform using the default parameters. ## Changelog: - v. 1.3.5 Fix some issues with control assign in FA preset, and a small bug in the Pedal switch control From 3784ac10bec17317d72397cbf52b4f1beff44582 Mon Sep 17 00:00:00 2001 From: Stefano Date: Wed, 19 Feb 2020 15:52:48 +0100 Subject: [PATCH 08/26] Intercept buttons on bot to enter the "reset factory" mode --- .../D9-drawbars-controller.ino | 83 +++++++++++++------ 1 file changed, 59 insertions(+), 24 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 90f1a57..d31c10d 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -93,6 +93,17 @@ const byte STATUSES_COUNT = sizeof(STATUS_IDX) / sizeof(STATUS_IDX[0]); const byte BTN_IDX_START = DRWB_COUNT; // at wich row of the presets array does the buttons rows starts? +/* Parameters position */ +const byte TYPE = 0; +const byte PARAM = 1; +const byte MIN = 2; +const byte MAX = 3; +const byte CHAN = 4; +const byte BEHAV = 5; +/* Parametes count */ +const byte PARAMS_NUM_PER_STATUS = 6; +const byte PARAMS_NUM_PER_CTRL = 6 * STATUSES_COUNT; + /* The multidimensional Array byte PRESETS will contains in each row: 1) the type of midi message to send out:*/ @@ -124,7 +135,7 @@ const byte BTN_IDX_START = DRWB_COUNT; // at wich row of the presets array does * 0: Factory preset for Roland FA 06/07/07 * 1: Factory preset for GSi Gemini expander */ -const byte PRESETS[][CONTROLS_NUM][18]= +const byte PRESETS[][CONTROLS_NUM][PARAMS_NUM_PER_CTRL]= {// UPPER LOWER ALTERNATE {//PIN Type Prm Min Max Ch Behaviour Type Prm Min Max Ch Behaviour Type Prm Min Max Ch Behaviour /*DWB1*/ {TP_SX, 0x2A, 0, 8, 1, 0, TP_SX, 0x2A, 0, 8, 2, 0, TP_CC, 16, 0, 127, 0, SEND_BOTH}, // DRIVE @@ -168,18 +179,10 @@ const byte PRESETS[][CONTROLS_NUM][18]= } }; -byte preset[CONTROLS_NUM][18]={}; +byte preset[CONTROLS_NUM][PARAMS_NUM_PER_CTRL]={}; const byte PRESETS_COUNT = sizeof(PRESETS) / sizeof(PRESETS[0]); -/* Array index position labels */ -const byte TYPE = 0; -const byte PARAM = 1; -const byte MIN = 2; -const byte MAX = 3; -const byte CHAN = 4; -const byte BEHAV = 5; - -byte curr_preset; // the currennt selected preset. +byte curr_preset_id; // the currennt selected preset. /* ************************************************************************* * Drawbars initialization @@ -292,10 +295,42 @@ void setup() OLD_STATUS = ST_LOW; btnAlt_released = 1; - curr_preset = eep_read_curr_preset_id(); // load the last used preset from memory. - load_preset(curr_preset ); + // To reset to factory presets keep pressed the ALT button while turning on the device + // then press the "leslie fast" button + btn_alt.update(); + long reset_btn_on_time = millis(); + byte reset_btn_led = 1; + byte im_resetting = false; + while (btn_alt.read() == 0){ + led.digitalWrite(0, 1); // turn on the ALT_BTN + + //now blink btn[6] + if( millis()-reset_btn_on_time > 200 && !im_resetting ){ + led.digitalWrite(7, !reset_btn_led); + reset_btn_led = !reset_btn_led; + reset_btn_on_time = millis(); + } + + btn_alt.update(); // does the ALT button chaged? + btn[6].update(); // does the Reset button changed? + + if (btn[6].fell()){ // the reset button was pressed: let's start the reset procedure + DEBUGFN("factory restore should go here"); + led.digitalWrite(7, HIGH); //keep the led to signal that the reset procedure is starting + im_resetting = true; //don't blonk animore + + /* ************************************** + * TODO: Write the presets to the eprom + */ + } + } + + curr_preset_id = eep_read_curr_preset_id(); // load the last used preset from memory. + load_preset( curr_preset_id ); syncAnalogData(); + + } void loop() { @@ -571,14 +606,14 @@ void getDigitalData() { //se il pulsante è un preset... if(isPresetButton( btn_scanned, STATUS )) { byte preset_id = btn_scanned - BTN_PRST_START; - if( preset_id != curr_preset && preset_id <= PRESETS_COUNT - 1){ // change preset only if the new one is different from the previous ande if is defined in the preset array + if( preset_id != curr_preset_id && preset_id <= PRESETS_COUNT - 1){ // change preset only if the new one is different from the previous ande if is defined in the preset array DEBUGFN("CHANGING preset"); load_preset( preset_id ); // set the new preset id value - curr_preset = preset_id; + curr_preset_id = preset_id; // save it in memory eep_store_curr_preset_id(); - DEBUGFN( NAMEDVALUE(curr_preset) ); + DEBUGFN( NAMEDVALUE(curr_preset_id) ); } else{ DEBUGFN("CAN'T CHANGE preset: preset location empty"); @@ -677,7 +712,7 @@ void sendMidi( int type, byte parameter, byte value, byte control, byte channel) usbMIDI.sendProgramChange(value, channel); break; case TP_SX: // SysEx - if (curr_preset == 0) { + if (curr_preset_id == 0) { /** * è il preset per Roland FA 06/07/08 */ @@ -790,19 +825,19 @@ void MidiMerge(){ if (STATUS == BTN_PRST_STATUS) { - byte midiLedStatus = bitRead(ledState[BTN_PRST_STATUS], BTN_PRST_START + 1 + curr_preset ); + byte midiLedStatus = bitRead(ledState[BTN_PRST_STATUS], BTN_PRST_START + 1 + curr_preset_id ); //DEBUGFN( NAMEDVALUE(midiLedStatus) ); if (midiLedStatus != 0 && midi_activity ){ - setBtnLedState(BTN_PRST_STATUS, BTN_PRST_START + curr_preset, 0); + setBtnLedState(BTN_PRST_STATUS, BTN_PRST_START + curr_preset_id, 0); led_midi_on_time = millis(); // midi_activity = false; } if( (millis()-led_midi_on_time > 100) && (midiLedStatus == 0) ){ - // digitalWriteFast(BTN_PRST_START + 1 + curr_preset, 1); + // digitalWriteFast(BTN_PRST_START + 1 + curr_preset_id, 1); // DEBUGFN( "activity off" ); - setBtnLedState(BTN_PRST_STATUS, BTN_PRST_START + curr_preset, 1); + setBtnLedState(BTN_PRST_STATUS, BTN_PRST_START + curr_preset_id, 1); } } } @@ -817,14 +852,14 @@ byte eep_read_curr_preset_id(){ void eep_store_curr_preset_id(){ // Write a byte in EEPROM memory. - DEBUGFN(NAMEDVALUE(curr_preset)); - eeprom.writeByte(ACTIVE_PRST_ID_ADDR, curr_preset); + DEBUGFN(NAMEDVALUE(curr_preset_id)); + eeprom.writeByte(ACTIVE_PRST_ID_ADDR, curr_preset_id); delay(10); } void eep_load_preset_params( byte preset_id ){ for (byte st = 0; st < CONTROLS_NUM; st++){ - for (byte te = 0; te < 18; te++) { + for (byte te = 0; te < PARAMS_NUM_PER_CTRL; te++) { preset[st][te] = PRESETS[preset_id ][st][te]; } } From 10a331ed3bd192c09665e0362d6032dc6e8e85d2 Mon Sep 17 00:00:00 2001 From: Stefano Date: Sun, 1 Mar 2020 09:52:21 +0100 Subject: [PATCH 09/26] marked Version with the branch name --- .../D9-drawbars-controller.ino | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index d31c10d..a66a270 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -1,7 +1,7 @@ /* D9 programmable drawbars controller - ver 1.3.6 + ver 1.3.6 - 24C64-design Created 2018 By Stefano Garuti stefano@garuti.it @@ -30,7 +30,7 @@ #include "Debug.hpp" // https://github.com/tttapa/Arduino-Debugging /* ************************************************************************ - * Instatiate the I2C eeprom + * Instatiate the I2C eeprom */ #define EEPROM_ADDRESS 0x51 static Eeprom24C32_64 eeprom(EEPROM_ADDRESS); @@ -112,7 +112,7 @@ const byte PARAMS_NUM_PER_CTRL = 6 * STATUSES_COUNT; const byte TP_SX = 2; // System Exclusive const byte TP_ON = 3; // Note on const byte TP_PC = 4; // Program Change - + /* 2) the command parameter (CC number, or Note number, or SySEx parameter etc...) 3) the min value to send out @@ -182,7 +182,7 @@ const byte PRESETS[][CONTROLS_NUM][PARAMS_NUM_PER_CTRL]= byte preset[CONTROLS_NUM][PARAMS_NUM_PER_CTRL]={}; const byte PRESETS_COUNT = sizeof(PRESETS) / sizeof(PRESETS[0]); -byte curr_preset_id; // the currennt selected preset. +byte curr_preset_id; // the currennt selected preset. /* ************************************************************************* * Drawbars initialization @@ -258,10 +258,10 @@ void setup() { Serial.begin(38400); MIDI.begin(MIDI_CHANNEL_OMNI); - + // Initialize EEPROM library. eeprom.initialize(); - + // set ALT button as input Pullup and attach debouncer pinMode(BTN_ALT, INPUT_PULLUP); btn_alt.attach(BTN_ALT); @@ -303,17 +303,17 @@ void setup() byte im_resetting = false; while (btn_alt.read() == 0){ led.digitalWrite(0, 1); // turn on the ALT_BTN - + //now blink btn[6] if( millis()-reset_btn_on_time > 200 && !im_resetting ){ led.digitalWrite(7, !reset_btn_led); reset_btn_led = !reset_btn_led; reset_btn_on_time = millis(); } - + btn_alt.update(); // does the ALT button chaged? btn[6].update(); // does the Reset button changed? - + if (btn[6].fell()){ // the reset button was pressed: let's start the reset procedure DEBUGFN("factory restore should go here"); led.digitalWrite(7, HIGH); //keep the led to signal that the reset procedure is starting @@ -358,7 +358,7 @@ void load_preset( byte preset_id ){ DEBUGFN(NAMEDVALUE(btn_scanned)); setBtnLedState(BTN_PRST_STATUS, old_preset_led, 0); setBtnLedState(BTN_PRST_STATUS, btn_scanned, !btn_state[BTN_PRST_STATUS][btn_scanned]); - + // reset all data DEBUGFN("Reset btns and leds data"); // SET al buttons to 0 @@ -863,5 +863,5 @@ void eep_load_preset_params( byte preset_id ){ preset[st][te] = PRESETS[preset_id ][st][te]; } } - + } From 6e313f85c524247c7e976636405e51f9fb40d175 Mon Sep 17 00:00:00 2001 From: Stefano Date: Sun, 1 Mar 2020 18:18:54 +0100 Subject: [PATCH 10/26] Copy fatory presets from ROM to EEPROM and load them from EEPROM on preset change --- .../D9-drawbars-controller.ino | 61 ++++++++++++++++--- 1 file changed, 52 insertions(+), 9 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index a66a270..5a499a4 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -34,7 +34,8 @@ */ #define EEPROM_ADDRESS 0x51 static Eeprom24C32_64 eeprom(EEPROM_ADDRESS); -const word ACTIVE_PRST_ID_ADDR = 0; +const word EEP_ACTIVE_PRST_ID_ADDR = 0; +const word EEP_PRSTS_START_ADDR = 10; // we let some byte free just in case we need to stroe other small pieces of global configuration... /* ************************************************************************* @@ -183,6 +184,7 @@ byte preset[CONTROLS_NUM][PARAMS_NUM_PER_CTRL]={}; const byte PRESETS_COUNT = sizeof(PRESETS) / sizeof(PRESETS[0]); byte curr_preset_id; // the currennt selected preset. +const int EEP_PARAMS_SPACE_SIZE = PRESETS_COUNT * CONTROLS_NUM * PARAMS_NUM_PER_CTRL; /* ************************************************************************* * Drawbars initialization @@ -296,11 +298,15 @@ void setup() btnAlt_released = 1; // To reset to factory presets keep pressed the ALT button while turning on the device - // then press the "leslie fast" button + // then press the "leslie fast" button (the last one on the right) btn_alt.update(); long reset_btn_on_time = millis(); byte reset_btn_led = 1; byte im_resetting = false; + + int counter = 0; + //byte parameter[EEP_PARAMS_SPACE_SIZE] = {}; + while (btn_alt.read() == 0){ led.digitalWrite(0, 1); // turn on the ALT_BTN @@ -315,13 +321,34 @@ void setup() btn[6].update(); // does the Reset button changed? if (btn[6].fell()){ // the reset button was pressed: let's start the reset procedure - DEBUGFN("factory restore should go here"); - led.digitalWrite(7, HIGH); //keep the led to signal that the reset procedure is starting - im_resetting = true; //don't blonk animore + //DEBUGFN("factory restore should go here"); + led.digitalWrite(7, HIGH); //keep the led on to signal that the reset procedure is starting + im_resetting = true; //don't blink animore + + /* ************************************** * TODO: Write the presets to the eprom + * 1: read the hardcoded presets + * 2: put them on the eeprom */ + for(byte prs = 0; prs < PRESETS_COUNT; prs++){ + for (byte st = 0; st < CONTROLS_NUM; st++){ + for (byte te = 0; te < PARAMS_NUM_PER_CTRL; te++) { + //parameter[counter] = PRESETS[prs][st][te]; + eeprom.writeByte(EEP_PRSTS_START_ADDR + counter, PRESETS[prs][st][te]); + //NAMEDVALUE(EEP_PRSTS_START_ADDR + counter) + //NAMEDVALUE(PRESETS[prs][st][te]) + counter++; + } + } + } + // write it + //eeprom.writeBytes(EEP_PRSTS_START_ADDR, EEP_PARAMS_SPACE_SIZE, parameter); + + // turn the led off when the write procedure finish + led.digitalWrite(7, LOW); + //im_resetting = true; //don't blink animore } } @@ -372,6 +399,7 @@ void load_preset( byte preset_id ){ // setVibchoType( btn_default[7][ST_ALT] ); eep_load_preset_params( preset_id ); // Load the preset's parameters + //NAMEDVALUE(preset); // Check if the pedal is aliased if( preset[BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MIN ] == 0 && preset[BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + MAX ] == 0 && preset[BTN_PED+BTN_IDX_START][STATUS_IDX[ST_UP] + CHAN ] == 0){ @@ -845,7 +873,7 @@ void MidiMerge(){ // Return a byte with the last active preset byte eep_read_curr_preset_id(){ // Read a byte at address 0 in EEPROM memory. - byte data = eeprom.readByte(ACTIVE_PRST_ID_ADDR); + byte data = eeprom.readByte(EEP_ACTIVE_PRST_ID_ADDR); DEBUGFN(NAMEDVALUE(data)); return data; } @@ -853,15 +881,30 @@ byte eep_read_curr_preset_id(){ void eep_store_curr_preset_id(){ // Write a byte in EEPROM memory. DEBUGFN(NAMEDVALUE(curr_preset_id)); - eeprom.writeByte(ACTIVE_PRST_ID_ADDR, curr_preset_id); + eeprom.writeByte(EEP_ACTIVE_PRST_ID_ADDR, curr_preset_id); delay(10); } void eep_load_preset_params( byte preset_id ){ + + // Read the whole preset's memory space + int single_param_space_size = CONTROLS_NUM * PARAMS_NUM_PER_CTRL; + //byte parameters[single_param_space_size] = {0}; + int address = EEP_PRSTS_START_ADDR + (preset_id * single_param_space_size); + + int counter = 0; + + //eeprom.readBytes(address, single_param_space_size, parameters); + + // Assign the bytes to the preset matrix; for (byte st = 0; st < CONTROLS_NUM; st++){ for (byte te = 0; te < PARAMS_NUM_PER_CTRL; te++) { - preset[st][te] = PRESETS[preset_id ][st][te]; + // preset[st][te] = PRESETS[preset_id ][st][te]; + preset[st][te] = eeprom.readByte( address + counter ); + Serial.print(preset[st][te]); + + // preset[st][te] = parameters[counter]; + counter++; } } - } From 730c201d5edea1bc510365ef07e9986308d68739 Mon Sep 17 00:00:00 2001 From: Stefano Date: Tue, 3 Mar 2020 19:05:50 +0100 Subject: [PATCH 11/26] Merge the new eeprom management --- .../D9-drawbars-controller.ino | 90 +++++++++++++++++-- 1 file changed, 83 insertions(+), 7 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 4e9988c..7a4817e 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -288,12 +288,59 @@ void setup() OLD_STATUS = ST_LOW; btnAlt_released = 1; - // load the default preset - for (byte btn_scanned = BTN_PRST_START; btn_scanned < (BTN_PRST_COUNT + BTN_PRST_START); btn_scanned++) { - if( 0 != btn_default[btn_scanned][BTN_PRST_STATUS] ){ - changePreset( btn_scanned ); - break; - } + Serial.print('Version eeprom'); + // To reset to factory presets keep pressed the ALT button while turning on the device + // then press the "leslie fast" button (the last one on the right) + btn_alt.update(); + long reset_btn_on_time = millis(); + byte reset_btn_led = 1; + byte im_resetting = false; + + int counter = 0; + //byte parameter[EEP_PARAMS_SPACE_SIZE] = {}; + + while (btn_alt.read() == 0){ + led.digitalWrite(0, 1); // turn on the ALT_BTN + + //now blink btn[6] + if( millis()-reset_btn_on_time > 200 && !im_resetting ){ + led.digitalWrite(7, !reset_btn_led); + reset_btn_led = !reset_btn_led; + reset_btn_on_time = millis(); + } + + btn_alt.update(); // does the ALT button chaged? + btn[6].update(); // does the Reset button changed? + + if (btn[6].fell()){ // the reset button was pressed: let's start the reset procedure + //DEBUGFN("factory restore should go here"); + led.digitalWrite(7, HIGH); //keep the led on to signal that the reset procedure is starting + im_resetting = true; //don't blink animore + + + + /* ************************************** + * TODO: Write the presets to the eprom + * 1: read the hardcoded presets + * 2: put them on the eeprom + */ + for(byte prs = 0; prs < PRESETS_COUNT; prs++){ + for (byte st = 0; st < CONTROLS_NUM; st++){ + for (byte te = 0; te < PARAMS_NUM_PER_CTRL; te++) { + //parameter[counter] = PRESETS[prs][st][te]; + eeprom.writeByte(EEP_PRSTS_START_ADDR + counter, PRESETS[prs][st][te]); + //NAMEDVALUE(EEP_PRSTS_START_ADDR + counter) + //NAMEDVALUE(PRESETS[prs][st][te]) + counter++; + } + } + } + // write it + //eeprom.writeBytes(EEP_PRSTS_START_ADDR, EEP_PARAMS_SPACE_SIZE, parameter); + + // turn the led off when the write procedure finish + led.digitalWrite(7, LOW); + //im_resetting = true; //don't blink animore } syncAnalogData(); @@ -792,7 +839,7 @@ void MidiMerge(){ } else { // TODO: intercept the sysex specific for this devices - + // SysEx messages are special. The message length is given in data1 & data2 unsigned int SysExLength = data1 + data2 * 256; MIDI.sendSysEx(SysExLength, usbMIDI.getSysExArray(), true); @@ -823,4 +870,33 @@ void MidiMerge(){ } +void eep_store_curr_preset_id(){ + // Write a byte in EEPROM memory. + DEBUGFN(NAMEDVALUE(curr_preset_id)); + eeprom.writeByte(EEP_ACTIVE_PRST_ID_ADDR, curr_preset_id); + delay(10); + } + +void eep_load_preset_params( byte preset_id ){ + + // Read the whole preset's memory space + int single_param_space_size = CONTROLS_NUM * PARAMS_NUM_PER_CTRL; + //byte parameters[single_param_space_size] = {0}; + int address = EEP_PRSTS_START_ADDR + (preset_id * single_param_space_size); + + int counter = 0; + + //eeprom.readBytes(address, single_param_space_size, parameters); + + // Assign the bytes to the preset matrix; + for (byte st = 0; st < CONTROLS_NUM; st++){ + for (byte te = 0; te < PARAMS_NUM_PER_CTRL; te++) { + // preset[st][te] = PRESETS[preset_id ][st][te]; + preset[st][te] = eeprom.readByte( address + counter ); + // Serial.print(preset[st][te]); + + // preset[st][te] = parameters[counter]; + counter++; + } + } } From 1887353fd0da08dffc98fc4f6ee86513aec36411 Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 5 Mar 2020 18:57:55 +0100 Subject: [PATCH 12/26] Update .gitgnore to ignore some KiCAD files --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index b578fdf..d0a5063 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ *.hex *.bak +*.csv +*.tsv +*.xml +fp-info-cache From 1afa4f0e8555002f7a2253ef898fb78bd192c7f5 Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 5 Mar 2020 18:58:30 +0100 Subject: [PATCH 13/26] Implement a rought sysex config protocol --- .../D9-drawbars-controller.ino | 91 +++++++++++++++++-- 1 file changed, 84 insertions(+), 7 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 7a4817e..25fa97f 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -15,6 +15,10 @@ * reduce code repetition when controlling for IS_GLOBAL and IS_ALL in both analog and digital input * */ +const byte VERSION_MAJOR = 0; +const byte VERION_MINOR = 1; +const byte VERSION_PATCH = 0; + #include #include #include // https://github.com/thomasfredericks/Bounce2/wiki @@ -22,10 +26,44 @@ #include #define PRINTSTREAM_FALLBACK -//S #define DEBUG_OUT Serial +#define DEBUG_OUT Serial #include "Debug.hpp" // https://github.com/tttapa/Arduino-Debugging -String version = "1.3.5-sysEx"; + +/* ************************************************************************ + * SysEX implementation + * + * Format for the requests and the reply: + * F0 X_MANID1 X_MANID2 X_PRODID ACTION OBJECT vv F7 + */ +const uint8_t X_MANID1 = 0x37; // Manufacturer ID 1 +const uint8_t X_MANID2 = 0x72; // Manufacturer ID 2 +const uint8_t X_PRODID = 0x09; // Product ID + +/* + * Where ACTION is + */ +const uint8_t X_REQ = 0x00; // Request +const uint8_t X_REP = 0x01; // Replay + + /* + * Where OBJECT is: + */ +const uint8_t X_FW_VER = 0x01; // Firmware version. Replay vv is VERSION_MAJOR VERSION_MINOR VERSION_PATCH. +const uint8_t X_ACTIVE_PRESET = 0x02; // The active preset. Replay vv is byte) Active preset id [0-3]. +const uint8_t X_CTRL_INFO = 0x03; // Reply with info about the controls: 1) Number of presets slots (PRESETS_COUNT), 2) Buttons number (BTN_COUNT), 3) Drawbars number (DRWB_COUNT) + +const uint8_t X_REQ_CTRL_PARAMS = 0x10; // Current settings for a control: PRESET_ID CTRL_ID. Reply vv is: PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_Behaviour LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_Behaviour ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_Behaviour +const uint8_t X_SET_CTRL_PARAMS = 0x11; // Send the settings for a control (but doesn't save it): PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_Behaviour LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_Behaviour ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_Behaviour. Reply vv is 0 if is all right, an Error code if something went wrog + +const uint8_t X_CMD_SAVE_PRESET= 0x7F; // Save the Preset to the non volative memory: vv is PRESET_ID. Reply vv is 0 if all went ok, an error code if someting wen wrong + +/* + * REPLY CODES + */ + const uint8_t X_OK = 0x00; + const uint8_t X_ERROR = 0x01; // Something went wrong + /* ************************************************************************* * Pins assign */ @@ -546,12 +584,12 @@ void getAnalogData() { analogData[drwb_scanned] = drwb[drwb_scanned].getValue() >> 3; if (analogData[drwb_scanned] != analogDataLag[drwb_scanned]) { analogDataLag[drwb_scanned] = analogData[drwb_scanned]; - DEBUGFN( "DWB changed: " ); - DEBUGVAL(drwb_scanned,analogData[drwb_scanned]); + //DEBUGFN( "DWB changed: " ); + //DEBUGVAL(drwb_scanned,analogData[drwb_scanned]); // check if this drawbar is dedicated to the VIB/CHO control if ( STATUS == VIBCHO_SEL_STATUS && drwb_scanned == VIBCHO_SEL_DRWB ){ - DEBUGFN("This DWB controls VIBCHO selection"); + //DEBUGFN("This DWB controls VIBCHO selection"); setVibchoType( analogData[drwb_scanned] ); } else{ @@ -716,8 +754,8 @@ void getDigitalData() { void sendMidi( int type, byte parameter, byte value, byte control, byte channel) { - DEBUGFN("Send midi"); - DEBUGVAL(type,parameter,value,control); + //DEBUGFN("Send midi"); + //DEBUGVAL(type,parameter,value,control); int SysexLenght = 0; switch (type) { case TP_ON: // Note On @@ -837,12 +875,51 @@ void MidiMerge(){ midi::MidiType mtype = (midi::MidiType)type; MIDI.send(mtype, data1, data2, channel); } else { +<<<<<<< Updated upstream // TODO: intercept the sysex specific for this devices // SysEx messages are special. The message length is given in data1 & data2 unsigned int SysExLength = data1 + data2 * 256; MIDI.sendSysEx(SysExLength, usbMIDI.getSysExArray(), true); +======= + // we received SysEx + uint8_t* sysex_message = usbMIDI.getSysExArray(); + DEBUGVAL(sysex_message[1]) ; + DEBUGVAL(sysex_message[2]) ; + DEBUGVAL(sysex_message[3]) ; + + if ( sysex_message[1] == X_MANID1 && sysex_message[2] == X_MANID2 && sysex_message[3] == X_PRODID2 && sysex_message[4] == X_REQ){ + // The SysEx is for internal use of Drawbar Commander + DEBUGFN("SYSEX for us ;-) "); + DEBUGVAL(sysex_message[5]) ; + switch( sysex_message[5]){ + case X_FW_VER: // request version + uint8_t rp[8] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_FW_VER, VERSION_MAJOR, VERION_MINOR, VERSION_PATCH }; + usbMIDI.sendSysEx(8, rp, false); + break; + case X_ACTIVE_PRESET: // request active preset + uint8_t rp[6] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_ACTIVE_PRESET, curr_preset }; + usbMIDI.sendSysEx(6, rp, false); + break; + case X_REQ_CTRL_PARAMS: // request active preset + var preset_id = sysex_message[6]; + var control_id = sysex_message[7]; + + uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_REQ_CTRL_PARAMS, preset_id, control_id}; + for (byte ctrl = 0; ctrl < CONTROLS_NUM; ctrl++) { + rp[8+ctrl] = PRESETS[preset_id][control_id][ctrl]; + } + usbMIDI.sendSysEx(7 + CONTROLS_NUM, rp, false); + break; + } + } + else{ + // SysEx messages are special. The message length is given in data1 & data2 + unsigned int SysExLength = data1 + data2 * 256; + MIDI.sendSysEx(SysExLength, usbMIDI.getSysExArray(), true); + } +>>>>>>> Stashed changes } //DEBUGFN( NAMEDVALUE(type) ); if (type != usbMIDI.ActiveSensing && type != 255) { From 60e2793586cb732db734d5e108a06b5c2928ff9e Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 5 Mar 2020 19:39:11 +0100 Subject: [PATCH 14/26] try to update version --- .../D9-drawbars-controller.ino | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index b63c6a0..15a4729 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -2,7 +2,7 @@ D9 programmable drawbars controller - ver 1.3.6 - 24C64-design + ver 1.3.6 - sysex config Created 2018 By Stefano Garuti stefano@garuti.it @@ -18,10 +18,10 @@ /* TODO * reduce code repetition when controlling for IS_GLOBAL and IS_ALL in both analog and digital input * */ - -const byte VERSION_MAJOR = 0; -const byte VERION_MINOR = 1; -const byte VERSION_PATCH = 0; +String version = "1.3.6-sysEx"; +const byte VERSION_MAJOR = 1; +const byte VERION_MINOR = 3; +const byte VERSION_PATCH = 6; #include #include // https://github.com/jlesech/Eeprom24C32_64 @@ -68,7 +68,7 @@ const uint8_t X_CMD_SAVE_PRESET= 0x7F; // Save the Preset to the non volative me */ const uint8_t X_OK = 0x00; const uint8_t X_ERROR = 0x01; // Something went wrong -String version = "1.3.5-sysEx"; + /* ************************************************************************ * Instatiate the I2C eeprom From 863271724401048cd16a17d9d5e4aa7bf2c0397c Mon Sep 17 00:00:00 2001 From: Stefano Date: Fri, 6 Mar 2020 13:50:27 +0100 Subject: [PATCH 15/26] Fix some errors: now it sends the sysex requested --- .../D9-drawbars-controller.ino | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 15a4729..f1fe644 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -923,28 +923,34 @@ void MidiMerge(){ DEBUGVAL(sysex_message[2]) ; DEBUGVAL(sysex_message[3]) ; - if ( sysex_message[1] == X_MANID1 && sysex_message[2] == X_MANID2 && sysex_message[3] == X_PRODID2 && sysex_message[4] == X_REQ){ + if ( sysex_message[1] == X_MANID1 && sysex_message[2] == X_MANID2 && sysex_message[3] == X_PRODID && sysex_message[4] == X_REQ){ // The SysEx is for internal use of Drawbar Commander DEBUGFN("SYSEX for us ;-) "); DEBUGVAL(sysex_message[5]) ; switch( sysex_message[5]){ case X_FW_VER: // request version + { uint8_t rp[8] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_FW_VER, VERSION_MAJOR, VERION_MINOR, VERSION_PATCH }; - usbMIDI.sendSysEx(8, rp, false); + usbMIDI.sendSysEx(8, rp, false); + } break; case X_ACTIVE_PRESET: // request active preset - uint8_t rp[6] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_ACTIVE_PRESET, curr_preset }; - usbMIDI.sendSysEx(6, rp, false); + { + uint8_t rp[6] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_ACTIVE_PRESET, curr_preset_id }; + usbMIDI.sendSysEx(6, rp, false); + } break; case X_REQ_CTRL_PARAMS: // request active preset - var preset_id = sysex_message[6]; - var control_id = sysex_message[7]; - - uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_REQ_CTRL_PARAMS, preset_id, control_id}; - for (byte ctrl = 0; ctrl < CONTROLS_NUM; ctrl++) { - rp[8+ctrl] = PRESETS[preset_id][control_id][ctrl]; - } - usbMIDI.sendSysEx(7 + CONTROLS_NUM, rp, false); + { + //byte preset_id = sysex_message[6]; + // byte control_id = sysex_message[7]; + + // uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_REQ_CTRL_PARAMS, preset_id, control_id}; + // for (byte ctrl = 0; ctrl < CONTROLS_NUM; ctrl++) { + // rp[8+ctrl] = PRESETS[preset_id][control_id][ctrl]; + // } + // usbMIDI.sendSysEx(7 + CONTROLS_NUM, rp, false); + } break; } } From 6e9f6b96225bdf7e7d919f8dbdea96a478d83eaa Mon Sep 17 00:00:00 2001 From: Stefano Date: Fri, 6 Mar 2020 16:36:43 +0100 Subject: [PATCH 16/26] Implement replay to X_REQ_CTRL_PARAMS --- .../D9-drawbars-controller.ino | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index f1fe644..8d803b6 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -152,8 +152,8 @@ const byte PARAMS_NUM_PER_CTRL = 6 * STATUSES_COUNT; const byte TP_NO = 0; // Disabled const byte TP_CC = 1; // Control Change const byte TP_SX = 2; // System Exclusive - const byte TP_ON = 3; // Note on - const byte TP_PC = 4; // Program Change + const byte TP_ON = 3; // Note on + const byte TP_PC = 4; // Program Change /* 2) the command parameter (CC number, or Note number, or SySEx parameter etc...) @@ -163,7 +163,7 @@ const byte PARAMS_NUM_PER_CTRL = 6 * STATUSES_COUNT; */ const byte IS_GLOBAL = 1; // if the control sends always the same value both in Upper that in Lower state (sends what's set in the Upper one) const byte SEND_BOTH = 2; // send the value set in this STATUS to both the Upper and Lower channels - const byte IS_TOGGLE = 4; // is a pushbutton (momentary) or is toggle? + const byte IS_TOGGLE = 4; // is a pushbutton (momentary) or is toggle? /* We can set the Pedal Switch as an alias of another button (i.e. when we press the pedal, the script acts as we pressed the associated button: sends out the buttons values and turn on/off the respective LED ) @@ -942,14 +942,19 @@ void MidiMerge(){ break; case X_REQ_CTRL_PARAMS: // request active preset { - //byte preset_id = sysex_message[6]; - // byte control_id = sysex_message[7]; - - // uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_REQ_CTRL_PARAMS, preset_id, control_id}; - // for (byte ctrl = 0; ctrl < CONTROLS_NUM; ctrl++) { - // rp[8+ctrl] = PRESETS[preset_id][control_id][ctrl]; - // } - // usbMIDI.sendSysEx(7 + CONTROLS_NUM, rp, false); + byte preset_id = sysex_message[6]; + byte control_id = sysex_message[7]; + + uint8_t rp[7+PARAMS_NUM_PER_CTRL] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_REQ_CTRL_PARAMS, preset_id, control_id}; + + int single_param_space_size = CONTROLS_NUM * PARAMS_NUM_PER_CTRL; + int address = EEP_PRSTS_START_ADDR + (preset_id * single_param_space_size) + (control_id * PARAMS_NUM_PER_CTRL); + + for (byte te = 0; te <= PARAMS_NUM_PER_CTRL; te++) { + rp[7+te] = eeprom.readByte( address + te ); + } + + usbMIDI.sendSysEx(7 + CONTROLS_NUM, rp, false); } break; } From 5b66e3e0c49f85d7ba1dd3cf906fed7d430ff63d Mon Sep 17 00:00:00 2001 From: Stefano Date: Fri, 6 Mar 2020 17:40:49 +0100 Subject: [PATCH 17/26] Update the version number of the branch --- .../D9-drawbars-controller/D9-drawbars-controller.ino | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 8d803b6..e8ea3d1 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -2,7 +2,7 @@ D9 programmable drawbars controller - ver 1.3.6 - sysex config + ver 0.1.2 - sysex config Created 2018 By Stefano Garuti stefano@garuti.it @@ -18,10 +18,9 @@ /* TODO * reduce code repetition when controlling for IS_GLOBAL and IS_ALL in both analog and digital input * */ -String version = "1.3.6-sysEx"; -const byte VERSION_MAJOR = 1; -const byte VERION_MINOR = 3; -const byte VERSION_PATCH = 6; +const byte VERSION_MAJOR = 0; +const byte VERION_MINOR = 1; +const byte VERSION_PATCH = 2; #include #include // https://github.com/jlesech/Eeprom24C32_64 @@ -31,7 +30,7 @@ const byte VERSION_PATCH = 6; #include #define PRINTSTREAM_FALLBACK -#define DEBUG_OUT Serial +// #define DEBUG_OUT Serial #include "Debug.hpp" // https://github.com/tttapa/Arduino-Debugging From 18d799794d1926136055fa4ea13b4d337afbc073 Mon Sep 17 00:00:00 2001 From: Stefano Date: Mon, 9 Mar 2020 15:24:54 +0100 Subject: [PATCH 18/26] Update the sys_ex implementation --- .../D9-drawbars-controller.ino | 134 ++++++++++++++---- 1 file changed, 108 insertions(+), 26 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index e8ea3d1..69f7673 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -2,7 +2,7 @@ D9 programmable drawbars controller - ver 0.1.2 - sysex config + ver 0.1.4 - sysex config Created 2018 By Stefano Garuti stefano@garuti.it @@ -20,7 +20,7 @@ * */ const byte VERSION_MAJOR = 0; const byte VERION_MINOR = 1; -const byte VERSION_PATCH = 2; +const byte VERSION_PATCH = 4; #include #include // https://github.com/jlesech/Eeprom24C32_64 @@ -30,15 +30,17 @@ const byte VERSION_PATCH = 2; #include #define PRINTSTREAM_FALLBACK -// #define DEBUG_OUT Serial +//#define DEBUG_OUT Serial #include "Debug.hpp" // https://github.com/tttapa/Arduino-Debugging /* ************************************************************************ * SysEX implementation * - * Format for the requests and the reply: - * F0 X_MANID1 X_MANID2 X_PRODID ACTION OBJECT vv F7 + * Format for the requests : + * F0 X_MANID1 X_MANID2 X_PRODID X_REQ COOMAND vv F7 + * Format for the reply + * F0 X_MANID1 X_MANID2 X_PRODID X_REP OBJECT (Reply COdes) vv F7 */ const uint8_t X_MANID1 = 0x37; // Manufacturer ID 1 const uint8_t X_MANID2 = 0x72; // Manufacturer ID 2 @@ -51,7 +53,7 @@ const uint8_t X_REQ = 0x00; // Request const uint8_t X_REP = 0x01; // Replay /* - * Where OBJECT is: + * Where COMMAND is: */ const uint8_t X_FW_VER = 0x01; // Firmware version. Replay vv is VERSION_MAJOR VERSION_MINOR VERSION_PATCH. const uint8_t X_ACTIVE_PRESET = 0x02; // The active preset. Replay vv is byte) Active preset id [0-3]. @@ -59,15 +61,22 @@ const uint8_t X_CTRL_INFO = 0x03; // Reply with info about the controls: 1) Nu const uint8_t X_REQ_CTRL_PARAMS = 0x10; // Current settings for a control: PRESET_ID CTRL_ID. Reply vv is: PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_Behaviour LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_Behaviour ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_Behaviour const uint8_t X_SET_CTRL_PARAMS = 0x11; // Send the settings for a control (but doesn't save it): PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_Behaviour LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_Behaviour ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_Behaviour. Reply vv is 0 if is all right, an Error code if something went wrog - +const uint8_t X_SET_PARAM = 0x12; //Send a setting for a single parameter (but doesn't save it): PRESET_ID CTRL_ID PARAM_ID (0-18) param value; const uint8_t X_CMD_SAVE_PRESET= 0x7F; // Save the Preset to the non volative memory: vv is PRESET_ID. Reply vv is 0 if all went ok, an error code if someting wen wrong /* * REPLY CODES */ const uint8_t X_OK = 0x00; - const uint8_t X_ERROR = 0x01; // Something went wrong + const uint8_t X_ERROR = 0x7F; // Something went wrong +/* + * ERROR CODES + */ + const uint8_t X_ERROR_UNKNOWN = 0x7F; + const uint8_t X_ERROR_PRESET = 0x10; + const uint8_t X_ERROR_CONTROL = 0x20; + const uint8_t X_ERROR_PARAM = 0x30; /* ************************************************************************ * Instatiate the I2C eeprom @@ -918,9 +927,6 @@ void MidiMerge(){ } else { // we received SysEx uint8_t* sysex_message = usbMIDI.getSysExArray(); - DEBUGVAL(sysex_message[1]) ; - DEBUGVAL(sysex_message[2]) ; - DEBUGVAL(sysex_message[3]) ; if ( sysex_message[1] == X_MANID1 && sysex_message[2] == X_MANID2 && sysex_message[3] == X_PRODID && sysex_message[4] == X_REQ){ // The SysEx is for internal use of Drawbar Commander @@ -929,33 +935,109 @@ void MidiMerge(){ switch( sysex_message[5]){ case X_FW_VER: // request version { - uint8_t rp[8] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_FW_VER, VERSION_MAJOR, VERION_MINOR, VERSION_PATCH }; - usbMIDI.sendSysEx(8, rp, false); + uint8_t rp[9] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_FW_VER, X_OK, VERSION_MAJOR, VERION_MINOR, VERSION_PATCH }; + usbMIDI.sendSysEx(9, rp, false); } break; case X_ACTIVE_PRESET: // request active preset { - uint8_t rp[6] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_ACTIVE_PRESET, curr_preset_id }; - usbMIDI.sendSysEx(6, rp, false); + uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_ACTIVE_PRESET, X_OK, curr_preset_id }; + usbMIDI.sendSysEx(7, rp, false); } break; - case X_REQ_CTRL_PARAMS: // request active preset + case X_REQ_CTRL_PARAMS: // request the parameter for a control { - byte preset_id = sysex_message[6]; - byte control_id = sysex_message[7]; - - uint8_t rp[7+PARAMS_NUM_PER_CTRL] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_REQ_CTRL_PARAMS, preset_id, control_id}; + byte preset_id = sysex_message[6]; + byte control_id = sysex_message[7]; + + if( preset_id != curr_preset_id ){ + uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_REQ_CTRL_PARAMS, X_ERROR, X_ERROR_PRESET }; + usbMIDI.sendSysEx(7, rp, false); + } + else if(control_id > CONTROLS_NUM -1 ){ + uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_REQ_CTRL_PARAMS, X_ERROR, X_ERROR_CONTROL }; + usbMIDI.sendSysEx(7, rp, false); + } + else{ + uint8_t rp[8+PARAMS_NUM_PER_CTRL] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_REQ_CTRL_PARAMS, X_OK, preset_id, control_id}; - int single_param_space_size = CONTROLS_NUM * PARAMS_NUM_PER_CTRL; - int address = EEP_PRSTS_START_ADDR + (preset_id * single_param_space_size) + (control_id * PARAMS_NUM_PER_CTRL); + int single_param_space_size = CONTROLS_NUM * PARAMS_NUM_PER_CTRL; + int address = EEP_PRSTS_START_ADDR + (preset_id * single_param_space_size) + (control_id * PARAMS_NUM_PER_CTRL); - for (byte te = 0; te <= PARAMS_NUM_PER_CTRL; te++) { - rp[7+te] = eeprom.readByte( address + te ); - } + for (byte te = 0; te <= PARAMS_NUM_PER_CTRL; te++) { + rp[8+te] = eeprom.readByte( address + te ); + } - usbMIDI.sendSysEx(7 + CONTROLS_NUM, rp, false); + usbMIDI.sendSysEx(8 + PARAMS_NUM_PER_CTRL, rp, false); + } } break; + case X_SET_CTRL_PARAMS: // set the parameters for a control + // PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_Behaviour LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_Behaviour ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_Behaviour. Reply vv is 0 if is all right, an Error code if something went wrog + { + //TODO: validate the inputs + byte preset_id = sysex_message[6]; + byte control_id = sysex_message[7]; + if( preset_id != curr_preset_id ){ + uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_SET_CTRL_PARAMS, X_ERROR, X_ERROR_PRESET }; + usbMIDI.sendSysEx(7, rp, false); + } + else if(control_id > CONTROLS_NUM -1 ){ + uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_SET_CTRL_PARAMS, X_ERROR, X_ERROR_CONTROL }; + usbMIDI.sendSysEx(7, rp, false); + } + else{ + + for (byte pr = 8; pr <= PARAMS_NUM_PER_CTRL+8; pr++) { + preset[control_id][pr] = sysex_message[pr]; + } + + //reply + uint8_t rp[8+PARAMS_NUM_PER_CTRL] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_SET_CTRL_PARAMS, X_OK, preset_id, control_id}; + for (byte te = 0; te <= PARAMS_NUM_PER_CTRL; te++) { + rp[8+te] = preset[control_id][te]; + } + usbMIDI.sendSysEx(8 + PARAMS_NUM_PER_CTRL, rp, false); + } + + } + break; + case X_SET_PARAM: + // PRESET_ID CTRL_ID PARAM_ID (0-18) param value; + { + DEBUGVAL(PARAMS_NUM_PER_CTRL); + byte preset_id = sysex_message[6]; + byte control_id = sysex_message[7]; + byte param_id = sysex_message[8]; + byte param_value = sysex_message[9]; + DEBUGVAL(param_id); + if( preset_id != curr_preset_id ){ + uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_SET_PARAM, X_ERROR, X_ERROR_PRESET }; + usbMIDI.sendSysEx(7, rp, false); + } + else if(control_id > CONTROLS_NUM -1 ){ + uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_SET_PARAM, X_ERROR, X_ERROR_CONTROL }; + usbMIDI.sendSysEx(7, rp, false); + } + else if( param_id > PARAMS_NUM_PER_CTRL -1 ){ + uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_SET_PARAM, X_ERROR, X_ERROR_PARAM }; + + usbMIDI.sendSysEx(7, rp, false); + } + else{ + + //TODO: Validate param_value + preset[control_id][param_id] = param_value; + uint8_t rp[10] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_SET_PARAM, X_OK, preset_id, control_id, param_id, param_value }; + usbMIDI.sendSysEx(10, rp, false); + } + } + break; + case X_CMD_SAVE_PRESET: // save current preset + { + + } + break; } } else{ From 78a6de68d791914fec7b4e7e674cffd5101d67ec Mon Sep 17 00:00:00 2001 From: Stefano Date: Wed, 11 Mar 2020 17:21:23 +0100 Subject: [PATCH 19/26] remove unused code --- .../D9-drawbars-controller.ino | 26 +++---------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 69f7673..1218719 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -374,13 +374,6 @@ void setup() led.digitalWrite(7, HIGH); //keep the led on to signal that the reset procedure is starting im_resetting = true; //don't blink animore - - - /* ************************************** - * TODO: Write the presets to the eprom - * 1: read the hardcoded presets - * 2: put them on the eeprom - */ for(byte prs = 0; prs < PRESETS_COUNT; prs++){ for (byte st = 0; st < CONTROLS_NUM; st++){ for (byte te = 0; te < PARAMS_NUM_PER_CTRL; te++) { @@ -392,12 +385,11 @@ void setup() } } } - // write it - //eeprom.writeBytes(EEP_PRSTS_START_ADDR, EEP_PARAMS_SPACE_SIZE, parameter); + // turn the led off when the write procedure finish led.digitalWrite(7, LOW); - //im_resetting = true; //don't blink animore + } btn_alt.update(); // does the ALT button chaged? @@ -1089,24 +1081,14 @@ void eep_store_curr_preset_id(){ void eep_load_preset_params( byte preset_id ){ - // Read the whole preset's memory space int single_param_space_size = CONTROLS_NUM * PARAMS_NUM_PER_CTRL; - //byte parameters[single_param_space_size] = {0}; int address = EEP_PRSTS_START_ADDR + (preset_id * single_param_space_size); - int counter = 0; - //eeprom.readBytes(address, single_param_space_size, parameters); - - // Assign the bytes to the preset matrix; for (byte st = 0; st < CONTROLS_NUM; st++){ for (byte te = 0; te < PARAMS_NUM_PER_CTRL; te++) { - // preset[st][te] = PRESETS[preset_id ][st][te]; - preset[st][te] = eeprom.readByte( address + counter ); - Serial.print(preset[st][te]); - - // preset[st][te] = parameters[counter]; - counter++; + preset[st][te] = eeprom.readByte( address + counter ); + counter++; } } } From 58ef9ecdf6a02fdd4ef88e5c86e04be38ff48664 Mon Sep 17 00:00:00 2001 From: Stefano Date: Wed, 11 Mar 2020 17:58:20 +0100 Subject: [PATCH 20/26] implement X_CMD_SAVE_PRESET --- .../D9-drawbars-controller.ino | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 1218719..4c870f0 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -2,7 +2,7 @@ D9 programmable drawbars controller - ver 0.1.4 - sysex config + ver 0.1.5 - sysex config Created 2018 By Stefano Garuti stefano@garuti.it @@ -20,7 +20,7 @@ * */ const byte VERSION_MAJOR = 0; const byte VERION_MINOR = 1; -const byte VERSION_PATCH = 4; +const byte VERSION_PATCH = 5; #include #include // https://github.com/jlesech/Eeprom24C32_64 @@ -1027,7 +1027,17 @@ void MidiMerge(){ break; case X_CMD_SAVE_PRESET: // save current preset { - + byte preset_id = sysex_message[6]; + + if( preset_id != curr_preset_id ){ // if it's not for the current preset raise an error + uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_CMD_SAVE_PRESET, X_ERROR, X_ERROR_PRESET }; + usbMIDI.sendSysEx(7, rp, false); + } + else{ + eep_write_preset_params(preset_id); + uint8_t rp[7] = { X_MANID1, X_MANID2, X_PRODID, X_REP, X_CMD_SAVE_PRESET, X_OK, preset_id }; + usbMIDI.sendSysEx(7, rp, false); + } } break; } @@ -1092,3 +1102,17 @@ void eep_load_preset_params( byte preset_id ){ } } } + +void eep_write_preset_params( byte preset_id ){ + int single_param_space_size = CONTROLS_NUM * PARAMS_NUM_PER_CTRL; + int address = EEP_PRSTS_START_ADDR + (preset_id * single_param_space_size); + + int counter = 0; + + for (byte st = 0; st < CONTROLS_NUM; st++){ + for (byte te = 0; te < PARAMS_NUM_PER_CTRL; te++) { + eeprom.writeByte(address + counter, preset[st][te]); + counter++; + } + } +} From 9d0115502ab39754f3cb68c9a228858c1730caee Mon Sep 17 00:00:00 2001 From: Stefano Date: Fri, 13 Mar 2020 12:08:27 +0100 Subject: [PATCH 21/26] annotations --- Teensy/D9-drawbars-controller/D9-drawbars-controller.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 4c870f0..8a58412 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -73,10 +73,10 @@ const uint8_t X_CMD_SAVE_PRESET= 0x7F; // Save the Preset to the non volative me /* * ERROR CODES */ - const uint8_t X_ERROR_UNKNOWN = 0x7F; - const uint8_t X_ERROR_PRESET = 0x10; - const uint8_t X_ERROR_CONTROL = 0x20; - const uint8_t X_ERROR_PARAM = 0x30; + const uint8_t X_ERROR_UNKNOWN = 0x7F; //127 + const uint8_t X_ERROR_PRESET = 0x10; //16 + const uint8_t X_ERROR_CONTROL = 0x20; //32 + const uint8_t X_ERROR_PARAM = 0x30; //48 /* ************************************************************************ * Instatiate the I2C eeprom From 2257ac745586efe86b280e2a7260c15560f6e9d3 Mon Sep 17 00:00:00 2001 From: Stefano Date: Fri, 13 Mar 2020 15:29:32 +0100 Subject: [PATCH 22/26] typo --- .../D9-drawbars-controller.ino | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 8a58412..669aaff 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -59,8 +59,8 @@ const uint8_t X_FW_VER = 0x01; // Firmware version. Replay vv is VERSION_MAJO const uint8_t X_ACTIVE_PRESET = 0x02; // The active preset. Replay vv is byte) Active preset id [0-3]. const uint8_t X_CTRL_INFO = 0x03; // Reply with info about the controls: 1) Number of presets slots (PRESETS_COUNT), 2) Buttons number (BTN_COUNT), 3) Drawbars number (DRWB_COUNT) -const uint8_t X_REQ_CTRL_PARAMS = 0x10; // Current settings for a control: PRESET_ID CTRL_ID. Reply vv is: PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_Behaviour LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_Behaviour ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_Behaviour -const uint8_t X_SET_CTRL_PARAMS = 0x11; // Send the settings for a control (but doesn't save it): PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_Behaviour LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_Behaviour ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_Behaviour. Reply vv is 0 if is all right, an Error code if something went wrog +const uint8_t X_REQ_CTRL_PARAMS = 0x10; // Current settings for a control: PRESET_ID CTRL_ID. Reply vv is: PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_behavior LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_behavior ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_behavior +const uint8_t X_SET_CTRL_PARAMS = 0x11; // Send the settings for a control (but doesn't save it): PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_behavior LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_behavior ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_behavior. Reply vv is 0 if is all right, an Error code if something went wrog const uint8_t X_SET_PARAM = 0x12; //Send a setting for a single parameter (but doesn't save it): PRESET_ID CTRL_ID PARAM_ID (0-18) param value; const uint8_t X_CMD_SAVE_PRESET= 0x7F; // Save the Preset to the non volative memory: vv is PRESET_ID. Reply vv is 0 if all went ok, an error code if someting wen wrong @@ -167,7 +167,7 @@ const byte PARAMS_NUM_PER_CTRL = 6 * STATUSES_COUNT; 2) the command parameter (CC number, or Note number, or SySEx parameter etc...) 3) the min value to send out 4) the max value to sed out - 5) the button (and associated control command) behaviour: + 5) the button (and associated control command) behavior: */ const byte IS_GLOBAL = 1; // if the control sends always the same value both in Upper that in Lower state (sends what's set in the Upper one) const byte SEND_BOTH = 2; // send the value set in this STATUS to both the Upper and Lower channels @@ -187,7 +187,7 @@ const byte PARAMS_NUM_PER_CTRL = 6 * STATUSES_COUNT; */ const byte PRESETS[][CONTROLS_NUM][PARAMS_NUM_PER_CTRL]= {// UPPER LOWER ALTERNATE -{//PIN Type Prm Min Max Ch Behaviour Type Prm Min Max Ch Behaviour Type Prm Min Max Ch Behaviour +{//PIN Type Prm Min Max Ch behavior Type Prm Min Max Ch behavior Type Prm Min Max Ch behavior /*DWB1*/ {TP_SX, 0x2A, 0, 8, 1, 0, TP_SX, 0x2A, 0, 8, 2, 0, TP_CC, 16, 0, 127, 0, SEND_BOTH}, // DRIVE /*DWB1_13*/ {TP_SX, 0x29, 0, 8, 1, 0, TP_SX, 0x29, 0, 8, 2, 0, TP_CC, 91, 0, 127, 0, SEND_BOTH}, //REV LEVEL /*DWB1_35*/ {TP_SX, 0x28, 0, 8, 1, 0, TP_SX, 0x28, 0, 8, 2, 0, TP_NO, 0x00, 0, 8, 1, 0}, // rev size @@ -207,7 +207,7 @@ const byte PRESETS[][CONTROLS_NUM][PARAMS_NUM_PER_CTRL]= /*LSL_FAST*/ {TP_CC, 80, 0, 127, 1, IS_TOGGLE + SEND_BOTH, TP_CC, 80, 0, 127, 2, IS_TOGGLE + SEND_BOTH, TP_NO, 0, 0, 127, 0, 0}, // Rev OFF /*PED_SWITCH*/ {TP_ON, 6, 0, 0, 0, IS_TOGGLE + SEND_BOTH, TP_ON, 0, 0, 0, 0, 0, TP_ON, 0, 0, 0, 0, 0}, },// UPPER LOWER ALTERNATE -{//PIN Type Prm Min Max Ch Behaviour Type Prm Min Max Ch Behaviour Type Prm Min Max Ch Behaviour +{//PIN Type Prm Min Max Ch behavior Type Prm Min Max Ch behavior Type Prm Min Max Ch behavior /*DWB1*/ {TP_CC, 20, 0, 127, 1, 0, TP_CC, 29, 0, 127, 1, 0, TP_CC, 76, 0, 127, 1, 0}, // DRIVE /*DWB1_13*/ {TP_CC, 19, 0, 127, 1, 0, TP_CC, 28, 0, 127, 1, 0, TP_CC, 84, 0, 127, 1, 0}, // REV LEVEL /*DWB1_35*/ {TP_CC, 18, 0, 127, 1, 0, TP_CC, 105, 0, 127, 1, 0, TP_CC, 83, 0, 127, 1, 0}, // REV SIZE @@ -965,7 +965,7 @@ void MidiMerge(){ } break; case X_SET_CTRL_PARAMS: // set the parameters for a control - // PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_Behaviour LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_Behaviour ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_Behaviour. Reply vv is 0 if is all right, an Error code if something went wrog + // PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_behavior LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_behavior ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_behavior. Reply vv is 0 if is all right, an Error code if something went wrog { //TODO: validate the inputs byte preset_id = sysex_message[6]; From c681b24b870624561614a20031c458545d5bfce1 Mon Sep 17 00:00:00 2001 From: Stefano Date: Wed, 22 Apr 2020 18:06:05 +0200 Subject: [PATCH 23/26] Fix wrong sendMidi after merge from master. updated working version --- Teensy/D9-drawbars-controller/D9-drawbars-controller.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 64005f9..9370f8d 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -2,7 +2,7 @@ D9 programmable drawbars controller - ver 0.1.5 - sysex config + ver 0.1.6 - sysex config Created 2018 By Stefano Garuti stefano@garuti.it @@ -20,7 +20,7 @@ * */ const byte VERSION_MAJOR = 0; const byte VERION_MINOR = 1; -const byte VERSION_PATCH = 5; +const byte VERSION_PATCH = 6; #include #include // https://github.com/jlesech/Eeprom24C32_64 @@ -616,7 +616,7 @@ void setVibchoType( byte CCvalue ){ vibchoLedState = 0; // reset the leds bitWrite(vibchoLedState, vibcho_led_on, 1 ); } - sendMidi( PRESETS[curr_preset][VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +TYPE], PRESETS[curr_preset][VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +PARAM], CCvalue, VIBCHO_SEL_DRWB, PRESETS[curr_preset][VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +CHAN] ); + sendMidi( preset[VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +TYPE], preset[VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +PARAM], CCvalue, VIBCHO_SEL_DRWB, preset[VIBCHO_SEL_DRWB][STATUS_IDX[VIBCHO_SEL_STATUS] +CHAN] ); } From 47301a3bef30a3dcd5846cd214aa27bdad924440 Mon Sep 17 00:00:00 2001 From: Stefano Garuti Date: Thu, 23 Apr 2020 17:57:39 +0200 Subject: [PATCH 24/26] Draft SysEx implementation --- README.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/README.md b/README.md index 0b701c2..83b3ae1 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,54 @@ You can restore the presets factory defaults with the following procedure - **TODO: how to know when the restore finish?** - Now **release the *ALT* button**: the Commander will exit from the *Reset mode* and it's ready to perform using the default parameters. +## SysEX implementation +Since v. 2.0 the device has a full set of custom System Exclusive messages that you can use to can configure what kind of commands/codes every button and drawbar sends. + +An editor is already available to configure the device. You can find it here: https://github.com/garubi/Web-editor-for-MIDI-Drawbars-Commander + +Format for the requests: + +F0 X_MANID1 X_MANID2 X_PRODID X_REQ COOMAND vv F7 + +Format for the reply + +F0 X_MANID1 X_MANID2 X_PRODID X_REP OBJECT (Reply COdes) vv F7 + +const uint8_t X_MANID1 = 0x37; // Manufacturer ID 1 +const uint8_t X_MANID2 = 0x72; // Manufacturer ID 2 +const uint8_t X_PRODID = 0x09; // Product ID + +/* + * Where ACTION is + */ +const uint8_t X_REQ = 0x00; // Request +const uint8_t X_REP = 0x01; // Replay + + /* + * Where COMMAND is: + */ +const uint8_t X_FW_VER = 0x01; // Firmware version. Replay vv is VERSION_MAJOR VERSION_MINOR VERSION_PATCH. +const uint8_t X_ACTIVE_PRESET = 0x02; // The active preset. Replay vv is byte) Active preset id [0-3]. +const uint8_t X_CTRL_INFO = 0x03; // Reply with info about the controls: 1) Number of presets slots (PRESETS_COUNT), 2) Buttons number (BTN_COUNT), 3) Drawbars number (DRWB_COUNT) + +const uint8_t X_REQ_CTRL_PARAMS = 0x10; // Current settings for a control: PRESET_ID CTRL_ID. Reply vv is: PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_behavior LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_behavior ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_behavior +const uint8_t X_SET_CTRL_PARAMS = 0x11; // Send the settings for a control (but doesn't save it): PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_behavior LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_behavior ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_behavior. Reply vv is 0 if is all right, an Error code if something went wrog +const uint8_t X_SET_PARAM = 0x12; //Send a setting for a single parameter (but doesn't save it): PRESET_ID CTRL_ID PARAM_ID (0-18) param value; +const uint8_t X_CMD_SAVE_PRESET= 0x7F; // Save the Preset to the non volative memory: vv is PRESET_ID. Reply vv is 0 if all went ok, an error code if someting wen wrong + +/* + * REPLY CODES + */ + const uint8_t X_OK = 0x00; + const uint8_t X_ERROR = 0x7F; // Something went wrong + +/* + * ERROR CODES + */ + const uint8_t X_ERROR_UNKNOWN = 0x7F; //127 + const uint8_t X_ERROR_PRESET = 0x10; //16 + const uint8_t X_ERROR_CONTROL = 0x20; //32 + const uint8_t X_ERROR_PARAM = 0x30; //48 ## Changelog: - v. 1.3.6 Fix issue with the Vibrato selector (isssue #70) From 68d1702a5f07d548a1ea45a4a967163b94353d65 Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 23 Apr 2020 18:12:32 +0200 Subject: [PATCH 25/26] remove unused SysEX command from inline documentation --- Teensy/D9-drawbars-controller/D9-drawbars-controller.ino | 1 - 1 file changed, 1 deletion(-) diff --git a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino index 9370f8d..57a18e4 100644 --- a/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino +++ b/Teensy/D9-drawbars-controller/D9-drawbars-controller.ino @@ -57,7 +57,6 @@ const uint8_t X_REP = 0x01; // Replay */ const uint8_t X_FW_VER = 0x01; // Firmware version. Replay vv is VERSION_MAJOR VERSION_MINOR VERSION_PATCH. const uint8_t X_ACTIVE_PRESET = 0x02; // The active preset. Replay vv is byte) Active preset id [0-3]. -const uint8_t X_CTRL_INFO = 0x03; // Reply with info about the controls: 1) Number of presets slots (PRESETS_COUNT), 2) Buttons number (BTN_COUNT), 3) Drawbars number (DRWB_COUNT) const uint8_t X_REQ_CTRL_PARAMS = 0x10; // Current settings for a control: PRESET_ID CTRL_ID. Reply vv is: PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_behavior LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_behavior ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_behavior const uint8_t X_SET_CTRL_PARAMS = 0x11; // Send the settings for a control (but doesn't save it): PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_behavior LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_behavior ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_behavior. Reply vv is 0 if is all right, an Error code if something went wrog From 92d62164baac0e22b05121b53d2b6c96b8ef8b17 Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 23 Apr 2020 18:12:58 +0200 Subject: [PATCH 26/26] Format the SysEx implementation's documentation --- README.md | 91 ++++++++++++++++++++++++++----------------------------- 1 file changed, 43 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 83b3ae1..b27037e 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,49 @@ Any "standard" expression pedal compatible with the Roland EV5 will do. ### Switch pedal (leslie speed) You should use a Normally Open non latching (momentary) pedal to toggle the Leslie's speed, otherwise the "switch impulse" is sent on pedal release instead of pedal push (see issue #24) +## SysEX implementation +Since v. 2.0 the device has a full set of custom System Exclusive messages that you can use to can configure what kind of commands/codes every button and drawbar sends. + +An editor is already available to configure the device. You can find it here: https://github.com/garubi/Web-editor-for-MIDI-Drawbars-Commander + +**Format for the requests:** + +`F0 X_MANID1 X_MANID2 X_PRODID X_REQ COOMAND vv F7` + +**Format for the reply:** + +`F0 X_MANID1 X_MANID2 X_PRODID X_REP OBJECT (Reply COdes) vv F7` + +**Manufacturer ID and Product ID** + +* `X_MANID1 = 0x37` // Manufacturer ID 1 +* `X_MANID2 = 0x72` // Manufacturer ID 2 +* `X_PRODID = 0x09` // Product ID + +**Where ACTION is:** +* `X_REQ = 0x00` // Request +* `X_REP = 0x01` // Replay + +**Where COMMAND is:** +* `X_FW_VER = 0x01` +// Firmware version. Replay vv is VERSION_MAJOR VERSION_MINOR VERSION_PATCH. +* `X_ACTIVE_PRESET = 0x02` // The active preset. Replay vv is (byte) Active preset id [0-3]. +* `X_CTRL_INFO = 0x03` // Reply with info about the controls: 1) Number of presets slots (PRESETS_COUNT), 2) Buttons number (BTN_COUNT), 3) Drawbars number (DRWB_COUNT) +* `X_REQ_CTRL_PARAMS = 0x10` // Current settings for a control: PRESET_ID CTRL_ID. Reply vv is: PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_behavior LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_behavior ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_behavior +* `X_SET_CTRL_PARAMS = 0x11` // Send the settings for a control (but doesn't save it): PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_behavior LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_behavior ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_behavior. Reply vv is 0 if is all right, an Error code if something went wrog +* `X_SET_PARAM = 0x12` //Send a setting for a single parameter (but doesn't save it): PRESET_ID CTRL_ID PARAM_ID (0-18) param value; +* `X_CMD_SAVE_PRESET= 0x7F` // Save the Preset to the non volative memory: vv is PRESET_ID. Reply vv is 0 if all went ok, an error code if someting wen wrong + +**REPLY CODES** +* `X_OK = 0x00` +* `X_ERROR = 0x7F` // Something went wrong. It will be followed by one of the following error codes + +**ERROR CODES** +* `X_ERROR_UNKNOWN = 0x7F` //127 +* `X_ERROR_PRESET = 0x10` //16 +* `X_ERROR_CONTROL = 0x20` //32 +* `X_ERROR_PARAM = 0x30` //48 + ## Factory restore You can restore the presets factory defaults with the following procedure - **turn off** the MIDI Drawbars Comamnder (i.e. detach from the USB cable) @@ -15,54 +58,6 @@ You can restore the presets factory defaults with the following procedure - **TODO: how to know when the restore finish?** - Now **release the *ALT* button**: the Commander will exit from the *Reset mode* and it's ready to perform using the default parameters. -## SysEX implementation -Since v. 2.0 the device has a full set of custom System Exclusive messages that you can use to can configure what kind of commands/codes every button and drawbar sends. - -An editor is already available to configure the device. You can find it here: https://github.com/garubi/Web-editor-for-MIDI-Drawbars-Commander - -Format for the requests: - -F0 X_MANID1 X_MANID2 X_PRODID X_REQ COOMAND vv F7 - -Format for the reply - -F0 X_MANID1 X_MANID2 X_PRODID X_REP OBJECT (Reply COdes) vv F7 - -const uint8_t X_MANID1 = 0x37; // Manufacturer ID 1 -const uint8_t X_MANID2 = 0x72; // Manufacturer ID 2 -const uint8_t X_PRODID = 0x09; // Product ID - -/* - * Where ACTION is - */ -const uint8_t X_REQ = 0x00; // Request -const uint8_t X_REP = 0x01; // Replay - - /* - * Where COMMAND is: - */ -const uint8_t X_FW_VER = 0x01; // Firmware version. Replay vv is VERSION_MAJOR VERSION_MINOR VERSION_PATCH. -const uint8_t X_ACTIVE_PRESET = 0x02; // The active preset. Replay vv is byte) Active preset id [0-3]. -const uint8_t X_CTRL_INFO = 0x03; // Reply with info about the controls: 1) Number of presets slots (PRESETS_COUNT), 2) Buttons number (BTN_COUNT), 3) Drawbars number (DRWB_COUNT) - -const uint8_t X_REQ_CTRL_PARAMS = 0x10; // Current settings for a control: PRESET_ID CTRL_ID. Reply vv is: PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_behavior LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_behavior ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_behavior -const uint8_t X_SET_CTRL_PARAMS = 0x11; // Send the settings for a control (but doesn't save it): PRESET_ID CTRL_ID UPP_Type UPP_Prm UPP_Min UPP_Max UPP_Ch UPP_behavior LOW_Type LOW_Prm LOW_Min LOW_Max LOW_Ch LOW_behavior ALT_Type ALT_Prm ALT_Min ALT_Max ALT_Ch ALT_behavior. Reply vv is 0 if is all right, an Error code if something went wrog -const uint8_t X_SET_PARAM = 0x12; //Send a setting for a single parameter (but doesn't save it): PRESET_ID CTRL_ID PARAM_ID (0-18) param value; -const uint8_t X_CMD_SAVE_PRESET= 0x7F; // Save the Preset to the non volative memory: vv is PRESET_ID. Reply vv is 0 if all went ok, an error code if someting wen wrong - -/* - * REPLY CODES - */ - const uint8_t X_OK = 0x00; - const uint8_t X_ERROR = 0x7F; // Something went wrong - -/* - * ERROR CODES - */ - const uint8_t X_ERROR_UNKNOWN = 0x7F; //127 - const uint8_t X_ERROR_PRESET = 0x10; //16 - const uint8_t X_ERROR_CONTROL = 0x20; //32 - const uint8_t X_ERROR_PARAM = 0x30; //48 ## Changelog: - v. 1.3.6 Fix issue with the Vibrato selector (isssue #70)