From 4e68ac0f4b7b040dd6e80f24c39a00538b833bd7 Mon Sep 17 00:00:00 2001 From: SeeLook <945374+SeeLook@users.noreply.github.com> Date: Sun, 30 Jul 2017 12:44:16 +0200 Subject: [PATCH] Configurable tempo and quantization: added tool bar button with metronome and popup dialog to configure tempo and quantization. Added numbers to font for metronome marks. Socre adds note when it is finished. --- fonts/Scorek.otf | Bin 243452 -> 250328 bytes spare_parts/Scorek-Bravura.sfd | 534 +++++++++++++++++++++++++-- src/libs/core/score/tscoreobject.cpp | 2 +- src/libs/sound/tsound.cpp | 69 +++- src/libs/sound/tsound.h | 32 +- src/nootka.qrc | 1 + src/qml/MainScore.qml | 4 + src/qml/TtoolBar.qml | 55 +++ src/qml/sound/PitchView.qml | 2 +- src/qml/sound/TempoMenu.qml | 64 ++++ src/qml/sound/VolumeBar.qml | 2 +- 11 files changed, 703 insertions(+), 62 deletions(-) create mode 100644 src/qml/sound/TempoMenu.qml diff --git a/fonts/Scorek.otf b/fonts/Scorek.otf index 08ba34eb783131ff934df58fdd834262cd47ea7e..f1896a472f54dd96b84597d459d90a47a8b0d9fd 100644 GIT binary patch delta 20275 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 delta 13284 zcmeHucUV-{*7sWbP=+d9K$t;AkfI<8sDM~O0R;q6F$vhPfeq}+(588q#sG)G8Z|c5 zV4cJiThyyj6VpsIiN<(yjV&gY(O}?RgT``m-#qtwp6~nb1Alw1z0cZfueJ6*yBxM( zZ|v~owzD)nJ3AempbR+37?P9}ur({CH$X`waNTl}lCnpxP>$LI+-7e8@Jk*#EXn4Q zeMjJoO3FtiXQXGX`(^!7;NG+Xuy#w%8Z$V!f3}&PzYkzLJUuHSYVZEpcK~o8$>&cl znmBjIh=dLRMYjNKx=f!sQ98vrBx^D~{FV?iol2Z@@G4dCpnTx;qLRfsv)ydSfIa{& z|0tTcc&=4c20g;Ql-SIkSTxnJud<Bt>j4T==guiEX_G?~Ip9Li0{|%{<Y!4M@;byn z00-_mmB8nTwKFXA%PdyvRD-cjR3ihdC<P9`-#ZldN89#>Naz94HL;!TdPnw%?hzH) zE7q_+rsLj0u^+~S1h%UNYd?ycrIB!=_5dsptnd-#m%>1>hW-#>2%o*euygiO>5;ZW zZSS?c({`Y3f7{;H{jK|2o1XN267i(xlh7w2Pr5$|eByu6Az)d+?10GuBLmU`h6E%A z43NY~dP=&A?~8vD{~%uHpYI>xAMD@J-^1@6zvX_#eg!@;KK?#l-bcLcI!^F9?)8D! z7_VS2f6r;2dCmdO4o)9FwUX=s!}dAFQb!BNEcRJ`1`q<C!Q#Up!UzH*q!Gpt90<9D z*9o44i3CgNd<cbvxr8o+`GiG;V8YU8=s~exLa^j}5?wB(WCdj+i7E&>;wk1<G<d9R zh>s^q{bprpD3NGKLJ;x8h=vhJiNz=@s&5rd{CJ|Vge2ngh^7)o5<iEiMJ|VUGAxJ; z4x%!UmH=EKdd1@5GNRPjl|bT4iIUPQ{fIXZ&3Fn}Lv-|0z*?fO5iF5dM|2XQfcQ6w zPA8lselx%ipA!B>&e;&X3viX3LorboYTuF|y<S%b5;BRWQGGR^Fok&X;_6I75%J{7 z)#j(bbbud8(U142JOkibH$pJ+*+e6s0>=`i?y~^L5v7P(fE1x?8weYT&jl%5yF!_V zlp#<42?UA+787+LNQhquaGe^tPJNDYq7<>~i;340EhDTXzMd%Qxo+{2y#IMUfhcYR zxIuMqSo*vP;3nz3N!^BD5+z4(#!4ykD=}2z=3B%+Ao>M?1h9oDDZTkK@qYl^BAHtz z8jH3>4?hJX1MdTYJYoSv-vM}FdFhT3C9faU(d+94c%D?84<bIBXb9mu;;FmQ(7U*| z;qV;S{*1G-wy_o2QDp~5C+7|>u5Rugq!~QDI(ifF@$Ka2FO~#!ror7cuv-uWcMk~- z3kT?7*j;?f@jF+45(@SQcKn^a+e&&w?7g)yUnGs<s10h0rb1vGSmlAuVh}9@(H0P$ z1N&dVApjg=!C?$I-38~>;JOps9)a6q@OTW~+2Fkhd@h3TZt&d$zI(xUANc<Ql0DG* zP3YPHK|YpuD?|^WMhGj1@bS<y4k8ku*F5Mw9{LnQEWO>accAZe=<f>gdm*6?1`UBB zdPp7%DQh8R7o>ayDOVx2E2M3PQAIGS3PuSqYCoh~L%I<%vLK@XGEPF~Fv$EKMu)-Z zZIIOyvc80@JCHpZvM<7zH(<;ckdqBLhhc0ejBSQ-{xEI^jJpBjH%lQm26DGU?zb?3 zg9-KUS}MGD6JB2eZ`i{dS@6bb$cu)&{g8JS^1DI)R+!iuCT@U9J}_wkO!@*QzX6l? z!W4ul<uEl0rXGWW2q;(y1<f!m45l52={_($45kl)>9b+_CYb&XOur1%AHxiLn6VM0 zGxo!b(=g*2%oM@QD401JX0Cymdtl}nn0Xgw`NFJJm?eW*Mwqn+W_<~>TA{Ef6i$P} zB~Vxmh3lYj2NWKM!b?#20E%p&C;*Bwq3Apm{RBlVP;vyM{vaI&W%f`O2jycy)&*p1 zK|TrOlR+*m26+j{7l3>rC_+H-6(}x%;%iWR1B#2FxCDxCLGc|Zz6Zr+P+S4U51^V3 zD^~-*0IDZ~x)9WJK&=LK6R0nM#tJljKvMwPPM}Qy?JUqmfUXX7XF%T@^fjR02>SOy ze+Fu{Ld`=k43>gn4H)i2Z3fitg}Nh99|`p;5Sl=^0u6(qVHh+F2O|eYe=v>&<1{cX z2IEpNE(7CoFs=Y&DHzMZSPsStFjj)G3XC!^%E71rTJMc2Fs=k655{URs==rMqZW)h zFzUfr14aW#jkRE`17kfH1u!;%(Fn#yFs=gQYA~(=<2PWu4~_277y*sbp>ZiR?tsRl zuqqW+&4<-PV0AI935T`zu=YDx=LYLq;mvs1um(02z*}vw<!9LTIc&QE+kS)X64)LA z+w)<2F>K!j+wVb>H8e>(LQ^kjN`<CEXj%$QTcGI!*pUG{ro)ah*qH@8i(qFB?A!=D z_rorPU7@h+TX@?J-fo7se}v{u(EKgzJ^*_?U|$#5e;7>t;9XBR*aYuc!+T@lLt8lH z569kv6HDP#J)GJKr`~~658!kZoKAt$c~UsN08aC8dIOw(AI`YKSvj0-gtNQg>_6b_ zS8(<koNa@1Zg8$Uoa+zgQsCSqI46a3JK@|f@W}}H<RpC73BIU-ufBn=?!bjWxG)+n zsNici_<9n2y$-(q4!$`A-~0?0JHf>~xVRcFb%aY*@NFi17YNet>fw7Q_&y1~{|GK8 z!Q}?Hd;_lRf~#4U1>~o<;HNhD*97?2Ik=t#*Du1)#c(44ZhQqd9>PsOxS0tz3*hEQ za7zNW^5ND7xOE+F7sH)UxbqeK@-Ez+3wIyFuY2IPbolKnxaR`*+~J-V-1C8ZesE7J zfqPxxUN^Yc9qt`~duF&F3HLX`gL&|<2+Tvld=(z8g~!9;_h4x8hbQ6ihX`8Zp!Ev0 zZ9u3&6d`_&tPQPl(3(SQCE8p;+XpD}Mo~W$Ek@BU6#WD37}~|7eLmW6L;H`>AqXAx z=x|DkjzQ>HjgIf4Qv^EIq4QMiP=PK#quWh%Z$J+oJ#V9z9KFowU4q_kqR&3`Mf43r z-=XMx3OfzQPB+o78vW;@cos@7VSpYxpTjOku<H*PsKCI77{p<)7`u1G?)NaH2Zl_; zko6dH1w*@`G;}zImSNZ-3<nG^#vZBIGZ1?o!-#npnT?T;vDb2p%ETxhqc&sIag1ug z-o3E*1ngafeGvOh!{{803BuU^*f$gV9l-w881IV-AvoY64m^&7PvOwxnDhikB;trP zOzDp)-(hMornX|*TR2K;#*9vwaSSt?akLUgzmHjSG5bRtGY4~aV$NmExr1W|;Mi0g zI}yj;!Ep@7NpRdb9Cs7Pcfed5%nild9GvhrPPmA#IpOQ&`1)Ra{Wj(qFz*cJJK@Au zoRo-@&f??=IAtA9X~rqXaLQ*m<vLDjmEu%CoZ26!zKv5aV?iJmsBuOX&dkMG3M_QN z!b&Wv#iBNxEyFnza83)(?SXTb;oS8&kKw#UIBy@$?}YQKasK;QoQTEESYnSQ6<D$X zOFqK|&bVM8E|`G}cH+XZxKM=)zr;n}xM&_OI*yCoP`Wq^7n^YL@3<rnm*{Y*JuZEO z%dK(weq6B#OJlM00ZK<=nJbq4h~?o}UW4UdV#P05)dOV-C=WpSEmWLD<w0EeI`R!z zEyL<MtZu^U53u@EtiFQPcTw$u>I76TMfH2A{utGlQGFLR*{G2gqUHi>9-~%_+CiwD zidq?Jx1i1mb@{08g!;2svkDElSi2nS-bcX!8|Gpohm9?``X^lLjq81J!w}r?DQ?Wd zjep>#1-R)me5)&N9)w$d!>tC~`Xg@h$8D={+d<s!joagJ`*mzm<BkoutFsh$negp& zY#xryhjDic?hD5KpP{K5O>Ov2KE4}{2aE81AN=4~JoF77o`6Sxz~fGMA{qaYg{KDN z>D7297tfBvvzzggVfZP-^BeK=82n-+ewB?EF5}nx@ZxB^cmOY*!Ee98@00QJT)f%= zf7If&uTc8aPQ0FvH%8#CK)hXyza-$@C;01nyvOj~B76{q4|DM01$-2bzq?~gH~gap z+ms9=7?U#2k#XCY)vwI@b!L5u*{YcRF6P*mIaM*25ayD}T$VDI2IgX7E{~aOJabhr z*Uy<7V{TE*Z3=S}n49!t<_^p~fVmH1?$ylwYvz8Dxqr(%Ix&x_%wrGp%x9ho=6Q&D z{)>5CWgTxapWe)O1?zO0`9(25f%%6q@j@oP$0QOa8NnoTnWT{g{F8NwVqKeAU@PlZ zz`9*wL1S6ac@`YWf-70@53KuO)_oo8ZkDo;JQi|{g?h5k0v5WDg<fT01uU$Xg;le# z4J_<^7IvG3GZsFOg%`1K1?w@9^?1M{idp0k7MaH)RV?y7)+?6v+Q*_?SyVoYn#ZCl zSyTgy+QXv0U{S5CcLeJ_gZ1%ZeN-%Z4vWoT{RXgp1+1UIr2QYUxDpnpV{zA6+#f7~ zv4s6>Kpso<W{GdIf!)}kH`w5MHsl5y`UxA>pADPGhTURG<5|+jEO{_X9><brvgG9~ zxt1mGX33Y?@Xl=bGB*4%8!?-WXksa$EG3<#6tEN}OL>!}9AzmNS<3G$)s3b0VX4wI zmO6{2mb27-EcGNyy~R@7Seg$@>&?=Jvb1EDHjAZ|v9yCM?HiW%fQ__eBmLRPp=@Lc z8<oRG@ody;HtGr+^&3mKXX&9VJ)Wg!v-A>{Ue3}DEd70!{xi$)V;R{jV=T+aWf`xt zjC__cnPn8Pj2TjvQOGiuvkVQ(Si>@ou#C@G#toLqSf+%HPGMQ|SymIvy1}yJSauW3 zZe?TQ*cc_t31vCE*jODKSIEX!vfM<LJCWs9vI+TY!Zr5#EcW^p_C_|#b7FbrEbj=* z@6GZ*V)+-@!~!<)H#SMdCf#R~r!wi}ZEW%#HpP!k$zfCGuqlt()FEtY9h-WV6^K|t zEt}rPW+bs$jjU)FD|*Cc&t`MFvN?rp&H*;(A)A}U=5A*5tl7Lb*t{ET{#;hvnH8U5 z#Sd9Y04o{JN^)6AAuD;Gm0V{FY}kUWY{40};0LyFIa`#-7RLfx63Uin*wRq8)X0`z zV#|iIW#`!Pv26L<Y{ha`>cUEIGwH9a><BB5W912~eBdnS_`M0|<wI=R+J4{OBr+ZM zz=R~v+U5GnN|~%e{6`1dO1;crXw)0TCdmX06mc4*NJyHDo!gn2lW{RqicHrgW4ef` zMW*ON9Lt0e#hiyQJAku6k+5zV=PjrMI49GY*%)apj9th%n;c5;l%sH@96e1xm*F*h z%3iI&*Br@`#{~mL!ayxn+O&c77~+p>F*T~K%{*pcdqG><gYAdgfNei4<wb36_r?t5 zsc1}DTiYKb(Jn^b92S`pbr@)8QD{*z)rgax@upKo9MA0ZRl2HjnOr6on%CfLJDFZy zQ&*$Yi-iO)&aXXNueW5^x^v@%9c$5F7`_H4{2x^_Q8gQpqx-$=fxC^?jeLb%Vmh=L z-B7f%*1DFLD<s1ATQD=M#%%O7TiH9m*VX(Q@=aXRO;2;EZEaOeMMYIrh4_imwxXu0 zwzj6GRxC`~ig}*TvyYT7#Dwp+;vL8G%F1$y`}%T2Wt~{Kv<=6IsKAnwnBuqN98Xb| ztfHbu)*vyN4&m=Cf^V!{#W(T|6^(o?uhCZ5G@fq!=;-O4dv?9E{?lq*wT{<`YOB<h zVkxgsD#}gYAH{6upsMD1aW${5uC5jmkK-X!A2@*=+UevvxlAFKiv^dHxZO#nRp`a; zSIcxdtzKd}eG<daD^SiaR8{aI_i+`xOs(MMe3go?6s%5Rf00J3*Q>NLiI8#%eP2>G z?-cg&3ZjZDEfsUAV)gTi`>3L)r6Efr;v<`Eb<edpoJND2`{pWsl6)!E(=6lP(2)XR z%V~^$N&C;IvC;9Vsk@$9TJteZva+kxi8Z`htJVr_pI}U1ijKfH@CF5igx6>&Xx|+_ z&wnU#j#z0{4f*`tMQ-cfU9@hIInjOVS@RCh7ojNn6n(|dm5JP^S6A1p(;Gw+Y~@-x znXS`_h3%hWgzKv<XnCXX)2CSRk{!k8al&7vOqb5%B5OOHLL;k`D=GGQ7tn{YTFNRY zE4zTXc5<CUZ_sL~saqG&FGBG&s}=JX`R&%cUR$SAi{7lY)~U66>hUACT9rmAUdgLg zuH;44wx+nRaiVL_KcdX3p6<Ru6;+j$l9rAyhNZcqt)a?LAwKVAPP9K~NglBeOy_^b zxj1-@mxk9=YpO+$hMG0jmfqoOc)da|*NC22N|b74wUSrzij^vrOsSOdG7*h<zDgt0 zD>W<WmlvvT;t7uAg^{<=+e4=$RV^B8jmq+{UAbCVdW*L6YE%6!dc9CBY`<;E3MX#k z0n1!vlHS1s$SJiVq3>OMz^Q2-i~JQMZK%Zgajo$C&loD`enpQCO07bpP|Imp%2i5| z+V?AtbJl1yYD=%{R9cIQPQPI&TPZRn|Aum8RPf0?jQ&eakNX(SX-P%eeSGYzoH#ji zNfe*PXRgoPt<)%J0F$RGrCcQBJ-|cBJI&diJo%&2h*~s{hFU9iGOdiS;$;dFY0*3x zYOS&a$?~gEt1Pjp;YE*>HhNyK(dg9_U|u8YWo0UOh`F4{pYOam-KNf9sH>|qluJzC zK1N3tZgw>v_LNpslu24xtZi9ErL?TJqF!>jh1n1z)YsP5i_HzT^%b>cVnO@_^SW!u zT<RF5c(^SEg$$A@mQ+=!L<*H&D>-GWQK}VkrAjFlc0R%U5G9F|NgDBIwtNl6ty<L7 zV9nD+p;gP2;uKq@My1tj)Ecoc;19e+UDl};+h|&l@$*&XmT94kucG+N_(~ODUKhgp zi?q6$8l|pEQa6VQ^g37a6J(1luk#W<M^80O9gxMKUAdm#R*g=r6EYZ!apkqTMt&7v zE4Pd`jh0_yGBD<7%~fkerVX|%)fTHwzc{nr4vti!)>|7lYU{KoghL*zlWBx6bH*31 zooP}hHbrD-nRE>X%N+c9R~8mkTUk@tK0UXnY>Ssxl!~A9u_-UDT_-WCZJ$5$`@OdP zC26l`iVtLNuAEXPGG#`y%T^+ptgK8gtCtAz{n==dUSD4?)0at1js4kdbXIIIO8E8a z28~v<vfA3zIi5|#G0*#TT1%ddWmdQJuGpMsF0g&x&n*RJS3hg(7T1;n8_R0YKKYvq z{;k5a7ZpsuB(UQgGl)zF2C*9=yIWoczD8ed5DA-7SOkhp7gN|?PNb_B1VugBXB@@4 zF;{+H?IwN`f3TvCujBOweyi!@3|7vGWR+Fq1uZw@vRSl<)fi2>*Vs=azgfG5e~aIu zQ1fb@{#6T=d2EY=Mph%%@-!akHHyh+eQZQkN<A+T=H;_+8XW8L**f=B%iK~)bB=hF z?bDEF+Ei54)Jn{UUo3yEhhLhGj@!1cmgY>G+M22gNxJ2c;pqZuEMf7f>&+i~S`<qD z?<kar%!;QIpebhobFzthv35_lrEx-Qx4|H8wl%I=RWE)NX|uXvg;X->#gj+VU-)6# zwTxwRtU@GMNm(sztAs`=Yp~EhW$Yu{Qhr%kDXn3T%2<s<JHMQ-tY6NXYRcJXR)0P= zO_8%ACkK8-<uZOLzrrBpg>MY3O{CKqYUH{~iRoG```wlXU}dFVE=YtA*Rnv9^BVRh zJ})!9x0WU0iyBVr*(H$>*vLFhty@`$=((V!axX#s39~a5?Pj~!iz>nUm`3C*rB-N1 zG6F13iQAhJsHvVN?+=(O`>UFsrrJa7@JlV{A7OW$UX?RZbAgr@=q39tN;{bDe$MnB zzBC`HmhwyZCF&&_WsPi&Vl_{LjOIv@Y4vsX1np|%+KMu{qDm~_edcXfQ>CqXnqB`J zTWnXQRn*q&wKZZP{U%HP+oygn31{A7Z@-$&cQiZO{#{!OP2P9d1AM6#wfJv3|Ek2x zbm}fUO<w$s**?O6d+fm9I=WC;eV^5~w{57?7}~w{bkUYoNm^WOEirgnN^bcJ%@3HZ zu<`+$;__3=E>C{$$~npk`J&ermGFZ4ZO+?SR70zyTA`6w&*$gTIC;qCzuLB^@XkXf zd(}}N(_}L<*^g}~)0UQ&DN4mHp0+J9r7e<{(6W|HQH!_D3Po9IskY20F?-w8x1^gT zE#c;vQc+8Q?TUIuLqomRC^iS!nqwNw0p{>JbGpdvU}MzQH#8{fS4d3dj6+9`w$~<^ zGdJC;JznK9ORxX##{K=Czt&DK(^Wn_AS8NlPlw3!x`o209$fcVPYKaNe@|}2OVxCq zTpw1wLOAKk&G_5%MYL&^7guZD!%(HKqLWvpI5gDOLM^8+$*oWu3$3Z4Q`oIrwiarU zlL&==TqY|M35Wc+P$q~>H~qLN9CL3L5{o(U%LgzM9l&yI+SjkAQ{deoZcR7KoNC#} ziCeO5GiQ$}9m|j9$24Sa6`8Z!r?U2Erh~!U89Tc&ty~bax_Yt6(2L8rv8z9!KXKxO zj5Y{I1~Cs`VTIT^?#+c*ZLa3bZq=Ta<wI={J$RHSWDa7H4)>qrS*t5+WOelVP4CO` z9IFzU9>j5OHg+|SJw4lZlY+xwP7>O_iCp$ah36lW%(EX)vT-)&wRCPW&u*e)k$HU+ zXa1DrE9plf<dD2wyL?OYldXb$FgLNUQbenstF=P8Qo+-2wVbwJW=n}isa>h1DL`AT z(NKw*N-R4%Dxe)5?JFfixM1nC+DfHLZmCU!`K8+J!Y|dXZdbQbN41?_TfY#^E@a*I zde0VTvlIWQ-rBMPR94dIjejDvIJ7ugliGHp)bf|rYH3&b%qW+3tLVT*npd`4_014Y zGWaD$surgfrx%J|wolcrNd3aQXZE%088DRV8~kdkB>u89FEzSmC^zk8;lI@!HjJz2 z`Cn>okBoV(ph=?P`FPlW--=0*#BH>;5vggfFA;jBal!T)Rr}dQsS*j3)3||lWg0nc zIcb0j&1qb};Af9jDiL2?GIQpf4b8i^Y}m15V=*sQtJEv2`KP)}ZX>y9bWl|D)s~Z< zrn=gcJ&KE@y`)8*R#zuB>C?G1nw@E5uGR1~L*B^X_S;ped97A$$?nMH1iNx=d*dXX zF`7$Z(ph#7?MK^>x6ikqW<T40p?#^n&VGYKg2RuFbl1ko$!VTbl~cWQ59e6t!Okn3 zmCicn51hYpzTd&ELtuwt9VT}u?;v#ewZmf<TbFQ`N|*Ot&bT~sUE{jb^|qU<Taa6% z+hDgmw`p#>-TvujcDHvQ>dw12yMO5ZmHQnJ&Lh}kywu~k$CsX-o>88>r@?c*=hvRU zdpUVYypp`Gdi~nbwqsz&K^@=dxUJ*$j;-FkyoY&D@vii4^!~>CkxxgT9zKOW)jo%O ze)9$2LB8d_M|^+pG`Z9IPA59u^Xut1)6d{%@=x$D_21%u*8jG+yEsieS*#bI5&tG} zmGqSqOLj@lOQhxiyMWOFa{?LyP6YhW*|zhz&eG0`&PO`m>C&&u$}ao6T<X%&b$r+D zUC(!I3G5u095^AcJn)^s+ktJ}#N86Qz1D4EP-IY6(E6ZbLEi;W3Z5Ta87u^U)_qR* z%I=%HAMXA`_Xi>3kcf~WAy-2kLc4_~h31Bqht`E23;iPWdYEHav@}c^W(?aI_OGzV z;UVGi;S<73!k33PhJP4-KKx4f{T}{3hV<CfV|S0+J^gz|_T+oM9T69i60s=aaHMDC z@W=&``+9lz%J22BsMn(AM(KLT^`6@MSRcneQGKTN`KHe=(Gk&x=nc`wqQ8v(F8ZI* zx1%3K{}E#y;}qi=;~CN?HBM!Gs?Q_Sv|Ph!Jkhs5T@&WK$WtB!pq_C)NDvA_21 z(6@8n*uD$<D*77xp6J)D-{gJ^`YHMu`|a<~^-t{oTK_Zs&2gD=YvYc_eG&Il+~aun z_^|k*czJwd{F(Tx3APDQ3G))938sXf6Mh{~FraL}x&gZf982t(I56?`#3hNJBwkH4 zO9yrw*mvOQfdvDr2kseod64y>E`ufxT0dylpdSZ494r|eGgvlw%aDab8i#Bia(HOB zp}mKW8!8)mXy~<}cZY=zn>I`}?9i~2!+uB#Ptqp$Pad9}lRPtdd9oq-&E)gRw}*4X zONU<^{>O;kBNmNl9`RjDr<A#=15#(D<)polwjixCZFQRT{gG^B(#YbG<s(;(+&Xgq z$g?A_jq(}Qd(_xb%SRnbXX)bfQR$P?E7NzTznA`b`n?SAjMNNihC1U;CYRYcGbwXv zW>e;g(N?1iMz0vnkA7?Phok?Q)i-NF*6OTHS?^?>$hwmCIJ;MNV)kp<vg}RS$Fi@D z={;uFn7w0e<=E!<=5!yB6O%I}XGzZ6IakMejvYRB<=8Xh3dSuS_ujZ~#@!m%I=<KV ztnstPFC1S!zIwbc{z0xo?$q3(TxITixpyYO1eGas95+H_rK%7)2>G5|*H;&GFK0*F z=U)z6I@$g=i~H$`+$SQDu7-|JHFSJ>YbMtdUHLcv?f4{InZ>oxf>v8rSy53b7Ood^ zJ?$!LD-HEEhFY<yYZ2#yj{G9}0#?D7(ANWz5I37keEP{uBa@iqv$=GPtC8uds^s!2 zaZ8&mv9w#L(Tlg*($TF}Z2r>5SXWjdnf2m{xy|-@4O75eE}IG07IUGdwez`EfBBLt zcC6i0w};;?q61%@N;otdeM}7tIE`~Z%b|?+Y_w?qFP|;Vp^qoEguXbSJ^OAcHqEZ$ zPP13eF#{Fca$BF5zc95Qo-JRPDh-ul)3+L~jB%w}ktt8l(Rq`aww$me!mV0vnwZX6 zmIYJdU^#KMb5COEtoTgEw4#o?fg-iKu1=+<wWL_!VmQT0k+4JHiY+Hk85IUKaN(#j zWjAnl(B|3UDz%a8Y5mG^qy5AaZo0aTdqPL!KaW*6Hgdn&So21Mkrys(W@1N?K}O$B z%Xx*0zMa}NaX(pc$_kO`x3{^UkfSjsT-wdevv?z<@8OD`nP57$hg*OWx=sX+gf0+D z*YfD9A-h2Mn#-aKM%h-qOyl-(At<e(G6SKOu!2xZkP^xW<%9}CC83HSBghE~f|8&j ztRy58h7(2*1VRH{W%8m6aO>!T+lO!n4#N>R3di6hI1VS^BzzB7;0L&hNtm30!!Z{p zP=y!}Q6*mxlfgk`a!<P6hb)rNn-D|jM~EjR5(X27Q7sYu^*aXpVt<Us0XPr`3mFHv zkYN$@xEH~qq7NaO5KHJw=ue0vBoGD=1`-Alh7g7lk|<jA7j+yWe0YHCHZ7luCK4tQ zCKIL*rV<JW(+JZEGYB&Yvj~Nj>g4um3Ozy~-RE)v5AX&*2%x9O2`30A3I8CRYM1^V zt_mq8E;BEHb!J^yS759=J56a23nrlu;zC&%rQxgx<<Am6Cgc%%5}F7*2s;V82yYXb z3A+h<2zv?p2>XR|Ca$CO2(jk~pAbGJoF{xn_?++s;Y+f+E8TIlbRS)WfgNxF-i7bc zhJq4J(T=5f_oIl%QOpx4>WLKhK{yzPU<xk9Ww;zyU@1zm5^2z&4y?c#ywRTS4I)^v zudRULDk1V9*GrlOHZ(lGr2+CCoZv>2<jHm}lepvU9Nny?VPkok{){`yjUw(?d)dfm z+)*x#xT92dluIS<Nc+>2XWUV4#53+NH=H<2YlpdHu#&d3M>&cwoaBNjJ;8OO^f*U7 z03UIkDLuwXC_T#2g*`aJb)xhz=R@fst|O%%(#2gb>e?>Qod#?ly0kkGk|2%iPR~wq zL6n~00x3Ptb)oblE`ZWwoS4$1oF5cfRQgipFy~F_A-aHQQE5%Dtp_O$gm5kjIErc- z*Nf-~qI9>K-k3Blf@m_)o<x%{%@SGat#5%Yb^NE8|NoFb3;CG;Cm|R1y~iz)c5Zuu zT?kzXfrM^^AVM&qJ0XM+3K<yIb`ZncKEfVttFdQWK1L89Nqn!iQgFinlKSs7#gnFH z(zN=iCTZJdQq}xS)j?7vCRLLEpzg0mSycULR1F!`OqvdoCM6lQ8Qh<1`cKCFsZILA zM~k}6WLYy=rX+O-pZQoy>YAS!_IIjY)nxJU;7gh;hSmJlFzH{y_NQh4S>5J;^Yh?; z>F2B3EK#!<w;H9dhOHUw|6^bN#i%yl|5~yyIQ;KArPR~UZENdGUGM~KQA`6)LI{BF z*qJ~x6?P>A(u{?4KV00Nw)1UQ!JhMK9nE>SmUF(XlQ_TD`JA{lg$tm37s>~=&g6oq ztb6OscFC<Id4VLilH^HFDsF8c(F-K{4v8Kn(SMNW;daqn64gIbx|Eb=k)(<w=aJ+* zl3e;+>7-|p^GRtrN#>H|dXij1lI0|+BFXZ0oij+X;f0}65(#KsMWRbdbP0);lc=g) zbP0)WCDC$Hswbs0NwR??%Slp4l6sOfzM}MH$*s>MRj)K}F;qo5b4lks(kZnB%Hq@f zXFge)U(&AhPoHLzsER~Klcb&`E#5CBr4_G8T6~)EOmY%Q8cFhHm&$3j_eC-7@B*+i zcEPR~h}|$~I0j>P48c%Z5Qbwq*OBw#I&uD-gzL<8<+^dfw9Z+6Ec-(E;z4|zg}(UT TETv9pdHy?q$@>U**yVo!D&8y! diff --git a/spare_parts/Scorek-Bravura.sfd b/spare_parts/Scorek-Bravura.sfd index e23157749..1d1569477 100644 --- a/spare_parts/Scorek-Bravura.sfd +++ b/spare_parts/Scorek-Bravura.sfd @@ -22,7 +22,7 @@ OS2Version: 3 OS2_WeightWidthSlopeOnly: 0 OS2_UseTypoMetrics: 0 CreationTime: 1461314537 -ModificationTime: 1496173965 +ModificationTime: 1501364141 PfmFamily: 81 TTFWeight: 400 TTFWidth: 5 @@ -75,13 +75,13 @@ NameList: AGL For New Fonts DisplaySize: -128 AntiAlias: 1 FitToEm: 0 -WinInfo: 104 8 5 +WinInfo: 32 8 5 BeginPrivate: 2 StdHW 4 [78] StdVW 4 [90] EndPrivate TeXData: 1 0 0 262144 131072 87381 0 1048576 87381 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144 -BeginChars: 1114115 1074 +BeginChars: 1114115 1085 StartChar: .notdef Encoding: 1114112 -1 0 @@ -47745,7 +47745,7 @@ SplineSet 387.5 457.666666667 379.666666667 477.666666667 373 495 c 0 366.333333333 512.333333333 361 526 357 536 c 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: B @@ -47791,7 +47791,7 @@ SplineSet 257.666666667 574.166666667 244 573.333333333 232 572 c 1 232 421 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: C @@ -47833,7 +47833,7 @@ SplineSet 606 24.6666666667 575 12.6666666667 535 2 c 0 495 -8.66666666667 448.666666667 -14 396 -14 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: D @@ -47870,7 +47870,7 @@ SplineSet 613.666666667 589.333333333 640.333333333 552.666666667 659 508 c 0 677.666666667 463.333333333 687 409.666666667 687 347 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: E @@ -47962,7 +47962,7 @@ SplineSet 560.666666667 542.333333333 536.166666667 552.166666667 508.5 560.5 c 0 480.833333333 568.833333333 450.666666667 573 418 573 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: H @@ -48073,7 +48073,7 @@ SplineSet 102.166666667 595.5 108.333333333 647 115 693 c 1 264 693 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: N @@ -48101,7 +48101,7 @@ SplineSet 676 0 l 1 545 0 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: O @@ -48148,7 +48148,7 @@ SplineSet 670.333333333 586.333333333 695 548.5 713 503.5 c 0 731 458.5 740 406.333333333 740 347 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: P @@ -48183,7 +48183,7 @@ SplineSet 394.5 555.166666667 378.666666667 560.5 360 563.5 c 0 341.333333333 566.5 320.666666667 568 298 568 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: R @@ -48225,7 +48225,7 @@ SplineSet 444 508 431.166666667 532.166666667 405.5 546.5 c 0 379.833333333 560.833333333 342 568 292 568 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: S @@ -48277,7 +48277,7 @@ SplineSet 101.666666667 151.666666667 127.166666667 141.5 157.5 132.5 c 0 187.833333333 123.5 225 119 269 119 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: T @@ -48333,7 +48333,7 @@ SplineSet 544.666666667 38.1666666667 515 19.3333333333 479 6 c 0 443 -7.33333333333 400.333333333 -14 351 -14 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: Z @@ -48362,7 +48362,7 @@ SplineSet 569 693 l 1 569 585 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: a @@ -48415,7 +48415,7 @@ SplineSet 174.333333333 533.833333333 190.5 535.833333333 207.5 537.5 c 0 224.5 539.166666667 241.666666667 540 259 540 c 0x8e EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: b @@ -48455,7 +48455,7 @@ SplineSet 519.333333333 438 534 409.166666667 544 375.5 c 0 554 341.833333333 559 304.333333333 559 263 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: c @@ -48491,7 +48491,7 @@ SplineSet 87.1666666667 90.6666666667 70.8333333333 119.833333333 60.5 153.5 c 0 50.1666666667 187.166666667 45 223.666666667 45 263 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: d @@ -48531,7 +48531,7 @@ SplineSet 534 776 l 1 534 17 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: e @@ -48576,7 +48576,7 @@ SplineSet 203.166666667 341.166666667 200 328.666666667 198 316 c 1 395 316 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: f @@ -48608,7 +48608,7 @@ SplineSet 70 622 89.1666666667 676 127.5 716 c 0 165.833333333 756 222.666666667 776 298 776 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: g @@ -48654,7 +48654,7 @@ SplineSet 495.5 515.833333333 510.666666667 512 524 508 c 1 524 66 l 2 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: h @@ -48686,7 +48686,7 @@ SplineSet 219 0 l 1 70 0 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: i @@ -48713,7 +48713,7 @@ SplineSet 168 766 188.833333333 758.166666667 206.5 742.5 c 0 224.166666667 726.833333333 233 705.333333333 233 678 c 0xf0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: l @@ -48739,7 +48739,7 @@ SplineSet 268.666666667 117.333333333 283 114.333333333 301 113 c 1 280 -10 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: m @@ -48785,7 +48785,7 @@ SplineSet 359 0 l 1 359 279 l 2 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: n @@ -48815,7 +48815,7 @@ SplineSet 70 0 l 1 70 508 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: o @@ -48854,7 +48854,7 @@ SplineSet 338 114 364.166666667 127.5 382.5 154.5 c 0 400.833333333 181.5 410 218 410 264 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: p @@ -48894,7 +48894,7 @@ SplineSet 510.333333333 439.833333333 528.166666667 411 540.5 377 c 0 552.833333333 343 559 305 559 263 c 0 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: r @@ -48922,7 +48922,7 @@ SplineSet 394.333333333 523.166666667 404 520.333333333 412 517 c 1 387 394 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: s @@ -48967,7 +48967,7 @@ SplineSet 89.3333333333 129 115.333333333 121.166666667 142 115.5 c 0 168.666666667 109.833333333 195 107 221 107 c 0xb8 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: t @@ -48999,7 +48999,7 @@ SplineSet 68.1666666667 150 65 181 65 215 c 2 65 657 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: u @@ -49029,7 +49029,7 @@ SplineSet 519 526 l 1 519 18 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: Zacute @@ -51915,7 +51915,7 @@ SplineSet 405.5 144.666666667 371 66.6666666667 337 0 c 1 213 0 l 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: w @@ -51962,7 +51962,7 @@ SplineSet 466.333333333 50.6666666667 450 101 434 151 c 0 418 201 403.333333333 251.333333333 390 302 c 1 EndSplineSet -Validated: 524289 +Validated: 1 EndChar StartChar: z @@ -51991,7 +51991,469 @@ SplineSet 465 526 l 1 465 426 l 1 EndSplineSet +Validated: 1 +EndChar + +StartChar: zero +Encoding: 48 48 1074 +Width: 568 +Flags: W +HStem: -14 128<234.107 335.847> 581 128<232.982 335.847> +VStem: 34 152<179.501 516.685> 382 152<176.994 518.102> +LayerCount: 2 +Fore +SplineSet +534 348 m 0 + 534 231.333333333 511.833333333 141.833333333 467.5 79.5 c 0 + 423.166666667 17.1666666667 362 -14 284 -14 c 0 + 206 -14 144.833333333 17.1666666667 100.5 79.5 c 0 + 56.1666666667 141.833333333 34 231.333333333 34 348 c 0 + 34 406 39.8333333333 457.333333333 51.5 502 c 0 + 63.1666666667 546.666666667 80 584.333333333 102 615 c 0 + 124 645.666666667 150.333333333 669 181 685 c 0 + 211.666666667 701 246 709 284 709 c 0 + 362 709 423.166666667 677.833333333 467.5 615.5 c 0 + 511.833333333 553.166666667 534 464 534 348 c 0 +382 348 m 0 + 382 382.666666667 380.333333333 414.166666667 377 442.5 c 0 + 373.666666667 470.833333333 368.333333333 495.333333333 361 516 c 0 + 353.666666667 536.666666667 343.666666667 552.666666667 331 564 c 0 + 318.333333333 575.333333333 302.666666667 581 284 581 c 0 + 265.333333333 581 249.833333333 575.333333333 237.5 564 c 0 + 225.166666667 552.666666667 215.166666667 536.666666667 207.5 516 c 0 + 199.833333333 495.333333333 194.333333333 470.833333333 191 442.5 c 0 + 187.666666667 414.166666667 186 382.666666667 186 348 c 0 + 186 313.333333333 187.666666667 281.666666667 191 253 c 0 + 194.333333333 224.333333333 199.833333333 199.666666667 207.5 179 c 0 + 215.166666667 158.333333333 225.166666667 142.333333333 237.5 131 c 0 + 249.833333333 119.666666667 265.333333333 114 284 114 c 0 + 302.666666667 114 318.333333333 119.666666667 331 131 c 0 + 343.666666667 142.333333333 353.666666667 158.333333333 361 179 c 0 + 368.333333333 199.666666667 373.666666667 224.333333333 377 253 c 0 + 380.333333333 281.666666667 382 313.333333333 382 348 c 0 +EndSplineSet +Validated: 524289 +EndChar + +StartChar: one +Encoding: 49 49 1075 +Width: 568 +Flags: W +HStem: 0 21G<254 403> 673 20G<291.667 403> +VStem: 254 149<0 499> +LayerCount: 2 +Fore +SplineSet +70 549 m 1 + 89.3333333333 557 109.5 566.166666667 130.5 576.5 c 0 + 151.5 586.833333333 172 598.166666667 192 610.5 c 0 + 212 622.833333333 231.166666667 635.833333333 249.5 649.5 c 0 + 267.833333333 663.166666667 284.333333333 677.666666667 299 693 c 1 + 403 693 l 1 + 403 0 l 1 + 254 0 l 1 + 254 499 l 1 + 234 485.666666667 211.666666667 473.5 187 462.5 c 0 + 162.333333333 451.5 138.333333333 442 115 434 c 1 + 70 549 l 1 +EndSplineSet +Validated: 524289 +EndChar + +StartChar: two +Encoding: 50 50 1076 +Width: 568 +Flags: W +HStem: 0 125<219 517> 581 128<176.118 323.241> +VStem: 344 152<439.024 560.196> +LayerCount: 2 +Fore +SplineSet +496 511 m 0 + 496 485.666666667 491 461.333333333 481 438 c 0 + 471 414.666666667 458 392.166666667 442 370.5 c 0 + 426 348.833333333 408 328 388 308 c 0 + 368 288 348.333333333 269 329 251 c 0 + 319 241.666666667 308.166666667 231.166666667 296.5 219.5 c 0 + 284.833333333 207.833333333 273.666666667 196 263 184 c 0 + 252.333333333 172 242.833333333 160.833333333 234.5 150.5 c 0 + 226.166666667 140.166666667 221 131.666666667 219 125 c 1 + 517 125 l 1 + 517 0 l 1 + 55 0 l 1 + 53.6666666667 7.33333333333 53 16.6666666667 53 28 c 2 + 53 52 l 2 + 53 84 58.1666666667 113.333333333 68.5 140 c 0 + 78.8333333333 166.666666667 92.3333333333 191.5 109 214.5 c 0 + 125.666666667 237.5 144.5 259 165.5 279 c 0 + 186.5 299 207.333333333 319 228 339 c 0 + 244 354.333333333 259 368.833333333 273 382.5 c 0 + 287 396.166666667 299.333333333 409.5 310 422.5 c 0 + 320.666666667 435.5 329 448.5 335 461.5 c 0 + 341 474.5 344 487.666666667 344 501 c 0 + 344 530.333333333 335.666666667 551 319 563 c 0 + 302.333333333 575 281.666666667 581 257 581 c 0 + 239 581 222.166666667 578.166666667 206.5 572.5 c 0 + 190.833333333 566.833333333 176.5 560.166666667 163.5 552.5 c 0 + 150.5 544.833333333 139.333333333 537.166666667 130 529.5 c 0 + 120.666666667 521.833333333 113.666666667 515.666666667 109 511 c 1 + 35 615 l 1 + 64.3333333333 642.333333333 98.5 664.833333333 137.5 682.5 c 0 + 176.5 700.166666667 218.333333333 709 263 709 c 0 + 303.666666667 709 338.666666667 704.333333333 368 695 c 0 + 397.333333333 685.666666667 421.5 672.5 440.5 655.5 c 0 + 459.5 638.5 473.5 617.833333333 482.5 593.5 c 0 + 491.5 569.166666667 496 541.666666667 496 511 c 0 +EndSplineSet Validated: 524289 EndChar + +StartChar: three +Encoding: 51 51 1077 +Width: 568 +Flags: W +HStem: -15 127<92.9336 316.311> 304 120<148 299.464> 583 126<135.351 304.398> +VStem: 328 149<451.505 559.368> 355 150<147.524 266.379> +LayerCount: 2 +Fore +SplineSet +228 -15 m 0xe8 + 210 -15 191 -13.8333333333 171 -11.5 c 0 + 151 -9.16666666667 131.666666667 -6 113 -2 c 0 + 94.3333333333 2 77.3333333333 6.33333333333 62 11 c 0 + 46.6666666667 15.6666666667 34.6666666667 20 26 24 c 1 + 55 148 l 1 + 72.3333333333 140.666666667 94.5 132.833333333 121.5 124.5 c 0 + 148.5 116.166666667 182 112 222 112 c 0 + 268 112 301.666666667 120.666666667 323 138 c 0 + 344.333333333 155.333333333 355 178.666666667 355 208 c 0xe8 + 355 226 351.166666667 241.166666667 343.5 253.5 c 0 + 335.833333333 265.833333333 325.333333333 275.833333333 312 283.5 c 0 + 298.666666667 291.166666667 282.833333333 296.5 264.5 299.5 c 0 + 246.166666667 302.5 226.666666667 304 206 304 c 2 + 148 304 l 1 + 148 424 l 1 + 214 424 l 2 + 228.666666667 424 242.833333333 425.333333333 256.5 428 c 0 + 270.166666667 430.666666667 282.333333333 435.166666667 293 441.5 c 0 + 303.666666667 447.833333333 312.166666667 456.5 318.5 467.5 c 0 + 324.833333333 478.5 328 492.333333333 328 509 c 0 + 328 521.666666667 325.333333333 532.666666667 320 542 c 0 + 314.666666667 551.333333333 307.833333333 559 299.5 565 c 0 + 291.166666667 571 281.5 575.5 270.5 578.5 c 0 + 259.5 581.5 248.333333333 583 237 583 c 0 + 208.333333333 583 181.833333333 578.666666667 157.5 570 c 0 + 133.166666667 561.333333333 111 550.666666667 91 538 c 1 + 38 647 l 1 + 48.6666666667 653.666666667 61.1666666667 660.666666667 75.5 668 c 0 + 89.8333333333 675.333333333 105.666666667 682 123 688 c 0 + 140.333333333 694 158.833333333 699 178.5 703 c 0 + 198.166666667 707 219 709 241 709 c 0 + 281.666666667 709 316.833333333 704.166666667 346.5 694.5 c 0 + 376.166666667 684.833333333 400.666666667 671.166666667 420 653.5 c 0 + 439.333333333 635.833333333 453.666666667 615.166666667 463 591.5 c 0 + 472.333333333 567.833333333 477 542 477 514 c 0xf0 + 477 486.666666667 469.333333333 460.166666667 454 434.5 c 0 + 438.666666667 408.833333333 418 389.333333333 392 376 c 1 + 428 361.333333333 455.833333333 339.5 475.5 310.5 c 0 + 495.166666667 281.5 505 246.666666667 505 206 c 0 + 505 174 499.666666667 144.5 489 117.5 c 0 + 478.333333333 90.5 461.666666667 67.1666666667 439 47.5 c 0 + 416.333333333 27.8333333333 387.5 12.5 352.5 1.5 c 0 + 317.5 -9.5 276 -15 228 -15 c 0xe8 +EndSplineSet +Validated: 524289 +EndChar + +StartChar: four +Encoding: 52 52 1078 +Width: 568 +Flags: W +HStem: 0 21G<319 465> 155 122<162 319 465 539> 673 20G<309 465> +VStem: 319 146<0 155 277 511> +LayerCount: 2 +Fore +SplineSet +319 511 m 1 + 293 477 265.333333333 440 236 400 c 0 + 206.666666667 360 182 319 162 277 c 1 + 319 277 l 1 + 319 511 l 1 +465 693 m 1 + 465 277 l 1 + 539 277 l 1 + 539 155 l 1 + 465 155 l 1 + 465 0 l 1 + 319 0 l 1 + 319 155 l 1 + 20 155 l 1 + 20 264 l 1 + 34.6666666667 293.333333333 53 326.5 75 363.5 c 0 + 97 400.5 121.5 438.5 148.5 477.5 c 0 + 175.5 516.5 204 554.666666667 234 592 c 0 + 264 629.333333333 294 663 324 693 c 1 + 465 693 l 1 +EndSplineSet +Validated: 524289 +EndChar + +StartChar: five +Encoding: 53 53 1079 +Width: 568 +Flags: W +HStem: -15 127<91.7473 321.684> 568 125<232.768 484> +VStem: 360 149<149.124 267.151> +LayerCount: 2 +Fore +SplineSet +360 204 m 0 + 360 223.333333333 355.666666667 240.5 347 255.5 c 0 + 338.333333333 270.5 323.333333333 283 302 293 c 0 + 280.666666667 303 252 310.666666667 216 316 c 0 + 180 321.333333333 134.666666667 324 80 324 c 1 + 87.3333333333 386 93.3333333333 449 98 513 c 0 + 102.666666667 577 106.333333333 637 109 693 c 1 + 484 693 l 1 + 484 568 l 1 + 234 568 l 1 + 232.666666667 544 231.166666667 520.833333333 229.5 498.5 c 0 + 227.833333333 476.166666667 226 456.666666667 224 440 c 1 + 321.333333333 433.333333333 393.166666667 410.5 439.5 371.5 c 0 + 485.833333333 332.5 509 278.333333333 509 209 c 0 + 509 177 503.333333333 147.333333333 492 120 c 0 + 480.666666667 92.6666666667 463.666666667 69 441 49 c 0 + 418.333333333 29 389.833333333 13.3333333333 355.5 2 c 0 + 321.166666667 -9.33333333333 281 -15 235 -15 c 0 + 217 -15 198.166666667 -13.8333333333 178.5 -11.5 c 0 + 158.833333333 -9.16666666667 139.833333333 -6.16666666667 121.5 -2.5 c 0 + 103.166666667 1.16666666667 86.6666666667 5 72 9 c 0 + 57.3333333333 13 46 17 38 21 c 1 + 65 144 l 1 + 81.6666666667 136.666666667 103.666666667 129.5 131 122.5 c 0 + 158.333333333 115.5 191 112 229 112 c 0 + 275 112 308.333333333 121.166666667 329 139.5 c 0 + 349.666666667 157.833333333 360 179.333333333 360 204 c 0 +EndSplineSet +Validated: 524289 +EndChar + +StartChar: six +Encoding: 54 54 1080 +Width: 568 +Flags: W +HStem: -14 124<231.816 348.618> 326 116<205.688 353.125> 576 122<345.697 480.375> +VStem: 37 150<161.713 316.696> 385 148<147.93 294.219> +LayerCount: 2 +Fore +SplineSet +274 326 m 0 + 259.333333333 326 243.666666667 324.666666667 227 322 c 0 + 210.333333333 319.333333333 197.333333333 315.666666667 188 311 c 0 + 188 308.333333333 187.833333333 304.333333333 187.5 299 c 0 + 187.166666667 293.666666667 187 289 187 285 c 0 + 187 261 188.666666667 238.333333333 192 217 c 0 + 195.333333333 195.666666667 201 177 209 161 c 0 + 217 145 227.666666667 132.5 241 123.5 c 0 + 254.333333333 114.5 271 110 291 110 c 0 + 307.666666667 110 321.833333333 113.5 333.5 120.5 c 0 + 345.166666667 127.5 354.833333333 136.333333333 362.5 147 c 0 + 370.166666667 157.666666667 375.833333333 169.5 379.5 182.5 c 0 + 383.166666667 195.5 385 208 385 220 c 0 + 385 254 376.5 280.166666667 359.5 298.5 c 0 + 342.5 316.833333333 314 326 274 326 c 0 +293 442 m 0 + 336.333333333 442 373.166666667 436.166666667 403.5 424.5 c 0 + 433.833333333 412.833333333 458.666666667 397 478 377 c 0 + 497.333333333 357 511.333333333 333.666666667 520 307 c 0 + 528.666666667 280.333333333 533 252 533 222 c 0 + 533 195.333333333 528.166666667 168 518.5 140 c 0 + 508.833333333 112 494.166666667 86.6666666667 474.5 64 c 0 + 454.833333333 41.3333333333 429.833333333 22.6666666667 399.5 8 c 0 + 369.166666667 -6.66666666667 333.333333333 -14 292 -14 c 0 + 208.666666667 -14 145.333333333 12.3333333333 102 65 c 0 + 58.6666666667 117.666666667 37 190.333333333 37 283 c 0 + 37 349.666666667 47.3333333333 408.666666667 68 460 c 0 + 88.6666666667 511.333333333 118.166666667 554.5 156.5 589.5 c 0 + 194.833333333 624.5 241.166666667 651.166666667 295.5 669.5 c 0 + 349.833333333 687.833333333 411 697.333333333 479 698 c 1 + 480.333333333 677.333333333 481.666666667 657.166666667 483 637.5 c 0 + 484.333333333 617.833333333 485.666666667 597.333333333 487 576 c 1 + 453 575.333333333 421.166666667 572.166666667 391.5 566.5 c 0 + 361.833333333 560.833333333 334.833333333 552 310.5 540 c 0 + 286.166666667 528 265 512.5 247 493.5 c 0 + 229 474.5 215 451.333333333 205 424 c 1 + 219.666666667 430.666666667 234.666666667 435.333333333 250 438 c 0 + 265.333333333 440.666666667 279.666666667 442 293 442 c 0 +EndSplineSet +Validated: 524289 +EndChar + +StartChar: seven +Encoding: 55 55 1081 +Width: 568 +Flags: W +HStem: 0 21G<142 295> 567 127<43 344> +VStem: 142 151<0 137.24> +LayerCount: 2 +Fore +SplineSet +142 0 m 1 + 146 48.6666666667 154.333333333 99.3333333333 167 152 c 0 + 179.666666667 204.666666667 195.166666667 256.333333333 213.5 307 c 0 + 231.833333333 357.666666667 252.333333333 405.5 275 450.5 c 0 + 297.666666667 495.5 320.666666667 534.333333333 344 567 c 1 + 43 567 l 1 + 43 694 l 1 + 528 694 l 1 + 528 586 l 1 + 506.666666667 562.666666667 483.166666667 530.333333333 457.5 489 c 0 + 431.833333333 447.666666667 407.5 400.833333333 384.5 348.5 c 0 + 361.5 296.166666667 341.5 240 324.5 180 c 0 + 307.5 120 297 60 293 0 c 1 + 142 0 l 1 +EndSplineSet +Validated: 524289 +EndChar + +StartChar: eight +Encoding: 56 56 1082 +Width: 568 +Flags: W +HStem: -14 120<214.563 356.854> 589 120<223.712 344.621> +VStem: 39 145<135.285 257.602> 54 145<456.342 564.526> 369 144<445.276 564.967> 384 146<133.392 243.756> +LayerCount: 2 +Fore +SplineSet +530 193 m 0xc4 + 530 163 524.833333333 135.5 514.5 110.5 c 0 + 504.166666667 85.5 488.666666667 63.6666666667 468 45 c 0 + 447.333333333 26.3333333333 421.5 11.8333333333 390.5 1.5 c 0 + 359.5 -8.83333333333 323.666666667 -14 283 -14 c 0 + 236.333333333 -14 197.5 -7.5 166.5 5.5 c 0 + 135.5 18.5 110.5 34.6666666667 91.5 54 c 0 + 72.5 73.3333333333 59 94.5 51 117.5 c 0 + 43 140.5 39 161.666666667 39 181 c 0xe4 + 39 201 41.6666666667 219.333333333 47 236 c 0 + 52.3333333333 252.666666667 59.6666666667 267.833333333 69 281.5 c 0 + 78.3333333333 295.166666667 88.8333333333 307.666666667 100.5 319 c 0 + 112.166666667 330.333333333 124.666666667 341 138 351 c 1 + 109.333333333 374.333333333 88.1666666667 397.333333333 74.5 420 c 0 + 60.8333333333 442.666666667 54 471.666666667 54 507 c 0 + 54 533.666666667 59.5 559.333333333 70.5 584 c 0 + 81.5 608.666666667 97 630.166666667 117 648.5 c 0 + 137 666.833333333 161.166666667 681.5 189.5 692.5 c 0 + 217.833333333 703.5 249.333333333 709 284 709 c 0 + 324.666666667 709 359.5 703.166666667 388.5 691.5 c 0 + 417.5 679.833333333 441.333333333 665 460 647 c 0 + 478.666666667 629 492.166666667 608.833333333 500.5 586.5 c 0 + 508.833333333 564.166666667 513 542 513 520 c 0xd8 + 513 488 504.5 458.166666667 487.5 430.5 c 0 + 470.5 402.833333333 449.333333333 381 424 365 c 1 + 462 340.333333333 489.166666667 314.5 505.5 287.5 c 0 + 521.833333333 260.5 530 229 530 193 c 0xc4 +184 187 m 0 + 184 179 185.833333333 170.166666667 189.5 160.5 c 0 + 193.166666667 150.833333333 199 142 207 134 c 0 + 215 126 225.333333333 119.333333333 238 114 c 0 + 250.666666667 108.666666667 266 106 284 106 c 0 + 318.666666667 106 344 114.333333333 360 131 c 0 + 376 147.666666667 384 166.333333333 384 187 c 0 + 384 202.333333333 380.5 216 373.5 228 c 0 + 366.5 240 357 250.5 345 259.5 c 0 + 333 268.5 318.833333333 276.5 302.5 283.5 c 0 + 286.166666667 290.5 268.666666667 297 250 303 c 1 + 231.333333333 289 215.666666667 272.666666667 203 254 c 0 + 190.333333333 235.333333333 184 213 184 187 c 0 +369 516 m 0xd8 + 369 523.333333333 367.5 531.166666667 364.5 539.5 c 0 + 361.5 547.833333333 356.5 555.666666667 349.5 563 c 0 + 342.5 570.333333333 333.666666667 576.5 323 581.5 c 0 + 312.333333333 586.5 299.333333333 589 284 589 c 0 + 269.333333333 589 256.666666667 586.666666667 246 582 c 0 + 235.333333333 577.333333333 226.5 571.166666667 219.5 563.5 c 0 + 212.5 555.833333333 207.333333333 547.666666667 204 539 c 0 + 200.666666667 530.333333333 199 522 199 514 c 0 + 199 492.666666667 206.833333333 472.666666667 222.5 454 c 0 + 238.166666667 435.333333333 265 419.333333333 303 406 c 1 + 324.333333333 419.333333333 340.666666667 434.666666667 352 452 c 0 + 363.333333333 469.333333333 369 490.666666667 369 516 c 0xd8 +EndSplineSet +Validated: 524289 +EndChar + +StartChar: nine +Encoding: 57 57 1083 +Width: 568 +Flags: W +HStem: -2 124<87 234.86> 256 116<208.3 361.343> 586 124<211.002 329.705> +VStem: 28 148<403.155 549.377> 374 151<380.838 534.56> +LayerCount: 2 +Fore +SplineSet +289 372 m 0 + 304.333333333 372 320.333333333 373.5 337 376.5 c 0 + 353.666666667 379.5 366 383.666666667 374 389 c 1 + 374 398 l 2 + 374 400.666666667 374.166666667 403.333333333 374.5 406 c 0 + 374.833333333 408.666666667 375 411 375 413 c 0 + 374.333333333 437 372.333333333 459.5 369 480.5 c 0 + 365.666666667 501.5 360 519.833333333 352 535.5 c 0 + 344 551.166666667 333.166666667 563.5 319.5 572.5 c 0 + 305.833333333 581.5 289 586 269 586 c 0 + 253 586 239 582.666666667 227 576 c 0 + 215 569.333333333 205.333333333 560.666666667 198 550 c 0 + 190.666666667 539.333333333 185.166666667 527.666666667 181.5 515 c 0 + 177.833333333 502.333333333 176 490 176 478 c 0 + 176 442 184.833333333 415.333333333 202.5 398 c 0 + 220.166666667 380.666666667 249 372 289 372 c 0 +362 275 m 1 + 348 268.333333333 332.5 263.5 315.5 260.5 c 0 + 298.5 257.5 284 256 272 256 c 0 + 228.666666667 256 191.666666667 261.166666667 161 271.5 c 0 + 130.333333333 281.833333333 105.166666667 296.5 85.5 315.5 c 0 + 65.8333333333 334.5 51.3333333333 357.333333333 42 384 c 0 + 32.6666666667 410.666666667 28 440 28 472 c 0 + 28 498.666666667 32.5 526 41.5 554 c 0 + 50.5 582 64.6666666667 607.5 84 630.5 c 0 + 103.333333333 653.5 127.833333333 672.5 157.5 687.5 c 0 + 187.166666667 702.5 223 710 265 710 c 0 + 351 710 415.833333333 683.5 459.5 630.5 c 0 + 503.166666667 577.5 525 501.333333333 525 402 c 0 + 525 336.666666667 516.5 279 499.5 229 c 0 + 482.5 179 456.166666667 137 420.5 103 c 0 + 384.833333333 69 339.333333333 43.1666666667 284 25.5 c 0 + 228.666666667 7.83333333333 163 -1.33333333333 87 -2 c 1 + 86.3333333333 19.3333333333 85.3333333333 40 84 60 c 0 + 82.6666666667 80 81.3333333333 100.666666667 80 122 c 1 + 118 122.666666667 152.333333333 125.5 183 130.5 c 0 + 213.666666667 135.5 240.666666667 143.833333333 264 155.5 c 0 + 287.333333333 167.166666667 307.166666667 182.666666667 323.5 202 c 0 + 339.833333333 221.333333333 352.666666667 245.666666667 362 275 c 1 +EndSplineSet +Validated: 524289 +EndChar + +StartChar: equal +Encoding: 61 61 1084 +Width: 810 +Flags: W +HStem: 126 125<172 642> 345 125<172 642> +LayerCount: 2 +Fore +SplineSet +172 251 m 1 + 642 251 l 1 + 642 126 l 1 + 172 126 l 1 + 172 251 l 1 +172 470 m 1 + 642 470 l 1 + 642 345 l 1 + 172 345 l 1 + 172 470 l 1 +EndSplineSet +Validated: 1 +EndChar EndChars EndSplineFont diff --git a/src/libs/core/score/tscoreobject.cpp b/src/libs/core/score/tscoreobject.cpp index 61be0dfda..a2c993ba2 100644 --- a/src/libs/core/score/tscoreobject.cpp +++ b/src/libs/core/score/tscoreobject.cpp @@ -235,7 +235,7 @@ CHECKTIME ( qDebug() << "[TscoreObject] can't resolve duration of" << lastMeasure->free(); else { if (!n.isRest()) { - notesToCurrent.first().rtm.setTie(Trhythm::e_tieStart); + notesToCurrent.first().rtm.setTie(newNote.rtm.tie() > Trhythm::e_tieStart ? Trhythm::e_tieCont : Trhythm::e_tieStart); if (notesToCurrent.count() == 2) notesToCurrent.last().rtm.setTie(Trhythm::e_tieCont); } diff --git a/src/libs/sound/tsound.cpp b/src/libs/sound/tsound.cpp index 604c8496a..e44631f2b 100755 --- a/src/libs/sound/tsound.cpp +++ b/src/libs/sound/tsound.cpp @@ -45,7 +45,9 @@ Tsound::Tsound(QObject* parent) : player(0), sniffer(0), m_examMode(false), - m_melodyNoteIndex(-1) + m_melodyNoteIndex(-1), + m_tempo(60), + m_quantVal(6) { if (m_instance) { qDebug() << "Tsound instance already exists!"; @@ -250,6 +252,23 @@ float Tsound::pitch() { } +void Tsound::setTempo(int t) { + if (t != m_tempo && t > 39 && t < 181) { + m_tempo = t; + emit tempoChanged(); + } +} + + +/** + * @p m_quantVal is expressed in @p Trhythm duration of: Sixteenth triplet -> 4 or just Sixteenth -> 6 or Eighth -> 12 + */ +void Tsound::setQuantization(int q) { + if ((q == 4 || q == 6 || q == 12) != m_quantVal) { + m_quantVal = q; + } +} + void Tsound::wait() { // qDebug("wait"); @@ -444,30 +463,44 @@ void Tsound::playMelodySlot() { void Tsound::noteStartedSlot(const TnoteStruct& note) { - m_detectedPitch = note.pitch; - emit noteStarted(m_detectedPitch); + m_detectedNote = note.pitch; + emit noteStarted(m_detectedNote); emit noteStartedEntire(note); if (player && GLOB->instrument().type() != Tinstrument::NoInstrument && GLOB->A->playDetected) - play(m_detectedPitch); + play(m_detectedNote); } -Tchunk m_lastChunk; void Tsound::noteFinishedSlot(const TnoteStruct& note) { - m_detectedPitch = note.pitch; -// Tchunk noteChunk(m_detectedPitch, Trhythm()); - m_lastChunk.p() = m_detectedPitch; -// m_lastChunk.r() = ; // TODO not supported yet - emit noteFinished(&m_lastChunk); + m_detectedNote = note.pitch; + qreal rFactor = 2500.0 / m_tempo; + qreal dur = note.duration * 1000.0 / rFactor; + int normDur = qRound(dur / static_cast<qreal>(m_quantVal)) * m_quantVal; + Trhythm r(normDur); + qDebug() << "noteFinishedSlot" << note.duration * 1000 << dur << normDur; + if (r.isValid()) { + m_detectedNote.setRhythm(r); + qDebug() << "Detected" << m_detectedNote.toText() << m_detectedNote.rtm.string(); + emit noteFinished(); + } else { + TrhythmList notes; + Trhythm::resolve(normDur, notes); + for (int n = 0; n < notes.count(); ++n) { + Trhythm& rr = notes[n]; + if (n == 0) + rr.setTie(Trhythm::e_tieStart); + else if (n == notes.count() - 1) + rr.setTie(Trhythm::e_tieEnd); + else + rr.setTie(Trhythm::e_tieCont); + m_detectedNote.setRhythm(rr); + qDebug() << "Detected" << n << m_detectedNote.toText() << m_detectedNote.rtm.string(); + emit noteFinished(); + } + } +// emit noteFinished(); emit noteFinishedEntire(note); if (player && GLOB->instrument().type() == Tinstrument::NoInstrument && GLOB->A->playDetected) - play(m_detectedPitch); + play(m_detectedNote); } - - - - - - - diff --git a/src/libs/sound/tsound.h b/src/libs/sound/tsound.h index f9303290b..163cd3c1c 100644 --- a/src/libs/sound/tsound.h +++ b/src/libs/sound/tsound.h @@ -50,6 +50,9 @@ class NOOTKASOUND_EXPORT Tsound : public QObject Q_OBJECT + Q_PROPERTY(int tempo READ tempo WRITE setTempo NOTIFY tempoChanged) + Q_PROPERTY(int quantization READ quantization WRITE setQuantization NOTIFY quantizationChanged) + public: explicit Tsound(QObject *parent = nullptr); virtual ~Tsound(); @@ -98,8 +101,22 @@ public: /** * Returns recently detected note. */ - Tnote& note() { return m_detectedPitch; } - float pitch(); /**< Returns recently detected pitch of note. */ + Q_INVOKABLE Tnote note() const { return m_detectedNote; } + + /** + * Returns recently detected pitch of note (midi number). + */ + float pitch(); + + int tempo() const { return m_tempo; } + void setTempo(int t); + + /** + * Quantization value determines accuracy of detecting rhythm of played note by its duration. + */ + void setQuantization(int q); + int quantization() const { return m_quantVal; } + void pauseSinffing(); void unPauseSniffing(); bool isSnifferPaused(); @@ -123,9 +140,11 @@ public: signals: void noteStarted(const Tnote&); void noteStartedEntire(const TnoteStruct&); - void noteFinished(Tchunk*); + void noteFinished(); void noteFinishedEntire(const TnoteStruct&); void plaingFinished(); + void tempoChanged(); + void quantizationChanged(); private: void createPlayer(); @@ -134,12 +153,15 @@ private: void deleteSniffer(); void restoreSniffer(); /**< Brings back sniffer & pitch view state as such as before settings dialog */ - Tnote m_detectedPitch; // detected note pitch + Tnote m_detectedNote; /**< detected note */ bool m_examMode; - Tnote m_prevLoNote, m_prevHiNote; // notes form sniffer ambitus stored during an exam + Tnote m_prevLoNote, m_prevHiNote; /**< notes form sniffer ambitus stored during an exam */ bool m_stopSniffOnce, m_userState;; int m_melodyNoteIndex; Tmelody *m_playedMelody; + int m_tempo; + int m_quantVal; + static Tsound *m_instance; private slots: diff --git a/src/nootka.qrc b/src/nootka.qrc index c009fa329..b63ee1029 100644 --- a/src/nootka.qrc +++ b/src/nootka.qrc @@ -23,6 +23,7 @@ <file alias="IntonationBar.qml">qml/sound/IntonationBar.qml</file> <file alias="VolumeBar.qml">qml/sound/VolumeBar.qml</file> <file alias="PitchView.qml">qml/sound/PitchView.qml</file> + <file alias="TempoMenu.qml">qml/sound/TempoMenu.qml</file> <file alias="Score.qml">qml/score/Score.qml</file> <file alias="Staff.qml">qml/score/Staff.qml</file> diff --git a/src/qml/MainScore.qml b/src/qml/MainScore.qml index 4fa9cd21a..479f3cdc7 100644 --- a/src/qml/MainScore.qml +++ b/src/qml/MainScore.qml @@ -54,6 +54,10 @@ Score { return enableKeySign && firstStaff.keySignature ? Noo.majAndMinKeyName(firstStaff.keySignature.key) : "" } } + Connections { + target: SOUND + onNoteFinished: addNote(SOUND.note()) + } Rectangle { // note highlight id: noteHighlight diff --git a/src/qml/TtoolBar.qml b/src/qml/TtoolBar.qml index 4909ee9ea..b68697b74 100644 --- a/src/qml/TtoolBar.qml +++ b/src/qml/TtoolBar.qml @@ -21,6 +21,61 @@ ToolBar { HeadButton { action: nootkaWindow.examAct } } + ToolButton { + id: metro + property TempoMenu menu: null + width: settAct.width * 1.2; height: settAct.height + x: pitchView.x - width + Rectangle { + id: pend + visible: !metro.menu || metro.menu.tickEnable + y: parent.height / 15; width: parent.width / 15; height: parent.height / 4 + color: activPal.text + SequentialAnimation on x { + id: metroAnim + loops: Animation.Infinite; running: true + NumberAnimation { duration: 60000 / SOUND.tempo; from: 0; to: metro.width - pend.width } + NumberAnimation { duration: 60000 / SOUND.tempo; from: metro.width - pend.width; to: 0 } + } + } + onClicked: { + if (!menu) { + var c = Qt.createComponent("qrc:/TempoMenu.qml") + menu = c.createObject(metro) + menu.onAccepted.connect(metroAnim.restart) + } + menu.open() + } + background: Rectangle { + anchors.fill: parent; color: activPal.window + border { width: 2; color: activPal.text } + } +// Text { +// id: mic +// anchors.horizontalCenter: parent.horizontalCenter +// font { family: "Nootka"; pixelSize: parent.height / 2 } +// text: "r" +// Timer { +// running: true; repeat: true +// interval: 150 +// onTriggered: { +// if (interval === 150) { +// mic.color = activPal.text +// interval = 60000 / SOUND.tempo - 150 +// } else { +// mic.color = "red" +// interval = 150 +// } +// } +// } +// } + Text { + y: parent.height / 3 + anchors.horizontalCenter: parent.horizontalCenter + font { family: "Scorek"; pixelSize: parent.height / 4 } + text: "\ue1d5=" + SOUND.tempo + } + } PitchView { id: pitchView x: label.x - parent.width * 0.41; y: parent.height * 0.05 diff --git a/src/qml/sound/PitchView.qml b/src/qml/sound/PitchView.qml index c4c7a796c..af8183ee1 100644 --- a/src/qml/sound/PitchView.qml +++ b/src/qml/sound/PitchView.qml @@ -15,7 +15,7 @@ Item { // private property real tickWidth: Screen.pixelDensity * 0.5 - property real tickGap: tickWidth * 1.25 + property real tickGap: tickWidth * 1.4 IntonationBar { id: intoBar diff --git a/src/qml/sound/TempoMenu.qml b/src/qml/sound/TempoMenu.qml new file mode 100644 index 000000000..930a43104 --- /dev/null +++ b/src/qml/sound/TempoMenu.qml @@ -0,0 +1,64 @@ +/** This file is part of Nootka (http://nootka.sf.net) * + * Copyright (C) 2017 by Tomasz Bojczuk (seelook@gmail.com) * + * on the terms of GNU GPLv3 license (http://www.gnu.org/licenses) */ + +import QtQuick 2.9 +import QtQuick.Controls 2.2 + + +Popup { + property alias tickEnable: meterTickChB.checked + margins: nootkaWindow.fontSize + + signal accepted() + + Column { + spacing: nootkaWindow.fontSize / 2 + + Row { + spacing: nootkaWindow.fontSize + anchors.horizontalCenter: parent.horizontalCenter + Text { text: qsTr("tempo"); color: activPal.text; anchors.verticalCenter: parent.verticalCenter } + SpinBox { + id: tempoSpin + from: 40; to: 180; editable: true + value: SOUND.tempo + } + } + + Row { + spacing: nootkaWindow.fontSize + anchors.horizontalCenter: parent.horizontalCenter + Text { text: qsTr("round to:"); color: activPal.text; anchors.verticalCenter: parent.verticalCenter } + RadioButton { + id: radio16 + font { family: "Nootka"; pixelSize: nootkaWindow.fontSize * 2.5 } + text: "G" + checked: SOUND.quantization === 6 + } + RadioButton { + id: radio8 + font { family: "Nootka"; pixelSize: nootkaWindow.fontSize * 2.5 } + text: "F" + checked: SOUND.quantization === 12 + } + } + + TcheckBox { + id: meterTickChB + text: qsTr("Enable metronome ticking") + checked: true + } + + Button { + text: Noo.stdButtonText(33554432) + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + SOUND.tempo = tempoSpin.value + SOUND.quantization = radio16.checked ? 6 : 12 // See Tsound doc for values explanation + accepted() + close() + } + } + } +} diff --git a/src/qml/sound/VolumeBar.qml b/src/qml/sound/VolumeBar.qml index c3f724a87..e90c224b3 100644 --- a/src/qml/sound/VolumeBar.qml +++ b/src/qml/sound/VolumeBar.qml @@ -44,7 +44,7 @@ Item { id: vRep model: tc.width / tc.divisor Rectangle { - color: index <= volume * vRep.model ? tc.colorAt(index) : activPal.text + color: index < volume * vRep.model ? tc.colorAt(index) : activPal.text width: index <= minVol * vRep.model ? pitchView.tickWidth / 2 : pitchView.tickWidth radius: pitchView.tickWidth / 2 height: pitchView.tickWidth * 1.5 + ((volBar.height - pitchView.tickWidth * 4) / vRep.model) * index -- GitLab