File size: 2,300 Bytes
133ccd4
 
 
96007f4
133ccd4
 
 
 
 
 
 
 
 
df03c6b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29f4f6c
 
 
 
 
 
 
 
df03c6b
 
 
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import argparse
import glob
import os.path

import gradio as gr
import numpy as np
import onnxruntime as rt
import tqdm
import json
from huggingface_hub import hf_hub_download

import TMIDIX

in_space = os.getenv("SYSTEM") == "spaces"

providers = ['CUDAExecutionProvider', 'CPUExecutionProvider']


def load_javascript(dir="javascript"):
    scripts_list = glob.glob(f"{dir}/*.js")
    javascript = ""
    for path in scripts_list:
        with open(path, "r", encoding="utf8") as jsfile:
            javascript += f"\n<!-- {path} --><script>{jsfile.read()}</script>"
    template_response_ori = gr.routes.templates.TemplateResponse

    def template_response(*args, **kwargs):
        res = template_response_ori(*args, **kwargs)
        res.body = res.body.replace(
            b'</head>', f'{javascript}</head>'.encode("utf8"))
        res.init_headers()
        return res

    gr.routes.templates.TemplateResponse = template_response


class JSMsgReceiver(gr.HTML):

    def __init__(self, **kwargs):
        super().__init__(elem_id="msg_receiver", visible=False, **kwargs)

    def postprocess(self, y):
        if y:
            y = f"<p>{json.dumps(y)}</p>"
        return super().postprocess(y)

    def get_block_name(self) -> str:
        return "html"

if __name__ == "__main__":

    parser = argparse.ArgumentParser()
    parser.add_argument("--share", action="store_true", default=False, help="share gradio app")
    parser.add_argument("--port", type=int, default=7860, help="gradio server port")
    parser.add_argument("--max-gen", type=int, default=1024, help="max")
    opt = parser.parse_args()

app = gr.Blocks()
with app:
    gr.Markdown("<h1 style='text-align: center; margin-bottom: 1rem'>Midi Composer</h1>")
    gr.Markdown("![Visitors](https://api.visitorbadge.io/api/visitors?path=skytnt.midi-composer&style=flat)\n\n"
                "Midi event transformer for music generation\n\n"
                "Demo for [SkyTNT/midi-model](https://github.com/SkyTNT/midi-model)\n\n"
                "[Open In Colab]"
                "(https://colab.research.google.com/github/SkyTNT/midi-model/blob/main/demo.ipynb)"
                " for faster running and longer generation"
                    )

    app.queue(2).launch(server_port=opt.port, share=opt.share, inbrowser=True)