def test_relative(self): s = r"\staff\relative d'{ d f }" score = parse_to_score_object(s) self.assertEqual(score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note.new_from_string("d'4")) self.assertEqual(score.voice11.m_tdict[Rat(1, 4)]['elem'][0], Note.new_from_string("f'4"))
def test_tie_2notes(self): voice = self.score.voice11 n1 = Note.new_from_string("c'4") n2 = Note.new_from_string("c'8") voice.append(n1) voice.append(n2) voice.tie([n1, n2])
def test_relative(self): s = r"\staff\relative d'{ d f }" score = parse_to_score_object(s) self.assertEquals(score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note.new_from_string("d'4")) self.assertEquals(score.voice11.m_tdict[Rat(1, 4)]['elem'][0], Note.new_from_string("f'4"))
def test_no_chords_in_rhythm_staff(self): self.score.add_staff(RhythmStaff) self.score.voice21.append(Note.new_from_string("cis4")) self.assertRaises( Voice.NoChordsInRhythmStaffException, self.score.voice21.append, [Note.new_from_string("gis4"), Note.new_from_string("fis4")])
def test_is_bar_full(self): self.assertTrue(self.score.voice11.is_bar_full()) self.score.voice11.append(Note.new_from_string("c2")) self.assertFalse(self.score.voice11.is_bar_full()) self.score.voice11.append(Note.new_from_string("c4")) self.assertFalse(self.score.voice11.is_bar_full()) self.score.voice11.append(Note.new_from_string("c4")) self.assertTrue(self.score.voice11.is_bar_full())
def test_stem_down(self): self.score.voice11.append(Note.new_from_string("c'8")) self.score.voice11.append(Note.new_from_string("c'8"), const.DOWN) self.assertEqual( self.score.voice11.m_tdict[Rat(0, 1)]['elem'].m_stemdir, const.BOTH) self.assertEqual( self.score.voice11.m_tdict[Rat(1, 8)]['elem'].m_stemdir, const.DOWN)
def test_beam(self): voice = self.score.voice11 n1 = Note.new_from_string("c'8") n2 = Note.new_from_string("d'8") voice.append(n1) voice.append(n2) voice.beam([n1, n2]) self.score.staff1.add_voice() n3 = Note.new_from_string("d'8") n4 = Note.new_from_string("d'8") self.assertRaises(Voice.NoteDontBelongHere, voice.beam, [n3, n4])
def test_is_last(self): voice = self.score.voice11 voice.append(Note.new_from_string("c2")) voice.append(Note.new_from_string("d2")) voice.append(Note.new_from_string("f1")) voice.append(Note.new_from_string("g4")) self.assertTrue(voice.is_last(Rat(1, 2))) self.assertFalse(voice.is_last(Rat(0, 1))) self.assertTrue(voice.is_last(Rat(1, 2))) self.assertTrue(voice.is_last(Rat(1, 1))) self.assertFalse(voice.is_last(Rat(2, 1)))
def test_add_partial_bar(self): self.score.add_partial_bar(Duration.new_from_string("4"), TimeSignature(4, 4)) self.score.add_bar(None) self.assertEqual(self.score.m_bars[0].m_timepos, Rat(0, 1)) self.assertEqual(self.score.m_bars[0].end(), Rat(1, 4)) self.assertEqual(self.score.m_bars[1].m_timepos, Rat(1, 4)) self.assertEqual(self.score.get_bar_at(Rat(0, 1)), self.score.m_bars[0]) self.assertEqual(self.score.get_bar_at(Rat(1, 4)), self.score.m_bars[1]) self.score.voice11.append(Note.new_from_string("c4")) self.score.voice11.append(Note.new_from_string("c1")) self.score.voice11.append(Note.new_from_string("c1"))
def test_midigen_tie(self): n1 = Note.new_from_string("c4") n2 = Note.new_from_string("c4") n3 = Note.new_from_string("c4") n4 = Note.new_from_string("d4") self.score.voice11.append(n1) self.score.voice11.append(n2) self.score.voice11.append(n3) self.score.voice11.append(n4) self.score.voice11.tie([n1, n2, n3]) t = mpd.score_to_tracks(self.score) self.assertEqual(t[0].str_repr(), "n48 d3/4 o48 n50 d1/4 o50")
def test_transpose(self): s = r"\staff\transpose d'{ c d }" score = parse_to_score_object(s) self.assertEqual(score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note.new_from_string("d4")) self.assertEqual(score.voice11.m_tdict[Rat(1, 4)]['elem'][0], Note.new_from_string("e4")) s = r"\staff\transpose d''{ c d }" score = parse_to_score_object(s) self.assertEqual(score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note.new_from_string("d'4")) self.assertEqual(score.voice11.m_tdict[Rat(1, 4)]['elem'][0], Note.new_from_string("e'4"))
def test_transpose(self): s = r"\staff\transpose d'{ c d }" score = parse_to_score_object(s) self.assertEquals(score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note.new_from_string("d4")) self.assertEquals(score.voice11.m_tdict[Rat(1, 4)]['elem'][0], Note.new_from_string("e4")) s = r"\staff\transpose d''{ c d }" score = parse_to_score_object(s) self.assertEquals(score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note.new_from_string("d'4")) self.assertEquals(score.voice11.m_tdict[Rat(1, 4)]['elem'][0], Note.new_from_string("e'4"))
def test_repack_bar_3(self): """ One note is changed from 1/4 to 1/1 length. Then we call bar.repack and a BarFullException is raised. """ self.score.voice11.append(Note.new_from_string("c4")) self.score.voice11.append(Note.new_from_string("d4")) self.score.voice11.append(Note.new_from_string("e4")) self.assertEqual(sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2)]) self.score.voice11.m_tdict[Rat(1, 4)]['elem'][0] = Note.new_from_string("g1") self.assertEqual(sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2)]) self.assertRaises(Voice.BarFullException, self.bp.repack)
def test_transpose_relative(self): s = r"\staff\transpose d'\relative c'{ c d }" score = parse_to_score_object(s) self.assertEquals(score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note.new_from_string("d'4")) self.assertEquals(score.voice11.m_tdict[Rat(1, 4)]['elem'][0], Note.new_from_string("e'4")) s = r"\staff\transpose d''\relative c'{ c d e}" score = parse_to_score_object(s) self.assertEquals(score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note.new_from_string("d''4")) self.assertEquals(score.voice11.m_tdict[Rat(1, 4)]['elem'][0], Note.new_from_string("e''4")) self.assertEquals(score.voice11.m_tdict[Rat(1, 2)]['elem'][0], Note.new_from_string("fis''4"))
def test_transpose_relative(self): s = r"\staff\transpose d'\relative c'{ c d }" score = parse_to_score_object(s) self.assertEqual(score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note.new_from_string("d'4")) self.assertEqual(score.voice11.m_tdict[Rat(1, 4)]['elem'][0], Note.new_from_string("e'4")) s = r"\staff\transpose d''\relative c'{ c d e}" score = parse_to_score_object(s) self.assertEqual(score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note.new_from_string("d''4")) self.assertEqual(score.voice11.m_tdict[Rat(1, 4)]['elem'][0], Note.new_from_string("e''4")) self.assertEqual(score.voice11.m_tdict[Rat(1, 2)]['elem'][0], Note.new_from_string("fis''4"))
def test_repack_bar_1(self): """ We delete one note, and sees that the bar is packed correctly. """ self.score.voice11.append(Note.new_from_string("c4")) self.score.voice11.append(Note.new_from_string("d4")) self.score.voice11.append(Note.new_from_string("e4")) self.score.voice11.append(Note.new_from_string("d4")) self.assertEqual(sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2), Rat(3, 4)]) del self.score.voice11.m_tdict[Rat(1, 2)] self.assertEqual(sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(3, 4)]) self.bp.repack() self.assertEqual(sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2)])
def test_repack_bar_3(self): """ One note is changed from 1/4 to 1/1 length. Then we call bar.repack and a BarFullException is raised. """ self.score.voice11.append(Note.new_from_string("c4")) self.score.voice11.append(Note.new_from_string("d4")) self.score.voice11.append(Note.new_from_string("e4")) self.assertEqual( sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2)]) self.score.voice11.m_tdict[Rat( 1, 4)]['elem'][0] = Note.new_from_string("g1") self.assertEqual( sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2)]) self.assertRaises(Voice.BarFullException, self.bp.repack)
def test_repack_bar_2(self): """ One note is changed from 1/4 to 1/2 length. Then we call bar.repack(voice11) and we see that the last note is moved further out in the bar. This works ok since the bar was not full. There where not Skips at the end of the bar. """ self.score.voice11.append(Note.new_from_string("c4")) self.score.voice11.append(Note.new_from_string("d4")) self.score.voice11.append(Note.new_from_string("e4")) self.assertEqual(sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2)]) self.score.voice11.m_tdict[Rat(1, 4)]['elem'][0] = Note.new_from_string("g2") self.assertEqual(sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2)]) self.bp.repack() self.assertEqual(sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(3, 4)])
def test_set_clef(self): self.score.voice11.set_clef("violin") self.assertEqual(self.score.staff1.m_tdict[Rat(0, 1)]['clef'].m_name, "violin") self.score.voice11.set_clef("bass") # The last clef set is remembered self.assertEqual(self.score.staff1.m_tdict[Rat(0, 1)]['clef'].m_name, "bass") self.score.voice11.append(Note.new_from_string("c'8")) self.score.voice11.set_clef("treble") self.assertEqual(self.score.staff1.m_tdict[Rat(0, 1)]['clef'].m_name, "bass") self.assertEqual(self.score.staff1.m_tdict[Rat(1, 8)]['clef'].m_name, "treble")
def test_repack_bar_1(self): """ We delete one note, and sees that the bar is packed correctly. """ self.score.voice11.append(Note.new_from_string("c4")) self.score.voice11.append(Note.new_from_string("d4")) self.score.voice11.append(Note.new_from_string("e4")) self.score.voice11.append(Note.new_from_string("d4")) self.assertEqual( sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2), Rat(3, 4)]) del self.score.voice11.m_tdict[Rat(1, 2)] self.assertEqual( sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(3, 4)]) self.bp.repack() self.assertEqual( sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2)])
def test_repack_bar_2(self): """ One note is changed from 1/4 to 1/2 length. Then we call bar.repack(voice11) and we see that the last note is moved further out in the bar. This works ok since the bar was not full. There where not Skips at the end of the bar. """ self.score.voice11.append(Note.new_from_string("c4")) self.score.voice11.append(Note.new_from_string("d4")) self.score.voice11.append(Note.new_from_string("e4")) self.assertEqual( sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2)]) self.score.voice11.m_tdict[Rat( 1, 4)]['elem'][0] = Note.new_from_string("g2") self.assertEqual( sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(1, 2)]) self.bp.repack() self.assertEqual( sorted(self.score.voice11.m_tdict.keys()), [Rat(0, 1), Rat(1, 4), Rat(3, 4)])
def test_get_timeposes_of(self): self.score.add_bar(TimeSignature(4, 4)) self.score.add_bar(TimeSignature(4, 4)) self.assertEqual( self.score.voice11.get_timeposes_of(self.score.m_bars[0]), []) self.assertEqual( self.score.voice11.get_timeposes_of(self.score.m_bars[1]), []) self.score.voice11.append(Note.new_from_string("c4")) self.assertEqual( self.score.voice11.get_timeposes_of(self.score.m_bars[0]), [Rat(0, 1)]) self.assertEqual( self.score.voice11.get_timeposes_of(self.score.m_bars[1]), [])
def setUp(self): self.score = Score() self.staff = self.score.add_staff() v = self.score.voice11 v.append(Note.new_from_string("c'4")) v.append(Note.new_from_string("d'2")) v.append(Note.new_from_string("c'4")) v.append(Note.new_from_string("c'4")) v.append(Note.new_from_string("c'4")) v.append(Note.new_from_string("c'4")) v.append(Note.new_from_string("c'4"))
def test_add_note(self): self.score.voice11.append(Note.new_from_string("c'4")) self.score.voice11.append(Note.new_from_string("c'2")) self.score.voice11.append(Note.new_from_string("c'8")) self.assertIsInstance(self.score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note) self.assertIsInstance(self.score.voice11.m_tdict[Rat(0, 1)]['elem'][0].w_parent(), Stem) self.assertIsInstance(self.score.voice11.m_tdict[Rat(0, 1)]['elem'][0].w_parent().w_parent(), Voice) # bar full: self.assertRaises(Voice.BarFullException, self.score.voice11.append, Note.new_from_string("c'4")) self.score.voice11.append(Note.new_from_string("c'8")) self.score.voice11.append([ Note.new_from_string("c'1"), Note.new_from_string("e'1"), Note.new_from_string("g'1"), ])
def test_add_note(self): self.score.voice11.append(Note.new_from_string("c'4")) self.score.voice11.append(Note.new_from_string("c'2")) self.score.voice11.append(Note.new_from_string("c'8")) self.assertIsInstance(self.score.voice11.m_tdict[Rat(0, 1)]['elem'][0], Note) self.assertIsInstance( self.score.voice11.m_tdict[Rat(0, 1)]['elem'][0].w_parent(), Stem) self.assertIsInstance( self.score.voice11.m_tdict[Rat( 0, 1)]['elem'][0].w_parent().w_parent(), Voice) # bar full: self.assertRaises(Voice.BarFullException, self.score.voice11.append, Note.new_from_string("c'4")) self.score.voice11.append(Note.new_from_string("c'8")) self.score.voice11.append([ Note.new_from_string("c'1"), Note.new_from_string("e'1"), Note.new_from_string("g'1"), ])
def test_stem_down(self): self.score.voice11.append(Note.new_from_string("c'8")) self.score.voice11.append(Note.new_from_string("c'8"), const.DOWN) self.assertEqual(self.score.voice11.m_tdict[Rat(0, 1)]['elem'].m_stemdir, const.BOTH) self.assertEqual(self.score.voice11.m_tdict[Rat(1, 8)]['elem'].m_stemdir, const.DOWN)
def test_midigen_rest(self): self.score.voice11.append(Note.new_from_string("c4")) self.score.voice11.append(Rest(Duration.new_from_string("4"))) self.score.voice11.append(Note.new_from_string("c4")) t = mpd.score_to_tracks(self.score) self.assertEqual(t[0].str_repr(), "n48 d1/4 o48 d1/4 n48 d1/4 o48")
def test_new_from_string(self): Note.new_from_string("c'4.") self.assertRaises(InvalidNotenameException, Note.new_from_string, "x")
def test_no_chords_in_rhythm_staff(self): self.score.add_staff(RhythmStaff) self.score.voice21.append(Note.new_from_string("cis4")) self.assertRaises(Voice.NoChordsInRhythmStaffException, self.score.voice21.append, [Note.new_from_string("gis4"), Note.new_from_string("fis4")])