Beispiel #1
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))
Beispiel #2
0
 def testAddMeasure(self):
     self.staff.addMeasure(Measure(1))
     self.assertEqual(self.staff.numMeasures(), 1)
     self.assertEqual(len(self.staff), 1)
     self.staff.addMeasure(Measure(2))
     self.assertEqual(self.staff.numMeasures(), 2)
     self.assertEqual(len(self.staff), 3)
Beispiel #3
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)
Beispiel #4
0
 def testClearStaff(self):
     self.staff.addMeasure(Measure(16))
     self.staff.addMeasure(Measure(16))
     self.staff.addMeasure(Measure(16))
     self.staff.addMeasure(Measure(16))
     self.staff.clear()
     self.assertEqual(len(self.staff), 0)
     self.assertEqual(self.staff.numMeasures(), 0)
Beispiel #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)
Beispiel #6
0
 def testGridWidth(self):
     self.staff.addMeasure(Measure(16))
     self.staff.addMeasure(Measure(16))
     self.staff.addMeasure(Measure(16))
     self.assertEqual(self.staff.gridWidth(), 52)
     endMeasure = Measure(16)
     endMeasure.setSectionEnd(True)
     self.staff.addMeasure(endMeasure)
     self.assertEqual(self.staff.gridWidth(), 69)
Beispiel #7
0
 def testDeleteLastMeasure(self):
     self.staff.addMeasure(Measure(1))
     self.staff.addMeasure(Measure(2))
     self.staff.addMeasure(Measure(3))
     self.staff.addMeasure(Measure(4))
     self.assertEqual(self.staff.numMeasures(), 4)
     self.staff.deleteLastMeasure()
     self.assertEqual(self.staff.numMeasures(), 3)
     for index in range(1, 4):
         self.assertEqual(len(self.staff[index - 1]), index)
Beispiel #8
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))
Beispiel #9
0
 def testReadSectionEnd(self):
     data = """
     START_BAR 8
       COUNT_INFO_START
         REPEAT_BEATS 4
         BEAT_START
           COUNT |^+|
         BEAT_END
       COUNT_INFO_END
       BARLINE NORMAL_BAR,NO_BAR
       NOTE 0,1,o
       NOTE 0,7,x
       NOTE 1,1,o
       NOTE 1,7,x
       NOTE 2,3,o
       NOTE 2,7,x
       NOTE 3,7,x
       NOTE 4,1,o
       NOTE 4,7,x
       NOTE 5,1,o
       NOTE 5,7,x
       NOTE 6,8,x
       NOTE 6,3,o
       BARLINE NORMAL_BAR,NO_BAR,SECTION_END
     END_BAR
     """
     handle = StringIO(data)
     iterator = fileUtils.dbFileIterator(handle)
     measure = Measure()
     measure.read(iterator)
     self.assert_(measure.isSectionEnd())
Beispiel #10
0
 def testReadLineBreak(self):
     data = """
     START_BAR 15
       COUNT_INFO_START
         BEAT_START
           COUNT |^+a|
         BEAT_END
         BEAT_START
           COUNT |^+a|
         BEAT_END
         BEAT_START
           COUNT |^ea+ea|
         BEAT_END
         BEAT_START
           COUNT |^+a|
         BEAT_END
       COUNT_INFO_END
       BARLINE NORMAL_BAR,NO_BAR
       NOTE 10,1,o
       NOTE 11,1,o
       NOTE 12,1,O
       BARLINE NORMAL_BAR,LINE_BREAK,NO_BAR
     END_BAR
     """
     handle = StringIO(data)
     iterator = fileUtils.dbFileIterator(handle)
     measure = Measure()
     measure.read(iterator)
     self.assert_(measure.isLineBreak())
Beispiel #11
0
 def testReadAlterate(self):
     data = """
     START_BAR 8
       COUNT_INFO_START
         REPEAT_BEATS 4
         BEAT_START
           COUNT |^+|
         BEAT_END
       COUNT_INFO_END
       BARLINE NORMAL_BAR,NO_BAR
       NOTE 0,6,x
       NOTE 1,1,o
       NOTE 1,6,x
       NOTE 2,3,o
       NOTE 2,6,x
       NOTE 3,6,x
       NOTE 4,1,o
       NOTE 4,6,x
       NOTE 5,1,o
       NOTE 5,6,x
       NOTE 6,8,x
       NOTE 6,3,o
       BARLINE NORMAL_BAR,NO_BAR,SECTION_END,REPEAT_END
       REPEAT_COUNT 2
       ALTERNATE 2.
     END_BAR
     """
     handle = StringIO(data)
     iterator = fileUtils.dbFileIterator(handle)
     measure = Measure()
     measure.read(iterator)
     self.assert_(measure.isRepeatEnd())
     self.assertEqual(measure.alternateText, "2.")
Beispiel #12
0
 def testCount(self):
     count = self.measure.count()
     self.assertEqual(count, [
         "1", "e", "+", "a", "2", "e", "+", "a", "3", "e", "+", "a", "4",
         "e", "+", "a"
     ])
     measure = Measure(16)
     self.assertEqual(measure.count(), [" "] * 16)
Beispiel #13
0
    def setUp(self):
        self.measure = Measure(16)
        self.calls = []

        def myCallBack(position):
            self.calls.append((position.noteTime, position.drumIndex))

        self.measure.setCallBack(myCallBack)
Beispiel #14
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")
Beispiel #15
0
    def setUp(self):
        self.staff = Staff()
        self.staff.addMeasure(Measure(16))
        self.calls = []

        def myCallBack(position):
            self.calls.append(
                (position.measureIndex, position.noteTime, position.drumIndex))

        self.staff.setCallBack(myCallBack)
Beispiel #16
0
 def setUp(self):
     self.kit = DrumKitFactory.getNamedDefaultKit()
     self.lilykit = lilypond.LilyKit(self.kit)
     self.indenter = lilypond.LilyIndenter()
     self.output = StringIO.StringIO()
     self.indenter.setHandle(self.output)
     self.measure = Measure()
     counter = _REG.getCounterByName("Triplets")
     mc = MeasureCount()
     mc.addSimpleBeats(counter, 4)
     self.measure.setBeatCount(mc)
Beispiel #17
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))
Beispiel #18
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
Beispiel #19
0
 def testReadMeasure(self):
     data = """START_BAR 12
               COUNT_INFO_START
                 REPEAT_BEATS 4
                 BEAT_START
                   COUNT |^+|
                 BEAT_END
               COUNT_INFO_END
               BARLINE NORMAL_BAR,NO_BAR
               NOTE 0,1,o
               NOTE 0,2,o
               NOTE 1,2,o
               NOTE 2,2,o
               NOTE 2,3,o
               NOTE 3,2,o
               NOTE 3,3,o
               NOTE 4,1,o
               NOTE 4,2,o
               NOTE 5,2,o
               NOTE 6,2,o
               NOTE 6,3,o
               NOTE 7,2,o
               BARLINE NORMAL_BAR,NO_BAR
             END_BAR"""
     handle = StringIO(data)
     iterator = fileUtils.dbFileIterator(handle)
     measure = Measure()
     measure.read(iterator)
     self.assertEqual(len(measure), 8)
     self.assertEqual(measure.numNotes(), 13)
     self.assertEqual(measure.noteAt(0, 1), "o")
     self.assertEqual(measure.noteAt(0, 2), "o")
     self.assertEqual(measure.noteAt(1, 2), "o")
     self.assertEqual(measure.noteAt(2, 2), "o")
     self.assertEqual(measure.noteAt(2, 3), "o")
     self.assertEqual(measure.noteAt(3, 2), "o")
     self.assertEqual(measure.noteAt(3, 3), "o")
     self.assertEqual(measure.noteAt(4, 1), "o")
     self.assertEqual(measure.noteAt(4, 2), "o")
     self.assertEqual(measure.noteAt(5, 2), "o")
     self.assertEqual(measure.noteAt(6, 2), "o")
     self.assertEqual(measure.noteAt(6, 3), "o")
     self.assertEqual(measure.noteAt(7, 2), "o")
     self.assertFalse(measure.isRepeatStart())
     self.assertFalse(measure.isRepeatEnd())
     self.assertFalse(measure.isSectionEnd())
     self.assertFalse(measure.isLineBreak())
     self.assertEqual(measure.alternateText, None)
     self.assertEqual(measure.repeatCount, 1)
Beispiel #20
0
 def insertMeasureByIndex(self, width, index=None, counter=None, measure=None):
     if index is None:
         index = self.numMeasures()
     if self.numStaffs() == 0:
         self._addStaff()
         staff = self.getStaffByIndex(0)
     elif index == self.numMeasures():
         staff = self.getStaffByIndex(-1)
         index = staff.numMeasures()
     else:
         staff, index = self._staffContainingMeasure(index)
     if measure is None:
         newMeasure = Measure(width)
         newMeasure.counter = counter
     else:
         newMeasure = measure
     staff.insertMeasure(NotePosition(measureIndex=index),
                         newMeasure)
     return newMeasure
Beispiel #21
0
 def testReadRepeatBar(self):
     data = """START_BAR 8
                 COUNT_INFO_START
                   REPEAT_BEATS 4
                   BEAT_START
                     COUNT |^+|
                   BEAT_END
                 COUNT_INFO_END
                 BARLINE NORMAL_BAR,REPEAT_START,NO_BAR
                 BARLINE NORMAL_BAR,NO_BAR,REPEAT_END
                 REPEAT_COUNT 6
               END_BAR"""
     handle = StringIO(data)
     iterator = fileUtils.dbFileIterator(handle)
     measure = Measure()
     measure.read(iterator)
     self.assertEqual(measure.repeatCount, 6)
     self.assert_(measure.isRepeatStart())
     self.assert_(measure.isRepeatEnd())
Beispiel #22
0
 def testCopyPasteWithDecorations(self):
     self.measure.addNote(NotePosition(noteTime=0, drumIndex=0), "x")
     self.measure.addNote(NotePosition(noteTime=1, drumIndex=1), "o")
     self.measure.setRepeatEnd(True)
     self.measure.setRepeatStart(True)
     self.measure.setLineBreak(True)
     self.measure.setSectionEnd(True)
     measure2 = Measure(8)
     self.assertFalse(measure2.isRepeatEnd())
     self.assertFalse(measure2.isRepeatStart())
     self.assertFalse(measure2.isLineBreak())
     self.assertFalse(measure2.isSectionEnd())
     copied = self.measure.copyMeasure()
     measure2.pasteMeasure(copied, True)
     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")
     self.assertTrue(measure2.isRepeatEnd())
     self.assertTrue(measure2.isRepeatStart())
     self.assertTrue(measure2.isLineBreak())
     self.assertTrue(measure2.isSectionEnd())
Beispiel #23
0
 def testDeleteMeasure(self):
     self.staff.addMeasure(Measure(1))
     self.staff.addMeasure(Measure(2))
     self.staff.deleteMeasure(NotePosition(measureIndex=0))
     self.assertEqual(self.staff.numMeasures(), 1)
     self.assertEqual(len(self.staff), 2)
Beispiel #24
0
 def setUp(self):
     self.measure = Measure(16)
     counter = self.reg.getCounterByName("16ths")
     mc = MeasureCount()
     mc.addSimpleBeats(counter, 4)
     self.measure.setBeatCount(mc)
Beispiel #25
0
 def setUp(self):
     self.staff = Staff()
     self.staff.addMeasure(Measure(16))
     self.staff.addMeasure(Measure(16))
     self.staff.addMeasure(Measure(16))
     self.staff.addMeasure(Measure(16))
Beispiel #26
0
 def testIterateOverMeasures(self):
     for i in range(1, 16):
         self.staff.addMeasure(Measure(i))
     for i, measure in enumerate(self.staff):
         self.assertEqual(len(measure), i + 1)
Beispiel #27
0
 def testGetMeasureByIndex(self):
     for i in range(1, 16):
         self.staff.addMeasure(Measure(i))
     for i in range(1, 16):
         self.assertEqual(len(self.staff[i - 1]), i)
Beispiel #28
0
 def testInsertMeasureAtStart(self):
     self.staff.addMeasure(Measure(2))
     self.staff.insertMeasure(NotePosition(measureIndex=0), Measure(1))
     for i, measure in enumerate(self.staff):
         self.assertEqual(len(measure), i + 1)
Beispiel #29
0
 def testAddMeasureCallBack(self):
     np = NotePosition(measureIndex=1, noteTime=0, drumIndex=0)
     self.staff.addMeasure(Measure(16))
     self.staff.addNote(np, "x")
     self.assertEqual(len(self.calls), 1)
     self.assertEqual(self.calls[0], (1, 0, 0))