Skip to content

MusicXML:Scripts:Mxl2Svg

mxl -> guido -> svg 변환 Python 스크립트.

libmusicxml and guidolib Script

libmusicxml과 guidolib를 사용한 방법:

# -*- coding: utf-8 -*-

import os
from zipfile import ZipFile
from subprocess import Popen, PIPE

XML2GUIDO = "/home/your/Project/libmusicxml/build/bin/xml2guido"
GUIDO2SVG = "/home/your/Project/guidolib/build/bin/guido2svg"


for root, dirs, files in os.walk("."):
    for file in files:
        path = os.path.join(root, file)
        name, ext = os.path.splitext(path)
        if ext.lower() != ".mxl":
            continue

        with ZipFile(path, "r") as zip:
            zip_files = zip.namelist()
            for zip_file in zip_files:
                if zip_file.startswith("META-INF"):
                    continue

                zip_file_name, zip_file_ext = os.path.splitext(zip_file)
                if zip_file_ext.lower() != ".xml":
                    continue

                xml_path = os.path.join(path + "-" + zip_file)
                guido_path = xml_path + ".guido"
                svg_path = xml_path + ".svg"

                with open(xml_path, "w+b") as xml_file:
                    xml_file.write(zip.read(zip_file))

                with Popen([XML2GUIDO, xml_path], stdout=PIPE) as proc:
                    with open(guido_path, "w+b") as guido_file:
                        guido_file.write(proc.stdout.read())

                with Popen([GUIDO2SVG, guido_path], stdout=PIPE) as proc:
                    with open(svg_path, "w+b") as svg_file:
                        svg_file.write(proc.stdout.read())

verovio script

verovio를 사용한 방법:

# -*- coding: utf-8 -*-

import os
from zipfile import ZipFile
from subprocess import Popen, PIPE

VEROVIO = "/home/your/Project/verovio/cmake/build/verovio"
VEROVIO_RESOURCE = "/home/your/Project/verovio/data"


for root, dirs, files in os.walk("."):
    for file in files:
        path = os.path.join(root, file)
        name, ext = os.path.splitext(path)
        if ext.lower() != ".mxl":
            continue

        with ZipFile(path, "r") as zip:
            zip_files = zip.namelist()
            for zip_file in zip_files:
                if zip_file.startswith("META-INF"):
                    continue

                zip_file_name, zip_file_ext = os.path.splitext(zip_file)
                if zip_file_ext.lower() != ".xml":
                    continue

                xml_path = os.path.join(path + "-" + zip_file)
                guido_path = xml_path + ".guido"
                svg_path = xml_path + ".svg"

                with open(xml_path, "w+b") as xml_file:
                    xml_file.write(zip.read(zip_file))

                with Popen([VEROVIO, "-r", VEROVIO_RESOURCE, "-o", svg_path, xml_path], stdout=PIPE) as proc:
                    print(proc.stdout.read())

musescore script

musescore3 part.xml -o part-trimmed.svg

See also