While working on a harmony for Irmgard and me in Musescore, i tought it would be nice to have it also in another notation.
Above a Musescore screenshot.
When using below button assignment, we can easily rewrite above into another notation.
Write musescore as MusicML/mxl Music xml.
Install xml2abc from https://wim.vree.org/svgParse/xml2abc.html
python xml2abc.py INPUTFILE.mxl output.abc
My abc file
X:1
T:Planxty Irwin
C:OCarolan
L:1/4
M:3/4
I:
K:G
V:1 treble nm="Henri" snm="H"
V:1
|: d | B2 d | c2 A | F2 A | G3/2 d/ B | A G F | G3/2 A/ B | D2 E | F2 d | B2 d | c2 A | F2 A |
G3/2 d/ B | A G F | G3/2 A/ B | e d c | B2 d | B3/2 c/ B | B G B | c3/2 d/ c | c A F | G d e |
c d e | d3/2 c/ A | d c A | B c d | c B A | F G A | G3/2 d/ B | A G F | G3/2 A/ B | e d c | B2 :|
Using below bash script you can convert this to PDF WITH concertina notations.
WARNING: I didn't include all keys (yet).
NOTE: Easy to adjust to other notations.
#!/bin/bash if [ $# -lt 2 ]; then print "script orgname convertname" exit 1 fi : > parced org=$1 abc=$2 cat $1 | awk '/^\|/ {exit} {print}' > header cat $1 | grep "|" | tr -d '[0-9]:/'> parse ( cat parse | while read ; do echo $REPLY echo -n "w: " for word in $(echo $REPLY) ; do if [ "$word" == "|" ] ; then echo -n " | " elif [ "$word" == "D" ] ; then echo -n " 2 "; elif [ "$word" == "G" ] ; then echo -n " 3 "; elif [ "$word" == "B" ] ; then echo -n " 4 "; elif [ "$word" == "d" ] ; then echo -n " 5 "; elif [ "$word" == "g" ] ; then echo -n " 6 "; elif [ "$word" == "b" ] ; then echo -n " 7 "; else echo -n " * " fi done echo "" echo -n "w: " for word in $(echo $REPLY) ; do if [ "$word" == "|" ] ; then echo -n " | " elif [ "$word" == "F" ] ; then echo -n " 2 "; elif [ "$word" == "A" ] ; then echo -n " 3 "; elif [ "$word" == "c" ] ; then echo -n " 4 "; elif [ "$word" == "e" ] ; then echo -n " 5 "; elif [ "$word" == "f" ] ; then echo -n " 6 "; elif [ "$word" == "a" ] ; then echo -n " 7 "; elif [ "$word" == "E" ] ; then echo -n " 4' "; # <============ example 2nd row else echo -n " * " fi done echo "" done ) >> parced cat header parced > $abc abcm2ps -x -O - "$abc" | ps2pdf -sPAPERSIZE=a4 - "$(echo $abc | cut -f2 -d/ | sed 's/abc/pdf/g')"
Example output (Harmony part)