@@ -769,6 +769,7 @@ def __init__(self):
769769 self .parts = []
770770
771771 self .musicXmlVersion = defaults .musicxmlVersion
772+ self .wasWrittenByFinale = False
772773
773774 def scoreFromFile (self , filename ):
774775 '''
@@ -1326,9 +1327,17 @@ def processEncoding(self, encoding: ET.Element, md: metadata.Metadata) -> None:
13261327 # TODO: encoder (text + type = role) multiple
13271328 # TODO: encoding date multiple
13281329 # TODO: encoding-description (string) multiple
1330+ finaleFound : bool = False
1331+ nonFinaleFound : bool = False
13291332 for software in encoding .findall ('software' ):
13301333 if softwareText := strippedText (software ):
1334+ if 'Finale' in softwareText :
1335+ finaleFound = True
1336+ else :
1337+ nonFinaleFound = True
13311338 md .add ('software' , softwareText )
1339+ if finaleFound and not nonFinaleFound :
1340+ self .wasWrittenByFinale = True
13321341
13331342 for supports in encoding .findall ('supports' ):
13341343 # todo: element: required
@@ -2630,18 +2639,19 @@ def xmlForward(self, mxObj: ET.Element):
26302639 if durationText := strippedText (mxDuration ):
26312640 change = opFrac (float (durationText ) / self .divisions )
26322641
2633- # Create hidden rest (in other words, a spacer)
2634- # old Finale documents close incomplete final measures with <forward>
2635- # this will be removed afterward by removeEndForwardRest()
2636- r = note .Rest (quarterLength = change )
2637- r .style .hideObjectOnPrint = True
2638- self .addToStaffReference (mxObj , r )
2639- self .insertInMeasureOrVoice (mxObj , r )
2642+ if self .parent .parent .wasWrittenByFinale :
2643+ # Create hidden rest (in other words, a spacer)
2644+ # old Finale documents close incomplete final measures with <forward>
2645+ # this will be removed afterward by removeEndForwardRest()
2646+ r = note .Rest (quarterLength = change )
2647+ r .style .hideObjectOnPrint = True
2648+ self .addToStaffReference (mxObj , r )
2649+ self .insertInMeasureOrVoice (mxObj , r )
2650+ # xmlToNote() sets None
2651+ self .endedWithForwardTag = r
26402652
26412653 # Allow overfilled measures for now -- TODO(someday): warn?
26422654 self .offsetMeasureNote += change
2643- # xmlToNote() sets None
2644- self .endedWithForwardTag = r
26452655
26462656 def xmlPrint (self , mxPrint : ET .Element ):
26472657 '''
0 commit comments