def addNotation(self, obj):
        '''
        Method to add new notation. Use this rather than adding directly so new classes can be added automatically
        without needing to know which list to add it to in the main code.
        :param obj: the object to add
        :return: None
        '''
        add = True
        wrap_notation = [
            Arpeggiate,
            NonArpeggiate,
            Slide,
            Glissando,
            Mark.Caesura,
            Mark.BreathMark,
            GraceNote]
        # method to handle addition of notation: done here to avoid repetitive
        # code in main parser
        if isinstance(obj, Ornaments.Tremolo) or isinstance(obj, Tuplet):
            if isinstance(obj, Ornaments.Tremolo):
                options = {1: 2, 2: 4, 3: 8}
                if hasattr(obj, "value"):
                    self.trem_length = options[obj.value]
            if hasattr(obj, "type"):
                if isinstance(obj, Ornaments.Tremolo) and obj.type != "single":
                    self.trem_length *= 2
                if obj.type == "stop":
                    self.closing_notation.append(obj)
                else:
                    self.prenotation.append(obj)
                return
            else:
                self.prenotation.append(obj)
                return
        if type(obj) in wrap_notation:
            if type(obj) == Slide and not hasattr(obj, "lineType"):
                self.postnotation.append(obj)
                return
            else:
                self.wrap_notation.append(obj)
                return
        if hasattr(obj, "type") and len(self.postnotation) > 0:
            duplicate_check = [
                True for thing in self.postnotation if hasattr(
                    thing,
                    "type") and thing.type == obj.type]
            if len(duplicate_check) > 0:
                add = False
        if len(self.postnotation) == 0 or add:
            self.postnotation.append(obj)
def addNotation ( self , obj ) : add = True wrap_notation = [ Arpeggiate , NonArpeggiate , Slide , Glissando , Mark . Caesura , Mark . BreathMark , GraceNote ] if isinstance ( obj , Ornaments . Tremolo ) or isinstance ( obj , Tuplet ) : if isinstance ( obj , Ornaments . Tremolo ) : options = { 1 : 2 , 2 : 4 , 3 : 8 } if hasattr ( obj , "value" ) : self . trem_length = options [ obj . value ] if hasattr ( obj , "type" ) : if isinstance ( obj , Ornaments . Tremolo ) and obj . type != "single" : self . trem_length *= 2 if obj . type == "stop" : self . closing_notation . append ( obj ) else : self . prenotation . append ( obj ) return else : self . prenotation . append ( obj ) return if type ( obj ) in wrap_notation : if type ( obj ) == Slide and not hasattr ( obj , "lineType" ) : self . postnotation . append ( obj ) return else : self . wrap_notation . append ( obj ) return if hasattr ( obj , "type" ) and len ( self . postnotation ) > 0 : duplicate_check = [ True for thing in self . postnotation if hasattr ( thing , "type" ) and thing . type == obj . type ] if len ( duplicate_check ) > 0 : add = False if len ( self . postnotation ) == 0 or add : self . postnotation . append ( obj )
Method to add new notation. Use this rather than adding directly so new classes can be added automatically
        without needing to know which list to add it to in the main code.
        :param obj: the object to add
        :return: None