genereting 4 beats instead of 1; better plot; save drums to midi

This commit is contained in:
Cezary Pukownik 2019-05-30 23:13:03 +02:00
parent dac8add955
commit 8b00b20657

View File

@ -3,6 +3,7 @@
import numpy as np import numpy as np
import midi import midi
import tensorflow as tf import tensorflow as tf
import pypianoroll as roll
from keras.layers import Input, Dense, Conv2D from keras.layers import Input, Dense, Conv2D
from keras.models import Model from keras.models import Model
from tensorflow.keras import layers from tensorflow.keras import layers
@ -17,20 +18,22 @@ trained_model_path = sys.argv[1]
output_path = sys.argv[2] output_path = sys.argv[2]
treshold = float(sys.argv[3]) treshold = float(sys.argv[3])
#random seed
generate_seed = np.random.rand(12288).reshape(1,96,128)
# load and predict # load and predict
model = pickle.load(open(trained_model_path, 'rb')) model = pickle.load(open(trained_model_path, 'rb'))
generated_sample = model.predict(generate_seed)
generated_sample = generated_sample.reshape(96,128) music = np.empty((4,96,128))
for x in range(4):
generate_seed = np.random.randint(0, 127, 12288).reshape(1,96,128)
music[x] = model.predict(generate_seed).reshape(96,128)
generated_sample = music.reshape(4*96,128)
# binarize generated music # binarize generated music
generated_sample = generated_sample > treshold * generated_sample.max() generated_sample = generated_sample > treshold * generated_sample.max()
# generated_sample = np.clip(generated_sample,0,1) * 128
# save to midi # save to midi
midi.to_midi(generated_sample, output_path='{}.mid'.format(output_path) ) generated_midi = midi.to_midi(generated_sample, output_path='{}.mid'.format(output_path), is_drum=True, program=0, )
#save piano roll to png #save plot for preview
plt.imshow(generated_sample, cmap = plt.get_cmap('gray')) roll.plot(generated_midi, filename='{}.png'.format(output_path))
plt.savefig('{}.png'.format(output_path))