forked from alexgorji/musicscore
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmusicxml_4_0.xsd
executable file
·6637 lines (5997 loc) · 381 KB
/
musicxml_4_0.xsd
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
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:annotation>
<xs:documentation>MusicXML W3C XML schema (XSD)
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/
This is the W3C XML Schema (XSD) version of the MusicXML 4.0 format. Validation is tightened by moving MusicXML definitions from comments into schema data types and definitions. Character entities and other entity usages that are not supported in W3C XML Schema have been removed. The features of W3C XML Schema make it easier to define variations of the MusicXML format, either via extension or restriction.
This file defines the MusicXML 4.0 XSD, including the score-partwise and score-timewise document elements.
The XML catalog at catalog.xml supports validating against a local copy of this XSD rather than the networked version. Software often has trouble using system IDs due to factors such as restrictions on network access, or resources having moved from the original specified location. To validate with the MusicXML XSD, use a schema URI of "http://www.musicxml.org/xsd/musicxml.xsd".</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>The MusicXML 4.0 DTD has no namespace, so for compatibility the MusicXML 4.0 XSD has no namespace either. Those who need to import the MusicXML XSD into another schema are advised to create a new version that uses "http://www.musicxml.org/xsd/MusicXML" as the namespace.</xs:documentation>
</xs:annotation>
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.musicxml.org/xsd/xml.xsd"/>
<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="http://www.musicxml.org/xsd/xlink.xsd"/>
<!-- Simple types derived from common.mod entities and elements -->
<xs:simpleType name="above-below">
<xs:annotation>
<xs:documentation>The above-below type is used to indicate whether one element appears above or below another element.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="above"/>
<xs:enumeration value="below"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="beam-level">
<xs:annotation>
<xs:documentation>The MusicXML format supports six levels of beaming, up to 1024th notes. Unlike the number-level type, the beam-level type identifies concurrent beams in a beam group. It does not distinguish overlapping beams such as grace notes within regular notes, or beams used in different voices.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="8"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="color">
<xs:annotation>
<xs:documentation>The color type indicates the color of an element. Color may be represented as hexadecimal RGB triples, as in HTML, or as hexadecimal ARGB tuples, with the A indicating alpha of transparency. An alpha value of 00 is totally transparent; FF is totally opaque. If RGB is used, the A value is assumed to be FF.
For instance, the RGB value "#800080" represents purple. An ARGB value of "#40800080" would be a transparent purple.
As in SVG 1.1, colors are defined in terms of the sRGB color space (IEC 61966).</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="#[\dA-F]{6}([\dA-F][\dA-F])?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="comma-separated-text">
<xs:annotation>
<xs:documentation>The comma-separated-text type is used to specify a comma-separated list of text elements, as is used by the font-family attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[^,]+(, ?[^,]+)*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="css-font-size">
<xs:annotation>
<xs:documentation>The css-font-size type includes the CSS font sizes used as an alternative to a numeric point size.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="xx-small"/>
<xs:enumeration value="x-small"/>
<xs:enumeration value="small"/>
<xs:enumeration value="medium"/>
<xs:enumeration value="large"/>
<xs:enumeration value="x-large"/>
<xs:enumeration value="xx-large"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="divisions">
<xs:annotation>
<xs:documentation>The divisions type is used to express values in terms of the musical divisions defined by the divisions element. It is preferred that these be integer values both for MIDI interoperability and to avoid roundoff errors.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:decimal"/>
</xs:simpleType>
<xs:simpleType name="enclosure-shape">
<xs:annotation>
<xs:documentation>The enclosure-shape type describes the shape and presence / absence of an enclosure around text or symbols. A bracket enclosure is similar to a rectangle with the bottom line missing, as is common in jazz notation. An inverted-bracket enclosure is similar to a rectangle with the top line missing.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="rectangle"/>
<xs:enumeration value="square"/>
<xs:enumeration value="oval"/>
<xs:enumeration value="circle"/>
<xs:enumeration value="bracket"/>
<xs:enumeration value="inverted-bracket"/>
<xs:enumeration value="triangle"/>
<xs:enumeration value="diamond"/>
<xs:enumeration value="pentagon"/>
<xs:enumeration value="hexagon"/>
<xs:enumeration value="heptagon"/>
<xs:enumeration value="octagon"/>
<xs:enumeration value="nonagon"/>
<xs:enumeration value="decagon"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="fermata-shape">
<xs:annotation>
<xs:documentation>The fermata-shape type represents the shape of the fermata sign. The empty value is equivalent to the normal value.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="normal"/>
<xs:enumeration value="angled"/>
<xs:enumeration value="square"/>
<xs:enumeration value="double-angled"/>
<xs:enumeration value="double-square"/>
<xs:enumeration value="double-dot"/>
<xs:enumeration value="half-curve"/>
<xs:enumeration value="curlew"/>
<xs:enumeration value=""/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="font-family">
<xs:annotation>
<xs:documentation>The font-family is a comma-separated list of font names. These can be specific font styles such as Maestro or Opus, or one of several generic font styles: music, engraved, handwritten, text, serif, sans-serif, handwritten, cursive, fantasy, and monospace. The music, engraved, and handwritten values refer to music fonts; the rest refer to text fonts. The fantasy style refers to decorative text such as found in older German-style printing.</xs:documentation>
</xs:annotation>
<xs:restriction base="comma-separated-text"/>
</xs:simpleType>
<xs:simpleType name="font-size">
<xs:annotation>
<xs:documentation>The font-size can be one of the CSS font sizes (xx-small, x-small, small, medium, large, x-large, xx-large) or a numeric point size.</xs:documentation>
</xs:annotation>
<xs:union memberTypes="xs:decimal css-font-size"/>
</xs:simpleType>
<xs:simpleType name="font-style">
<xs:annotation>
<xs:documentation>The font-style type represents a simplified version of the CSS font-style property.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="normal"/>
<xs:enumeration value="italic"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="font-weight">
<xs:annotation>
<xs:documentation>The font-weight type represents a simplified version of the CSS font-weight property.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="normal"/>
<xs:enumeration value="bold"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="left-center-right">
<xs:annotation>
<xs:documentation>The left-center-right type is used to define horizontal alignment and text justification.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="left"/>
<xs:enumeration value="center"/>
<xs:enumeration value="right"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="left-right">
<xs:annotation>
<xs:documentation>The left-right type is used to indicate whether one element appears to the left or the right of another element.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="left"/>
<xs:enumeration value="right"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="line-length">
<xs:annotation>
<xs:documentation>The line-length type distinguishes between different line lengths for doit, falloff, plop, and scoop articulations.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="short"/>
<xs:enumeration value="medium"/>
<xs:enumeration value="long"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="line-shape">
<xs:annotation>
<xs:documentation>The line-shape type distinguishes between straight and curved lines.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="straight"/>
<xs:enumeration value="curved"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="line-type">
<xs:annotation>
<xs:documentation>The line-type type distinguishes between solid, dashed, dotted, and wavy lines.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="solid"/>
<xs:enumeration value="dashed"/>
<xs:enumeration value="dotted"/>
<xs:enumeration value="wavy"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="midi-16">
<xs:annotation>
<xs:documentation>The midi-16 type is used to express MIDI 1.0 values that range from 1 to 16.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="16"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="midi-128">
<xs:annotation>
<xs:documentation>The midi-128 type is used to express MIDI 1.0 values that range from 1 to 128.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="128"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="midi-16384">
<xs:annotation>
<xs:documentation>The midi-16384 type is used to express MIDI 1.0 values that range from 1 to 16,384.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="16384"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="mute">
<xs:annotation>
<xs:documentation>The mute type represents muting for different instruments, including brass, winds, and strings. The on and off values are used for undifferentiated mutes. The remaining values represent specific mutes.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
<xs:enumeration value="straight"/>
<xs:enumeration value="cup"/>
<xs:enumeration value="harmon-no-stem"/>
<xs:enumeration value="harmon-stem"/>
<xs:enumeration value="bucket"/>
<xs:enumeration value="plunger"/>
<xs:enumeration value="hat"/>
<xs:enumeration value="solotone"/>
<xs:enumeration value="practice"/>
<xs:enumeration value="stop-mute"/>
<xs:enumeration value="stop-hand"/>
<xs:enumeration value="echo"/>
<xs:enumeration value="palm"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="non-negative-decimal">
<xs:annotation>
<xs:documentation>The non-negative-decimal type specifies a non-negative decimal value.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="number-level">
<xs:annotation>
<xs:documentation>Slurs, tuplets, and many other features can be concurrent and overlap within a single musical part. The number-level entity distinguishes up to 16 concurrent objects of the same type when the objects overlap in MusicXML document order. Values greater than 6 are usually only needed for music with a large number of divisi staves in a single part, or if there are more than 6 cross-staff arpeggios in a single measure. When a number-level value is implied, the value is 1 by default.
When polyphonic parts are involved, the ordering within a MusicXML document can differ from musical score order. As an example, say we have a piano part in 4/4 where within a single measure, all the notes on the top staff are followed by all the notes on the bottom staff. In this example, each staff has a slur that starts on beat 2 and stops on beat 3, and there is a third slur that goes from beat 1 of one staff to beat 4 of the other staff.
In this situation, the two mid-measure slurs can use the same number because they do not overlap in MusicXML document order, even though they do overlap in musical score order. Within the MusicXML document, the top staff slur will both start and stop before the bottom staff slur starts and stops.
If the cross-staff slur starts in the top staff and stops in the bottom staff, it will need a separate number from the mid-measure slurs because it overlaps those slurs in MusicXML document order. However, if the cross-staff slur starts in the bottom staff and stops in the top staff, all three slurs can use the same number. None of them overlap within the MusicXML document, even though they all overlap each other in the musical score order. Within the MusicXML document, the start and stop of the top-staff slur will be followed by the stop and start of the cross-staff slur, followed by the start and stop of the bottom-staff slur.
As this example demonstrates, a reading program should be prepared to handle cases where the number-levels start and stop in an arbitrary order. Because the start and stop values refer to musical score order, a program may find the stopping point of an object earlier in the MusicXML document than it will find its starting point.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="16"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="number-of-lines">
<xs:annotation>
<xs:documentation>The number-of-lines type is used to specify the number of lines in text decoration attributes.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="number-or-normal">
<xs:annotation>
<xs:documentation>The number-or-normal values can be either a decimal number or the string "normal". This is used by the line-height and letter-spacing attributes.</xs:documentation>
</xs:annotation>
<xs:union memberTypes="xs:decimal">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="normal"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:simpleType name="numeral-value">
<xs:annotation>
<xs:documentation>The numeral-value type represents a Roman numeral or Nashville number value as a positive integer from 1 to 7.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="7"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="over-under">
<xs:annotation>
<xs:documentation>The over-under type is used to indicate whether the tips of curved lines such as slurs and ties are overhand (tips down) or underhand (tips up).</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="over"/>
<xs:enumeration value="under"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="percent">
<xs:annotation>
<xs:documentation>The percent type specifies a percentage from 0 to 100.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="positive-decimal">
<xs:annotation>
<xs:documentation>The positive-decimal type specifies a positive decimal value.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:decimal">
<xs:minExclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="positive-divisions">
<xs:annotation>
<xs:documentation>The positive-divisions type restricts divisions values to positive numbers.</xs:documentation>
</xs:annotation>
<xs:restriction base="divisions">
<xs:minExclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="positive-integer-or-empty">
<xs:annotation>
<xs:documentation>The positive-integer-or-empty values can be either a positive integer or an empty string.</xs:documentation>
</xs:annotation>
<xs:union memberTypes="xs:positiveInteger">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value=""/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:simpleType name="rotation-degrees">
<xs:annotation>
<xs:documentation>The rotation-degrees type specifies rotation, pan, and elevation values in degrees. Values range from -180 to 180.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:decimal">
<xs:minInclusive value="-180"/>
<xs:maxInclusive value="180"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="semi-pitched">
<xs:annotation>
<xs:documentation>The semi-pitched type represents categories of indefinite pitch for percussion instruments.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="high"/>
<xs:enumeration value="medium-high"/>
<xs:enumeration value="medium"/>
<xs:enumeration value="medium-low"/>
<xs:enumeration value="low"/>
<xs:enumeration value="very-low"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="smufl-glyph-name">
<xs:annotation>
<xs:documentation>The smufl-glyph-name type is used for attributes that reference a specific Standard Music Font Layout (SMuFL) character. The value is a SMuFL canonical glyph name, not a code point. For instance, the value for a standard piano pedal mark would be keyboardPedalPed, not U+E650.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN"/>
</xs:simpleType>
<xs:simpleType name="smufl-accidental-glyph-name">
<xs:annotation>
<xs:documentation>The smufl-accidental-glyph-name type is used to reference a specific Standard Music Font Layout (SMuFL) accidental character. The value is a SMuFL canonical glyph name that starts with one of the strings used at the start of glyph names for SMuFL accidentals.</xs:documentation>
</xs:annotation>
<xs:restriction base="smufl-glyph-name">
<xs:pattern value="(acc|medRenFla|medRenNatura|medRenShar|kievanAccidental)(\c+)"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="smufl-coda-glyph-name">
<xs:annotation>
<xs:documentation>The smufl-coda-glyph-name type is used to reference a specific Standard Music Font Layout (SMuFL) coda character. The value is a SMuFL canonical glyph name that starts with coda.</xs:documentation>
</xs:annotation>
<xs:restriction base="smufl-glyph-name">
<xs:pattern value="coda\c*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="smufl-lyrics-glyph-name">
<xs:annotation>
<xs:documentation>The smufl-lyrics-glyph-name type is used to reference a specific Standard Music Font Layout (SMuFL) lyrics elision character. The value is a SMuFL canonical glyph name that starts with lyrics.</xs:documentation>
</xs:annotation>
<xs:restriction base="smufl-glyph-name">
<xs:pattern value="lyrics\c+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="smufl-pictogram-glyph-name">
<xs:annotation>
<xs:documentation>The smufl-pictogram-glyph-name type is used to reference a specific Standard Music Font Layout (SMuFL) percussion pictogram character. The value is a SMuFL canonical glyph name that starts with pict.</xs:documentation>
</xs:annotation>
<xs:restriction base="smufl-glyph-name">
<xs:pattern value="pict\c+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="smufl-segno-glyph-name">
<xs:annotation>
<xs:documentation>The smufl-segno-glyph-name type is used to reference a specific Standard Music Font Layout (SMuFL) segno character. The value is a SMuFL canonical glyph name that starts with segno.</xs:documentation>
</xs:annotation>
<xs:restriction base="smufl-glyph-name">
<xs:pattern value="segno\c*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="smufl-wavy-line-glyph-name">
<xs:annotation>
<xs:documentation>The smufl-wavy-line-glyph-name type is used to reference a specific Standard Music Font Layout (SMuFL) wavy line character. The value is a SMuFL canonical glyph name that either starts with wiggle, or begins with guitar and ends with VibratoStroke. This includes all the glyphs in the Multi-segment lines range, excluding the beam glyphs.</xs:documentation>
</xs:annotation>
<xs:restriction base="smufl-glyph-name">
<xs:pattern value="(wiggle\c+)|(guitar\c*VibratoStroke)"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="start-note">
<xs:annotation>
<xs:documentation>The start-note type describes the starting note of trills and mordents for playback, relative to the current note.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="upper"/>
<xs:enumeration value="main"/>
<xs:enumeration value="below"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="start-stop">
<xs:annotation>
<xs:documentation>The start-stop type is used for an attribute of musical elements that can either start or stop, such as tuplets.
The values of start and stop refer to how an element appears in musical score order, not in MusicXML document order. An element with a stop attribute may precede the corresponding element with a start attribute within a MusicXML document. This is particularly common in multi-staff music. For example, the stopping point for a tuplet may appear in staff 1 before the starting point for the tuplet appears in staff 2 later in the document.
When multiple elements with the same tag are used within the same note, their order within the MusicXML document should match the musical score order.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="start"/>
<xs:enumeration value="stop"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="start-stop-continue">
<xs:annotation>
<xs:documentation>The start-stop-continue type is used for an attribute of musical elements that can either start or stop, but also need to refer to an intermediate point in the symbol, as for complex slurs or for formatting of symbols across system breaks.
The values of start, stop, and continue refer to how an element appears in musical score order, not in MusicXML document order. An element with a stop attribute may precede the corresponding element with a start attribute within a MusicXML document. This is particularly common in multi-staff music. For example, the stopping point for a slur may appear in staff 1 before the starting point for the slur appears in staff 2 later in the document.
When multiple elements with the same tag are used within the same note, their order within the MusicXML document should match the musical score order. For example, a note that marks both the end of one slur and the start of a new slur should have the incoming slur element with a type of stop precede the outgoing slur element with a type of start.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="start"/>
<xs:enumeration value="stop"/>
<xs:enumeration value="continue"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="start-stop-single">
<xs:annotation>
<xs:documentation>The start-stop-single type is used for an attribute of musical elements that can be used for either multi-note or single-note musical elements, as for groupings.
When multiple elements with the same tag are used within the same note, their order within the MusicXML document should match the musical score order.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="start"/>
<xs:enumeration value="stop"/>
<xs:enumeration value="single"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string-number">
<xs:annotation>
<xs:documentation>The string-number type indicates a string number. Strings are numbered from high to low, with 1 being the highest pitched full-length string.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>
<xs:simpleType name="symbol-size">
<xs:annotation>
<xs:documentation>The symbol-size type is used to distinguish between full, cue sized, grace cue sized, and oversized symbols.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="full"/>
<xs:enumeration value="cue"/>
<xs:enumeration value="grace-cue"/>
<xs:enumeration value="large"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tenths">
<xs:annotation>
<xs:documentation>The tenths type is a number representing tenths of interline staff space (positive or negative). Both integer and decimal values are allowed, such as 5 for a half space and 2.5 for a quarter space. Interline space is measured from the middle of a staff line.
Distances in a MusicXML file are measured in tenths of staff space. Tenths are then scaled to millimeters within the scaling element, used in the defaults element at the start of a score. Individual staves can apply a scaling factor to adjust staff size. When a MusicXML element or attribute refers to tenths, it means the global tenths defined by the scaling element, not the local tenths as adjusted by the staff-size element.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:decimal"/>
</xs:simpleType>
<xs:simpleType name="text-direction">
<xs:annotation>
<xs:documentation>The text-direction type is used to adjust and override the Unicode bidirectional text algorithm, similar to the Directionality data category in the W3C Internationalization Tag Set recommendation. Values are ltr (left-to-right embed), rtl (right-to-left embed), lro (left-to-right bidi-override), and rlo (right-to-left bidi-override). The default value is ltr. This type is typically used by applications that store text in left-to-right visual order rather than logical order. Such applications can use the lro value to better communicate with other applications that more fully support bidirectional text.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="ltr"/>
<xs:enumeration value="rtl"/>
<xs:enumeration value="lro"/>
<xs:enumeration value="rlo"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tied-type">
<xs:annotation>
<xs:documentation>The tied-type type is used as an attribute of the tied element to specify where the visual representation of a tie begins and ends. A tied element which joins two notes of the same pitch can be specified with tied-type start on the first note and tied-type stop on the second note. To indicate a note should be undamped, use a single tied element with tied-type let-ring. For other ties that are visually attached to a single note, such as a tie leading into or out of a repeated section or coda, use two tied elements on the same note, one start and one stop.
In start-stop cases, ties can add more elements using a continue type. This is typically used to specify the formatting of cross-system ties.
When multiple elements with the same tag are used within the same note, their order within the MusicXML document should match the musical score order. For example, a note with a tie at the end of a first ending should have the tied element with a type of start precede the tied element with a type of stop.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="start"/>
<xs:enumeration value="stop"/>
<xs:enumeration value="continue"/>
<xs:enumeration value="let-ring"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="time-only">
<xs:annotation>
<xs:documentation>The time-only type is used to indicate that a particular playback- or listening-related element only applies particular times through a repeated section. The value is a comma-separated list of positive integers arranged in ascending order, indicating which times through the repeated section that the element applies.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[1-9][0-9]*(, ?[1-9][0-9]*)*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="top-bottom">
<xs:annotation>
<xs:documentation>The top-bottom type is used to indicate the top or bottom part of a vertical shape like non-arpeggiate.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="top"/>
<xs:enumeration value="bottom"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tremolo-type">
<xs:annotation>
<xs:documentation>The tremolo-type is used to distinguish double-note, single-note, and unmeasured tremolos.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="start"/>
<xs:enumeration value="stop"/>
<xs:enumeration value="single"/>
<xs:enumeration value="unmeasured"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="trill-beats">
<xs:annotation>
<xs:documentation>The trill-beats type specifies the beats used in a trill-sound or bend-sound attribute group. It is a decimal value with a minimum value of 2.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:decimal">
<xs:minInclusive value="2"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="trill-step">
<xs:annotation>
<xs:documentation>The trill-step type describes the alternating note of trills and mordents for playback, relative to the current note.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="whole"/>
<xs:enumeration value="half"/>
<xs:enumeration value="unison"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="two-note-turn">
<xs:annotation>
<xs:documentation>The two-note-turn type describes the ending notes of trills and mordents for playback, relative to the current note.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="whole"/>
<xs:enumeration value="half"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="up-down">
<xs:annotation>
<xs:documentation>The up-down type is used for the direction of arrows and other pointed symbols like vertical accents, indicating which way the tip is pointing.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="up"/>
<xs:enumeration value="down"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="upright-inverted">
<xs:annotation>
<xs:documentation>The upright-inverted type describes the appearance of a fermata element. The value is upright if not specified.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="upright"/>
<xs:enumeration value="inverted"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="valign">
<xs:annotation>
<xs:documentation>The valign type is used to indicate vertical alignment to the top, middle, bottom, or baseline of the text. If the text is on multiple lines, baseline alignment refers to the baseline of the lowest line of text. Defaults are implementation-dependent.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="top"/>
<xs:enumeration value="middle"/>
<xs:enumeration value="bottom"/>
<xs:enumeration value="baseline"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="valign-image">
<xs:annotation>
<xs:documentation>The valign-image type is used to indicate vertical alignment for images and graphics, so it does not include a baseline value. Defaults are implementation-dependent.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="top"/>
<xs:enumeration value="middle"/>
<xs:enumeration value="bottom"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="yes-no">
<xs:annotation>
<xs:documentation>The yes-no type is used for boolean-like attributes. We cannot use W3C XML Schema booleans due to their restrictions on expression of boolean values.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="yes"/>
<xs:enumeration value="no"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="yes-no-number">
<xs:annotation>
<xs:documentation>The yes-no-number type is used for attributes that can be either boolean or numeric values.</xs:documentation>
</xs:annotation>
<xs:union memberTypes="yes-no xs:decimal"/>
</xs:simpleType>
<xs:simpleType name="yyyy-mm-dd">
<xs:annotation>
<xs:documentation>Calendar dates are represented yyyy-mm-dd format, following ISO 8601. This is a W3C XML Schema date type, but without the optional timezone data.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:date">
<xs:pattern value="[^:Z]*"/>
</xs:restriction>
</xs:simpleType>
<!-- Simple types derived from attributes.mod entities and elements -->
<xs:simpleType name="cancel-location">
<xs:annotation>
<xs:documentation>The cancel-location type is used to indicate where a key signature cancellation appears relative to a new key signature: to the left, to the right, or before the barline and to the left. It is left by default. For mid-measure key elements, a cancel-location of before-barline should be treated like a cancel-location of left.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="left"/>
<xs:enumeration value="right"/>
<xs:enumeration value="before-barline"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="clef-sign">
<xs:annotation>
<xs:documentation>The clef-sign type represents the different clef symbols. The jianpu sign indicates that the music that follows should be in jianpu numbered notation, just as the TAB sign indicates that the music that follows should be in tablature notation. Unlike TAB, a jianpu sign does not correspond to a visual clef notation.
The none sign is deprecated as of MusicXML 4.0. Use the clef element's print-object attribute instead. When the none sign is used, notes should be displayed as if in treble clef.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="G"/>
<xs:enumeration value="F"/>
<xs:enumeration value="C"/>
<xs:enumeration value="percussion"/>
<xs:enumeration value="TAB"/>
<xs:enumeration value="jianpu"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="fifths">
<xs:annotation>
<xs:documentation>The fifths type represents the number of flats or sharps in a traditional key signature. Negative numbers are used for flats and positive numbers for sharps, reflecting the key's placement within the circle of fifths (hence the type name).</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer"/>
</xs:simpleType>
<xs:simpleType name="mode">
<xs:annotation>
<xs:documentation>The mode type is used to specify major/minor and other mode distinctions. Valid mode values include major, minor, dorian, phrygian, lydian, mixolydian, aeolian, ionian, locrian, and none.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="show-frets">
<xs:annotation>
<xs:documentation>The show-frets type indicates whether to show tablature frets as numbers (0, 1, 2) or letters (a, b, c). The default choice is numbers.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="numbers"/>
<xs:enumeration value="letters"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="staff-line">
<xs:annotation>
<xs:documentation>The staff-line type indicates the line on a given staff. Staff lines are numbered from bottom to top, with 1 being the bottom line on a staff.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>
<xs:simpleType name="staff-line-position">
<xs:annotation>
<xs:documentation>The staff-line-position type indicates the line position on a given staff. Staff lines are numbered from bottom to top, with 1 being the bottom line on a staff. A staff-line-position value can extend beyond the range of the lines on the current staff.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer"/>
</xs:simpleType>
<xs:simpleType name="staff-number">
<xs:annotation>
<xs:documentation>The staff-number type indicates staff numbers within a multi-staff part. Staves are numbered from top to bottom, with 1 being the top staff on a part.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>
<xs:simpleType name="staff-type">
<xs:annotation>
<xs:documentation>The staff-type value can be ossia, editorial, cue, alternate, or regular. An ossia staff represents music that can be played instead of what appears on the regular staff. An editorial staff also represents musical alternatives, but is created by an editor rather than the composer. It can be used for suggested interpretations or alternatives from other sources. A cue staff represents music from another part. An alternate staff shares the same music as the prior staff, but displayed differently (e.g., treble and bass clef, standard notation and tablature). It is not included in playback. An alternate staff provides more information to an application reading a file than encoding the same music in separate parts, so its use is preferred in this situation if feasible. A regular staff is the standard default staff-type.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="ossia"/>
<xs:enumeration value="editorial"/>
<xs:enumeration value="cue"/>
<xs:enumeration value="alternate"/>
<xs:enumeration value="regular"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="time-relation">
<xs:annotation>
<xs:documentation>The time-relation type indicates the symbol used to represent the interchangeable aspect of dual time signatures.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="parentheses"/>
<xs:enumeration value="bracket"/>
<xs:enumeration value="equals"/>
<xs:enumeration value="slash"/>
<xs:enumeration value="space"/>
<xs:enumeration value="hyphen"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="time-separator">
<xs:annotation>
<xs:documentation>The time-separator type indicates how to display the arrangement between the beats and beat-type values in a time signature. The default value is none. The horizontal, diagonal, and vertical values represent horizontal, diagonal lower-left to upper-right, and vertical lines respectively. For these values, the beats and beat-type values are arranged on either side of the separator line. The none value represents no separator with the beats and beat-type arranged vertically. The adjacent value represents no separator with the beats and beat-type arranged horizontally.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="none"/>
<xs:enumeration value="horizontal"/>
<xs:enumeration value="diagonal"/>
<xs:enumeration value="vertical"/>
<xs:enumeration value="adjacent"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="time-symbol">
<xs:annotation>
<xs:documentation>The time-symbol type indicates how to display a time signature. The normal value is the usual fractional display, and is the implied symbol type if none is specified. Other options are the common and cut time symbols, as well as a single number with an implied denominator. The note symbol indicates that the beat-type should be represented with the corresponding downstem note rather than a number. The dotted-note symbol indicates that the beat-type should be represented with a dotted downstem note that corresponds to three times the beat-type value, and a numerator that is one third the beats value.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="common"/>
<xs:enumeration value="cut"/>
<xs:enumeration value="single-number"/>
<xs:enumeration value="note"/>
<xs:enumeration value="dotted-note"/>
<xs:enumeration value="normal"/>
</xs:restriction>
</xs:simpleType>
<!-- Simple types derived from barline.mod elements -->
<xs:simpleType name="backward-forward">
<xs:annotation>
<xs:documentation>The backward-forward type is used to specify repeat directions. The start of the repeat has a forward direction while the end of the repeat has a backward direction.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="backward"/>
<xs:enumeration value="forward"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="bar-style">
<xs:annotation>
<xs:documentation>The bar-style type represents barline style information. Choices are regular, dotted, dashed, heavy, light-light, light-heavy, heavy-light, heavy-heavy, tick (a short stroke through the top line), short (a partial barline between the 2nd and 4th lines), and none.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="regular"/>
<xs:enumeration value="dotted"/>
<xs:enumeration value="dashed"/>
<xs:enumeration value="heavy"/>
<xs:enumeration value="light-light"/>
<xs:enumeration value="light-heavy"/>
<xs:enumeration value="heavy-light"/>
<xs:enumeration value="heavy-heavy"/>
<xs:enumeration value="tick"/>
<xs:enumeration value="short"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ending-number">
<xs:annotation>
<xs:documentation>The ending-number type is used to specify either a comma-separated list of positive integers without leading zeros, or a string of zero or more spaces. It is used for the number attribute of the ending element. The zero or more spaces version is used when software knows that an ending is present, but cannot determine the type of the ending.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="([ ]*)|([1-9][0-9]*(, ?[1-9][0-9]*)*)"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="right-left-middle">
<xs:annotation>
<xs:documentation>The right-left-middle type is used to specify barline location.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="right"/>
<xs:enumeration value="left"/>
<xs:enumeration value="middle"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="start-stop-discontinue">
<xs:annotation>
<xs:documentation>The start-stop-discontinue type is used to specify ending types. Typically, the start type is associated with the left barline of the first measure in an ending. The stop and discontinue types are associated with the right barline of the last measure in an ending. Stop is used when the ending mark concludes with a downward jog, as is typical for first endings. Discontinue is used when there is no downward jog, as is typical for second endings that do not conclude a piece.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="start"/>
<xs:enumeration value="stop"/>
<xs:enumeration value="discontinue"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="winged">
<xs:annotation>
<xs:documentation>The winged attribute indicates whether the repeat has winged extensions that appear above and below the barline. The straight and curved values represent single wings, while the double-straight and double-curved values represent double wings. The none value indicates no wings and is the default.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="none"/>
<xs:enumeration value="straight"/>
<xs:enumeration value="curved"/>
<xs:enumeration value="double-straight"/>
<xs:enumeration value="double-curved"/>
</xs:restriction>
</xs:simpleType>
<!-- Simple types derived from direction.mod elements -->
<xs:simpleType name="accordion-middle">
<xs:annotation>
<xs:documentation>The accordion-middle type may have values of 1, 2, or 3, corresponding to having 1 to 3 dots in the middle section of the accordion registration symbol. This type is not used if no dots are present.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="beater-value">
<xs:annotation>
<xs:documentation>The beater-value type represents pictograms for beaters, mallets, and sticks that do not have different materials represented in the pictogram. The finger and hammer values are in addition to Stone's list.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="bow"/>
<xs:enumeration value="chime hammer"/>
<xs:enumeration value="coin"/>
<xs:enumeration value="drum stick"/>
<xs:enumeration value="finger"/>
<xs:enumeration value="fingernail"/>
<xs:enumeration value="fist"/>
<xs:enumeration value="guiro scraper"/>
<xs:enumeration value="hammer"/>
<xs:enumeration value="hand"/>
<xs:enumeration value="jazz stick"/>
<xs:enumeration value="knitting needle"/>
<xs:enumeration value="metal hammer"/>
<xs:enumeration value="slide brush on gong"/>
<xs:enumeration value="snare stick"/>
<xs:enumeration value="spoon mallet"/>
<xs:enumeration value="superball"/>
<xs:enumeration value="triangle beater"/>
<xs:enumeration value="triangle beater plain"/>
<xs:enumeration value="wire brush"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="degree-symbol-value">
<xs:annotation>
<xs:documentation>The degree-symbol-value type indicates which symbol should be used in specifying a degree.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="major"/>
<xs:enumeration value="minor"/>
<xs:enumeration value="augmented"/>
<xs:enumeration value="diminished"/>
<xs:enumeration value="half-diminished"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="degree-type-value">
<xs:annotation>
<xs:documentation>The degree-type-value type indicates whether the current degree element is an addition, alteration, or subtraction to the kind of the current chord in the harmony element.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="add"/>
<xs:enumeration value="alter"/>
<xs:enumeration value="subtract"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="effect-value">
<xs:annotation>
<xs:documentation>The effect-value type represents pictograms for sound effect percussion instruments. The cannon, lotus flute, and megaphone values are in addition to Stone's list.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="anvil"/>
<xs:enumeration value="auto horn"/>
<xs:enumeration value="bird whistle"/>
<xs:enumeration value="cannon"/>
<xs:enumeration value="duck call"/>
<xs:enumeration value="gun shot"/>
<xs:enumeration value="klaxon horn"/>
<xs:enumeration value="lions roar"/>
<xs:enumeration value="lotus flute"/>
<xs:enumeration value="megaphone"/>
<xs:enumeration value="police whistle"/>
<xs:enumeration value="siren"/>
<xs:enumeration value="slide whistle"/>
<xs:enumeration value="thunder sheet"/>
<xs:enumeration value="wind machine"/>
<xs:enumeration value="wind whistle"/>