From 8d871999af217019d86439e3e7f6988bb98b2573 Mon Sep 17 00:00:00 2001 From: Gordon JC Pearce Date: Sun, 1 Feb 2009 16:03:09 +0000 Subject: [PATCH] added tuning knob --- extra/tuning.png | Bin 0 -> 12669 bytes src/gtk/interface.c | 12 +++++++++--- src/gtk/knob.c | 14 +++++++++----- src/gtk/knob.h | 2 ++ 4 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 extra/tuning.png diff --git a/extra/tuning.png b/extra/tuning.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb2ddaf63e2e822111ee31f336faccc94018a18 GIT binary patch literal 12669 zcwV)72|QGN-*=@LOAN*uGK3M45<=)0k)p8^5lTWLLP%Gdu}exw#Hg%MWY4}tmXK5= zYqFFr5oLLPXI$OS^FHtA^WM*Lzt?f)oHJwQ{I>7%KPQx=uf3g#pJ~&kP1}#^5DnqC z%%)8Y${2dsW3n)jhhL0tIu;(AHZgOc|8IWtDPU#OCgDv-iHD7S62B!llZ?iSU&i?` z?Ba4hrWF>}aWXIE+%4bF=A{b4al%_~y9HMrCLUM#N#3PF!0-|?@1Ew$%OP>eBN#>I zjFHDFf0=%pYUNW-3UC^09S?q;$oASpt>n(;2trQMsJcd87LTVp?9Q_p*CIa-coQ>n5_KvXBvFv5>h_L0AtJ~|k?wIxL*)iTA$9bi8{PBwMw@v3>jYjI1mqAV7^bXgSC>{?Ik4rLOO{Y~%fdY~7Y-Z9P3b zPrJEcS65fZzkby`ae}R^tgNG_C-mk`R;zL!cI712vG(M~p6BP>zkQI4iHXtJeHYn% zcUmO%;LG^)uPv^hXx9v~?c)n7J!xV>dGJ8Us=}A+#*G^#o)a8pFJ5%^^e|RfM=dUT zp&!O0W2NEjECtu-zWB`|@t_C&o;`aUU0s7rvnj{LZxBUF+ySp5G zps$~woSNFrodHXmi(Nkj)|~ze5^R`BymV<_iIq%wdHLY*@D>IJ2KWkTs}d}6t4LsR zv0`&`Gs(cghV_DX?=MZhmFz2Vr-O`ld|ha2Zbocub_T4kdaL^Wz+79IV-Ob?N4vha_oT6@ zX=*_MZuecLOQiz)?y*oP6oRyLedX2PgP%X2;r8z@zoK*eI8k4p_51vM-nn+6T@n&I z@gn;E{;C`t9D7UOs~<4o4Z5NtA;Eyo!KG0qC`WX1a#TbRToPrB-XkK0G`;XU?3_5Q&B#;R6S_hy{ru zE}@RpQh!ATnS-9=SQ(qjh+}aw)Q1o0?%lgLK0aQ3LVcBNb8VGNeQimUg`Q5He>+rG zIIcyHYM2RgU;s7F%GzygX7;eGjQ{T4yU^vq&!5k84tjiPJ?!El{idrc`tDsyObm{A zI)nFgUrkdJM&?u*8L}4>8;i)q ziK?jV*tTsOVfSvt!h#R3U~+PjWMjjYV;XMXcynmH^P!Ue(%!J}@V2b!iHXohk9LJL z*gZ;1Lxi!3;;D)uO*i+vy>iDykzvix+glOx2RIUX_4gt*Kc55ONE=|vQ(5pP^dwvd z;jV7e=q2b`jmL)6)YL7(tb+S;Znw3yIi5dXb8r7Sw_iWb%O5yEg~_ulcD=e~rA={w z2-SM?=FP3xSo&xk&*Tt+(543=+-;cGds{6_OH0RRX0+jpfA}6UG%`Z5=H<&H@(K#6 zX=(IMh5Sy1y)i;sT3X`cBaKlHA3xr9;lc&zs=d4{{I&Ft5-gqGDp(M54#nLmUremu=53%hXA~u^tR#39X2NZht@Pb&XB;jt2o6J$&+n z#V`}s(9n=J4P_&lnksB7gAyM)bcmOiw|cZC&V96*i-m^zlsi`SP7Z>^aGX82i z85tRM^!0-@gsT${IG2Zv?C*+@0z4ic z5*bM$5s2pIyhW~`!V(h`B_$2b%z^>1w{F{Zy>6(wr-zS$O{gB43UE_SK_RHK(}0DI zZKSu*+415$Z)`lVEjf1g*U?J{q3>m^%R}D1 zGbINF)wZ{@RaRCm4c=gT=K4u_m$*0rab_B)LjNx;EGW4RZnE~9Iv{P4ztzjjimz=CFD8VAaZGvVyTpBbeTS30`)k6uq@JB^;l^=uCsY@n+#@0?YU}LG ztfHb)QdTy6|6--w;VAgF{tCYmk1^Ju;Na+(m>=ZcmN;2$7|E?$HZS?Br9OPP9v1>% za^EbGvOf1?qAP906o}pG)TyE2;Xp1a(|E5d9HCp8C|ej<1*#i&UW<5qEUxz5JMP8B z#alYNAddZq2db_OJo+^_D6Ay#nsac6f{O-xzMZ{2J0D+YNJxmSNUsL*qPpx-Xjz$Z zL1E!g>%IL-?!#N(J+Ytz#`y5@<9(sLJ9jw4!oo-v7K}ns3_Eu0_|V&13q>=_wE`pv z=`m)+VD`S4=*_cdfJ=4PhNn>P>6`Cyot>uw6FU^zIx)3L8gu;*A-_!j1I zsb!YjyKo`zWX{WpuJq0iA25JrpFe+2pU#XtWjpdR5+;xgM5~`(Cz0&GMJ-uE})TnnYDN_}N@m7SLt<1=+FK zy;|pOY;0UU7HtP0t~g2@deZyVyf9s0*8}E0j4Vf}b$fGjSwdV~Fz{1MT%6`(L%ggk zo8RKM!&X)TsBD4KHH7n=xPGd{4KE-dFbLey(Lo|=Yu{)b!OP3zpnKAAb8~Zi;;9&s zUVY*NVnLY6@8u}hJC>r^Wn6JBg|Av$UGD1af*~hJN*)Hi@W@bd-@bjfZr=_hlea=i zFk80}wY2c!;`CdtR~PW}|Mv9pQ9=*|3(2pp)>v9v`jM}DQ8BFv@D*f~oy+z4@hhw? zU6v2ofkA+)o4jWFw`UrM)z%`P$HwjtdQbIIKsf9Iu@4vt7Z(y9en0fg_bS~N$ z5Q5K@D}oLly}>5Fd)RZZOcZzzo#icuft=R(-426ep~O^g@0tFqy3*XDqM~$uKc}@! zO}Q7p_0R!&7Zk{I`a^=q2p&KJx&^SEot=HNx_Z?-v^~4@thhpY!>ao;77DUt z!4ChPv$M=3+tju@%Orkld5qxKd%EkAZV$6w7T8Ml2Tc_oo0vN$z~JkzZ1XDcVCP6q z=3H-d`guCR?UdUMB-S8W24bv$%qbV4jCVJss0)={&v@F)Q75RqVZfrZIXbgOKXznq16CZ_OqM@ zGVDit+_!{W?LI>M)sv>1!=6}Sqd~kt{L$~>^`PfvFmcyC1$}OIx%T*Q8Ej|Vm+H{* z1B>%)=Zxx~hfWL$o7t~mqq_#S>k|*Ul=)(#f4kJE+l9Z34GELb zsvp=oeVo|;ZJ|oM&1|pKteM!F`(JTPeZyGa=t1t_TMc-574vY-Cf@yR2c_I#XBeBX zt)u~e#vP+aSFA*qX2sJ^<|~oYZmjz$lX-&<>*!#>j@bwXcYuum2*j`k(}A`eU-)HK zhsR;Dn=CCY?`V#P%U1d<3nJiSKAYtg7i;_aDnn&$T!U|cKMN0Mc5!h5z&%iqHT1@*Q_Sp#@|ifN%$6H-eF7rQZ7jzt{FD z!D(6dm61)dToCsUk(xcUzwvqo*^zTd@G$*5P0W91hu-z?Pr9{{C5H7DRw{_Ms*|i# zux~K%HFb4#%1P7R?wGk{|2v%y(5)q2Q@t%SSY16m3J~5}a)sYjr{U=VrAp8t0H-d-mAsIJ!q z`su65xdU`F()oIZi{h*U71!S1XkUtGS9z^3eE+@wdxz&W6P~FlDZcw{8{_U$bev4veO zD*@`LC!3>mfW;PW*~h`jX<%a$)flz&zBZ;}?bp{26@Fl)OKkP=##UCx@w*H#=(f5) z5ecDf7!C>+HqxV0IAlL-9D%&`fdw0OcOpVa7{Vbq1FwPd!h z?{d0WgYtS@z!)8NcFrzA#y{lQH-SIzcIvL}>gsZzcq6v5@ZM&ai3)zfT$;NnpGC{y z7O(}#1JsM!F;fqEe5tm}(=aiKxqEkLBuf3=ldxH2yzsrX=Gn7i^b8E{zZWlfFj4_A zAu~a=SjQhbCm;kvRfxAkUgj=#4u^2S9{Qr=z96Kj+9ifSCXmy(9*7%Y?wz)N#r7B* z=AZ;`zm;dsL>(mdo+qGrYto>dllhaw5JYFEnkfFW*9#CK&O-Rl3%&;C<`^x5XO5jB zbM4sg%l;n<&U4z?*_|%_SoqMVxupdX@xp5gfthnrxKDpUfR*9<_wR0S$#N8uot=oW zNq0(Qx04p^p0u=_>pGzxx`+Iw?LI?zLm+5TV`JmN$?oj<_;{=hrY%W@r>Ca})f7jL z9GP7nONP>mfd|22NVH;8LesEsf{&q<8>*9p09pD2nGc|ccMhW&Abt2B*Z$fbGIZeL z%s|v3zr}b>O!xcu_6w8U&pu9(aNAzJdgZhD?Or@GzBD&Nkdo3gG`#J#^~CG|L;%zU zk%BY(=B0AR;$2E)D#2$YQW2FFGga%>$MI*L_ngi%M}LYx<~eomPE@|kWOH?aD`0iO zERRA04peaY@K~@U3yr_Nq-({C$DKKD zntfTfpv^%O!d6@TVI)WCXz4f-dp090473&%9156?_GEP)Bg{bo)-&hMq0SHlZi(B_ zmg#}2sJS`!ISR?cV?Q{^*`eT_!|!q|zpx`f>u6zc$of7UVzk!(7@M&2OaqVG{jV8u zxJvDvSIN=Q?Cz9~*GVd<(RpI=oLRlbOAs?fg61JIl<|)O=xkIs+UvjHrfb?{lBOozyWCUZ=!)a)P@UuX^K!x1 z=GIoSbW4H-K(KkakKFFvyF2>&B3^jUgh`UYA5sZn-0S(+OQlx4LPFd|C_7O>=^s6M zw3m5rgVD?0j~@%|)6|v*>89e^UPkT!tH3?aNS&$tJ#Ev&Kp}+`Ytk;Aiq)izAPk}M z|GF8eW&|>7)IFG}V#i`rU^FgYzN~b4G6n`;PcPEJ#6@98th7ZSI1|symjN#O{pa;Q zOf5?4>cpN^O40|DG4gBSs~r=ys7N6uCPr9J&VWwgF#fZra%X?POd57_diuz@a}wp& zvf%y=NTf}{b(?{75))lm@i@#@bX5d~U@9l#AE+OKb{@JV@E`j-(5)NIN_Zo~MCC&< zcT4*d1`L-z9@j<-$UYB;)Pxpvk!TEZop$b&66KZ!xuYxnM4JRT*SaDMocwSHRr3o6 z;_mK#>nvYZmWZMv&%(mOFf;Yb7YC)J*ODFLAuceC61mvPsVOZzz3pIZPQ$N8Uyc;*eV#Cq$+oX!jB#e%EZP?_Z>$e>P$Fv@nqo5$NitT5`K8 z;^^bUn=h?tfCG?29qAV=LZMI+O!Ca7d(Cz3CIRp*|1QO}K3 zR8)YKChXZm0hvI)^~tpn>Nz)9LkE0t;shJ3fYM)JW*rfNtZcgg;t1e!_3BmgLMN{8 z^Ye4xdiH}F2xi-v`t)hkf2iOe{{CMTaB2M*US3r-qPbZYzQp-`?qO&-0oErrRs90U z_^Ue-<`uq$URjY{6ZIc2R_&?8miaI5OGrp~<~CF-*^!o-in!q44h%$1PrCv#iX1#> zp>k8(#02)kWXb+&JNfzf;jPG&l2BZW*cu;l=+L3r->Vtf*_!Brj-B1?Yn7SP{{DUN zWgrs9p^;%CN+0aw#vzB_ZNw#iAQAaLVe&o0&NeDcs*KCME{Wk(87K7QT~wE0s{M5W3Y&gj*kzyd6N|at*_tO=c)*bPMSM> z@rRfZ246K0Row4;%m`s*WE`KEV5dd+w!8bV0S>h72NwmGfyz$;NXEm5bYI^;eJ}Lk zZcGf>ve@;WCMHSs3P)C!6HOpPBFu8F4xc|SX>8K)=J7E(B_&58yu6YU%=;gpee}D2 zV;7g?2m-BywyQ?F{=q#ZB=j|TJ|b!ZD4(?O@*{4ch|b`>g-ukbW-6aPynIGF79l7_ zd+{^T1{#Z=d&C?Sgzc@mrVcp=aesjo|KrDmk$`%DK)$py+can%sM>ZGmg*@lAU>}! zGdT(>deJ*I4R+U43FejlrBF0W%N?MV3PyaOW!;v)p9O;epa(E8rSxEN(F+bWg#WrL zW#)u9&VOkGOajOwnQ&!hW}<7}QCNOK!3My_Kd9uH?6a|x%BhEc#6~+`8%zV9@@+g$ z=%M%x0(ln`_1Oyo*+Bp_AfxJYq5n!p1JpDDM`mTYDJMbN<791)`1zqiRln#UP|gxE z{;lUZ2!q~C1@7=|+BXG&RKNRH=;-Ued)DSRQ*n+J|F*O9I+v8GW5$#G{5MeC^mK;% ziWlFJJ9-P9+eFE%LaG^zRFH}D7;0{=3}`^G&8V(YUzxoD(^KL1({1dv;2#n2NkV9Y zQpbr#mJ~-r8&x5S4 zt}0#qRX~41nwwcaQ3+p3qec&p`Iy-|5+^ng>Ey|i1uewbvp}`brG-UBPMxONT=18W zE$gRdoJd&eAO!k_mdcYLdh5<5Uv*%`dxEpe$jVxc^Hpom=mxE+ z^{NcGuGQbg034`S)K<<|SJ4gD2Mk3Jn1C($wA_ zoJs)gv2EM7FDSyJcbj^nRkv^74u?58ISE)p+_t*9Iyf2~9ZkSCx3wJz#`5pjp?T_* zAee$7kX3Kq*s0;=m6gLnLm4-^cb(<$a64Kb{wqOw#RP-OIvfvAoog}JU%*$N3iJ_x zI=j5n{pDBiRRyoJyoas?=FX`BO%1fu;u4T%jo5ul`vCa0sLYkKwS@bTj;;KI(S;XSAO4n{;q{=K|% z?hi&e2>nZ;>8UPe+r^LseasbAA@m-e0j~Aleu*B1djZVQ}_`I z2Mi()aB44SBfxe?XD7Z0%g@VOU3U2^R2oc-l?>0ucq?D}j7ii_Pa`i*eUt!k60oYw zEp48{NDU0!;=j7^9va^7=QLhjeP>=?9v~vP0);rN^3`8ZTjf?s^4ih}8;U(((i%vA zyQx1L#VJ9*M26t%SGa32#_@0?d+g`atLI_w)^~jvCtSlSUDPLMtO-)E9PU^GXHCr;t+gmYq zk7e2+y>{2)hvnr~E+}(`ym@1&$Jo%=IP%GRfXfmCb`K9y8yHvDaqKk;{VHDH{%RQw z1hENqo?Du;2fTi$9fjU~0jsWM<5nJ|P={1<{BY8FAjeeY+q%vd2Z?^XJdx6&oG|^Qrs_=kK30!7Zb2 zUb7pTaGgDSmY1KO!we&+iV^ zPo8{szDr!y_eYZzGCt9j?%y0w6PXA9_=G}? z&sZEea)dtZL~`zxw-j~+eK2DB(+hwRE-`ugmn<GP(h5F@m9jlvE8^iQh1ozy7bZ zp459q&faLOWJ{3lH6+X`|6zPgYsQ8&z*P--(#SuinFg*`f&8P77Nq6Ujs$6#k_BzI zZidInT07!BN1M5<$~+lMOG^`MelbgsMXKR>GTnlqkN#Q~mDT+x;luuB%B{Mgj+HkyIyAus z9D+Xf0HfcfI*Bk+A3P9RS`Fx{@Z&+BXS;g!kiv!DN6Vr)SQKxE-ewwQH|ZXv$S0e;%1M95fxWC*qy<`ZD-TW=xrxz~xEEHI2(0jHeL zpTFKdRtE-&a?4a{Lk&0?Y!K#$Lwfia!UHs}(418E6Q~RjlS8lH2>w-0BclDGySon$ z;Bk7bDclhAcpnO!IyTZ2(ix7NOexxtHVsDqUJ)Eu-;Ii(&QG5rp{4+sr&oV1pj8B; z!dCn-5`89XvO8PJds+Z06BHCg4_XPRwUNw>CvUmF$wlFQ8ur)knX2gMXezCg78Vu; zNYj~pS`E$=cn`OX73O|hkXAT1H6sJFL&2pQuyg2A=`+8du5BuYjr^XboBKJaLSOezAH;|+$*NvDS5$)`Gw6B*`Lo9Q97oj+AMjZ#?v;>w$G))`ni)k$B08 zd@Q=4dF9GMkt##&*TM`844vKGk7=ogi8ZJemy%)z=csLOFPeMmMH=4&FZ|n2pK>J0 zXDosm><&9Pq&fKX(wwPle|abr^oex^|MPS0H+|_Gp7-z~j-H-4Kv$)J6(!wc$D)&x z1U(8UJcz7KSbG7h4K7yvZRefiX zhUtbhOn)Q`n7%Lc-CHi&ktnSrx&B@AKVm&`53B4pxC!kxaDa*z`-OQ~_%$&gENjl} ztFg;VNlo1XV&>vNrPf~F`i_oUXgDNiXJ=e)p1CxzKl;?(P+joQ{IYyqmkc?uMmQlM zVeiHMasr>c^E+wt98*wrd6bS9-ZO6VU-Uq`i%rU=oXscW5D-n8AOg|Vqw;c9dnT%n zE9F104rNQ;b2FjA%@2=bB#ann7#q+qxA`v9)OyUYV&e3FH{dX(*t|SBdq(QzukRpA z^l3KGl<|p)I2(+hst=YsT&wgVNnf88y}R=2)zOHkD0??I(tgz`B;)B*wrta!Kdg{!vH|DKB~h^R5zuF`LXu8A-DQIFQ-?x#pJXtmGJWW_65Ftc?5)_cB%axD$QDw zOihEHJdqw@q=Eo~kkbosNN5m3nDmcB94GCrBRW$5dBHZdkU$Plp?R)18$xwAO{o3= zp{ga`nNYSNQE8eb^FQ1sc{?P@iTs=yXsioniayw0LPvMk=R-ezj|{5vD;U=P_1S9)}o= zy#N5^VFn`o$GH8yvdNM2zi8sgnVH~^Qwp)Povw*`2y*D>Z@3@;(U?Zfd&k8=wAYNy z^J!uZ95`URwz3>%ASo-WO~BQTwI?_5ATaP+phGxpEG$B!quFWMK*!d}$q7tc%!TL9 z?`6vUm*4Or8I_gR2fz39^q3d9+>;}B!1$v#RwxJfbTOda&Z{k+fRT&=jwg2FkjV|L z9YDj$*G~rvX!ksK(-yG9Ui?qc70xKDo<+u?mb|>YdtwN ze8I&5HL-rs>7X}kssb9u$1^@41RPV%gy(MUt8EDfeCCF?6}j|?RAQkE>H@bh$1FWQ z7RRrR>3;iGc>jLReCZv>(AyRuBj(h;UlU})NB(~xQW`c0J}|`NSm-0g$ktT>k+HGd zKB__>;C3jwRu8#p#GZBOD`DTM9v~lt`YPYIT@C2nyOBmVdkmFJ%9J3UouAL49EkbW>|Cs0kziA+Jz<&b|J6Yub literal 0 HcwPel00001 diff --git a/src/gtk/interface.c b/src/gtk/interface.c index edc9c44..7a24537 100644 --- a/src/gtk/interface.c +++ b/src/gtk/interface.c @@ -66,12 +66,16 @@ create_voice_knob(GtkWidget *main_window, int index, GtkWidget *fixed, voice_widget[index] = adjustment; knob = gtk_knob_new (GTK_ADJUSTMENT (adjustment)); + + // gjcp - FIXME horrible one-off to add the tuning knob + if (index == XSYNTH_PORT_TUNING) GTK_KNOB(knob)->knobtype=1; + gtk_widget_ref (knob); gtk_object_set_data_full (GTK_OBJECT (main_window), text, knob, (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (knob); gtk_fixed_put (GTK_FIXED (fixed), knob, column, row); - } static void @@ -85,12 +89,12 @@ create_voice_slider(GtkWidget *main_window, int index, GtkWidget *fixed, voice_widget[index] = adjustment; knob = gtk_slider_new (GTK_ADJUSTMENT (adjustment)); + gtk_widget_ref (knob); gtk_object_set_data_full (GTK_OBJECT (main_window), text, knob, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (knob); - gtk_fixed_put (GTK_FIXED (fixed), knob, column, row); - + gtk_fixed_put (GTK_FIXED (fixed), knob, column, row); } @@ -134,8 +138,10 @@ create_main_window (const char *tag) // tuning can go from -12 to +12, so needs special poking create_voice_knob(main_window, XSYNTH_PORT_TUNING, fixed, 26, 46, "Tuning"); + GTK_ADJUSTMENT(voice_widget[XSYNTH_PORT_TUNING])->lower = -12.0f; GTK_ADJUSTMENT(voice_widget[XSYNTH_PORT_TUNING])->upper = 12.0f; + gtk_adjustment_changed (GTK_ADJUSTMENT(voice_widget[XSYNTH_PORT_TUNING])); // wave switch also needs special poking diff --git a/src/gtk/knob.c b/src/gtk/knob.c index 365b303..9a15cf9 100644 --- a/src/gtk/knob.c +++ b/src/gtk/knob.c @@ -224,11 +224,15 @@ static void gtk_knob_realize(GtkWidget *widget) { gdk_window_set_user_data(widget->window, widget); -// bg_style = gtk_style_copy(gtk_widget_get_style(main_window)); -// bg_style->bg_pixmap[GTK_STATE_NORMAL] = bg_map; -// gtk_widget_set_style(widget, bg_style); - - knob->pixbuf = gdk_pixbuf_new_from_file(INSTALL_DIR"/newknob.png",&gerror); + switch (knob->knobtype) { + case 1: { + knob->pixbuf = gdk_pixbuf_new_from_file(INSTALL_DIR"/tuning.png",&gerror); + break; + } + default: { + knob->pixbuf = gdk_pixbuf_new_from_file(INSTALL_DIR"/newknob.png",&gerror); + } + } gtk_style_set_background(widget->style, widget->window, GTK_STATE_NORMAL); // this is all it takes to make the widget take on the parent's background image diff --git a/src/gtk/knob.h b/src/gtk/knob.h index d92706e..3f827fd 100644 --- a/src/gtk/knob.h +++ b/src/gtk/knob.h @@ -54,6 +54,8 @@ struct _GtkKnob { /* Pixmap for knob */ GdkPixbuf *pixbuf; + gint knobtype; + /* Old values from adjustment stored so we know when something changes */ gfloat old_value; gfloat old_lower; -- 2.11.4.GIT