--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"\r
+ "http://www.musicxml.org/dtds/partwise.dtd">\r
+<score-partwise version="2.0">\r
+ <movement-title>Accordion registrations</movement-title>\r
+ <identification/>\r
+ <defaults/>\r
+ <part-list>\r
+ <score-part id="P1">\r
+ <part-name></part-name>\r
+ </score-part>\r
+ </part-list>\r
+ <!--=========================================================-->\r
+ <part id="P1">\r
+ <!-- Direction type can contain the following child types:\r
+ rehearsal+ | segno+ | words+ |\r
+ coda+ | wedge | dynamics+ | dashes | bracket | pedal | \r
+ metronome | octave-shift | harp-pedals | damp | \r
+ damp-all | eyeglasses | scordatura | image |\r
+ accordion-registration | other-direction -->\r
+ <!-- Rehearsal marks -->\r
+ <measure number="1">\r
+ <attributes>\r
+ <divisions>1</divisions>\r
+ <key>\r
+ <fifths>0</fifths>\r
+ <mode>major</mode>\r
+ </key>\r
+ <time symbol="common">\r
+ <beats>4</beats>\r
+ <beat-type>4</beat-type>\r
+ </time>\r
+ <clef>\r
+ <sign>G</sign>\r
+ <line>2</line>\r
+ </clef>\r
+ </attributes>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/0/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>1</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/1/0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>1</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/1/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>2</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/2/0</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="2">\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>2</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/2/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>3</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/3/0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>3</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/3/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/0/1</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="3">\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/0/0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>1</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/1/0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>1</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/1/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>2</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/2/0</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="4">\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>2</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/2/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>3</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/3/0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>3</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/3/1</text></lyric>\r
+ </note>\r
+ <!-- Special cases: No accordion-(high|middle|low) given, empty middle, \r
+ middle with invalid value, middle with 0 -->\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>empty</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="5">\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle/>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>empty M</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>test</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>inval.M</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>0</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>M=0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>5</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>M=5</text></lyric>\r
+ </note>\r
+ \r
+ <barline location="right">\r
+ <bar-style>light-heavy</bar-style>\r
+ </barline>\r
+ </measure>\r
+ <!--=======================================================-->\r
+ </part>\r
+ <!--=========================================================-->\r
+</score-partwise>\r
dynamicstext = dynamicsname
dynamicsname = string.replace (dynamicsname, "-", "")
additional_definitions[dynamicsname] = dynamicsname + \
- "=#(make-dynamic-script \"" + dynamicstext + "\")"
+ " = #(make-dynamic-script \"" + dynamicstext + "\")"
needed_additional_definitions.append (dynamicsname)
event = musicexp.DynamicsEvent ()
event.type = dynamicsname
return event
+# convert accordion-registration to lilypond.
+# Since lilypond does not have any built-in commands, we need to create
+# the markup commands manually and define our own variables.
+# Idea was taken from: http://lsr.dsi.unimi.it/LSR/Item?id=194
+def musicxml_accordion_to_markup (mxl_event):
+ commandname = "accReg"
+ command = ""
+
+ high = mxl_event.get_maybe_exist_named_child ('accordion-high')
+ if high:
+ commandname += "H"
+ command += """\\combine
+ \\raise #2.5 \\musicglyph #\"accordion.accDot\"
+ """
+ middle = mxl_event.get_maybe_exist_named_child ('accordion-middle')
+ if middle:
+ txt = 1
+ try:
+ txt = string.atoi (middle.get_text ())
+ except ValueError:
+ pass
+ if txt == 3:
+ commandname += "MMM"
+ command += """\\combine
+ \\raise #1.5 \\musicglyph #\"accordion.accDot\"
+ \\combine
+ \\raise #1.5 \\translate #(cons 1 0) \\musicglyph #\"accordion.accDot\"
+ \\combine
+ \\raise #1.5 \\translate #(cons -1 0) \\musicglyph #\"accordion.accDot\"
+ """
+ elif txt == 2:
+ commandname += "MM"
+ command += """\\combine
+ \\raise #1.5 \\translate #(cons 0.5 0) \\musicglyph #\"accordion.accDot\"
+ \\combine
+ \\raise #1.5 \\translate #(cons -0.5 0) \\musicglyph #\"accordion.accDot\"
+ """
+ elif not txt <= 0:
+ commandname += "M"
+ command += """\\combine
+ \\raise #1.5 \\musicglyph #\"accordion.accDot\"
+ """
+ low = mxl_event.get_maybe_exist_named_child ('accordion-low')
+ if low:
+ commandname += "L"
+ command += """\\combine
+ \\raise #0.5 \musicglyph #\"accordion.accDot\"
+ """
+
+ command += "\musicglyph #\"accordion.accDiscant\""
+ command = "\\markup { \\normalsize %s }" % command
+ additional_definitions[commandname] = "%s = %s" % (commandname, command)
+ print additional_definitions
+ needed_additional_definitions.append (commandname)
+ return "\\%s" % commandname
+
+def musicxml_accordion_to_ly (mxl_event):
+ txt = musicxml_accordion_to_markup (mxl_event)
+ if txt:
+ ev = musicexp.MarkEvent (txt)
+ return ev
+ return
+
def musicxml_rehearsal_to_ly_mark (mxl_event):
text = mxl_event.get_text ()
ev = musicexp.MarkEvent ("\\markup { %s }" % text)
return ev
-
# translate directions into Events, possible values:
# -) string (MarkEvent with that command)
# -) function (function(mxl_event) needs to return a full Event-derived object
# -) (class, name) (like string, only that a different class than MarkEvent is used)
directions_dict = {
-# 'accordion-registration' : musicxml_accordion_to_ly,
+ 'accordion-registration' : musicxml_accordion_to_ly,
'coda' : (musicexp.MusicGlyphMarkEvent, "coda"),
# 'damp' : ???
# 'damp-all' : ???