Paul Triana
initial commit
6229e10
import sys, os
sys.path.append(os.path.dirname(os.getcwd()) + "/python_lib")
import midigpt
import json
import random
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--midi", type=str, required=True)
parser.add_argument("--ckpt", type=str, required=True)
parser.add_argument("--out", type=str, default='')
args = parser.parse_args()
ckpt = args.ckpt
midi_input = args.midi
if args.out != '':
midi_dest = args.out
else:
midi_dest = os.path.join(os.path.split(midi_input)[0], 'midigpt_gen.mid')
e = midigpt.ExpressiveEncoder()
midi_json_input = json.loads(e.midi_to_json(midi_input))
valid_status={'tracks':
[
{
'track_id': 0,
'temperature' : 0.5,
'instrument': 'acoustic_grand_piano',
'density': 10,
'track_type': 10,
'ignore': False,
'selected_bars': [False, False, True, False ],
'min_polyphony_q': 'POLYPHONY_ANY',
'max_polyphony_q': 'POLYPHONY_ANY',
'autoregressive': False,
'polyphony_hard_limit': 9
}
]
}
parami={
'tracks_per_step': 1,
'bars_per_step': 1,
'model_dim': 4,
'percentage': 100,
'batch_size': 1,
'temperature': 1.0,
'max_steps': 200,
'polyphony_hard_limit': 6,
'shuffle': True,
'verbose': True,
'ckpt': ckpt,
'sampling_seed': -1,
'mask_top_k': 0
}
piece = json.dumps(midi_json_input)
status = json.dumps(valid_status)
param = json.dumps(parami)
callbacks = midigpt.CallbackManager()
max_attempts = 3
midi_str = midigpt.sample_multi_step(piece, status, param, max_attempts, callbacks)
midi_str=midi_str[0]
midi_json = json.loads(midi_str)
e = midigpt.ExpressiveEncoder()
e.json_to_midi(midi_str, midi_dest)