示例#1
0
    def clefFromClefSign(self, clefSign):
        '''
        returns a :class:`~music21.clef.Clef` object or subclass from a <clefSign> tag. 
        
        
        >>> ci = capella.fromCapellaXML.CapellaImporter()
        >>> clefSign = ci.domElementFromText('<clefSign clef="treble"/>')
        >>> ci.clefFromClefSign(clefSign)
        <music21.clef.TrebleClef>

        >>> clefSign = ci.domElementFromText('<clefSign clef="G2-"/>')
        >>> ci.clefFromClefSign(clefSign)
        <music21.clef.Treble8vbClef>

        >>> clefSign = ci.domElementFromText('<clefSign clef="F1+"/>')
        >>> clefObject = ci.clefFromClefSign(clefSign)
        >>> clefObject
        <music21.clef.FClef>
        >>> clefObject.sign
        'F'
        >>> clefObject.line
        1
        >>> clefObject.octaveShift
        1
        '''
        if 'clef' in clefSign._attrs:
            clefValue = clefSign._attrs['clef'].value
            if clefValue in self.clefMapping:
                return self.clefMapping[clefValue]()
            elif clefValue[0] == 'p':
                return clef.PercussionClef()
            elif len(clefValue) > 1:
                clefSignAndLine = clefValue[0:2]
                clefOctaveChange = 0
                if len(clefValue) > 2:
                    if clefValue[2] == '+':
                        clefOctaveChange = 1
                    elif clefValue[2] == '-':
                        clefOctaveChange = -1
                clefObj = clef.clefFromString(clefSignAndLine,
                                              clefOctaveChange)
                return clefObj

        return None
示例#2
0
 def test_clef_to_lily_17(self):
     bee_ell = clef.PercussionClef()
     expected = u"\\clef percussion\n"
     self.assertEqual(functions.clef_to_lily(bee_ell), expected)