Ejemplo n.º 1
0
    def testToNoteSequence(self):
        converter = data.DrumsConverter(
            pitch_classes=data.REDUCED_DRUM_PITCH_CLASSES,
            slice_bars=None,
            gap_bars=None,
            steps_per_quarter=1,
            roll_input=True,
            roll_output=True,
            max_tensors_per_notesequence=None)

        _, output_tensors = converter.to_tensors(self.sequence)
        sequences = converter.to_notesequences(output_tensors)

        self.assertEqual(1, len(sequences))
        expected_sequence = music_pb2.NoteSequence(ticks_per_quarter=220)
        expected_sequence.tempos.add(qpm=120)
        testing_lib.add_track_to_sequence(expected_sequence,
                                          0, [(36, 80, 0, 0.5),
                                              (42, 80, 0.5, 1.0),
                                              (36, 80, 0.5, 1.0),
                                              (38, 80, 2.0, 2.5),
                                              (36, 80, 4.5, 5.0),
                                              (38, 80, 6.5, 7.0),
                                              (48, 80, 8.0, 8.5),
                                              (49, 80, 8.0, 8.5),
                                              (51, 80, 9.5, 10.0),
                                              (38, 80, 16.5, 17.0),
                                              (48, 80, 18.0, 18.5),
                                              (49, 80, 18.0, 18.5),
                                              (51, 80, 19.5, 20.0)],
                                          is_drum=True)
        for n in expected_sequence.notes:
            n.instrument = 9
        self.assertProtoEquals(expected_sequence, sequences[0])
Ejemplo n.º 2
0
  def testIsTraining(self):
    converter = data.DrumsConverter(
        steps_per_quarter=1, slice_bars=1, max_tensors_per_notesequence=2)
    self.is_training = True
    self.assertEqual(2, len(converter.to_tensors(self.sequence)[0]))

    converter.max_tensors_per_notesequence = None
    self.assertEqual(5, len(converter.to_tensors(self.sequence)[0]))
Ejemplo n.º 3
0
  def testIsTraining(self):
    converter = data.DrumsConverter(
        steps_per_quarter=1, slice_bars=1, max_tensors_per_notesequence=2)
    converter.set_mode('train')
    self.assertEqual(2, len(converter.to_tensors(self.sequence).inputs))

    converter.max_tensors_per_notesequence = None
    self.assertEqual(5, len(converter.to_tensors(self.sequence).inputs))
Ejemplo n.º 4
0
  def testMaxOutputsPerNoteSequence(self):
    converter = data.DrumsConverter(
        steps_per_quarter=1, slice_bars=1, max_tensors_per_notesequence=2)
    self.assertEqual(2, len(converter.to_tensors(self.sequence)[0]))

    converter.max_tensors_per_notesequence = 3
    self.assertEqual(3, len(converter.to_tensors(self.sequence)[0]))

    converter.max_tensors_per_notesequence = 100
    self.assertEqual(5, len(converter.to_tensors(self.sequence)[0]))
Ejemplo n.º 5
0
    def testToNoteSequence(self):
        converter = data.DrumsConverter(steps_per_quarter=1,
                                        slice_bars=2,
                                        max_tensors_per_notesequence=1)
        tensors = converter.to_tensors(filter_instrument(self.sequence, 1))
        sequences = converter.to_notesequences(tensors.outputs)

        self.assertEqual(1, len(sequences))
        expected_sequence = music_pb2.NoteSequence(ticks_per_quarter=220)
        expected_sequence.tempos.add(qpm=120)
        testing_lib.add_track_to_sequence(expected_sequence,
                                          9, [(38, 80, 0.5, 1.0),
                                              (48, 80, 2.0, 2.5),
                                              (49, 80, 2.0, 2.5),
                                              (51, 80, 3.5, 4.0)],
                                          is_drum=True)
        self.assertProtoEquals(expected_sequence, sequences[0])
Ejemplo n.º 6
0
  def testSliced(self):
    expected_sliced_events = [
        ([0], [0, 2], [], [],
         [1], [], [], []),
        ([], [0], [], [],
         [], [1], [], []),
        ([], [1], [], [],
         [5, 7], [], [], [8]),
    ]
    expected_silent_array = np.array([
        [0, 0, 1, 1, 0, 1, 1, 1],
        [1, 0, 1, 1, 1, 0, 1, 1],
        [1, 0, 1, 1, 0, 1, 1, 0],
    ])
    expected_output_tensors = np.zeros(
        (len(expected_sliced_events), 8, len(data.REDUCED_DRUM_PITCH_CLASSES)),
        np.bool)
    for i, events in enumerate(expected_sliced_events):
      for j, e in enumerate(events):
        expected_output_tensors[i, j, e] = 1

    converter = data.DrumsConverter(
        pitch_classes=data.REDUCED_DRUM_PITCH_CLASSES,
        slice_bars=2,
        steps_per_quarter=1,
        roll_input=True,
        roll_output=True,
        max_tensors_per_notesequence=None)

    self.assertEqual(10, converter.input_depth)
    self.assertEqual(9, converter.output_depth)

    input_tensors, output_tensors, _ = converter.to_tensors(self.sequence)

    self.assertArraySetsEqual(
        np.append(
            expected_output_tensors,
            np.expand_dims(expected_silent_array, axis=2),
            axis=2),
        input_tensors)
    self.assertArraySetsEqual(expected_output_tensors, output_tensors)
Ejemplo n.º 7
0
        lstm_models.get_default_hparams(),
        HParams(
            batch_size=512,
            max_seq_len=32,  # 2 bars w/ 16 steps per bar
            z_size=256,
            enc_rnn_size=[512],
            dec_rnn_size=[256, 256],
            free_bits=48,
            max_beta=0.2,
            sampling_schedule='inverse_sigmoid',
            sampling_rate=1000,
        )),
    note_sequence_augmenter=None,
    data_converter=data.DrumsConverter(
        max_bars=100,  # Truncate long drum sequences before slicing.
        slice_bars=2,
        steps_per_quarter=4,
        roll_input=True),
    train_examples_path=None,
    eval_examples_path=None,
)

CONFIG_MAP['cat-drums_2bar_big'] = Config(
    model=MusicVAE(lstm_models.BidirectionalLstmEncoder(),
                   lstm_models.CategoricalLstmDecoder()),
    hparams=merge_hparams(
        lstm_models.get_default_hparams(),
        HParams(
            batch_size=512,
            max_seq_len=32,  # 2 bars w/ 16 steps per bar
            z_size=512,