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])
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]))
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))
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]))
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])
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)
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,