File size: 1,212 Bytes
dd9364e
52d7d5e
dd9364e
 
 
 
 
 
 
 
 
 
 
 
 
52d7d5e
dd9364e
 
 
 
 
 
52d7d5e
 
 
 
dd9364e
 
 
 
52d7d5e
 
dd9364e
 
 
52d7d5e
 
 
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
import verovio
import gradio as gr
import os

def get_verovio_resource_path():
    for path in verovio.__path__:
        candidate = os.path.join(path, "data")
        if os.path.exists(candidate):
            return candidate
    return None

def render_mei(mei_path):
    tk = verovio.toolkit()
    # Set resource path explicitly
    resource_path = get_verovio_resource_path()
    print(f"resource path: {os.listdir(resource_path)}")
    print("[Debug] Using resource path:", resource_path)
    if resource_path:
        try:
            tk.setResourcePath(resource_path)
        except Exception as e:
            print("[Error] Failed to set resourcePath:", e)
    # print(tk.getOptions())
    options = {"pageHeight": 2000, "pageWidth": 3000, "scale": 60, "header": "none"}
    tk.setOptions(options)
    tk.redoLayout()
    with open(mei_path, "r", encoding="utf-8") as f:
        mei_data = f.read()
    try:
        tk.loadData(mei_data)
        res = tk.renderToSVG(1)
        return res
    except Exception as e:
        return f"<pre>Rendering failed:\n{e}</pre>"

gr.Interface(fn=render_mei, inputs=gr.File(type="filepath"), outputs=gr.HTML()).launch(
    server_name="0.0.0.0", server_port=7860
)