예제 #1
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#'))
예제 #2
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)
예제 #3
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])
예제 #4
0
 def test_set_behaviour(self):
     a = PCGroup.from_names('C5 E G C4 C6')
예제 #5
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])
예제 #6
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])
예제 #7
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)]