Philip's Music Writer (PMW) is a computer program for high quality music typesetting. Originally written for Acorn RISC OS computers (where it was called PMS), there is now a version that runs on Unix and Unix-like systems. This can also be made to run on MacOS and on Windows in the Cygwin environment. PMW is distributed as a source tarball and licenced under the GNU GPL.
Download the source for the current release: pmw-4.51.tar.gz (released 06-January-2021)
The author of PMW is Philip Hazel, whose email address is in the README file in the PMW distribution.
PMW operates by reading an input file containing an encoded description of the music; such a file can be constructed using any text editor or word processor. The music encoding is very straightforward and compact, and quick to enter.
Although such an input method may not be considered as user-friendly as pointing and dragging on the screen, it is a much faster way of inputting music, once the format of the input files has been learned. In addition, the usual facilities of a word processor, such as cutting and pasting, can be used to speed up entry, and PMW is able to provide text-based features such as repetition, macros, and included files.
The output of PMW is a PostScript file that can be printed on a PostScript printer, or viewed on screen, printed on a non-PostScript printer, or turned into a PDF by the use of GhostScript.
PMW comes with a PostScript outline font that contains all the musical shapes (notes, rests, accidentals, bar lines, clefs, etc.) that it requires. There is a man page for the command line options, and a 200-page manual that is distributed as a PDF file.
The PMW input encoding is designed to be easy for a musician to remember. It makes use of as many familiar musical notations as possible within the limitations of the computer's character set. Normally it will be input by a human using any available word processor or text editor. However, PMW input could also be the output of another computer program that captures (or generates) music.
PMW has many features which enable it to typeset a wide variety of music using standard notation. A number of these are listed below. The extensive manual describes the input notation in detail.
The input coding is easy to learn.
Bar lengths are automatially checked by the program, but this can be overridden for special effects.
The program automatically lays out the bars, splits the sequence of bars up into systems, and allocates the systems to pages. For special cases, space can be forced into a bar at any point; line breaks and page breaks can be forced after any bar. Alternatively, a pre-imposed layout in terms of the number of bars for each system (varying per system) and the number of systems for each page can be specified.
Conditional if-then-else facilities are available in the input, thus allowing several different versions of a piece to be output from the same basic source.
Magnification or reduction; music can be printed at any size. Some staves can be printed smaller or larger than the others.
Page length and width can be specified as required.
Any number of title lines; page heading and footing lines; footnotes; centring and right-justifying facilities; spacing, type size and type font can be specified for each heading and footing line.
Up to 63 staves in a system.
Staves can be suspended (i.e. not printed) for parts of the piece where they have a long sequence of rest bars; resumption of printing is automatic.
Any combination of staves is selectable for printing (thus allowing the extraction of individual parts or groups of parts).
The spacing between staves and betwen systems is individually controllable, and can be varied within the piece.
Staves can be overprinted, allowing two independent parts to share a stave in full score; stem and tie directions can be forced.
Bar lines can be solid through each system (set of staves), or broken after each stave, or broken as specified by the user.
Chords are handled automatically, including printing some noteheads on the wrong side of the stem and the positioning of accidentals.
The amount of horizontal space after each note type can be specified at the start and altered in the middle of the piece if necessary.
Treble, alto, tenor, baritone, bass, deep bass, soprano, and mezzo-soprano clefs; the treble and bass clefs can have `8' above or below them; music entered in one clef can be printed in another. Clefless music can be printed, and the percussion H-clef is also supported.
PMW supports breves, semibreves, minims, crotchets, quavers, semiquavers, demisemiquavers and hemidemisemiquavers.
Round, diamond and cross-shaped note heads are available; also stemless notes and stems without note heads.
Beaming of quavers, semiquavers, etc., with sloping beams (the slope can be specified if necessary); whether to beam or not is controlled by the user; part-broken beams (all but the primary beam broken) are available. Beams with notes on either side of them can be printed. Beaming over rests and over bar lines is supported.
Double sharps and double flats are supported; accidentals can be in round or square brackets, or printed above notes if so specified. There is some minimal support for half sharps and half flats.
There is automatic centring of full bar rests.
There is automatic support for many bars rest; they are automatically collapsed into a single long-rest bar when printing parts (though this can be overridden if not required).
Tied notes and glissando markings are automatically processed when they cross bar lines and line ends.
Automatic cautionary time and key signatures are printed at the end of a line when the change happens at the start of the next line. This can be suppressed if not required.
Custom, non-standard key signatures are available. There is also support for printing key signatures in non-standard ways.
There is support for pieces where different staves use different time signatures.
Triplets, duplets and other non-standard rhythms are correctly positioned.
Repeat signs can be at bar ends or in the middle of bars.
Grace notes, independently beamed if necessary, are supported.
There are many expression marks accents, mordants, turns, tremolo (on single notes and between notes), arpeggio and spread signs on chords, etc.
First, second and nth time bars are supported; you can define what is actually printed.
Text can be printed at the start of each stave; separate text available for the first stave and for subsequent staves; can be changed during the piece; can be printed vertically.
Rehearsal letters and bar numbers can be printed, either at line starts or every so many bars, with or without enclosing boxes or circles.
Transposition of whole piece or individual parts is supported, with some options for handling pieces where the tonality is different to the key signature. There is also a special key signature with no accidentals which does not transpose.
Crescendo and decrescendo marks (hairpins) are available.
Text can be printed anywhere in the music: p f mf ff etc. and arbitrary words; roman, italic, bold, bold-italic and other typefaces; any available font can be used at any arbitrary size; musical characters are available in text. From release 4.10, text coding is Unicode in UTF-8 format, and all characters in PostScript text fonts are accessible.
Vocal underlay, overlay, and figured bass markings can be printed at arbitrary sizes; vocal underlay and overlay has support for extender lines and automatically drawn rows of hyphens. There is no limit on the number of verses.
Phrasing marks and long slurs: There is user control over the end points and the degree of curvature where necessary. There is no limit on the number of simultaneous slurs. Dashed slurs, and wiggly (S-shaped) slurs are available.
Cue bars can be printed in small notes in parts; if-then-else facilities allow them to be omitted in the score.
Indenting of the initial system bracket allows for the printing of incipits.
Multiple movements can be input in a single input file.
There is even some rudimentary support for printing music from right to left, something that is sometimes done in countries whose language is written that way.
And much, much more!