-
Notifications
You must be signed in to change notification settings - Fork 57
/
direction.mod
executable file
·1501 lines (1370 loc) · 54 KB
/
direction.mod
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!--
MusicXML direction.mod module
Version 4.0
Copyright © 2004-2021 the Contributors to the MusicXML
Specification, published by the W3C Music Notation Community
Group under the W3C Community Final Specification Agreement
(FSA):
https://www.w3.org/community/about/agreements/final/
A human-readable summary is available:
https://www.w3.org/community/about/agreements/fsa-deed/
The DTD version of the MusicXML format is deprecated
as of Version 4.0. Use the musicxml.xsd W3C XML Schema
definition instead.
-->
<!--
This direction DTD module contains the direction element
and its children. Directions are generally not note-specific,
but instead are associated with a part or the overall score.
Harmony indications and general print and sound
suggestions are likewise not necessarily attached to
particular note elements, and are included here as well.
-->
<!-- Entities -->
<!--
The harmony-arrangement entity indicates how stacked chords
and bass notes are displayed within a harmony element. The
vertical value specifies that the second element appears
below the first. The horizontal value specifies that the
second element appears to the right of the first. The
diagonal value specifies that the second element appears
both below and to the right of the first.
-->
<!ENTITY % harmony-arrangement
"arrangement (vertical | horizontal | diagonal) #IMPLIED">
<!--
The tip-direction entity represents the direction in which
the tip of a stick or beater points, using Unicode arrow
terminology.
-->
<!ENTITY % tip-direction
"(up | down | left | right |
northwest | northeast | southeast | southwest)">
<!-- Elements -->
<!--
A direction is a musical indication that is not necessarily
attached to a specific note. Two or more may be combined to
indicate words followed by the start of a dashed line, the
end of a wedge followed by dynamics, etc. For applications
where a specific direction is indeed attached to a specific
note, the direction element can be associated with the first
note element that follows it in score order that is not in a
different voice.
By default, a series of direction-type elements and a
series of child elements of a direction-type within a
single direction element follow one another in sequence
visually. For a series of direction-type children, non-
positional formatting attributes are carried over from
the previous element by default.
-->
<!ELEMENT direction (direction-type+, offset?,
%editorial-voice;, staff?, sound?, listening?)>
<!ATTLIST direction
%placement;
%directive;
%system-relation;
%optional-unique-id;
>
<!--
Textual direction types may have more than 1 component
due to multiple fonts. The dynamics element may also be
used in the notations element, and is defined in the
common.mod file.
-->
<!ELEMENT direction-type (rehearsal+ | segno+ | coda+ |
(words | symbol)+ | wedge | dynamics+ | dashes |
bracket | pedal | metronome | octave-shift | harp-pedals |
damp | damp-all | eyeglasses | string-mute |
scordatura | image | principal-voice | percussion+ |
accordion-registration | staff-divide | other-direction)>
<!ATTLIST direction-type
%optional-unique-id;
>
<!--
Entities related to print suggestions apply to the
individual direction-type, not to the overall direction.
-->
<!--
The rehearsal element specifies letters, numbers, and
section names that are notated in the score for reference
during rehearsal. The enclosure is square if not specified.
The language is Italian ("it") if not specified. Left
justification is used if not specified.
-->
<!ELEMENT rehearsal (#PCDATA)>
<!ATTLIST rehearsal
%text-formatting;
%optional-unique-id;
>
<!--
The words element specifies a standard text direction. The
enclosure is none if not specified. The language is Italian
("it") if not specified. Left justification is used if not
specified.
-->
<!ELEMENT words (#PCDATA)>
<!ATTLIST words
%text-formatting;
%optional-unique-id;
>
<!--
The symbol element specifies a musical symbol using a
canonical SMuFL glyph name. It is used when an occasional
musical symbol is interspersed into text. It should not be
used in place of semantic markup, such as metronome marks
that mix text and symbols. Left justification is used if
not specified. Enclosure is none if not specified.
-->
<!ELEMENT symbol (#PCDATA)>
<!ATTLIST symbol
%symbol-formatting;
%optional-unique-id;
>
<!--
Wedge spread is measured in tenths of staff line space.
The type is crescendo for the start of a wedge that is
closed at the left side, and diminuendo for the start
of a wedge that is closed on the right side. Spread
values at the start of a crescendo wedge or end of a
diminuendo wedge are ignored. The niente attribute is yes
if a circle appears at the point of the wedge, indicating
a crescendo from nothing or diminuendo to nothing. It is
no by default, and used only when the type is crescendo,
or the type is stop for a wedge that began with a diminuendo
type. The line-type is solid if not specified. The continue
type is used for formatting wedges over a system break, or
for other situations where a single wedge is divided into
multiple segments.
-->
<!ELEMENT wedge EMPTY>
<!ATTLIST wedge
type (crescendo | diminuendo | stop | continue) #REQUIRED
number %number-level; #IMPLIED
spread %tenths; #IMPLIED
niente %yes-no; #IMPLIED
%line-type;
%dashed-formatting;
%position;
%color;
%optional-unique-id;
>
<!--
Dashes, used for instance with cresc. and dim. marks.
-->
<!ELEMENT dashes EMPTY>
<!ATTLIST dashes
type %start-stop-continue; #REQUIRED
number %number-level; #IMPLIED
%dashed-formatting;
%position;
%color;
%optional-unique-id;
>
<!--
Brackets are combined with words in a variety of
modern directions. The line-end attribute specifies
if there is a jog up or down (or both), an arrow,
or nothing at the start or end of the bracket. If
the line-end is up or down, the length of the jog
can be specified using the end-length attribute.
The line-type is solid if not specified.
-->
<!ELEMENT bracket EMPTY>
<!ATTLIST bracket
type %start-stop-continue; #REQUIRED
number %number-level; #IMPLIED
line-end (up | down | both | arrow | none) #REQUIRED
end-length %tenths; #IMPLIED
%line-type;
%dashed-formatting;
%position;
%color;
%optional-unique-id;
>
<!--
The pedal element represents piano pedal marks, including
damper and sostenuto pedal marks. The soft pedal is not
included here because there is no special symbol or graphic
used for it beyond what can be specified with words and
bracket elements.
The start type indicates the start of a damper pedal, while
the sostenuto type indicates the start of a sostenuto pedal.
The other types can be used with either the damper or
sostenuto pedal.
The line attribute is yes if pedal lines are used. The sign
attribute is yes if Ped, Sost, and * signs are used. For
compatibility with older versions, the sign attribute is yes
by default if the line attribute is no, and is no by default
if the line attribute is yes. If the sign attribute is set
to yes and the type is start or sostenuto, the abbreviated
attribute is yes if the short P and S signs are used, and
no if the full Ped and Sost signs are used. It is no by
default. Otherwise the abbreviated attribute is ignored.
The alignment attributes are ignored if the sign attribute
is no.
The change, continue, discontinue, and resume types are used
when the line attribute is yes. The change type indicates a
pedal lift and retake indicated with an inverted V marking.
The continue type allows more precise formatting across
system breaks and for more complex pedaling lines. The
discontinue type indicates the end of a pedal line that does
not include the explicit lift represented by the stop type.
The resume type indicates the start of a pedal line that
does not include the downstroke represented by the start
type. It can be used when a line resumes after being
discontinued, or to start a pedal line that is preceded
by a text or symbol representation of the pedal.
-->
<!ELEMENT pedal EMPTY>
<!ATTLIST pedal
type (start | stop | sostenuto | change |
continue | discontinue | resume) #REQUIRED
number %number-level; #IMPLIED
line %yes-no; #IMPLIED
sign %yes-no; #IMPLIED
abbreviated %yes-no; #IMPLIED
%print-style-align;
%optional-unique-id;
>
<!--
Metronome marks and other metric relationships.
The beat-unit values are the same as for a type element,
and the beat-unit-dot works like the dot element. The
beat-unit-tied type indicates a beat-unit that is tied to
the preceding beat-unit. The per-minute element can be a
number, or a text description including numbers. The
parentheses attribute indicates whether or not to put the
metronome mark in parentheses; its value is no if not
specified. The print-object attribute is set to no in
cases where the metronome element represents a relationship
or range that is not displayed in the music notation.
If a font is specified for the per-minute element,
it overrides the font specified for the overall metronome
element. This allows separate specification of a music font
for beat-unit and a text font for the numeric value in cases
where a single metronome font is not used.
The metronome-note and metronome-relation elements allow
for the specification of metric modulations and other metric
relationships, such as swing tempo marks where two eighths
are equated to a quarter note / eighth note triplet. If the
metronome-arrows element is present, it indicates that metric
modulation arrows are displayed on both sides of the metronome
mark. The metronome-type, metronome-beam, metronome-dot, and
metronome-tied elements work like the type, beam, dot, and tied
elements. The metronome-tuplet element uses the same element
structure as the time-modification element along with some
attributes from the tuplet element. The metronome-relation
element describes the relationship symbol that goes between the
two sets of metronome-note elements. The currently allowed
value is equals, but this may expand in future versions.
If the element is empty, the equals value is used. The
metronome-relation and the following set of metronome-note
elements are optional to allow display of an isolated
Grundschlagnote.
-->
<!ELEMENT metronome
((beat-unit, beat-unit-dot*, beat-unit-tied*,
(per-minute |
(beat-unit, beat-unit-dot*, beat-unit-tied*))) |
(metronome-arrows?, metronome-note+,
(metronome-relation, metronome-note+)?))>
<!ATTLIST metronome
%print-style-align;
%print-object;
%justify;
parentheses %yes-no; #IMPLIED
%optional-unique-id;
>
<!ELEMENT beat-unit (#PCDATA)>
<!ELEMENT beat-unit-dot EMPTY>
<!ELEMENT beat-unit-tied
(beat-unit, beat-unit-dot*)>
<!ELEMENT per-minute (#PCDATA)>
<!ATTLIST per-minute
%font;
>
<!ELEMENT metronome-note
(metronome-type, metronome-dot*,
metronome-beam*, metronome-tied?,
metronome-tuplet?)>
<!ELEMENT metronome-relation (#PCDATA)>
<!ELEMENT metronome-type (#PCDATA)>
<!ELEMENT metronome-arrows EMPTY>
<!ELEMENT metronome-dot EMPTY>
<!ELEMENT metronome-beam (#PCDATA)>
<!ATTLIST metronome-beam
number %beam-level; "1"
>
<!ELEMENT metronome-tied EMPTY>
<!ATTLIST metronome-tied
type %start-stop; #REQUIRED
>
<!ELEMENT metronome-tuplet
(actual-notes, normal-notes,
(normal-type, normal-dot*)?)>
<!ATTLIST metronome-tuplet
type %start-stop; #REQUIRED
bracket %yes-no; #IMPLIED
show-number (actual | both | none) #IMPLIED
>
<!--
Octave shifts indicate where notes are shifted up or down
from their true pitched values because of printing
difficulty. Thus a treble clef line noted with 8va will
be indicated with an octave-shift down from the pitch
data indicated in the notes. A size of 8 indicates one
octave; a size of 15 indicates two octaves.
-->
<!ELEMENT octave-shift EMPTY>
<!ATTLIST octave-shift
type (up | down | stop | continue) #REQUIRED
number %number-level; #IMPLIED
size CDATA "8"
%dashed-formatting;
%print-style;
%optional-unique-id;
>
<!--
The harp-pedals element is used to create harp pedal
diagrams. The pedal-step and pedal-alter elements use
the same values as the step and alter elements. For
easiest reading, the pedal-tuning elements should follow
standard harp pedal order, with pedal-step values of
D, C, B, E, F, G, and A.
-->
<!ELEMENT harp-pedals (pedal-tuning)+>
<!ATTLIST harp-pedals
%print-style-align;
%optional-unique-id;
>
<!ELEMENT pedal-tuning (pedal-step, pedal-alter)>
<!ELEMENT pedal-step (#PCDATA)>
<!ELEMENT pedal-alter (#PCDATA)>
<!-- Harp damping marks -->
<!ELEMENT damp EMPTY>
<!ATTLIST damp
%print-style-align;
%optional-unique-id;
>
<!ELEMENT damp-all EMPTY>
<!ATTLIST damp-all
%print-style-align;
%optional-unique-id;
>
<!-- Eyeglasses, common in commercial music. -->
<!ELEMENT eyeglasses EMPTY>
<!ATTLIST eyeglasses
%print-style-align;
%optional-unique-id;
>
<!-- String mute on and mute off symbols -->
<!ELEMENT string-mute EMPTY>
<!ATTLIST string-mute
type (on | off) #REQUIRED
%print-style-align;
%optional-unique-id;
>
<!--
Scordatura string tunings are represented by a series
of accord elements. The tuning-step, tuning-alter,
and tuning-octave elements are also used with the
staff-tuning element, and are defined in the common.mod
file. Strings are numbered from high to low.
-->
<!ELEMENT scordatura (accord+)>
<!ATTLIST scordatura
%optional-unique-id;
>
<!ELEMENT accord
(tuning-step, tuning-alter?, tuning-octave)>
<!ATTLIST accord
string CDATA #REQUIRED
>
<!--
The image element is used to include graphical images
in a score. The required source attribute is the URL
for the image file. The required type attribute is the
MIME type for the image file format. Typical choices
include application/postscript, image/gif, image/jpeg,
image/png, and image/tiff. The optional height and width
attributes are used to size and scale an image. The image
should be scaled independently in X and Y if both height
and width are specified. If only one attribute is specified,
the image should be scaled proportionally to fit in the
specified dimension.
-->
<!ELEMENT image EMPTY>
<!ATTLIST image
source CDATA #REQUIRED
type CDATA #REQUIRED
height %tenths; #IMPLIED
width %tenths; #IMPLIED
%position;
%halign;
%valign-image;
%optional-unique-id;
>
<!--
The principal-voice element represents principal and
secondary voices in a score, either for analysis or for
square bracket symbols that appear in a score. The element
content is used for analysis and may be any text value.
The symbol attribute indicates the type of symbol used.
Valid values are Hauptstimme, Nebenstimme, plain (for a
plain square bracket), and none. When used for analysis
separate from any printed score markings, it should be set
to none. Otherwise if the type is stop it should be set to
plain.
-->
<!ELEMENT principal-voice (#PCDATA)>
<!ATTLIST principal-voice
type %start-stop; #REQUIRED
symbol (Hauptstimme | Nebenstimme | plain | none) #REQUIRED
%print-style-align;
%optional-unique-id;
>
<!--
The accordion-registration element is used for accordion
registration symbols. These are circular symbols divided
horizontally into high, middle, and low sections that
correspond to 4', 8', and 16' pipes. Each accordion-high,
accordion-middle, and accordion-low element represents
the presence of one or more dots in the registration
diagram. The accordion-middle element may have text
values of 1, 2, or 3, corresponding to have 1 to 3 dots
in the middle section. If no dots are present in a section
of the registration diagram, the corresponding element is
omitted. An accordion-registration element needs to have at
least one of the child elements present.
-->
<!ELEMENT accordion-registration
(accordion-high?, accordion-middle?, accordion-low?)>
<!ATTLIST accordion-registration
%print-style-align;
%optional-unique-id;
>
<!ELEMENT accordion-high EMPTY>
<!ELEMENT accordion-middle (#PCDATA)>
<!ELEMENT accordion-low EMPTY>
<!--
The staff-divide element is used for staff division symbols.
The down, up, and up-down type values correspond to SMuFL
code points U+E00B, U+E00C, and U+E00D respectively.
-->
<!ELEMENT staff-divide EMPTY>
<!ATTLIST staff-divide
type (down | up | up-down) #REQUIRED
%print-style-align;
%optional-unique-id;
>
<!--
The percussion element is used to define percussion
pictogram symbols. Definitions for these symbols can be
found in Kurt Stone's "Music Notation in the Twentieth
Century" on pages 206-212 and 223. Some values are
added to these based on how usage has evolved in
the 30 years since Stone's book was published.
-->
<!ELEMENT percussion
(glass | metal | wood | pitched | membrane | effect |
timpani | beater | stick | stick-location |
other-percussion)>
<!ATTLIST percussion
%print-style-align;
%enclosure;
%optional-unique-id;
>
<!--
The glass element represents pictograms for glass percussion
instruments. Valid values are glass harmonica, glass harp,
and wind chimes. The smufl attribute is used to distinguish
different SMuFL glyphs for wind chimes in the Chimes pictograms
range, including those made of materials other than glass.
-->
<!ELEMENT glass (#PCDATA)>
<!ATTLIST glass
%smufl;
>
<!--
The metal element represents pictograms for metal percussion
instruments. Valid values are agogo, almglocken, bell,
bell plate, bell tree, brake drum, cencerro, chain rattle,
Chinese cymbal, cowbell, crash cymbals, crotale, cymbal tongs,
domed gong, finger cymbals, flexatone, gong, hi-hat,
high-hat cymbals, handbell, jaw harp, jingle bells,
musical saw, shell bells, sistrum, sizzle cymbal, sleigh bells,
suspended cymbal, tam tam, tam tam with beater, triangle, and
Vietnamese hat. The hi-hat value refers to a pictogram like
Stone's high-hat cymbals, but without the long vertical line
at the bottom. The smufl attribute is used to distinguish
different SMuFL stylistic alternates.
-->
<!ELEMENT metal (#PCDATA)>
<!ATTLIST metal
%smufl;
>
<!--
The wood element represents pictograms for wood percussion
instruments. Valid values are bamboo scraper, board clapper,
cabasa, castanets, castanets with handle, claves,
football rattle, guiro, log drum, maraca, maracas, quijada,
rainstick, ratchet, reco-reco, sandpaper blocks, slit drum,
temple block, vibraslap, whip, and wood block. The maraca and
maracas values distinguish the one- and two-maraca versions
of the pictogram. The smufl attribute is used to
distinguish different SMuFL stylistic alternates.
-->
<!ELEMENT wood (#PCDATA)>
<!ATTLIST wood
%smufl;
>
<!--
The pitched element represents pictograms for pitched
percussion instruments. Valid values are celesta, chimes,
glockenspiel, lithophone, mallet, marimba, steel drums,
tubaphone, tubular chimes, vibraphone, and xylophone.
The chimes and tubular chimes values distinguish the
single-line and double-line versions of the pictogram.
The smufl attribute is used to distinguish different SMuFL
glyphs for a particular pictogram within the Tuned mallet
percussion pictograms range.
-->
<!ELEMENT pitched (#PCDATA)>
<!ATTLIST pitched
%smufl;
>
<!--
The membrane element represents pictograms for membrane
percussion instruments. Valid values are bass drum,
bass drum on side, bongos, Chinese tomtom, conga drum,
cuica, goblet drum, Indo-American tomtom, Japanese tomtom,
military drum, snare drum, snare drum snares off, tabla,
tambourine, tenor drum, timbales, and tomtom. The smufl
attribute is used to distinguish different SMuFL stylistic
alternates.
-->
<!ELEMENT membrane (#PCDATA)>
<!ATTLIST membrane
%smufl;
>
<!--
The effect element represents pictograms for sound effect
percussion instruments. Valid values are anvil, auto horn,
bird whistle, cannon, duck call, gun shot, klaxon horn,
lions roar, lotus flute, megaphone, police whistle, siren,
slide whistle, thunder sheet, wind machine, and wind whistle.
The cannon, lotus flute, and megaphone values are in addition
to Stone's list. The smufl attribute is used to distinguish
different SMuFL stylistic alternates.
-->
<!ELEMENT effect (#PCDATA)>
<!ATTLIST effect
%smufl;
>
<!--
The timpani element represents the timpani pictogram. The
smufl attribute is used to distinguish different SMuFL
stylistic alternates.
-->
<!ELEMENT timpani EMPTY>
<!ATTLIST timpani
%smufl;
>
<!--
The beater element represents pictograms for beaters,
mallets, and sticks that do not have different materials
represented in the pictogram. Valid values are bow,
chime hammer, coin, drum stick, finger, fingernail, fist,
guiro scraper, hammer, hand, jazz stick, knitting needle,
metal hammer, slide brush on gong, snare stick, spoon mallet,
superball, triangle beater, triangle beater plain, and
wire brush. The jazz stick value refers to Stone's plastic
tip snare stick. The triangle beater plain value refers to
the plain line version of the pictogram. The tip attribute
represents the direction in which the tip of a beater points.
-->
<!ELEMENT beater (#PCDATA)>
<!ATTLIST beater
tip %tip-direction; #IMPLIED
>
<!--
The stick element represents pictograms where the material
in the stick, mallet, or beater is included. Valid values
for stick-type are bass drum, double bass drum, glockenspiel,
gum, hammer, superball, timpani, wound, xylophone, and yarn.
Valid values for stick-material are soft, medium, hard,
shaded, and x. The shaded and x values reflect different
uses for brass, wood, and steel core beaters of different
types. The tip attribute represents the direction in which
the tip of a stick points. The parentheses and dashed-circle
attributes indicate the presence of these marks around the
round beater part of a pictogram. Values for these attributes
are "no" if not present.
-->
<!ELEMENT stick (stick-type, stick-material)>
<!ATTLIST stick
tip %tip-direction; #IMPLIED
parentheses %yes-no; #IMPLIED
dashed-circle %yes-no; #IMPLIED
>
<!ELEMENT stick-type (#PCDATA)>
<!ELEMENT stick-material (#PCDATA)>
<!--
The stick-location element represents pictograms for the
location of sticks, beaters, or mallets on cymbals, gongs,
drums, and other instruments. Valid values are center,
rim, cymbal bell, and cymbal edge.
-->
<!ELEMENT stick-location (#PCDATA)>
<!--
The other-percussion element represents percussion
pictograms not defined elsewhere.
-->
<!ELEMENT other-percussion (#PCDATA)>
<!ATTLIST other-percussion
%smufl;
>
<!--
The other-direction element is used to define any direction
symbols not yet in the MusicXML format. The smufl attribute
can be used to specify a particular direction symbol, allowing
application interoperability without requiring every SMuFL
glyph to have a MusicXML element equivalent. Using the
other-direction type without the smufl attribute allows
for extended representation, though without application
interoperability.
-->
<!ELEMENT other-direction (#PCDATA)>
<!ATTLIST other-direction
%print-object;
%print-style-align;
%smufl;
%optional-unique-id;
>
<!--
An offset is represented in terms of divisions, and
indicates where the direction will appear relative to
the current musical location. The current musical location
is always within the current measure, even at the end of
a measure.
The offset affects the visual appearance of the direction.
If the sound attribute is "yes", then the offset affects
playback and listening too. If the sound attribute is "no",
then any sound or listening associated with the direction
takes effect at the current location. The sound attribute
is "no" by default for compatibility with earlier versions
of the MusicXML format. If an element within a direction
includes a default-x attribute, the offset value will be
ignored when determining the appearance of that element.
-->
<!ELEMENT offset (#PCDATA)>
<!ATTLIST offset
sound %yes-no; #IMPLIED
>
<!-- Harmony -->
<!--
The harmony element represents harmony analysis, including
chord symbols in popular music as well as functional harmony
analysis in classical music.
If there are alternate harmonies possible, this can be
specified using multiple harmony elements differentiated
by type. Explicit harmonies have all note present in the
music; implied have some notes missing but implied;
alternate represents alternate analyses.
The print-object attribute controls whether or not anything
is printed due to the harmony element. The print-frame
attribute controls printing of a frame or fretboard diagram.
The print-style entity sets the default for the harmony,
but individual elements can override this with their own
print-style values.
A harmony element can contain many stacked chords (e.g.
V of II). A sequence of harmony-chord entities is used for
this type of secondary function, where V of II would be
represented by a harmony-chord with a 5 numeral followed by
a harmony-chord with a 2 numeral. The arrangement attribute
specifies how multiple harmony-chord entities are arranged
relative to each other. Harmony-chords with vertical
arrangement are separated by horizontal lines. Harmony-
chords with diagonal or horizontal arrangement are separated
by diagonal lines or slashes.
-->
<!ENTITY % harmony-chord "((root | numeral | function),
kind, inversion?, bass?, degree*)">
<!ELEMENT harmony ((%harmony-chord;)+, frame?,
offset?, %editorial;, staff?)>
<!ATTLIST harmony
type (explicit | implied | alternate) #IMPLIED
%print-object;
print-frame %yes-no; #IMPLIED
%harmony-arrangement;
%print-style;
%placement;
%system-relation;
%optional-unique-id;
>
<!--
A root is a pitch name like C, D, E, while a numeral is
a scale degree like 1, 2, 3. The root element is generally
used with pop chord symbols, while the numeral element
is generally used with classical functional harmony and
Nashville numbers. It is an either/or choice to avoid data
inconsistency. The function element, which represents Roman
numerals with roman numeral text, has been deprecated as of
MusicXML 4.0.
The root element has a root-step and optional root-alter
element similar to the step and alter elements in a pitch,
but renamed to distinguish the different musical meanings.
The root-step text attribute indicates how the root should
appear in a score if not using the element contents.
In some chord styles, this will include the root-alter
information as well. In that case, the print-object
attribute of the root-alter element can be set to no.
The root-alter location attribute indicates whether
the alteration should appear to the left or the right
of the root-step; it is right if not specified.
-->
<!ELEMENT root (root-step, root-alter?)>
<!ELEMENT root-step (#PCDATA)>
<!ATTLIST root-step
text CDATA #IMPLIED
%print-style;
>
<!ELEMENT root-alter (#PCDATA)>
<!ATTLIST root-alter
%print-object;
%print-style;
location %left-right; #IMPLIED
>
<!--
The numeral element represents the Roman numeral or
Nashville number part of a harmony. It requires that the
key be specified in the encoding, either with a key or
numeral-key element.
The numeral-root element represents the Roman numeral or
Nashville number as a positive integer from 1 to 7. The
text attribute indicates how the numeral should appear in
the score. A numeral-root value of 5 with a kind of major
would have a text attribute of "V" if displayed as a Roman
numeral, and "5" if displayed as a Nashville number. If the
text attribute is not specified, the display is application-
dependent.
The numeral-alter element represents an alteration to the
numeral-root, similar to the alter element for a pitch.
The print-object attribute can be used to hide an alteration
in cases such as when the MusicXML encoding of a 6 or 7
numeral-root in a minor key requires an alteration that
is not displayed. The location attribute indicates whether
the alteration should appear to the left or the right of
the numeral-root; it is left by default.
The numeral-key element is used when the key for the numeral
is different than the key specified by the key signature.
The numeral-fifths element specifies the key in the same way
as the fifths element. The numeral-mode element specifies
the mode similar to the mode element, but with a restricted
set of values: major, minor, natural minor, melodic minor,
and harmonic minor. The different minor values are used to
interpret numeral-root values of 6 and 7 when present in
a minor key. The harmonic minor value sharpens the 7 and
the melodic minor value sharpens both 6 and 7. If a minor
mode is used without qualification, either in the mode or
numeral-mode elements, natural minor is used.
-->
<!ELEMENT numeral (numeral-root, numeral-alter?, numeral-key?)>
<!ELEMENT numeral-root (#PCDATA)>
<!ATTLIST numeral-root
text CDATA #IMPLIED
%print-style;
>
<!ELEMENT numeral-alter (#PCDATA)>
<!ATTLIST numeral-alter
%print-object;
%print-style;
location %left-right; #IMPLIED
>
<!ELEMENT numeral-key (numeral-fifths, numeral-mode)>
<!ATTLIST numeral-key
%print-object;
>
<!ELEMENT numeral-fifths (#PCDATA)>
<!ELEMENT numeral-mode (#PCDATA)>
<!--
The function element represents classical functional
harmony with an indication like I, II, III rather than
C, D, E. It represents the Roman numeral part of a
functional harmony rather than the complete function
itself. It has been deprecated as of MusicXML 4.0 in
favor of the numeral element.
-->
<!ELEMENT function (#PCDATA)>
<!ATTLIST function
%print-style;
>
<!--
Kind indicates the type of chord. Degree elements
can then add, subtract, or alter from these
starting points. Values include:
Triads:
major (major third, perfect fifth)
minor (minor third, perfect fifth)
augmented (major third, augmented fifth)
diminished (minor third, diminished fifth)
Sevenths:
dominant (major triad, minor seventh)
major-seventh (major triad, major seventh)
minor-seventh (minor triad, minor seventh)
diminished-seventh
(diminished triad, diminished seventh)
augmented-seventh
(augmented triad, minor seventh)
half-diminished
(diminished triad, minor seventh)
major-minor
(minor triad, major seventh)
Sixths:
major-sixth (major triad, added sixth)
minor-sixth (minor triad, added sixth)
Ninths:
dominant-ninth (dominant-seventh, major ninth)
major-ninth (major-seventh, major ninth)
minor-ninth (minor-seventh, major ninth)
11ths (usually as the basis for alteration):
dominant-11th (dominant-ninth, perfect 11th)
major-11th (major-ninth, perfect 11th)
minor-11th (minor-ninth, perfect 11th)
13ths (usually as the basis for alteration):
dominant-13th (dominant-11th, major 13th)
major-13th (major-11th, major 13th)
minor-13th (minor-11th, major 13th)
Suspended:
suspended-second (major second, perfect fifth)
suspended-fourth (perfect fourth, perfect fifth)
Functional sixths:
Neapolitan
Italian
French
German
Other:
pedal (pedal-point bass)
power (perfect fifth)
Tristan
The "other" kind is used when the harmony is entirely
composed of add elements.
The "none" kind is used to explicitly encode absence of
chords or functional harmony. In this case, the root,
numeral, or function element has no meaning. When using
the root or numeral element, the root-step or numeral-step
text attribute should be set to the empty string to keep
the root or numeral from being displayed.
The attributes are used to indicate the formatting
of the symbol. Since the kind element is the constant
in all the harmony-chord entities that can make up
a polychord, many formatting attributes are here.
The use-symbols attribute is yes if the kind should be
represented when possible with harmony symbols rather
than letters and numbers. These symbols include:
major: a triangle, like Unicode 25B3
minor: -, like Unicode 002D
augmented: +, like Unicode 002B
diminished: °, like Unicode 00B0
half-diminished: ø, like Unicode 00F8
For the major-minor kind, only the minor symbol is used when
use-symbols is yes. The major symbol is set using the symbol
attribute in the degree-value element. The corresponding
degree-alter value will usually be 0 in this case.
The text attribute describes how the kind should be spelled
in a score. If use-symbols is yes, the value of the text
attribute follows the symbol. The stack-degrees attribute
is yes if the degree elements should be stacked above each
other. The parentheses-degrees attribute is yes if all the
degrees should be in parentheses. The bracket-degrees
attribute is yes if all the degrees should be in a bracket.
If not specified, these values are implementation-specific.
The alignment attributes are for the entire harmony-chord
entity of which this kind element is a part.
The text attribute may use strings such as "13sus" that
refer to both the kind and one or more degree elements.
In this case, the corresponding degree elements should
have the print-object attribute set to "no" to keep
redundant alterations from being displayed.
-->
<!ELEMENT kind (#PCDATA)>
<!ATTLIST kind
use-symbols %yes-no; #IMPLIED
text CDATA #IMPLIED
stack-degrees %yes-no; #IMPLIED
parentheses-degrees %yes-no; #IMPLIED
bracket-degrees %yes-no; #IMPLIED
%print-style;
%halign;
%valign;
>
<!--
Inversion is a number indicating which inversion is used:
0 for root position, 1 for first inversion, etc. The text
attribute indicates how the inversion should be displayed
in a score.
-->
<!ELEMENT inversion (#PCDATA)>
<!ATTLIST inversion
text CDATA #IMPLIED
%print-style;
>
<!--
Bass is used to indicate a bass note in popular music
chord symbols, e.g. G/C. It is generally not used in
functional harmony, as inversion is generally not used
in pop chord symbols. As with root, it is divided into