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
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)