Double accidentals mostly work, but highlighting on playback is broken

This commit is contained in:
Matthias Neeracher 2011-08-28 06:12:44 +02:00
parent 9233e42cfc
commit a815cc09da
11 changed files with 614 additions and 85 deletions

View File

@ -0,0 +1,126 @@
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: -25 -157 362 470
%%Pages: 0
%%Title: accidentals.flatflat from Emmentaler-26
%%Creator: FontForge
%%Author: Matthias Neeracher
%%CreationDate: 5:16 28-8-2011
%%EndComments
%%BeginPreview: 45 74 4 74
%0000000000000000000000000000000000000000000000
%6CEEC600000000000018DFEA3000000000000000000000
%DFFFFD0000000000004FFFFF9000000000000000000000
%DFFFFD0000000000003FFFFF9000000000000000000000
%CFFFFC0000000000003FFFFF9000000000000000000000
%CFFFFC0000000000003FFFFF8000000000000000000000
%CFFFFC0000000000002FFFFF8000000000000000000000
%CFFFFC0000000000002FFFFF8000000000000000000000
%BFFFFB0000000000002FFFFF7000000000000000000000
%BFFFFB0000000000001FFFFF7000000000000000000000
%BFFFFB0000000000001FFFFF7000000000000000000000
%AFFFFB0000000000001FFFFF6000000000000000000000
%AFFFFA0000000000000FFFFF6000000000000000000000
%AFFFFA0000000000000FFFFF6000000000000000000000
%AFFFFA0000000000000FFFFF5000000000000000000000
%9FFFFA0000000000000FFFFF5000000000000000000000
%9FFFF90000000000000EFFFF5000000000000000000000
%9FFFF90000000000000EFFFF5000000000000000000000
%9FFFF90000000000000EFFFF4000000000000000000000
%8FFFF90000000000000DFFFF4000000000000000000000
%8FFFF80000000000000DFFFF4000000000000000000000
%8FFFF80000000000000DFFFF3000000000000000000000
%7FFFF80000000000000CFFFF3000000000000000000000
%7FFFF80000000000000CFFFF3000000000000000000000
%7FFFF70000000000000CFFFF2000000000000000000000
%7FFFF70000000000000BFFFF2000000000000000000000
%6FFFF70000000000000BFFFF2000000000000000000000
%6FFFF60000000000000BFFFF2000000000000000000000
%6FFFF60000000000000BFFFF1000000000000000000000
%6FFFF60000000000000AFFFF1000000000000000000000
%5FFFF60000000000000AFFFF1000000000000000000000
%5FFFF50000000000000AFFFF0000000000000000000000
%5FFFF500000000000009FFFF0000000000000000000000
%4FFFF500000000000009FFFF0000000000000000000000
%4FFFF500000000000009FFFE0000000000000000000000
%4FFFF400000000000008FFFE0000000000000000000000
%4FFFF400000000000008FFFE0000000000000000000000
%3FFFF400000000000008FFFE0000000000000000000000
%3FFFF400003688630007FFFD0000003578762000000000
%3FFFF3018DFFFFFFD507FFFD0003AEFFFFFFFC60000000
%2FFFF34DFFFFFFFFFFB8FFFD03CFFFFFFFFFFFFC200000
%2FFFF9FFFFFFFFFFFFFFFFFD8FFFFFFFFFFFFFFFE30000
%2FFFFFFFFDEFFFFFFFFFFFFFFFFFFEDFFFFFFFFFFE2000
%2FFFFFF91007FFFFFFFFFFFFFFFB30018FFFFFFFFFC000
%1FFFFF9000009FFFFFFFFFFFFFA0000008FFFFFFFFF500
%1FFFFE1000002FFFFFFFFFFFFD00000001EFFFFFFFFC00
%1FFFF90000000EFFFFFFFFFFF600000000AFFFFFFFFF10
%1FFFF40000000AFFFFFFFFFFE0000000005FFFFFFFFF60
%0FFFF200000008FFFFFFFFFFB0000000002FFFFFFFFF70
%0FFFF000000007FFFFFFFFFF90000000001FFFFFFFFF90
%0FFFE000000007FFFFFFFFFF70000000000EFFFFFFFF90
%0EFFE000000007FFFFFFFFFF70000000000FFFFFFFFF70
%0EFFE000000008FFFFFFFFFF70000000001FFFFFFFFF40
%0EFFE00000000AFFFFFFFFFF70000000004FFFFFFFFE10
%0EFFD00000000DFFFFFFFFFF70000000008FFFFFFFF800
%0DFFD00000002FFFFFFFFFFF6000000000CFFFFFFFF200
%0DFFD00000007FFFFFFFFFFF6000000004FFFFFFFF8000
%0DFFD0000000DFFFFFFFFFFF600000000BFFFFFFFB0000
%0DFFD0000005FFFFFFFDFFFF600000005FFFFFFFD20000
%0CFFD000000CFFFFFFD2FFFF60000001EFFFFFFD200000
%0CFFD000007FFFFFFD21FFFF7000001CFFFFFFD2000000
%0CFFE00002FFFFFFD201FFFF800000BFFFFFFA10000000
%0BFFE0000CFFFFFC1000FFFF900009FFFFFF6000000000
%0BFFF0008FFFFFA10000FFFFA0008FFFFFD30000000000
%0BFFF106FFFFF9000000FFFFB009FFFFF9100000000000
%0BFFF25FFFFF60000000EFFFC1BFFFFE60000000000000
%0AFFF8FFFFE400000000EFFFDCFFFFC200000000000000
%0AFFFFFFFD3000000000EFFFFFFFF90000000000000000
%0AFFFFFFC10000000000EFFFFFFE500000000000000000
%0AFFFFFB000000000000DFFFFFC2000000000000000000
%09FFFFD1000000000000DFFFFD10000000000000000000
%06FFFE30000000000000AFFFE300000000000000000000
%00AFD4000000000000002CFC3000000000000000000000
%0000000000000000000000000000000000000000000000
%%EndPreview
%%EndProlog
%%Page "accidentals.flatflat" 1
gsave newpath
187 44 moveto
186 -25 lineto
186 -36 lineto
186 -58 188 -80 190 -102 curveto
235 -65 279 -21 279 37 curveto
279 71 267 106 238 106 curveto
208 106 188 76 187 44 curveto
closepath
17 44 moveto
16 -25 lineto
16 -36 lineto
16 -59 17 -81 20 -104 curveto
60 -66 92 -18 92 37 curveto
92 70 86 106 58 106 curveto
31 106 18 75 17 44 curveto
closepath
149 -136 moveto
147 -30 lineto
119 -65 76 -93 42 -125 curveto
30 -136 24 -157 7 -157 curveto
-5 -157 -14 -148 -14 -136 curveto
-25 463 lineto
-17 467 -9 470 0 470 curveto
9 470 17 467 25 463 curveto
19 114 lineto
37 133 61 144 87 144 curveto
109 144 129 135 144 121 curveto
137 463 lineto
145 467 153 470 162 470 curveto
171 470 180 467 188 463 curveto
181 114 lineto
205 133 236 144 267 144 curveto
321 144 362 99 362 45 curveto
362 -37 272 -73 209 -125 curveto
195 -136 188 -157 170 -157 curveto
158 -157 149 -148 149 -136 curveto
closepath
fill grestore
%%EOF

View File

@ -0,0 +1,126 @@
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: -25 -157 362 470
%%Pages: 0
%%Title: accidentals.flatflat from Emmentaler-26
%%Creator: FontForge
%%Author: Matthias Neeracher
%%CreationDate: 5:16 28-8-2011
%%EndComments
%%BeginPreview: 45 74 4 74
%0000000000000000000000000000000000000000000000
%6CEEC600000000000018DFEA3000000000000000000000
%DFFFFD0000000000004FFFFF9000000000000000000000
%DFFFFD0000000000003FFFFF9000000000000000000000
%CFFFFC0000000000003FFFFF9000000000000000000000
%CFFFFC0000000000003FFFFF8000000000000000000000
%CFFFFC0000000000002FFFFF8000000000000000000000
%CFFFFC0000000000002FFFFF8000000000000000000000
%BFFFFB0000000000002FFFFF7000000000000000000000
%BFFFFB0000000000001FFFFF7000000000000000000000
%BFFFFB0000000000001FFFFF7000000000000000000000
%AFFFFB0000000000001FFFFF6000000000000000000000
%AFFFFA0000000000000FFFFF6000000000000000000000
%AFFFFA0000000000000FFFFF6000000000000000000000
%AFFFFA0000000000000FFFFF5000000000000000000000
%9FFFFA0000000000000FFFFF5000000000000000000000
%9FFFF90000000000000EFFFF5000000000000000000000
%9FFFF90000000000000EFFFF5000000000000000000000
%9FFFF90000000000000EFFFF4000000000000000000000
%8FFFF90000000000000DFFFF4000000000000000000000
%8FFFF80000000000000DFFFF4000000000000000000000
%8FFFF80000000000000DFFFF3000000000000000000000
%7FFFF80000000000000CFFFF3000000000000000000000
%7FFFF80000000000000CFFFF3000000000000000000000
%7FFFF70000000000000CFFFF2000000000000000000000
%7FFFF70000000000000BFFFF2000000000000000000000
%6FFFF70000000000000BFFFF2000000000000000000000
%6FFFF60000000000000BFFFF2000000000000000000000
%6FFFF60000000000000BFFFF1000000000000000000000
%6FFFF60000000000000AFFFF1000000000000000000000
%5FFFF60000000000000AFFFF1000000000000000000000
%5FFFF50000000000000AFFFF0000000000000000000000
%5FFFF500000000000009FFFF0000000000000000000000
%4FFFF500000000000009FFFF0000000000000000000000
%4FFFF500000000000009FFFE0000000000000000000000
%4FFFF400000000000008FFFE0000000000000000000000
%4FFFF400000000000008FFFE0000000000000000000000
%3FFFF400000000000008FFFE0000000000000000000000
%3FFFF400003688630007FFFD0000003578762000000000
%3FFFF3018DFFFFFFD507FFFD0003AEFFFFFFFC60000000
%2FFFF34DFFFFFFFFFFB8FFFD03CFFFFFFFFFFFFC200000
%2FFFF9FFFFFFFFFFFFFFFFFD8FFFFFFFFFFFFFFFE30000
%2FFFFFFFFDEFFFFFFFFFFFFFFFFFFEDFFFFFFFFFFE2000
%2FFFFFF91007FFFFFFFFFFFFFFFB30018FFFFFFFFFC000
%1FFFFF9000009FFFFFFFFFFFFFA0000008FFFFFFFFF500
%1FFFFE1000002FFFFFFFFFFFFD00000001EFFFFFFFFC00
%1FFFF90000000EFFFFFFFFFFF600000000AFFFFFFFFF10
%1FFFF40000000AFFFFFFFFFFE0000000005FFFFFFFFF60
%0FFFF200000008FFFFFFFFFFB0000000002FFFFFFFFF70
%0FFFF000000007FFFFFFFFFF90000000001FFFFFFFFF90
%0FFFE000000007FFFFFFFFFF70000000000EFFFFFFFF90
%0EFFE000000007FFFFFFFFFF70000000000FFFFFFFFF70
%0EFFE000000008FFFFFFFFFF70000000001FFFFFFFFF40
%0EFFE00000000AFFFFFFFFFF70000000004FFFFFFFFE10
%0EFFD00000000DFFFFFFFFFF70000000008FFFFFFFF800
%0DFFD00000002FFFFFFFFFFF6000000000CFFFFFFFF200
%0DFFD00000007FFFFFFFFFFF6000000004FFFFFFFF8000
%0DFFD0000000DFFFFFFFFFFF600000000BFFFFFFFB0000
%0DFFD0000005FFFFFFFDFFFF600000005FFFFFFFD20000
%0CFFD000000CFFFFFFD2FFFF60000001EFFFFFFD200000
%0CFFD000007FFFFFFD21FFFF7000001CFFFFFFD2000000
%0CFFE00002FFFFFFD201FFFF800000BFFFFFFA10000000
%0BFFE0000CFFFFFC1000FFFF900009FFFFFF6000000000
%0BFFF0008FFFFFA10000FFFFA0008FFFFFD30000000000
%0BFFF106FFFFF9000000FFFFB009FFFFF9100000000000
%0BFFF25FFFFF60000000EFFFC1BFFFFE60000000000000
%0AFFF8FFFFE400000000EFFFDCFFFFC200000000000000
%0AFFFFFFFD3000000000EFFFFFFFF90000000000000000
%0AFFFFFFC10000000000EFFFFFFE500000000000000000
%0AFFFFFB000000000000DFFFFFC2000000000000000000
%09FFFFD1000000000000DFFFFD10000000000000000000
%06FFFE30000000000000AFFFE300000000000000000000
%00AFD4000000000000002CFC3000000000000000000000
%0000000000000000000000000000000000000000000000
%%EndPreview
%%EndProlog
%%Page "accidentals.flatflat" 1
gsave newpath
187 44 moveto
186 -25 lineto
186 -36 lineto
186 -58 188 -80 190 -102 curveto
235 -65 279 -21 279 37 curveto
279 71 267 106 238 106 curveto
208 106 188 76 187 44 curveto
closepath
17 44 moveto
16 -25 lineto
16 -36 lineto
16 -59 17 -81 20 -104 curveto
60 -66 92 -18 92 37 curveto
92 70 86 106 58 106 curveto
31 106 18 75 17 44 curveto
closepath
149 -136 moveto
147 -30 lineto
119 -65 76 -93 42 -125 curveto
30 -136 24 -157 7 -157 curveto
-5 -157 -14 -148 -14 -136 curveto
-25 463 lineto
-17 467 -9 470 0 470 curveto
9 470 17 467 25 463 curveto
19 114 lineto
37 133 61 144 87 144 curveto
109 144 129 135 144 121 curveto
137 463 lineto
145 467 153 470 162 470 curveto
171 470 180 467 188 463 curveto
181 114 lineto
205 133 236 144 267 144 curveto
321 144 362 99 362 45 curveto
362 -37 272 -73 209 -125 curveto
195 -136 188 -157 170 -157 curveto
158 -157 149 -148 149 -136 curveto
closepath
1 0 0 setrgbcolor fill grestore
%%EOF

View File

@ -0,0 +1,123 @@
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: -8 -133 258 133
%%Pages: 0
%%Title: accidentals.doublesharp from Emmentaler-26
%%Creator: FontForge
%%Author: Matthias Neeracher
%%CreationDate: 5:16 28-8-2011
%%EndComments
%%BeginPreview: 73 74 4 74
%00000000000000000000000000000000000000000000000000000000000000000000000000
%06EFDCA976431000000000000000000000000000000000000000000000000235689BCEFE30
%1FFFFFFFFFFFFFDCA9764310000000000000000000000000000235689BCEFFFFFFFFFFFFC0
%2FFFFFFFFFFFFFFFFFFFFFFFDCA81000000000000000039ACEFFFFFFFFFFFFFFFFFFFFFFD0
%1FFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFC0
%0EFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFA0
%0DFFFFFFFFFFFFFFFFFFFFFFFFFFF5000000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFF90
%0BFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFF70
%09FFFFFFFFFFFFFFFFFFFFFFFFFFF600000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFF60
%08FFFFFFFFFFFFFFFFFFFFFFFFFFF700000000000000BFFFFFFFFFFFFFFFFFFFFFFFFFFF40
%06FFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000BFFFFFFFFFFFFFFFFFFFFFFFFFFF30
%05FFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFF10
%03FFFFFFFFFFFFFFFFFFFFFFFFFFF900000000000000DFFFFFFFFFFFFFFFFFFFFFFFFFFF00
%02FFFFFFFFFFFFFFFFFFFFFFFFFFFB00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFD00
%00FFFFFFFFFFFFFFFFFFFFFFFFFFFD00000000000002FFFFFFFFFFFFFFFFFFFFFFFFFFFC00
%00EFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFA00
%00CFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFF900
%00BFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFF700
%009FFFFFFFFFFFFFFFFFFFFFFFFFFFA000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFF600
%008FFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFF400
%006FFFFFFFFFFFFFFFFFFFFFFFFFFFF400000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFF200
%005FFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFF100
%003FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFE000
%002FFFFFFFFFFFFFFFFFFFFFFFFFFFFF600000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFD000
%000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000
%000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFA000
%000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE100004FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000
%000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000
%0003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF600AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1000
%0000267889AABEFFFFFFFFFFFFFFFFFFFFFF48FFFFFFFFFFFFFFFFFFFFFFDBA99877510000
%000000000000001369CFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFB852000000000000000
%000000000000000000026BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA510000000000000000000
%000000000000000000000029EFFFFFFFFFFFFFFFFFFFFFFFFD710000000000000000000000
%00000000000000000000000019FFFFFFFFFFFFFFFFFFFFFE60000000000000000000000000
%000000000000000000000000003CFFFFFFFFFFFFFFFFFFA100000000000000000000000000
%0000000000000000000000000000AFFFFFFFFFFFFFFFF60000000000000000000000000000
%000000000000000000000000000007FFFFFFFFFFFFFE400000000000000000000000000000
%000000000000000000000000000007FFFFFFFFFFFFFE400000000000000000000000000000
%0000000000000000000000000000AFFFFFFFFFFFFFFFF60000000000000000000000000000
%000000000000000000000000003CFFFFFFFFFFFFFFFFFFA100000000000000000000000000
%00000000000000000000000019FFFFFFFFFFFFFFFFFFFFFE60000000000000000000000000
%000000000000000000000029EFFFFFFFFFFFFFFFFFFFFFFFFD710000000000000000000000
%000000000000000000016BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA510000000000000000000
%000000000000000269CFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFB852000000000000000
%0000267789AABDFFFFFFFFFFFFFFFFFFFFFF48FFFFFFFFFFFFFFFFFFFFFFDBA99877510000
%0003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF600AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1000
%000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000
%000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE100004FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000
%000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFA000
%000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000
%002FFFFFFFFFFFFFFFFFFFFFFFFFFFFF600000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFD000
%003FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFE000
%005FFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFF100
%006FFFFFFFFFFFFFFFFFFFFFFFFFFFF400000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFF200
%008FFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFF400
%009FFFFFFFFFFFFFFFFFFFFFFFFFFFA000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFF600
%00BFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFF700
%00CFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFF900
%00EFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFA00
%00FFFFFFFFFFFFFFFFFFFFFFFFFFFD00000000000002FFFFFFFFFFFFFFFFFFFFFFFFFFFC00
%02FFFFFFFFFFFFFFFFFFFFFFFFFFFB00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFD00
%03FFFFFFFFFFFFFFFFFFFFFFFFFFF900000000000000DFFFFFFFFFFFFFFFFFFFFFFFFFFF00
%05FFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFF10
%06FFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000BFFFFFFFFFFFFFFFFFFFFFFFFFFF30
%08FFFFFFFFFFFFFFFFFFFFFFFFFFF700000000000000BFFFFFFFFFFFFFFFFFFFFFFFFFFF40
%09FFFFFFFFFFFFFFFFFFFFFFFFFFF600000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFF60
%0BFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFF70
%0DFFFFFFFFFFFFFFFFFFFFFFFFFFF5000000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFF90
%0EFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFA0
%1FFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFC0
%2FFFFFFFFFFFFFFFFFFFFFFFDCA81000000000000000039BCEFFFFFFFFFFFFFFFFFFFFFFD0
%1FFFFFFFFFFFFFDCA9764310000000000000000000000000000235689BCEFFFFFFFFFFFFC0
%06FFECA976431000000000000000000000000000000000000000000000000235689BCEFE40
%00000000000000000000000000000000000000000000000000000000000000000000000000
%%EndPreview
%%EndProlog
%%Page "accidentals.doublesharp" 1
gsave newpath
150 0 moveto
173 -23 208 -28 241 -28 curveto
245 -28 249 -32 249 -36 curveto
258 -125 lineto
258 -129 255 -133 251 -133 curveto
250 -133 lineto
161 -124 lineto
157 -124 153 -120 153 -116 curveto
153 -83 148 -48 125 -25 curveto
102 -48 97 -83 97 -116 curveto
97 -120 93 -124 89 -124 curveto
0 -133 lineto
-1 -133 lineto
-5 -133 -8 -129 -8 -125 curveto
1 -36 lineto
1 -32 5 -28 9 -28 curveto
42 -28 77 -23 100 0 curveto
77 23 42 28 9 28 curveto
5 28 1 32 1 36 curveto
-8 125 lineto
-8 129 -5 133 -1 133 curveto
0 133 lineto
89 124 lineto
93 124 97 120 97 116 curveto
97 83 102 48 125 25 curveto
148 48 153 83 153 116 curveto
153 120 157 124 161 124 curveto
250 133 lineto
251 133 lineto
255 133 258 129 258 125 curveto
249 36 lineto
249 32 245 28 241 28 curveto
208 28 173 23 150 0 curveto
closepath
fill grestore
%%EOF

View File

@ -0,0 +1,123 @@
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: -8 -133 258 133
%%Pages: 0
%%Title: accidentals.doublesharp from Emmentaler-26
%%Creator: FontForge
%%Author: Matthias Neeracher
%%CreationDate: 5:16 28-8-2011
%%EndComments
%%BeginPreview: 73 74 4 74
%00000000000000000000000000000000000000000000000000000000000000000000000000
%06EFDCA976431000000000000000000000000000000000000000000000000235689BCEFE30
%1FFFFFFFFFFFFFDCA9764310000000000000000000000000000235689BCEFFFFFFFFFFFFC0
%2FFFFFFFFFFFFFFFFFFFFFFFDCA81000000000000000039ACEFFFFFFFFFFFFFFFFFFFFFFD0
%1FFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFC0
%0EFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFA0
%0DFFFFFFFFFFFFFFFFFFFFFFFFFFF5000000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFF90
%0BFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFF70
%09FFFFFFFFFFFFFFFFFFFFFFFFFFF600000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFF60
%08FFFFFFFFFFFFFFFFFFFFFFFFFFF700000000000000BFFFFFFFFFFFFFFFFFFFFFFFFFFF40
%06FFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000BFFFFFFFFFFFFFFFFFFFFFFFFFFF30
%05FFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFF10
%03FFFFFFFFFFFFFFFFFFFFFFFFFFF900000000000000DFFFFFFFFFFFFFFFFFFFFFFFFFFF00
%02FFFFFFFFFFFFFFFFFFFFFFFFFFFB00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFD00
%00FFFFFFFFFFFFFFFFFFFFFFFFFFFD00000000000002FFFFFFFFFFFFFFFFFFFFFFFFFFFC00
%00EFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFA00
%00CFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFF900
%00BFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFF700
%009FFFFFFFFFFFFFFFFFFFFFFFFFFFA000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFF600
%008FFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFF400
%006FFFFFFFFFFFFFFFFFFFFFFFFFFFF400000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFF200
%005FFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFF100
%003FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFE000
%002FFFFFFFFFFFFFFFFFFFFFFFFFFFFF600000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFD000
%000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000
%000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFA000
%000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE100004FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000
%000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000
%0003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF600AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1000
%0000267889AABEFFFFFFFFFFFFFFFFFFFFFF48FFFFFFFFFFFFFFFFFFFFFFDBA99877510000
%000000000000001369CFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFB852000000000000000
%000000000000000000026BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA510000000000000000000
%000000000000000000000029EFFFFFFFFFFFFFFFFFFFFFFFFD710000000000000000000000
%00000000000000000000000019FFFFFFFFFFFFFFFFFFFFFE60000000000000000000000000
%000000000000000000000000003CFFFFFFFFFFFFFFFFFFA100000000000000000000000000
%0000000000000000000000000000AFFFFFFFFFFFFFFFF60000000000000000000000000000
%000000000000000000000000000007FFFFFFFFFFFFFE400000000000000000000000000000
%000000000000000000000000000007FFFFFFFFFFFFFE400000000000000000000000000000
%0000000000000000000000000000AFFFFFFFFFFFFFFFF60000000000000000000000000000
%000000000000000000000000003CFFFFFFFFFFFFFFFFFFA100000000000000000000000000
%00000000000000000000000019FFFFFFFFFFFFFFFFFFFFFE60000000000000000000000000
%000000000000000000000029EFFFFFFFFFFFFFFFFFFFFFFFFD710000000000000000000000
%000000000000000000016BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA510000000000000000000
%000000000000000269CFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFB852000000000000000
%0000267789AABDFFFFFFFFFFFFFFFFFFFFFF48FFFFFFFFFFFFFFFFFFFFFFDBA99877510000
%0003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF600AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1000
%000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000
%000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE100004FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000
%000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFA000
%000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000
%002FFFFFFFFFFFFFFFFFFFFFFFFFFFFF600000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFD000
%003FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFE000
%005FFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFF100
%006FFFFFFFFFFFFFFFFFFFFFFFFFFFF400000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFF200
%008FFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFF400
%009FFFFFFFFFFFFFFFFFFFFFFFFFFFA000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFF600
%00BFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFF700
%00CFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFF900
%00EFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFA00
%00FFFFFFFFFFFFFFFFFFFFFFFFFFFD00000000000002FFFFFFFFFFFFFFFFFFFFFFFFFFFC00
%02FFFFFFFFFFFFFFFFFFFFFFFFFFFB00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFD00
%03FFFFFFFFFFFFFFFFFFFFFFFFFFF900000000000000DFFFFFFFFFFFFFFFFFFFFFFFFFFF00
%05FFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFF10
%06FFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000BFFFFFFFFFFFFFFFFFFFFFFFFFFF30
%08FFFFFFFFFFFFFFFFFFFFFFFFFFF700000000000000BFFFFFFFFFFFFFFFFFFFFFFFFFFF40
%09FFFFFFFFFFFFFFFFFFFFFFFFFFF600000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFF60
%0BFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFF70
%0DFFFFFFFFFFFFFFFFFFFFFFFFFFF5000000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFF90
%0EFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFA0
%1FFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFC0
%2FFFFFFFFFFFFFFFFFFFFFFFDCA81000000000000000039BCEFFFFFFFFFFFFFFFFFFFFFFD0
%1FFFFFFFFFFFFFDCA9764310000000000000000000000000000235689BCEFFFFFFFFFFFFC0
%06FFECA976431000000000000000000000000000000000000000000000000235689BCEFE40
%00000000000000000000000000000000000000000000000000000000000000000000000000
%%EndPreview
%%EndProlog
%%Page "accidentals.doublesharp" 1
gsave newpath
150 0 moveto
173 -23 208 -28 241 -28 curveto
245 -28 249 -32 249 -36 curveto
258 -125 lineto
258 -129 255 -133 251 -133 curveto
250 -133 lineto
161 -124 lineto
157 -124 153 -120 153 -116 curveto
153 -83 148 -48 125 -25 curveto
102 -48 97 -83 97 -116 curveto
97 -120 93 -124 89 -124 curveto
0 -133 lineto
-1 -133 lineto
-5 -133 -8 -129 -8 -125 curveto
1 -36 lineto
1 -32 5 -28 9 -28 curveto
42 -28 77 -23 100 0 curveto
77 23 42 28 9 28 curveto
5 28 1 32 1 36 curveto
-8 125 lineto
-8 129 -5 133 -1 133 curveto
0 133 lineto
89 124 lineto
93 124 97 120 97 116 curveto
97 83 102 48 125 25 curveto
148 48 153 83 153 116 curveto
153 120 157 124 161 124 curveto
250 133 lineto
251 133 lineto
255 133 258 129 258 125 curveto
249 36 lineto
249 32 245 28 241 28 curveto
208 28 173 23 150 0 curveto
closepath
1 0 0 setrgbcolor fill grestore
%%EOF

View File

@ -53,6 +53,16 @@ static inline bool HasSharp(int semi, int key)
return sSharps[key-1] & (1<<(semi+2)); return sSharps[key-1] & (1<<(semi+2));
} }
uint16_t VLVisualInKey(int8_t pitch, int key)
{
if (key < 0 && HasFlat(pitch % 12, key))
return VLNote::kWantFlat;
else if (key > 0 && HasSharp(pitch % 12, key))
return VLNote::kWantSharp;
else
return 0;
}
static inline int8_t SemiToStep(int semi) static inline int8_t SemiToStep(int semi)
{ {
static const int8_t sSteps[] = static const int8_t sSteps[] =

View File

@ -10,6 +10,11 @@
#include <inttypes.h> #include <inttypes.h>
//
// Inquire about accidentals
//
uint16_t VLVisualInKey(int8_t pitch, int key);
// //
// Grid position is defined from middle C // Grid position is defined from middle C
// //

View File

@ -22,6 +22,8 @@ enum VLMusicElement {
kMusicFlat, kMusicFlat,
kMusicSharp, kMusicSharp,
kMusicNatural, kMusicNatural,
kMusic2Flat,
kMusic2Sharp,
kMusicWholeNote, kMusicWholeNote,
kMusicHalfNote, kMusicHalfNote,
kMusicNote, kMusicNote,
@ -38,6 +40,8 @@ enum VLMusicElement {
kMusicFlatCursor, kMusicFlatCursor,
kMusicSharpCursor, kMusicSharpCursor,
kMusicNaturalCursor, kMusicNaturalCursor,
kMusic2FlatCursor,
kMusic2SharpCursor,
kMusicRestCursor, kMusicRestCursor,
kMusicKillCursor, kMusicKillCursor,
kMusicExtendCursor, kMusicExtendCursor,

View File

@ -30,6 +30,8 @@ static NSString * sElementNames[kMusicElements] = {
@"flat", @"flat",
@"sharp", @"sharp",
@"natural", @"natural",
@"doubleflat",
@"doublesharp",
@"whole-notehead", @"whole-notehead",
@"half-notehead", @"half-notehead",
@"notehead", @"notehead",
@ -46,6 +48,8 @@ static NSString * sElementNames[kMusicElements] = {
@"flatcursor", @"flatcursor",
@"sharpcursor", @"sharpcursor",
@"naturalcursor", @"naturalcursor",
@"doubleflatcursor",
@"doublesharpcursor",
@"restcursor", @"restcursor",
@"killcursor", @"killcursor",
@"extendcursor", @"extendcursor",
@ -169,11 +173,13 @@ static float sFlatPos[] = {
{ {
switch (visual & VLNote::kAccidentalsMask) { switch (visual & VLNote::kAccidentalsMask) {
case VLNote::kWantSharp: case VLNote::kWantSharp:
case VLNote::kWant2Sharp: // TODO
return kMusicSharp; return kMusicSharp;
case VLNote::kWantFlat: case VLNote::kWantFlat:
case VLNote::kWant2Flat: // TODO
return kMusicFlat; return kMusicFlat;
case VLNote::kWant2Sharp:
return kMusic2Sharp;
case VLNote::kWant2Flat:
return kMusic2Flat;
case VLNote::kWantNatural: case VLNote::kWantNatural:
return kMusicNatural; return kMusicNatural;
default: default:
@ -725,7 +731,7 @@ static int8_t sSharpAcc[] = {
// //
// Extension // Extension
// //
if ([event modifierFlags] & NSShiftKeyMask) { if (([event modifierFlags] & (NSShiftKeyMask|NSAlternateKeyMask|NSCommandKeyMask))==NSShiftKeyMask) {
fCursorAccidental = kMusicExtendCursor; fCursorAccidental = kMusicExtendCursor;
return; return;
} }
@ -734,65 +740,37 @@ static int8_t sSharpAcc[] = {
const VLProperties & prop = const VLProperties & prop =
[self song]->fProperties[cursorSection]; [self song]->fProperties[cursorSection];
if (prop.fKey >= 0) { switch ([event modifierFlags] & (NSShiftKeyMask|NSAlternateKeyMask|NSCommandKeyMask)) {
if (prop.fKey >= sSharpAcc[fCursorPitch % 12]) { // Sharp in Key case NSShiftKeyMask|NSAlternateKeyMask:
switch ([event modifierFlags] & (NSAlternateKeyMask|NSCommandKeyMask)) { fCursorAccidental = kMusic2FlatCursor; // Gbb
fCursorActualPitch = fCursorPitch-2;
break;
case NSAlternateKeyMask: case NSAlternateKeyMask:
fCursorAccidental = kMusicFlatCursor; // G# -> Gb fCursorAccidental = kMusicFlatCursor; // Gb
fCursorActualPitch = fCursorPitch-1; fCursorActualPitch = fCursorPitch-1;
break; break;
case NSCommandKeyMask: case NSShiftKeyMask|NSCommandKeyMask:
fCursorAccidental = kMusicSharpCursor; fCursorAccidental = kMusic2SharpCursor; // G##
// Fall through fCursorActualPitch = fCursorPitch+2;
default:
fCursorActualPitch = fCursorPitch+1;
break; // G# -> G#
case NSAlternateKeyMask|NSCommandKeyMask:
fCursorAccidental = kMusicNaturalCursor; // G# -> G
fCursorActualPitch = fCursorPitch;
break; break;
}
return;
}
} else {
if (prop.fKey <= -sFlatAcc[fCursorPitch % 12]) { // Flat in Key
switch ([event modifierFlags] & (NSAlternateKeyMask|NSCommandKeyMask)) {
case NSAlternateKeyMask:
fCursorAccidental = kMusicFlatCursor;
// Fall through
default:
fCursorActualPitch = fCursorPitch-1;
break; // Gb -> Gb
case NSCommandKeyMask: case NSCommandKeyMask:
fCursorAccidental = kMusicSharpCursor; // Gb -> G# fCursorAccidental = kMusicSharpCursor; // G#
fCursorActualPitch = fCursorPitch+1; fCursorActualPitch = fCursorPitch+1;
break; break;
case NSAlternateKeyMask|NSCommandKeyMask: case NSAlternateKeyMask|NSCommandKeyMask:
fCursorAccidental = kMusicNaturalCursor; // Gb -> G fCursorAccidental = kMusicNaturalCursor; // G
fCursorActualPitch = fCursorPitch; fCursorActualPitch = fCursorPitch;
break; break;
} default:
return; switch (VLVisualInKey(fCursorPitch, prop.fKey)) {
} case VLNote::kWantFlat:
}
//
// Natural
//
switch ([event modifierFlags] & (NSAlternateKeyMask|NSCommandKeyMask)) {
case NSAlternateKeyMask:
fCursorAccidental = kMusicFlatCursor; // G -> Gb
fCursorActualPitch = fCursorPitch-1; fCursorActualPitch = fCursorPitch-1;
break; case VLNote::kWantSharp:
case NSCommandKeyMask:
fCursorAccidental = kMusicSharpCursor; // G -> G#
fCursorActualPitch = fCursorPitch+1; fCursorActualPitch = fCursorPitch+1;
break;
case NSAlternateKeyMask|NSCommandKeyMask:
fCursorAccidental = kMusicNaturalCursor;
// Fall through
default: default:
fCursorActualPitch = fCursorPitch; fCursorActualPitch = fCursorPitch;
break; // G -> G }
break;
} }
} }

View File

@ -5,7 +5,7 @@
// //
// (MN) Matthias Neeracher // (MN) Matthias Neeracher
// //
// Copyright © 2006-2007 Matthias Neeracher // Copyright © 2006-2011 Matthias Neeracher
// //
const float kLineX = 5.0; const float kLineX = 5.0;
@ -28,9 +28,13 @@ const float kAccW = 10.0f;
const float kSharpY =-15.0f; const float kSharpY =-15.0f;
const float kFlatY = -7.0f; const float kFlatY = -7.0f;
const float kNaturalY =-15.0f; const float kNaturalY =-15.0f;
const float k2SharpY = -5.0f;
const float k2FlatY = -7.0f;
const float kSharpW =-11.0f; const float kSharpW =-11.0f;
const float kFlatW = -9.0f; const float kFlatW = -9.0f;
const float kNaturalW = -7.0f; const float kNaturalW = -7.0f;
const float k2SharpW =-11.0f;
const float k2FlatW =-11.0f;
const float kImgScale = 0.04f; const float kImgScale = 0.04f;
#define kChordY ((fNumTopLedgers+6)*kLineH) #define kChordY ((fNumTopLedgers+6)*kLineH)
const float kChordW = 40.0f; const float kChordW = 40.0f;

View File

@ -30,8 +30,16 @@
case kMusicSharpCursor: case kMusicSharpCursor:
newNote.fVisual |= VLNote::kWantSharp; newNote.fVisual |= VLNote::kWantSharp;
break; break;
case kMusic2FlatCursor:
newNote.fVisual |= VLNote::kWant2Flat;
break;
case kMusic2SharpCursor:
newNote.fVisual |= VLNote::kWant2Sharp;
break;
case kMusicNaturalCursor: case kMusicNaturalCursor:
newNote.fVisual |= VLNote::kWantNatural; newNote.fVisual |= VLNote::kWantNatural;
break;
default:
break; break;
} }
[[self document] willChangeSong]; [[self document] willChangeSong];
@ -88,32 +96,20 @@
int cursorX; int cursorX;
int cursorY; int cursorY;
int cursorSect; int cursorSect;
uint16_t cursorVisual = 0;
VLMusicElement cursorElt; VLMusicElement cursorElt;
cursorX = [self noteXInMeasure:measure at:at]; cursorX = [self noteXInMeasure:measure at:at];
if (accidental == kMusicExtendCursor) { if (accidental == kMusicExtendCursor) {
cursorY = [self noteYInMeasure:measure withPitch:pitch]; cursorY = [self noteYInMeasure:measure withPitch:pitch];
cursorElt = accidental; cursorElt = accidental;
} else } else {
uint16_t visual = 0;
switch (mode) { switch (mode) {
default: default:
switch (accidental) { cursorY = [self noteYInMeasure:measure withPitch:pitch visual:&visual] - kNoteY;
case kMusicSharp:
cursorVisual = VLNote::kWantSharp;
break;
case kMusicFlat:
cursorVisual = VLNote::kWantFlat;
break;
default:
break;
}
cursorY =
[self noteYInMeasure:measure withPitch:pitch
visual:&cursorVisual] - kNoteY;
cursorSect = [self song]->fMeasures[measure].fPropIdx; cursorSect = [self song]->fMeasures[measure].fPropIdx;
[self drawLedgerLinesInSection:cursorSect withPitch:pitch [self drawLedgerLinesInSection:cursorSect withPitch:pitch
visual:cursorVisual at:NSMakePoint(cursorX, visual:visual at:NSMakePoint(cursorX,
[self systemY:fLayout->SystemForMeasure(measure)])]; [self systemY:fLayout->SystemForMeasure(measure)])];
cursorElt = kMusicNoteCursor; cursorElt = kMusicNoteCursor;
break; break;
@ -126,12 +122,13 @@
cursorElt = kMusicKillCursor; cursorElt = kMusicKillCursor;
break; break;
} }
}
NSPoint xy = NSMakePoint(cursorX-kNoteX, cursorY); NSPoint xy = NSMakePoint(cursorX-kNoteX, cursorY);
[[self musicElement:cursorElt] [[self musicElement:cursorElt]
compositeToPoint:xy compositeToPoint:xy
operation: NSCompositeSourceOver]; operation: NSCompositeSourceOver];
if (accidental && accidental != kMusicExtendCursor) { if (mode && accidental && accidental != kMusicExtendCursor) {
xy.y += kNoteY; xy.y += kNoteY;
switch (cursorElt= accidental) { switch (cursorElt= accidental) {
case kMusicFlatCursor: case kMusicFlatCursor:
@ -142,6 +139,14 @@
xy.x += kSharpW; xy.x += kSharpW;
xy.y += kSharpY; xy.y += kSharpY;
break; break;
case kMusic2FlatCursor:
xy.x += k2FlatW;
xy.y += k2FlatY;
break;
case kMusic2SharpCursor:
xy.x += k2SharpW;
xy.y += k2SharpY;
break;
default: default:
xy.x += kNaturalW; xy.x += kNaturalW;
xy.y += kNaturalY; xy.y += kNaturalY;
@ -156,8 +161,7 @@
- (void) drawNoteCursor:(int)pitch inMeasure:(size_t)measure at:(VLFract)at - (void) drawNoteCursor:(int)pitch inMeasure:(size_t)measure at:(VLFract)at
accidental:(VLMusicElement)accidental accidental:(VLMusicElement)accidental
{ {
[self drawNoteCursor:pitch inMeasure:measure at:at [self drawNoteCursor:pitch inMeasure:measure at:at accidental:accidental mode:0];
accidental:accidental mode:' '];
} }
- (void) drawNoteCursor - (void) drawNoteCursor
@ -209,6 +213,14 @@
at.x += kFlatW; at.x += kFlatW;
at.y += kFlatY; at.y += kFlatY;
break; break;
case kMusic2Sharp:
at.x += k2SharpW;
at.y += k2SharpY;
break;
case kMusic2Flat:
at.x += k2FlatW;
at.y += k2FlatY;
break;
case kMusicNatural: case kMusicNatural:
at.x += kNaturalW; at.x += kNaturalW;
at.y += kNaturalY; at.y += kNaturalY;

View File

@ -51,8 +51,26 @@
VLMIDIUserEvent * event = (VLMIDIUserEvent *)[ev pointerValue]; VLMIDIUserEvent * event = (VLMIDIUserEvent *)[ev pointerValue];
if (event->fPitch) { if (event->fPitch) {
fNotePitch = event->fPitch; fNotePitch = event->fPitch;
fNoteAccidental = (event->fVisual & VLNote::kWantFlat) ? kMusicFlat fNoteAccidental = kMusicNothing;
: ((event->fVisual & VLNote::kWantSharp) ? kMusicSharp : kMusicNothing); switch (event->fVisual & VLNote::kAccidentalsMask) {
case VLNote::kWantFlat:
fNoteAccidental = kMusicFlatCursor;
break;
case VLNote::kWantSharp:
fNoteAccidental = kMusicSharpCursor;
break;
case VLNote::kWant2Flat:
fNoteAccidental = kMusic2FlatCursor;
break;
case VLNote::kWant2Sharp:
fNoteAccidental = kMusic2SharpCursor;
break;
case VLNote::kWantNatural:
fNoteAccidental = kMusicNaturalCursor;
break;
default:
break;
}
fNoteMeasure = event->fMeasure; fNoteMeasure = event->fMeasure;
fNoteAt = event->fAt; fNoteAt = event->fAt;
fStanza = event->fStanza; fStanza = event->fStanza;