示例#1
0
    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)
示例#2
0
    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}
        ])
示例#3
0
]

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},