Exemple #1
0
    def test_define_using_intervals(self):
        a = PCGroup.from_intervals('D', '1 2 b3 4 5 6 b7')
        self.assertEqual(a.pcs, [2, 4, 5, 7, 9, 11, 0])
        self.assertEqual(a.midis, [62, 64, 65, 67, 69, 71, 72])
        b = PCGroup.from_intervals('D6', '1 2 b3 4 5 6 b7')
        self.assertEqual(b.midis, [86, 88, 89, 91, 93, 95, 96])

        a = PCGroup.from_intervals('C', '1 3 5')
        print(str(a))
Exemple #2
0
 def test_nth_rotation(self):
     a = PCGroup.from_intervals('C', '1 2 3 4 5 6 7')
     b = a.nth_rotation(3)
     self.assertEqual(a.pcs, [0, 2, 4, 5, 7, 9, 11])
     self.assertEqual(b.pcs, [5, 7, 9, 11, 0, 2, 4])
     self.assertEqual(a.midis, [60, 62, 64, 65, 67, 69, 71])
     self.assertEqual(b.midis, [65, 67, 69, 71, 72, 74, 76])
Exemple #3
0
 def test_getitem(
         self
 ):  # demonstrating generation of continuous pitches using indexing
     a = PCGroup.from_intervals('C', '1 2 3 4 5 6 7')
     this_oct = a[0]
     higher_oct = a[7]
     lower_oct = a[-7]
     self.assertEqual(this_oct.oct, 0)
     self.assertEqual(higher_oct.oct, 1)
     self.assertEqual(lower_oct.oct, -1)
     with self.assertRaises(MidiNoteError):
         note = a[-36]
     with self.assertRaises(MidiNoteError):
         note = a[40]
Exemple #4
0
 def test_logical_and_operations(self):
     a = PCGroup.from_names('C E G B')
     b = PCGroup.from_names('D F G')
     aandb = a & b
     aorb = a | b
     axorb = a ^ b
     ainv = ~aorb
     self.assertEqual(aandb, PCGroup.from_names('G'))
     self.assertEqual(aorb, PCGroup.from_names('C D E F G B'))
     self.assertEqual(axorb, PCGroup.from_names('C D E F B'))
     self.assertEqual(ainv, PCGroup.from_names('C# D# F# G# A A#'))
Exemple #5
0
 def test_root_get_and_set(self):
     a = PCGroup.from_intervals('D', '1 2 b3 4 5 6 b7')
     self.assertEqual(a.root, 'D')
     a.root = PC('E')  # this is same as a transpose operation
     self.assertEqual(a.pcs, [4, 6, 7, 9, 11, 1, 2])
Exemple #6
0
 def test_define_from_midi_notevals(self):
     # Todo: test from list, numpy and MidiTable
     a = PCGroup.from_midi([60, 62, 64, 65, 67, 69, 71])
     b = PCGroup.from_names('C D E F G A B')
     self.assertEqual(a, b)
Exemple #7
0
 def test_define_using_notenames(self):
     a = PCGroup.from_names('C D E F# G A B')
     self.assertEqual(a.notes, [0, 2, 4, 6, 7, 9, 11])
Exemple #8
0
 def test_set_behaviour(self):
     a = PCGroup.from_names('C5 E G C4 C6')
Exemple #9
0
 def test_intervals(self):
     a = PCGroup.from_names('G A B C D E F#')
     self.assertEqual(a.intervals(), [0, 2, 4, 5, 7, 9, 11])
     # self.assertEqual(str(a), 'G A B C D E F#')
     self.assertEqual(a.intervals(PC('C#')), [6, 8, 10, 11, 1, 3, 5])
Exemple #10
0
 def test_get_by_slicing(self):
     a = PCGroup.from_names('C D E F')
     b = a[1:7]
     self.assertEqual(a.midis, [60, 62, 64, 65])
     self.assertEqual(b.midis, [62, 64, 65, 72, 74, 76])
Exemple #11
0
 def test_get_idx_by_pc(self):
     a = PCGroup.from_intervals('C', '1 2 3 4 5 6 7')
     idxs = range(-7, 14)
     [self.assertEqual(i, a.get_idx_by_pc(a[i])) for i in idxs]
     with self.assertRaises(PitchGroupError):
         a.get_idx_by_pc(PC('D#'))
Exemple #12
0
 def test_iteration(self):
     a = PCGroup.from_names('C E G')
     notes = [PC('C'), PC('E'), PC('G')]
     [self.assertEqual(note, target) for note, target in zip(a, notes)]