Spaces:
Sleeping
Sleeping
Update app_onnx.py
Browse files- app_onnx.py +46 -11
app_onnx.py
CHANGED
|
@@ -494,17 +494,7 @@ if __name__ == "__main__":
|
|
| 494 |
load_javascript()
|
| 495 |
app = gr.Blocks(theme=gr.themes.Soft())
|
| 496 |
with app:
|
| 497 |
-
|
| 498 |
-
gr.Markdown("\n\n"
|
| 499 |
-
"Midi event transformer for symbolic music generation\n\n"
|
| 500 |
-
"Demo for [SkyTNT/midi-model](https://github.com/SkyTNT/midi-model)\n\n"
|
| 501 |
-
"[Open In Colab]"
|
| 502 |
-
"(https://colab.research.google.com/github/SkyTNT/midi-model/blob/main/demo.ipynb)"
|
| 503 |
-
" or [download windows app](https://github.com/SkyTNT/midi-model/releases)"
|
| 504 |
-
" for unlimited generation\n\n"
|
| 505 |
-
"**Update v1.3**: MIDITokenizerV2 and new MidiVisualizer\n\n"
|
| 506 |
-
"The current **best** model: generic pretrain model (tv2o-medium) by skytnt"
|
| 507 |
-
)
|
| 508 |
js_msg = gr.Textbox(elem_id="msg_receiver", visible=False)
|
| 509 |
js_msg.change(None, [js_msg], [], js="""
|
| 510 |
(msg_json) =>{
|
|
@@ -595,12 +585,23 @@ if __name__ == "__main__":
|
|
| 595 |
audio_outputs = []
|
| 596 |
with gr.Tabs(elem_id="output_tabs"):
|
| 597 |
for i in range(OUTPUT_BATCH_SIZE):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 598 |
with gr.TabItem(f"output {i + 1}") as tab1:
|
| 599 |
output_midi_visualizer = gr.HTML(elem_id=f"midi_visualizer_container_{i}")
|
| 600 |
output_audio = gr.Audio(label="output audio", format="mp3", elem_id=f"midi_audio_{i}")
|
| 601 |
output_midi = gr.File(label="output midi", file_types=[".mid"])
|
|
|
|
| 602 |
midi_outputs.append(output_midi)
|
| 603 |
audio_outputs.append(output_audio)
|
|
|
|
|
|
|
|
|
|
| 604 |
run_event = run_btn.click(run, [input_model, tab_select, output_midi_seq, output_continuation_state,
|
| 605 |
input_continuation_select, input_instruments, input_drum_kit, input_bpm,
|
| 606 |
input_time_sig, input_key_sig, input_midi, input_midi_events,
|
|
@@ -620,6 +621,40 @@ if __name__ == "__main__":
|
|
| 620 |
queue=False)
|
| 621 |
# stop_btn.click(None, [], [], cancels=run_event,
|
| 622 |
# queue=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 623 |
undo_btn.click(undo_continuation, [input_model, output_midi_seq, output_continuation_state],
|
| 624 |
[output_midi_seq, output_continuation_state, js_msg], queue=False)
|
| 625 |
app.queue().launch(server_port=opt.port, share=opt.share, inbrowser=True, ssr_mode=False)
|
|
|
|
| 494 |
load_javascript()
|
| 495 |
app = gr.Blocks(theme=gr.themes.Soft())
|
| 496 |
with app:
|
| 497 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 498 |
js_msg = gr.Textbox(elem_id="msg_receiver", visible=False)
|
| 499 |
js_msg.change(None, [js_msg], [], js="""
|
| 500 |
(msg_json) =>{
|
|
|
|
| 585 |
audio_outputs = []
|
| 586 |
with gr.Tabs(elem_id="output_tabs"):
|
| 587 |
for i in range(OUTPUT_BATCH_SIZE):
|
| 588 |
+
|
| 589 |
+
with gr.Row():
|
| 590 |
+
arpeggio_intro = gr.Button("🎵 Intro Arpeggio", variant="primary")
|
| 591 |
+
arpeggio_verse = gr.Button("🎸 Verse Arpeggio", variant="primary")
|
| 592 |
+
arpeggio_chorus = gr.Button("🎹 Chorus Arpeggio", variant="primary")
|
| 593 |
+
arpeggio_outro = gr.Button("🎷 Outro Arpeggio", variant="primary")
|
| 594 |
+
|
| 595 |
with gr.TabItem(f"output {i + 1}") as tab1:
|
| 596 |
output_midi_visualizer = gr.HTML(elem_id=f"midi_visualizer_container_{i}")
|
| 597 |
output_audio = gr.Audio(label="output audio", format="mp3", elem_id=f"midi_audio_{i}")
|
| 598 |
output_midi = gr.File(label="output midi", file_types=[".mid"])
|
| 599 |
+
|
| 600 |
midi_outputs.append(output_midi)
|
| 601 |
audio_outputs.append(output_audio)
|
| 602 |
+
|
| 603 |
+
|
| 604 |
+
|
| 605 |
run_event = run_btn.click(run, [input_model, tab_select, output_midi_seq, output_continuation_state,
|
| 606 |
input_continuation_select, input_instruments, input_drum_kit, input_bpm,
|
| 607 |
input_time_sig, input_key_sig, input_midi, input_midi_events,
|
|
|
|
| 621 |
queue=False)
|
| 622 |
# stop_btn.click(None, [], [], cancels=run_event,
|
| 623 |
# queue=False)
|
| 624 |
+
|
| 625 |
+
|
| 626 |
+
|
| 627 |
+
def add_intro_arpeggio(model_name, mid_seq):
|
| 628 |
+
tokenizer = models[model_name].tokenizer
|
| 629 |
+
sequence = ['C', 'D', 'Am', 'G']
|
| 630 |
+
pattern = [0, 1, 2, 1] # Root, Third, Fifth, Third
|
| 631 |
+
return add_arpeggio_sequence(tokenizer, mid_seq, sequence, pattern)
|
| 632 |
+
|
| 633 |
+
def add_verse_arpeggio(model_name, mid_seq):
|
| 634 |
+
tokenizer = models[model_name].tokenizer
|
| 635 |
+
sequence = ['D', 'C', 'Am', 'G']
|
| 636 |
+
pattern = [0, 2, 1, 2] # Root, Fifth, Third, Fifth
|
| 637 |
+
return add_arpeggio_sequence(tokenizer, mid_seq, sequence, pattern)
|
| 638 |
+
|
| 639 |
+
def add_chorus_arpeggio(model_name, mid_seq):
|
| 640 |
+
tokenizer = models[model_name].tokenizer
|
| 641 |
+
sequence = ['G', 'D', 'Am', 'C']
|
| 642 |
+
pattern = [0, 1, 2, 1, 0, 2] # Root, Third, Fifth, Third, Root, Fifth
|
| 643 |
+
return add_arpeggio_sequence(tokenizer, mid_seq, sequence, pattern)
|
| 644 |
+
|
| 645 |
+
def add_outro_arpeggio(model_name, mid_seq):
|
| 646 |
+
tokenizer = models[model_name].tokenizer
|
| 647 |
+
sequence = ['Am', 'G', 'D', 'C']
|
| 648 |
+
pattern = [2, 1, 0, 1] # Fifth, Third, Root, Third
|
| 649 |
+
return add_arpeggio_sequence(tokenizer, mid_seq, sequence, pattern)
|
| 650 |
+
|
| 651 |
+
arpeggio_intro.click(add_intro_arpeggio, [input_model, output_midi_seq], output_midi_seq)
|
| 652 |
+
arpeggio_verse.click(add_verse_arpeggio, [input_model, output_midi_seq], output_midi_seq)
|
| 653 |
+
arpeggio_chorus.click(add_chorus_arpeggio, [input_model, output_midi_seq], output_midi_seq)
|
| 654 |
+
arpeggio_outro.click(add_outro_arpeggio, [input_model, output_midi_seq], output_midi_seq)
|
| 655 |
+
|
| 656 |
+
|
| 657 |
+
|
| 658 |
undo_btn.click(undo_continuation, [input_model, output_midi_seq, output_continuation_state],
|
| 659 |
[output_midi_seq, output_continuation_state, js_msg], queue=False)
|
| 660 |
app.queue().launch(server_port=opt.port, share=opt.share, inbrowser=True, ssr_mode=False)
|