Changes - abc2ps - A powerful sheet setting tool using the simple abc notation
 (HTM) git clone git://vernunftzentrum.de/abc2ps.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       Changes (19904B)
       ---
            1 
            2 17.03.99 Experimentally changed parsing so that the end of the header
            3          comes at the first music or V: line.  
            4 
            5          Note: according to the abc specs, the header ends with the K: line.
            6          However, nobody seems aware of this. For multistave music it is
            7          important exactly where the header ends, because info fields
            8          in the body of the music (outside the header) only operate on 
            9          the current voice. Info fields in the header operate on all 
           10          the voices.
           11 
           12 16.03.99 Fixed various reported bugs.
           13 
           14 25.01.99 Support fermata over a rest.
           15 
           16 ----- Version 1.3.3 -----
           17 
           18 
           19 10.12.98 New flag: -I writes the contents and page numbers to file Ind.ps.
           20 
           21 
           22 08.12.98 Fixed bug: transposing was wrong for clef changes.
           23 
           24 
           25 ----- Version 1.3.2 -----
           26 
           27 10.08.98 Added new codes for accents (cf. sample.abc):
           28             k: Accent which looks like >
           29             K: Accent which looks like an upside-down V.
           30 
           31 
           32 05.08.98 Added bar numbering and bar labels.
           33          
           34          Bar numbers: 
           35          to switch on bar numbering, use flag -k
           36          where:   -k 1     numbers every bar
           37                   -k 5     numbers every fifth bar, etc.
           38                   -k 0     numbers the first bar in every staff.
           39          or, use the equivalent pseudocomment %%barnumbers <number>.
           40          (Note: -k was used because it sounds a bit like "count".)
           41 
           42          The program counts through the bars automatically, trying
           43          to do the right thing at first and second endings. Namely:
           44          it remembers the bar number at the start of the first ending,
           45          then resets to that value at the start of the second ending.
           46          So, if there is a tune with 2x8 measures with first and second
           47          endings after the first 8 bars, we still end up with 16 bars
           48          in total.
           49          Within one tune, bar numbers are counted through over parts
           50          boundaries. However, if a T: title appears inside a tune,
           51          the bar number is reset to 1. You can use an empty T:
           52          line to reset the bar number without actually writing a title.
           53 
           54       
           55          Bar labels: 
           56          this is intended for large letters A, B, C...
           57          to mark specific points in the music. They are coded by
           58          using a syntax similar to guitarchords, but placed before
           59          a bar line instead of a note or rest, e.g.:
           60             | abcd "A"| ABCD |
           61          places the letter A over the second bar line.
           62          Just in case somebody wants a label on the first bar
           63          (which is often not preceded by a bar line), a new 
           64          symbol [|] was introduced for an "invisible" bar line.
           65 
           66 
           67          Fonts for bar numbers and bar labels:
           68          These can be set in the usual way with the two pseudocomments 
           69          %%barnumberfont and %%barlabelfont.
           70          
           71          In printed music, the bar numbers are often made more visible
           72          by putting a box around them. This is now also possible.
           73          In fact, a box can be put around most bits of text by
           74          adding the word "box" to the font specification, e.g.:
           75 
           76             %%barnumberfont Times-Italic 11 box
           77 
           78          This can be done for the title, guitarchords, vocals, etc.
           79          To switch on the box without changing the font style and/or size,
           80          the character * can be used, as in:
           81       
           82             %%titlefont * * box
           83          
           84          
           85          A reminder: to see all the style specifications use 'abc2ps -H'
           86          (for the standard format) or 'abc2ps -PH' (pretty2 format).
           87          This gives a list suitable for placing in a .fmt file.
           88          To modify settings for a single tune only, place the
           89          pseudocomments after the 'T:' lines and before the 'K:' line
           90          in the tune header.
           91 
           92          
           93          Examples: look at celloprelude.abc for examples of bar numbers
           94          and bar labels. Try 'abc2ps -maxv 8 -k0 bran5' or
           95          'abc2ps -k0 bach' to see bar numbers at the start of 
           96          the line, as is often used for scores.
           97 
           98 
           99 
          100 20.07.98 Fixed bug overwriting when lvoiceid too short.
          101 
          102 ----- Version 1.3.1 -----
          103 
          104 12.07.98 A number of enhancements to format multi-stave music nicely.
          105          For examples, see files trio.abc bran5.abc voices.abc bach.abc.
          106       
          107          In detail: indentation of the first staff, labels for voices, 
          108          braces and brackets to group voices, and some additional
          109          parameters in the V: line to control the output.
          110 
          111          As before, the syntax of the V: line is
          112 
          113             V: <label> <par1>=<value1> <par2>=<value2>  ...
          114          
          115          where <label> is used to switch to the voice in later V: lines.
          116          Each <par>=<value> pair sets one parameter for the current voice.
          117          There are now alternate short version of the parameter names.
          118 
          119 
          120          List of the parameters allowed in a V: line:
          121 
          122          parm   short   example and description
          123          ----------------------------------------
          124 
          125          name    nm     nm=Violin I" 
          126                         This sets the long version of the voice name, to be
          127                         written before the staves at the start of a piece.
          128                         If the string contains \\, this is interpreted
          129                         as a line break and the pieces are writen above
          130                         each other.
          131 
          132          sname   snm    snm="Vl. I"
          133                         Short version of the name, written before
          134                         subsequent staves.
          135       
          136          clef    cl     clef=bass
          137                         Chooses the clef (treble, alto, or bass).
          138                         It can also be bass+8 and so on.
          139          
          140          staves  stv    stv=2
          141                         This is the number of staves (starting from the
          142                         current one) to connect by tall vertical bar lines.
          143                         
          144          brace   brc    brace=2 
          145                         This is the number of staves (starting from the
          146                         current one) to be grouped together with a brace.
          147                         When this option is used, the name defined in the
          148                         same V: line is written at the center of the brace.
          149 
          150          bracket brk    brk=4
          151                         The number of staves to be grouped together by
          152                         a bracket. This option does not change the way
          153                         in which the names are written.
          154 
          155          space   spc    spc=40
          156                         This defines or modifies the vertical space between
          157                         this staff and the one below it. The space can be
          158                         given in pt (default) or with a unit in the form 
          159                         1cm or 0.4in. Furthermore: if a + or - sign
          160                         comes after the start of the number, the value
          161                         is an increment to be added to or subtracted
          162                         from the default setting.
          163 
          164          gchords gch    gch=0  
          165                         This controls whether any guitar chords 
          166                         embedded in the current voice are actually written.
          167                         True/false are specified as for the %% formats. 
          168 
          169          stems   stm    stems=up
          170                         This is parsed but not yet used in the program.
          171 
          172 
          173          New format directives:
          174 
          175             %%voicefont       font to write voice names with
          176 
          177             %%indent <dim>    amount to indent the first staff.
          178                               Indentation is done at the start of
          179                               the piece and after a T: field, but not
          180                               after a P: field. 
          181 
          182             Note: the margin still refers to the left edge of the staff.
          183             Therefore, parameters %%leftmargin %%staffwidth %%indent
          184             should be adjusted to leave room for the voice names.
          185 
          186 
          187          New command-line flag:
          188 
          189             The -V flag was redefined to select voices for output.
          190             The old function ("show version") was integrated into -h.
          191             The format is as in this example:
          192 
          193                abc2ps -o input.abc -V 1-2,4
          194             
          195             This will generate output only for the specified voices. 
          196             Specifically, a single voice can be extracted.
          197     
          198 
          199          Other changes:
          200 
          201             For a rest which fills out a complete measure, the symbol 
          202             for a full rest is drawn in the center of the bar, independent
          203             of the the time signature.
          204 
          205             Added K for strong emphasis decoration (upside-down V).
          206 
          207 
          208 
          209 
          210 31.05.98 L: after header but before first voice now sets default length
          211          for first voice, named "1".
          212 
          213 12.05.98 Tab interpreted as space in music lines.
          214 
          215 01.04.98 Fixed Q:C=xxx for multi-stave version.
          216 
          217 19.03.98 Run-time allocation for symbols and voices.
          218 
          219 
          220 ----- Version 1.3.0 -----
          221 
          222 03.03.98 Multi-stave music added.
          223 
          224          To switch to a different voice, use a line starting with 'V:'.
          225          An example for the most general form supported now is:
          226             V:2 name="Clarinet 2" short="Cl.2" clef=treble stems=down 
          227          Note that the "2" is a treated as a string, so any single-word
          228          identifier can be used instead. Later in the tune,
          229          switch to the voice using only
          230             V:2
          231          The various settings (key, default length, etc) are 
          232          maintained for each voice separately.
          233    
          234          Guitar chords, first and second endings, and line breaks are 
          235          taken from the top voice only. Vocals can be set under each
          236          voice separately.
          237 
          238          To format the output, two %% format directives were added
          239          which determine the staff spacing: %%systaffsep %%systemsep.
          240 
          241          It turned out that the note spacing should be slightly
          242          different for multi-stave music. Namely, it is often a good
          243          idea to space the notes somewhat more strictly according
          244          to their duration than in single-stave music. There is now
          245          a new parameter called "strictness" which the user can use
          246          to adjust this. For strictness=1, the spacings for notes
          247          with short durations is reasonably strictly proportional to
          248          their duration. For strictness=0, they are spaced about
          249          equally. Good defaults are strictness=0.5 for single-stave
          250          music and strictness=0.8 for multistave music.
          251          These parameters can be changed with the -X flag or 
          252          with %% statements in the abc file or in a .fmt file.
          253          When using -X, a flag such as -X 0.6 will change both
          254          values. To change them separately, use something like
          255          -X 0.3,0.7 on the command line.
          256          
          257          As usual, %% directives can be inspected with abc -H 
          258          and help about flags is obtained with abc -h.
          259 
          260          Files voices.abc and bach.abc have examples for multistave
          261          music.
          262 
          263 01.03.98 Changed -d flag to accept incremental changes such as -d-5
          264          or -d+5.
          265 
          266 28.12.97 Transposing added. Also double sharp and double flat symbols.
          267          To transpose: use flag -t in two possible ways.
          268          (1) Specify the new root explicitly using the form
          269              -t XX   where XX is the new root note. For example:
          270                -t C   or   -t Bb  or  -t C#
          271              This shifts either up or down, depending on which shift is
          272              smaller. To force up or down direction, use prefixes ^_ eg.
          273                -t ^C   or   -t _C
          274          (2) Specify the number of halftones to shift by in the form
          275              -t nn  where nn is the number of halftones.
          276              For negative shift, use either a sticky argument
          277              such as -t-2 or prefix with underscore, eg -t _2.
          278 
          279          In any case: the program first decides how many halftones
          280          to shift the pitches by. This number is kept fixed throughout
          281          the whole tune. In this way, key changes within the tune
          282          are treated properly. 
          283 
          284          To obain information about the transposing process, set the
          285          verbosity to 3 or 4 (ie:  -v 3  or  -v 4).
          286 
          287    
          288 24.12.97 Shift up guitar chords over n-plet brackets.
          289 
          290 15.12.97 Some modifications to extent of 1st and 2nd endings. 
          291 
          292 29.11.97 Q: field now prints out tempo denotations.
          293          General form is Q: w1 w2 w3.. where each word is either
          294          a string in double quotes such as "Andante" or "Bossa Nova"
          295          or a tempo denotation such as C or C=120 or 120.
          296          Strings are printed directly, denotations are translated 
          297          to the form note=100. Font is in new format field "tempofont".
          298 
          299 29.11.97 Guitar chords positioned a bit more nicely (centered,
          300          except if especially wide).
          301 
          302 29.11.97 Added blank-delimited +8 and -8 as extensions to key specifier.
          303          Function: write all notes higher or lower by one octave.
          304 
          305 02.11.97 Words for vocals now centered under each note, looks nicer.
          306          Changed left/right spacings to get better positioning for 
          307          single note in a bar.
          308 
          309 ----- Version 1.2.5 -----
          310 
          311 05.10.97 Added page numbers for flag -N. 
          312 
          313 05.10.97 Support for all modes (Wil Macaulay)
          314 
          315 07.08.97 Added "x" for rests which are invisible.
          316 
          317 14.07.97 Slurs and ties within chords improved, for example:
          318          [(a(b] [c)d)]  slurs a to c, b to d 
          319          [a-b] [ac]     ties a to a
          320 
          321 14.07.97 Grace notes can be before or after guitar chord:
          322          "A"{A}Bc  and  {A}"A"Bc  both work.
          323 
          324 06.05.97 Fixed bug which sometimes put stems onto whole notes.
          325 
          326 06.03.97 Begintext lines can start with %%, to permit usage
          327          in header fields and avoid conflict with other programs.
          328 
          329 17.02.97 Made txt array global.. avoid stack problems on Mac.
          330          Added extra buffer flush at file end.
          331 
          332 15.02.97 C (alto) clef added, invoke with "K: alto"
          333 
          334 10.02.97 Now  \- in vocals for '-' without breaking the word.
          335          Changed to work even if no 'T:' field.
          336          Fixed bug: did not print 'O:' if no 'C:'.
          337 
          338 09.02.97 Added "%%titlecaps" format statement.
          339 
          340 07.02.97 Introduced decoration T for "tr" above a note. 
          341 
          342 ----- Version 1.2.4b -----
          343 
          344 06.02.97 New: text, page formats, pseudocomments, bass clef.
          345 
          346 02.02.97 In-line escape sequences now also [..]
          347 
          348 23.01.97 removed "or:" from subtitles.
          349 
          350 
          351 ----- Version 1.2.3-x1 -----
          352 
          353 26.11 Added aligned vocals under the staff. Example:
          354       BA |: "Gm"G2AB|"C7"cd2e|"F"f2fe|"Dm"dA2d|
          355       w: Close your eyes and I'll kiss you, to-mor-row I'll miss you; re-
          356       "Bb"d2dc|"Gm"B2GF|"Eb"G4-|G2 z2|
          357       w:mem-ber I'll al-ways be true._ 
          358       Syntax:
          359          Words are given in line starting as w: under music line.
          360          Words are aligned one-by-one with the notes. 
          361          * skips one note.
          362          | tabs forward to next bar line.
          363          Hyphenations make two syllables, with "-" between them.
          364          Underscore draws horizontal line from last word to note.
          365          Blanks can be dropped around special chars (* | - _ ).
          366 
          367 19.11 Added bagpipe mode for K:HP.
          368       Added landscape orientation for flag -l.
          369 
          370 05.11 Put in some first pseudocomments to format output:
          371       %%sep                         - writes a standard separator
          372       %%sep topspace botspace len   - custom separator
          373       %%newpage                     - force page break
          374       %%text This is a line..       - write a line of text
          375       %%vskip xx                    - add vertical space in cm 
          376 
          377 06.10 Added 32nd and 64th rests, 64th notes.
          378       Accidentals and grace notes more spaced when room.
          379       Correct treatment of slurs at 1st, 2nd endings.
          380 
          381 ----- Version 1.2.2 -----
          382 
          383 22.09 Words like "aza" now under one beam with rest under it.
          384       Output "Origin" field in parens together with composer.
          385       Added ties between chords.
          386    
          387 20.09 Keysigs such as "3+4/8"  "78/8"  "7 8/8" allowed.
          388       Slopes of beams tuned a bit.
          389       Fixed bug in position of tilde over stem.
          390       Choose same stem directions on neighbors where reasonable.
          391 
          392 15.09 Small random horizontal shift of notes improve readability,
          393       see RANFAC. Adjust internote spacing according to jump in pitch.
          394 
          395 05.08 Consistent handling for word breaks at end of input line.
          396 
          397 
          398 ----- Version 1.2.1 -----
          399 
          400 28.07 Added W: for words of song.
          401       Include notes, discography, transcription in output for -n.
          402       Removed bug: ninf=0 messed up usage "abc2ps -h".
          403 
          404 26.07 Fixed: swallowed meter change sometimes.
          405 
          406 21.07 Correct handling of last line of file even if not terminated 
          407       by a newline character.
          408       Some fine-tuning for beam position when more than one beam.
          409       For staff middle, use stem direction from previous note.
          410 
          411 18.07 More tolerant of misuse of guitar chords to write general stuff
          412       above staff; now OK if "...." is alone on a line.
          413       Minibug in syms.h: 'staff' left junk on PS stack.
          414 
          415 17.07 For -c mode: don't complain about underfull; don't stretch
          416       last staff much when underfull (new parameter BETA_C).
          417 
          418 16.07 Fixed obscure bug.. after overfull, sometimes took duration for 
          419       chord from wrong note, because heads were sorted by pitch.
          420       Also: use shrinkage from previous staff for undefull last staff.
          421 
          422 15.07 Move slide further away for notes with accidentals.
          423 
          424 09.07 Selectors before first file also valid; apply to first file.
          425       Took out atof & atoi calls; main now returns int; changed
          426       function names def_HD,def_Hd,def_hd.
          427       
          428 
          429 ----- Version 1.2 -----
          430 
          431 06.07 New flag -O to set output file.
          432 
          433 26.06 Added general n-plet syntax "(p:q:r".
          434 
          435 10.06 Slurs fatter in middle.
          436       Hold (fermata) added code=H.
          437       Changed code for bar to M (em-phasis).
          438       Added up and down bow u,v.
          439 
          440 09.06 Thick-thin, thin thick bars now [| and |].
          441       Ties a-b-c now done correctly.
          442       Carryover slurs at start and end of line.
          443 
          444 08.06 Flat beams shifted to consistent positions relative to staff.
          445 
          446 07.06 Set beta0 to avoid infinite stretching.
          447       Redid key changes.. mcl.abc Cm-> C was wrong.
          448       Fiddled some with slurs.
          449 
          450 05.06 Fixed: accidental was too close on full note.
          451 
          452 03.06 fix up n-plet cases: (1) on beam with other notes,
          453       (2) draw bracket if not on same beam.
          454 
          455 03.06 New flag -E to make EPS files eps001.ps, eps002.ps ...
          456 
          457 02.05 Guitar chord can be put anywhere before note.
          458       Changed note placement for single note in bar.
          459 
          460 30.04 Mutiple decorations permitted on one note.
          461       Bar for broad emphasis added, code is R.
          462 
          463 29.04 Unions: chord with two identical notes like [CC]
          464 
          465 29.04 Slide added, code is J.
          466 
          467 26.04 Output buffer takes care of page breaks.
          468 
          469 ----- Version 1.2x -----
          470 
          471 [v1.2-x7]
          472 
          473 11.04 Output to <file>.ps possible; set OUTPUTFILE in abc2ps.c
          474 
          475 [v1.2-x6]
          476 
          477 28.03 Can do normal or pretty output, depending on flag -p.
          478       Layout parameters bundled as macros in main. 
          479 
          480 [v1.2-x5]
          481 
          482 21.03 Changed roll symbol some more.
          483       Put extra \n at end of Out.ps.
          484 
          485 [v1.2-x4]
          486 
          487 17.03 Fixed nasty bug for selection by xref; now ok on NeXT.
          488       Changed roll symbol.
          489 
          490 [v1.2-x3]
          491 
          492 14.03 Added roll sign as optional way to draw ~.
          493       Changed program to avoid all 'gcc -Wall' warnings.
          494 
          495 10.03 Fixed wrong dimension for line in do_index (macro BSIZE)
          496 
          497 08.03 Took out '#copies..' in PS file.
          498       Added -m flag to set margin.
          499 
          500 06.03 Added flag -i and interactive mode.
          501       Fixed bug in beams, which wrote funny numbers over some beams.
          502       Added "newpage" as option for E: field.
          503 
          504 04.03 Added -f flag to permit different selectors for different files.
          505 
          506       Changed meter change within tune: for change at start of line,
          507       generally writes the symbol (even if the meter did not change),
          508       but not if the meter change was used only to set the default
          509       length with 'l' or 's'.
          510 
          511       Removed math calls: cos(phi) and sin(phi) defined explicitly
          512       in syms.h, also removed sqrt for beam test in music.h.
          513       Advantage: now compiles without -lm flag.
          514       (Note: '#include <math.h>' still needed for atof ??)
          515 
          516 
          517 ----- Version 1.1 -----
          518 
          519 24.02 Changed to multiple input files, added -e flag to identify
          520       selectors in argument list.
          521 
          522 14.02 Outputs "book" field also for -n flag.
          523       Chord font changed to Helvetica 12.
          524 
          525 
          526