diff --git a/music21/musicxml/test_xmlToM21.py b/music21/musicxml/test_xmlToM21.py index 954b99a0a..b2743f632 100644 --- a/music21/musicxml/test_xmlToM21.py +++ b/music21/musicxml/test_xmlToM21.py @@ -1080,6 +1080,79 @@ def testImpliedTuplet(self): tuplets = [n.duration.tuplets[0] for n in s.recurse().notes] self.assertEqual([tup.bracket for tup in tuplets], [True, True, True, False, False, False]) + def testTremoloImpliedTuplet(self): + ''' + Test that between-note tremolos with time-modification of 2:1 do not + get tuplets with show-number None, as they should not be drawn as + tuplets. + ''' + from music21 import converter + + mxString = ''' + + + + P + + + + + + 256 + + + F + 4 + + + + + E + 3 + + 512 + 1 + whole + + 2 + 1 + + + + 4 + + + + + + G + 3 + + 512 + 1 + whole + + 2 + 1 + + + + 4 + + + + + + ''' + + s = converter.parse(mxString, format='musicxml') + tuplets = [n.duration.tuplets[0] for n in s.recurse().notes] + self.assertEqual([tup.bracket for tup in tuplets], [False, False]) + self.assertEqual([tup.tupletActualShow for tup in tuplets], [None, None]) + def test34MeasureRestWithoutTag(self): from xml.etree.ElementTree import fromstring as EL diff --git a/music21/musicxml/xmlToM21.py b/music21/musicxml/xmlToM21.py index 00f2fba35..9c8bad276 100644 --- a/music21/musicxml/xmlToM21.py +++ b/music21/musicxml/xmlToM21.py @@ -4833,6 +4833,9 @@ def xmlToTuplets(self, mxNote: ET.Element) -> list[duration.Tuplet]: remainderFraction.numerator) remainderTuplet.durationNormal = timeModTup.durationNormal remainderTuplet.durationActual = timeModTup.durationActual + remainderTuplet.bracket = False + remainderTuplet.tupletActualShow = None + remainderTuplet.tupletNormalShow = None returnTuplets[-1] = remainderTuplet # now we can remove stops for future notes.