2019-05-30 11:23:34 +02:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
2019-05-28 12:40:26 +02:00
|
|
|
import numpy as np
|
2019-05-30 11:23:34 +02:00
|
|
|
import midi
|
2019-05-28 12:40:26 +02:00
|
|
|
import tensorflow as tf
|
|
|
|
from keras.layers import Input, Dense, Conv2D
|
|
|
|
from keras.models import Model
|
2019-05-30 11:23:34 +02:00
|
|
|
from tensorflow.keras import layers
|
|
|
|
from keras.layers import Input, Dense, Conv2D, Flatten, LSTM, Dropout, TimeDistributed, RepeatVector
|
|
|
|
from keras.models import Model, Sequential
|
|
|
|
import matplotlib.pyplot as plt
|
2019-05-28 12:40:26 +02:00
|
|
|
import settings
|
2019-05-30 11:23:34 +02:00
|
|
|
import pickle
|
|
|
|
import sys
|
|
|
|
|
|
|
|
trained_model_path = sys.argv[1]
|
|
|
|
output_path = sys.argv[2]
|
2019-05-30 12:36:59 +02:00
|
|
|
treshold = float(sys.argv[3])
|
2019-05-30 11:23:34 +02:00
|
|
|
|
|
|
|
#random seed
|
|
|
|
generate_seed = np.random.rand(12288).reshape(1,96,128)
|
|
|
|
|
|
|
|
# load and predict
|
|
|
|
model = pickle.load(open(trained_model_path, 'rb'))
|
2019-05-30 12:36:59 +02:00
|
|
|
generated_sample = model.predict(generate_seed)
|
|
|
|
generated_sample = generated_sample.reshape(96,128)
|
2019-05-30 11:23:34 +02:00
|
|
|
|
|
|
|
# binarize generated music
|
2019-05-30 12:36:59 +02:00
|
|
|
generated_sample = generated_sample > treshold * generated_sample.max()
|
2019-05-28 12:40:26 +02:00
|
|
|
|
2019-05-30 11:23:34 +02:00
|
|
|
#save to midi
|
|
|
|
midi.to_midi(generated_sample, output_path='{}.mid'.format(output_path) )
|
2019-05-28 12:40:26 +02:00
|
|
|
|
2019-05-30 11:23:34 +02:00
|
|
|
#save piano roll to png
|
|
|
|
plt.imshow(generated_sample, cmap = plt.get_cmap('gray'))
|
|
|
|
plt.savefig('{}.png'.format(output_path))
|