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())