MusicXML - CCARH Homepage

Download Report

Transcript MusicXML - CCARH Homepage

MusicXML
Music 253 / CS 275A
Stanford University
Winter 2005
Craig Stuart Sapp
Purpose
• Primary function of MusicXML is data interchange between
programs:
image from: http://recordare.com/xml.html
• Designed for encoding common-practice western music notation.
Predecessor Data Formats
• MIDI
not designed as a notation interchange format.
• SmartScore
http://www.musitek.com/midiedition.html
• Originally the only way out of Finale’s proprietary format.
• NIFF
http://www.music-notation.info/en/compmus/notationformats.html#NIFF
• Available in Sibelius and Lime Notation Programs
see: http://www.visiv.co.uk/niff.htm
MusicXML Development
• Integration of MuseData format with Finale Typesetting Program
“We have tried to learn from the mistakes of past music notation interchange efforts by
1) basing the format on the two strongest academic formats available, MuseData and
Humdrum, and 2) testing the format by writing usable software from the beginning of
the development process.“
http://recordare.com/xml.html
• June 2001 : Alpha version of MusicXML 0.3 available
• March 2002: First commercial release of MusicXML 0.6
(Import plugin comes with Finale 2003)
• Jan 2004: MusicXML 1.0 released
• Currently MusicXML 2.0 under development
Dolet plugin for Finale
• Primary implementation as a Plugin called Dolet for Finale:
http://store.recordare.com/doletfin2.html
• Write your own plugins for Finale:
http://www.finalemusic.com/finale/plugin-devkit.asp
XML Tree Structure
tag
<tag>
<subtag>
subtag
subtag2
<subsubtag>
subsubtag
...
</subsubtag>
Shorthands: <tag/> == <tag></tag>
</subtag>
<subtag2>
attributes: <tag key=“value”/>
...
</subtag2>
analogous to:
</tag>
An Introduction to XML file structure:
http://www.people.virginia.edu/~pdr4h/xmlresources/XMLstepbystep.pdf
<tag>
<key>value</key>
</tag>
<score-partwise>
<identification>...</identification>
<part-list>...</part-list>
<part id=“p1”>
<measure number=“1”>
<attributes>...</attributes>
<note>...</note>
<note>...</note>
<note>...</note>
<note>...</note>
</measure>
<measure number=“2”>
<note>...</note>
<note>...</note>
</measure>
</part>
<part id=“P2”>...</part>
</score-partwise>
MusicXML
Structure
• partwise score most common
• each part listed serially
• part consists of measures
• measures contain (1) <note>s (items
with duration) and
•(2) <attribute>s (items without duration
such as clef, time signature, key
signature, etc.)
•(3) <direction>s (dynamics)
•(4) <sound/> (tempo)
Note Element
<note>
<pitch>
<step>C</step>
<octave>5</octave>
</pitch>
logical duration
<duration>1</duration>
<voice>1</voice>
<type>16th</type>
graphical duration
<stem>down</stem>
<notations>
<articulations>
<staccato placement="above"/>
</articulations>
</notations>
</note>
see: http://recordare.com/xml/musicxml-index.html
MuseData vs. MusicXML
• MusicXML’s basic structure is a key-parameterized version of
MuseData.
MuseData note record
duration
type stem
voice
staccato
step
octave
C5
1
1 s
d
.
1234567890123456789012345678901234567890
0
1
2
3
4
<note>
<pitch>
<step>C</step>
<octave>5</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>16th</type>
<stem>down</stem>
<notations>
<articulations>
<staccato placement="above"/>
</articulations>
</notations>
</note>
Function parameters:
• Fixed
(e.g. C)
• Optional (e.g. C++)
• Key
(e.g. LISP)
Causality
• MusicXML is not a causal encoding format
<backup> and <forward> commands are used
to encode single parts with multiple staves or multiple
voices.
voice 2
Examples of causal music formats:
MIDI
(partwise encoding)
Humdrum (scorewise encoding)
Other XML-Based Music Formats
see: http://xml.coverpages.org/xmlMusic.html
• Music Encoding Initiative:
http://www.lib.virginia.edu/digital/resndev/mei/
• MusiXML
http://www.music-notation.info/en/musixml/MusiXML.html