Ejemplo n.º 1
0
 def default_event_label(self):
     return self._encode_event(
         (PerformanceEvent(PerformanceEvent.TIME_SHIFT,
                           0), PerformanceEvent(PerformanceEvent.NOTE_ON,
                                                60),
          PerformanceEvent(PerformanceEvent.VELOCITY,
                           1), PerformanceEvent(PerformanceEvent.DURATION,
                                                1)))
Ejemplo n.º 2
0
    def class_index_to_event(self, class_indices, events):
        time_shift = (class_indices[0] * self._shift_steps_per_segment +
                      class_indices[1])
        pitch = class_indices[2] + self._min_pitch
        velocity = class_indices[3] + 1
        duration = (class_indices[4] * self._duration_steps_per_segment +
                    class_indices[5]) + 1

        return (PerformanceEvent(PerformanceEvent.TIME_SHIFT, time_shift),
                PerformanceEvent(PerformanceEvent.NOTE_ON, pitch),
                PerformanceEvent(PerformanceEvent.VELOCITY, velocity),
                PerformanceEvent(PerformanceEvent.DURATION, duration))
Ejemplo n.º 3
0
    def to_note_seq(self):
        """Converts `self.text_sequence` to a NoteSequence.
        
        Returns:
            The resulting NoteSequence.
        """    
        events = self.text_sequence.split()
        
        performance = mm.MetricPerformance(
          steps_per_quarter=4)
        
        for event in events:
            if re.match(r'^ON[0-9]+$', event):
                event_type = 1         
            elif re.match(r'^OFF[0-9]+$', event):
                event_type = 2
            elif re.match(r'^SHIFT[0-9]+$', event):
                event_type = 3
            else:
                continue
                
            event_value = int(re.search(r'[0-9]+', event).group(0))
            
            event = PerformanceEvent(event_type, event_value)
            performance.append(event)

        note_seq = performance.to_sequence()
        
        return note_seq
Ejemplo n.º 4
0
    def decode_event(self, index):
        offset = 0
        for event_type, min_value, max_value in self._event_ranges:
            if offset <= index <= offset + max_value - min_value:
                return PerformanceEvent(event_type=event_type,
                                        event_value=min_value + index - offset)
            offset += max_value - min_value + 1

        raise ValueError('Unknown event index: %s' % index)
Ejemplo n.º 5
0
    def testEventToNumSteps(self):
        self.assertEqual(
            0,
            self.enc.event_to_num_steps(
                PerformanceEvent(event_type=PerformanceEvent.NOTE_ON,
                                 event_value=60)))
        self.assertEqual(
            0,
            self.enc.event_to_num_steps(
                PerformanceEvent(event_type=PerformanceEvent.NOTE_OFF,
                                 event_value=67)))
        self.assertEqual(
            0,
            self.enc.event_to_num_steps(
                PerformanceEvent(event_type=PerformanceEvent.VELOCITY,
                                 event_value=10)))

        self.assertEqual(
            1,
            self.enc.event_to_num_steps(
                PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                                 event_value=1)))
        self.assertEqual(
            45,
            self.enc.event_to_num_steps(
                PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                                 event_value=45)))
        self.assertEqual(
            100,
            self.enc.event_to_num_steps(
                PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                                 event_value=100)))
Ejemplo n.º 6
0
 def default_event(self):
     return PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                             event_value=self._max_shift_steps)
Ejemplo n.º 7
0
    def testEncodeDecode(self):
        expected_pairs = [
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_ON,
                              event_value=60), 60),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_ON,
                              event_value=0), 0),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_ON,
                              event_value=127), 127),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_OFF,
                              event_value=72), 200),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_OFF,
                              event_value=0), 128),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_OFF,
                              event_value=127), 255),
            (PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                              event_value=10), 265),
            (PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                              event_value=1), 256),
            (PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                              event_value=100), 355),
            (PerformanceEvent(event_type=PerformanceEvent.VELOCITY,
                              event_value=5), 360),
            (PerformanceEvent(event_type=PerformanceEvent.VELOCITY,
                              event_value=1), 356),
            (PerformanceEvent(event_type=PerformanceEvent.VELOCITY,
                              event_value=16), 371)
        ]

        for expected_event, expected_index in expected_pairs:
            index = self.enc.encode_event(expected_event)
            self.assertEqual(expected_index, index)
            event = self.enc.decode_event(expected_index)
            self.assertEqual(expected_event, event)
Ejemplo n.º 8
0
    def testEventsToInput(self):
        num_shift_bins = self._max_shift_steps
        num_velocity_bins = self._num_velocity_bins
        slow_base = 2.0 * pi / 144.0
        fast_base = 2.0 * pi / 12.0
        shift_base = 2.0 * pi / num_shift_bins
        velocity_base = 2.0 * pi / num_velocity_bins

        expected_pairs = [
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_ON,
                              event_value=60), [
                                  1.0,
                                  cos(60.0 * slow_base),
                                  sin(60.0 * slow_base),
                                  cos(60.0 * fast_base),
                                  sin(60.0 * fast_base), 0.0, 0.0, 0.0, 0.0,
                                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
                              ]),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_ON,
                              event_value=0), [
                                  1.0,
                                  cos(0.0 * slow_base),
                                  sin(0.0 * slow_base),
                                  cos(0.0 * fast_base),
                                  sin(0.0 * fast_base), 0.0, 0.0, 0.0, 0.0,
                                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
                              ]),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_ON,
                              event_value=127), [
                                  1.0,
                                  cos(127.0 * slow_base),
                                  sin(127.0 * slow_base),
                                  cos(127.0 * fast_base),
                                  sin(127.0 * fast_base), 0.0, 0.0, 0.0, 0.0,
                                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
                              ]),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_OFF,
                              event_value=72), [
                                  0.0, 0.0, 0.0, 0.0, 0.0, 1.0,
                                  cos(72.0 * slow_base),
                                  sin(72.0 * slow_base),
                                  cos(72.0 * fast_base),
                                  sin(72.0 * fast_base), 0.0, 0.0, 0.0, 0.0,
                                  0.0, 0.0
                              ]),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_OFF,
                              event_value=0), [
                                  0.0, 0.0, 0.0, 0.0, 0.0, 1.0,
                                  cos(0.0 * slow_base),
                                  sin(0.0 * slow_base),
                                  cos(0.0 * fast_base),
                                  sin(0.0 * fast_base), 0.0, 0.0, 0.0, 0.0,
                                  0.0, 0.0
                              ]),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_OFF,
                              event_value=127), [
                                  0.0, 0.0, 0.0, 0.0, 0.0, 1.0,
                                  cos(127.0 * slow_base),
                                  sin(127.0 * slow_base),
                                  cos(127.0 * fast_base),
                                  sin(127.0 * fast_base), 0.0, 0.0, 0.0, 0.0,
                                  0.0, 0.0
                              ]),
            (PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                              event_value=10), [
                                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                                  0.0, 1.0,
                                  cos(9.0 * shift_base),
                                  sin(9.0 * shift_base), 0.0, 0.0, 0.0
                              ]),
            (PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                              event_value=1), [
                                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                                  0.0, 1.0,
                                  cos(0.0 * shift_base),
                                  sin(0.0 * shift_base), 0.0, 0.0, 0.0
                              ]),
            (PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                              event_value=100), [
                                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                                  0.0, 1.0,
                                  cos(99.0 * shift_base),
                                  sin(99.0 * shift_base), 0.0, 0.0, 0.0
                              ]),
            (PerformanceEvent(event_type=PerformanceEvent.VELOCITY,
                              event_value=5), [
                                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                                  0.0, 0.0, 0.0, 0.0, 1.0,
                                  cos(4.0 * velocity_base),
                                  sin(4.0 * velocity_base)
                              ]),
            (PerformanceEvent(event_type=PerformanceEvent.VELOCITY,
                              event_value=1), [
                                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                                  0.0, 0.0, 0.0, 0.0, 1.0,
                                  cos(0.0 * velocity_base),
                                  sin(0.0 * velocity_base)
                              ]),
            (PerformanceEvent(event_type=PerformanceEvent.VELOCITY,
                              event_value=16), [
                                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                                  0.0, 0.0, 0.0, 0.0, 1.0,
                                  cos(15.0 * velocity_base),
                                  sin(15.0 * velocity_base)
                              ]),
        ]

        events = []
        position = 0
        for event, expected_encoded_modulo_event in expected_pairs:
            events += [event]
            actual_encoded_modulo_event = self.enc.events_to_input(
                events, position)
            position += 1
            for i in range(self._expected_input_size):
                self.assertAlmostEqual(expected_encoded_modulo_event[i],
                                       actual_encoded_modulo_event[i])
Ejemplo n.º 9
0
    def testEncodeModuloEvent(self):
        expected_pairs = [
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_ON,
                              event_value=60), (0, PerformanceEvent.NOTE_ON,
                                                60)),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_ON,
                              event_value=0), (0, PerformanceEvent.NOTE_ON,
                                               0)),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_ON,
                              event_value=127), (0, PerformanceEvent.NOTE_ON,
                                                 127)),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_OFF,
                              event_value=72), (5, PerformanceEvent.NOTE_OFF,
                                                72)),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_OFF,
                              event_value=0), (5, PerformanceEvent.NOTE_OFF,
                                               0)),
            (PerformanceEvent(event_type=PerformanceEvent.NOTE_OFF,
                              event_value=127), (5, PerformanceEvent.NOTE_OFF,
                                                 127)),
            (PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                              event_value=10),
             (10, PerformanceEvent.TIME_SHIFT, 9)),
            (PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                              event_value=1), (10, PerformanceEvent.TIME_SHIFT,
                                               0)),
            (PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                              event_value=100),
             (10, PerformanceEvent.TIME_SHIFT, 99)),
            (PerformanceEvent(event_type=PerformanceEvent.VELOCITY,
                              event_value=5), (13, PerformanceEvent.VELOCITY,
                                               4)),
            (PerformanceEvent(event_type=PerformanceEvent.VELOCITY,
                              event_value=1), (13, PerformanceEvent.VELOCITY,
                                               0)),
            (PerformanceEvent(event_type=PerformanceEvent.VELOCITY,
                              event_value=16), (13, PerformanceEvent.VELOCITY,
                                                15)),
        ]

        # expected_encoded_modulo_event is of the following form:
        # (offset, encoder_width, event_type, value, bins)
        for event, expected_encoded_modulo_event in expected_pairs:
            actual_encoded_modulo_event = self.enc.encode_modulo_event(event)
            self.assertEqual(actual_encoded_modulo_event,
                             expected_encoded_modulo_event)
 def default_event(self):
     return PerformanceEvent(event_type=PerformanceEvent.TIME_SHIFT,
                             event_value=performance_lib.MAX_SHIFT_STEPS)