summaryrefslogtreecommitdiff
path: root/support/pmx/doc/ChangeLog
blob: 3453c44fc50e719217366991a19066803645dd18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
2.94
  Allow moving dots on main and chord note in 2-note termolos
  Add definitions of \hbp and \hbpp to pmx.tex
  Correct scaldold bug (17-03-2020)
2.91
  Tweak: insert \stdstemfalse before every user-shortened or lengthened
  stem. 
    This cancels defaul extensions to middle line and also (with 'L') allows
    stems that are longer than 4.66 but still don't reach middle line.
  Allow alteration of number height in multibar rest, option n.
  Fix bug introduced in 2.89 so that the "o" in "mo800" is now OK.
2.90
  Many tweaks to allow gaps at end or middle of a system using 
    L[n]S[x] and LC[y]. New pmx.tex.
2.88
  Comment out print*,"Changed pathname to..." since it was going 
    iteration when optimizing linebreaks with the undocumented option Ao.
  Add nv back in as argument for getmidi, so loop transferring data
    from midivel to midvelc can be executed. This corrects bug and
    allows per-instrument change in midi velocities at the start
    of any block
  Add subroutine inst2chan to transfer midi data as noted above. Works with
    Iv but buggy when used with IT and Ib
2.87
  Allow changes to and from octave treble clef. Instrument with it
    must only have one staff.
  Some fixes for beam multiplicity changes at staff jumps. Must still
    use inline for mult. increase at downward staff jump. See sjb.pmx.
2.84
  Bug fix: dots in chordal seconds
  Bug fix: Initialize ihornb for non-beamed, down xtup
  Bug fix: When using "AT" with 2-note x3c rD. 
2.83
  Fix problems when changing to or from octave treble clef.
  Fix beaming (or not) and number location for xtups with
    multiple rests. Still some problems with number height but
    can be band-aided with number height tweak option.
  Tweak error messages for options on "R" command.
  Allow forced beam height and slope tweaks with 2-note tremolos
  Allow chordal note with 2-note tremolos, adding dots as needed.
  Fix call to ncmid in beamstrt when setting start height for beam of 
    2-note trem, by changing arg from ivx to iv
2.82
  bugfix: beams with rests, not confused with xtups.
  x option after slur index to allow slurs to go from one voice to another.
  x option also for ties
2.81
  Allow string of rests to end xtup
  in chordal half-note 2-note tremolo, make chord notes open.
2.80
  Add 2-note tremolos
2.78
  Expand bufq to 131072 bytes
  Expand maxblks tp 9600
  Allow up to 75 pages
  Index postscript hairpins from 1 up instead of by voice #.
  Add option 'o' to forced beam for open notehead (\hb); set ipl(3)
  Add option T[n], n=1,2,3 for single stem tremolo
2.77
  Enable AV+/-x+/-y to add vskip bigh before or after \eject
2.76
2.75
  Bugfix: unbeamed xtups with dots: in beamn1 and beamid allow dotted 16th, and
    2 or 3 flags on shortened note. 
2.74
  Bugfix: allow "0" as argument of @ command on lyrics string.
  Check for and allow "\ in centered page headings with P command.
  Check for and allow "\ in text dynamics with D command.
  For lyrics string starting in xtuplet, insert check for inputting musixlyr.
  For staff-crossing beamed xtuplet chords, if 2nd segment of a joined beam
    starts with a blank rest, put '\sk' into the TeX. 
    To enable high-to-both beamed etup staff-crossing chord, for blank
    rest at start of forced beam, shift \sk's from before to after \ib..;
    so \ib is at start and note in upper voice has a beam to connect to.
  Expand range of vertical xtup number shift, now stored in mult(16-22) 
  Check for and allow \" within lyrics strings, for umlauts.
2.73 (160121)
  Dirk's "..." command, to convert "text" into \pmxlyr{text}\ and insert as
    inline TeX. Replace all '~' inside "..." and not preceded with '\', by 
    '\lk '. Right after 2nd ", replace @[a,b][+,-]n with \at{[a,b][+,-]n}\
    Include definitions of \ly and \at in pmx.tex (2 Feb 16). After first ",
    add (as type 2 string) '\\input musixlyr \'
  After inputting pathname, change any '\' to '/', for Linux compatibility.
2.72 (160110)
  Really finalize \mbrest...go back to 3 args to deal with clef changes.
  Fine tune centered whole bar rests to deal with clef changes
  Fix bug in wsclef when >1 staff per instrument, since \setclef
    needs to know instrument and specify clefs on all staves for that
    instrument. Ones that were not changed by user will not be printed,
    and will be kept the same as before.
  Fix bug with arpegii from one voice to another in same staff.
2.71 (151226)
  Finalize mbrest mods
2.705
  Fix error message
2.704 (140614) 
  Octave treble clef
  Make horizontal ornament shift (ornhshft) floating
2.703 (140323)
  Option v[-]n at end of any figure will alter figdrop for rest of system
2.702
  Stem slurs. Only for ps, assume no other pos'n adjustments. Option "v"
2.701
  oC = coda (\code{10})
    Move iornq(29) (blank barline) to ipl(0) (changes in pmxb, getnote)
  oG = new seqno
  To do: fix grace note spacing problem (partially done)
2.622
  Redefine midtc(..) and miditran(..); clean up all transpositions/key changes
  Kn[+/-...] \ignorenats at signature changes
  Fix tie checks in doslur() and dopsslur() to subtract iTransAmt from nolevs
    before checking and setting pitch levels levson() and levsoff()
  Define midisig separately from isig. Put in common commidisig.
    Use for explicit midi signature and for accid corrections to midi piches
    in addmidi.
2.621
  Make keyboard rest option work in xtuplets. Created subroutine
    chkkbdrests, modified make2bar to include calls to chkkbdrests as rqd.
2.620
  Allow user-defined rest height tweaks at start of beam.
2.619
  At movement break, change \nbinstruments in \newmovement macro; add
    3rd arg to \newmovement in pmx.tex; modify pmxb.for and getnote.for
    to remove call to newnoi and change call to \newmovement
2.618
  Add option Ac[l,4] to set vert and horiz size and offsets to properly
    center page for letter or a4 paper.
2.617
  In g1etnote, change if-check for note to use index(...) instead
    of ichar(charq) since it was messing up gfortran optimizer
  After pmxa, search for and remove penultimate line <blank><blank>/
    because it was screwing up linux-compiled versions
  Bugfix: Increase dimension of kicrd from 7 to 10 in crdaccs(...)
2.616 (111110)
  Allow hairpins to span multiple notes groups (gulps).
2.615+ (110810)
  Fix midi when some instruments are transposed, by subtracting
    iTransAmt(instno(iv)) from pitch values sent to via addmidi in
    make2bar.for (for main notes) and docrd (for chord notes)
2.615 (110725)
  Fig bug with size-setting (in topfile) when instrument has >1 staves 
2.615 (110724)
  Make AS[0|-|s|t]... really set sizes
2.614
  Mod notex.for to fix Terry's bug with raised dotted rests (caused 
    by double-hboxing). 
2.613
  Bugfix: In pmxa, change "do while" limit to keep from overwriting instno.
2.612
  Enhance AS to allow s or t for smallsize or tinysize
2.611
  Error trap for "D" before any notes in a block.
2.610
  Instrument-wise key changes and transposition (incomplete)
2.603
  101211 In getpmxmod.for, decreased nline by 2 to fix locating errors 
    following reading in an include file.
  101121 Added some error messages in g1etset.for setup data 
2.602
  Correct slur indexing in linebreakslurs. 
  Account for comment lines in line count for error messages
2.601
  Bug fix: allow 24 slurs with graces
2.60 Changes made make it really big
  increase mv (size of midi) ? Note: MIDI can't have >16 voices w/o 
    major reprogramming, and 16 may also be a problem (icmm)
  nm=24 (voices) done
  24 slurs done
  24 simultaneous beams (Replace index 24 by 0, so get 0-23)
  bufq*131072 (gfortran only)
  getarg syntax (gfortran only)
2.523+
  Fix voice numbering for normal dynamics and text dynamics
2.523
  Version of bigpmx first posted to Hiroaki's web site.
2.522
  5/26/10 Replace ipl bits 0-7 with ipl2, add new common for it.
  With 2.521+ as starting version, incorporate bigpmx mods to allow 24 voices.
  5/13/10 Fix log2 function
  5/15/10 Fix bitwise storage for dynamics, fix segnoo string length. 
2.521+
  091025 Enable dotting 2nd part of linebreak slur or tie.
  To adjust barno height due to linebreak slur, use \bnrs instead of
    explicitly redefining \raisebarno (pmxb) 
2.521
  Bugfix
2.520
  090519 Enable ligfonts (special figured bass characters)
2.519
  Fix another bug which kept \sk from being output so misaligned some notes.
2.518
  Fix bugs: referencing fig data, char declaration for member of 
     common/comfig/
2.517
  Allow figures in voice 1 + any one other.
2.516
  Allow figures in voice #2
2.515+ to do: Change manual and activate rule against clef change in voice #2.
2.515
  071222 Changes in getnote to allow auto forced beams to start anywhere.
  071206 In make2bar, shift fermataup7 to left over centered pause.
  070901 In doslur, check for nolev <=2 in case slur ends on rest in 2-line
      staff (it was screwing up vertical justification).
  n34 for tweaks to midi durations of quarter note septuplets.
  To do: In ref250.tex, the tables where 's,t,)' is explained, the line
      [+,- i]   ... Vertical adjustment of the start of second segment
    should it be replaced by
      [s +,- i]   ... Vertical adjustment of the start of second segment
2.514
  Changes in make2bar to get horizontal spacing right when normal grace
    follows after grace
  Changes in dograce to get octaves right for any material entered inside
    \gaft, which shields transpose register changes from the outside world.
2.513
  In make1bar, near end, for forced beams starting with a rest, copy hgt and
    slope tweaks to ALL notes after first, not just the second one, so if
    there's more than one rest at start the tweaks are still observed.
  In beamid and beamend, add stand-alone triply-flagged notes for xtups.
2.512
  Near end of pmxb, fix error trap to allow redundant 'RD'
  Enable multiplicity down-up '][' within xtup.
2.511
  Introduce eskz2 for xtup #'s and bracket lengths, to remove bug caused by 
    adjusteskz as in bar 7 of barsant.
2.510a
  Test: remove restriction on tempo changes in MIDI macros
    Send to CM for beta testing.
2.509+
  To do: Correct manual on AS. "-" is for smaller staves.
2.510
  Forgot to declare litq, voltxtq as character in subroutine getgrace
2.509
  Corrected small bug in arpeggio shifting (ivx <= iv in call putarp)
2.508
  Allow graces in xtups. New subroutine getgrace. 
2.507
  To do: Raise/lower figures.
  To do: Add 24, 29 to list of musicsizes in manual
  New sub adjusteskz to account for ask's when computing lengths of
    brackets for unbeamed xtups, slopes and horizontal posn's of number 
  Bug fix: in beamn1, beamid, and beamend, allow unbeamed xtups w/ 2 flags
  Add look-left option for keyboard rests, "L" in rest command, set iornq(30)
2.506
  Fix bug with AK, when simultaneous rests have same duration, use defaults.
2.505
  Keyboard rests AK
2.504
  Space after normal grace: option X[n]
  Fixed og when nv .ne. noinst, by using sepsymq instead of '&'
  (To do) length of xtup bracket when there is added non-collision space.
  Trap musicsize if .ne. 16,20,24,29.
2.503
  Enable arpeggio left shift with ?-x
  To do: In manual, arpeggio over 2 staves.
  Allow musicsize of 24 and 29. Had to define meter font size explicitly,
    also change font size for text dynamics, but not much else so far.
  Bugfix in beamstrt, introduced in 2415, ip was changed before putxtn
    was called, causing error in printing replacement number.
2.502
  Incorporate Dirk Laurie's patch to use { , } , for ties.
  Figure height adjustment: append +[n]
  Change ec font stuff in pmx.tex per Olivier Vogel's comment (CM email?)
2.501
  Readjust horizontal offset back to .8 in LineBreakTies
  Fix zero-subscript (iudorn) in putorn
2.50
  Increase number of text-dynamics (dimension of txtdynq) per block 
    from 12 to 41.
  Slur option n to override altered default curvature.
  Allow default ps slur curvature tweaks with Ap+/-c
2.416
  Increase length of textdynq from 24 to 128
  (Todo) Add comment in manual about blank lines at end.
  Configuration file: Define subroutine getpmxmod, check path in environment
    variable pmxmoddir, check existence, read lines into bufq after setup. 
  Increase dimension on idynn in dodyn from 4 to 10 for max number 
    of marks in a bar
  Increase allowable # of lines from 2000 to 4000.
  (To do) Replace definition of \liftpausc per Olivier.
  (To do) Fix extraneous error message if RD is placed at very end.
2.415
  Fix "AT" option: replace putxtn,topfile,beamstrt,beamid to use \xnumt
    instead of redefining \xnum. Change font used to \smallfont (as for
    normal xtups,
  Allow slur to start on rest.
2.414
  Correct bug in crdacc when adding accidental to boundary causes number of
    segments to decrease
  Special rule for 3-accidental chords: If no 2nds, place them in order
    top, bottom, middle.
2.413
  Correct bugs in chordal accidentals, related to left-shifted noteheads
    (a) Special problems with downstem when main note needs shifting
    (b) Assign 0 rank to boundary segs due to left-shifted noteheads
2.412
  Change default horiz shift of start of seg 2 of linebreak slurs:
    -.7 for slurs, -1.2 for ties,
  Use height of start of seg 1 slur itself for end of 1 and start of 2.
2.411
  "Apl" activates special treatment of linebreak slur/tie's; breaks all in 2.
  "s" option in start of slur/tie as precursor to vert/horiz tweaks for end
     of seg 1. of linebreak slur/tie, 2nd "s" for start of seg2.
  With "Apl", curvature adjustments on starting slur command apply to seg 1, 
     those on ending command to seg 2.
2.410
  "AT" to allow Col. S.'s tuplet option. Simply input tuplet.tex and redefine
     \xnum, \unbkt, \ovbkt. 
  "s" option in main xtup input after "x": slope tweak for bracket. mult(4) is
     flag, mult(5-9) is tweak value+16
2.409
  Bugfix in docrd for MIDI: Use original pitch in case main/chord were
    switched due to 2nds.
  Remove "o" from error message for "A" command.
  New syntax: optional instrument number separator ":" in movement 
    break command to precede a 2-digit instrument. 
  Conditional output formats for \setname at movement break to allow 
    instrument numbers >9.
  Bugfix in coding to raise barno due to slur over line break (pmxb)
  Move date/version data statement in pmxab to a better place.
2.408
  Allow pnotes{x} when x>9.995 (mod is only to format stmt in make2bar).
  Bug fix in \liftPAusep in notex.for and in pmx.tex
  Character variables for version and date
  For up-stem single graces slurred to down-stem, shift slur start left by 
    0.8 so slur doesn't get too short.
  Initialize and slide mult, same as other full-program variables in /all/.
2.407
  Allow AN[n]"[partname]" to be parsed by scor2prt as filename for part n,
2.406
  Alter PMX: put \dnstrut into \znotes in \starteq (for system spacing
    equalization).
  Put dimensions of double sharps and flats in crdacc (for chords).
  Bugfix: Use sepsymq in LineBreakTies(..) instead of '&'
  Use only first 4 bits of mult for multiplicity+8, so rest can be used
    for other stuff.
  Move stemlength stuff in nacc(27-30) to mult(27-30) to remove conflict.
2.405: Not published but saved for safety.
  Option Aph to write \special{header=psslurs.pro} top of each page, so
    dviselec will work OK.
2.404
  Allow slur to end on rest, but not start on a rest.  Efaults height 
    of ending is default height of start (before any automatic or user-
    defined djustments). User may adjust height as normal from default.
2.403
  Bugfix: turn off repeated beaming patterns.at end of non-last voice.
2.402
  Automatic repeated forced beams.  Start with "[:"  End with next explicit 
    forced beam or end of input block.
  Increase # of forced beams per line of music per input block from 20 to 40
2.401
  Optional K-Postscript Linebreak Ties, Apl. New subroutine LineBreakTies.
    Makes 1st part normal shape, and starts 2nd part a little further left.
  Enable arpeggios in xtuplets.  Had to make time itar(narp) a real.
2.40
  Set up WrotePsslurDefaults (logical) so only write defaults on 1st Ap.
  Fix non-ps-slur input to \midslur (third signed integer). Do not reverse
    sign for down-slurs.
2.359
  Add error exit subroutine stop1 to make exit status g77-compatible..
  Absolute octave on xtup chord note was 2 octave too high, fixed in getnote
  Fermata on vertically shifted rest: special trap in putorn() to set height.
  Correct multiple grace note spacing for small staves (in dograce, 
       define wheadpt1 depending on staff size)
2.358
  Allow curvature corrections at start of postscript slur, in dopsslur()
  Local slur options p[+|-][s|t] for [nos|s]luradjust,[not|t]ieadjust
  Options for [Nos|S]luradjust,[Not|T]ieadjust,[noh|h]alfties: Ap[+|-][s|t|h]
  Make t[ID] act like s[ID]t, most mods in spsslur().
  Add spsslur() to read in data for ps slurs, call from getnote.
  In beamstrt, save args for SetupB in common comipb to save them for 
     2nd call when xtup starts with rest
  Add spacing for ornament ")" as if it were accidental, in make2bar().
  Horiz shift start and end of ps ties, dep. on stem dir'n, in dopsslur()
  Horiz. shift start of ps grace slur, 2 places in dograce().
  Horiz shift end of grace slur in endslur()
  Make st slurs into postscript ties.  Separate subroutine dopsslur(),    
  Non-beamed xtup: "a" in 1st note or rest, before "x" (sets drawbm=.false.)
  Allow two D"x" on same note. Introduced jtxtdyn1 in dodyn.
2.357a
  Fix missing "end" in backfill.com, too-long lines in g1etnote, getnote
2.357
  Increase dimension for # of lit TeX strings from 52 to 83.
  Allow blank rest in middle of xtuplet. Only mods in g*etnote().
2.356
  Increased some dimensions from 30 to 40 to allow up to 40 pages.
  In unbeamed xtups, "n" did not suppress bracket.  Fixed in beamstrt().
  Fix parsing of "f,h,H,HH" in sslur.
  Fix bug with cdot, note-level for slur termination (in getnote)
2.355
  Midi transposition:  IT[+|-][n1][+|-][n2]...[+|-][n(noinst)], 
     n=# of half-steps.  Restrict to mult. of 12 now, to avoid key-sig issues
  Make midi recognize ps ties in doslur.
  Correct ttieforsl so that it eats 2nd argument properly, using \zcharnote 
     to get octave right.
2.354
  With postscript slurs, make t-slurs real ties by inserting replacement 
    macros \tieforisu, etc, defined in pmx.tex
  Check for open cresc or decresc at end of input block, using list[de]cresc
  Hairpin syntax conditional on postscript slurs. Backup to fill in start 
    level, using new backfill(...).  Separate height tweaks for 
    start and finish.
2.353
  K-0+n to transpose by half step (rather than just change key)
  Allow "rm[n]" when nv>1.  Require it in all parts. Just write a stack of 
    \mbrest's
  Enable "Rz"; define \setzalaligne in pmx.tex. Special treatment at end
    of input block before movement break, and at start of block after 
    movement break, using \newmovement rather than \setzalaligne, since
    former already redefines \stoppiece. In second case, set rptfg2='z'.
  Make clefq(nm) common between pmxb and getnote; change references in 
    getnote at 'M' to array elements, setting all new clefs as you go.
2.352
  Remove \parskip redefinition from pmx.tex; write it into TeX file when
    "Ae" is invoked.
  Ap to activate postscript slurs. Add macro \psforts to pmx.tex to redefine 
    \tslur in case \midslur was used.  Allow slur inputs 'f','h','H','HH',
    translate them thru mapping to (1,4,5,6) as \midslur params, then let
    \psforts translate them back to ps slur macors.
2.351
  Number slurs from 0 up instead of 11 down, anticipating postscript slurs.
  Write "\eightrm" instead of "\cmr8" for \figfont with small baseline size.
  Increase length of basenameq to 44 characters everywhere.
  Increase dimension of mcpitch (midi-chord-pitch) to 20.
  Set default systems per page to 1 if nv>7
  In pmxb, move place where isystpg is reset to 0, so that \eject gets
    written when there is just one system per page.
2.35
  Cautionary accidentals with 'c' anywhere in note symbol.
  NEW pmx.tex with \resetsize to set size to normal or small depending on 
    current \internote.  Used with new coding in dograce() to get right
    new size in case user has \setsize'ed some lines to \smallvalue. For
    \smallvalue-sized staves, redefine \tinynotesize to give 11-pt font. 
    Affects pmx.tex.
  Continuation figure with fractional length. May now mix with other figures.
    If another figure follow Cont-fig, separate with colon.   
2.342
  Bugfix in getnote to recognize relative octave shift in grace at start of  
    input block.
  In make2bar, initialize islhgt=0 earlier than before (possible solution
    to Suse g77 compile problem that I could not reproduce)..
  Bugfix in beamstrt & beamn1 for r2x6 c4D d d d
2.341
  Syntax check: Forced page break page number must be > than previous.
  Bugfix: Define ivx when "sliding down" breath/caesure data in pmxb.
2.34
  New pmx.tex with redefined liftpausc
  Bug fix with dotted, non-beamed xtups.
2.332
  Fix bugs in horizonal shifts, spacing, for accid's, graces, noteheads.
  Allow arbitrary pos. input to W in g1etnote and getnote.
2.331
  Bug-fix in dodyn(..): typo on length of arg of txtdyn
2.33
  Caesura (oc), breath (ob).  Set iornq(28), store rest of data in ibcdata()
2.321
  Rescale accidental shifts. Still use 7 bits but now map (0,127) 
     onto (-1.,5.35)
  Fix ihornb bug in dodyn, seen with dynamics on lower-voice non-beamed xtups
2.32 (Noticed after posting)
  Prohibit "/" as figure.
2.32 (Posted)
  Tidied up accidentals in chords, do spacing.
  Still to do: 
      check for "(" on chord notes in spacing algo
      small accids
      double accids
      autoshift slurs
2.310
  Extra call to precrd ahead of spacing chk, and single-note crd/acc
     shifts seem OK, but not multiple.  crd/acc shifts not recorded 1st time. 
2.309
  Alternate algo for accid shifts in chords.
2.308
  Auto horiz. notehead shifting added to precrd. 
2.307
  Auto shifting of multiple accidentals in chords.
  "Ao" in main chord note to keep accidentals in order. Set nacc(28).
  If there are any manual main or chord note shifts, then
     If any manual shift is preceded by "A" then
        1. Auto-shifting proceeds
        2. "A"-shifts add to autoshifts
        3. non-"A" shifts are ignored!
     Else (>0 man shifts, none has "A")
        No auto-ordering, No autoshifts, 
     End if
  End if 
2.306
  Initialize legacy note level to middle C in case user forgets to set 
    octave.
  Shift xtup note?
  Shift in elemskips rather than noteheads?
2.305
  Stop pmxb from multiple endvolta's at start of new page.
2.304
  "Sx" in a note means shorten stemlength by x \internotes.  "Sx:" turn on
      for multiple notes in the voice, "S:" last shortened note.
2.303
  vshrink stuff all OK? Description is in pmxb.  
2.302
  Toggle vshrink with "Av". vshrink normally kicks in when \interstaff 
    hits 20. This still needs work.
  Add " /" to last line if last char is not % or /.
2.301
  Check in beamn1 for single note before multiplicity down-up.
  allow '.PMX' as well as '.pmx'
2.299
  Correct typo in pmxb involving PMXbarnotrue.
  Replacement printed number for xtup: Unsigned integer after 'n' after 'x'
  Minor upgrade parsing xtuplet options 'x...'
  Correct dimension of nxtinbm in make2bar.
2.298
  Account for doubled xtup notes in subroutine getx (user-defined spaces), 
    by adding ndoub as an argument..
2.297
  Created and solved compiler problem.  Put drawbm(NM) in its own common.
  Add new def'ns [\a|PA]usc, \lift[pa|PA]usc to pmx.tex, use them in make2bar
    when \centerbar is used.
  Modify \mbrest & \CenterBar in pmx.tex to use \volta@endcor etc.  Have PMX
    use right 2nd and 3rd args for \mbrest when key, meter, or clef changes.
2.296
  Correct printed numbers for forced beams with multiple xtups. For each beam
    make list in setupb by voice of eloff (h-offset) and mtupv (printed #)
  Increase lengths of jobname and infileq by 20 characters
  Enable whole notes and breves as 1st or last note of xtup in beamn1 and
    beamend, and wholes in beamid.
2.295
  Midi balance Ib[n1]:[n2]:...[nn]
  Single-slope beam groups [...]-[...]
  Trap "i" unless after accidental (main notes, xtups, chord notes)
2.294
  Unequal xtups with "D" to double a note in an xtup.
  As above, "F" will (a) increase multiplicity by 1 for marked note and next
    one and (b) add a dot to the first one. 
  Fix bug with e.g. c84 [ .d e.f ] by checking whether forced beam is on 
    when "." is encountered, then correcting beam start time.(end of getnote)
  MIDI velocity (volume) set: Iv[n1]:[n2]:[n3]...
2.293
  Check for single notes spanning bar lines.
  Correct various bugs with staff-jumping beams. (1) for 2nd segment, vxtup 
    must be set in make2bar since beamstrt is not called, fixing problem with
    dot at end. (2) add ivjb2 to flag which voice has 2nd segment and fix 
    problem when >2 staves.
  Add nodur to args of dodyn, so can check if stemless and avoid height tweak
  Correct bug in getdyn setting flag in idynda2(0) for manual horiz. tweak
2.292a
  Undo syntax check for Type 2 or 3 TeX string starting in column 1. 
    Meanwhile, Werner's problem with a mid-line Type 3 string has gone away?! 
2.292
  Allow comments in xtuplets
  Enable multiple octave jumps in grace notes.
  Allow dynamics in xtuplets.
  Fix bug in getdyn searching for end of text string (correct length of lineq
    to 128)
  Fix bug in dodyn, must ignore horiz. interaction tweak for 
    user-text (idno = 0)
  Syntax check for Type 2 or 3 TeX string starting in column 1 
    (NOTE: later undone!)
  Syntax check for page number > npages at forced line break.
2.291
  Fix error in AS command (accid spacing for small systems), making only
    one spec per staff, nv total.
  Stop using MIDI channel 10
2.29
  Fix error in console output format for # of bytes used in MIDI file.
  Fix bug in dograce so no space is added between grace and main note when
      there is a MIDI-only accidental.
  Fix bug so oes?+4 works.  It was too ugly to explain. 
    ...Different ways of storing accidental specs on input and output.
  No longer zap \writezbarno in special situations.
  Fix bug in dyntxt level on rest
  Line spacing equalization.  Add macros \starteq, \endeq, \spread, etc.
    Activate with Ae.  (Maybe later could input alternate values for
    \upamt, \dnamt, \parskip).  Put \starteq on 1st note in voice 1 
    in the page, and \endeq on 1st note of next-to-last line in page.
2.28
  Flip direction of forced beam "[f..."
  Fix beam numbering for staff jumping beams. Uses irest(23,24,29,30) 
  Fix bug in sliding ip's for txtdyn's
  In dyn's allow vert. offsets +/-64, horiz +/-25.6 (store in idnyda2(1-99)
2.27
  Comment out lines in dodyn checking number of dynamic marks found.  Voice
    order may not be monotonic if two lines on a staff.
  Literal dynamic: D"[text]"
2.26
  Allow hairpin start-stop on same note by disabling auto-tweaks in dodyn,
    increasing dimension of idynn to 4 to allow 4 symbols on same note.
  Increase voltxtq length from 10 to 20.
  AS[-/0][-/0]...  to inform PMX that "-" voices are small, and rough 
     accounting for ast's is done by defining effective headwidth 
     whead1 in makebar2 to be 0.8*whead.  
2.25
  Fix logic bug with sepsym's when # of instruments changes.
  Slight increases in default offsets for hairpin starts after "p"
2.24
  Hairpins D< or D> as toggle.
  Many automatic position tweaks for letter-group dynamics and hairpins.
2.23
  Continued rhythmic shortcuts: space followed by "." or ","
2.22
  In call to doslur, change tno(...) to tnote(...).  This was only
    used when checking to slurs per stem directions, and should have been
    the note duration all along.
  MIDI-only accidental, bit 17 in nacc, or 27 in icrdat. 
      Use "i" anywhere in note symbol.
2.21
  Increase from 20 to 30 dimensions for movement breaks and midi sections.
  Fix out-of-order declarations per mutex comments
  Add "Bad error" and "Kluging" messages to log file.
2.197
  add /comips/ to save tie-check midi variables
  For spacing of clef changes at start of input block, changed integer time
    lastnodur to prevtn, so it works with xtups. Possible incompatibility!
2.196
  Fix Ickbug with time check in ncmid()
  Interchange \fermataup7 and \pausec to get proper alignment
  Enable French violin clef "f",  number 7 in PMX, but 9 in MusiXTeX.
  Add defn's of \hsp, \hspp to pmx.tex 
  Fix pre-slurs on xtup chord notes.
  Fixed raised PAuse, define \liftPAuse
  Replace \zbreve\sk with \breve.
  Made "1" work as mtrdenl by doubling it and mtrnuml.  BUT WAIT...what 
    about "o" and 1 as shorthand for 16???? Search for "Kluge"
  Added "vo" (voice) as MIDI instrument 55 
  Allow 3-digit page numbers (search for "toppageno")
  Fix bug caused by prior fix (cancelling accid after bar line was ignored).
  Fix double accids in chords
2.194
  Fix bug with accid/tie/barline/chord in addmidi by restructuring accid if 
    block.
  Add meter to MIDI file with every pause
  Purify FORTRAN?
2.193
  Increased # of in-line TeX strings from 36 to 52.
  Fix entry of # of bytes in header of tempo/meter/key track to allow >255.
2.191
  Event track: Tempos, meters, keys all together.  Data in comevent
2.15
  Pretty good midi capability.  Still no attention to slurs on chord notes.
2.11
  11 Dec 99 c   rm1
  11 Dec 99 "oes?", "oe?"
  11 Dec 99 Cancel slur horizontal tweaks with non-stemmed notes
  11 Dec 99 Error message for shifted, repeated ornaments.
2.10 (Version 2.1)
  Fix bug with lowdot and xtuplets
2.09
  Fix bug with multiple ornament heights over beams, when one is . or _
  Error message from pmxa if rest on last note of xtup.
  Enable 12 slurs.
  Reinstate multiple rests at start of xtup.
2.07
  Combine consecutive type-1 TeX strings.
  \midslur and \curve as 3rd signed digit in slur termination, + 2 opt.int's.
  Fixed breve chord notes in docrd
  Check irest(28) as well as vxtup when setting nodur for chord notes, since
    vxtup isn't set until 1st *main* note in xtup
  Vectorize nolev1, slope, ixrest.  Klug fix for xtups with variable spacing.
2.06+
  Make deterministic the beam slope calculation when there are an even # of
    slopes in list and middle two are equal magnitude but opposite sign.
  pmxa Trap for "o:" before 1st note in block
  Partial bug fix for 64th notes in xtuplets.
  Make ixrest a vector, since with new time scheme may not finish xtup in
    same notes block.
  Increase max # of pages from 20 to 30 (dimensions of nsystp,..., in pmxb)
2.06
  Account for changes in nv when computing \interstaff. Add a counter 
    nistaff(iflb) = # of interstaff spaces per system = nv-1.  Set whenever
    setting isysflb(iflb). Note nv can only change at a forced line break.  
    Note also, iflb starts at 0!
2.05
  Automatic start of new notes group with part 2 of staff-jump beam
    In make1bar, set irest bit 29 of lowest-voice note at same time,
    use as flag when making notes groups.
  For now, remove dummy blank line at end...it zaps terminal repeats.
2.02
  Fixed slur-counting bug for multiple, slurred, aftergraces.
2.01
 Increase to ask(1400)
 Increase max forced page breaks to 18
 Define pausc for centered pause
2.0a
 Insert dummy blank line at very end to handle input files w/o terminal CR-LF
pmx03r
  Option m[n] in S symbol to change musicsize (for parts)
  Double dotted rests now work.
  Write file name to log file
  Check existence of input file
  Allow 24-char jobname, may end with ".pmx"
  Comment out time stuff
  Replace 3-argument getarg with 2-argument + iargc
  Fix bug with negative noinst due to nint<=int replacement
  move lovation of iv in isdat1 to allow iv>7.
  Set nm=12 
pmx03q
  replace int(x+.001) with nint(x)
  Write TeX file name to screen and to pml.
  Replace char(...) with chax(...) to sovle msdev bug.
  Bug fix: macro terminations when M is on a line by itself.
  Bug fix: don't accumulate space for XS in pmxa.
  Streamline Macros: use pointers to bufq instead of scratch files
pmx03p
  Store input file in single character array bufq. 
    lbuf(i)*2 is length of line i
    ipbuf is position just before next line to be read.
pmx03
  Optimize read/writes
pmx02
  Fix line count (for errors) when there are saved macros
pmx01
  In optimize mode, open/close macros (Watch out for residual zz files!)
  Command line input
  Option Ao to optimize, otherwise normal processing
c