Low-level conversion routines between MusicXML and music21.
Returns a List of mxNotes Attributes of notes are merged from different locations: first from the duration objects, then from the pitch objects. Finally, GeneralNote attributes are added
>>> from music21 import *
>>> a = chord.Chord()
>>> a.quarterLength = 2
>>> b = pitch.Pitch('A-')
>>> c = pitch.Pitch('D-')
>>> d = pitch.Pitch('E-')
>>> e = a.pitches = [b, c, d]
>>> len(e)
3
>>> mxNoteList = a.mx
>>> len(mxNoteList) # get three mxNotes
3
>>> mxNoteList[0].get('chord')
False
>>> mxNoteList[1].get('chord')
True
>>> mxNoteList[2].get('chord')
True
Translate a music21 Duration object to a list of one or more MusicXML Note objects. All rhythms and ties necessary in the MusicXML Notes are configured. The returned mxNote objects are incompletely specified, lacking full representation and information on pitch, etc.
>>> from music21 import *
>>> a = duration.Duration()
>>> a.quarterLength = 3
>>> b = musicxml.translate.durationToMx(a)
>>> len(b) == 1
True
>>> isinstance(b[0], musicxmlMod.Note)
True
>>> a = duration.Duration()
>>> a.quarterLength = .33333333
>>> b = musicxml.translate.durationToMx(a)
>>> len(b) == 1
True
>>> isinstance(b[0], musicxmlMod.Note)
True
Translate a music21 Note into a complete MusicXML representation.
>>> from music21 import *
>>> n = note.Note('c3')
>>> n.quarterLength = 3
>>> post = musicxml.translate.generalNoteToMusicXML(n)
>>> post[-100:].replace('\n', '')
'/type> <dot/> <notations/> </note> </measure> </part></score-partwise>'
>>> from music21 import *
>>> i = instrument.Celesta()
>>> mxScorePart = i.mx
>>> len(mxScorePart.scoreInstrumentList)
1
>>> mxScorePart.scoreInstrumentList[0].instrumentName
'Celesta'
>>> mxScorePart.midiInstrumentList[0].midiProgram
9
Translate a music21 Measure into a complete MusicXML string representation. Note: this method is called for complete MusicXML representation of a Measure, not for partial solutions in Part or Stream production.
>>> from music21 import *
>>> m = stream.Measure()
>>> m.repeatAppend(note.Note('g3'), 4)
>>> post = musicxml.translate.measureToMusicXML(m)
>>> post[-100:].replace('\n', '')
' <type>quarter</type> <notations/> </note> </measure> </part></score-partwise>'
Given an a list of mxNotes, fill the necessary parameters
>>> from music21 import *
>>> a = musicxml.Note()
>>> a.setDefaults()
>>> b = musicxml.Note()
>>> b.setDefaults()
>>> b.set('chord', True)
>>> m = musicxml.Measure()
>>> m.setDefaults()
>>> a.external['measure'] = m # assign measure for divisions ref
>>> a.external['divisions'] = m.external['divisions']
>>> b.external['measure'] = m # assign measure for divisions ref
>>> b.external['divisions'] = m.external['divisions']
>>> c = chord.Chord()
>>> c.mx = [a, b]
>>> len(c.pitches)
2
Translate a MusicXML Note object to a music21 Duration object.
>>> from music21 import *
>>> a = musicxml.Note()
>>> a.setDefaults()
>>> m = musicxml.Measure()
>>> m.setDefaults()
>>> a.external['measure'] = m # assign measure for divisions ref
>>> a.external['divisions'] = m.external['divisions']
>>> c = duration.Duration()
>>> musicxml.translate.mxToDuration(a, c)
<music21.duration.Duration 1.0>
>>> c.quarterLength
1.0
Given an mxDirection, load instance
>>> from music21 import *
>>> mxDirection = musicxml.Direction()
>>> mxDirectionType = musicxml.DirectionType()
>>> mxDynamicMark = musicxml.DynamicMark('ff')
>>> mxDynamics = musicxml.Dynamics()
>>> mxDynamics.set('default-y', -20)
>>> mxDynamics.append(mxDynamicMark)
>>> mxDirectionType.append(mxDynamics)
>>> mxDirection.append(mxDirectionType)
>>> a = dynamics.Dynamic()
>>> a.mx = mxDirection
>>> a.value
'ff'
>>> a.posDefaultY
-20
>>> a.posPlacement
'below'
Given a MusicXML Note object, set this Pitch object to its values.
>>> from music21 import *
>>> b = musicxml.Pitch()
>>> b.set('octave', 3)
>>> b.set('step', 'E')
>>> b.set('alter', -1)
>>> c = musicxml.Note()
>>> c.set('pitch', b)
>>> a = pitch.Pitch('g#4')
>>> a.mx = c
>>> print(a)
E-3
Given an mxTimeList, load this object
>>> from music21 import *
>>> a = musicxml.Time()
>>> a.setDefaults()
>>> b = musicxml.Attributes()
>>> b.timeList.append(a)
>>> c = meter.TimeSignature()
>>> c.mx = b.timeList
>>> c.numerator
4
Returns a musicxml.Note() object
>>> from music21 import *
>>> a = pitch.Pitch('g#4')
>>> c = a.mx
>>> c.get('pitch').get('step')
'G'
Create and return a musicxml Score object.
>>> from music21 import *
>>> n1 = note.Note()
>>> measure1 = stream.Measure()
>>> measure1.insert(n1)
>>> s1 = stream.Stream()
>>> s1.insert(measure1)
>>> mxScore = musicxml.translate.streamToMx(s1)
>>> mxPartList = mxScore.get('partList')
Returns a single mxTime object. Compound meters are represented as multiple pairs of beat and beat-type elements
>>> from music21 import *
>>> a = meter.TimeSignature('3/4')
>>> b = a.mx
>>> a = meter.TimeSignature('3/4+2/4')
>>> b = a.mx