&dhucpackage; &dhsection;

&dhpackage;

translate ABC music notation to PostScript (or SVG)

          &dhpackage;

          options
          abc-file file-options ...

          &dhpackage;
          -h

## DESCRIPTION

`&dhpackage;` translates tunes written in the ABC music notation format to customary sheet music scores in PostScript or SVG. It is based on `abc2ps` 1.2.5 and was developed mainly to print Baroque organ scores that have independent voices played on multiple keyboards and a pedal-board. The program has since been extended to support various other notation conventions in use for sheet music.

Options given immediately after the command name apply to the run as a whole; options given after an ABC file name apply to that file.

Formatting parameters can also be set in `format files' and in the ABC files themselves.

## OPTIONS

Options may be grouped if they have no arguments; the last option in a group may have an argument.

Where appropriate, starting an option (group) with `+`, or finishing it with `-`, disables the option(s).

`--`parameter` `value``

- Set formatting parameter `parameter` to `value`. Values established in this way will override values given in format files, and be implicitly `lock`ed. See below for a list of formatting parameters.

`-a `a``

- Maximal horizontal compression when staff breaks are chosen automatically. Must be between 0 and 1 (default: 0.65) See the `maxshrink` parameter below.

`-A`

- This option (`annotate') inserts reference elements into the PostScript or SVG output.

`-B `b``

- Try to typeset `b` bars on each staff line. See the `barsperstaff` formatting parameter below.

`-b `b``

- Start measure numbering at `b`. See the `measurefirst` formatting parameter below.

`-c`

- The continuation symbol is implicitly appended to each music line. This amounts to automatic line breaking. See the `continueall` formatting parameter below.

`-D `directory``

- Search format files in `directory`.

`-d `length``

- Set the minimum vertical interstaff space to `length` (default: 46pt). See the `staffsep` formatting parameter below.

`-E`

- Output is generated in EPS format, one file per page.

  In this mode, each tune is written to a separate numbered file unless the `-O` is given; output cannot be directed to standard output.

  EPS files are useful for embedding into PostScript documents, but can also be used to generate images in (pixel-oriented) graphics formats via GhostScript.

`-e `list``

- Select which tunes from an ABC file to print. `list` is a comma-separated list of tune numbers (as per the `X:' header). The `-e` option must occur after an ABC file name and applies to that file. Ranges of tune numbers may be specified like `t1`-`t2`; `t2` may be omitted which means `all remaining tunes until the end of file'. Note that filtering may cause problems, e.g., with global (non-tune) definitions in the ABC file.

`-F `file``

- Read the format file `file`. If `file` does not have a suffix, `.fmt` is implied.

`+F`

- Do not read the default format file.

`-f`

- Enable flat beams in bagpipe tunes. See the `flatbeams`formatting parameter below.

`-G`

- Omit slurs on grace notes. See the `graceslurs` formatting parameter below.

`-g`

- Produce SVG output instead of EPS. In this mode, each tune goes to a separate numbered output file unless the `-O` is specified. If output is directed to standard output (`-O-`), all SVG images are output without an XML header.

`-H`

- Display the current values of the formatting parameters.

`-h`

- Display program usage hints and quit.

`-i`

- Display red circles around errors in PostScript output

`-I `length``

- Indent the first line of the tune by `length` (default: 0). See the `indent` formatting parameter below.

`-j`b``b``

- Output a measure number every `b` measures. If `b` is 0, the measure number appears at the left of each staff. The trailing `b` causes a box to be drawn around each measure number (default: no measure numbering).

  See the `measurenb` formatting parameter below.

`-l`

- Generate landscape output. See the `landscape` formatting parameter below.

`-M`

- Suppress end-of-tune lyrics. See the `writefields w` parameter below.

`-m `length``

- Set the left margin to `length` (default: 1.8cm). See the `leftmargin` formatting parameter below.

`-N`mode``

- Number pages according to the `mode`:

  `0`

- no page numbers

`1`

- page numbers at top left of page

`2`

- page numbers at top right of page

`3`

- page numbers at top left of even-numbered pages, top right of odd-numbered pages

`4`

- page numbers at top right of even-numbered pages, top left of odd-numbered pages

For compatibility, `-N` is equivalent to `-N2` (default: `-N0`).

If a header is defined using the `header` formatting parameter, this option is ignored.

`+N`

- Equivalent to `-N0` (no page numbering).

`-n`

- Include notes and history from ABC tune `N:' fields. See the `writefields` formatting parameter below.

`-O `directory``name``

- Define the output file directory and/or name. By default, the output goes to the current directory, and the file name is `Out.ps' for PostScript output, `Out`nnn`.eps' for EPS output (see `-E`), `Out`nnn`.svg' for SVG output (see options `-g` and `-v`), or `Out.xhtml' for XHTML+SVG (see `-X`).

  When `name` is present, it replaces `Out' in the output file name. If `name` is `=`, it is replaced by the name of the ABC source file.

  If `name` is `-` and standard PostScript or embeddable SVG output is selected, the output will be sent to standard output.

`+O`

- Revert to the default output directory and file name.

`-q`

- Quiet mode; display only error messages.

`-s `scale``

- Set the page scale factor to `scale`. Note that the header and footer are not scaled (default: 0.75).

  See the `scale` formatting parameter below.

`-S`

- Secure mode; disables file inclusion via `%%format` and `%%EPS` and disallows direct PostScript injection via `%%beginps` and `%%postscript`.

`-T`n``voice``, `+T`n``voice``

- Activate (or deactivate) tabulature drawing. `n` is the tabulature number as defined in `%%tabulature` (up to a maximum of 8 tabulatures), and `voice` is the voice name, full name or subname as found in `V:`. When this is absent, the option applies to all voices. Up to 4 such options may be given. See also `format.txt`.

`-u`

- Use implicit decorations as in `abc2ps` (default: off). See the `abc2pscompat` formatting parameter below.

`-V`

- Output version number and quit.

`-v`

- Produce SVG output instead of PostScript. In this mode each page goes to a different numbered file. Output to standard output is disallowed.

`-w `length``

- Adjust the right margin such that the staff width is `length` (default: none).

  See the `staffwidth` formatting parameter below.

`-x`

- Include the `X:' tune number in the title. See the `writefields` formatting parameter below.

`-X`

- Produce XML+SVG output instead of PostScript. See `-O` for output file naming.

`-0`

- Split tunes across page breaks if necessary. See the `splittune` formatting parameter below.

`-1`

- Output one tune per page. See the `oneperpage` formatting parameter below.

## FORMATTING PARAMETERS

The following formatting parameters can be used in format files. They can also occur in ABC files when they are preceded by `%%`, or on the command line (using a double dash to introduce them).

Parameters specified on the command line or within an ABC file override definitions of the same parameter in a format file.

If the `lock` keyword is specified at the end of a parameter list, the value cannot be changed later unless the later definition also uses `lock`. There is an implicit `lock` at the end of any parameter specified on the command line.

Abcm2ps distinguishes between "global" and "local" parameter settings. Global settings can be established through the use of format files, or by specifying formatting parameters outside of tunes, i.e., at the beginning of a file before the first tune's `X:' or `T:' line, or after the blank line at the end of a tune before the next tune's `X:' or `T:' line. Local settings can be specified inside a tune, and will revert to the current global setting at the end of the tune. Do also note that the result of setting some parameters depends on where they occur in the source file, i.e., setting `topmargin` within a tune applies only to the second and subsequent pages of that tune, not the first page, since when the local `topmargin` setting is seen, output of the tune has already started.

`abc2pscompat `boolean``

- If true, set `M` as the `+tenuto+` decoration and do a pitch translation if the notes are too high for a bass clef. Also, an octave translation is applied to bass and alto parts (default: 0; command line: `-u`)

`alignbars `int``

- Align the bars of the next `int` lines of music. This works only when the music contains only one voice (no `V:` or `%%staves`) (default: 0).

`aligncomposer `int``

- Define where to display the composer field. A negative value displays it flush-left, a value of zero centered, and a positive value flush-right (default: 1).

`annotationfont `font` `encoding` `size``

- Set the annotation font to `font` with size `size` (default: Helvetica 12)

`autoclef `boolean``

- Adjust the clefs when they are not defined in `K:' or `V:' lines (default: 1).

`barnumbers `int``

- Synonym for `measurenb`.

`barsperstaff `int``

- Try to typeset with `int` bars per line (default: 0; command line: `-B`, `+b`)

`beginps`

- Start a sequence of PostScript code lines extending until the next `endps` line. This parameter may only occur within ABC and format files, not on the command line.

  Each line between `beginps` and `endps` is included in the PostScript output file. The material may not exceed 128 KiB in size.

  When the output format is SVG, the PostScript code is executed by the small built-in PostScript interpreter. Sequences which cannot be executed (like font redefinitions) must be made conditional based on the `svg` symbol:

      /svg where {pop} {
      PostScript code that abcm2ps cannot execute
      } ifelse

`beginsvg`

- Start a sequence of SVG code lines extending until the next `endsvg` line. This parameter may only occur within ABC and format files, not on the command line.

  Each line between `beginsvg` and `endsvg` is included in the SVG output file. This makes it possible to add CSS to the generated SVG files. The parameter is ignored if SVG generation has already started (i.e., after the first `K:` information field.)

`bgcolor `colour``

- Define the background colour of SVG images. This parameter is only used when the output is pure SVG (options `-g` and `-v`).

  The `colour` may be a colour name (`white`) or an RGB colour in hexadecimal notation (`#faf0e6`).

`botmargin `length``

- Set the bottom margin to `length` (default: 1cm)

`breakoneoln `boolean``

- If this is set, on finding an end-of-line (eoln), pretend that there was a space before the next note or rest. This prevents a beam to be continued between two input lines (default: 1).

`bstemdown `boolean``

- If this is set, the stem of the note on the middle of the staff extends downwards. Otherwise it extends up or down depending on the preceding note (default: 0).

`comball `boolean``

- If this is set together with `combinevoices`, voice combination takes place in all cases. Otherwise, notes which are too close together in pitch (i.e., a second interval, in unison, or inverted) are not combined.

`combinevoices `boolean``

- If this is set, simultaneous notes of the same duration belonging to voices on the same staff are combined into chords. (default: 0).

`composerfont `font` `encoding` `size``

- Set the `composer' font to `font` with size `size` (default: Times-Italic 14)

`composerspace `length``

- Set the vertical space before the composer name to `length` (Default: 0.2cm)

`contbarnb `boolean``

- If this is not set, the bar numbers of second repeats are set to those of the corresponding first repeats. If this is set, all bars are numbered sequentially (default: 0).

`continueall `boolean``

- If this is set to true, ignore the line breaks in a tune (default: 0; command line: `-c`, `+c`)

  This parameter is deprecated in favour of `linebreak <none>`.

`dateformat `format``

- Format for date and time output. The admissible values of this parameter are described in the documentation for the strftime(3) C library function. Note that percent signs need to be escaped (default: "\%b \%e, \%Y \%H:\%M")

`deco `name` `c_func` `ps_func` `h` `wl` `wr` `str``

- Define a decoration. This is an experimental feature which is subject to change in future releases and requires good knowledge of the internals of abcm2ps. See the files `format.txt` and `deco.abc` for details.

`decoration `character``

- Define the decoration separator. It may be set to either `!` (the default) or `+` (for compatibility with the ABC 2.0 standard).

`dynalign `boolean``

- When set, horizontally align dynamic marks (default: 1)

`dynamic `position``

- Set the position of dynamic marks (`crescendo', `diminuendo') in relation to the staff. The `position` may be 0 (or `auto`) for automatic positioning depending on the presence and position of lyrics, 1 or `above` to place them above the staff, or 2 or `below` to place them below the staff.

  If this parameter occurs outside a tune or inside a tune header, it applies to all voices. If it occurs inside a tune body, it applies to the current voice only.

  This parameter may also be set using the `dyn=` key of the `V:` information field.

`encoding `enc``

- Define the character encoding of subsequent ABC strings. This parameter is the same as `abc-charset`. The recognised charset encodings and associated integer values are: `us-ascii` or `utf-8` (0); `iso-8859-1` or `latin1` (1); `iso-8859-2` or `latin2` (2); `iso-8859-3` or `latin3` (3); `iso-8859-4` or `latin4` (4); `iso-8859-9` or `latin5` (5 or 9); `iso-8859-10` or `latin6` (6 or 10). The value `native` means that special characters are directly accessed from PostScript code.

`flatbeams `boolean``

- Draw flat beams (default: 0; command line: `-f`).

`font `font` `encoding` `scale``

- Define a font and its encoding. Use this parameter when you want to refer to specific fonts in ABC files/tunes. It must occur before any PostScript output is written, generally in a format file.

  `encoding` defaults to the encoding set up by the `encoding` parameter.

  `scale` is the width factor to apply to the Times-Roman character width. It is needed to adjust the string width in case computation with the default widths gives erroneous values; if strings clash, set `scale` to a value less than 1.0, if there is too much space, set it to a value greater than 1.0.

`footer `text``

- Define the text printed at the bottom of every page. There may be one or two lines. When there are two lines, these must be separated by the characters `\\n' (not a real newline). Each of the lines consists of three areas, left, center and right, which are separated by tabs (real tabs, not '\\t') and may be empty - if the left area is empty, the `text` must be double-quoted.

  If the footer begins with `-', it will not be printed on the first page of the document.

  The `$' character introduces variable expansion:

  `$d`

- The date and time of last modification of the current ABC input file

`$D`

- The current date and time

`$F`

- The current input file name

`$I` `x`

- The value of header `x` of the tune

`$P`

- The current page number

`$P0`

- The current pagenumber (when even)

`$P1`

- The current pagenumber (when odd)

`$T`

- The current tune title

`$V`

- `abcm2ps-' followed by the program's version number

For example, the command line option `-N3` is equivalent to `%%header "$P0 $P1"' (note the two tabs). (Default: none)

`footerfont `font` `encoding` `size``

- Set the footer font to `font` with size `size` (default: Times-Roman 12)

  Note that the footer is not scaled.

`format `filename``

- Read the format (or PostScript) file `filename` (default: none; command line: `-F`).

`gchord `position``

- Set the position of guitar chords in relation to the staff. `position` may be: 0 or `auto` for automatic positioning (usually above the staff), 1 or `above` for positioning above the staff, or 2 or `below` for positioning below the staff.

  If this parameter occurs outside a tune or inside a tune header, it applies to all voices. If it occurs inside a tune body, it applies to the current voice only.

  This parameter may also be set using the `gchord=` key of the `V:` information field.

`gchordbox `boolean``

- Draw a box around guitar chords. Can be set to `true' using `%%gchordfont' below. (Default: 0)

`gchordfont `font` `encoding` `size` box`

- Set the guitar chord font to `font` with size `size`. If `box` is specified, draw a box around guitar chords (default: Helvetica 12, no box)

`graceslurs `boolean``

- Draw slurs on grace notes if true (default: 1; command line: `-G`, `+G`)

`gracespace `float` `float` `float``

- Define the space before, between, and after the grace notes (default: 6.5 8.0 12.0)

`header `text``

- Define the text printed at the top of every page. See the `footer` parameter above for the syntax (default: none)

`headerfont `font` `encoding` `size``

- Set the header font to `font` with size `size` (default: Times-Roman 12)

`historyfont `font` `encoding` `size``

- Set the font for history entries to `font` with size `size` (default: Times-Roman 16)

`hyphencont `boolean``

- If an under-staff lyrics line ends with a hyphen, put another hyphen at the beginning of the next line (default:0)

`indent `length``

- Indent the first line of a tune by `length` (default:0; command line: `-I`)

`infofont `font` `encoding` `size``

- Set the information line font to `font` with size `size` (default: Times-Italic 14)

`infoline `boolean``

- Display the rhythm (`R:') and the area (`A:') of the tune on a single `information line' before the first music line (default: 0)

`infoname `letter` `tag``

- Define the headers to be printed after a tune when `writehistory` is set. The `tag` is printed before the actual header value. By default, this outputs the R, B, S, D, N, Z, and H headers, with tags `Rhythm:', `Book:', `Source:', `Discography:', `Notes:', `Transcription:', and `History:', respectively.

`infospace `length``

- Set the vertical space before the information line to `length` (default: 0).

`landscape `boolean``

- Set page orientation to landscape if true (default: 0; command line: `-l`, `+l`).

`leftmargin `length``

- Set the left margin to `length` (default: 1.8cm; command line: `-m`)

`linebreak `separators``

- Define the character(s) for breaking music lines. `separators` is a blank-separated list of none, one, or more of: `>EOL<` (system end-of-line character, the default), `$`, `!`, or `>none<`.

  For compatibility, when `>EOL<` is in the list, the `!` character also causes a line break if it does not look like it is introducing a decoration.

  The value `>none<` must be the only value in the list. In this case, the program computes the line breaks by itself. The same behaviour occurs if the `separators` list is empty. This replaces the former `continueall 1` parameter.

`lineskipfac `float``

- Set the factor for spacing between lines of text to `float` times the font size (default: 1.1)

`linewarn `boolean``

- If set, outputs a warning when there are too few or too many elements in a music line (default: 1)

`maxshrink `float``

- Set how much the output may be compressed horizontally when staff breaks are chosen automatically. `float` must be between 0 and 1 (default: 0.65; command line: `-a`)

`maxstaffsep `length``

- Set the maximum vertical inter-staff space to `length` (default: 2000pt)

`maxsysstaffsep `length``

- Set the maximum vertical system inter-staff space to `length` (default: 2000pt)

  When this parameter occurs on the global level or in the tune header, it applies to all staves. Otherwise it defines the maximum vertical offset of the next staff.

`measurebox `boolean``

- Draw a box around the measure numbers if true (default: 0; command line: `-j` or `-k`).

`measurefirst `int``

- Start measure numbering of the tune at `int`. This parameter is obsolete and should be replaced with `%%setbarnb` (outside the tune body)

`measurefont `font` `encoding` `size` box`

- Set the font for measure numbers to `font` at size `size`. If box is specified, draw a box around the measure number (default: Times-Italic 14, no box).

`measurenb `int``

- Draw a measure number every `int` bars. If `int` is 0, the measure number appears at the left end of each staff. If `int` is -1, no measure numbers are displayed at all (default: -1; command line: `-j` or `-k`).

`musiconly `boolean``

- If true, no lyrics are output (default: 0; command line: `-M`, `+M`)

`musicspace `length``

- Set the vertical space before the first staff of a tune to `length` (default: 0.2cm)

`notespacingfactor `float``

- Set the note spacing factor to `float`. This value is used to compute the natural space notes take up. The base space of the crotchet (quarter note) is always 40pt. When the duration of a note type is twice that of another note type, the space it takes up is multiplied by this factor.

  The default value increases the note space by a factor of 2 when the corresponding note's value increases by a factor of 4. That is, the space of a semibreve is 80pt and that of a semiquaver is 20pt.

  Setting this value to 1 sets all note spaces to 40pt (default: 1.414).

`oneperpage `boolean``

- If true, output one tune per page; if false, multiple tunes are output per page if there is sufficient room (default: 0; command line: `-1`, `+1`).

`ornament `position``

- Set the position of ornaments (like mordent, trill, ...) in relation to the staff. `position` may be: 0 or `auto` (default) for automatic positioning (usually above the staff), 1 or `above` for positioning above the staff, or 2 or `below` for positioning below the staff.

  If this parameter occurs outside a tune or inside a tune header, it applies to all voices. If it occurs inside a tune body, it applies to the current voice only.

`pageheight `length``

- Set the page height to `length` (default: hardcoded)

`pagewidth `length``

- Set the page width to `length` (default: hardcoded)

`parskipfac `float``

- Set the factor for spacing between text paragraphs to `float` (default: 0.4)

`partsbox `boolean``

- Draw a box around the part names if true (default: 0)

`partsfont `font` `encoding` `size` box`

- Set the font for part names to `font` with size `size`. If `box` is specified, draw a box around the part names. (default: Times-Roman 15)

`partsspace `length``

- Set the vertical space before a new part to `length` (default: 0.3cm).

`pdfmark `mode``

- If `mode` is different from 0, output PostScript marks to generate a PDF index after translation to PDF.

  If `mode` is greater than 1, generate marks for titles and subtitles; if `mode` equals 1, generate marks for main titles only (default: 0).

`postscript `text``

- Define a postscript sequence to be included in the header of the output file. This formatting parameter may be used to override any postscript function or to define new functions for use in `deco`. It should be processed before any output occurs, that is, in a format file or at the beginning of the first ABC file.

`repeatfont `font` `encoding` `size``

- Set the font for repeat bracket numbers/texts to `font` at size `size`.

`rightmargin `length``

- Set the right margin to `length` (default: 1.8cm)

`scale `float``

- Set the global page scale factor to `float`. This does not apply to headers and footers (default: 0.75; command line: `-s`).

`setdefl `boolean``

- When true, output some indications about the note/chord and/or decorations for purposes of customisation. These indications are stored in the PostScript variable `defl`. Note: This is a potential compatibility problem. The parameter was introduced in version 4.9.4. (default: 0)

`setfont-1 `font` `encoding` `size``

`setfont-2 `font` `encoding` `size``

`setfont-3 `font` `encoding` `size``

`setfont-4 `font` `encoding` `size``

- Set up alternate fonts for strings. In most strings, you can switch to one of the alternate fonts using `$1`..`$4`; `$0` switches back to the default value for that string. (default: Times-Roman 0)

`shiftunisson `boolean``

- Usually in multi-voice tunes, when two voices are in unison there is often only one note head. If this flag is set, two note heades are output (one is shifted) if one is a minim (half note) and the other a crotchet (quarter note) or shorter, i.e., a "black" note, or if one note is dotted and the other is not. The parameter is really spelled "shiftunisson" (default: 0).

`slurheight `float``

- Set the slur height factor to `float` (default: 1.0).

`splittune `boolean``

- If false, a tune is output on a new page if it doesn't fit on the one currently being output. If true, a tune may be split across page breaks (default: 0).

`squarebreve `boolean``

- If true, display breve notes in a square shape (default: 0)

`staffnonote `boolean``

- If false, staves not containing notes are suppressed. This includes staves that only contain visible rests (default: 1)

`staffsep `length``

- Set the vertical inter-staff space to a minimum of `length` (default: 46pt; command line: `-d`)

`staffwidth `length``

- Set the right margin such that the staff width is `length` (default: none - but see `paperwidth` and `rightmargin`).

`stemheight `float``

- Set the stem height to `float` (default: 20.0)

`straightflags `boolean``

- If true, use straight flags on stems (mostly useful for bagpipe tunes (default: 0)

`stretchlast `boolean``

- If true, stretch the last staff of a tune to fill the whole line even though it may be underfull (default: 0)

`stretchstaff `boolean``

- If true, stretch all underfull staves to fill the whole line (default: 1)

`subtitlefont `font` `encoding` `size``

- Set the font for subtitles (second and subsequent `T:' headers in a tune) to `font` with size `size` (default: Times-Roman 16)

`subtitlespace `length``

- Set the vertical space before subtitles (second and subsequent `T:' headers in a tune) to `length` (default: 0.1cm).

`sysstaffsep `length``

- Set the minimum distance between staves in a system to `length` (default: 36pt).

  This parameter applies to all staves if it occurs on the global level or within the tune header. Otherwise, it defines the minimum distance to the next staff.

`tempofont `font` `encoding` `size``

- Set the font for tempo (metronome) indications to `font` with size `size` (default: Times-Bold 15)

`textfont `font` `encoding` `size``

- Set the text font to `font` with size `size` (default: Times-Roman 16)

`textoption `option``

- Set the default text option to `option`. This option is used for text between `%%begintext` and `%%endtext`, `%%text`, and `%%EPS`. `option` may be a keyword; see `begintext` for values.

  When `option` is `skip`, no text (nor EPS) is output.

`textspace `length``

- Set the vertical space before text blocks to `length` (default: 0.5cm).

`timewarn `boolean``

- If true, a cautionary time signature is added to the end of the line before if a time signature change occurs at the beginning of a line of music (default: 0).

`titlecaps `boolean``

- If true, output the tune title in uppercase letters (default: 0)

`titlefont `font` `encoding` `size``

- Set the title font to `font` with size `size` (default: Times-Roman 20)

`titleformat `text``

- Defines the format of the tune title. This format overrides the standard way the tune title is displayed. `text` is a sequence of letters, numbers, commas, plus and minus signs.

  A letter stands for an ABC header (reasonable values include A, B, C, D, H, N, O, P, R, S, T, X, and Z, but any letter may occur) and can optionally be followed by a number. This number may be 0 (to center the header), 1 (to display it flush-right), or -1 or - (to display it flush-left); if no number is given the default is 0.

  A plus sign may appear between two fields, in which case these fields are concatenated (this only works if they are of the same type and alignment).

  A comma starts a new `box' below the previous one. In each box, the fields are placed in their respective alignment zones.

  Unrecognized characters will be ignored.

  As an example, `%%titleformat R-1 P-1 Q-1 T C1 O1, T + T N1' will display two stacked boxes. The first box contains the rhythm, part, and tempo on the left, the first (main) title in the centre, and the composer and origin on the right. The second box (below the first) will contain the concatenated subtitles (if any) in the centre and any notes on the right.

`titleleft `boolean``

- If true, output the tune title flush left (instead of centered) (default: 0)

`titlespace `length``

- Set the vertical space before the tune title to `length` (default: 0.2cm).

`titletrim `boolean``

- If true, if the last word of a title starts with a capital letter and is preceded by a comma and a space, this word is moved to the beginning of the title. For example, `T:College Hornpipe, The` is printed as `The College Hornpipe` (default: 1).

`topmargin `length``

- Set the top margin to `length` (default: 1cm)

`topspace `length``

- Set the vertical space at the top of a tune to `length` (default: 0.8cm)

`transpose `int` `#`|`b``

- Transpose the music by `int` (a signed number) halftones for display.

  If this parameter appears on the global level or inside a tune header, it applies to all voices. If it appears inside a tune body, it applies to the current voice only.

  If a `#` or `b` is present, the new key signature(s) will have sharps or flats in case of enharmonic keys.

  Note that textual guitar chords will not be transposed.

`tuplets `when` `what` `value``

- Define how to draw tuplets. The `when` parameter can be `0` (to decide automatically whether to draw a slur or bracket over the tuplet), `1` (to never draw one) or `2` (to always draw one). The `what` parameter defines what to draw: `0` means a bracket, `1` a slur; `2` extends beams across rests (does not work yet). The `value` parameter defines how to annotate the tuplet: `0` means to write a simple number (`p`), `1` writes nothing, and `2` writes a ratio (`p`:`q`).

`vocal `position``

- Set the position of lyrics in relation to the staff. `position` may be: 0 or `auto` (default) for automatic positioning (usually above the staff), 1 or `above` for positioning above the staff, or 2 or `below` for positioning below the staff.

  If this parameter occurs outside a tune or inside a tune header, it applies to all voices. If it occurs inside a tune body, it applies to the current voice only.

`vocalabove `boolean``

- If true, output lyrics above the staff (instead of below it) (default: 0)

`vocalfont `font` `encoding` `size``

- Set the font for lyrics inside a tune to `font` with size `size` (default: Times-Bold 13)

`vocalspace `length``

- Set the vertical space between a staff and its lyrics to `length` (default: 23pt)

`voicefont `font` `encoding` `size``

- Set the font for voice names (default: Times-Bold 13).

`volume `position``

- Set the position of volume indications (`!p!`, `!fff!`, ...) in relation to the staff.

  `position` may be: 0 or `auto` (default) for automatic positioning (usually below the staff), 1 or `above` for positioning above the staff, or 2 or `below` for positioning below the staff.

  If this parameter occurs outside a tune or inside a tune header, it applies to all voices. If it occurs inside a tune body, it applies to the current voice only.

`wordsfont `font` `encoding` `size``

- Set the font for lyrics at the end of a tune to `font` with size `size` (default: Times-Roman 16)

`wordsspace `length``

- Set the vertical space before the end-of-tune lyrics to `length` (default: 0.5cm)

`writefields `list` `boolean``

- Determines which ABC information will be output. `list` is a list of ABC header letters. `boolean` determines whether that header will be output or not. (default: `COPQTWw 1`; command line: `-M`, `-x`)

The following formatting parameters can only occur inside tunes and not in a format file:

`%%begintext `mode``

- Start printing a free-form text. The text to be printed appears on the subsequent lines of the the input file up to a line containing `%%endtext`. The text lines may start with `%%`.

  The `parameter` may be:

  `obeylines`

- Line breaks in the input file are kept (default)

`align` or `justify`

- Lines are justified

`ragged` or `fill`

- Line breaks are ignored but output is left-justified

`center`

- Lines are centered

`skip`

- The text lines are not printed at all

If `mode` is omitted, it defaults to the current value of `%%textoption`.

Inside the text, an empty line starts a new paragraph. Page breaks cannot occur in the middle of a paragraph.

`%%center `text``

- Print one line of centered text

`%%EPS `filename``

- Include `filename` as an EPS file

  The file content is aligned to the left or right or centered according to the current value of `%%textoption`.

`%%endtext`

- Finish a block of free text started by `%%begintext`

`%%multicol `command``

- Define multicolumn printing. `command` may be:

  `start`

- Save the current vertical position and left and right margins. These margins may then be changed to print music or text.

`new`

- Reset the vertical position to the place of the previous `start` and restore the left and right margins. These can then be changed again to display another column.

`end`

- Restore the left and right margins and skip down the page to a `safe place'.

This command may also be used to group some tunes and text on the same page.

`%%newpage `int``

- Start a new page, restarting page numbering from `int` if applicable.

`%%repbra `int``

- Repetition brackets are normally displayed as written in a voice. `%%repbra 0` suppresses them for the current voice.

`%%repeat `n` `k``

- Replace a sequence of notes by one or many repeat marks. When placed after a bar line, `n` indicates the number of measures to be repeated, either 1 or 2. If `n` is 1, `k` gives the number of repetitions of the preceding measure. If `n` is 2, `k` is not used. When placed after a note or rest, `n` gives the number of notes and rests to be repeated, and `k` gives the number of repeats. When omitted, `n` and `k` default to 1.

`%%score `definition``

- See below.

`%%sep `h1` `h2` `length``

- Print a separator (line) of length `length` with vertical space `h1` above and `h2` below (defaults: `h1` and `h2`: 0.5cm; `length`: 3cm)

`%%setbarnb `int``

- Set the number of the next measure to `int`. When not inside a tune body, this is equivalent to `%%measurefirst`.

  If the option appears at the beginning of the tune (after `K:`), the second measure will have the new number.

`%%staff `+`|`-` `num``

- Put the following material on staff `num` (or the `num`-th previous or next staff if a sign is given). This will lead, e.g., to beams between notes in different staves. Useful for keyboard music; see, for example, `sample4.abc`.

`%%staffbreak `length` `f``

- Leave a space of `length` in the current staff. If `length` is greater than 0.5cm, the left side of the staff (system) is redrawn. In a multi-voice tune, a staff break must be specified in each voice.

  If the `f` is not given, the staff break is removed if it occurs at the start or the end of a line.

`%%staves `definition``

- See below.

`%%tablature `arguments``

- Define a tablature for the current voice. See `format.txt` for the details.

`%%text `text``

- Output a single line of text.

`%%vskip `length``

- Leave vertical space of height `length`. `length` may be negative, in which case the following material is moved closer to that above.

## ADDITIONAL FEATURES

### Clefs

Clefs can be given in `K:` and `V:` headers. The full syntax is

    clef=typeline+8|-8 middle=pitch

The ``clef=`' can be omitted when the `type` is a clef name.

`type` denotes the clef type. It may be:

A note pitch (`G`, `C`, or `F`)

- The pitch indicates which clef is meant: `G` is the treble clef, `C` the alto clef and `F` the bass clef. It also gives the name of the note that appears on the clef's line.

A clef name

- The available clef names are `treble` (clef gives the pitch for `G`), `alto` or `tenor` (`C`), and `bass` (`F`)

`perc` or `P`

- In percussion mode, accidentals change the glyphs used for note heads. By default, sharp notes are drawn as `x' and flat notes as circled `x'. This may be changed by redefining the PostScript functions `pshhd` and `pflhd`.

`none`

- No clef will be displayed.

The `line` gives the number of the line within the staff that the base clef will be written on. The default values are 2 for the treble clef, 3 for the alto clef, and 4 for the tenor and bass clefs.

The `+8` and `-8` options draw an 8 above or below the staff, respectively. ``middle=``pitch`' (or ``m=``pitch`', for short) is an alternative way of defining the line number of the clef: The `pitch` indicates what note will be displayed on the middle line of the staff.

When no clef is specified, clef changes between `bass` and `treble` will be inserted automatically.

### Multi-voice typesetting

Multiple voices may be defined within the header or the tune using

    V:name definition ...

where `name` is a word consisting of letters and digits only (like `violin1`). In the tune body, the following notes refer to this voice until another `V:` is encountered. A `definition` can be one of:

`clef=`...

- See above

`name=``name` or `nm=``name`

- The `name` will be displayed at the beginning of the first staff. It can contain `\\n` sequences which will force line breaks. If it contains whitespace it must be double-quoted.

`subname=``name` or `snm=``name`

- The `name` will be displayed at the beginning of all staves except for the first. It can contain `\\n` sequences which will force line breaks. If it contains whitespace it must be double-quoted.

`merge`

- The voice goes on the same staff as the previous voice.

`up` or `down`

- Forces the direction of the stems for the voice.

`dyn=up` or `dyn=down` or `dyn=auto`

- Forces positioning of dynamic marks (above or below the staff) or reverts to automatic positioning (the default)

`gstem=up` or `gstem=down` or `gstem=auto`

- Forces the direction of the stems of grace notes (always up or always down) or reverts to automatic positioning (the default)

`stem=auto`

- Reverts to automatic positioning of note stems (up or down) (the default)

`lyrics=up` or `lyrics=down` or `lyrics=auto`

- Places lyrics above or below the staff or reverts to automatic positioning (the default)

`gchord=up` or `gchord=down`

- Places guitar chords above (the default) or below the staff.

`stafflines=``value`

- Sets the number of lines on the staff in question. (default: 5)

`staffscale=``value`

- Sets the scale of the associated staff up to 3. (default: 1)

All other definitions are ignored.

By default, each voice goes on its own staff. The `%%staves `definition`' pseudo-comment can be used to control staff assignment. The `definition` consists of voice names (from `V:`) and pairs of parentheses, braces or brackets.

- When a voice name is not within a pair of special characters, it goes on a separate staff.

- For voice names enclosed in brackets, a bracket is displayed at the beginning of each line that joins the staves of the voices in question.

- For voice names enclosed in braces, all the voices go on two staves (keyboard score). There can be at most four voices between a single pair of braces.

- For voice names enclosed in parentheses, all the voices appear on a single staff.

The ``|`' character prevents measure bars from being drawn between two staves.

If `%%staves' occurs in a tune, all the voices not mentioned will not be output at all.

### The `%%score` directive

The `%%score` directive occurs in the ABC draft 2.0 standard and is similar to the `%%staves` specification described earlier. The rules are:

- Voice names within parentheses form a "voice group" and go on a single staff. A voice name that is not within parentheses forms its own voice group and goes on a staff by itself.

- Voice groups within braces form a "voice block" and are preceded by a big brace in the output. This is especially useful for keyboard music.

- Voice groups or voice blocks within brackets form a "voice block" and will be preceded by a big bracket in the output.

- If a ``|`' character occurs between two voice groups or voice blocks, the bar lines in all of the associated staves will be continuous.

- A single voice surrounded by two voice groups can be preceded by an asterisk to make it into a `floating' voice. This means that, for each note of the voice, a separate decision is made whether it is printed on the preceding or the following voice group's staff.

- Voices that appear in the tune body but not in the `%%score` directive will not be output at all. If there is no `%%score` directive, each voice will be output on its own staff.

- A `%%score` directive inside a tune resets the mechanism so voices can be removed or added.

### Voice overlay

You can add notes to a staff without introducing a complete extra voice by using the ampersand (`&`). A single measure can be split into two voices like

    |F2A2Bc&F2c2bc|

The `(&...&...&)` construction allows splitting multiple measures:

    |!f!(&GG<G|GG F=E| E2  E(_D/E)|_D D  C      D |C4- |C
         &DC<C|CC_D C|=B,2_B,B,   |_A,A,(G,/A,/)B,|F,4-|F,)zzD=E|

A double ampersand (`&&`) will allow overlaying more than two lines of music but this feature has not yet been implemented.

### Lyrics

Aligned lyrics under a staff are written as a `w:` line directly below the staff line. For example:

    edc2 edc2|
    w:Three blind mice, three blind mice

Each word in the `w:` line (delimited by blanks) is associated with one note, in sequence. The following special symbols modify this behaviour:

`*`

- Skips one note.

`-`

- Splits a word into two syllables which are associated with two adjacent notes. A `-' is drawn between them.

`|`

- Advances to the next bar line

`~`

- Is output as a space, but unites two words so they appear under a single note.

`_`

- Draws a thin underscore from the previous note to the next.

To include more than one line of lyrics, use multiple `w:` lines. To include hyphens without splitting a word over multiple notes, use `\-`.

If a word starts with a digit, this is interpreted as a stanza number and outdented a bit to the left.

### Slurs and ties

The direction of slurs and ties may be controlled using the `(,` and `('`, and `-,` and `-'`, constructions.

### Microtone pitches

Microtone pitches are indicated by a fraction after an accidental, as in `^3/4c`. When omitted, the numerator defaultes to 1 and the denominator to 2 (so `^/c` is the same as `^1/2c`). The numerator and denominator values may not exceed 256. There is built-in support for quarter-tone accidentals (1/2 and 3/2 sharps and flats); for other values, rendering functions must be defined using `%%postscript` (see `features.txt`).

### EPS inclusion

EPS files may be included inside tunes using the pseudo-comment `%%EPS `file`'.

## SEE ALSO

The original documentation can be found in files `features.txt`, `format.txt`, and `options.txt`, which on a Debian system are in `/usr/share/doc/abcm2ps`.

## AUTHOR

This manual page was written by &dhusername; <&dhemail;> for the &debian; system (but may be used by others). Permission is granted to copy, distribute and/or modify this document as long as its origin is not misrepresented.