Difference between revisions of "Muse2ps feature requests and bug reports"
(7 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
== Bugs == | == Bugs == | ||
+ | |||
+ | ===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: | ||
+ | |||
+ | [[image:MuseData_tupletbracket.png]] | ||
+ | |||
+ | <pre> | ||
+ | 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 | ||
+ | // | ||
+ | </pre> | ||
===Text starting with a digit === | ===Text starting with a digit === | ||
Line 73: | Line 123: | ||
/eof | /eof | ||
// | // | ||
− | </pre> | + | </pre></td></tr></table> |
+ | </center> | ||
The above MuseData generates the following notation: | The above MuseData generates the following notation: | ||
Line 80: | Line 131: | ||
[[Image:muse2ps_chord_text.png]] | [[Image:muse2ps_chord_text.png]] | ||
</center> | </center> | ||
+ | |||
+ | |||
+ | A related bug pertains to the vertical positioning of text under chords. The following example places lyric text incorrectly at Y0. | ||
+ | |||
+ | <center><table cellspacing=0 cellpadding=0><tr><td bgcolor=#ffffff> | ||
+ | <pre> | ||
+ | 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 | ||
+ | // | ||
+ | </pre></td></tr> | ||
+ | </table></center> | ||
+ | |||
+ | which generates this graphical notation: | ||
+ | |||
+ | <center> | ||
+ | [[Image:muse2ps_chord_text_2.png]] | ||
+ | </center> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | |||
+ | <center><table cellspacing=0 cellpadding=0><tr><td bgcolor=#ffffff> | ||
+ | <pre> | ||
+ | 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 | ||
+ | // | ||
+ | </pre></td></tr> | ||
+ | </table> | ||
+ | </center> | ||
+ | |||
+ | [[Image:muse2ps_chord_text_3.png||center]] | ||
+ | |||
+ | ===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: | ||
+ | |||
+ | [[Image:muse2ps_tuplet.png||center]] | ||
+ | |||
+ | Source MuseData: | ||
+ | [[Media:muse2ps_tuplet.md2 | 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: | ||
+ | |||
+ | |||
+ | [[Image:muse2ps_tupletwhotenote.png||center]] | ||
+ | |||
+ | Source MuseData: | ||
+ | [[Media:muse2ps_tupletwholenote.md2 | muse2ps_tupletwhotenote.md2]] | ||
+ | |||
+ | ===Tilde and newline conflict in <nowiki>=C</nowiki> 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 <tt>\n<tt> first, and then applying the newline substitution for <tt>\n</tt>. Alternatively, add a digit to create a new special character after the <tt>\n<tt> sequence to indicate a newline. In addition, allowing multiple <tt>\n</tt> newlines is desirable (only one allowed currently). | ||
===Spacing of dummy time signatures === | ===Spacing of dummy time signatures === | ||
Line 85: | Line 232: | ||
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: | 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: | ||
− | + | [[Image:muse2ps_features_sanctustimesig.png||center]] | |
− | [[Image:muse2ps_features_sanctustimesig.png]] | ||
− | |||
MuseData for example: [[Media:sanctustimesig.md2 | sanctustimesig.md2]]. | MuseData for example: [[Media:sanctustimesig.md2 | sanctustimesig.md2]]. | ||
+ | |||
+ | |||
+ | ===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. | ||
+ | |||
+ | [[Image:muse2ps_features_editorialbreak.png||center]] | ||
+ | |||
+ | MuseData for example: [[Media:editorialbreak.md2 | editorialbreak.md2]]. | ||
== Feature Requests == | == Feature Requests == | ||
+ | |||
+ | === 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". | ||
=== Echoing initial comment lines with <nowiki>=M</nowiki> === | === Echoing initial comment lines with <nowiki>=M</nowiki> === | ||
Line 178: | Line 336: | ||
%=EndMuseData: 1 | %=EndMuseData: 1 | ||
</pre> | </pre> | ||
+ | |||
+ | |||
+ | ===Empty first line in <nowiki>=C</nowiki> 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. | ||
=== Clef/key/time signature suppression at indented line breaks === | === Clef/key/time signature suppression at indented line breaks === |
Latest revision as of 20:50, 6 November 2011
This page list feature requests and bug reports for muse2ps which is a command-line typesetting program for MuseData.
Bugs
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:
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 //
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:
But it would be preferred that the second note (D4) have a "2" shown below it.
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:
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:
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 // |
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:
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:
Source MuseData: muse2ps_tupletwhotenote.md2
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 first, and then applying the newline substitution for \n. Alternatively, add a digit to create a new special character after the \n sequence to indicate a newline. In addition, allowing multiple \n newlines is desirable (only one allowed currently).
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:
MuseData for example: sanctustimesig.md2.
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.
MuseData for example: editorialbreak.md2.
Feature Requests
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".
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
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.
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.
MuseData for example: indentsuppress.md2.
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.
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.
Finished features and fixed bugs
Independent barline styles
MuseData for example: polybar.md2.
Invisible time signatures
Allow for "invisible" time signatures.
MuseData for example: notime.md2.
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:
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:
MuseData for example: invisible_barline.md2
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