110 likes | 327 Views
MusicXML. Music 253 / CS 275A Stanford University Winter 2005 Craig Stuart Sapp. image from : http://recordare.com/xml.html. Purpose. Primary function of MusicXML is data interchange between programs:. Designed for encoding common-practice western music notation.
E N D
MusicXML Music 253 / CS 275A Stanford University Winter 2005 Craig Stuart Sapp
image from: http://recordare.com/xml.html Purpose • Primary function of MusicXML is data interchange between programs: • Designed for encoding common-practice western music notation.
Predecessor Data Formats • MIDI • NIFF not designed as a notation interchange format. • SmartScore http://www.musitek.com/midiedition.html • Originally the only way out of Finale’s proprietary format. 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 • March2002: 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
Primary implementation as a Plugin called Dolet for Finale: • Write your own plugins for Finale: http://store.recordare.com/doletfin2.html http://www.finalemusic.com/finale/plugin-devkit.asp Dolet plugin for Finale
tag <tag> <subtag> <subsubtag> ... </subsubtag> </subtag> <subtag2> ... </subtag2> </tag> subtag subtag2 subsubtag XML Tree Structure Shorthands: <tag/> == <tag></tag> <tag key=“value”/> attributes: analogous to: <tag> <key>value</key> </tag> An Introduction to XML file structure: http://www.people.virginia.edu/~pdr4h/xmlresources/XMLstepbystep.pdf
<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> <duration>1</duration> <voice>1</voice> <type>16th</type> <stem>down</stem> <notations> <articulations> <staccato placement="above"/> </articulations> </notations> </note> logical duration graphical duration see: http://recordare.com/xml/musicxml-index.html
Function parameters: duration type • Fixed • Optional • Key (e.g. C) stem voice staccato step octave (e.g. C++) (e.g. LISP) C5 1 1 s d . 1234567890123456789012345678901234567890 0 1 2 3 4 MuseData vs. MusicXML • MusicXML’s basic structure is a key-parameterized version of MuseData. MuseData note record <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>
voice 2 Causality • MusicXML is not a causal encoding format <backup> and <forward> commands are used to encode single parts with multiple staves or multiple voices. Examples of causal music formats: MIDI (partwise encoding) Humdrum (scorewise encoding)
Music Encoding Initiative: http://www.lib.virginia.edu/digital/resndev/mei/ • MusiXML http://www.music-notation.info/en/musixml/MusiXML.html Other XML-Based Music Formats see: http://xml.coverpages.org/xmlMusic.html