From c4720c98b6e327f9704548cd3cb55868362d1386 Mon Sep 17 00:00:00 2001 From: Danielku15 Date: Sat, 15 Feb 2020 15:38:59 +0100 Subject: [PATCH 1/3] Ignore grace notes for cursor positioning --- Source/AlphaTab/Audio/MidiTickLookup.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Source/AlphaTab/Audio/MidiTickLookup.cs b/Source/AlphaTab/Audio/MidiTickLookup.cs index 605bc6dd2..4111646bc 100644 --- a/Source/AlphaTab/Audio/MidiTickLookup.cs +++ b/Source/AlphaTab/Audio/MidiTickLookup.cs @@ -221,7 +221,8 @@ public MidiTickLookupFindBeatResult FindBeat(Track[] tracks, int tick) for (var b = index + 1; b < beats.Count; b++) { var currentBeat = beats[b]; - if (currentBeat.Start > beat.Start && + if (currentBeat.Beat.GraceType == GraceType.None && + currentBeat.Start > beat.Start && trackLookup.ContainsKey(currentBeat.Beat.Voice.Bar.Staff.Track.Index)) { nextBeat = currentBeat; @@ -237,7 +238,8 @@ public MidiTickLookupFindBeatResult FindBeat(Track[] tracks, int tick) for (var b = 0; b < beats.Count; b++) { var currentBeat = beats[b]; - if (trackLookup.ContainsKey(currentBeat.Beat.Voice.Bar.Staff.Track.Index)) + if (currentBeat.Beat.GraceType == GraceType.None && + trackLookup.ContainsKey(currentBeat.Beat.Voice.Bar.Staff.Track.Index)) { nextBeat = currentBeat; break; From d7ba7fd55470c9a2621b9d93b11cbf2e01c89dc8 Mon Sep 17 00:00:00 2001 From: Danielku15 Date: Sat, 15 Feb 2020 15:39:44 +0100 Subject: [PATCH 2/3] Consider preceeding beat for grace display positions --- Source/AlphaTab/Model/Voice.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/AlphaTab/Model/Voice.cs b/Source/AlphaTab/Model/Voice.cs index 4c337d9bb..d18102537 100644 --- a/Source/AlphaTab/Model/Voice.cs +++ b/Source/AlphaTab/Model/Voice.cs @@ -191,12 +191,12 @@ internal void Finish(Settings settings) nonGrace.UpdateDurations(); } - // grace beats have 1/4 size of the non grace beat following them - var perGraceDuration = nonGrace == null + // grace beats have 1/4 size of the non grace beat preceeding them + var perGraceDisplayDuration = beat.PreviousBeat == null ? Duration.ThirtySecond.ToTicks() - : nonGrace.DisplayDuration / 4 / numberOfGraceBeats; + : beat.PreviousBeat.DisplayDuration / 4 / numberOfGraceBeats; - // move all grace beats + // move all grace beats var graceBeat = Beats[i]; for (var j = 0; j < numberOfGraceBeats && graceBeat != null; j++) { @@ -204,8 +204,8 @@ internal void Finish(Settings settings) graceBeat.UpdateDurations(); graceBeat.DisplayStart = - currentDisplayTick - (numberOfGraceBeats - j + 1) * perGraceDuration; - graceBeat.DisplayDuration = perGraceDuration; + currentDisplayTick - (numberOfGraceBeats - j + 1) * perGraceDisplayDuration; + graceBeat.DisplayDuration = perGraceDisplayDuration; stolenDuration += graceBeat.PlaybackDuration; From 5f089e5c2d267384fc6a26a67830d8a57e1455f1 Mon Sep 17 00:00:00 2001 From: Danielku15 Date: Sat, 15 Feb 2020 15:48:43 +0100 Subject: [PATCH 3/3] Extended visual tests --- .../VisualTests/Features/SpecialNotesTests.cs | 7 +++++++ .../Features/SpecialNotes/GraceNotes.png | Bin 12257 -> 12274 bytes .../SpecialNotes/GraceNotesAdvanced.gp | Bin 0 -> 9336 bytes .../SpecialNotes/GraceNotesAdvanced.png | Bin 0 -> 20711 bytes 4 files changed, 7 insertions(+) create mode 100644 TestData/VisualTests/Features/SpecialNotes/GraceNotesAdvanced.gp create mode 100644 TestData/VisualTests/Features/SpecialNotes/GraceNotesAdvanced.png diff --git a/Source/AlphaTab.Test/VisualTests/Features/SpecialNotesTests.cs b/Source/AlphaTab.Test/VisualTests/Features/SpecialNotesTests.cs index 7f4da1834..9ea130476 100644 --- a/Source/AlphaTab.Test/VisualTests/Features/SpecialNotesTests.cs +++ b/Source/AlphaTab.Test/VisualTests/Features/SpecialNotesTests.cs @@ -23,6 +23,13 @@ public void GraceNotes() RunVisualTest(settings, new[] { 0 }, "TestFiles/Docs/Features/GraceNotes.gp5", "TestFiles/VisualTests/Features/SpecialNotes/GraceNotes.png"); } + [TestMethod, AsyncTestMethod] + public void GraceNotesAdvanced() + { + var settings = new Settings(); + RunVisualTest(settings, new[] { 0, 1 }, "TestFiles/VisualTests/Features/SpecialNotes/GraceNotesAdvanced.gp", "TestFiles/VisualTests/Features/SpecialNotes/GraceNotesAdvanced.png"); + } + [TestMethod, AsyncTestMethod] public void DeadNotes() { diff --git a/TestData/VisualTests/Features/SpecialNotes/GraceNotes.png b/TestData/VisualTests/Features/SpecialNotes/GraceNotes.png index bb6bb0cc515aa40f468770100d01acf0c9a91f9c..7cd42a4983fb97351cc06218114e9e1162145305 100644 GIT binary patch literal 12274 zcmeHt2~d++w;;B*VhhqXv?3z71Q2Br5o8OfG-6~^RQ62;qJSVE1PBDwZcs$fAe%s< zvdO-L9Rex>1|&hYuqKKL0YZobk{ANXd>{Sh&Hv_AP5p0bYHHrhqzb7lmIWBqXF^=l`&mkoZ|nLSoaT@@)0p=KM>Ns^uasfb~R7V9K%8T;?KkO?aQjmmH#tgsmoLbZlF1? zTdTJz8sgkBu5)TPWH0GQCS>%)Z^p@0-@KRp`ka*Yr1ky*(tgT~Eu|lR(Xao_Yp2R? zYdd+LcS=)HaZWWKPlUyqa2v5D#TBULqGn9VBH1cxWoS7M!!E+ihx=1RC~VMA0Gp<;RTS7yo9 zQ2Gh{R+geo2n>A~mR!EXRq7qX7Q2P#nr9EQHvzD5+e1ADe=a+{_fuUIFQ$4%NWByp zV}T|~=e?1;HoZTsxn8YFhfsX5;d1j4f+P7yluuBnL!#G;08(kYlohTb7%;5mC)4dV zaE0QIts__aiX>aZ=?j#^lmbb9kH-^wcwNy{G<|YjG%p-a<8zr=4ecb6ncM4J)a`W? zHhes0e6~EOm^oY=)6b2%ZO6w~hE@t=(&zb4eTe&4#=tFlIfuQ^r+g`uDk{9Z(s-<) zv@&(^^qn@w=-u5NxbA`dQiTjCp3AMrU2z>u3-7rx3|DZ#8X8P7Mlbj)-^HV5LU~o3 zGyJGx(tr>;B$%{{(Ff5w+3!7Tqa8|#-o5!v)7@D z^<clWC^d^B4;U!us(Z^Ek*9wc}-IhA;rcdD8ngRiCCe zIMb_RW9YT33~s?3O6yDZ(e8@#oGbKJ;W5V56mARA-ZX1E^1&%J!^}f+OhkFX zcuBo3*^qq&%Wti&!M_;a<{qTppdvU&YTFN8l;v>I$rl~H=T(hvY^^?N*7wp;4$(LR=u(M-m(9L%h^$V}In$$9(~Hi}fe1zcj*SX~NyzU?i+ z%QHWHmj+(~yy)K<6o&5q1LjAs4z9kVHK7IS220vS41~Vqyg(I7B z?(X5-NU9rlxlow14McO&OUvTNDXI0d9W_t<44j~q3P*_u9@JsX5z`QJUJqP3X+KoX zS*AxRemxxp-H}SWf_6Y>BYA+-w7m(XJR|Zt({5}tX4+llO^rEItM89*kg0d#lTu1%hwqzC&r z9i@AUpWQi@uK{8>zO}~#Wu>`n)gETC+Q*r+LF$qIF7KkbXw=RWB=Ra*Xb|E zlkO5$*;!f5GjP<*nkWAI`{jll)Aa%BNp~5Lz#Q`3O&TwNao@qh*77N$UbzGF1;jA4 za9t#;W*hrzZXBF-00!)%>KS*(uU4#ZA$y$F%Kq?Z(DQbQDL6W-axviJ!a_Q4z;Z%J z${|dt+2)u+n>S?5D>B|BP4l znztWLtZmTH$U#wmeg9z_I{Fx);+5QnM4t=_54UP@i@!_ggPCUMyE|7X4gl6&JGK3X z3#Y4)36kMuuyWDO%=CpfoYdCx;z<5VUH;UCiohDsw~~mrdf90DsUS9@@i2k6i;T{n z&B~;6RS-y=j`TpofW26W=oy}- zNj0Gy8X=mEq#FB+_ffvbTie;m6iCN~a$m{B9KniKidyPRZLy{-HfYuJbaZvOSz}|G ztgNhJQciD}FTA0)*C&`dL>U_^ZgGq#4o3@2g+<2Q<9h?`I@i;f4ts7LI&M22Q(w9R zfG@4Bh&Le-0|k#Ej(p>hzy>~Wk`zS6?OGS{j|n)j^#mcy3`+Jdua0$$#8-9Q#_K+o zeG33eR3(>Z!<_2_r#M~t@}`r4VwxUo0Q}z>jsZ0pQ z>xJAvw-{B*Kq7-5k{6`|ddCXj=m4eb#vs0=S7C$Z!Pmb26{H$zg|3~bY%Ck@k=?OF z+cX1G?jSNHoC3B+`;>+CXumahtnCV`dUOJ}1ir^ke@IbcLmjrJ!GZxc?5H?ak!EGg z!uo`V_j=Y&mbwWb5qYg%)-UV-jBuew#E2pp->k3M(y4_v&y4oI<$Z0@z8=fN* zFCJGuvbkd#&q_%3_MN%UL?24h7||wuh;}SZYc~rmj6rf;@U}SyF})+@m(^VS%~EC& zsjd3(ghwz=_g=~!2B3;gV{L{OK_9jaO!Zp@}4a)2( z$E^=xh+oJ2Za2T?uU(I2Hs^D*9FD1_m*x%oxswC2k$zlketM8vlQw{z1Ti%D5Kc+! z{Bp+=Z4LtzngQ$z_<4OQZ#i9^lT(0@=Va+NHJ_UFZ&)Ukyz^>5P$L}A*1ixD*0P>T zu5~F-k*UZtXc&&_b@oB`%vS(XOpVBC{69`SgP7vovLD(r;)39H= z;VtOrmUhV@Cv|myb68uYKD_2H72koAnH}uKH z;VvUnYm=4DV)!SNxm|ZjG`BD~+D>a(l-78HK(?29g+g#bQix3u>bxOYgH-lcmbbuC zD(Nj$U4;BT63@J2Hh-%~7~~f8y{SSZ0xV+HrVTUJJKa`{2e9}4^{B;ut)r338I$Ws zP4Edt7a5a95okfrKxMLf+P99f2Tzz}`?UbB$Yko-At&VmBzjHoaAJXu8Y1sIz!UKS z(;0Ww1!0aMH@T~;dd)G;qdoVBAO~TXS&coaO|L@&N=SkXhv0$> zjyHp=2}9`+iWG|9I4^>?_Y>J8w#kAO8CfiB7X^=!9yfVLhAxnkRjy`Z%q&?pZW1?D{r)6Y}?z)P;xFx}?Z| z>)`%VVIw3+Q!C+Y*PlXw5vOl#N&FUML?{w2m_4P9$l)c$uW&)kH;Fyd{kyA)wcD7|dGs*9yv z#L-U@*MSvYUMdGJ;Wrx=pWL0&-hY&5!Q;^wK!akKuFGwF zyfy;?Mnn0CFCzSi9b!AfzSw|n}4BfG9_zO(@#$ zdcELTc?C$ybvx=c8uy0=m~uNl4A9kmlT7#M&Mis{tkG1~g6H`fu3{zWbwl__hKk@0 zT3r6l^TrPGNcmq34yy_UvpJ@)urR~sb3-dYYf@QOUdPlb2}H9y=Hb(Fh# zi0#ca>-~1U_}A*%&l?6n_Uuc8HjLACacCNuI%~+wB{mxgE(nt9LaPlsH9BBAWvdjq z4qdiUH*h~?8gcAtbBQ?y&%`zrWnH4Qs#)xplPm_2gV)yRdoG%Y#W&mZ0h!huJF5+aj z3$mLS7-Yy&=brXfaY2Shk7mOp8WL04kYlMFa}q0FW8lJ=BanNct5agi zn5~p>wZ5+%3CjyOk}nAZeKP#L-&}@HP{V%0^C{WuLOy>TW9b9Py}e$JN#qGnL64)u z8m@JBUD?RJ&D%H?2>dZBa8rf+`2JNxLxVQr8q_!JsJ(vWej&RXq-?-So4&S8B7M%Y z+$R>ud!taM2|M@Ck1u}R@E}tGHwkdkck^vnxw*N`EjYv6{3++C^(eSFEhf2cu-(x$ zvfTZc2DgVO#MtU&hu*3P=?gK;*zUQSdl1UP@Cr+{t+R40>%)CE5K2jV9^8w?3!<8B&m+={5Iw zGiC6@dM1pce0l9u5h5g$jMxp(p)Y@LIzl)_Tur{a&0kwJ5`o6raD;Ox-)X9ffB_{p zmEcU#i!irz-P~#CWPVZR>FLCt5Eyn@yI2vs7#gkOYs~a}8g7O5{PYE+CX@CRVm3P# zd%TlBqW#uA1+Z`y6SljW0drB4Gv&%;zAS~u8%~idHT5FR^wlCy!na|s zn(5N?f$Jx(U`U?hHje4MR*A=R^%2RA2}Z;sqycqCV`urosXwCXMxs70L+6xU$2dET zw1m{%*4O#KPlt%FotCDP-Zt@8-HIK-N?V83Kvs& zBGJhhvz`N?{WZsF`U!-ma9~-z5Fp5@D$7%kKZ`Q7Aa%H_$D6BJ*mdU3ErvM}*GvWt z+4tn2NfkCae})fCKBuLs$49i+e03Rl?*lWjAIws@_LYQv$%4|P2<74~>EbsI4Ofwj>ijsfXYAl5!UBNd5}vb_8!%q*KG zkb5<4kAK#4EmiqE$J1VFSDSu^%xhoaLd)Hcw;>iUmrtpiinH_@QG*!57^#rS2!)9{ z703g%XEu#woV#K!OOnd5mE>X1+@ZCG6unPnGpbIa}I9#Vn4gV56- z)4uC|c1ofAxTn$6Lk7wg5$ST~Ng2#EzKppa6A1JuS&Q2fUbHD=FYJnP5HsFABZ{~t zD@wp=`qY9}uEe%01aLCTuLA+%?TNrfAuCAvWbr&FSisZF{FL^{ltC;&I()e{o-+-fnY&B6 zFU*zes5zBL_dO{Jh(9&R;}N+Rgu0W?1AxML^<_Tyi8%_7!VJYt7t3`RTiK}!p2(2` zbB0Jmq_gNCAHY#~K}**#-G-YVfT)pQ#;d9x-0O%Z9cDqp{o_xqtldoP{tY5Z>FR!%&h{Rb^8~|5bi4y;dKf@jrhaeQdo1VrO>e_3p|OcdzIY&6ftRgM zYH>va@wzh4kas=tEu&59)Dg{u{rr{`f7Vr4y=s#I0h^z>B$$GUVz8k>=Q(``8$98^ zp=HejLvwP^>zE5hUi7wNx{mF>1Y=VI{bb$@J^z=Z#l$gr5N4 z0n>|)HXvkg%?Ukeky2e65_pjGFKT_7)dCYu7`h?!Jknkx#$}8uu`sdMT%UhG?_ZQV zx#iN&$cB_R`vLs&N1<|R-Dz_>Wvz?{#7+0@AWhe8jww{YYoddiAObgHIfHHh)%~t) zZ(_b=ss4UQyC|Y!nzyU2eR3U$33ucj0rP^Hia&J{bdLOy&BC$gAykh%mv~mO9DXNh z$bfGQLtRT_B{6k3w?BXF=r&e*_X?>^kq&_XaBqzcUUXAV<_84XeikkWrH5+l%`&e4 zSR(slVzo9o=EAoohg?tMILCAwO^7eUg^v&WwG&|H0m!)R^u39x-}YH8w3|J?cV(`G zxT;OA$Qd?{`2L0GP|BsBVJMnL8<0$e0lbB=L0b+TknPyI7xg>$8`Wy(G9(r$c;g*A zc5EiKb4Oe~!??qa4XJBCLd0KkH1dyt2y^ux0X#vNE(^@=`^^{Q16e+ z-iFVn4UuB4&V{!y9a*+^VTAq{fT+j(zpOou*Bf@~?qruP2ovNwf=kUG#F|>jd>a07 zCDA#jG_^)?Zo#a%#~;j{1{?tnDfB1-1K}5D4&{~bofA{9hoZNk7Z%3EB@i}{uI*{t zhc;>L2{+OG6#)362qfglkFzEvs>$trW7nqbDJFmNqSVX*6_t3YO1kK+IC=8RXvR5* zpMeh&y}unfL9FOoo%?G$@K&WIDYti$J7LIrr%aZ11{eZ#rjd*@2QDKE9}9s1^FMBovb zVnFCMEVGY+>J(Q1rqZ8!BhV9QH?+4Ud?T|gKVbeW_&W>2R}*-l{V#u70E=30|NeS$ z5JWF=F-2)3Q~p1!%B=J#B}qugVtTm)}7yz3o!Hm?KpQ3z_(ZxM!oT zR;3F1l?nDH?9%2*s$n<`djo{6QvD~(Y~g@Y+*Fd$QLS5MIP zf|UFd^}tjn4=8JNztGxHvnSsG-SirsF=nzMku`*~Ad*o7z`?wwMR-SK9)?jqduf6n z0}cSzzmRFngrgVEpBVhFAES;WX92$8XiE?^8UFzAzmW(utuQ;Vc}*7k;}0+ks z>J3M4o>Nv;eT;*)--i5MDLM#H-4T|{ja9f~YdEp&u8wKgD0rE}KQ3qfYckn&3PFwG z(<{ZRmCHb~Ks5IA9=9qQG6it8EtMi6%7TxUnD#YJFS*qrE?DpHELmMCm^7ENES>vF zzXT8(ZLvB3$I>2`P9O&ha{=)WU^2Q?6T@Y)DheGIY@iW zhiYYrz_%G&e#9E&qnC{&K&u68r&cJj4Z=T{`S;#_J7Sx@8MeqALtIMS`;vWulLx^n zhHX?o0~CEDF&agwicIHZ)h4}8DH8tL;q|_P2#iZpz>0HqLy-^_Ktm3&J!(@I{A%9B z+jNsa-{SY5I=NpvA$BL-Km3_#%K^%6wmRw^eJ~N}+%Z3jKY9{7je6c&e2?wao?Iw2 zbsHEHk98gOqb#eV?0SSt(KzrJ`%m7RUac}D48xL7x_>;%B3)+}t@}@o6yM$EOFdt6 zcwY;7*grKVp!p$Wd2hSYJ$}CA;0sA7gwGP{)2V)x{mQ5{+B}zAE%$YqCo0+uFlJXo z{Iqx01s%5r^0rjqE-Lw)t}C~!{=Uos-jYiz*4QfV&l-?Bvv7{}ECaGfO>n(K&$=ix zVs==)?Qu9-yFjw)MGe$qbS*i4yiNNt{~LfBk;>1Tw^5G@1thy_6DYw%;s7ZZhEcqx z*)gzBkz)8dya;D-cNu*~t>W3b`u!ohLdi$H*G6r&WH+cp#-Ozk^+CkhpQeJtZzLi= z{~015C0PDGEcccFW^-py_z1ue)xyhbtx5BIpwTQ&2Lfn z=SzT`+2i%KmxCf!F3aEk&&0g&qn)Ig2K$u*Q1qc$Kw!K!%l@M|7>)r$yKYlnwHsn8 z%s6~;vMG-$1fxYjglTQm)pBZcP+$f1&FoU`t-(Svo&ja6W2tv zDYKRqg*UHC=6Fb!U8pSXicQgvtlU3g&i`6A^-hO(oiVnMd2`7`xk75G=T+OpWhu?| z0m<>jFuO#h$UQ|(afN);r-CfurJYNf?x{54;fh!D(~#In;8lIbF@X;+P8lk|EF(DaQ;8|Y1hqxwuM2J4J?V<<@OEu)uH9yO)o4A75VxW z`YLFF;e$l_uwQfB6F;DY?CdTFR1X~|SZm5ai-gEeRu8iD{NSih4D-3QliBpJrSMxx)BiKwiY`_=z)F;f<-z5*VK>hMoO&v;C-4(5taw|@r z{8>W(_`O3C7ahk^Z^ioLYVg+li)ORZ?(!G>_&J_0Dix8JN!2K_TSZcLF%J$ad5J;@%mZ{LHbTG&Sy@rTRy0Y~(*{zSywp6_YqCzY*s`C0RG zT;tVzZVnhfua%N)kZJU7SJ;|s{N@SW)Ro)p!x}za>iJRk)R$I2%?INyi*3?=d3={J zKi5SRujO2%IK8y))R&S#ZSvw>QaBfnzc(G-%+zck3;8;4>d&0w_xdm0%)%0N8sfS_243VGx zJ0hWJK|_ulnz|s&lOm zJ8m&cz7T?hQ;m(R<`N;)Ssb3yo^qycSg^n3X#3#fbc3A|{T4uHTiFo*Sf%HLvl;e~ zykX-fWbfN)z0Jhp&^|WV0C90&7~YgnEN6bR^5gaMf<9A5I{rN+^^k^9O=5kzJ*8o| zzIuSqEiG7FH_5nI62N!bouEn0C_v7sSecmx<71T{__@xpRV3afO3H1D3%#@zSxKDE zmo0~gsVCU`hO%!L`(s?bHkHolkeMyH+{^0sOZHvf;=bfe1D_+_6o6ap1L4c0dcR z^3;zvTmM+6G?X$T+WobzcGxqt$miNg`Zo)y-2>2P=gfwUdSG5?QEJ?ZewdBb> zWA>CuBULyby;#zHv`*8}pZfwoQJO_>$~m5|aAffUA3rzc5k$4D!_fWqtsp z0G|d3zwQPSAFF)Z_wtR7T;&zWxYNVfc&o3Hglk01C@ zz}=?j|0eBuxew=CJ>(i>p!n*uDDvsd!_7Aw?QZkXMCYo2eDvd2KQzBeZS82Ex^Ro0 zdiQe5#5Y2M@dC?O2dBd^Sk8;_>y9D5yh1TH8()nd&k0i}Er?8+TLCox|M%~4;Qb(@ zTbo?3hDAzTNx?gln@xisNzZq0cZgzYwIeybb*y6k(;*~YG94B*9=n;i0+Y5=%-p z#3PF-pteX@p0ao~>D!%4xh0{SHQO2(*w|J~%vdNne*=DJ0EsPlN?a}>?iIQR7T3qp zRL$T#WMOTD*3F{j^HkT5j6AuQyBn#NsLYo_pjadETE1oquuUkoL~I-@>txb;-BX+CRP1S0)f^dBEhE z=8A0|P=qzxS@$S1xDlo>D@BQ|>%QG^`k}xr(9V^(iSA(8%(32*)?bYJyd+Rf zR^)d}nEcP19GtLgOm5D!i0ss=G*oZQ`|4A{8DT7-XJ5QVhL3-qVkh0?+kCJ$b**A* zanA?e@XV6QTWl#>a}%ZYmxGXVC_Qb3Li+T1d;#kU`AvB8Z z*h_Bg!P6Pk1ruH_FNSV3ceQddg6eQM-W^-_MzHoaK3L>oYvh|)-@q|3I@J*+`G$e0 zlWz1NEeN_=n)`^e!3_eJ5@y?oHph|2W%MD_PJ(A^&V+h{zY-pf+;(SJ5*+;7>#$m~ z8Q&DY7i|33{$BYjkt=oGK|9+TTmNEmv)2zE8LR`(G&Tc0UM4as;IBm8PFe6g5{I{@ zfKBt@&6mL6=X!TRKO$k5Yres%SJuyWfbBjdyA8t~@UJgN6QRSlwosIMxsDs1>zncl)#o^5C+o zU`gEyje*{ThRhBnyq*{Q(H)a)L_6S=#^sfn-5837!B8E$0=9#I9m!fqmCTR0B<{&H zC!~5ee@MUKU7aKfRQiFJ3(qtpwq;u){LyOYysPt~y$zmHa+>5@y!MBe-8R;1wZ2z3 zc|`D(Zm*S_cblSGR5vr+n9;HV6V0$I-EkEgys1jjE8M}#+_l5(3~M;cXDUm`flayI*wOB^Il7$u#tu3fWU>^(Oj&eEG&T)Y-2H2F;g4Qlz;Ss!RxmfJ!oTh&6+)iu=jPL4d;&NTj*u-CGuZF#WnL(_scu5HV{S zzt&g$<;I4rb?UHU9=)b4{F>E zPD-+nZm%2jf!6b9no1vBxaMg&T+W(O3IxZz-fT??Y;zMNC)3bDhr>=oQ*aNU9=#W7 z;9%L2yWfVtzu43fqTsS`AL(f`yM#qh8U`u%TG}D2%#1+OPSJSRdalivK#;L%AknP` zdsS>&JWHD6ozR+59;9p*->8yv`R0bg1!kIu%@YZ=@kbwe-F7A%bFlP2TuzSQ z6TuA@73I+6wx4g!#bL3H$op9V$~nB+gvRhP?CA3K5m!P;FJ76@$gGZPA_f8{i3<8_n0dPNN;E0Qa9RT9SMtfc-7jktWp9gpWH&-!^+);{l$`i^sP73 z*U6+)fpT}tp(Ue}2@2opVCd_L?^mqQ%*h$gt3Z&JZxJM&ZA?{)aYtWyrU8h5Vt=(? ztcqjsVAUudXG&ksMF zQNn#$`z(cXUAg+i>i*%-_G%x^*Mj>G*tPp@@gd@_Q^^mK)hZj5RuR6!9LSZV!GTB< z8arrPx>U84SB-lvYm4;(fEBG%E;=T%r8fBPen7n+%o4>De?V+O#m+?7?%g$h&)3Vj zxj}Rl{RyPi{uKdhrNW!#%ege}@)%M0QR2+x?&GfI zQcjCF&l$LT)@#$=0QL$Z^7YN~>0xfKEmovl%%(wSJ9E6h=|GpItFh6rGv`JyEOT`F z$syBs8*${p@IVbab!FJ(;iNc0M8&KWf0(=08=y6)`TI=E^81HqH+qPerCaVeEpu;L zr8~IJV@_1Ns-W9d&_wm>Pu3Y>Jcy3);8`NzMck&$xD96!*z-(&ek7odnfDquLHGRa zzL}_eHhck~|A0)zr%zU>!a*VC<3){f%FBsVC)2>WX>OG8$ykSHT!`OzM*0ThR-4;( zMEMWVI`_KRK|_ePSrcSE*JHLh|4RBe2ETTj>B9q*uqK#RUs?W=e*Oq@raEqY0Z$q4 z$_*EC8{l{xjuHRu-GjKbF-4vs4~Lvx9cVw`XF124eBD?@@cHZ8K^MR zr^Cji$D}P>Be(&u7K4wK(+(RgUFEDkWU8czSi1cWoMNXZ^nZ+4%B$%f8Y-qkZ+4^s zTA!01>(dBBR5a?4MV-wFCo8Px>tronF)_^}`QaMmhS+Z1PM!R-7*Pcp6y zGqSg8?V*f9NZPFBLX7bj7Y!@KCHCNT{DLObJ}oBxcpEb5#Nsn<83(YhF(^y4r`3G% zHfLQp|I0Oq|TPLTY7@^S~ygS0F7h%G|+Q^z=BT#~|Xf6Q6>It;0_od1AOPHS~_ z*!oM>$PCjr{i8qw(6cT!&rgWIN1=3JBacPB*Mde<(aeaTXv!lD=pUcNoFVvE3 z5I4}hQdI5Te{F&_4_o7Y$}vg(s8t9pN zNPj;XFR2ZSQUR8y@1=B2v}t~&=)5oGm6W^xi2UfQW_Z=4+F zysYu1d)P|mM?Pe=w(#NAx!i->$3o3)oC4lxKO`+F{l^A9v$gK-0AS}Nm`Yk@DYD)y zvmK_SbSZnqD}}Rv_p`303W(UCRQ@tijZD7LY)YN zC7GZmMF85_3(wEBl)R-=W7CKYFr+QI)P8Gvv{K9sbfCkcT}k6=^}Z##vyIO81VN-Fb%34a9hP_t!)Ez%?|+J_L>nUF~& zk!`#@=(D=UF~b9K0cV*8rz|c;*yNpilAf?O=FVBFZ*u%cci}80ZMGJQi<>8pAbG^0 zrf4{mmv9|WB=s9@4`h_*Gb-bJ+evf%uh>CcT7xDpp5L@U<3n9d%0XNiA zkFDA-g7`e+7;O-hZZq+kf&t>?9JAx-!oq?<=vQ-Ul=NQ#ByPig{LRKU8Rhmuhp`3J z%E)C;Ah0zOAuBVe!_|M36KD&5j zyt82OhVE{@Pw}B~^vq$*&F=SZXbXb{%0Md2r7eJwo~pX;x)9MAC<2aXXsm=!Dkky| z0S4Ch;Jk5*jZ)0>h1ft!HISmIz7v>|(C5UpoL?{zmT=bCy8;HYS-n`QShf8(jRh=Q zV9N3IG+?+=uZaTC_f4sU6P?Lwfn5%&E!4ks`SF5x@*9ko2HDKz+h76I=22Cqx6rXs z+5K9|gRGWwUrnq>(sLl=pBr2gfU3sb?)3h|wSCCQUn>Zq?UTZ1Zb?thP(; zb{cq=j5bEIwwnm~MJuMlADRNcyq6^g(o`=rxT4)Mb&%ETacI~T*Wr>oPAM-M^oxXq z;sPaJ$9qUR`_tFjDOl2o5}-eJJ|DvU1NSF4EH4kx1`Rw8_ngDedL!j)&;3@z+%s8Q zH*A69LHT>Qoi#O#jJCeMJxo{hnsAfuQ&MU;SE|uIzeQ0V6Q>7TX9%Q5d552oZu;4; zF<{yw!ZR2hu`z$05Fm(udVc)5ulI-G-I!w(U{lTnc*S(NVlNr9hDgCB8`(=H+oa%9 zuJq8StMXQ33d0%qRAYZ~&%O0(<|RRuEK*InL#i3Qd3mx1q6nQY+{96UezBY@DJ$bl zzFgIZPIaG}AHPxN@!X?81sYuCTvM_~-Gr&g& z)eDp<@%3{fL!``P1`xk|{sQI!N(|*X!3#+W%Au(th%h?aKtg?H6?YoNt%SCSxNuIl z5zn~eRPMt6+NIlRy!ra;6Ds2S*SE&PncAVcKPnhY7qKPZ3qtXf4KWa9IvPgHaM$tf+@Ll0V10y!DqD3$j9ugQI zzs{a^N05PoIneU>v}--<+e6J+!%DL7=TiwX)&rq>9(P9X2Mxb24s4n_p}6|{Mu2+I zRxO*o8noEGX#Bti7B)VjR(q~DQs%NrX_&#i&`2RuIpz-vA$$_I?@qQ};mTGF{#-8T8ycu4ygSSRud+9^vd zL=(43G z2OPE<@qN#p_cxe%!xXs(S6-_zAh$!;&$U0I@SyWNK_1cq4c|==8DbtQC?aylX6~fq zbm|vnAD!sOa(}imuTh(x_5fr?YtyHBW0xaV_E^+dy{v^TbBHqnyKMjEyIUsf1e9_1 zYu*Xf*d+Ii{+;1^h1uS#X%X84nAY=VjxUJkJu?1?9+oz!hilU=2sm#uZXhX}j4 zX-z->fNV&Abr|5!IW{6s(kf#>as)_nBG9+1mx;7#E9p5S^)ODQG}nGqmYUu3^%XzV^V z!h@{dKh|JYL6KauPw@!zh4=n!A`|`;^B7nsA#?fp8$E^TAx8EeSwnpJSH1=D8tqzR zl~m&d-CxTLDUu58cL&+Eg0!f5F|~X7z?Hsu%wH>gx^;jp^)m;>=KJpz_1wTNd6sz? zz~JI_k*jO@K-P9__}^8;$%vfA;c&!kt-y1kUt4hzxGitOIo;~&>XOFd0arMxzu(D| zZZmHNO!74NbW<>aa%7U#ZC>l_VnZN0syOD#$nP{Tih5230~CV#Z0@j$kx?W+u>qy` zP{%kykDQ9?9?E7-LX47J;9I~e7iyVOkWG)x9`01fcTFV81E(qRNY?_V+&QamYRhYh zkiJXLzSWZ^e#Ro5jQQntfmFX6I-%xWwIwF+AOeY#1JhV`fFHoH@1$@hMKsx33FY=j zO(Y;*OQgKKvra#t9kXfhy(~q$xw3}GbC7H*-@R#lRn|l+dD21EFRa4mBjQc1_`_ow zm|e*JWpg_@T$@}0;TL8%=a=wZQZToC(AzOVydiN3ga<_=_%fxSN8}K~zin+Eh9G8> zrS>32xp{I*8tkr8=PSJ1DgZEv#qW}r-oFLPC@BBiH^7c6^}EN%W`@hK9@$_s@K^IE zVc)B9TohE}!Oow-uJ>s$746+=keEpH!&?`C!mUJNwUXU!x4cJ3!MvZ>jNH5=IPZTW z(GD*AKgiSnCs^Jc*eG$(ONqQ4V~k~WL1(S!Z{_a;T(m@4c&v(cg&*2DlXV5U9)@m0 z2Zg)_?{^YF^&p7;gf$Q0O$L$F$X~`cvZzP*s%XcLql2svt}x*ZD9&=e{rxFWKEC=U z8SA7mhFuhA%k=ebY^2%gTT>q8=0i0mn%CR9m*@V1@ci2I59bkD%v3xvt@kUn?HbU)J|Es?Y+?YC=W4QRmsPo#|?DB66$Oq zyh(%@VMa1pXb8=4BisD`@sX5A_u$GgN6E=(x7=HPFmUQ$y~(*6U?VYh@!u-O9Ho4L zN=QgQ0^b7sU#RPVDE#LXH(HGK0rQ5_t|5a&7^R+WP2E(r|FpXL?S=6!ciIi3=-Hsu zMj+TtgpMiNNP+2W4Npa*jMPsU=~}V z^uoVbWdjrb^!gxzHy>w0i_(l{w4j9ZD`V-L|DO0u>5))k{9}r*^ zhT=>on}=z4og8Aupw5wv0zo+QNk=ThBX2h?*{+JoZ`-ei$#6p&5 z{AvkxmzMuHhZFv_^=?$8JV0ZHzb;T!(=}?EWG8$+^3U>*A7kskf2S@Xdfh9E_H5$3 z*@%EMUnGCKoozFpb}~(Ll&s$?3cBRIfh!=_=j1f5)gJw-iosMrSPkG%~P} z*Ad&IESkM!L{3wB7%&*I2IlucrVM|-g;sv1aqCZO7CaN>O8SMjYe=jI7Eg*nAYu#npnRrFCj^d!4rrx)h@j()hUcwf;k5 z-m>2HHgd#vKjzh%)6-4V{y@R_HC* zr7yCh3j^y#K*Up(3B--JbFQ6HZ=eF!9LFm8lBpxRpn9Ry5!Qrd6{~OCXH7VJ$-Kz} z$vO!{$Ss4RQoX85kl4r+-XB<&rRwIg!XWFtdZgMH^}Nn+qH|A=uZ7IVUni(4N1VYJz)7VuU#rYOEs(KOo_43r+213Xl+v|@LDx@jyEzCI3T=<8GA*B9>$ zS9!NhGXP_eNtrZydb|~BU``_?i1UGR4)H|A3GAUGS7AFiucm%!pc%niR>zs-Z@(ST zI42~Dh2r@@PvNjQclH=XGr3u6&6JUC zYB74ntplq%YthqtBJ^FPf^~E&QU$nfU3Tmk%Esd_y;5+AKGW!f*d3C+w)yLMuxqeEUR7ss-If*a(-ifkp`S92)TXe7M(&Hfo4DbyCJJJ*4aI*8f&O)P<>JETZRRyq43~MLBX~Fg7T&G=7+s*=DkR>@t#j2 zmE@Jo3MlZzfoc~Sh9(77i3sZ3%Glqh#XaVSeG{G6Z4*7AU&4ETQwK1ePCP~l?C8fX zy%gPRnc?2x%JsctDPD1qEI_r?@X(J;S;kMl<=j!mJhi~*zVdOK?RX+fN}k%oR8mfg zL7_Q^g2cb1K#?DXUzUDP+-o@GFLcd7S(`C`0_A5;x;5!~vf)2FQeqpfbLW|Dz%waV zpm^PUn*6ZzXPwqVcFVt4ggC7tfr!{k4!D|S24f5G+wB*Bkx>HVL!v4GFw5S@+CzKK zcl_`G=#VHg1Qg)TnJyb=a9jfV>8~KVEb)JMy)rJB;`0)y@bROG)2M_M&GmNID1G-I zTW>DXNFv%QohhP6MK(>X%#EF>+zD*n^ZJ>F7ZE6nEzX<$l71NZ_OCZ{7qwV&;6DF; z_;br*m>bo55?tJxvQt*RC!h{3`}P|k7ezoF*YA)9uq#lP>IZWq0YD{O&RrHLe>%~) zYs`)35;D4=jc-M4O_2gisvXevEXUHN6owDhYiV$ie^#-9Lbe1jqyzk; zo^=OZ-hYNqivd239I$?UhH9Wkx)y93T|x4>%2_h(i}57+KCWFI;dTo%OCt@*j7_w* z*9{K6_B7%^4?j$=gn4O535ea~ftNuNiQ&uLka9>?L_K^qs3B>jI}MVIQ78|aUFZyw z?hT%-D2_(tIrh+NOX=b9 z{w;_ZYm*LvdwB7oOv7k`o**U|AIo2MYgn`DMKL^sD`&{m(lyC@vt7CwKE(63SUrK< zVoN-}2`@y))m<)UiyF%p8l#)KO(x14nwkC61>xn}GY367nH`9P_nCt5FG6=ndvvU4 zS0gAM0c!WM;x~C3TwJhAvGZx=C5Nj()0#RC;>578K0VuF+lz zTh7-#)c|Us(?g`|<&o`0UZUmopbk~4KeUK$ic1xqerD7mB1d4GuGrbOE{ka zZVsUuA72#mCd!b?S}xay+A1X-LyS8EcN<3A$y=%-5nTlblLXgcO$vswuD+g?+V2Rj z=GSZe10QG9|I9~42DqepS6kM(n)bp2(I=p@Gc#s6voIBpr?baa`nh#0s72EQ5vl+| zguc)yK#UT@Yx=hC?H{^L!=i|9ujn3~;y_a1ncu(0^GX*8rMqtgxK<2I=^`5_ewiG^pN|8czd1qY7e*t?QHuSs znWe#>@ekvf)>tu^1CeOmrLNnwa7}7g&U<=Xl8kX`ugSrpo6is`)4~NXfAnAE)4IH# Y@M`GL@w(C3jXMJLlFh}63tqqeH@M7^3IG5A diff --git a/TestData/VisualTests/Features/SpecialNotes/GraceNotesAdvanced.gp b/TestData/VisualTests/Features/SpecialNotes/GraceNotesAdvanced.gp new file mode 100644 index 0000000000000000000000000000000000000000..c0a9012178e4ef768a39aeefd4cf861c92b65464 GIT binary patch literal 9336 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 C9U`6p literal 0 HcmV?d00001 diff --git a/TestData/VisualTests/Features/SpecialNotes/GraceNotesAdvanced.png b/TestData/VisualTests/Features/SpecialNotes/GraceNotesAdvanced.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3085cf3cd6e1d60fa970243056b11e62da7685 GIT binary patch literal 20711 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 D;emf) literal 0 HcmV?d00001