File size: 1,016 Bytes
a66ecf5
 
3efa2af
 
 
8dacb10
46f15cd
3efa2af
46f15cd
3efa2af
016958e
3efa2af
 
 
 
8dacb10
 
 
a66ecf5
 
1449f72
a66ecf5
1449f72
7095c54
016958e
a66ecf5
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
import gradio as gr
from musiclib import musicgen
from io import BytesIO
import midi_util
from midi_util import VocabConfig
import tempfile
def gen(piano_only, length):
    midi = ''
    for item in musicgen(piano_only=piano_only, length=length):
        midi = item
        yield item, None
    bio = BytesIO()
    cfg = VocabConfig.from_json('./vocab_config.json')
    text = midi.strip()
    mid = midi_util.convert_str_to_midi(cfg, text)
    with tempfile.NamedTemporaryFile(suffix='.midi', delete=False):
        mid.save(file=bio)
        yield midi, bio.getvalue()
with gr.Blocks() as demo:
    piano_only = gr.Checkbox(label="Piano Only")
    length = gr.Slider(label="Length (in tokens)", minimum=4, maximum=4096, step=1, value=4096)
    synth = gr.Button("Synthesize")
    txtout = gr.Textbox(interactive=False, label="MIDI Length")
    fileout = gr.File(interactive=False, label="MIDI File", type="binary")
    synth.click(gen, inputs=[piano_only, length], outputs=[txtout, fileout])
demo.queue().launch()