Muse2ps feature requests and bug reports

From CCARH Wiki
Jump to: navigation, search


This page list feature requests and bug reports for muse2ps which is a command-line typesetting program for MuseData.

1 Bugs

1.1 Tuplet brackets and rests

Unusual behavior for tuplet brackets when a rest is involved (or the following data is incorrect?). The following data produces the notation:

MuseData tupletbracket.png

Header Record 1: optional copyright notice
Header Record 2: optional file identification
TIMESTAMP: AUG/15/2011 []
08/15/2011 C. Sapp
WK#:1 MV#:1
Header Record 6: source
Header Record 7: work title
Header Record 8: movement title

Header Record 10
Group memberships: score
score: part 1 of 1
$  Q:3   T:2/4   C:4
P C0:t2
C4     2      1 q  3           *
P C32::
D4     2      1 q  3
E4     2      1 q  3           !
measure
rest   6      1
measure
rest   2      1 q  3           *
rest   2      1 q  3
rest   2      1 q  3           !
measure
rest   6      1
measure
rest   2      1 q  3           *
C4     2      1 q  3
D4     2      1 q  3           !
measure
rest   6      1
measure
D4     2      1 q  3           *
P C32::
C4     2      1 q  3
rest   2      1 q  3           !
mheavy2
/END
/eof
//

1.2 Text starting with a digit

Lyric text cannot start with a digit. It would be useful for displaying analytical data if lyric text can start with a digit. Example data:

Header Record 1: optional copyright notice
Header Record 2: optional file identification
TIMESTAMP: MAR/19/2011 [md5sum:0d0a:d18c08728833c68ab4d3dc6687fe95bd]
03/19/2011 C. Sapp
WK#:1 MV#:1
Header Record 6: source
Header Record 7: work title
Header Record 8: movement title

Header Record 10
Group memberships: score
score: part 1 of 1
$  Q:1      C:4
C4     1      1 q                          a
D4     1      1 q                          2
E4     1      1 q                          c3
/END
/eof
//

The current output from muse2ps for this data is:

Muse2ps digits.png

But it would be preferred that the second note (D4) have a "2" shown below it.


1.3 Chord text

Lyric text attached to chords has to be placed on the last note listed in a chord. However, it seems more logical to place the text on the first note of the chord. In any case, the position of the text in the chord data is not specified in the MuseData stage2 specification.

Header Record 1: optional copyright notice
Header Record 2: optional file identification
TIMESTAMP: MAR/21/2011 [md5sum:0d0a:d26153bf39ade160d1aaeafc54a33b39]
03/21/2011 C. Sapp
WK#:1 MV#:1
Header Record 6: source
Header Record 7: work title
Header Record 8: movement title

Header Record 10
Group memberships: score
score: part 1 of 1
$  Q:1      C:4
C4     1      1 q                          a1
 E4    1      1 q                          a2
 G4    1      1 q                          a3
D4     1      1 q                          b1
 F4    1      1 q                          b2
 A4    1      1 q                          b3
E4     1      1 q                          c1
 G4    1      1 q                          c2
 B4    1      1 q                          c3
/END
/eof
//

The above MuseData generates the following notation:

Muse2ps chord text.png


A related bug pertains to the vertical positioning of text under chords. The following example places lyric text incorrectly at Y0.

Header Record 1: optional copyright notice
Header Record 2: optional file identification
TIMESTAMP: MAR/21/2011 [md5sum:0d0a:588c1efb9cfeb7c13fc6e13d88751cf6]
03/21/2011 C. Sapp
WK#:1 MV#:1
Header Record 6: source
Header Record 7: work title
Header Record 8: movement title

Header Record 10
Group memberships: score
score: part 1 of 1
$  Q:1      C:4
G4     1      1 q     d
 F5    1      1 q     d                    A
B4     1      1 q     d
 G5    1      1 q     d                    C
D5     1      1 q     d
 B5    1      1 q     d                    E
F5     1      1 q     d
 D6    1      1 q     d                    G
/END
/eof
//

which generates this graphical notation:

Muse2ps chord text 2.png

If there is a lyric text indicated on the first note of any chord in this example (which will not be printed), then the text will be placed in a better vertical position. Any single note with text attached to it will generate the proper vertical positioning, so some part of the code which assigns the vertical position is not triggered when the text is attached to the last note of a chord (which is the necessary location at the moment).

Placing a dummy marker on the first note of any chord in the above exmaple will cause the vertical position of the text to be corrected:


Header Record 1: optional copyright notice
Header Record 2: optional file identification
TIMESTAMP: MAR/21/2011 [md5sum:0d0a:588c1efb9cfeb7c13fc6e13d88751cf6]
03/21/2011 C. Sapp
WK#:1 MV#:1
Header Record 6: source
Header Record 7: work title
Header Record 8: movement title

Header Record 10
Group memberships: score
score: part 1 of 1
$  Q:1      C:4
G4     1      1 q     d                    dummy text
 F5    1      1 q     d                    A
B4     1      1 q     d
 G5    1      1 q     d                    C
D5     1      1 q     d
 B5    1      1 q     d                    E
F5     1      1 q     d
 D6    1      1 q     d                    G
/END
/eof
//
Muse2ps chord text 3.png

1.4 Tuplet bracket/stem directions

Tuplet brackets do not keep track of stems very well. It would be useful to adjust the angle and vertical placement of tuplet brackets in particular when the starting and ending notes in the tuplet group have stems in different directions. For example, the tuplet brack slope on the second tuplet in the following example is incorrect:

Muse2ps tuplet.png

Source MuseData: muse2ps_tuplet.md2

In addition, tuplet brackets on stemless notes do not accommodate the fact that the notes do not have stems, and therefore the brackets are placed too far from the noteheads. In the following example, measures 1 and 4 should visually appear identical, and measures 2 and 3 should as well:


Muse2ps tupletwhotenote.png

Source MuseData: muse2ps_tupletwhotenote.md2

1.5 Tilde and newline conflict in =C option

When a n-tilde is needed in the Composer's name, the escape sequence "\n1" is needed for creating the character ñ. However, the escape sequence "\n" marks a newline for a secondary line underneath the composer (used for an opus number, for example). Therefore, some other method of indicating a newline is needed to replace "\n"; probably identifying any special characters which start with \n<tt> first, and then applying the newline substitution for <tt>\n. Alternatively, add a digit to create a new special character after the \n<tt> sequence to indicate a newline. In addition, allowing multiple <tt>\n newlines is desirable (only one allowed currently).

1.6 Spacing of dummy time signatures

When a time signature is not given at the start of the music, the space between the clef and the first note is good. When a dummy time signature is given (such as T:9/0), there is extra space added between the clef and the first note which appears to be the width of a cut-time metrical sign. It would probably be a good idea to set the width of a dummy time signature to 0. Illustration of the extra space and comparing between the various time signature settings:

Muse2ps features sanctustimesig.png

MuseData for example: sanctustimesig.md2.


1.7 Systembreak interaction with editorial accidentals

When an editorial accidental is placed on a note which is tied over a system break, a regular-style cautionary accidental is placed on the tied note on the next system. This cautionary accidental should instead be in the same style as the editorial accidental.

Muse2ps features editorialbreak.png

MuseData for example: editorialbreak.md2.

2 Feature Requests

2.1 Additional mensural time signature

A new mensural time signature "O/3" should be created. The MuseData tempo code for it should be "T:104/0". The visual display of the mensural sign is the letter "O" over the number 3. Use the shape of the mensural sign indicated by "T:11/0" placed above the shape of the mensural sign indicated by "T:102/0".

2.2 Echoing initial comment lines with =M

It would be useful to echo comments from the start of the muse2ps input data (which are commonly used to store muse2ps formatting options) into the data comments created with the =M option. In addition, any text after the /END> line (or /FINE line, but before the /eof line should be echoed into the PostScript comments related to the =M option. This feature is needed to preserve muse2ps options with the embedded MuseData, as well as transmit page footer information to programs further down the command pipeline.

Exmaple Data:

@muse2psv1==z21
@Another comment
&
A multi line comment
&
Header Record 1: optional copyright notice
Header Record 2: optional file identification
TIMESTAMP: MAR/06/2011 [md5sum:0d0a:ecbfb55db87913926a9e309fdfcef99d]
03/06/2011 C. Sapp
WK#:1 MV#:1
Header Record 6: source
Header Record 7: work title
Header Record 8: movement title

Header Record 10
Group memberships: score
score: part 1 of 1
$  K:0   Q:4   T:4/4   C:4
C4    16      1 w
mheavy2
/END
Here is some text after the end of the data in the partfile which
should be preserved.
/eof
//

Current results of =M:

%=BeginMuseData: 1
%=Header Record 1: optional copyright notice
%=Header Record 2: optional file identification
%=TIMESTAMP: MAR/06/2011 [md5sum:0d0a:ecbfb55db87913926a9e309fdfcef99d]
%=03/06/2011 C. Sapp
%=WK#:1 MV#:1
%=Header Record 6: source
%=Header Record 7: work title
%=Header Record 8: movement title
%=
%=Header Record 10
%=Group memberships: score
%=score: part 1 of 1
%=$  K:0   Q:4   T:4/4   C:4
%=C4    16      1 w
%=mheavy2
%=/END
%=EndMuseData: 1

Desired output of =M

%=BeginMuseData: 1
%=@muse2psv1==z21
%=@Another comment
%=&
%=A multi line comment
%=&
%=Header Record 1: optional copyright notice
%=Header Record 2: optional file identification
%=TIMESTAMP: MAR/06/2011 [md5sum:0d0a:ecbfb55db87913926a9e309fdfcef99d]
%=03/06/2011 C. Sapp
%=WK#:1 MV#:1
%=Header Record 6: source
%=Header Record 7: work title
%=Header Record 8: movement title
%=
%=Header Record 10
%=Group memberships: score
%=score: part 1 of 1
%=$  K:0   Q:4   T:4/4   C:4
%=C4    16      1 w
%=mheavy2
%=/END
%=Here is some text after the end of the data in the partfile which
%=should be preserved.
%=EndMuseData: 1


2.3 Empty first line in =C option

When the first line in a multi-line =C option is given, an error is produced by muse2ps:

  =C^\nSecond line^
  Run-time error: string subscript 1 of  variable:
    is out of bounds
    subscript = 15, current length = 14

It would be preferable if muse2ps could handle an empty string on the first line of a =C option, or less preferable in this specific case, print a more user-friendly error message as to the cause of the error. A similar error message will occur if ^ markers are not matched in options. An error message such as "unmatched ^ marker for option T on line xxx would be useful.

2.4 Clef/key/time signature suppression at indented line breaks

It would be useful to create a print suggestion which suppresses printing of cautionary time singature, key signature or clefs at the end of a line, particularly when an indented line break code is used. Alternatively, suppression of cautionary symbols at the end of systems before an indented line break could be a hard-coded default (similar to the repetition of the instrument names at the start of the system at indented line breaks). In the following example, it is desired to suppress printing of the region marked in red.

Muse2ps feature indentsuppress.png

MuseData for example: indentsuppress.md2.

2.5 Initial measure number

For short examples which do not start at measure 1, it would be useful to allow adding a bar number at the start of the music.

2.6 Stage 1 preprocessing of data

It would be useful to add components of the stage1 → stage2 process: (1) have an option which turns on automatic determination of stem directions, (2) have an option which turns on automatic determination of beaming. These would preferably be separate options, since it is more likely that input data from other sources would have beaming information, but not stemming information.

3 Finished features and fixed bugs

3.1 Independent barline styles

Muse2ps feature polybar.png

MuseData for example: polybar.md2.

3.2 Invisible time signatures

Allow for "invisible" time signatures.

Muse2ps feature invisible time signature.png

MuseData for example: notime.md2.

3.3 Invisible barlines

Allow for "invisible" barlines (such as ending a short example with an incomplete barline).

Here is an example of an implicit invisible barline which is created by not placing a barline at the end of the music:

Muse2ps feature invisible barline.png

MuseData for example: nobaratend.md2

And here is an example of an explicit invisible barline which is created by inserting an invisible barline in the data:

File:Muse2ps feature invisible barline2.png

MuseData for example: invisible_barline.md2


3.4 Paper size in PostScript DSC comments

Add the following line at the end of the DSC comment header in the PostScript output:

   %%DocumentPaperSizes: Letter

For example:

%!PS-Adobe-3.0
%%BoundingBox: (atend)
%%HiResBoundingBox: (atend)
%%HiResSystemBox: 59.76 95.76 552.00 722.64
%%Creator: muse2ps 1.0
%%CreationDate: Thu Dec 23 10:48:53 2010
%%Orientation: Portrait
%%Pages: 1
%%PageOrder: Ascend
%%DocumentPaperSizes: Letter
%%EndComments

Reference: http://en.wikipedia.org/wiki/Document_Structuring_Conventions