lewdlime / abcm2ps

abcm2ps is a command line program which converts ABC to music sheet in PostScript or SVG format. It is an extension of abc2ps which may handle many voices per staff. abcm2ps is Copyright © 2014-2016 Jean-Francois Moine.
http://moinejf.free.fr/
GNU General Public License v3.0
82 stars 31 forks source link

8va show error, Ped and ✲ show direction error #48

Open match08 opened 5 years ago

match08 commented 5 years ago

This abc parse to svg 8va is error, Ped and ✲ show direction error, is left andr right, not top and bottom:

X:1 T:lxq Z:? %%scale 0.85 %%pagewidth 21.00cm %%leftmargin 1.89cm %%rightmargin 1.26cm %%score { 1 | 2 } L:1/4 Q:1/4=176 M:4/4 I:linebreak $ K:C V:1 treble nm="MusicXML Part" L:1/16 V:2 bass V:1 "^Allegro()""^legato"!f! !1!z[I:staff +1] C,"_2"G,"_4"C"^5""^1"[I:staff -1] !>!ECGc"^2""^4""^5" !>!ecgc'!8va(! !>!e'c'g'c'' | %1 !>!e''c''g'c'!8va)! !>!e'c'gc !>!ecGC !>!EC[I:staff +1]G,C, |$ %2 [I:staff -1] !1!z[I:staff +1] C,"_2"A,!3!C"^5"[I:staff -1] F"^1"C"^2"A!3!c fcac'!8va(! f'c'a'c'' | %3 "^5" e''"^4"c''"^2"a'"^1"c'!8va)!"^5" e'c'ac ecAC !>!DC[I:staff +1]A,C, | %4 [I:staff -1] z[I:staff +1] B,,G,!4!B,"^5"[I:staff -1] DB,GB dBgb d'!8va(!bg'a' |$ %5 "^5" d''"^3"a'"^2"^f'"^1"c'!8va)!"^5" d'"^3"a"^2"^f"^1"c dA^FC D[I:staff +1]A,^F,C, | %6 [I:staff -1] z[I:staff +1] !1!C,!2!=F,"_3"_A,"^5"[I:staff -1] D"^1"CF_A dcf_a!8va(! d'c'f'_a' |$ %7 "^5" d''"^3"g'"^2"f'"^1"b!8va)!"^5" d'gfB dGFB,"^5" !>!^D[I:staff +1]G,F,B,, | %8 [I:staff -1] z[I:staff +1] C,G,C[I:staff -1] ECGc ecgc'!8va(! e'c'g'c'' |$ %9 e''c''g'c'!8va)! e'c'gc ecGC EC[I:staff +1]G,C, | %10 [I:staff -1] z[I:staff +1] !1!C,!2!F,!4!C[I:staff -1] !5!F!1!C!2!F!4!c !5!fcfc'!8va(! f'c'f'c'' |$ %11 "^5" e''"^4"c''"^2"^f'"^1"c'!8va)!"^5" e'c'^fc ec^FC EC[I:staff +1]^F,C, | %12 [I:staff -1] z[I:staff +1] !1!C,!2!G,!4!C"^5"[I:staff -1] DCGc dcgc'!8va(! d'c'g'c'' | %13 d''b'g'b!8va)! d'bgB dBGB, DB,[I:staff +1]G,B,, |$ %14 [I:staff -1] z[I:staff +1] !1!D,!2!G,!4!D"^5"[I:staff -1] EDGd edgd'!8va(! e'd'g'd'' | %15 "^5" e''"^4"c''"^2"g'"_1"c'!8va)!"^5" e'c'gc ecGC EC[I:staff +1]G,C, |$ %16 [I:staff -1] z[I:staff +1] !1!E,!2!C[I:staff -1]!4!E"^5" FEce fec'e'!8va(! f'e'c''e'' | %17 "^5" f''"^4"d''"^2"b'"^1"d'!8va)!"^5" f'd'bd fdBD FDB,[I:staff +1]D, |$ %18 [I:staff -1] z[I:staff +1] !1!D,!2!B,!4!D"^5"[I:staff -1] E"^1"DBd edbd'!8va(! e'd'b'd'' | %19 "^5" e''"^4"c''"^2"a'"_1"c'!8va)!"^5" e'c'ac ecAC EC[I:staff +1]A,C, |$ %20 [I:staff -1] z[I:staff +1] !1!C,!2!A,!4!C"^5"[I:staff -1] E"^1"CAc ecac' e'!8va(!c'a'c'' | %21 !5!^d''!3!!4!b'!2!!3!a'!1!b!8va)! !5!^d'!3!!4!b!2!!3!a!1!B ^dBAB, ^D[I:staff +1]B,A,B,, | %22 [I:staff -1] z[I:staff +1] !1!B,,!2!A,!3!B,"_5"[I:staff -1] E"_1"B,!2!A!3!B !5!eBab e'!8va(!ba'b' |$ %23 "^5" e''"^3"b'"^2"^g'"^1"!8va)!b"^5" e'"^3"b^gB eB^GB, EB,[I:staff +1]^G,B,, | %24 [I:staff -1] z[I:staff +1] !1!E,!2!A,!3!^C[I:staff -1] !5!=GEA^c gea^c' g'c'ae | %25 "^5" g'"^3"=c'"^2"a"^1"e"^5" gcAE GC[I:staff +1]A,E,[I:staff -1] ^FC[I:staff +1]A,D, |$ %26 [I:staff -1] z[I:staff +1] !1!D,!2!G,!3!C[I:staff -1] !5!=FDGc fdgc'!8va(! f'd'g'c'' | %27 "^5" f''"^3"b'"^2"g'"_1"d'!8va)!"^5" f'bgd fBGD F[I:staff +1]B,G,D, | %28 [I:staff -1] z[I:staff +1] !1!C,!2!G,!3!_B,[I:staff -1] !5!E!1!C!2!G!3!_B !5!ecg_b!8va(! e'c'g'c'' |$ %29 "^5" _e''!3!!4!_b'"^2"_e'"_1"c'!8va)!"^5" _e'_b_ec e_B_EC E_B,[I:staff +1]_E,C, | %30 [I:staff -1] z[I:staff +1] !1!C,!2!_E,!3!A,[I:staff -1] !5!_ECEA _ecea!8va(! _e'c'e'a' |$ %31 "^5" _e''"^3"_a'"^2"_e'"_1"!8va)!_c'"^5" _e'_a_e_c e_A_E_C E[I:staff +1]_A,_E,_C, | %32 [I:staff -1] z[I:staff +1] !1!_B,,!2!F,!3!_A,[I:staff -1] !5!=D!1!_B,F_A"_cresc." dBf_a!8va(! d'_bf'_a' |$ %33 "^5" d''"^3"^g'"^2"=e'"_1"!8va)!_b"^5" d'^g=e_B d^GE_B, D[I:staff +1]^G,E,_B,, | %34 [I:staff -1] z[I:staff +1] !1!A,,!2!E,!4!A,[I:staff -1] !5!^CA,EA ^cAea!8va(! ^c'ae'a' |$ %35 ^c''a'e'a!8va)!"_dim." ^c'aeA ^cAEA, ^C[I:staff +1]A,E,A,, | %36 [I:staff -1] z[I:staff +1] !1!A,,!2!D,!3!^F,"^5"[I:staff -1] =CA,D^F cAd^f c'ad'^f' |$ %37 "^5"!8va(! c''"^3"=f'"^2"d'"_1"g!8va)!"^5" c'fdG cFD[I:staff +1]G, !>!B,F,D,G,, | %38 [I:staff -1] !1!z[I:staff +1] !2!!3!G,,C,E,"_5" B,G,[I:staff -1]CE BGce bgc'e' | %39 "^5" b'"^3"e'"^2"c'"^1"f"^5" becF BEC[I:staff +1]F, !>!A,E,C,F,, |$ %40 [I:staff -1] z[I:staff +1] !1!F,,!2!B,,!3!D,"_5" A,F,B,[I:staff -1]D AFBd afbd' | %41 g'd'be gdB"^1"E"_cresc.""^2" A"^3"c"^5"g"^1"e ac'g'"^4"e' | %42 "^5" f'"^3"c'"^2"a"^1"d"^5" fcA"^1"D"^2" G"^3"B"^5"f"^1"d gbf'"^4"d' |$ %43 "^5" e'"^3"b"^2"g"_1"c"^5" eBGC FAec fae'c' | %44 !f!"^5" d'"^3"a"^2"f"^1"B dAFB, D[I:staff +1]A,F,B,,[I:staff -1] z4 | %45 ^d'a^fB ^dA^FB, ^D[I:staff +1]A,^F,B,,[I:staff -1] z4 |$ %46 z[I:staff +1] !1!B,,!2!E,!3!^G,"^5"[I:staff -1] E"^1"B,E^G eBe^g!8va(! e'be'^g' | %47 "^5" e''"^3"^g'"^2"e'"^1"b!8va)!"^5" e'"_dim."^geB e^GEB, !>!=FB,[I:staff +1]=G,D, |$ %48 [I:staff -1] z[I:staff +1] !1!C,!2!G,!4!C"^5"[I:staff -1] ECGc ecgc'!8va(! e'c'g'c'' | %49 e''c''g'c'!8va)! e'c'gc ecGC EC[I:staff +1]G,C, | %50 [I:staff -1] z[I:staff +1] !1!C,!2!A,!4!C[I:staff -1] FCAc fcac'!8va(! f'c'a'c'' |$ %51 e''c''a'c'!8va)! e'c'ac ecAC !>!DC[I:staff +1]A,C, | %52 [I:staff -1] z[I:staff +1] B,,G,B,[I:staff -1] DB,GB dBgb!8va(! d'bg'a' | %53 d''a'^f'c'!8va)! d'a^fc dA^FC D[I:staff +1]A,^F,C, |$ %54 [I:staff -1] z[I:staff +1] !1!C,!2!=F,"_3"_A,"^5"[I:staff -1] D"^1"CF_A dcf_a!8va(! d'c'f'_a' | %55 d''g'f'b!8va)! d'gfB dGFB, !>!^D[I:staff +1]G,F,B,, | %56 [I:staff -1] z[I:staff +1] C,G,C[I:staff -1] ECGc ecgc'!8va(! e'c'g'c'' |$ %57 e''c''g'c'!8va)! e'c'gc ecGC EC[I:staff +1]G,C, | %58 [I:staff -1] z[I:staff +1] !1!C,!2!F,!4!C[I:staff -1] !5!F!1!CFc fcfc'!8va(! f'c'f'c'' | %59 e''c''^f'c'!8va)! e'c'^fc _ec^FC !>!_EC[I:staff +1]^F,C, |$ %60 [I:staff -1] z[I:staff +1] !1!C,!2!G,!4!C"^5"[I:staff -1] DCGc dcgc'!8va(! d'c'g'c'' | %61 "^5" d''"^4"b'"^2"g'"^1"b!8va)! d'bgB dBGB, DB,[I:staff +1]G,B,, | %62 [I:staff -1] z[I:staff +1] !1!C,"_2"A,"_4"C"^5"[I:staff -1] DCAc dcac' d'!8va(!c'a'c'' |$ %63 "^5" _e''"^4"c''"^2"a'"^1"c'!8va)!"^5" _e'"^4"c'ac"^5" !>!^d!3!!4!BA"^2""^1"B,"^5" !>!^D"^3"B,[I:staff +1]A,B,, | %64 [I:staff -1] z[I:staff +1] !1!B,,!2!!3!^G,B,"^5"[I:staff -1] E!1!B,"^2"^G"^3"B"^5" eA^gb e!8va(!b^g'b' | %65 "^5" e''"^3"b'"^2"^g'"^1"b!8va)! e'b^gB eB^GB, EB,[I:staff +1]^G,B,, |$ %66 [I:staff -1] z"_1"[I:staff +1] D,!2!A,!3!C"^5"[I:staff -1] FDAc fdac'!8va(! f'd'a'c'' | %67 "_5" f''"_3"b'"_2"g'"_1"d'!8va)! f'bgd fBGD FB,[I:staff +1]G,D, | %68 [I:staff -1] z"_1"[I:staff +1] C,!2!G,!4!C"_5"[I:staff -1] E!1!CGc"_cresc." ec_bc' !>!!5!g'c'be |$ %69 "^5" !>!^f'"^3"c'"^2"a"^1"_e"^5" !>!^fcA_E !>!=fB_AD !>!=FB,[I:staff +1]_A,D, | %70 [I:staff -1] z[I:staff +1] !1!C,!2!G,!4!C[I:staff -1] !5!ECGc ecgc' ecgc' | %71 "^5"!>(! _e'"^3"a"^2"^f"^1"c"^5" _eA^FC!>)! d_A=FB, D[I:staff +1]_A,F,B,, |$ %72 [I:staff -1] z[I:staff +1] !1!_B,,!2!=E,!3!G,"_5"[I:staff -1] _D"^1"_B,EG _d_Beg!8va(! _d'_be'g' | %73 "_5" _d''"_3"^f'"_2"_e'"_1"a!8va)!"_5"!>(! _d'^f_eA _d^F!>)!_EA, cFEA, |$ %74 z"^1" _A,"^2"=D"^3"=F"^5" c_A=df c'_ad'f' c''f'd'a | %75 "^5" b'"^3"f'"^2"d'"^1"g"_dim.""^5" bfdG BFD[I:staff +1]G, B,F,D,G,, |$ %76 [I:staff -1] z[I:staff +1] !1!G,,!2!E,!3!G, !5!CG,[I:staff -1]EG!<(! cGeg!8va(! c'ge'!<)!g' | %77 !>(! c''g'e'g!8va)! c'geG cGE!>)![I:staff +1]G, CG,E,G,, |[I:staff -1] !fermata!z16 |] %79 V:2 !ped! [C,,C,]4- | [C,,C,]4!ped-up! |$!ped! [F,,,F,,]4 |!ped!!ped-up! [^F,,,^F,,]4 | %4 ([G,,,G,,]2 [^F,,,^F,,] [E,,,E,,] |$!ped! [D,,,D,,]4) | [G,,,G,,]4- |$!ped!!ped-up! [G,,,G,,]4 | %8 !ped! [C,,C,]4-!ped-up! |$!ped! [C,,C,]4!ped-up! |!ped!!ped-up! [A,,,A,,]4- |$!ped! [A,,,A,,]4 | %12 !ped-up!!ped! [G,,,G,,]4- |!ped!!ped-up! [G,,,G,,]4 |$ [C,,C,]4- |!ped! [C,,C,]4!ped-up! |$ %16 !ped! [A,,,A,,]4 |!ped! [B,,,B,,]2 [A,,,A,,]2!ped-up! |$!ped! [^G,,,^G,,]4 | %19 !ped!!ped-up! [A,,,A,,]2 [=G,,,=G,,]2 |$ [F,,,F,,]4- |!ped! [F,,,F,,]4!ped-up! | %22 !ped!!ped-up! [E,,,E,,]4- |$!ped! [E,,,E,,]4!ped-up! |!ped! [A,,,A,,]4 |!ped!!ped-up! [D,,D,]4 |$ %26 [G,,,G,,]4- |!ped! [G,,,G,,]4!ped-up! | x4!ped!!ped-up! |$!ped! [_G,,,_G,,]4 | %30 !ped-up!!ped! [F,,,F,,]4!ped-up! |$!ped! [_C,,_C,]4 |!f!!ped!!ped-up! _B,,,4- |$ %33 !ped! [_B,,,_B,,]4!ped-up! |!f!!ped!!ped-up! [A,,,A,,]4- |$!ped! [A,,,A,,]4 |!ped!!ped-up! D,,4 |$ %37 !ped! [G,,,G,,]4!ped-up! |!ped!!ped-up! C,,4 |!ped!!ped-up! [F,,,F,,]4 |$!ped! B,,,4!ped-up! | %41 !ped!!ped-up! [E,,,E,,]2!ped-up!!ped! [A,,,A,,]2 | %42 !ped!!ped-up! [D,,,D,,]2!ped!!ped-up! [G,,,G,,]2 |$ %43 !ped! [C,,,C,,]2!ped-up!!ped! [F,,,F,,]2!ped-up! |!ped!!ped-up! [B,,,B,,]3 B,,,- | %45 !ped! [B,,,B,,]3!ped-up! B,,, |$ [E,,,E,,]4- | %47 !ped! [E,,,E,,]3!ped-up!!>(!!ped-up!!ped! [D,,,D,,]!>)! |$!ped! [C,,,C,,-]4!ped-up! | [C,,C,]4 | %50 !ped!!ped-up! [F,,,F,,]4 |$!ped-up!!ped! [^F,,,^F,,]4 | %52 !ped-up!!ped! ([G,,,G,,]2 [^F,,,^F,,] [E,,,E,,] |!ped! [D,,,D,,]4)!ped-up! |$!ped! [G,,,G,,]4- | %55 !ped!!ped-up! [G,,,G,,]4 |!ped!!ped-up! [C,,C,]4- |$ [C,,C,]4 |!ped!!ped-up! [A,,,A,,]4- | %59 !ped-up!!ped! [A,,,A,,]3!ped! [_A,,,_A,,] |$!ped-up!!ped! [G,,,G,,]4- |!ped!!ped-up! [G,,,G,,]4 | %62 !ped!!ped-up! [^F,,,^F,,]4 |$!ped! [=F,,,=F,,]4!ped-up!!ped! |!ped! [E,,,E,,-]4!ped-up! | %65 [E,,E,]4 |$!ped! D,,4!ped-up! |!ped!!ped-up! [G,,,G,,]4 |!ped!!ped-up! C,,4- |$ %69 !ped! [C,,C,]4!ped-up!!ped! |!ped! C,,4!<(!!<)! |!ped!!ped-up! [G,,,G,,]4!ped!!ped-up! |$ %72 !ped! [G,,,G,,]4-!ped-up! |!ped!!ped-up! [G,,,G,,]4 |$!ped! [G,,,G,,]4-!ped-up!!<(!!<)! | %75 !ped!!ped-up! [B,,,G,,]4!>(!!>)! |$ [C,,,C,,]4- | [C,,,C,,]4 | !fermata![C,,,C,,]4 |] %79

moinejf commented 5 years ago

The ottava problem should be fixed. About the pedal problem, you should put the !ped-up! mark on a previous symbol, as a measure bar in most cases. When inside a measure, the mark may be put on a small inserted space ('y1'). An other solution is to use an annotation as "@10,10*" (put a star at coordinates 10, 10).

match08 commented 5 years ago

pedal show mode by MusicXML is one line in horizontal: http://usermanuals.musicxml.com/MusicXML/MusicXML.htm#EL-MusicXML-pedal.htm ped-f4f6098e-a4e7-457f-a2d6-66fc1fd703d6

moinejf commented 5 years ago

Right, but:

match08 commented 5 years ago

ped and ped-up display direction error, no up and down display. Only left and right.

moinejf commented 5 years ago

Sorry for I don't understand what you mean.

match08 commented 5 years ago

look this image: ped_bug

match08 commented 5 years ago

Music Score ped and ped-up mode: ped_right

moinejf commented 5 years ago

Have you a small ABC example with the error?

match08 commented 5 years ago

a small ABC example with the error:

X:1 T:3.ped errpr C:? Z:? %%scale 0.85 %%pagewidth 21.00cm %%leftmargin 1.89cm %%rightmargin 1.26cm %%score { ( 1 2 ) | 3 } L:1/8 Q:1/4=100 M:2/4 I:linebreak $ K:D V:1 treble nm="Piano" snm="Pno." L:1/16 V:2 treble V:3 bass V:1 "^Allegretto ( )"!mf! (!tenuto!B2>A2 .B2).d2 | (FEFA B4) | (ABAF E2>D2 | E4) .D2(DB,) | %4 .A2.A2 ABDE |] %5 V:2 x4 | x4 | x4 | x4 | z .[A,E] z2 |] %5 V:3 z!ped!!ped-up! .[B,F] z .[E^G] | z .[F,C] z .[B,,F,] | z .[F,C] ([G,B,].[A,C]) | %3 z .[G,B,] z .[B,,F,A,] | z .[F,,C,] z .[B,,F,A,] |] %5

moinejf commented 5 years ago

As told in a previous comment, you should not put both !ped! and !ped-up! on a same symbol.

z!ped! .[B,F] !ped-up!z .[E^G] |

does the job.