in

¿Hay alguna forma de exportar partes a través de la línea de comandos en Musescore?

Exporto muchas partes en Musescore. Me gustaría hacer algo como esto:

$ musescore -i myScore.mscz --export-parts
Exporting myScore-piano.pdf
Exporting myScore-guitar.pdf
Exporting myScore-drums.pdf

Parts were successfully exported
$

es posible?

Encontré esto:

$ musescore --export-to myScore.pdf --export-score-parts myScore.mscz

Sin embargo, esto genera un solo pdf con la partitura y las partes. Los necesito en archivos separados.

La solución más cercana que he encontrado hasta ahora es una forma de generar un archivo que contenga todas las partes sin la partición. Se parece a esto:

#!/bin/bash
IN=$1

PARTITURE=${IN%.mscz}-partiture.pdf
musescore -o $PARTITURE $IN

NO_PAGES_PARTITURE=$(pdftk $PARTITURE dump_data | grep NumberOfPages | cut -f2 -d ' ')
let NO_PAGES_PARTITURE=NO_PAGES_PARTITURE+1

FULL=${IN%.mscz}-full.pdf
musescore -o $FULL -P $IN

PARTS=${IN%.mscz}-all-parts.pdf
pdftk $FULL cat $NO_PAGES_PARTITURE-end output $PARTS

rm $FULL

2 respuestas
2

Usando MuseScore 3, la forma más fácil de generar archivos PDF de partes es con la conversión por lotes json.

EDITAR: Definitivamente tiene algunos errores, pero funciona un poco. Siéntase libre de usarlo para crear algo por su cuenta.

Ahora he creado un script de Python para hacer esto. Hasta ahora solo lo he probado en un archivo, pero parece funcionar.

https://github.com/klutt/klutt-musescore-tools

#!/usr/bin/python3

def main():
    import sys
    import os
    import json
    import subprocess
    import xml.etree.ElementTree as et

    if len(sys.argv) < 2:
        print("Usage: getPartNames.py <filename>")
        exit

    inFile = sys.argv[1]
    filename, fileExtention = os.path.splitext(inFile)
    mscx = filename + ".mscx"

    if fileExtention not in [".mscx", ".mscz"]:
        print("Unknown file extention: " + fileExtention)
        exit

    if fileExtention == ".mscz":
        proc = subprocess.Popen(["musescore", "-o", mscx, "-P", inFile])
        proc.wait()

    tree = et.parse(mscx)

    scoreList = []

    for score in tree.iter('Score'):
        scoreList.append(score)

    data = []
    partList = []

    for i in range(len(scoreList)-1):
        name=""
        for trackName in scoreList[i+1].iter('trackName'):
            name = trackName.text
            partList.append(trackName)
            break

        tree.getroot().remove(scoreList[i])
        tree.getroot().append(scoreList[i+1])

        partFileBase = filename + "-" + name
        partFile = partFileBase + ".mscx"
        entry = {}
        entry['in'] = partFile
        entry['out'] = partFileBase + ".pdf"
        data.append(entry)
        tree.write(partFile)

    jsonfile = filename + '.json'
    with open(jsonfile, 'w') as outfile:
        json.dump(data, outfile)

    proc = subprocess.Popen(["musescore", "-j", jsonfile])
    proc.wait()


if __name__ == "__main__":
    main()

¿Te ayudó la respuesta?

Subscribirse
Notificar por
guest
0 Comentarios
Inline Feedbacks
Ver todas las Respuestas

Historia corta sobre un hombre que husmea en un vecino y encuentra su cuerpo cuidadosamente doblado en una caja.

Firefox: cerrar pestaña en la última acción «atrás» si el enlace se abrió desde otra pestaña (comportamiento de Safari)