<-- previous page Table of Contents Index next page -->
Mup prints braces to the left of scores via the
brace parameter,
but it may sometimes be desired to print a brace somewhere else,
and have it scale appropriately for its height.
This can be done using an escape to PostScript.
Here is a macro definition that can be used to print a brace,
and an example of how to use it:
// brace expects an x value and bottom and top y values define BRACE(TOP, BOTTOM) postscript (TOP.w - 1, BOTTOM.s) with _top.y = TOP.n " currentpoint Mup_top.y brace" @ score staffs=2 music 1: c+ =_t;;;; 2: c =_b;;;; BRACE(_t, _b) bar
A somewhat more complicated version, which would print a string before the
brace, might be:
define BRACE(TOP, BOTTOM, STRING) postscript (TOP.w - 1, BOTTOM.s) with _top.y = TOP.n " currentpoint /yloc exch def /xloc exch def currentpoint Mup_top.y brace /TimesRoman findfont 12 scalefont setfont xloc 7.5 sub (" + STRING + ") stringwidth pop sub yloc Mup_top.y add 2 div 1.5 sub moveto (" + STRING +") show" @ score staffs=2 music 1: [pad 10] c+ =_t;;;; 2: c =_b;;;; BRACE(_t, _b, "Label") bar
That still wouldn't handle things like special characters in the string, or different font sizes, but could handle simple cases, and be a starting point for more complicated ones.