def test_invert_is_reversable(self): """ Ensure reversing twice generates the same sequence """ from sebastian.core.transforms import invert s1 = self.make_sequence() inverted = s1 | invert(50) | invert(50) self.assertEqual(inverted._elements, s1._elements)
def test_invert_flips_a_sequence(self): """ Ensure inverting a sequence modifies the pitch """ from sebastian.core.transforms import invert s1 = self.make_sequence() inverted = s1 | invert(50) from sebastian.core import OFFSET_64, DURATION_64, MIDI_PITCH self.assertEqual(inverted._elements, [ {MIDI_PITCH: 50, OFFSET_64: 16, DURATION_64: 17}, {MIDI_PITCH: 47, OFFSET_64: 19, DURATION_64: 20} ])
] assert s1 | reverse() | reverse() == s1 # stretch assert (s1 | stretch(2))._elements == [ {MIDI_PITCH: 50, OFFSET_64: 32, DURATION_64: 32}, {MIDI_PITCH: 52, OFFSET_64: 64, DURATION_64: 32} ] assert s1 | stretch(2) | stretch(0.5) == s1 # invert assert (s1 | invert(50))._elements == [ {DURATION_64: 16, OFFSET_64: 16, MIDI_PITCH: 50}, {DURATION_64: 16, OFFSET_64: 32, MIDI_PITCH: 48} ] assert s1 | invert(100) | invert(100) == s1 s4 = HSeq([Point(degree=degree) for degree in [1, 2, 3, 2, 1]]) # add s5 = s4 | add({"octave": 4, DURATION_64: 8}) assert list(s5) == [ {'degree': 1, DURATION_64: 8, 'octave': 4},