def testClearMeasure(self): self.measure.addNote(NotePosition(noteTime=0, drumIndex=0), "x") self.measure.addNote(NotePosition(noteTime=1, drumIndex=1), "o") self.assertEqual(self.measure.numNotes(), 2) self.assertFalse(self.measure.isEmpty()) self.measure.clear() self.assert_(self.measure.isEmpty())
def testStaffs(self): score = Score() settings = ASCIISettings() settings.omitEmpty = False score.drumKit = DrumKit.DrumKit() score.drumKit.addDrum(Drum.Drum("HiHat", "Hh", "x")) score.drumKit.addDrum(Drum.Drum("Crash", "Cr", "x")) counter = MeasureCount.counterMaker(4, 16) score.insertMeasureByIndex(16, counter=counter) score.insertMeasureByIndex(16, counter=counter) score.insertMeasureByIndex(16, counter=counter) score.addNote(NotePosition(0, 0, 0, 0), "x") score.addNote(NotePosition(0, 1, 0, 0), "y") score.addNote(NotePosition(0, 2, 0, 0), "z") score.formatScore(40) output = self.getOutput(score, settings) self.assertEqual(output, [ 'Tabbed with DrumBurp, a drum tab editor from www.whatang.org', '', 'Title : ', 'Artist : ', 'BPM : 120', 'Tabbed by : ', 'Date : ' + self.exportDate, '', 'Cr - Crash', 'Hh - HiHat', '', 'Cr|----------------|----------------|', 'Hh|x---------------|y---------------|', ' 1e+a2e+a3e+a4e+a 1e+a2e+a3e+a4e+a ', '', 'Cr|----------------|', 'Hh|z---------------|', ' 1e+a2e+a3e+a4e+a ', '', 'Tabbed with DrumBurp, a drum tab editor from www.whatang.org' ])
def testDeleteMeasure_BadIndex(self): self.staff.addMeasure(Measure(1)) self.staff.addMeasure(Measure(2)) self.assertRaises(BadTimeError, self.staff.deleteMeasure, NotePosition(measureIndex=-1)) self.assertRaises(BadTimeError, self.staff.deleteMeasure, NotePosition(measureIndex=2))
def testClearMeasureCallback(self): self.measure.addNote(NotePosition(noteTime=0, drumIndex=0), "x") self.measure.addNote(NotePosition(noteTime=1, drumIndex=1), "o") self.assertEqual(len(self.calls), 2) self.measure.clear() self.assertEqual(len(self.calls), 3) self.assertEqual(self.calls[2], (None, None))
def testInsertMeasure_BadIndex(self): self.staff.addMeasure(Measure(1)) self.staff.addMeasure(Measure(2)) m = Measure(3) self.assertRaises(BadTimeError, self.staff.insertMeasure, NotePosition(measureIndex=-1), m) self.assertRaises(BadTimeError, self.staff.insertMeasure, NotePosition(measureIndex=3), m)
def testRepr(self): self.assertEqual(repr(NotePosition()), "NotePosition(None, None, None, None)") self.assertEqual(repr(NotePosition(0)), "NotePosition(0, None, None, None)") self.assertEqual(repr(NotePosition(0, 0)), "NotePosition(0, 0, None, None)") self.assertEqual(repr(NotePosition(0, 0, 0, 0)), "NotePosition(0, 0, 0, 0)")
def testDeleteNoteCallBack(self): self.measure.deleteNote(NotePosition(noteTime=0, drumIndex=0)) self.assertEqual(len(self.calls), 0) self.measure.addNote(NotePosition(noteTime=0, drumIndex=0), "x") self.assertEqual(len(self.calls), 1) self.assertEqual(self.calls[0], (0, 0)) self.measure.deleteNote(NotePosition(noteTime=0, drumIndex=0)) self.assertEqual(len(self.calls), 2) self.assertEqual(self.calls[1], (0, 0))
def testCopyPaste(self): self.measure.addNote(NotePosition(noteTime=0, drumIndex=0), "x") self.measure.addNote(NotePosition(noteTime=1, drumIndex=1), "o") measure2 = Measure(8) copied = self.measure.copyMeasure() measure2.pasteMeasure(copied) self.assertEqual(len(measure2), 16) self.assertEqual(measure2.numNotes(), 2) self.assertEqual(measure2.getNote(NotePosition(None, None, 0, 0)), "x") self.assertEqual(measure2.getNote(NotePosition(None, None, 1, 1)), "o")
def testInsertMeasureCallBack(self): np0 = NotePosition(measureIndex=0, noteTime=0, drumIndex=0) np1 = NotePosition(measureIndex=1, noteTime=0, drumIndex=0) self.staff.addNote(np0, "x") self.staff.insertMeasure(np0, Measure(8)) self.staff.addNote(np0, "x") self.staff.deleteNote(np1) self.assertEqual(len(self.calls), 3) self.assertEqual(self.calls[0], (0, 0, 0)) self.assertEqual(self.calls[1], (0, 0, 0)) self.assertEqual(self.calls[2], (1, 0, 0))
def insertMeasureByPosition(self, width, position = None, counter = None): if position is None: if self.numStaffs() == 0: self._addStaff() position = NotePosition(self.numStaffs() - 1) staff = self.getStaffByIndex(self.numStaffs() - 1) position.measureIndex = staff.numMeasures() self._checkStaffIndex(position.staffIndex) newMeasure = Measure(width) newMeasure.counter = counter staff = self.getStaffByIndex(position.staffIndex) staff.insertMeasure(position, newMeasure) return newMeasure
def testDeleteNote_BadTime(self): self.assertRaises( BadTimeError, self.staff.deleteNote, NotePosition(measureIndex=-1, noteTime=0, drumIndex=0)) self.assertRaises( BadTimeError, self.staff.deleteNote, NotePosition(measureIndex=20, noteTime=0, drumIndex=0)) self.assertRaises( BadTimeError, self.staff.deleteNote, NotePosition(measureIndex=0, noteTime=-1, drumIndex=0)) self.assertRaises( BadTimeError, self.staff.deleteNote, NotePosition(measureIndex=0, noteTime=20, drumIndex=0))
def testgetItemAtPosition_BadTime(self): self.assertRaises( BadTimeError, self.staff.getItemAtPosition, NotePosition(measureIndex=-1, noteTime=0, drumIndex=0)) self.assertRaises( BadTimeError, self.staff.getItemAtPosition, NotePosition(measureIndex=20, noteTime=0, drumIndex=0)) self.assertRaises( BadTimeError, self.staff.getItemAtPosition, NotePosition(measureIndex=0, noteTime=-1, drumIndex=0)) self.assertRaises( BadTimeError, self.staff.getItemAtPosition, NotePosition(measureIndex=0, noteTime=20, drumIndex=0))
def testDeleteMeasureCallBack(self): self.staff.addMeasure(Measure(16)) self.staff.addMeasure(Measure(16)) np = NotePosition(measureIndex=1, noteTime=0, drumIndex=0) self.staff.addNote(np, "x") self.staff.deleteMeasure(NotePosition(measureIndex=0)) self.staff.deleteNote( NotePosition(measureIndex=0, noteTime=0, drumIndex=0)) self.staff.addNote(np, "x") self.assertEqual(len(self.calls), 3) self.assertEqual(self.calls[0], (1, 0, 0)) self.assertEqual(self.calls[1], (0, 0, 0)) self.assertEqual(self.calls[2], (1, 0, 0))
def testLineIsVisible(self): self.measure.addNote(NotePosition(noteTime=0, drumIndex=0), "a") self.measure.addNote(NotePosition(noteTime=2, drumIndex=2), "a") self.measure.addNote(NotePosition(noteTime=3, drumIndex=7), "a") self.assert_(self.measure.lineIsVisible(0)) self.assert_(self.measure.lineIsVisible(2)) self.assert_(self.measure.lineIsVisible(7)) self.assertFalse(self.measure.lineIsVisible(1)) self.assertFalse(self.measure.lineIsVisible(3)) self.assertFalse(self.measure.lineIsVisible(4)) self.assertFalse(self.measure.lineIsVisible(5)) self.assertFalse(self.measure.lineIsVisible(6)) self.assertFalse(self.measure.lineIsVisible(8))
def testToggleNote_BadTime(self): self.assertRaises( BadTimeError, self.staff.toggleNote, NotePosition(measureIndex=-1, noteTime=0, drumIndex=0), "x") self.assertRaises( BadTimeError, self.staff.toggleNote, NotePosition(measureIndex=20, noteTime=0, drumIndex=0), "x") self.assertRaises( BadTimeError, self.staff.toggleNote, NotePosition(measureIndex=0, noteTime=-1, drumIndex=0), "x") self.assertRaises( BadTimeError, self.staff.toggleNote, NotePosition(measureIndex=0, noteTime=20, drumIndex=0), "x")
def testLineIsVisible(self): self.staff.addNote( NotePosition(measureIndex=0, noteTime=0, drumIndex=0), "x") self.staff.addNote( NotePosition(measureIndex=1, noteTime=0, drumIndex=2), "x") self.staff.addNote( NotePosition(measureIndex=2, noteTime=0, drumIndex=4), "x") self.assertTrue(self.staff.lineIsVisible(0)) self.assertFalse(self.staff.lineIsVisible(1)) self.assertTrue(self.staff.lineIsVisible(2)) self.assertFalse(self.staff.lineIsVisible(3)) self.assertTrue(self.staff.lineIsVisible(4)) self.assertFalse(self.staff.lineIsVisible(5))
def insertMeasureByPosition(self, width, position=None, counter=None): if position is None: if self.numStaffs() == 0: self._addStaff() position = NotePosition(self.numStaffs() - 1) staff = self.getStaffByIndex(self.numStaffs() - 1) position.measureIndex = staff.numMeasures() self._checkStaffIndex(position.staffIndex) newMeasure = Measure(width) newMeasure.counter = counter staff = self.getStaffByIndex(position.staffIndex) staff.insertMeasure(position, newMeasure) return newMeasure
def setPotentialRepeatNotes(self, notes, head): newMeasures = [(np.staffIndex, np.measureIndex) for np in notes] notesByMeasures = dict((x, list(y)) for x, y in itertools.groupby( notes, lambda np: (np.staffIndex, np.measureIndex))) for measure in self._potentials: if measure not in notesByMeasures: qmeasure = self.getQMeasure( NotePosition(measure[0], measure[1])) qmeasure.setPotentials() for measure in newMeasures: qmeasure = self.getQMeasure(NotePosition(measure[0], measure[1])) notes = notesByMeasures[measure] qmeasure.setPotentials(notes, head) self._potentials = newMeasures
def __init__(self, qScore, onOff, elementName, text): super(SetVisibilityCommand, self).__init__(qScore, NotePosition(), "change " + text + " visibility") self._name = elementName + "Visible" self._new = onOff
def trailingEmptyMeasures(self): emptyMeasures = [] np = NotePosition(staffIndex=self.numStaffs() - 1) staff = self.getStaffByIndex(np.staffIndex) np.measureIndex = staff.numMeasures() - 1 measure = staff[np.measureIndex] while ((np.staffIndex > 0 or np.measureIndex > 0) and measure.isEmpty()): # IGNORE:no-member emptyMeasures.append(np.makeMeasurePosition()) if np.measureIndex == 0: np.staffIndex -= 1 staff = self.getStaffByIndex(np.staffIndex) np.measureIndex = staff.numMeasures() np.measureIndex -= 1 measure = staff[np.measureIndex] return emptyMeasures
def _exportStaff(self, staff, staffIndex): kit = self.score.drumKit kitSize = len(kit) indices = range(0, kitSize) indices.reverse() position = NotePosition(staffIndex = staffIndex) staffString = [] bpmString = self._getBpmChanges(staff, position) if bpmString: staffString.append(bpmString) repeatString = self._getRepeatString(staff, position) if repeatString: staffString.append(repeatString) stickAbove = self._getSticking(staff, True, position) if stickAbove: staffString.append(stickAbove) for drumIndex in indices: drum = kit[drumIndex] lineString, lineOk = self._getDrumLine(staff, drum, position, drumIndex) if lineOk or drum.locked or not self.settings.omitEmpty: staffString.append(lineString) if self.settings.printCounts: countString = self._getCountLine(staff, position) staffString.append(countString) stickBelow = self._getSticking(staff, False, position) if stickBelow: staffString.append(stickBelow) return staffString
def testInitAllByName(self): np = NotePosition(staffIndex=1, measureIndex=2, noteTime=3, drumIndex=4) self.assertEqual(np.staffIndex, 1) self.assertEqual(np.measureIndex, 2) self.assertEqual(np.noteTime, 3) self.assertEqual(np.drumIndex, 4)
def repeatCount(self, value): if value != self._info.repeatCount: if self.isRepeatEnd(): self._info.repeatCount = max(value, 2) else: self._info.repeatCount = 1 self._runCallBack(NotePosition())
def testToggleNote(self): np = NotePosition(measureIndex=0, noteTime=0, drumIndex=0) self.staff.toggleNote(np, "o") measure = self.staff[np.measureIndex] self.assertEqual(measure.getNote(np), "o") self.staff.toggleNote(np, "o") self.assertEqual(measure.getNote(np), EMPTY_NOTE)
def trailingEmptyMeasures(self): emptyMeasures = [] np = NotePosition(staffIndex = self.numStaffs() - 1) staff = self.getStaffByIndex(np.staffIndex) np.measureIndex = staff.numMeasures() - 1 measure = staff[np.measureIndex] while ((np.staffIndex > 0 or np.measureIndex > 0) and measure.isEmpty()): # IGNORE:no-member emptyMeasures.append(np.makeMeasurePosition()) if np.measureIndex == 0: np.staffIndex -= 1 staff = self.getStaffByIndex(np.staffIndex) np.measureIndex = staff.numMeasures() np.measureIndex -= 1 measure = staff[np.measureIndex] return emptyMeasures
def setUp(self): self.staff = Staff() self.staff.addMeasure(Measure(1)) self.staff.addMeasure(Measure(2)) self.staff.addMeasure(Measure(3)) self.staff.addMeasure(Measure(4)) self.np = NotePosition(measureIndex=2)
def __init__(self, qScore, newSize, fontType): super(SetFontSizeCommand, self).__init__(qScore, NotePosition(), "set " + fontType + " font size") self._fontName = fontType + "FontSize" self._newSize = newSize self._oldSize = getattr(self._qScore.displayProperties, self._fontName)
def testIterNotes(self): for i in range(0, 4): self.measure.addNote(NotePosition(noteTime=4 * i, drumIndex=i), str(i)) for i, (np, head) in enumerate(self.measure): self.assertEqual(head, str(i)) self.assertEqual(np.noteTime, 4 * i) self.assertEqual(np.drumIndex, i)
def _deleteStaffByIndex(self, index): self._checkStaffIndex(index) staff = self._staffs[index] staff.clearCallBack() if staff.isSectionEnd(): if index == 0 or self.getStaffByIndex(index - 1).isSectionEnd(): position = NotePosition(staffIndex=index) sectionIndex = self.positionToSectionIndex(position) self._deleteSectionTitle(sectionIndex) else: prevStaff = self.getStaffByIndex(index - 1) position = NotePosition(staffIndex=index - 1, measureIndex=prevStaff.numMeasures() - 1) prevStaff.setSectionEnd(position, True) self._staffs.pop(index) for offset, nextStaff in enumerate(self._staffs[index:]): self._setStaffCallBack(nextStaff, index + offset)
def __init__(self, qScore, font, fontType): super(SetFontCommand, self).__init__(qScore, NotePosition(), "set " + fontType + " font") self._newFont = font self._fontName = fontType + "Font" self._oldFont = getattr(self._qScore.displayProperties, self._fontName)
def testToggleNote(self): np = NotePosition(noteTime=0, drumIndex=0) self.measure.toggleNote(np, "o") self.assertEqual(self.measure.getNote(np), "o") self.assertEqual(self.measure.numNotes(), 1) self.measure.toggleNote(np, "o") self.assertEqual(self.measure.numNotes(), 0) self.assertEqual(self.measure.getNote(np), EMPTY_NOTE)
def testEmptyMeasure(self): self.assertEqual(len(self.measure), 16) self.assertEqual(self.measure.numNotes(), 0) self.assertEqual( self.measure.getNote(NotePosition(noteTime=0, drumIndex=0)), EMPTY_NOTE) self.assertFalse(self.measure.isSectionEnd()) self.assertFalse(self.measure.isRepeatEnd()) self.assertFalse(self.measure.isRepeatStart())