示例#1
0
    def test_polyphonic_context_is_balanced(self):

        context = midi2lily.PolyphonicContext()

        # voice 1
        melody_expression = midi2lily.CompoundExpression()

        melody_expression.add(
            midi2lily.Note(midi2lily.Pitch(72),
                           midi2lily.Duration(Fraction(4, 4))))

        context.add(melody_expression)

        # voice 2
        rythm_expression = midi2lily.CompoundExpression()

        rythm_expression.add(
            midi2lily.Note(midi2lily.Pitch(64),
                           midi2lily.Duration(Fraction(2, 4))))
        rythm_expression.add(
            midi2lily.Note(midi2lily.Pitch(67),
                           midi2lily.Duration(Fraction(2, 4))))

        context.add(rythm_expression)

        self.assertTrue(context.is_balanced())
示例#2
0
    def test_close_polyphonic_context(self):

        context = midi2lily.PolyphonicContext()

        # voice 1
        melody_expression = midi2lily.CompoundExpression()

        melody_expression.add(
            midi2lily.Note(midi2lily.Pitch(72),
                           midi2lily.Duration(Fraction(4, 4))))

        context.add(melody_expression)

        # voice 2 (unbalanced)
        rythm_expression = midi2lily.CompoundExpression()

        rythm_expression.add(
            midi2lily.Note(midi2lily.Pitch(64),
                           midi2lily.Duration(Fraction(2, 4))))

        context.add(rythm_expression)

        # before closing the context is unbalanced
        self.assertTrue(not context.is_balanced())

        context.close()

        # after closing, the context is balanced by adding a rest
        self.assertTrue(context.is_balanced())
        self.assertEqual(str(context), "<<\n{\nc''1 }\n\\\\\n{\ne'2 r2 }\n>>")
示例#3
0
    def test_polyphonic_context(self):
        context = midi2lily.PolyphonicContext()

        # voice 1
        melody_expression = midi2lily.CompoundExpression()

        melody_expression.add(
            midi2lily.Note(midi2lily.Pitch(72),
                           midi2lily.Duration.get_duration(2, 1, 4)))

        context.add(melody_expression)

        # voice 2
        rythm_expression = midi2lily.CompoundExpression()

        rythm_expression.add(
            midi2lily.Note(midi2lily.Pitch(64),
                           midi2lily.Duration.get_duration(1, 1, 4)))
        rythm_expression.add(
            midi2lily.Note(midi2lily.Pitch(67),
                           midi2lily.Duration.get_duration(1, 1, 4)))

        context.add(rythm_expression)

        self.assertEqual(str(context), "<<\n{\nc''2 }\n\\\\\n{\ne'4 g'4 }\n>>")
示例#4
0
    def test_empty_pitches(self):
        expression = midi2lily.CompoundExpression()

        self.assertEqual(len(expression.pitches()), 0)
        self.assertEqual(expression.lowest_pitch(), 108)
        self.assertEqual(expression.highest_pitch(), 0)
        self.assertEqual(expression.get_clef(), None)
示例#5
0
    def test_two_measures(self):
        expression = midi2lily.CompoundExpression()
        expression.add(
            midi2lily.Note(midi2lily.Pitch(79),
                           midi2lily.Duration.get_duration(4, 4, 4)))
        expression.add(
            midi2lily.Note(midi2lily.Pitch(79),
                           midi2lily.Duration.get_duration(4, 4, 4)))
        expression.add(
            midi2lily.Note(midi2lily.Pitch(79),
                           midi2lily.Duration.get_duration(4, 4, 4)))
        expression.add(
            midi2lily.Note(midi2lily.Pitch(79),
                           midi2lily.Duration.get_duration(4, 4, 4)))
        expression.add(
            midi2lily.Note(midi2lily.Pitch(79),
                           midi2lily.Duration.get_duration(4, 2, 4)))
        expression.add(
            midi2lily.Note(midi2lily.Pitch(79),
                           midi2lily.Duration.get_duration(4, 2, 4)))
        self.assertEqual(str(expression), "{\ng''4 g''4 g''4 g''4 g''2 g''2 }")
        new_expression = expression.split_at(1)

        self.assertEqual(str(expression), "{\ng''4 g''4 g''4 g''4 }")
        self.assertEqual(str(new_expression), "{\ng''2 g''2 }")
示例#6
0
    def test_empty_expression(self):
        expression = midi2lily.CompoundExpression()
        self.assertEqual(len(expression._children), 0)

        new_expression = expression.split_at(0)

        self.assertEqual(len(expression._children), 0)
        self.assertEqual(new_expression, None)
示例#7
0
    def test_expression_with_notes(self):
        expression = midi2lily.CompoundExpression()

        note = midi2lily.Note(midi2lily.Pitch(60),
                              midi2lily.Duration.get_duration(1, 1, 4))
        expression.add(note)

        self.assertEqual(str(expression), "{\nc'4 }")
示例#8
0
    def testOneNoteExpression(self):
        expression = midi2lily.CompoundExpression()

        note = midi2lily.Note(midi2lily.Pitch(60),
                              midi2lily.Duration.get_duration(1, 1, 4))
        expression.add(note)

        self.assertEqual(expression.length(), Fraction(1, 4))
示例#9
0
    def testMultipleMeasuresExpression(self):
        expression = midi2lily.CompoundExpression()

        for _ in range(12):
            note = midi2lily.Note(midi2lily.Pitch(60),
                                  midi2lily.Duration.get_duration(1, 1, 4))
            expression.add(note)

        self.assertEqual(expression.length(), Fraction(12, 4))
示例#10
0
    def test_single_pitch(self):
        expression = midi2lily.CompoundExpression()
        expression.add(
            midi2lily.Note(midi2lily.Pitch(60),
                           midi2lily.Duration.get_duration(1, 1, 4)))

        self.assertEqual(len(expression.pitches()), 1)
        self.assertEqual(expression.lowest_pitch(), 60)
        self.assertEqual(expression.highest_pitch(), 60)
        self.assertEqual(expression.get_clef(), None)
示例#11
0
    def test_non_divisable_expression2(self):
        expression = midi2lily.CompoundExpression()
        expression.add(
            midi2lily.Note(midi2lily.Pitch(79),
                           midi2lily.Duration.get_duration(4, 4, 4)))
        self.assertEqual(len(expression._children), 1)

        new_expression = expression.split_at(0)

        self.assertEqual(len(expression._children), 0)
        self.assertEqual(str(new_expression), "{\ng''4 }")
示例#12
0
    def test_bass_clef(self):
        expression = midi2lily.CompoundExpression()
        expression.add(
            midi2lily.Note(midi2lily.Pitch(54),
                           midi2lily.Duration.get_duration(1, 1, 4)))
        expression.add(
            midi2lily.Note(midi2lily.Pitch(60),
                           midi2lily.Duration.get_duration(1, 1, 4)))

        self.assertEqual(len(expression.pitches()), 2)
        self.assertEqual(expression.lowest_pitch(), 54)
        self.assertEqual(expression.highest_pitch(), 60)
        self.assertEqual(expression.get_clef(), 'bass')
示例#13
0
    def test_divisable_expression(self):
        expression = midi2lily.CompoundExpression()
        expression.add(
            midi2lily.Note(midi2lily.Pitch(79),
                           midi2lily.Duration.get_duration(1, 1, 1)))
        expression.add(
            midi2lily.Note(midi2lily.Pitch(79),
                           midi2lily.Duration.get_duration(1, 1, 1)))
        self.assertEqual(str(expression), "{\ng''1 g''1 }")

        new_expression = expression.split_at(1)

        self.assertEqual(str(expression), "{\ng''1 }")
        self.assertEqual(str(new_expression), "{\ng''1 }")
示例#14
0
 def test_empty_expression(self):
     expression = midi2lily.CompoundExpression()
     self.assertEqual(str(expression), "{\n}")
示例#15
0
 def testEmptyExpression(self):
     expression = midi2lily.CompoundExpression()
     self.assertEqual(expression.length(), 0)
示例#16
0
 def test_file_with_empty_expression(self):
     file = midi2lily.File("1")
     file.add(midi2lily.CompoundExpression())
     self.assertEqual(str(file), "\\version \"1\"\n\n\\relative c\' {\n}")