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)