-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
116 lines (100 loc) · 3.03 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
from preprocess import Transpose, PrepareData
from model import Model
from predictor import Predictor
from midiManager import MidiMananger
import numpy as np
import glob
# train mode 1=single file, 2=all dataset
# transpose mode 3
def mode(mode):
# train 1 file
window_size = 20
if mode == "1":
# file = './transposeDataSet/bach/C_bach_850_format0.mid'
file = './transposeDataSet/bach/C_bach_847_format0.mid'
# file = './transposeDataSet/chopin/C_chpn_op10_e12_format0.mid'
# file = './transposeDataSet/chopin/C_chpn-p10_format0.mid'
# file = './new_song.mid'
print("Preparing Data.....")
prepare = PrepareData()
prepare.buildCorpus(file)
trainX, trainY = prepare.buildXY(window_size)
# print(trainX)
prepare.save_data()
m = Model()
m.createModel(trainX ,trainY)
m.compileModel()
m.trainModel(trainX, trainY)
m.save_model()
m.testModel(trainX, trainY)
# model = "./model/model.json"
# weights = "./model/model.h5"
# m.load_model(model, weights)
# train all files
elif mode == "2":
print("Preparing Data.....")
prepare = PrepareData()
for file in glob.iglob('./transposeDataSet/bach/*.mid'):
prepare.buildCorpus(file)
trainX, trainY = prepare.buildXY(window_size)
prepare.save_data()
m = Model()
m.createModel(trainX ,trainY)
m.compileModel()
m.trainModel(trainX, trainY)
m.save_model()
m.testModel(trainX, trainY)
# model = "./model/model.json"
# weights = "./model/model.h5"
# m.load_model(model, weights)
# test model
elif mode == "3":
# file = './transposeDataSet/bach/C_bach_850_format0.mid'
# file = './transposeDataSet/bach/C_bach_847_format0.mid'
# file = './transposeDataSet/chopin/C_chpn_op10_e12_format0.mid'
# file = './transposeDataSet/chopin/C_chpn-p10_format0.mid'
# file = "./SONG.mid"
for file in glob.iglob('./transposeDataSet/bach/*.mid'):
prepare = PrepareData()
prepare.buildCorpus(file)
testX , testY = prepare.buildXY(window_size)
m = Model()
model = "./model/model.json"
weights = "./model/model.h5"
m.load_model(model,weights)
m.compileModel()
m.testModel(testX ,testY)
# transpose midi
elif mode == "4":
for file in glob.iglob('./DataSet/*/*.mid'):
t = Transpose(file)
t.transpose()
# predict
elif mode == "5":
prepare = PrepareData()
dataX = prepare.load_dataX()
# print(len(dataX))
dist_time1, dist_time2 = prepare.load_dist_time()
# print(dist_time)
m = Model()
model = "./model/model.json"
weights = "./model/model.h5"
m.load_model(model,weights)
p = Predictor(m.get_model())
p.predict_on_corpus(dataX, window_size)
type_and_note = p.buildNotetype()
song = p.buildSong(type_and_note, dist_time1, dist_time2)
midi = MidiMananger()
midi.creatMidiSong(song)
print("Created Song!! name: Song.midi")
else:
print("your selecting mode is not found!!!")
if __name__ == '__main__':
print("please select mode...")
print("training mode: 1=single file , 2=all dataset")
print("3 = test model")
print("4 = transpose mode")
print("5 = load_model and create song")
m = input()
# mode = "2"
mode(m)