Ejemplo n.º 1
0
 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())
Ejemplo n.º 2
0
 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'
     ])
Ejemplo n.º 3
0
 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))
Ejemplo n.º 4
0
 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))
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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)")
Ejemplo n.º 7
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))
Ejemplo n.º 8
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")
Ejemplo n.º 9
0
 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))
Ejemplo n.º 10
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
Ejemplo n.º 11
0
 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))
Ejemplo n.º 12
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))
Ejemplo n.º 13
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))
Ejemplo n.º 14
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))
Ejemplo n.º 15
0
 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")
Ejemplo n.º 16
0
 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))
Ejemplo n.º 17
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
Ejemplo n.º 18
0
 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
Ejemplo n.º 19
0
 def __init__(self, qScore, onOff, elementName, text):
     super(SetVisibilityCommand, self).__init__(qScore,
                                                NotePosition(),
                                                "change " + text +
                                                " visibility")
     self._name = elementName + "Visible"
     self._new = onOff
Ejemplo n.º 20
0
 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
Ejemplo n.º 21
0
 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
Ejemplo n.º 22
0
 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)
Ejemplo n.º 23
0
 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())
Ejemplo n.º 24
0
 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)
Ejemplo n.º 25
0
 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
Ejemplo n.º 26
0
 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)
Ejemplo n.º 27
0
 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)
Ejemplo n.º 28
0
 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)
Ejemplo n.º 29
0
 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)
Ejemplo n.º 30
0
 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)
Ejemplo n.º 31
0
 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)
Ejemplo n.º 32
0
 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())