@ This set of macros shows one way of handling figured bass notation in PMS. @ Philip Hazel, February 1994. Updated February, April 1998, March 1999. @ There is a basic macro called b, which prints its argument below the stave, at @ the underlay level, using text size 2. This can be used directly if required, @ in simple cases, for example: @ &b(4) g &b(5) a @ To cope with two numbers in a vertical stack, the macro d is defined to move @ down an appropriate amount; it is used after the second call to b, for example, @ &b(7)&b(9)&d @ prints a 9 below a 7 under the next note. textsizes 10 9 2.5 *define d /d9 *define b() "\rm\&&1"/bu/s2 @ The effect of using the underlay level is that all the figurings on a given @ line are printed at the same level. If you don't want this, then "bu" can be @ changed to "b" to print below each individual note. If you do this, the d @ macro becomes irrelevant, since PMS automatically prints multiple @ non-underlay strings below each other. Either remove the references to &d @ below, or define it to be null, for example: @ *define d @ *define b() "\rm\&&1"/b/s2 @ The remaining macros are all defined in terms of b and d. Note that, because @ macros are handle in a single pass in PMS, you cannot nest macro calls. That @ is, you cannot use a call to one macro inside the argument of a call to @ another. That is why the accidental strings are written out explicitly in @ several cases. @ When accidentals occur as part of the figuring, they have to be printed at an @ appropriate size and positioned nicely with respect to any adjacent figures. @ These three macros are defined in terms of the b macro, and print solitary @ accidentals, at available sizes that I think look reasonable. This is a fudge @ to avoid having to define different text strings in order to use other sizes. @ The sharp and natural use the full-size music font, but reduced to the "small @ cap" size, while the flat uses the reduced music font. @ These define a flat, natural, and sharp, respectively. The same strings are @ used when an accidental is required in one of the composite figures defined @ afterwards. *define bf &b(\mu\z~v') *define bn &b(\mf\\sc\zxv\40\) *define bs &b(\mf\\sc\zxv%) @ These are shorthands for common figurings. Well, they were common in a set of @ examples that I happened to be printing when I originally defined these, and @ they have been added to subsequently. You can easily extend them further by @ copying and modifying. *define 3 &b(3) *define 3f &b(3\mu\z~v') *define 3n &b(3\mf\\sc\zxv\40\) *define 4 &b(4) *define 42 &b(4)&b(2)&d *define 4c2 &b(\mf\k)&b(2)&d @ This version built from a 4 and a + *define 4cp2 &b(4\mu\yy\135\)&b(2)&d *define 43 &b(4)&b(3)&d *define 4f &b(4\mu\z~v') *define 4f3 &b(4\mu\z~v')&b(3)&d *define 4n2 &b(4\mf\\sc\zxv\40\)&b(2)&d *define 4n3 &b(4\mf\\sc\zxv\40\)&b(3)&d *define 4s &b(4\mf\\sc\zxv%) *define 5 &b(5) *define 53 &b(5)&b(3)&d *define 54 &b(5)&b(4)&d *define 5c &b(\mf\\179\) @ This version uses a 5 and a + *define 5cp &b(5\mu\x~vyyy\135\) *define 5csb &b(\mf\\179\)&bs&d @ This version uses a 5 and a + *define 5cpsb &b(5\mu\x~vyyy\135\)&bs&d *define 5f &b(5\mu\z~v') *define 5sb &b(5)&bs&d *define 6 &b(6) *define 6c &b(\mf\s) @ This version uses a 6 and a rotated thick barline @ *define 6cp &b(6)&b(\mf\\66\)/s3/u4.5/r3.9/rot70 @ This version uses a 6 and a rotated + *define 6cp &b(6)&b(\mu\\135\)/u3.5/r2/rot25 *define 64 &b(6)&b(4)&d *define 64c &b(6)&b(\mf\k)&d @ This version uses a 4 and a + *define 64cp &b(6)&b(4\mu\yy\135\)&d *define 642 &b(6)&b(4)&d&b(2)&d&d *define 65 &b(6)&b(5)&d *define 6f &b(6\mu\z~v') *define 6fb &b(6)&bf&d *define 6f4 &b(6\mu\z~v')&b(4)&d *define 6n &b(6\mf\\sc\zxv\40\) *define 6s &b(6\mf\\sc\zxv%) *define 7 &b(7) *define 72f &b(7)&b(2\mu\z~v')&d *define 742 &b(7)&b(4)&d&b(2)&d&d *define 75 &b(7)&b(5)&d *define 75c2 &b(7)&b(\mf\\179\)&d&b(2)&d&d @ This version uses a 5 and a + *define 75cp2 &b(7)&b(5\mu\x~vyyy\135\)&d&b(2)&d&d *define 7c &b(\mf\j) *define 7nb &b(7)&bn&d *define 7s &b(7\mf\\sc\zxv%) *define 7sb &b(7)&bs&d *define 7s3 &b(7)&bs/l4&d&b(3)&d *define 7u &b(7_) *define 86 &b(8)&b(6)&d *define 95 &b(9)&b(5)&d *define 97 &b(9)&b(7)&d *define 9fsb &b(9\mu\z~v')&bs&d *define bu &b(\mf\~\rm\_) *define bus &b(\mf\~\rm\_)&bs&d @ End of figured bass macros.