Fake Offline

def fake_offline():
model = load_from_checkpoint(model_path)

# Convert midi file to tensor
# midi file -> [1, num_logical_ticks, max_polyphony*2]
x_mel, x_acc = conter_midi_to_tensor(midi_path)

# fake inference round
for i in range(n_round):
# get right prompts
prompt_length_i = prompt_length + i*gen_interval_ticks
x_mel_pre = get_proper_mel_prompt_length(prompt_length_i)
x_acc_pre = get_proper_acc_prompt_length(prompt_length_i)
x = merge_mel_acc(x_mel_pre, x_acc_pre)

# generate output
output = model.forward(x, gen_seq_len)

# seperate the output back to x_mel_pre and x_acc_pre
x_mel_pre, x_acc_pre = seperate_output(output)

# if it's first round, replace some acc with empty frame
if (i = 0):
set_corresponding_frame_empty(x_acc_pre)
else:
tem_start = prompt_length + i*gen_interval_ticks + latency
tem_end = prompt_length + i*gen_interval_ticks + latency + gen_interval_ticks

# 拼接 tem_

decode_output(output)