From 8a8670caaf1a94c91b2bc3f4f225f40318ce40b2 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 19 Mar 2020 22:09:18 +0000 Subject: pmx 2.94 2020-03-17 git-svn-id: svn://tug.org/texlive/trunk@54408 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/utils/README | 2 +- Build/source/utils/pmx/TLpatches/ChangeLog | 5 + Build/source/utils/pmx/TLpatches/TL-Changes | 10 +- Build/source/utils/pmx/pmx-src/ChangeLog | 1 + Build/source/utils/pmx/pmx-src/README | 2 +- Build/source/utils/pmx/pmx-src/pmx294.for | 52177 ++++++++++----------- Build/source/utils/pmx/pmx-src/pmxab.c | 47123 ++++++++++--------- Build/source/utils/pmx/pmx-src/tests/barsant.pml | 2 +- Build/source/utils/pmx/pmx-src/tests/barsant.tex | 118 +- 9 files changed, 49679 insertions(+), 49761 deletions(-) (limited to 'Build/source/utils') diff --git a/Build/source/utils/README b/Build/source/utils/README index 9cf6a7a7137..81330b06787 100644 --- a/Build/source/utils/README +++ b/Build/source/utils/README @@ -19,7 +19,7 @@ lacheck - maintained here, by us m-tx 0.63a - checked 29apr18 http://ctan.org/pkg/m-tx/ -pmx 2.9.4 - checked 07feb20 +pmx 2.9.4 - checked 19mar20 http://ctan.org/pkg/pmx/ ps2eps 1.68 - checked 10may12 diff --git a/Build/source/utils/pmx/TLpatches/ChangeLog b/Build/source/utils/pmx/TLpatches/ChangeLog index 519184bd3de..b54188a6e2d 100644 --- a/Build/source/utils/pmx/TLpatches/ChangeLog +++ b/Build/source/utils/pmx/TLpatches/ChangeLog @@ -1,3 +1,8 @@ +2020-03-19 Karl Berry + + * import updated pmx-2.9.4 (no change in version number, but new + date, with one bug fix). + 2020-02-07 Akira Kakuto * import pmx-2.9.4. diff --git a/Build/source/utils/pmx/TLpatches/TL-Changes b/Build/source/utils/pmx/TLpatches/TL-Changes index a968a96b031..4ec264e39bd 100644 --- a/Build/source/utils/pmx/TLpatches/TL-Changes +++ b/Build/source/utils/pmx/TLpatches/TL-Changes @@ -2,11 +2,5 @@ Changes applied to the pmx-2.9.4 tree as obtained from: http://www.ctan.org/tex-archive/support/pmx/ Remove: - Makefile.in - aclocal.m4 - arith.h - configure - depcomp - install-sh - missing - test-driver + Makefile.in aclocal.m4 arith.h configure depcomp install-sh + missing test-driver diff --git a/Build/source/utils/pmx/pmx-src/ChangeLog b/Build/source/utils/pmx/pmx-src/ChangeLog index 6715e9b1e36..3453c44fc50 100644 --- a/Build/source/utils/pmx/pmx-src/ChangeLog +++ b/Build/source/utils/pmx/pmx-src/ChangeLog @@ -1,6 +1,7 @@ 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. diff --git a/Build/source/utils/pmx/pmx-src/README b/Build/source/utils/pmx/pmx-src/README index 8822e21a293..9b9dcc5c6f9 100644 --- a/Build/source/utils/pmx/pmx-src/README +++ b/Build/source/utils/pmx/pmx-src/README @@ -1,4 +1,4 @@ -This is PMX, version 2.9.4 (2020-01-21). PMX provides a preprocessor for MusiXTeX. +This is PMX, version 2.9.4 (2020-03-17). PMX provides a preprocessor for MusiXTeX. pmxab builds a TeX input file based on a .pmx input file in a much simpler language, making most of the layout decisions by itself. It has diff --git a/Build/source/utils/pmx/pmx-src/pmx294.for b/Build/source/utils/pmx/pmx-src/pmx294.for index 9032f4eecfe..73537dcc8a9 100644 --- a/Build/source/utils/pmx/pmx-src/pmx294.for +++ b/Build/source/utils/pmx/pmx-src/pmx294.for @@ -1,26092 +1,26085 @@ - program pmxab -c -c This program, PMX, developed by Don Simons -c (dsimons@roadrunner.com), is a preprocessor for MusiXTeX. In concert with -c MusiXTeX and TeX, its purpose is to allow the user to create high-quality -c typeset musical scores by including a sequence of PMX commands in an ASCII -c input file. -c -c This program is free software: you can redistribute it and/or modify -c it under the terms of the GNU General Public License as published by -c the Free Software Foundation, either version 3 of the License, or -c (at your option) any later version. -c -c This program is distributed in the hope that it will be useful, -c but WITHOUT ANY WARRANTY; without even the implied warranty of -c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -c GNU General Public License for more details. -c -c You should have received a copy of the GNU General Public License -c along with this program. If not, see . -c -c - character*9 date - character*5 version,versionc - common /comver/ versionc -c -c To compile with gfortran: -c 1. Merge all files using copy *.for epmx[nnnn].for -c 2. Search and replace all character*65536 with character*131072 -c 3. Comment/uncomment getarg lines -c 4. gfortran -O pmx[nnnn].for -o pmxab.exe -c -c To do -c Correct Rainer's email address in manual -c Linesplit (\\) in h -c Tt at start of a movement. -c Toggle midi on or off; allow midi only. -c Page number printed on 1st page even if 1 system. -c Still need inserted space for chordal accidentals -c Voicewise transposition. -c better segno -c coda -c duevolte -c Fix xtup bracket direction in 2-line staves?? (maybe leave as is) -c Sticky ornaments with shifts. -c Deal with Werner's vertical spacing thing associated with title. -c Multiple ties in midi -c Werner's missing c in MIDI due to start/stop ties on same note. -c Beams with single 64ths -c 128ths and/or dotted 64ths -c Close out MIDI with integral # of beats? -c Increase ast dimensions or redo logic. -c Does slur direction get set for user-defined single-note stem dir'ns? -c Transpose by sections. -c Optimization loop over sections only -c Command-line option to read nbarss in. Write out nbarss when optimizing. -c (or just read from .plg?) -c Beams over bar lines. -c 2-digit figures -c A real coule (slanted line between notes in a chord) -c Dotted slurs for grace notes. -c Undotted chord notes with dotted main note. -c Forced line break without line number -c Fix dot moving when 2nds in chord get flipped -c To do: increase length on notexq in dodyn -c 2.94 -c Allow moving dots on main and chord note in 2-note termolos -c Add definitions of \hbp and \hbpp to pmx.tex -c 2.91 -c Tweak: insert \stdstemfalse before every user-shortened or lengthened stem. -c This cancels defaul extensions to middle line and also (with 'L') allows -c stems that are longer than 4.66 but still don't reach middle line. -c Allow alteration of number height in multibar rest, option n. -c Fix bug introduced in 2.89 so that the "o" in "mo800" is now OK. -c 2.90 -c Many tweaks to allow gaps at end or middle of a system using -c L[n]S[x] and LC[y]. New pmx.tex. -c 2.88 -c Comment out print*,"Changed pathname to..." since it was going -c iteration when optimizing linebreaks with the undocumented option Ao. -c Add nv back in as argument for getmidi, so loop transferring data -c from midivel to midvelc can be executed. This corrects bug and -c allows per-instrument change in midi velocities at the start -c of any block -c Add subroutine inst2chan to transfer midi data as noted above. Works with -c Iv but buggy when used with IT and Ib -c 2.87 -c Allow changes to and from octave treble clef. Instrument with it -c must only have one staff. -c Some fixes for beam multiplicity changes at staff jumps. Must still -c use inline for mult. increase at downward staff jump. See sjb.pmx. -c 2.84 -c Bug fix: dots in chordal seconds -c Bug fix: Initialize ihornb for non-beamed, down xtup -c Bug fix: When using "AT" with 2-note x3c rD. -c 2.83 -c Fix problems when changing to or from octave treble clef. -c Fix beaming (or not) and number location for xtups with -c multiple rests. Still some problems with number height but -c can be band-aided with number height tweak option. -c Tweak error messages for options on "R" command. -c Allow forced beam height and slope tweaks with 2-note tremolos -c Allow chordal note with 2-note tremolos, adding dots as needed. -c Fix call to ncmid in beamstrt when setting start height for beam of -c 2-note trem, by changing arg from ivx to iv -c 2.82 -c bugfix: beams with rests, not confused with xtups. -c x option after slur index to allow slurs to go from one voice to another. -c x option also for ties -c 2.81 -c Allow string of rests to end xtup -c in chordal half-note 2-note tremolo, make chord notes open. -c 2.80 -c Add 2-note tremolos -c 2.78 -c Expand bufq to 131072 bytes -c Expand maxblks tp 9600 -c Allow up to 75 pages -c Index postscript hairpins from 1 up instead of by voice #. -c Add option 'o' to forced beam for open notehead (\hb); set ipl(3) -c Add option T[n], n=1,2,3 for single stem tremolo -c 2.77 -c Enable AV+/-x+/-y to add vskip bigh before or after \eject -c 2.76 -c 2.75 -c Bugfix: unbeamed xtups with dots: in beamn1 and beamid allow dotted 16th, and -c 2 or 3 flags on shortened note. -c 2.74 -c Bugfix: allow "0" as argument of @ command on lyrics string. -c Check for and allow "\ in centered page headings with P command. -c Check for and allow "\ in text dynamics with D command. -c For lyrics string starting in xtuplet, insert check for inputting musixlyr. -c For staff-crossing beamed xtuplet chords, if 2nd segment of a joined beam -c starts with a blank rest, put '\sk' into the TeX. -c To enable high-to-both beamed etup staff-crossing chord, for blank -c rest at start of forced beam, shift \sk's from before to after \ib..; -c so \ib is at start and note in upper voice has a beam to connect to. -c Expand range of vertical xtup number shift, now stored in mult(16-22) -c Check for and allow \" within lyrics strings, for umlauts. -c 2.73 (160121) -c Dirk's "..." command, to convert "text" into \pmxlyr{text}\ and insert as -c inline TeX. Replace all '~' inside "..." and not preceded with '\', by -c '\lk '. Right after 2nd ", replace @[a,b][+,-]n with \at{[a,b][+,-]n}\ -c Include definitions of \ly and \at in pmx.tex (2 Feb 16). After first ", -c add (as type 2 string) '\\input musixlyr \' -c After inputting pathname, change any '\' to '/', for Linux compatibility. -c 2.72 (160110) -c Really finalize \mbrest...go back to 3 args to deal with clef changes. -c Fine tune centered whole bar rests to deal with clef changes -c Fix bug in wsclef when >1 staff per instrument, since \setclef -c needs to know instrument and specify clefs on all staves for that -c instrument. Ones that were not changed by user will not be printed, -c and will be kept the same as before. -c Fix bug with arpegii from one voice to another in same staff. -c 2.71 (151226) -c Finalize mbrest mods -c 2.705 -c Fix error message -c 2.704 (140614) -c Octave treble clef -c Make horizontal ornament shift (ornhshft) floating -c 2.703 (140323) -c Option v[-]n at end of any figure will alter figdrop for rest of system -c 2.702 -c Stem slurs. Only for ps, assume no other pos'n adjustments. Option "v" -c 2.701 -c oC = coda (\code{10}) -c Move iornq(29) (blank barline) to ipl(0) (changes in pmxb, getnote) -c oG = new seqno -c To do: fix grace note spacing problem (partially done) -c 2.622 -c Redefine midtc(..) and miditran(..); clean up all transpositions/key changes -c Kn[+/-...] \ignorenats at signature changes -c Fix tie checks in doslur() and dopsslur() to subtract iTransAmt from nolevs -c before checking and setting pitch levels levson() and levsoff() -c Define midisig separately from isig. Put in common commidisig. -c Use for explicit midi signature and for accid corrections to midi piches -c in addmidi. -c 2.621 -c Make keyboard rest option work in xtuplets. Created subroutine -c chkkbdrests, modified make2bar to include calls to chkkbdrests as rqd. -c 2.620 -c Allow user-defined rest height tweaks at start of beam. -c 2.619 -c At movement break, change \nbinstruments in \newmovement macro; add -c 3rd arg to \newmovement in pmx.tex; modify pmxb.for and getnote.for -c to remove call to newnoi and change call to \newmovement -c 2.618 -c Add option Ac[l,4] to set vert and horiz size and offsets to properly -c center page for letter or a4 paper. -c 2.617 -c In g1etnote, change if-check for note to use index(...) instead -c of ichar(charq) since it was messing up gfortran optimizer -c After pmxa, search for and remove penultimate line / -c because it was screwing up linux-compiled versions -c Bugfix: Increase dimension of kicrd from 7 to 10 in crdaccs(...) -c 2.616 (111110) -c Allow hairpins to span multiple notes groups (gulps). -c 2.615+ (110810) -c Fix midi when some instruments are transposed, by subtracting -c iTransAmt(instno(iv)) from pitch values sent to via addmidi in -c make2bar.for (for main notes) and docrd (for chord notes) -c 2.615 (110725) -c Fig bug with size-setting (in topfile) when instrument has >1 staves -c 2.615 (110724) -c Make AS[0|-|s|t]... really set sizes -c 2.614 -c Mod notex.for to fix Terry's bug with raised dotted rests (caused -c by double-hboxing). -c 2.613 -c Bugfix: In pmxa, change "do while" limit to keep from overwriting instno. -c 2.612 -c Enhance AS to allow s or t for smallsize or tinysize -c 2.611 -c Error trap for "D" before any notes in a block. -c 2.610 -c Instrument-wise key changes and transposition (incomplete) -c 2.603 -c 101211 In getpmxmod.for, decreased nline by 2 to fix locating errors -c following reading in an include file. -c 101121 Added some error messages in g1etset.for setup data -c 2.602 -c Correct slur indexing in linebreakslurs. -c Account for comment lines in line count for error messages -c 2.601 -c Bug fix: allow 24 slurs with graces -c 2.60 Changes made make it really big -c increase mv (size of midi) ? Note: MIDI can't have >16 voices w/o -c major reprogramming, and 16 may also be a problem (icmm) -c nm=24 (voices) done -c 24 slurs done -c 24 simultaneous beams (Replace index 24 by 0, so get 0-23) -c bufq*131072 (gfortran only) -c getarg syntax (gfortran only) -c 2.523+ -c Fix voice numbering for normal dynamics and text dynamics -c 2.523 -c Version of bigpmx first posted to Hiroaki's web site. -c 2.522 -c 5/26/10 Replace ipl bits 0-7 with ipl2, add new common for it. -c With 2.521+ as starting version, incorporate bigpmx mods to allow 24 voices. -c 5/13/10 Fix log2 function -c 5/15/10 Fix bitwise storage for dynamics, fix segnoo string length. -c 2.521+ -c 091025 Enable dotting 2nd part of linebreak slur or tie. -c To adjust barno height due to linebreak slur, use \bnrs instead of -c explicitly redefining \raisebarno (pmxb) -c 2.521 -c Bugfix -c 2.520 -c 090519 Enable ligfonts (special figured bass characters) -c 2.519 -c Fix another bug which kept \sk from being output so misaligned some notes. -c 2.518 -c Fix bugs: referencing fig data, char declaration for member of -c common/comfig/ -c 2.517 -c Allow figures in voice 1 + any one other. -c 2.516 -c Allow figures in voice #2 -c 2.515+ to do: Change manual and activate rule against clef change in voice #2. -c 2.515 -c 071222 Changes in getnote to allow auto forced beams to start anywhere. -c 071206 In make2bar, shift fermataup7 to left over centered pause. -c 070901 In doslur, check for nolev <=2 in case slur ends on rest in 2-line -c staff (it was screwing up vertical justification). -c n34 for tweaks to midi durations of quarter note septuplets. -c To do: In ref250.tex, the tables where 's,t,)' is explained, the line -c [+,- i] ... Vertical adjustment of the start of second segment -c should it be replaced by -c [s +,- i] ... Vertical adjustment of the start of second segment -c 2.514 -c Changes in make2bar to get horizontal spacing right when normal grace -c follows after grace -c Changes in dograce to get octaves right for any material entered inside -c \gaft, which shields transpose register changes from the outside world. -c 2.513 -c In make1bar, near end, for forced beams starting with a rest, copy hgt and -c slope tweaks to ALL notes after first, not just the second one, so if -c there's more than one rest at start the tweaks are still observed. -c In beamid and beamend, add stand-alone triply-flagged notes for xtups. -c 2.512 -c Near end of pmxb, fix error trap to allow redundant 'RD' -c Enable multiplicity down-up '][' within xtup. -c 2.511 -c Introduce eskz2 for xtup #'s and bracket lengths, to remove bug caused by -c adjusteskz as in bar 7 of barsant. -c 2.510a -c Test: remove restriction on tempo changes in MIDI macros -c Send to CM for beta testing. -c 2.509+ -c To do: Correct manual on AS. "-" is for smaller staves. -c 2.510 -c Forgot to declare litq, voltxtq as character in subroutine getgrace -c 2.509 -c Corrected small bug in arpeggio shifting (ivx <= iv in call putarp) -c 2.508 -c Allow graces in xtups. New subroutine getgrace. -c 2.507 -c To do: Raise/lower figures. -c To do: Add 24, 29 to list of musicsizes in manual -c New sub adjusteskz to account for ask's when computing lengths of -c brackets for unbeamed xtups, slopes and horizontal posn's of number -c Bug fix: in beamn1, beamid, and beamend, allow unbeamed xtups w/ 2 flags -c Add look-left option for keyboard rests, "L" in rest command, set iornq(30) -c 2.506 -c Fix bug with AK, when simultaneous rests have same duration, use defaults. -c 2.505 -c Keyboard rests AK -c 2.504 -c Space after normal grace: option X[n] -c Fixed og when nv .ne. noinst, by using sepsymq instead of '&' -c (To do) length of xtup bracket when there is added non-collision space. -c Trap musicsize if .ne. 16,20,24,29. -c 2.503 -c Enable arpeggio left shift with ?-x -c To do: In manual, arpeggio over 2 staves. -c Allow musicsize of 24 and 29. Had to define meter font size explicitly, -c also change font size for text dynamics, but not much else so far. -c Bugfix in beamstrt, introduced in 2415, ip was changed before putxtn -c was called, causing error in printing replacement number. -c 2.502 -c Incorporate Dirk Laurie's patch to use { , } , for ties. -c Figure height adjustment: append +[n] -c Change ec font stuff in pmx.tex per Olivier Vogel's comment (CM email?) -c 2.501 -c Readjust horizontal offset back to .8 in LineBreakTies -c Fix zero-subscript (iudorn) in putorn -c 2.50 -c Increase number of text-dynamics (dimension of txtdynq) per block -c from 12 to 41. -c Slur option n to override altered default curvature. -c Allow default ps slur curvature tweaks with Ap+/-c -c 2.416 -c Increase length of textdynq from 24 to 128 -c (Todo) Add comment in manual about blank lines at end. -c Configuration file: Define subroutine getpmxmod, check path in environment -c variable pmxmoddir, check existence, read lines into bufq after setup. -c Increase dimension on idynn in dodyn from 4 to 10 for max number -c of marks in a bar -c Increase allowable # of lines from 2000 to 4000. -c (To do) Replace definition of \liftpausc per Olivier. -c (To do) Fix extraneous error message if RD is placed at very end. -c 2.415 -c Fix "AT" option: replace putxtn,topfile,beamstrt,beamid to use \xnumt -c instead of redefining \xnum. Change font used to \smallfont (as for -c normal xtups, -c Allow slur to start on rest. -c 2.414 -c Correct bug in crdacc when adding accidental to boundary causes number of -c segments to decrease -c Special rule for 3-accidental chords: If no 2nds, place them in order -c top, bottom, middle. -c 2.413 -c Correct bugs in chordal accidentals, related to left-shifted noteheads -c (a) Special problems with downstem when main note needs shifting -c (b) Assign 0 rank to boundary segs due to left-shifted noteheads -c 2.412 -c Change default horiz shift of start of seg 2 of linebreak slurs: -c -.7 for slurs, -1.2 for ties, -c Use height of start of seg 1 slur itself for end of 1 and start of 2. -c 2.411 -c "Apl" activates special treatment of linebreak slur/tie's; breaks all in 2. -c "s" option in start of slur/tie as precursor to vert/horiz tweaks for end -c of seg 1. of linebreak slur/tie, 2nd "s" for start of seg2. -c With "Apl", curvature adjustments on starting slur command apply to seg 1, -c those on ending command to seg 2. -c 2.410 -c "AT" to allow Col. S.'s tuplet option. Simply input tuplet.tex and redefine -c \xnum, \unbkt, \ovbkt. -c "s" option in main xtup input after "x": slope tweak for bracket. mult(4) is -c flag, mult(5-9) is tweak value+16 -c 2.409 -c Bugfix in docrd for MIDI: Use original pitch in case main/chord were -c switched due to 2nds. -c Remove "o" from error message for "A" command. -c New syntax: optional instrument number separator ":" in movement -c break command to precede a 2-digit instrument. -c Conditional output formats for \setname at movement break to allow -c instrument numbers >9. -c Bugfix in coding to raise barno due to slur over line break (pmxb) -c Move date/version data statement in pmxab to a better place. -c 2.408 -c Allow pnotes{x} when x>9.995 (mod is only to format stmt in make2bar). -c Bug fix in \liftPAusep in notex.for and in pmx.tex -c Character variables for version and date -c For up-stem single graces slurred to down-stem, shift slur start left by -c 0.8 so slur doesn't get too short. -c Initialize and slide mult, same as other full-program variables in /all/. -c 2.407 -c Allow AN[n]"[partname]" to be parsed by scor2prt as filename for part n, -c 2.406 -c Alter PMX: put \dnstrut into \znotes in \starteq (for system spacing -c equalization). -c Put dimensions of double sharps and flats in crdacc (for chords). -c Bugfix: Use sepsymq in LineBreakTies(..) instead of '&' -c Use only first 4 bits of mult for multiplicity+8, so rest can be used -c for other stuff. -c Move stemlength stuff in nacc(27-30) to mult(27-30) to remove conflict. -c 2.405: Not published but saved for safety. -c Option Aph to write \special{header=psslurs.pro} top of each page, so -c dviselec will work OK. -c 2.404 -c Allow slur to end on rest, but not start on a rest. Efaults height -c of ending is default height of start (before any automatic or user- -c defined djustments). User may adjust height as normal from default. -c 2.403 -c Bugfix: turn off repeated beaming patterns.at end of non-last voice. -c 2.402 -c Automatic repeated forced beams. Start with "[:" End with next explicit -c forced beam or end of input block. -c Increase # of forced beams per line of music per input block from 20 to 40 -c 2.401 -c Optional K-Postscript Linebreak Ties, Apl. New subroutine LineBreakTies. -c Makes 1st part normal shape, and starts 2nd part a little further left. -c Enable arpeggios in xtuplets. Had to make time itar(narp) a real. -c 2.40 -c Set up WrotePsslurDefaults (logical) so only write defaults on 1st Ap. -c Fix non-ps-slur input to \midslur (third signed integer). Do not reverse -c sign for down-slurs. -c 2.359 -c Add error exit subroutine stop1 to make exit status g77-compatible.. -c Absolute octave on xtup chord note was 2 octave too high, fixed in getnote -c Fermata on vertically shifted rest: special trap in putorn() to set height. -c Correct multiple grace note spacing for small staves (in dograce, -c define wheadpt1 depending on staff size) -c 2.358 -c Allow curvature corrections at start of postscript slur, in dopsslur() -c Local slur options p[+|-][s|t] for [nos|s]luradjust,[not|t]ieadjust -c Options for [Nos|S]luradjust,[Not|T]ieadjust,[noh|h]alfties: Ap[+|-][s|t|h] -c Make t[ID] act like s[ID]t, most mods in spsslur(). -c Add spsslur() to read in data for ps slurs, call from getnote. -c In beamstrt, save args for SetupB in common comipb to save them for -c 2nd call when xtup starts with rest -c Add spacing for ornament ")" as if it were accidental, in make2bar(). -c Horiz shift start and end of ps ties, dep. on stem dir'n, in dopsslur() -c Horiz. shift start of ps grace slur, 2 places in dograce(). -c Horiz shift end of grace slur in endslur() -c Make st slurs into postscript ties. Separate subroutine dopsslur(), -c Non-beamed xtup: "a" in 1st note or rest, before "x" (sets drawbm=.false.) -c Allow two D"x" on same note. Introduced jtxtdyn1 in dodyn. -c 2.357a -c Fix missing "end" in backfill.com, too-long lines in g1etnote, getnote -c 2.357 -c Increase dimension for # of lit TeX strings from 52 to 83. -c Allow blank rest in middle of xtuplet. Only mods in g*etnote(). -c 2.356 -c Increased some dimensions from 30 to 40 to allow up to 40 pages. -c In unbeamed xtups, "n" did not suppress bracket. Fixed in beamstrt(). -c Fix parsing of "f,h,H,HH" in sslur. -c Fix bug with cdot, note-level for slur termination (in getnote) -c 2.355 -c Midi transposition: IT[+|-][n1][+|-][n2]...[+|-][n(noinst)], -c n=# of half-steps. Restrict to mult. of 12 now, to avoid key-sig issues -c Make midi recognize ps ties in doslur. -c Correct ttieforsl so that it eats 2nd argument properly, using \zcharnote -c to get octave right. -c 2.354 -c With postscript slurs, make t-slurs real ties by inserting replacement -c macros \tieforisu, etc, defined in pmx.tex -c Check for open cresc or decresc at end of input block, using list[de]cresc -c Hairpin syntax conditional on postscript slurs. Backup to fill in start -c level, using new backfill(...). Separate height tweaks for -c start and finish. -c 2.353 -c K-0+n to transpose by half step (rather than just change key) -c Allow "rm[n]" when nv>1. Require it in all parts. Just write a stack of -c \mbrest's -c Enable "Rz"; define \setzalaligne in pmx.tex. Special treatment at end -c of input block before movement break, and at start of block after -c movement break, using \newmovement rather than \setzalaligne, since -c former already redefines \stoppiece. In second case, set rptfg2='z'. -c Make clefq(nm) common between pmxb and getnote; change references in -c getnote at 'M' to array elements, setting all new clefs as you go. -c 2.352 -c Remove \parskip redefinition from pmx.tex; write it into TeX file when -c "Ae" is invoked. -c Ap to activate postscript slurs. Add macro \psforts to pmx.tex to redefine -c \tslur in case \midslur was used. Allow slur inputs 'f','h','H','HH', -c translate them thru mapping to (1,4,5,6) as \midslur params, then let -c \psforts translate them back to ps slur macors. -c 2.351 -c Number slurs from 0 up instead of 11 down, anticipating postscript slurs. -c Write "\eightrm" instead of "\cmr8" for \figfont with small baseline size. -c Increase length of basenameq to 44 characters everywhere. -c Increase dimension of mcpitch (midi-chord-pitch) to 20. -c Set default systems per page to 1 if nv>7 -c In pmxb, move place where isystpg is reset to 0, so that \eject gets -c written when there is just one system per page. -c 2.35 -c Cautionary accidentals with 'c' anywhere in note symbol. -c NEW pmx.tex with \resetsize to set size to normal or small depending on -c current \internote. Used with new coding in dograce() to get right -c new size in case user has \setsize'ed some lines to \smallvalue. For -c \smallvalue-sized staves, redefine \tinynotesize to give 11-pt font. -c Affects pmx.tex. -c Continuation figure with fractional length. May now mix with other figures. -c If another figure follow Cont-fig, separate with colon. -c 2.342 -c Bugfix in getnote to recognize relative octave shift in grace at start of -c input block. -c In make2bar, initialize islhgt=0 earlier than before (possible solution -c to Suse g77 compile problem that I could not reproduce).. -c Bugfix in beamstrt & beamn1 for r2x6 c4D d d d -c 2.341 -c Syntax check: Forced page break page number must be > than previous. -c Bugfix: Define ivx when "sliding down" breath/caesure data in pmxb. -c 2.34 -c New pmx.tex with redefined liftpausc -c Bug fix with dotted, non-beamed xtups. -c 2.332 -c Fix bugs in horizonal shifts, spacing, for accid's, graces, noteheads. -c Allow arbitrary pos. input to W in g1etnote and getnote. -c 2.331 -c Bug-fix in dodyn(..): typo on length of arg of txtdyn -c 2.33 -c Caesura (oc), breath (ob). Set iornq(28), store rest of data in ibcdata() -c 2.321 -c Rescale accidental shifts. Still use 7 bits but now map (0,127) -c onto (-1.,5.35) -c Fix ihornb bug in dodyn, seen with dynamics on lower-voice non-beamed xtups -c 2.32 (Noticed after posting) -c Prohibit "/" as figure. -c 2.32 (Posted) -c Tidied up accidentals in chords, do spacing. -c Still to do: -c check for "(" on chord notes in spacing algo -c small accids -c double accids -c autoshift slurs -c 2.310 -c Extra call to precrd ahead of spacing chk, and single-note crd/acc -c shifts seem OK, but not multiple. crd/acc shifts not recorded 1st time. -c 2.309 -c Alternate algo for accid shifts in chords. -c 2.308 -c Auto horiz. notehead shifting added to precrd. -c 2.307 -c Auto shifting of multiple accidentals in chords. -c "Ao" in main chord note to keep accidentals in order. Set nacc(28). -c If there are any manual main or chord note shifts, then -c If any manual shift is preceded by "A" then -c 1. Auto-shifting proceeds -c 2. "A"-shifts add to autoshifts -c 3. non-"A" shifts are ignored! -c Else (>0 man shifts, none has "A") -c No auto-ordering, No autoshifts, -c End if -c End if -c 2.306 -c Initialize legacy note level to middle C in case user forgets to set -c octave. -c Shift xtup note? -c Shift in elemskips rather than noteheads? -c 2.305 -c Stop pmxb from multiple endvolta's at start of new page. -c 2.304 -c "Sx" in a note means shorten stemlength by x \internotes. "Sx:" turn on -c for multiple notes in the voice, "S:" last shortened note. -c 2.303 -c vshrink stuff all OK? Description is in pmxb. -c 2.302 -c Toggle vshrink with "Av". vshrink normally kicks in when \interstaff -c hits 20. This still needs work. -c Add " /" to last line if last char is not % or /. -c 2.301 -c Check in beamn1 for single note before multiplicity down-up. -c allow '.PMX' as well as '.pmx' -c 2.299 -c Correct typo in pmxb involving PMXbarnotrue. -c Replacement printed number for xtup: Unsigned integer after 'n' after 'x' -c Minor upgrade parsing xtuplet options 'x...' -c Correct dimension of nxtinbm in make2bar. -c 2.298 -c Account for doubled xtup notes in subroutine getx (user-defined spaces), -c by adding ndoub as an argument.. -c 2.297 -c Created and solved compiler problem. Put drawbm(NM) in its own common. -c Add new def'ns [\a|PA]usc, \lift[pa|PA]usc to pmx.tex, use them in make2bar -c when \centerbar is used. -c Modify \mbrest & \CenterBar in pmx.tex to use \volta@endcor etc. Have PMX -c use right 2nd and 3rd args for \mbrest when key, meter, or clef changes. -c 2.296 -c Correct printed numbers for forced beams with multiple xtups. For each beam -c make list in setupb by voice of eloff (h-offset) and mtupv (printed #) -c Increase lengths of jobname and infileq by 20 characters -c Enable whole notes and breves as 1st or last note of xtup in beamn1 and -c beamend, and wholes in beamid. -c 2.295 -c Midi balance Ib[n1]:[n2]:...[nn] -c Single-slope beam groups [...]-[...] -c Trap "i" unless after accidental (main notes, xtups, chord notes) -c 2.294 -c Unequal xtups with "D" to double a note in an xtup. -c As above, "F" will (a) increase multiplicity by 1 for marked note and next -c one and (b) add a dot to the first one. -c Fix bug with e.g. c84 [ .d e.f ] by checking whether forced beam is on -c when "." is encountered, then correcting beam start time.(end of getnote) -c MIDI velocity (volume) set: Iv[n1]:[n2]:[n3]... -c 2.293 -c Check for single notes spanning bar lines. -c Correct various bugs with staff-jumping beams. (1) for 2nd segment, vxtup -c must be set in make2bar since beamstrt is not called, fixing problem with -c dot at end. (2) add ivjb2 to flag which voice has 2nd segment and fix -c problem when >2 staves. -c Add nodur to args of dodyn, so can check if stemless and avoid height tweak -c Correct bug in getdyn setting flag in idynda2(0) for manual horiz. tweak -c 2.292a -c Undo syntax check for Type 2 or 3 TeX string starting in column 1. -c Meanwhile, Werner's problem with a mid-line Type 3 string has gone away?! -c 2.292 -c Allow comments in xtuplets -c Enable multiple octave jumps in grace notes. -c Allow dynamics in xtuplets. -c Fix bug in getdyn searching for end of text string (correct length of lineq -c to 128) -c Fix bug in dodyn, must ignore horiz. interaction tweak for -c user-text (idno = 0) -c Syntax check for Type 2 or 3 TeX string starting in column 1 -c (NOTE: later undone!) -c Syntax check for page number > npages at forced line break. -c 2.291 -c Fix error in AS command (accid spacing for small systems), making only -c one spec per staff, nv total. -c Stop using MIDI channel 10 -c 2.29 -c Fix error in console output format for # of bytes used in MIDI file. -c Fix bug in dograce so no space is added between grace and main note when -c there is a MIDI-only accidental. -c Fix bug so oes?+4 works. It was too ugly to explain. -c ...Different ways of storing accidental specs on input and output. -c No longer zap \writezbarno in special situations. -c Fix bug in dyntxt level on rest -c Line spacing equalization. Add macros \starteq, \endeq, \spread, etc. -c Activate with Ae. (Maybe later could input alternate values for -c \upamt, \dnamt, \parskip). Put \starteq on 1st note in voice 1 -c in the page, and \endeq on 1st note of next-to-last line in page. -c 2.28 -c Flip direction of forced beam "[f..." -c Fix beam numbering for staff jumping beams. Uses irest(23,24,29,30) -c Fix bug in sliding ip's for txtdyn's -c In dyn's allow vert. offsets +/-64, horiz +/-25.6 (store in idnyda2(1-99) -c 2.27 -c Comment out lines in dodyn checking number of dynamic marks found. Voice -c order may not be monotonic if two lines on a staff. -c Literal dynamic: D"[text]" -c 2.26 -c Allow hairpin start-stop on same note by disabling auto-tweaks in dodyn, -c increasing dimension of idynn to 4 to allow 4 symbols on same note. -c Increase voltxtq length from 10 to 20. -c AS[-/0][-/0]... to inform PMX that "-" voices are small, and rough -c accounting for ast's is done by defining effective headwidth -c whead1 in makebar2 to be 0.8*whead. -c 2.25 -c Fix logic bug with sepsym's when # of instruments changes. -c Slight increases in default offsets for hairpin starts after "p" -c 2.24 -c Hairpins D< or D> as toggle. -c Many automatic position tweaks for letter-group dynamics and hairpins. -c 2.23 -c Continued rhythmic shortcuts: space followed by "." or "," -c 2.22 -c In call to doslur, change tno(...) to tnote(...). This was only -c used when checking to slurs per stem directions, and should have been -c the note duration all along. -c MIDI-only accidental, bit 17 in nacc, or 27 in icrdat. -c Use "i" anywhere in note symbol. -c 2.21 -c Increase from 20 to 30 dimensions for movement breaks and midi sections. -c Fix out-of-order declarations per mutex comments -c Add "Bad error" and "Kluging" messages to log file. -c 2.197 -c add /comips/ to save tie-check midi variables -c For spacing of clef changes at start of input block, changed integer time -c lastnodur to prevtn, so it works with xtups. Possible incompatibility! -c 2.196 -c Fix Ickbug with time check in ncmid() -c Interchange \fermataup7 and \pausec to get proper alignment -c Enable French violin clef "f", number 7 in PMX, but 9 in MusiXTeX. -c Add defn's of \hsp, \hspp to pmx.tex -c Fix pre-slurs on xtup chord notes. -c Fixed raised PAuse, define \liftPAuse -c Replace \zbreve\sk with \breve. -c Made "1" work as mtrdenl by doubling it and mtrnuml. BUT WAIT...what -c about "o" and 1 as shorthand for 16???? Search for "Kluge" -c Added "vo" (voice) as MIDI instrument 55 -c Allow 3-digit page numbers (search for "toppageno") -c Fix bug caused by prior fix (cancelling accid after bar line was ignored). -c Fix double accids in chords -c 2.194 -c Fix bug with accid/tie/barline/chord in addmidi by restructuring accid if -c block. -c Add meter to MIDI file with every pause -c Purify FORTRAN? -c 2.193 -c Increased # of in-line TeX strings from 36 to 52. -c Fix entry of # of bytes in header of tempo/meter/key track to allow >255. -c 2.191 -c Event track: Tempos, meters, keys all together. Data in comevent -c 2.15 -c Pretty good midi capability. Still no attention to slurs on chord notes. -c 2.11 -c 11 Dec 99 c rm1 -c 11 Dec 99 "oes?", "oe?" -c 11 Dec 99 Cancel slur horizontal tweaks with non-stemmed notes -c 11 Dec 99 Error message for shifted, repeated ornaments. -c 2.10 (Version 2.1) -c Fix bug with lowdot and xtuplets -c 2.09 -c Fix bug with multiple ornament heights over beams, when one is . or _ -c Error message from pmxa if rest on last note of xtup. -c Enable 12 slurs. -c Reinstate multiple rests at start of xtup. -c 2.07 -c Combine consecutive type-1 TeX strings. -c \midslur and \curve as 3rd signed digit in slur termination, + 2 opt.int's. -c Fixed breve chord notes in docrd -c Check irest(28) as well as vxtup when setting nodur for chord notes, since -c vxtup isn't set until 1st *main* note in xtup -c Vectorize nolev1, slope, ixrest. Klug fix for xtups with variable spacing. -c 2.06+ -c Make deterministic the beam slope calculation when there are an even # of -c slopes in list and middle two are equal magnitude but opposite sign. -c pmxa Trap for "o:" before 1st note in block -c Partial bug fix for 64th notes in xtuplets. -c Make ixrest a vector, since with new time scheme may not finish xtup in -c same notes block. -c Increase max # of pages from 20 to 30 (dimensions of nsystp,..., in pmxb) -c 2.06 -c Account for changes in nv when computing \interstaff. Add a counter -c nistaff(iflb) = # of interstaff spaces per system = nv-1. Set whenever -c setting isysflb(iflb). Note nv can only change at a forced line break. -c Note also, iflb starts at 0! -c 2.05 -c Automatic start of new notes group with part 2 of staff-jump beam -c In make1bar, set irest bit 29 of lowest-voice note at same time, -c use as flag when making notes groups. -c For now, remove dummy blank line at end...it zaps terminal repeats. -c 2.02 -c Fixed slur-counting bug for multiple, slurred, aftergraces. -c 2.01 -c Increase to ask(1400) -c Increase max forced page breaks to 18 -c Define pausc for centered pause -c 2.0a -c Insert dummy blank line at very end to handle input files w/o terminal CR-LF -c pmx03r -c Option m[n] in S symbol to change musicsize (for parts) -c Double dotted rests now work. -c Write file name to log file -c Check existence of input file -c Allow 24-char jobname, may end with ".pmx" -c Comment out time stuff -c Replace 3-argument getarg with 2-argument + iargc -c Fix bug with negative noinst due to nint<=int replacement -c move lovation of iv in isdat1 to allow iv>7. -c Set nm=12 -c pmx03q -c replace int(x+.001) with nint(x) -c Write TeX file name to screen and to pml. -c Replace char(...) with chax(...) to sovle msdev bug. -c Bug fix: macro terminations when M is on a line by itself. -c Bug fix: don't accumulate space for XS in pmxa. -c Streamline Macros: use pointers to bufq instead of scratch files -c pmx03p -c Store input file in single character array bufq. -c lbuf(i)*2 is length of line i -c ipbuf is position just before next line to be read. -c pmx03 -c Optimize read/writes -c pmx02 -c Fix line count (for errors) when there are saved macros -c pmx01 -c In optimize mode, open/close macros (Watch out for residual zz files!) -c Command line input -c Option Ao to optimize, otherwise normal processing -c -ccccccc - parameter (nks=125,nm=24,mv=24576,maxblks=9600) - character*128 lnholdq - character*131072 bufq - integer*2 lbuf(maxblks) - common /comevent/ miditime,lasttime - logical slmon,dbltie - common /comslm/ levson(0:nm),levsoff(0:nm),imidso(0:nm), - * naccbl(0:nm),laccbl(0:nm,10),jaccbl(0:nm,10),nusebl, - * slmon(0:nm),dbltie - integer*2 mmidi - logical restpend,relacc,notmain,twoline,ismidi,crdacc - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) - * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) - integer*2 iinsiv - common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq - common /commus/ musize,whead20 - integer*4 nbars0(nks),nbars(nks),ipoe(nks),nbari(nks) - real*4 poe0(nks),poe(nks) - logical isfirst,optimize - logical*4 fexist - character*44 jobname - character*47 infileq - common /a1ll/ iv,ivxo(600),ipo(600),to(600),tno(600),nnl(nm), - * nv,ibar,mtrnuml,nodur(nm,200),lenbar,iccount, - * idum,itsofar(nm),nib(nm,15),nn(nm), - * rest(nm,200),lenbr0,lenbr1,firstline,newmeter - logical rest,firstline,newmeter - common /comdiag/ n69(0:nm),n34(0:nm) - logical mmacrec,gottempo - common /commmac/ mmacstrt(0:nm,20),mmacend(0:nm,20),immac, - * mmactime(20),nmidsec,msecstrt(0:nm,60),msecend(0:nm,60), - * mmacrec,gottempo - common /truelinecount/ linewcom(20000) -c -c Added 130302 only to get nsperi from g1etnote, for use in midi setup -c - common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, - * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 - logical lastchar,fbon,issegno,isheadr,isvolt -c -c immac(i) is the index of i-th macro, i=1,nmac. Also make a list containing -c nmidsec section starts and stops based on PLAYING macros (not recording). -c -ccccccccccccccccccccccccc -c - data date /'27 Jan 20'/ - data version /'2.94'/ -c -ccccccccccccccccccccccccc - data maxit,ncalls /200,0/ - data isfirst /.true./ -c itstart = mytime() - versionc = version -c -c Initialize midi parameters -c - gottempo = .false. - ismidi = .false. - debugmidi = .false. - relacc = .false. - mmacrec = .false. - nmidsec = 1 - mgap = 10 - miditime = 0 - lasttime = 0 - nmidcrd = 0 - nusebl = 0 - notmain = .false. - do 3 ivx = 1 , nm - twoline(ivx) = .false. - midinst(ivx) = 6 - midivel(ivx) = 127 - midibal(ivx) = 64 - miditran(ivx) = 0 -3 continue - do 12 icm = 0 , nm - imidi(icm) = 0 - restpend(icm) = .false. - trest(icm) = 0. - levson(icm) = 0 - levsoff(icm) = 0 - slmon(icm) = .false. - naccbl(icm) = 0 - n69(icm) = 0 - n34(icm) = 0 - msecstrt(icm,1) = 1 -12 continue -c -c End of midi parameter initialization -c - musize = 0 - optimize = .false. - numargs = iargc() - if (numargs .eq. 0) then - print*,'You could have entered a jobname on the command line,' - print*,' but you may enter one now:' - read(*,'(a)')jobname - numargs = 1 - else -c call getarg(1,jobname,idum) ! May need to replace this w/ next line - call getarg(1,jobname) - end if -10 ljob = lenstr(jobname,44) - if (ljob .gt. 44) then - print*,'Jobname is too long. Try again.' - call stop1() - else if (ljob .eq. 0) then - print*,'No was jobname entered. Try again.' - call stop1() - else if (numargs .eq. 2) then - if (ljob.eq.2 .and. jobname(1:2).eq.'-o') then - optimize = .true. -c call getarg(2,jobname,idum) ! May need to replace this w/ next line - call getarg(2,jobname) - numargs = 1 - go to 10 - else - print*,'Illegal option on command line' - call stop1() - end if - end if -c -c Strip ".pmx" if necessary -c - ndxpmx = max(index(jobname,'.pmx'),index(jobname,'.PMX')) - if (ndxpmx .gt. 0) then - jobname = jobname(1:ndxpmx-1) - ljob = ljob-4 - end if -c -c Check for existence of input file -c - infileq = jobname(1:ljob)//'.pmx' - inquire(file=infileq,EXIST=fexist) - if (.not.fexist) then - inquire(file=jobname(1:ljob)//'.PMX',EXIST=fexist) - if (.not.fexist) then - print*,'Cannot find file '//infileq - call stop1() - else - infileq = jobname(1:ljob)//'.PMX' - end if - end if -c -c Open a log file -c - open(15,file=jobname(1:ljob)//'.pml') - call printl('This is PMX, Version '//version//', '//date) - ljob4 = ljob - call printl('Opening '//infileq) - open(18,file=infileq) -c -c Copy input file into common buffer -c - ipbuf = 0 - linewcom(1) = 1 - do 8 ilbuf = 1 , maxblks - ncomments = 0 -14 read(18,'(a)',end=9)lnholdq - lbuf(ilbuf) = lenstr(lnholdq,128) - if (lbuf(ilbuf) .eq. 0) then -c -c Blank line. Make it a single blank with length 1 -c - lbuf(ilbuf) = 1 - lnholdq = ' ' - end if -c -c Now line has at least one non blank character. Check for comment -c As of Version 260, do not copy comments into bufq -c But need to count %'s for error messaging -c if (lnholdq(1:1).eq.'%') go to 14 - if (lnholdq(1:1).eq.'%') then - ncomments = ncomments+1 - go to 14 - end if -c -c When here, have counted all preceding comments and have a real line -c - if (ilbuf .gt. 1) then - linewcom(ilbuf) = linewcom(ilbuf-1)+1+ncomments - else - linewcom(1) = 1+ncomments - end if - if (ipbuf+lbuf(ilbuf).gt.131072) then - print*,'Too many characters in file, stopping' - call stop1() - end if - bufq(ipbuf+1:ipbuf+lbuf(ilbuf)) = lnholdq - ipbuf = ipbuf+lbuf(ilbuf) -8 continue - call printl('Too many lines in input file') - call stop1() -9 continue -c -c Insert dummy line to handle input files w/o CR-LF at end. -c - nlbuf = ilbuf-1 -c nlbuf = ilbuf -c bufq(ipbuf+1:ipbuf+3) = ' / ' -c lbuf(nlbuf) = 3 - close(18) - do 6 numit = 1 , maxit - if (optimize) call printl('Starting an iteration') -c -c When isfirst=.true., pmxa() generates linebreaks normally, output in nbars0. -c Otherwise, nbars0 is the input -c When islast=.false., pmxb only returns poe's, otherwise does whole job -c - call pmxa(jobname,ljob4,isfirst,nsyst,nbars0,optimize) - if (.not.optimize) then - if (ismidi) then -c -c This was moved here from writemidi 130302 to allow midivel,bal,tran, to be -c set up here as functions of instrument rather than iv (staff). -c Count up staves(iv,nv) vs instruments. Store instr# for iv in iinsiv(iv) -c - nstaves = 0 - ivt = 0 - do 16 iinst = 1 , nm - nstaves = nstaves+nsperi(iinst) - do 17 ivtt = 1 , nsperi(iinst) - ivt = ivt+1 - iinsiv(ivt) = iinst -17 continue - if (nstaves .eq. nv) go to 18 -16 continue - print*,'Screwup!' - call stop1() -18 continue -c -c Set up channel numbers for midi. -c - numchan = 0 - do 11 iv = nv , 1 , -1 - if (twoline(iv)) then - midchan(iv,2) = numchan - numchan = numchan+1 - end if - midchan(iv,1) = numchan - numchan = numchan+1 -11 continue -c -c numchan will now be the number of channels, but max channel # is numchan-1 -c -c Set up velocities, balances, and midi-transpositions -c - do 13 iv = nv , 1 , -1 - if (twoline(iv)) then -c 130302 Make these functions of instrument rather than staff (iv) -c midvelc(midchan(iv,2)) = midivel(iv) -c midbc(midchan(iv,2)) = midibal(iv) -c midtc(midchan(iv,2)) = miditran(iv) - midvelc(midchan(iv,2)) = midivel(iinsiv(iv)) - midbc(midchan(iv,2)) = midibal(iinsiv(iv)) - midtc(midchan(iv,2)) = miditran(iinsiv(iv)) - end if -c midvelc(midchan(iv,1)) = midivel(iv) -c midbc(midchan(iv,1)) = midibal(iv) -c midtc(midchan(iv,1)) = miditran(iv) - midvelc(midchan(iv,1)) = midivel(iinsiv(iv)) - midbc(midchan(iv,1)) = midibal(iinsiv(iv)) - midtc(midchan(iv,1)) = miditran(iinsiv(iv)) -13 continue - end if -c -c TEMPORARY!!! -c - write(15,*)'nlbuf: ',nlbuf - ip1 = 1 - do 10000 ilb = 1 , nlbuf -c write(15,'(2i5,a40,3i5)')ilb,lbuf(ilb), -c * bufq(ip1:ip1+lbuf(ilb)-1), -c * (ichar(bufq(ip1+lbuf(ilb)-k:ip1+lbuf(ilb)-k)), -c * k=min(3,lbuf(ilb)),1,-1) - ip1 = ip1+lbuf(ilb) -10000 continue - iplast = ip1-1 -c -c Check to see if (1) last line is "/" and (2) next to last -c line is "/" -c - if (bufq(iplast+1-lbuf(nlbuf):iplast) .eq. ' /') then - if (bufq(iplast-lbuf(nlbuf):iplast-lbuf(nlbuf)).eq.'/') then - print*,'Removing last line of "/"' - write(15,*)'Removing last line of "/"' - nlbuf = nlbuf-1 - end if - end if -c - call pmxb(.true.,poe0,ncalls,optimize) - if (ismidi) then -c -c Write midi file -c - open(51,file=jobname(1:ljob)//'.mid') - if (debugmidi) open(52,file=jobname(1:ljob)//'.dbm') - call printl(' ') - call printl('Writing '//jobname(1:ljob)//'.mid') - call writemidi(jobname,ljob) - end if - close(15) - stop - end if - write(15,*)'nlbuf: ',nlbuf - ip1 = 1 - call pmxb(.false.,poe0,ncalls,optimize) - call poestats(nsyst,poe0,poebar0,devnorm0) -c -c Save initial deviation and line breaks for later comparison -c - if (numit .eq. 1) then - devpmx = devnorm0 - do 20 isys = 1 , nsyst - nbari(isys) = nbars0(isys) -20 continue - end if - call sortpoe(nsyst,poe0,ipoe) - do 1 iupord = nsyst , 1 , -1 - isysu = ipoe(iupord) - print*,'isysu=',isysu - write(15,*)'isysu=',isysu -c -c Skip if system isysu has poe0 < avg or isysd has poe0 > avg -c - if (poe0(isysu).lt.poebar0) go to 1 - do 5 idnord = 1 , nsyst - isysd = ipoe(idnord) - if (isysu.eq.isysd .or. nbars0(isysd).eq.1 - * .or. poe0(isysd).gt.poebar0) go to 5 - do 2 isyst = 1 , nsyst - nbars(isyst) = nbars0(isyst) - if (isyst .eq. isysu) then - nbars(isyst) = nbars(isyst)+1 - else if (isyst .eq. isysd) then - nbars(isyst) = nbars(isyst)-1 - end if -2 continue - call pmxa(jobname,ljob4,isfirst,nsyst,nbars,optimize) - call pmxb(.false.,poe,ncalls,optimize) - call poestats(nsyst,poe,poebar,devnorm) - if (devnorm .lt. devnorm0) then - devnorm0 = devnorm - poebar0 = poebar - do 4 isys = 1 , nsyst - nbars0(isys) = nbars(isys) - poe0(isys) = poe(isys) -4 continue - print*,'Improved with iup,idown,devnorm:', - * isysu,isysd,devnorm0 - write(15,*)'Improved with iup,idown,devnorm:', - * isysu,isysd,devnorm0 - write(*,'(5x,20i3)')(nbars0(isys),isys=1,nsyst) - write(15,'(5x,20i3)')(nbars0(isys),isys=1,nsyst) - call sortpoe(nsyst,poe0,ipoe) - go to 6 - end if -5 continue -1 continue -c -c If we get here, must have gone thru all switches and found nothing better, -c so done! -c - go to 7 -6 continue -7 continue - print*,'Optimum located, numit:',numit,', ncalls:',ncalls - write(15,*)'Optimum located, numit:',numit,', ncalls:',ncalls - print*,'Final error:',devnorm0,', initial error:',devpmx - write(15,*)'Final error:',devnorm0,', initial error:',devpmx - print*,'Percentage improvement:',100.*(1-devnorm0/devpmx) - write(15,*)'Percentage improvement:',100.*(1-devnorm0/devpmx) - call printl('Initial bars/system:') - write(*,'(5x,20i3)')(nbari(isys),isys=1,nsyst) - write(15,'(5x,20i3)')(nbari(isys),isys=1,nsyst) - call printl('Final bars/system:') - write(*,'(5x,20i3)')(nbars0(isys),isys=1,nsyst) - write(15,'(5x,20i3)')(nbars0(isys),isys=1,nsyst) - call pmxa(jobname,ljob4,.false.,nsyst,nbars0,optimize) - call pmxb(.true.,poe0,ncalls,optimize) - close(15) - end - subroutine accsym(nacc,acsymq,lacc) - character*3 acsymq - iacc = iand(nacc,7) - if (iacc .eq. 1) then - acsymq = 'fl' - lacc = 2 - else if (iacc .eq. 2) then - acsymq = 'sh' - lacc = 2 - else if (iacc .eq. 3) then - acsymq = 'na' - lacc = 2 - else if (iacc .eq. 5) then - acsymq = 'dfl' - lacc = 3 - else if (iacc .eq. 6) then - acsymq = 'dsh' - lacc = 3 - else - print*,'bad accidental: ',iacc - end if - return - end - subroutine addask(taskn,waskn,elaskn, - * fixednew,scaldold,tglp1,isudsp) - parameter (nm=24) - logical isudsp - common /comas1/ naskb,task(40),wask(40),elask(40) - common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) - common /comtol/ tol - if (isudsp) then -c -c Find which udsp we're dealing with -c - do 1 iudsp = 1 , nudsp - if (abs(taskn+tglp1-tudsp(iudsp)) .lt. tol) go to 2 -1 continue - print*,'You should note BEEE here in addask!' - call stop1() -2 continue -c -c Fixednew and scaldold must not be changed, since udsp's are already included -c in fsyst from pmxa, and udsp don't involve scaled space.. -c - if (naskb.gt.0 .and. abs(taskn-task(max(1,naskb))).lt.tol) then -c -c Must add user-defined space to what's there already. -c - wask(naskb) = wask(naskb)+udsp(iudsp) - else -c -c This place has no other space. -c - naskb = naskb+1 - task(naskb) = taskn - wask(naskb) = udsp(iudsp) - elask(naskb) = 0. - end if - else -c 130330 start - oldwask = 0. - oldelask = 0. -c 130330 end -c -c This is a normal space, no effect if smaller than existing space -c - if (naskb.gt.0 .and. abs(taskn-task(max(1,naskb))).lt.tol) then -c -c We already put in some space at this time -c Check if new one needs more space than old one at same time -c - if (waskn .gt. wask(naskb)) then -c -c 130330 We were double counting the larger space when it came 2nd -c Need to fix but don't see how yet. Assume times came in order and -c that last naskb defined spaces that need updating -c - oldwask = wask(naskb) - oldelask = elask(naskb) -c End of 130330 insertions - naskb = naskb-1 - else - return - end if - end if - naskb = naskb+1 - task(naskb) = taskn - wask(naskb) = waskn - elask(naskb) = elaskn -c 130330 start -c fixednew = fixednew+waskn -c scaldold = scaldold+elaskn - fixednew = fixednew+waskn-oldwask - scaldold = scaldold+elaskn-oldelask -c 130330 end - end if - return - end - subroutine addblank(noteq,lnoten) - character*8 noteq - character*1 tchar - tchar = noteq(1:1) - noteq = ' '//tchar - lnoten = 2 - return - end - subroutine addfb(nfb,iv,tnew,t1fb,t2fb,ulfbq,ifbadd) - parameter (nm=24) - integer nfb(nm) - common /comtol/ tol - real*4 t1fb(nm,20),t2fb(nm,20) - character*1 ulfbq(nm,20) - ifbadd = 1 - nfb(iv) = nfb(iv)+1 - do 1 ifb = nfb(iv)-1 , 1 , -1 - if (tnew .lt. t1fb(iv,ifb)-tol) then - t1fb(iv,ifb+1) = t1fb(iv,ifb) - t2fb(iv,ifb+1) = t2fb(iv,ifb) - ulfbq(iv,ifb+1) = ulfbq(iv,ifb) - else - ifbadd = ifb+1 - go to 2 - end if -1 continue -2 continue - t1fb(iv,ifbadd) = tnew - ulfbq(iv,ifbadd) = 'x' - return - end - subroutine addmidi(icm,nolev,iacc,midisig,time,rest,endrest) -c subroutine addmidi(icm,nolev,iacc,isig,time,rest,endrest) - parameter(nm=24,mv=24576) - integer*2 mmidi,itk(25) - integer*4 itiesav(5,100) - character*1 notenumq - logical endrest,eximacc,it1found - logical rest - logical restpend,relacc,notmain,twoline,ismidi,crdacc - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) - * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) - integer*2 iinsiv - logical slmon,dbltie - common /comslm/ levson(0:nm),levsoff(0:nm),imidso(0:nm), - * naccbl(0:nm),laccbl(0:nm,10),jaccbl(0:nm,10),nusebl, - * slmon(0:nm),dbltie - common /comevent/ miditime,lasttime - common /comdiag/ n69(0:nm),n34(0:nm) -c common /commidisig/ midisig(nm) -c -c Following variables are local but must be saved. I hope they are. -c (3/18/00) With g77 they are not, so add a common block here. -c -c integer*2 ipslon(0:nm),lusebl(10),jusebl(10),icmm(0:12) - integer*2 ipslon(0:nm),lusebl(10),jusebl(10),icmm(0:15) - common /comips/ ipslon,lusebl,jusebl -c data icmm /0,1,2,3,4,5,6,7,8,10,11,12,13/ - data icmm /0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16/ -c -c Cancel out barline accidentals if there's a rest. -c - if (rest) naccbl(icm) = 0 -c -c Special path to insert dummy rest at end of a section -c - if (endrest) go to 20 -c - do 7 ion = 0 , nmidcrd -c -c check if this is only to get pitch of a chord note -c - if (notmain) go to 6 -c -c check for rest -c - if (rest) then -c -c Will not put in a note, but must update timing -c - if (.not.restpend(icm)) then -c -c First rest in sequence, save the time -c - restpend(icm) = .true. - trest(icm) = time - else - trest(icm) = trest(icm)+time - end if -c -c Note: code checkers don't like the above due to calling addmidi(trest(icm)) -c but this only happens if rest at end of section (endrest=.true.) (called -c from getmidi(), in which case these above lines are bypassed. -c - call chkimidi(icm) - return - end if -c -c time tics -c - if (imidi(icm).gt.0 .and. ion.eq.0) then - idur = mgap - else - idur = 0 - end if - if (restpend(icm)) then - restpend(icm) = .false. - idur = idur+nint(15*trest(icm)) - end if -c -c time to start of note -c - idurvar = isetvarlen(idur,nby2on) - if (nby2on .gt. 4) then - print*,'You got >4 bytes, something is bogus.' - call stop1() - end if - imidi(icm) = imidi(icm)+1 - do 2 i = 1 , nby2on -c -c imidi points to cell before highest (leftmost) byte. Start with lowest byte -c at far right, fill in backwards -c - mmidi(icm,imidi(icm)+nby2on-i) = mod(idurvar,256) - if (nby2on .gt. 1) idurvar = idurvar/256 -2 continue - imidi(icm) = imidi(icm)+nby2on-1 -c -c Note-on signal -c - imidi(icm) = imidi(icm)+1 - mmidi(icm,imidi(icm)) = 9*16+icmm(icm) -c -c Entry point for chord note pitch determination -c -6 continue -c -c Get midi pitch. On chord iteration, only do this first time (main note), -c since pitch was already computed for nonmain chord notes. -c - if (ion .eq. 0) then - ipsav = nolev*12./7+11 - ipsav0 = ipsav - if (midisig .ne. 0) then -c -c Adjust for signature -c - notenumq = char(48+mod(nolev,7)) - if (midisig.ge.index('4152630',notenumq)) then - ipsav = ipsav+1 - else if (-midisig.ge.index('0362514',notenumq)) then - ipsav = ipsav-1 - end if - end if -c -c Deal with accidentals. -c -c iacc 0 1 2 3 4 5 6 7 -c effect X fl sh na X dfl dsh X -c iashft X -1 1 0 X -2 2 X -c - jacc = 0 - eximacc = .false. - if (iacc .gt. 0) then -c -c Adjust key-sig-adjusted pitch for explicit accidental (and exit) -c - jacc = iashft(iacc) - eximacc = .true. - if (.not.relacc) jacc = jacc+ipsav0-ipsav -c -c (Above) Shift applies to diatonic pitch but will be added to adjusted one -c - else if (naccim(icm) .gt. 0) then -c -c Possible implicit accidental from earlier in the bar -c Check for prior accid in this bar at this note level -c - do 3 kacc = 1 , naccim(icm) - if (laccim(icm,kacc) .eq. nolev) then - jacc = jaccim(icm,kacc) - eximacc = .true. - if (.not.relacc) jacc = jacc+ipsav0-ipsav - go to 4 - end if -3 continue -4 continue - end if -c -c Must split off the following if block from those above because chord -c notes can cause naccim>0, forcing us to miss other chord note's -c accross-bar-line accidental -c - if (naccbl(icm).gt.0 .and. .not.eximacc) then -c -c Possible carryover accid from prior bar (or prior same-pitch note). -c - do 21 kacc = 1 , naccbl(icm) - if (laccbl(icm,kacc) .eq. nolev) then - jacc = jaccbl(icm,kacc) -c -c Since we are *using* the bar-line accid, must flag it to be saved for next. -c - nusebl = nusebl+1 - jusebl(nusebl) = jacc - lusebl(nusebl) = nolev - if (.not.relacc) jacc = jacc+ipsav0-ipsav - go to 22 - end if -21 continue -22 continue - end if - ipsav = ipsav+jacc - end if - if (notmain) then - mcpitch(nmidcrd) = ipsav -c -c Save pitch for tie checks -c - if (levson(icm).eq.nolev.and..not.slmon(icm)) - * ipslon(icm) = ipsav - else - imidi(icm) = imidi(icm)+1 - if (ion.eq.0) then - mmidi(icm,imidi(icm)) = ipsav - if (levson(icm).eq.nolev.and..not.slmon(icm)) - * ipslon(icm) = ipsav - else - mmidi(icm,imidi(icm)) = mcpitch(ion) - end if - end if - if (ion .eq. 0) then -c -c Only record accids for non-chords, main chord note during chord iteration -c and chordnotes on first call but not during iteration -c - if (iacc.gt.0) then -c -c Set marker for accidental for possible continuations later this bar -c but first check and clear earlier ones on same note. -c - do 23 kacc = 1 , naccim(icm) - if (laccim(icm,kacc) .eq. nolev) then - do 24 macc = kacc , naccim(icm)-1 - laccim(icm,macc) = laccim(icm,macc+1) - jaccim(icm,macc) = jaccim(icm,macc+1) -24 continue - go to 25 - end if -23 continue - go to 26 -25 continue - naccim(icm) = naccim(icm)-1 -26 continue -c -c Flag new accidental -c - naccim(icm) = naccim(icm)+1 - laccim(icm,naccim(icm)) = nolev - jaccim(icm,naccim(icm)) = iashft(iacc) - end if -c -c Bail if this is a chord note on the first call (from docrd) -c - if (notmain) then - call chkimidi(icm) - return - end if - end if -c -c Vel -c - imidi(icm) = imidi(icm)+1 - mmidi(icm,imidi(icm)) = midvelc(icm) - call chkimidi(icm) -7 continue -c -c For tie checks -c - if (levson(icm).gt.0.and..not.slmon(icm)) imidso(icm) = imidi(icm) -c -c Entry point for special rests at section ends (endrest=T) -c -20 continue -c -c Now insert all the ends -c - do 8 ioff = 0 , nmidcrd - if (ioff .eq. 0) then -c -c time to end -c - idur1 = nint(15*time) - if (.not.endrest .or. miditime.eq.nint(15*trest(icm))) then - idur = idur1-mgap - else - idur = idur1 - end if -c -c Deal with roundoff problems with 7-tuplets on half or quarters -c - if (idur1 .eq. 69) then - n69(icm) = n69(icm)+1 -c if (mod(n69(icm)+6,7) .gt. 3) idur = 58 - if (mod(n69(icm)+6,7) .gt. 3) idur = idur1-mgap-1 - else if (idur1 .eq. 34) then - n34(icm) = n34(icm)+1 - if (mod(n34(icm)+6,7) .gt. 4) idur = idur1-mgap+1 - end if - idurvar = isetvarlen(idur,nby2off) - if (nby2off .gt. 4) then - print*,'You got >4 bytes, something is bogus.' - call stop1() - end if - imidi(icm) = imidi(icm)+1 - call chkimidi(icm) - do 1 i = 1 , nby2off - mmidi(icm,imidi(icm)+nby2off-i) = mod(idurvar,256) - if (nby2off .gt. 1) idurvar = idurvar/256 -1 continue - imidi(icm) = imidi(icm)+nby2off-1 - else -c -c Inserting end of chord note, delta time is 0 -c - imidi(icm) = imidi(icm)+1 - mmidi(icm,imidi(icm)) = 0 - end if -c -c Note off -c - imidi(icm) = imidi(icm)+1 - mmidi(icm,imidi(icm)) = 8*16+icmm(icm) -c -c Pitch -c - imidi(icm) = imidi(icm)+1 - if (ioff .eq. 0) then - mmidi(icm,imidi(icm)) = ipsav - else - mmidi(icm,imidi(icm)) = mcpitch(ioff) - end if -c -c Vel -c - imidi(icm) = imidi(icm)+1 - mmidi(icm,imidi(icm)) = 0 - call chkimidi(icm) - if (endrest) then - return - end if -8 continue - naccbl(icm) = nusebl - if (nusebl .gt. 0) then -c -c Fix tables of "bar-line" accids that are saved due to consecutive notes. -c - do 30 kacc = 1 , nusebl - laccbl(icm,kacc) = lusebl(kacc) - jaccbl(icm,kacc) = jusebl(kacc) -30 continue - nusebl = 0 - end if -c -c Begin tie checks -c - if (slmon(icm)) then -c -c Prior note had a slur start -c - if (levson(icm).eq.levsoff(icm) .and. iacc.eq.0) then -c -c We have a tie! (Assumed there would be no accidental on tie-ending note) -c Make a list of times of all events back to the one starting at imidso+1, -c which is at or before where the tie started. Ident tie start and stop by -c comparing pitches. Save the 4 pieces of data in itiesav(1...4,nsav4tie) -c Store actual time in itiesav(5,nsav4tie), using itiesav(1,1) as initial -c time. - nsav4tie = 0 - imidt = imidso(icm) -10 nsav4tie = nsav4tie+1 - itiesav(1,nsav4tie) = igetvarlen(mmidi,icm,imidt,nbytes) - imidt = imidt+nbytes - do 11 j = 1 , 3 - itiesav(j+1,nsav4tie) = mmidi(icm,imidt+j) -11 continue - imidt = imidt+3 - if (nsav4tie .eq. 1) then - itiesav(5,1) = itiesav(1,1) - else - itiesav(5,nsav4tie) = itiesav(1,nsav4tie)+ - * itiesav(5,nsav4tie-1) - end if - if (imidt .ne. imidi(icm)) go to 10 -c -c Find which two pitches agree with saved slur pitch. -c - it1found = .false. - do 12 it2 = 1 , nsav4tie - if (itiesav(3,it2) .eq. ipslon(icm)) then - if (it1found) go to 13 - it1 = it2 - it1found = .true. - end if -12 continue - call printl( - * 'Program error, tied notes, send source to Dr. Don') - it1 = nsav4tie+1 - it2 = nsav4tie+1 -13 continue -c -c List the positions we want to keep -c - jsav = 0 - do 14 isav = 1 , nsav4tie - if (isav.eq.it1 .or. isav.eq.it2) go to 14 - jsav = jsav+1 - itk(jsav) = isav -14 continue - nsav4tie = nsav4tie-2 -c -c Now dump events it1 & it2, recompute times, restack mmidi. -c - imidi(icm) = imidso(icm) - do 15 isav = 1 ,nsav4tie - if (isav .eq. 1) then - idurvar = isetvarlen(itiesav(5,itk(isav)),nbytes) - else - idurvar = isetvarlen(itiesav(5,itk(isav))- - * itiesav(5,itk(isav-1)),nbytes) - end if - imidi(icm) = imidi(icm)+1 - do 16 i = 1 , nbytes - mmidi(icm,imidi(icm)+nbytes-i) = mod(idurvar,256) - if (nbytes .gt. 1) idurvar = idurvar/256 -16 continue - imidi(icm) = imidi(icm)+nbytes-1 - do 17 i = 2 , 4 - imidi(icm) = imidi(icm)+1 - mmidi(icm,imidi(icm)) = itiesav(i,itk(isav)) -17 continue -15 continue - end if - slmon(icm) = .false. - levsoff(icm) = 0 - if (.not.dbltie) levson(icm) = 0 - end if - if (levson(icm).gt.0) slmon(icm) = .true. - if (nmidcrd .gt. 0) nmidcrd = 0 - call chkimidi(icm) - return - end - subroutine addstr(notexq,lnote,soutq,lsout) - common /comlast/ islast,usevshrink - logical islast,usevshrink - character*(*) notexq - character*80 soutq - if (lsout+lnote .gt. 72) then - if (islast) write(11,'(a)')soutq(1:lsout)//'%' - lsout = 0 - end if - if (lsout .gt. 0) then - soutq = soutq(1:lsout)//notexq(1:lnote) - else - soutq = notexq(1:lnote) - end if - lsout = lsout+lnote - return - end - subroutine adjusteskz(ib,istart,poenom) -c -c For block ib, this adds accidental spaces to eskz, for use in getting -c length of xtup bracket and slopes of brackets and beams. -c - parameter (nm=24) - common /comas1/ naskb,task(40),wask(40),elask(40) - integer*4 istart(80) - common /comnsp/ space(80),nb,prevtn(nm), - * flgndv(nm),flgndb,eskgnd,ptsgnd,ivmxsav(nm,2),nvmxsav(nm) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - character*1 ulq,sepsymq,sq - logical beamon,firstgulp,figbass,figchk,isfig - common /comeskz2/ eskz2(nm,200) - common /comtol/ tol - common /comntot/ ntot - inmin = istart(ib)+1 - do 10 iaskb = 1 , naskb - if (task(iaskb) .lt. to(istart(ib))-tol) go to 10 - eskadd = wask(iaskb)/poenom-elask(iaskb) - do 11 in = inmin , ntot - if (to(in) .gt. task(iaskb)-tol) then - eskz2(ivxo(in),ipo(in)) = eskz2(ivxo(in),ipo(in))+eskadd - if (abs(to(in)-task(iaskb)).lt. tol) inmin=inmin-1 - else - inmin = inmin+1 - end if -11 continue -10 continue - return - end - subroutine askfig(pathnameq,lpath,basenameq,lbase,figbass,istype0) - logical figbass,ispoi,topmods,istype0,done,isbbm - common /comhsp/ hpttot(176) - common /compoi/ ispoi - common /combbm/ isbbm - common /comas3/ ask(2500),iask,topmods - character*40 pathnameq - character*44 basenameq - character*1 sq,chax - character*129 outq - sq = chax(92) - open(12,file=pathnameq(1:lpath)//basenameq(1:lbase)//'.tex') -c -c Transfer first 5 lines of main internal TeX file -c - do 11 il = 1 , 5 - call moveln(11,12,done) -11 continue - if (istype0) then -c -c Transfer literal TeX stuff from special scratch file -c - rewind(17) -10 call moveln(17,12,done) - if (.not.done) go to 10 - close(17) - end if -c -c Transfer next 2 lines from main scratch file -c - do 3 il = 1 , 2 - call moveln(11,12,done) -3 continue - if (ispoi) write(12,'(a)')sq//'input musixpoi' - if (isbbm) write(12,'(a)')sq//'input musixbbm' - if (figbass) then -c -c Transfer .fig data from scratch (unit 14) into external .tex (unit 12) -c -4 call moveln(14,12,done) - if (.not.done) go to 4 - close(14) - end if - iask = 0 - ihs = 0 -1 read(11,'(a129)',end=999)outq -c -c Hardspaces. -c - if (outq(1:5) .eq. sq//'xard') then - ihs = ihs+1 - outq(2:2) = 'h' - write(outq(12:15),'(f4.1)')hpttot(ihs) - lenout = 19 - go to 9 - end if -c -c This part hard-wires ask's into new .tex file as ast's -c -2 indxask = index(outq,sq//'ask') - if (indxask .ne. 0) then - iask = iask+1 - call putast(ask(iask),indxask,outq) - go to 2 - end if - lenout = llen(outq,129) -9 continue - write(12,'(a)')outq(1:lenout) -c -c If this is the line with "readmod", check for topmods. -c - if (topmods .and. outq(2:8).eq.'readmod') then - topmods = .false. - rewind(16) - do 7 il = 1 , 1000 - read(16,'(a129)',end=8)outq - lenout = llen(outq,129) -c -c We inserted the '%' in subroutine littex, to guarantee including blank. -c - write(12,'(a)')outq(1:lenout) -7 continue -8 continue - close(16) - end if - go to 1 -999 close(11) - close(12) - return - end - subroutine backfill(iunit,oldq,lenold,newq,lennew) -c -c In iunit, looks backward for oldq, overwrites newq -c Safest if both are same length! -c - character*128 lineq(200),nowq - character*(*) oldq,newq - linesback = 0 -1 continue - backspace(iunit) - read(iunit,'(a)')nowq - ndx = index(nowq,oldq(1:lenold)) -c -c Save the line just read -c - linesback = linesback+1 - lineq(linesback) = nowq - if (ndx .eq. 0) then - backspace(iunit) - go to 1 - end if -c -c If here, it's replacement time. -c - lineq(linesback) = nowq(1:ndx-1)//newq(1:lennew) - * //nowq(ndx+lenold:128) - backspace(iunit) - do 2 line = linesback , 1 , -1 - write(iunit,'(a128)')lineq(line) -2 continue - return - end - subroutine beamend(notexq,lnote) - parameter (nm=24) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - character*1 ulq,sepsymq,sq,ulqq,chax - logical beamon,firstgulp,figbass,figchk,flipend,btest, - * isfig,vxtup,isdotm,isbjmp,isbj2,drawbm - common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 - common /comoct/ noctup - common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), - * mtupv(nm,9),nxtinbm(nm), - * islope(nm),xelsk(24),eloff(nm,9), - * nssb(nm),issb(nm),lev1ssb(nm,20) - common /comdraw/ drawbm(nm) - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /strtmid/ ihnum3,flipend(nm),ixrest(nm) - character*4 tempq - character*8 noteq - character*79 notexq - ip = ipo(jn) - multip = iand(mult(ivx,ip),15)-8 - lnote = 0 - if (ixrest(ivx) .eq. 4) then -c -c This is the LAST note in the xtup (i.e., all rests before). Make single. -c - nodur(ivx,ip) = 2**(4-multip) - call notex(notexq,lnote) - ixrest(ivx) = 0 - return - end if - nole = nolev(ivx,ip) -c -c Check for special situations with 2nds (see precrd) -c - if (btest(nacc(ivx,ip),30)) then - nole = nole - 1 - else if (btest(nacc(ivx,ip),31)) then - nole = nole + 1 - end if -c -c Terminate indented beams for 2-note tremolo if needed -c - if (btest(irest(ivx,ip-1),2) .and. - * igetbits(irest(ivx,ip-1),2,5) .gt. 0) then - nindent = igetbits(irest(ivx,ip-1),2,5) - if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then - addoff = -1-.5*nindent - else - addoff = 1+.5*nindent - endif -c addoff = addoff+(.595-.065*abs(islope(ivx)))*islope(ivx) - addoff = addoff+.0822*islope(ivx) - if (addoff .lt. -.05) then - write(tempq,'(f4.1)')addoff - else - write(tempq,'(f4.2)')addoff - end if - notexq = sq//'raise'//tempq(1:4)//sq//'internote'//sq//'hbox{' - * //sq//'loffset{.7}{'//sq//'tb'//ulq(ivx,ibmcnt(ivx))// - * '0}}' - lnote = 46 - end if - if (.not.drawbm(ivx)) then -c -c Xtuplet with no beam, just put in the right kind of note -c - if (btest(irest(ivx,ip),0)) then -c -c Rest at end of unbeamed xtup -c - lnote = 3 - if (btest(islur(ivx,ip),29)) then - notexq = sq//'sk' -c -c 180106 There was a problem with nolev(ivx,ip) not being set to 0 for -c a blank rest ending xtup, but hopefully returning from here will handle it. -c - return - else if (multip .eq. 0) then - notexq = sq//'qp' - else if (multip .eq. -1) then - notexq = sq//'hp' - else if (multip .eq. 1) then - notexq = sq//'ds' - else if (multip .eq. 2) then - notexq = sq//'qs' - else - notexq = sq//'hs' - end if -c -c 180106 Deal with possible level tweak -c - nole = mod(nolev(ivx,ip)+50,100)-50 - if (nole .ne. 0) then - if (abs(nole) .lt. 10) then - noteq = chax(48+abs(nole)) - lnoten = 1 - else - write(noteq(1:2),'(i2)')abs(nole) - lnoten = 2 - end if - if (nole .gt. 0) then - notexq = sq//'raise'//noteq(1:lnoten)//sq//'internote' - * //notexq(1:lnote) - else - notexq = sq//'lower'//noteq(1:lnoten)//sq//'internote' - * //notexq(1:lnote) - end if - lnote = 16+lnoten+lnote - end if - return - end if - if (btest(islur(ivx,ip),30)) then -c -c Forced stem direction -c - ndsav = nodur(ivx,ip) - nodur(ivx,ip) = 2**(4-multip) - if (btest(nacc(ivx,ip-1),27)) - * nodur(ivx,ip)=nodur(ivx,ip)/2 - call notex(notexq,lnote) - nodur(ivx,ip) = ndsav - else - call notefq(noteq,lnoten,nole,ncmid(iv,ip)) - if (lnoten .eq. 1) call addblank(noteq,lnoten) -c -c To reduce confusion due to this early update of lnote, do it -c below, separately in each case/ -c lnote = lnoten+3 - if (.not.btest(nacc(ivx,ip-1),27)) then -c -c Prior note is not regular-dotted -c - if (btest(irest(ivx,ip-1),2) .and. - * igetbits(irest(ivx,ip-1),2,5) .gt. 0) then -c -c Unbeamed tremolo with indented beams. Put termination in right here -c - nindent = igetbits(irest(ivx,ip-1),2,5) - if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then - addoff = -1-.5*nindent - else - addoff = 1+.5*nindent - endif -c -c Is there an islope here, for unbeamed? -c - if (addoff .lt. -.05) then - write(tempq,'(f4.1)')addoff - else - write(tempq,'(f4.2)')addoff - end if - notexq = sq//'raise'//tempq(1:4)//sq//'internote'//sq// - * 'hbox{' - * //sq//'loffset{.7}{'//sq//'tb'//ulq(ivx,ibmcnt(ivx))// - * '0}}' - lnote = 46 - end if - if (multip .eq. 0) then - if (btest(irest(ivx,ip-1),2) .and. - * nodur(ivx,ip).gt.24) then -c -c 2nd note of unbeamed half-note trem; make open -c But it's not clear if unbeamed half-note tremolo is Kosher, -c so don't worry about stem lengths here now. -c - if (lnote .eq. 0) then - notexq = sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq - else - notexq = notexq(1:46)// - * sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq - lnote = 46 - end if - else - if (btest(irest(ivx,ip-1),2) .and. - * nodur(ivx,ip).eq.24 .or. nodur(ivx,ip).eq.12) then -c -c Need a dot. -c - lnote = 46 - if (lnoten .eq. 1) then - noteq = ' '//noteq(1:1) - lnoten = 2 - end if -c -c Insert stemlength stuff here for unbeamed dotted tremolo. -c May later combine with below to avoid repeat. But need to -c return to normal stem length after note is set. -c - nindent = igetbits(irest(ivx,ip-1),2,5) - if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then - slen = (4.5+nindent+nolev1(ivx)-nole - * +1.3*(eskz(ivx,ip)-eskz(ivx,ip-1)-.7) - * *islope(ivx)/slfac)*.6667 - else - slen = (4.5+nindent-nolev1(ivx)+nole - * -1.3*(eskz(ivx,ip)-eskz(ivx,ip-1)-.7) - * *islope(ivx)/slfac)*.6667 - end if - write(tempq,'(f4.1)')slen - notexq = sq//'slx{'//tempq//'}'//notexq(1:lnote) - lnote = lnote+10 - end if -c -c Next steps are a historical kluge to distinguish dotted unbeamed 2-note trem -c (needs \qup) from normal xtup on dotted note (eg e44dx2 f, wants no dot) -c - if (btest(irest(ivx,ip-1),2)) then - if (lnote .eq. 0) then -c notexq = sq//'q'//ulq(ivx,ibmcnt(ivx)) - notexq = sq//'q'//ulq(ivx,ibmcnt(ivx))//'p' - * //noteq(1:lnoten) - else - notexq = notexq(1:lnote)//sq//'q' -c * //ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) - * //ulq(ivx,ibmcnt(ivx))//'p'//noteq(1:lnoten) - end if -c lnote = lnote+3+lnoten - lnote = lnote+4+lnoten - else - if (lnote .eq. 0) then - notexq = sq//'q'//ulq(ivx,ibmcnt(ivx)) - * //noteq(1:lnoten) - else - notexq = notexq(1:lnote)//sq//'q' - * //ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) - end if - lnote = lnote+3+lnoten - end if - if (btest(irest(ivx,ip-1),2) .and. - * nodur(ivx,ip).eq.24 .or. nodur(ivx,ip).eq.12) then - notexq = notexq(1:lnote)//sq//'slz' - lnote=lnote+4 - end if - end if - else if (btest(irest(ivx,ip-1),2)) then -c -c 2nd note of unbeamed quarter or 8th trem; make quarter note -c Get stemlength change -c - lnote = 46 - nindent = igetbits(irest(ivx,ip-1),2,5) - if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then - slen = (4.5+nindent+nolev1(ivx)-nole - * +1.3*(eskz(ivx,ip)-eskz(ivx,ip-1)-.7) - * *islope(ivx)/slfac)*.6667 - else - slen = (4.5+nindent-nolev1(ivx)+nole - * -1.3*(eskz(ivx,ip)-eskz(ivx,ip-1)-.7) - * *islope(ivx)/slfac)*.6667 - end if - write(tempq,'(f4.1)')slen - notexq = notexq(1:46)//sq//'slx{'//tempq//'}' - lnote = lnote+10 -c if (lnote .eq. 0) then -c notexq = sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq -c else -c notexq = notexq(1:46)// -c * sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq -c end if -c -c -c Check for dotted unbeamed tremolo -c - if (abs(nodur(ivx,ip)/12.-nodur(ivx,ip)/12).lt..001) then -c -c Need a dot -c - if (lnoten .eq. 1) then - noteq = ' '//noteq(1:1) - lnoten = 2 - end if - if (lnote .eq. 0) then - notexq = sq//'pt'//noteq(1:lnoten) - else - notexq = notexq(1:lnote)//sq//'pt'//noteq(1:lnoten) - end if - lnote = lnote+3+lnoten - call notefq(noteq,lnoten,nole,ncmid(iv,ip)) - if (lnoten .eq. 1) then - noteq = ' '//noteq(1:1) - lnoten = 2 - end if - end if - notexq = notexq(1:lnote)// - * sq//'q'//ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) -c * //sq//'stemcut' - * //sq//'slz' -c lnote=lnote+3+lnoten+8 - lnote=lnote+3+lnoten+4 - else if (multip .eq. -1) then - notexq = sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) - lnote = lnoten+3 - else if (multip .eq. 1) then - notexq = sq//'c'//ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) - lnote = lnoten+3 - else if (multip .eq. 2) then - notexq = sq//'cc'//ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) - lnote = lnoten+4 - else if (multip .eq. 3) then - notexq = sq//'ccc'//ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) - lnote = lnoten+5 - else if (multip .eq. -2) then - notexq = sq//'wh'//noteq(1:lnoten) - lnote = lnoten+3 - else if (multip .eq. -3) then - notexq = sq//'breve'//noteq(1:lnoten) - lnote = lnoten+6 - else - print* - print*,'(Error in beamend, send source to Dr. Don)' - call stop1() - end if - else -c -c Prior note is regular-dotted so this one is halved -c - lnote = lnoten+3 - if (multip .eq. 0) then - notexq = sq//'c'//ulq(ivx,ibmcnt(ivx))//noteq - else if (multip .eq. -1) then - notexq = sq//'q'//ulq(ivx,ibmcnt(ivx))//noteq - else if (multip .eq. -2) then - notexq = sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq - else if (multip .eq. 1) then - notexq = sq//'cc'//ulq(ivx,ibmcnt(ivx))//noteq - lnote = lnoten+4 - else if (multip .eq. 2) then - notexq = sq//'ccc'//ulq(ivx,ibmcnt(ivx))//noteq - lnote = lnoten+5 - end if - end if - end if - return - end if -c -c End of block for unbeamed. Problem if beamed but ends w/ rest. Try just -c skipping the call in that case. -c - if (.not.btest(irest(ivx,ip),0)) then - call notefq(noteq,lnoten,nole,ncmid(iv,ip)) - end if -c call notefq(noteq,lnoten,nole,ncmid(iv,ip)) -c lnote = 0 -c -c New way, with flipend, which was computed in beamstrt. -c - if (flipend(ivx) .and. btest(ipl(ivx,ip),30)) then - ulq(ivx,ibmcnt(ivx)) = chax(225-ichar(ulq(ivx,ibmcnt(ivx)))) - flipend(ivx) = .false. - end if - if (ip .gt. ibm1(ivx,ibmcnt(ivx))) then -c -c This is not a one-noter from beam-jump. Check if multiplicity has increased -c - if (btest(irest(ivx,ip-1),0)) then -c -c Prior note is a rest, check one before that -c - mp = iand(mult(ivx,ip-2),15)-8 - else - mp = iand(mult(ivx,ip-1),15)-8 - end if - if (multip .gt. mp) then -c -c Assume 1-3, 2-3, or 1-2 -c - do 2 imp = multip , mp+1 , -1 - call ntrbbb(imp,'t',ulq(ivx,ibmcnt(ivx)),ivx,notexq,lnote) -2 continue - else if (btest(nacc(ivx,ip-1),27)) then -c -c 2nd member of dotted xtup -c - call ntrbbb(multip+1,'t', - * ulq(ivx,ibmcnt(ivx)),ivx,notexq,lnote) - end if - end if -c -c Beam termination and direction analysis -c - if (btest(irest(ivx,ip),23) .and. .not.isbjmp) then -c -c This is the end of the first segment in a jump-beam. ivbj1=ivx will be number -c of the jump-beam. ivbj2 will be tested along with isbjmp to see if in the -c voice of the 2nd part of jumped beam. (May need special treatment for -c multi-segment jump-beams -c - isbjmp = .true. - ivbj1 = ivx - multbj1 = iand(15,mult(ivx,ip)-8) - ivbj2 = 0 - end if - if (.not.btest(irest(ivx,ip),23)) then -c -c This is either a normal beamend or end of a sequence of jump-beam segments, -c (170409) or rest at end of xtup -c so some sort of termination is required -c - ulqq = ulq(ivx,ibmcnt(ivx)) - if (.not.isbjmp .or. ivx.ne.ivbj2) then - if (btest(irest(ivx,ip),0)) then -c -c Xtup ends with rest -c - if (multip .eq. 1) then - notexq = sq//'ds' - lnote = 3 - else if (multip .eq. 2) then - notexq = sq//'qs' - lnote = 3 - else if (multip .eq. 3) then - notexq = sq//'hs' - lnote = 3 - end if -c -c 170801 Borrowed from main rest entry way down below to get level adjustment: -c BUT nole is like 102, not 2, so subtracted 100 for nole. Why different??? -c "... Now raise if necc." -c - if (btest(islur(ivx,ip),29)) then -c -c Blank rest -c - notexq = sq//'sk' - lnote = 3 - else if (nole .ne. 0) then -c -c Bandaid. Odd case with rests in xtups + 2 voices where came thru here with -c nolev=-4 but expected 100+/-. Try to fix. -c - if (abs(nole).lt.30) nole = 100+nole -c - if (abs(nole-100) .lt. 10) then - noteq = chax(48+abs(nole-100)) - lnoten = 1 - else - write(noteq(1:2),'(i2)')abs(nole-100) - lnoten = 2 - end if -c ??? if (nole .gt. 0) then - if (nole .gt. 100) then - notexq = sq//'raise'//noteq(1:lnoten)//sq//'internote' - * //notexq(1:lnote) - else - notexq = sq//'lower'//noteq(1:lnoten)//sq//'internote' - * //notexq(1:lnote) - end if - lnote = 16+lnoten+lnote - end if - return - else -c -c Normal termination -c - call ntrbbb(1,'t',ulqq,mod(ivx,24),notexq,lnote) - end if - else -c -c Terminate a sequence of jump-beam segments. -c - ulqq = chax(225-ichar(ulqq)) - call ntrbbb(1,'t',ulqq,mod(ivbj1,24),notexq,lnote) - end if - end if -c -c Check for end of 2nd seg of staff-jump xtup chord blank rest -c -c if (isbjmp.and.ivx.eq.ivbj2 - if (isbjmp - * .and.btest(islur(ivx,ip),29)) then - notexq = notexq(1:lnote)//sq//'sk' - return - end if -c -c And now the note, checking for open-head beamed tremolo -c - if (btest(irest(ivx,ip-1),2)) then -c -c Check for dotted tremolo -c - if (abs(nodur(ivx,ip)/12.-nodur(ivx,ip)/12).lt..001) then -c -c Need a dot -c - if (nodur(ivx,ip).eq.24 .or. nodur(ivx,ip).eq.12) then -c -c Solid notehead -c - notexq = notexq(1:lnote)//sq//'qbp' - else -c -c Assuming open notehead and nodur = 48 -c - notexq = notexq(1:lnote)//sq//'hbp' - end if - lnote = lnote+4 - else - if (nodur(ivx,ip).eq.32 .or. nodur(ivx,ip).eq.48) then - if (lnote .gt. 0) then - notexq = notexq(1:lnote)//sq//'hb' - else - notexq = sq//'hb' - end if - else - if (lnote .gt. 0) then - notexq = notexq(1:lnote)//sq//'qb' - else - notexq = sq//'qb' - end if - end if - lnote = lnote+3 - end if - else -c -c No tremolo -c - if (lnote .gt. 0) then - notexq = notexq(1:lnote)//sq//'qb' - else - notexq = sq//'qb' - end if - lnote = lnote+3 - end if - isdotm = .false. - if (.not.vxtup(ivx)) then - if (2**log2(nodur(ivx,ip)) .ne. nodur(ivx,ip)) then - if (.not.btest(iornq(ivx,ip),13)) then - notexq = notexq(1:lnote)//'p' - else - notexq = notexq(1:lnote)//'m' - isdotm = .true. - end if - lnote = lnote+1 - end if - end if -c -c 5/25/08 Allow >12 -c 5/9/10 Up to 24; replace 24 with 0 -c - if (.not.(isbjmp.and.ivx.eq.ivbj2)) then - call istring(mod(ivx,24),tempq,len) - else - call istring(mod(ivbj1,24),tempq,len) - end if - if (isbjmp .and. ivx.eq.ivbj2 - * .and..not.btest(irest(ivx,ip),23)) isbjmp=.false. - notexq = notexq(1:lnote)//tempq(1:len) - lnote = lnote+len - notexq = notexq(1:lnote)//noteq(1:lnoten) - lnote = lnote+lnoten - if (isdotm) then - if (lnoten .eq. 1) then - notexq = notexq(1:lnote)//'{'//noteq(1:1)//'}' - lnote = lnote+3 - else - notexq = notexq(1:lnote)//noteq(lnoten-1:lnoten-1) - lnote = lnote+1 - end if - end if - return - end - subroutine beamid(notexq,lnote) - parameter (nm=24) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - character*1 ulq,sepsymq,sq,ulqq,chax - logical beamon,firstgulp,figbass,figchk,flipend,btest, - * isfig,vxtup,isdotm,isbjmp,bar1syst,isdotted,isbj2,drawbm - character*79 notexq - common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 - common /comoct/ noctup - common /strtmid/ ihnum3,flipend(nm),ixrest(nm) - common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), - * mtupv(nm,9),nxtinbm(nm), - * islope(nm),xelsk(24),eloff(nm,9), - * nssb(nm),issb(nm),lev1ssb(nm,20) - common /comdraw/ drawbm(nm) - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /comask/ bar1syst,fixednew,scaldold, - * wheadpt,fbar,poenom - character*8 noteq - character*4 tempq - lnote = 0 - ip = ipo(jn) - nole = nolev(ivx,ip) -c -c Check for special situations with 2nds (see precrd) -c - if (btest(nacc(ivx,ip),30)) then - nole = nole - 1 - else if (btest(nacc(ivx,ip),31)) then - nole = nole + 1 - end if - if (.not.btest(irest(ivx,ip),0)) then - multip = iand(mult(ivx,ip),15)-8 -c if (btest(islur(ivx,ip-1),3)) multip = multip+1 -c -c (Above test OK since must have ip>1). Double dotted note preceding -c -c Move the following, because can't ask for note until after checking for -c embedded xtup with number, due to ordering/octave feature. -c -c call notefq(noteq,lnoten,nolev(ivx,ip),ncmid(iv,ip)) - end if - if (btest(irest(ivx,ip),28)) vxtup(ivx) = .true. - if (vxtup(ivx)) then -c -c In an xtup -c - if (btest(irest(ivx,ip),0)) then -c -c Intermediate rest in xtup, put in the rest. Reset nodur so notex works OK -c - nodur(ivx,ip) = 2**(4-(iand(mult(ivx,ip),15)-8)) - call notex(notexq,lnote) -c -c Re-zero so next note does not get confused -c - nodur(ivx,ip) = 0 - return - end if - if (.not.drawbm(ivx)) then -c -c Xtuplet with no beam, just put in the right kind of note -c - if (btest(islur(ivx,ip),30)) then -c -c Forced stem direction -c - ndsav = nodur(ivx,ip) - nodur(ivx,ip) = 2**(4-multip) - if (btest(nacc(ivx,ip),19) .or. - * btest(nacc(ivx,ip),27)) then - nodur(ivx,ip)=3*nodur(ivx,ip)/2 - else if (btest(nacc(ivx,ip-1),27)) then - nodur(ivx,ip)=nodur(ivx,ip)/2 - end if - call notex(notexq,lnote) - nodur(ivx,ip) = ndsav - else -c -c Use ulq for stem direction -c - call notefq(noteq,lnoten,nole,ncmid(iv,ip)) - if (lnoten .eq. 1) call addblank(noteq,lnoten) - lnote = 3 - if (.not.btest(nacc(ivx,ip-1),27)) then -c -c Prior note of xtup is not regular-dotted -c - if (multip .eq. 0) then - notexq = sq//'q'//ulq(ivx,ibmcnt(ivx)) - else if (multip .eq. -1) then - notexq = sq//'h'//ulq(ivx,ibmcnt(ivx)) - else if (multip .eq. 1) then - notexq = sq//'c'//ulq(ivx,ibmcnt(ivx)) - else if (multip .eq. 2) then - notexq = sq//'cc'//ulq(ivx,ibmcnt(ivx)) - lnote = 4 - else if (multip .eq. 3) then - notexq = sq//'ccc'//ulq(ivx,ibmcnt(ivx)) - lnote = 5 - else if (multip .eq. -2) then - notexq = sq//'wh' - end if - if (btest(nacc(ivx,ip),27)) then -c -c This xtup note is regular dotted non-beamed xtup -c -c notexq = notexq(1:3)//'p' -c lnote = 4 - notexq = notexq(1:lnote)//'p' - lnote = lnote+1 - end if - else -c -c Prior note of xtup is regular-dotted so this one is halved -c - if (multip .eq. 2) then - notexq = sq//'ccc'//ulq(ivx,ibmcnt(ivx)) - lnote = 5 - else if (multip .eq. 1) then - notexq = sq//'cc'//ulq(ivx,ibmcnt(ivx)) - lnote = 4 - else if (multip .eq. 0) then - notexq = sq//'c'//ulq(ivx,ibmcnt(ivx)) - else if (multip .eq. -1) then - notexq = sq//'q'//ulq(ivx,ibmcnt(ivx)) - else if (multip .eq. -2) then - notexq = sq//'h'//ulq(ivx,ibmcnt(ivx)) - end if - end if - notexq = notexq(1:lnote)//noteq - lnote = lnote+lnoten - end if - return - else if (nodur(ivx,ip).eq.0) then -c -c In the beamed xtup but not the last note -c - if (nodur(ivx,ip-1).gt.0) then -c -c Embedded Xtup, mult>0, starts here. Put in number if needed -c - nxtinbm(ivx) = nxtinbm(ivx)+1 - iud = 1 - if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') iud = -1 -c -c Get ip#, notelevel of middle note (or gap) in xtup -c - ipmid = ip+ntupv(ivx,nxtinbm(ivx))/2 - xnlmid = levrn(nolev(ivx,ipmid),irest(ivx,ipmid),iud, - * ncmid(iv,ipmid),iand(15,mult(ivx,ipmid))-8) - if (mod(ntupv(ivx,nxtinbm(ivx)),2).eq.0) xnlmid = (xnlmid+ - * levrn(nolev(ivx,ipmid-1),irest(ivx,ipmid-1),iud, - * ncmid(iv,ipmid-1),iand(15,mult(ivx,ipmid-1))-8))/2 - iflop = 0 - if (abs(xnlmid-ncmid(iv,ip)).lt.3.) iflop = -iud - iup = iud+2*iflop - if (btest(irest(ivx,ip),14)) then - iup = -iup - iflop = 0 - if (iud*iup .lt. 0) iflop = iup - end if -c -c Place number if needed -c - if (.not.btest(islur(ivx,ip),31)) then - mprint = igetbits(nacc(ivx,ip),5,22) - if (mprint.eq.0) mprint=mtupv(ivx,nxtinbm(ivx)) - call putxtn(mprint,iflop,multip,iud,wheadpt,poenom, - * nolev1(ivx),islope(ivx),slfac, - * xnlmid,islur(ivx,ip),lnote,notexq,ncmid(iv,ip),nlnum, - * eloff(ivx,nxtinbm(ivx)),iup,irest(ivx,ip), - * mult(ivx,ip),.false.) - end if - call notefq(noteq,lnoten,nole,ncmid(iv,ip)) - else -c -c Intermediate note of xtup -c - call notefq(noteq,lnoten,nole,ncmid(iv,ip)) - end if - else -c -c Last note of xtup (but not last note of beam!) -c - call notefq(noteq,lnoten,nole,ncmid(iv,ip)) - end if - else if (btest(irest(ivx,ip),0)) then - call notex(notexq,lnote) - return - else - call notefq(noteq,lnoten,nole,ncmid(iv,ip)) - end if -c -c Check for string of rests up to and including last note in xtup. -c -c Replace next 2 lines to keep from doing this block -c when in second part of staff-jumping chordal xtup. This fix could -c break some unaccounted non-chordal staff-jum xtup situations. -c if (vxtup(ivx) .and. btest(irest(ivx,ip+1),0) .and. -c * .not.btest(irest(ivx,ip),0)) then - if (vxtup(ivx) .and. btest(irest(ivx,ip+1),0) .and. - * .not.btest(irest(ivx,ip),0) .and. - * .not.(isbjmp.and.ivx.eq.ivbj2)) then -c -c This note is not a rest but next is a rest. Do rests continue to -c end of xtup, where nodur>0 -c - do 3 ipnow = ip+1 , ip+24 - if (nodur(ivx,ipnow).gt.0) go to 4 ! This is last of xtup - if (.not.btest(irest(ivx,ipnow+1),0)) go to 5 ! Next is not rest -c -c If I don't go to 5, know next note IS a rest! -c -3 continue -4 continue - call ntrbbb(1,'t',ulq(ivx,ibmcnt(ivx)),ivx,notexq,lnote) - notexq = notexq(1:lnote)//sq//'qb' - lnote = lnote+3 - call istring(ivx,tempq,len) - notexq = notexq(1:lnote)//tempq(1:len) - lnote = lnote+len - notexq = notexq(1:lnote)//noteq(1:lnoten) - lnote = lnote+lnoten - return -5 continue -c -c Check if multiplicity changes in a way requiring action, -c unless (160211) it's blank rest on start of 2nd seg of joined beam -c - else if(.not.btest(irest(ivx,ip-1),24) - * .or..not.btest(islur(ivx,ip-1),29)) then - ipleft = ip-1 - if (btest(irest(ivx,ipleft),0)) ipleft = ipleft-1 - if (.not.btest(islur(ivx,ipleft),20)) then - multl = iand(15,mult(ivx,ipleft))-8 - else - multl = 1 - end if - mub = multip - multl - ipright = ip+1 - if (btest(irest(ivx,ipright),0)) ipright = ipright+1 - if (.not.btest(islur(ivx,ip),20)) then - multr = iand(15,mult(ivx,ipright))-8 - else - multr = 1 - end if - mua = multr-multip - if (mub.gt.0 .or. mua .lt. 0) then -c -c Multiplicity has increased from left or will decrease to right. Need action. -c - if (isbjmp .and. ivx.eq.ivbj2) then - ivb = ivbj1 - ulqq = chax(225-ichar(ulq(ivx,ibmcnt(ivx)))) - else - ivb = ivx - ulqq = ulq(ivx,ibmcnt(ivx)) - end if - if (mua .ge. 0) then - call ntrbbb(multip,'n',ulqq,ivb,notexq,lnote) -c -c Test for next note being blank rest, assuming staff-crossing -c xtup chord -c - else if (multl .ge. multr .and. - * .not.btest(islur(ivx,ip+1),29)) then - do 1 im = multip , 1+multr, -1 - call ntrbbb(im,'t',ulqq,ivb,notexq,lnote) -1 continue -c else -c Test for next note being blank rest, assuming staff-crossing -c xtup chord -c - else if (.not.btest(islur(ivx,ip+1),29)) then - do 2 im = 1+multr, multip - call ntrbbb(im,'r',ulqq,ivb,notexq,lnote) -2 continue - call ntrbbb(multr,'n',ulqq,ivb,notexq,lnote) - end if - else if (ip .gt. 1) then -c -c Check for 2nd member of dotted xtup -c - if (btest(nacc(ivx,ip-1),27)) call ntrbbb(multip+1,'t', - * ulq(ivx,ibmcnt(ivx)),ivx,notexq,lnote) - end if - end if -c -c Now put in the note -c - if (lnote .gt. 0) then - notexq = notexq(1:lnote)//sq//'qb' - else - notexq = sq//'qb' - end if - lnote = lnote+3 - isdotm = .false. - if (isdotted(nodur,ivx,ip)) then -c -c rule out ')' -c - if (.not.btest(iornq(ivx,ip),13)) then - if (.not.btest(islur(ivx,ip),3)) then - notexq = notexq(1:lnote)//'p' - else -c -c Double dot -c - notexq = notexq(1:lnote)//'pp' - lnote = lnote+1 - end if - else - notexq = notexq(1:lnote)//'m' - isdotm = .true. - end if - lnote = lnote+1 - else if (btest(nacc(ivx,ip),19) - * .or. btest(nacc(ivx,ip),27)) then -c -c Special dotted notation for 2:1 xtup, or normal dot in xtup -c - notexq = notexq(1:lnote)//'p' - lnote = lnote+1 - end if -c -c 5/25/08 Allow >12 -c - if (.not.(isbjmp.and.ivx.eq.ivbj2)) then -c call istring(mod(ivx,12),tempq,len) - call istring(mod(ivx,24),tempq,len) - else -c call istring(mod(ivbj1,12),tempq,len) - call istring(mod(ivbj1,24),tempq,len) - end if - notexq = notexq(1:lnote)//tempq(1:len) - lnote = lnote+len - notexq = notexq(1:lnote)//noteq(1:lnoten) - lnote = lnote+lnoten - if (isdotm) then - if (lnoten .eq. 2) then - notexq = notexq(1:lnote)//'{'//noteq(2:2)//'}' - lnote = lnote+3 - else - notexq = notexq(1:lnote)//noteq(lnoten-1:lnoten-1) - lnote = lnote+1 - end if - end if - return - end - subroutine beamn1(notexq,lnote) - parameter (nm=24) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - character*1 ulq,sepsymq,sq - logical beamon,firstgulp,figbass,figchk,btest, - * isfig,vxtup,isdotm,isbjmp,isbj2,drawbm - logical gotnote - common /comoct/ noctup - common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 - common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), - * mtupv(nm,9),nxtinbm(nm), - * islope(nm),xelsk(24),eloff(nm,9), - * nssb(nm),issb(nm),lev1ssb(nm,20) - common /comdraw/ drawbm(nm) - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - character*8 noteq,tempq,numq - character*79 notexq - gotnote = .false. - lnoten = 0 - ip1 = ipo(jn) - multip = iand(15,mult(ivx,ip1))-8 - if (.not.drawbm(ivx) .and. btest(irest(ivx,ip1),0)) then - lnote = 0 -c -c The rest was already written in beamstrt, so just get out of here -c - return - end if - nole = nolev(ivx,ipo(jn)) -c -c Check for special situations with 2nds (see precrd) -c - if (btest(nacc(ivx,ipo(jn)),30)) then - nole = nole - 1 - else if (btest(nacc(ivx,ipo(jn)),31)) then - nole = nole + 1 - end if - if (vxtup(ivx) .and. .not.drawbm(ivx)) then -c -c Xtuplet with no beam, just put in the right kind of note -c - if (btest(islur(ivx,ip1),30)) then -c -c Forced stem direction -c - ndsav = nodur(ivx,ip1) - nodur(ivx,ip1) = 2**(4-multip) - if (btest(nacc(ivx,ip1),19) .or. - * btest(nacc(ivx,ip1),27)) nodur(ivx,ip1)=3*nodur(ivx,ip1)/2 - call notex(notexq,lnote) - nodur(ivx,ip1) = ndsav - else - call notefq(noteq,lnoten,nole,ncmid(iv,ip1)) - gotnote = .true. - if (lnoten .eq. 1) call addblank(noteq,lnoten) - lnote = 3 - if (multip .le. 0) then - if ((btest(irest(ivx,ip1),2) .and. - * nodur(ivx,ip1+1).ge.32) - * .or. multip .eq. -1) then -c -c 1st note of unbeamed half-note trem; make open -c - notexq = sq//'h'//ulq(ivx,ibmcnt(ivx)) - else if (multip .eq. -2) then - notexq = sq//'wh' - else - notexq = sq//'q'//ulq(ivx,ibmcnt(ivx)) - end if -c -c Check for dot -c - if (btest(irest(ivx,ip1),2) .and. - * abs(nodur(ivx,ip1+1)/12.-nodur(ivx,ip1+1)/12).lt..001) then -c -c Need a dot. already called addblank for noteq -c - if (lnote .eq. 0) then - notexq = sq//'pt'//noteq(1:lnoten) - lnote = 3+lnoten - else - notexq = notexq(1:lnote)//'p' - lnote = lnote+1 - end if - end if -c -c Insert the stemlength calcs here for dotted, unbeamed. -c Later may combine with below to avoid repeat. -c - if (btest(irest(ivx,ip1),2)) then - nindent = igetbits(irest(ivx,ip1),2,5) - if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then - slen = (4.5+nindent+nolev1(ivx)-nole - * -.4*islope(ivx)/slfac)*.6667 - else - slen = (4.5+nindent-nolev1(ivx)+nole - * +.4*islope(ivx)/slfac)*.6667 - end if - write(tempq,'(f4.1)')slen - notexq = sq//'slx{'//tempq(1:4)//'}'// - * notexq(1:lnote) - lnote = lnote+10 - end if - else if (btest(irest(ivx,ip1),2)) then -c -c 1st note of unbeamed quarter or 8th trem, make a quarter note -c -c Stem length calcs here. The .2 factor is empirical, but -c slfac accounts for musicsize. -c - nindent = igetbits(irest(ivx,ip1),2,5) - if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then - slen = (4.5+nindent+nolev1(ivx)-nole - * -.4*islope(ivx)/slfac)*.6667 - else - slen = (4.5+nindent-nolev1(ivx)+nole - * +.4*islope(ivx)/slfac)*.6667 - end if - write(tempq,'(f4.1)')slen - notexq = sq//'slx{'//tempq(1:4)//'}'// - * sq//'q'//ulq(ivx,ibmcnt(ivx)) - lnote = 13 -c -c Check for dotted 2-note trem; prepend dot to notexq if needed -c - if (nodur(ivx,ip1+1).eq.12 .or. - * nodur(ivx,ip1+1).eq.24) then - if (lnoten .eq. 1) then - noteq = ' '//noteq(1:1) - lnoten = 2 - end if - notexq = sq//'pt'//noteq(1:lnoten)//notexq(1:lnote) - lnote = lnote+3+lnoten - call notefq(noteq,lnoten,nole,ncmid(iv,ip1)) - gotnote = .true. - if (lnoten .eq. 1) then - noteq = ' '//noteq(1:1) - lnoten = 2 - end if - end if - else if (multip .eq. -1) then - notexq = sq//'h'//ulq(ivx,ibmcnt(ivx)) - else if (multip .eq. 1) then - notexq = sq//'c'//ulq(ivx,ibmcnt(ivx)) - else if (multip .eq. 2) then - notexq = sq//'cc'//ulq(ivx,ibmcnt(ivx)) - lnote = 4 - else if (multip .eq. 3) then - notexq = sq//'ccc'//ulq(ivx,ibmcnt(ivx)) - lnote = 5 - else if (multip .eq. -2) then - notexq = sq//'wh' - else if (multip .eq. -3) then - notexq = sq//'breve' - lnote = 6 - else - print* - print*,'(Error in beamn1, send source to Dr. Don)' - call stop1() - end if - if (btest(nacc(ivx,ip1),19) .or. btest(nacc(ivx,ip1),27)) then -c notexq = notexq(1:3)//'p' -c lnote = 4 - notexq = notexq(1:lnote)//'p' - lnote = lnote+1 - end if - notexq = notexq(1:lnote)//noteq - lnote = lnote+lnoten - end if - return - end if -c -c Check if mult. decreases from 1st note to 2nd -c - if (ibm2(ivx,ibmcnt(ivx)).gt.ip1 - * .or. btest(islur(ivx,ip1),20)) then -c -c More than one note or single-note before a multiplicity-down-up "][" -c - if (btest(islur(ivx,ip1),20)) then - multr = 1 - else if (.not.btest(irest(ivx,ip1+1),0)) then - multr = iand(15,mult(ivx,ip1+1))-8 - else - multr = iand(15,mult(ivx,ip1+2))-8 - end if - lnote = 0 -c -c Check if staff-jumper -c - if (isbjmp .and. ivbj2.gt.0) then - ivxp = ivbj1 - else - ivxp = ivx - end if - if (multr .lt. multip) then - do 1 im = multip , multr+1 , -1 -c -c Right-shifted 'termination' -c - if (isbjmp .and. ivbj2.gt.0) then -c -c Jump beam -c - call ntrbbb(im,'t',ulq(ivxp,ibmcnt(ivx)), - * ivxp,notexq,lnote) - else -c -c Same staff -c - call ntrbbb(im,'r',ulq(ivx,ibmcnt(ivx)),ivxp,notexq,lnote) - end if -1 continue - end if - end if -c -c Check for beamed, dotted 2-note tremolo -c - if (btest(irest(ivx,ip1),2) .and. - * abs(nodur(ivx,ip1+1)/12.-nodur(ivx,ip1+1)/12).lt..001) then - call notefq(noteq,lnoten,nole,ncmid(iv,ip)) - gotnote = .true. - if (lnoten .eq. 1) then - noteq = ' '//noteq(1:1) - lnoten = 2 - end if - end if -c -c Put in the note, but check first for open-head beamed tremolo. -c - if (btest(irest(ivx,ip1),2) .and. nodur(ivx,ip1+1).ge.32) then -c -c 2-note open head tremolo -c - if (lnote .gt. 0) then - notexq = notexq(1:lnote)//sq//'hb' - else - notexq = sq//'hb' - end if - else - if (lnote .gt. 0) then - notexq = notexq(1:lnote)//sq//'qb' - else - notexq = sq//'qb' - end if - end if - lnote = lnote+3 - if (btest(irest(ivx,ip1),2) .and. - * (nodur(ivx,ip1+1).eq.24.or.nodur(ivx,ip1+1).eq.12 - * .or.nodur(ivx,ip1+1).eq.48)) then -c -c 2-note trem on dotted note -c - notexq = notexq(1:lnote)//'p' - lnote = lnote+1 - end if -c -c Check for dot -c - isdotm = .false. - if (.not.vxtup(ivx)) then - nd = nodur(ivx,ipo(jn)) - if (nd.ne.0) then - if (2**log2(nd).ne.nd) then - if (.not.btest(iornq(ivx,ip1),13)) then - if (.not.btest(islur(ivx,ip1),3)) then - notexq = notexq(1:lnote)//'p' - else -c -c Double dot -c - notexq = notexq(1:lnote)//'pp' - lnote = lnote+1 - end if - else - notexq = notexq(1:lnote)//'m' - isdotm = .true. - end if - lnote = lnote+1 - end if - end if - else if (btest(nacc(ivx,ip1),19) .or. - * btest(nacc(ivx,ip1),27)) then -c -c In an xtup with special 2:1 notation with a dot on 1st note, or normal dot -c - notexq = notexq(1:lnote)//'p' - lnote = lnote+1 - end if -c -c Do the number; 0 if 12 -c 5/25/08 allow >12 -c - if (.not.btest(irest(ivx,ip1),24)) then - call istring(mod(ivx,24),numq,len) - else -c -c 1st note of staff-jumping beam -c - call istring(mod(ivbj1,24),numq,len) - end if - notexq = notexq(1:lnote)//numq(1:len) - lnote = lnote+len - if (.not.gotnote) then - call notefq(noteq,lnoten,nole,ncmid(iv,ip1)) - end if - notexq = notexq(1:lnote)//noteq(1:lnoten) - lnote = lnote+lnoten - if (isdotm) then - if (lnoten .eq. 1) then - notexq = notexq(1:lnote)//'{'//noteq(1:1)//'}' - lnote = lnote+3 - else - notexq = notexq(1:lnote)//noteq(lnoten-1:lnoten-1) - lnote = lnote+1 - end if - end if - return - end - subroutine beamstrt(notexq,lnote,nornb,ihornb,space,squez,ib) - parameter (nm=24) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - character*1 ulq,sepsymq,sq - character*40 restq - character*79 inameq - logical beamon,firstgulp,figbass,figchk,btest, - * isfig,vxtup,bar1syst,addbrack,flipend,xto,drawbm - common /comeskz2/ eskz2(nm,200) - common /comoct/ noctup - common /strtmid/ ihnum3,flipend(nm),ixrest(nm) - common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), - * mtupv(nm,9),nxtinbm(nm), - * islope(nm),xelsk(24),eloff(nm,9), - * nssb(nm),issb(nm),lev1ssb(nm,20) - common /comdraw/ drawbm(nm) - common /comas1/ naskb,task(40),wask(40),elask(40) - common /comask/ bar1syst,fixednew,scaldold, - * wheadpt,fbar,poenom - common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, - * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, - * lnam(nm),inameq(nm) - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 -c -c The following is just to save the outputs from SetupB for the case of -c xtups starting with a rest, where beamstrt is called twice. -c - common /comipb/ nnb,sumx,sumy,ipb(24),smed - character*1 chax - character*8 noteq - character*79 notexq,tempq - integer nornb(nm),ihornb(nm,24) - real*4 space(80),squez(80) - logical novshrinktop,cstuplet,usexnumt,writebrests - common /comnvst/ novshrinktop,cstuplet - common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), - * fullsize(nm),ivxfig2,ivvfig(2,74) - character*10 figq - common /xjbeambrests/ nbrests - writebrests = .true. - ibc = ibmcnt(ivx) - ipb1 = ibm1(ivx,ibc) - multb = iand(15,mult(ivx,ipb1))-8 - ip = ipo(jn) - lnote = 0 - nvtrem = 0 ! Vertical adjustment beams for tremolo -c -c Compute slopes and note offsets from start of beam. Inside SetupB, for each -c xtup in the beam, set eloff,mtupv (in comxtup) for printed number. Also -c gets islope(ivx), transferred in common. -c - if (ixrest(ivx).eq.0 .and. .not.btest(nacc(ivx,ip),21)) - * call SetupB(xelsk,nnb,sumx,sumy,ipb,smed,ixrest(ivx)) -c -c Will always come past here after entering beamstrt for 2-note tremolo, and -c slope will have been computed, even for unbeamed. So start the indented -c beams here. The indented tremolo bars will be added to the notexq output -c string, under the tacet assumption that there is no horizontal shift -c enacted by the action just before and after the call to beamstrt. -c - if (btest(irest(ivx,ipb1),2) .and. - * igetbits(irest(ivx,ipb1),2,5) .gt. 0) then - nindent = igetbits(irest(ivx,ipb1),2,5) - tempq = sq//'roffset{.7}{'//sq//'ib' - ltemp = 16 - if (nindent .eq. 2) then - tempq = tempq(1:16)//'b' - ltemp = 17 - else if (nindent .eq. 3) then - tempq = tempq(1:16)//'bb' - ltemp = 18 - end if -c -c Use beam # 0 for indented beams -c - tempq = tempq(1:ltemp)//ulq(ivx,ibc)//'0' - ltemp = ltemp+2 -c -c Get adjustment to nolev1 for main beam based on nindent -c - if (ulq(ivx,ibc) .eq. 'u') then - nvtrem = nindent-1 - else - nvtrem = 1-nindent - end if -c -c Get numerical position of initiation for main beam. Will adjust height at -c closing to account for nindent -c - numinit = nolev1(ivx)-ncmid(iv,ipb1)+4 -c -c Get forced beam height tweak, apply here for indented beams -c - iadj = igetbits(ipl(ivx,ipb1),6,11)-30 - if (iadj .ne. -30) numinit = numinit+iadj - if (numinit.ge.0 .and. numinit.le.9) then - write(noteq,'(i1)') numinit - lnoten = 1 - else - write(noteq,'(a1,i2,a1)')'{',numinit,'}' - lnoten = 4 - end if - tempq = tempq(1:ltemp)//noteq(1:lnoten) - ltemp = ltemp+lnoten -c -c Now do the slope. -c 170408 Baseline is in islope(ivx). Apply slope tweak if present. -c - numinit = islope(ivx) - iadj = igetbits(ipl(ivx,ipb1),6,17)-30 - if (iadj .ne. -30) numinit = numinit+iadj - if (numinit.ge.0 .and. numinit.le.9) then - write(noteq,'(i1,a1)') numinit,'}' - lnoten = 2 - else - write(noteq,'(a1,i2,a2)')'{',numinit,'}}' - lnoten = 5 - end if - tempq = tempq(1:ltemp)//noteq(1:lnoten) - ltemp = ltemp+lnoten - notexq = tempq - lnote = ltemp - end if - if (btest(nacc(ivx,ip),21)) then -c -c This is start of later segment of single-slope beam group so use slope and -c height from prior beam. Slope is already OK. -c - issb(ivx) = issb(ivx)+1 - nolev1(ivx) = lev1ssb(ivx,issb(ivx)) - end if -c -c Move this up to before indented beams for tremolo -c lnote = 0 - drawbm(ivx) = .true. - if (btest(irest(ivx,ipb1),28) .and. ixrest(ivx).ne.2) then - vxtup(ivx) = .true. - nxtinbm(ivx) = nxtinbm(ivx)+1 -c -c irest(28)=>Xtup starts on this note. Set up for xtuplet. -c Number goes on notehead side at middle note (or gap) of xtup, unless that -c puts it in staff, then it flops to stem (or beam) side. -c __ __ -c | | | O | | -c O | | O -c |___| O |__| | -c -c iud -1 -1 1 1 ...stem direction -c iflop 0 1 -1 0 ...direction of flop -c iup -1 1 -1 1 ...direction of number and bracket -c - iud = 1 - if (ulq(ivx,ibc) .eq. 'u') iud = -1 -c -c Get ip#, note level of middle note (or gap) in xtup -c - ipmid = ipb1+ntupv(ivx,nxtinbm(ivx))/2 -c -c 130129 If middle note is a rest, go to next note. Note last note cannot -c be a rest -c -14 continue - if (btest(irest(ivx,ipmid),0)) then - ipmid = ipmid+1 - go to 14 - end if - xnlmid = levrn(nolev(ivx,ipmid),irest(ivx,ipmid),iud, - * ncmid(iv,ipmid),iand(15,mult(ivx,ipmid))-8) - if (mod(ntupv(ivx,nxtinbm(ivx)),2) .eq. 0) xnlmid = (xnlmid+ - * levrn(nolev(ivx,ipmid-1),irest(ivx,ipmid-1),iud, - * ncmid(iv,ipmid-1),iand(15,mult(ivx,ipmid-1))-8))/2 - iflop = 0 - if (abs(xnlmid-ncmid(iv,ipb1)).lt.3.) iflop = -iud - iup = iud+2*iflop - if (btest(irest(ivx,ipb1),14)) then -c -c Alter iud, iflop, iup to flip number/bracket. (Stare at above pic) -c - iup = -iup - iflop = 0 - if (iud*iup .lt. 0) iflop = iup - end if -c -c Determine if a beam is to be drawn. -c Had problem w/ half-note 2-note xtups always F, so add a test -c - if (igetbits(irest(ivx,ipb1),2,3) .ne. 0) then - drawbm(ivx) = .true. - go to 6 - end if - do 5 ipp = ibm1(ivx,ibc),ibm2(ivx,ibc) - if (iand(15,mult(ivx,ipp))-8 .le. 0) then - drawbm(ivx) = .false. - go to 6 - end if -5 continue - drawbm(ivx) = .not.btest(islur(ivx,ibm1(ivx,ibc)),18) -6 continue -c -c Are we using tuplet.tex? -c - usexnumt = cstuplet .and. .not.drawbm(ivx) -c -c Check for single note xtup 171217 -c - if (btest(irest(ivx,ipb1),28) .and. nnb.eq.1) then - drawbm(ivx) = .false. - end if -c -c Place xtup number if needed -c - if (.not.btest(islur(ivx,ipb1),31) .or. multb.le.0) then - mprint = igetbits(nacc(ivx,ip),5,22) - if (mprint.eq.0) mprint=mtupv(ivx,nxtinbm(ivx)) -c Stab in the dark! Note: tried setting unbeam flag islur18 but no go. - if (nnb .eq. 1) then - xnlmid = nolev1(ivx) - islope(ivx) = 0 -c -c Move up, outside number check block, so all 1-note xtups ar unbeamed -c drawbm(ivx) = .false. -c - end if - call putxtn(mprint,iflop,multb,iud,wheadpt, - * poenom,nolev1(ivx),islope(ivx),slfac,xnlmid,islur(ivx,ipb1), - * lnote,notexq,ncmid(iv,ipb1),nlnum,eloff(ivx,nxtinbm(ivx)), - * iup,irest(ivx,ipb1),mult(ivx,ipb1),usexnumt) - end if - if (.not.drawbm(ivx)) then -c -c Xtuplet with no beam -c - if (.not.btest(islur(ivx,ipb1),31)) then -c -c Number printing has not been suppressed, so put in the bracket. -c scale = stretch factor for bracket if there are asx's -c xnsk = length of the bracket in \noteskips = (\elemskips)/(eon) -c - xnsk = (eskz2(ivx,ipb1+ntupv(ivx,nxtinbm(ivx))-1) - * -eskz2(ivx,ipb1))/squez(ib)/feon(space(ib)/squez(ib)) - if (iup .eq. 1) then - if (lnote .gt. 0) then - notexq = notexq(1:lnote)//sq//'ovbkt' - else - notexq = sq//'ovbkt' - end if - else - if (lnote .gt. 0) then - notexq = notexq(1:lnote)//sq//'unbkt' - else -c -c Introduced 12/5/98, req'd due to possible presence of in-line TeX -c - notexq = sq//'unbkt' - end if - end if - lnote = lnote+6 - if (iline.eq.1) then - smed = smed/(1.-fracindent) - end if - xslope = 1.8*smed*slfac - islope(ivx) = nint(xslope) - nolev1(ivx) = nlnum - nint(smed*eloff(ivx,1)) - if (islope(ivx) .eq. 0) nolev1(ivx) = nolev1(ivx)-1 - if (iup .eq. 1) nolev1(ivx) = nolev1(ivx)+4 - levbracket = nolev1(ivx) - if (iup.eq.1 .and. cstuplet) levbracket = levbracket-1 - call notefq(noteq,lnoten,levbracket,ncmid(iv,ipb1)) - if (lnoten .eq. 1) call addblank(noteq,lnoten) - notexq = notexq(1:lnote)//noteq(1:lnoten)//'{' - lnote = lnote+lnoten+1 - if (xnsk .lt. 0.995) then - write(notexq(lnote+1:lnote+4),'(i1,f3.2)')0,xnsk - lnote = lnote+4 - else if (xnsk .lt. 9.995) then - write(notexq(lnote+1:lnote+4),'(f4.2)')xnsk - lnote = lnote+4 - else - write(notexq(lnote+1:lnote+5),'(f5.2)')xnsk - lnote = lnote+5 - end if - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - if (btest(mult(ivx,ipb1),4)) then -c -c Tweak slope of bracket -c - islope(ivx) = islope(ivx)+igetbits(mult(ivx,ipb1),5,5)-16 - end if - if (islope(ivx).lt.0 .or. islope(ivx).ge.10) then - notexq = notexq(1:lnote)//'{' - lnote = lnote+1 - if (islope(ivx) .lt. -9) then - write(notexq(lnote+1:lnote+3),'(i3)')islope(ivx) - lnote = lnote+3 - else - write(notexq(lnote+1:lnote+2),'(i2)')islope(ivx) - lnote = lnote+2 - end if - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - else - write(notexq(lnote+1:lnote+1),'(i1)')islope(ivx) - lnote = lnote+1 - end if -c -c Done with bracket -c - end if - if (ixrest(ivx) .eq. 1) then -c -c Put in the rest. Possible problem: Rest is a spacing char, but between -c beamstrt and beamn1 some non-spacing chars. are inserted. -c -c 130126 Deal with vertical shifts of rest starting xtuplet -c - lrest = 3 - if (btest(islur(ivx,ip),29)) then - restq = sq//'sk' -c if (multb .eq. 0) then - else if (multb .eq. 0) then - restq = sq//'qp' - else if (.not.drawbm(ivx).and.multb.eq.1) then - restq = sq//'ds' - else if (.not.drawbm(ivx).and.multb.eq.2) then - restq = sq//'qs' - else if (.not.drawbm(ivx).and.multb.eq.3) then - restq = sq//'hs' - else - restq = sq//'hpause' - lrest = 7 - end if - if (btest(nacc(ivx,ipb1),18) .and. - * btest(nacc(ivx,ipb1),19)) then -c -c VERY special case of rest at start of F-tuplet, needs dot -c - restq = sq//'pt4'//restq(1:lrest) - lrest = lrest+4 - end if - - nole = mod(nolev(ivx,ip)+20,100)-20 -c if (nole .eq. 0) then - if (nole.eq.0 .or. btest(islur(ivx,ip),29)) then -c -c Rest blank or is not raised -c - notexq = notexq(1:lnote)//restq - lnote = lnote+lrest - else - if (abs(nole) .lt. 10) then - tempq = chax(48+abs(nole)) - ltemp = 1 - else - write(tempq(1:2),'(i2)')abs(nole) - ltemp = 2 - end if - if (nole .gt. 0) then - tempq = sq//'raise'//tempq(1:ltemp)//sq//'internote' - else - tempq = sq//'lower'//tempq(1:ltemp)//sq//'internote' - end if - ltemp = 16+ltemp - notexq = notexq(1:lnote)//tempq(1:ltemp)//restq(1:lrest) - lnote = lnote+ltemp+lrest - end if -c -c No need to come back through this subroutine (as would if rest starts bar -c & multb>0), so do not advance ibm1. But must check in beamn1 and do nothing. -c - ixrest(ivx) = 0 - end if - return - end if -c -c End if block for non-beamed xtup start...note we returned -c - if (ixrest(ivx) .eq. 1) then -c -c Insert rest at start of beamed xtup. See above note for possible problem. -c But first check if blank rest and if in forced beam (assuming xtuplet), -c and if so, count rest from beginning, add \sk's AFTER starting beam '\ib*' -c - if (btest(islur(ivx,ip),29) .and. btest(ipl(ivx,ip),30)) then - nbrests = nbrests+1 - writebrests = .false. - else - nodur(ivx,ipb1) = 2**(4-multb) - call notex(tempq,ltemp) - if (lnote .gt. 0) then - notexq = notexq(1:lnote)//tempq(1:ltemp) - else - notexq = tempq(1:ltemp) - end if - lnote = lnote+ltemp - end if -c -c Re-zero just in case! -c - nodur(ivx,ipb1) = 0 - ibm1(ivx,ibc) = ibm1(ivx,ibc)+1 -c -c See if next note is a non-rest -c - if (.not.btest(irest(ivx,ipb1+1),0)) then - ixrest(ivx) = 2 - else -c -c Suppress reprinting xtup number next time through beamstrt -c - islur(ivx,ipb1+1) = ibset(islur(ivx,ipb1+1),31) -c -c Set new xtup start flag -c - irest(ivx,ipb1+1) = ibset(irest(ivx,ipb1+1),28) - end if - return - end if - end if -c -c Just ended if block for xtups -c - if (vxtup(ivx) .and. ipb1.eq.ibm2(ivx,ibc)) then -c -c Move actual note writing to beamend -c - ixrest(ivx) = 4 - return - end if - if (issb(ivx) .eq. 0) then -c -c 1st bmstrt in single-slope bm grp, Adjust start level(s) and slope if needed -c - iadj = igetbits(ipl(ivx,ipb1),6,11)-30 - if (iadj .ne. -30) then - nolev1(ivx) = nolev1(ivx)+iadj - do 2 isssb = 1 , nssb(ivx) - lev1ssb(ivx,isssb) = lev1ssb(ivx,isssb)+iadj -2 continue - end if - iadj = igetbits(ipl(ivx,ipb1),6,17)-30 - if (iadj .ne. -30) then - islope(ivx) = islope(ivx)+iadj - if (abs(islope(ivx)) .gt. 9) islope(ivx) = sign(9,islope(ivx)) - if (nssb(ivx) .gt. 0) then -c -c Cycle thru non-rest notes in SSBG, looking for bmstrts. -c - isssb = 0 - do 4 inb = 2, nnb - if (btest(nacc(ivx,ipb(inb)),21)) then -c -c Beam segment start. New start level - isssb = isssb+1 - lev1ssb(ivx,isssb) = - * lev1ssb(ivx,isssb)+islope(ivx)*xelsk(inb)/slfac - end if -4 continue - end if - end if - end if - iadj = igetbits(islur(ivx,ipb1),2,27) - addbrack = .false. - if (btest(ipl(ivx,ipb1),30)) then -c -c Check for altered starting polarity. Only in forced beams. Nominal start -c level is nolev1. So beam level is nolev1 +/- 6, to be compared w/ nolev(.,.). -c - if (ulq(ivx,ibc).eq.'u' .and. - * nolev1(ivx)+6.lt.nolev(ivx,ipb1)) then - if (lnote .eq. 0) then - notexq = sq//'loff{' - else - notexq = notexq(1:lnote)//sq//'loff{' - end if - lnote = lnote+6 - addbrack = .true. - else if (ulq(ivx,ibc).eq.'l' .and. - * nolev1(ivx)-6.gt.nolev(ivx,ipb1)) then - if (lnote .eq. 0) then - notexq = sq//'roff{' - else - notexq = notexq(1:lnote)//sq//'roff{' - end if - lnote = lnote+6 - addbrack = .true. - end if -c -c Check end level for possible flipping in forced beam. Have to do it -c here since with multiple voices, xelsk will not be preserved. -c - if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then - bmlev = nolev1(ivx)+6+islope(ivx)*xelsk(nnb)/slfac - flipend(ivx) = bmlev.lt.nolev(ivx,ibm2(ivx,ibc)) - else if (ulq(ivx,ibmcnt(ivx)) .eq. 'l') then - bmlev = nolev1(ivx)-6+islope(ivx)*xelsk(nnb)/slfac - flipend(ivx) = bmlev.gt.nolev(ivx,ibm2(ivx,ibc)) - end if - end if - multbb = multb+iadj -c -c Tremolo starting? -c - if (btest(irest(ivx,ipb1),2)) multbb = - * igetbits(irest(ivx,ipb1),2,3) - call ntrbbb(multbb,'i',ulq(ivx,ibc),ivx,notexq,lnote) -c -c Put in name of start level and slope, after correcting nolev1 if xtup -c started with a rest. -c - if (ixrest(ivx).eq.2) nolev1(ivx) = - * nint(nolev1(ivx)+xelsk(1)*islope(ivx)/slfac) -c -c Add adjustment nvtrem to main beam to account for tremolo indented beams -c - call notefq(noteq,lnoten,nolev1(ivx)+nvtrem,ncmid(iv,ipb1)) - if (islope(ivx) .lt. 0) then - notexq = notexq(1:lnote)//noteq(1:lnoten)//'{' - lnote = lnote+4+lnoten - write(notexq(lnote-2:lnote),'(i2,a1)')islope(ivx),'}' - else - notexq = notexq(1:lnote)//noteq(1:lnoten) - lnote = lnote+1+lnoten - write(notexq(lnote:lnote),'(i1)')islope(ivx) - end if -c -c Check for beam-thk fine-tuning -c - if (iadj .gt. 0) then - do 1 imp = multb+iadj , multb+1 , -1 - call ntrbbb(imp,'t',ulq(ivx,ibc),ivx,notexq,lnote) -1 continue - end if -c -c If we shifted, must close with right bracket -c - if (addbrack) then - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - end if -c -c Add in \sk's for very special case of staff-crossing xtup chords -c Assumes we are in lower (first) voice of up-to-both beamed xtup -c that starts with blank rests (notes in upper voice here). -c - if (nbrests.gt.0 .and. writebrests) then - do 7 isk = 1 , nbrests - notexq = notexq(1:lnote)//chax(92)//'sk' - lnote = lnote+3 -7 continue - nbrests = 0 - end if -c -c Get 'floor' zmin for figures -c Note: Will not come thru here on 1st note of unbeamed xtup, so figure height -c won't be adjusted. If anyone ever needs that, need to duplicate this -c functionality up above, before exiting. -c - if (figbass .and. (ivx.eq.1 .or. ivx.eq.ivxfig2)) then - if (ivx .eq. 1) then - ivf = 1 - else - ivf = ivxfig2 - end if - zmult = 1.2*(multb-1) - ymin = 100. - do 3 inb = 1, nnb - if (isfig(ivf,ipb(inb))) then - if (ulq(iv,ibc) .eq. 'u') then - ybot = nolev(iv,ipb(inb)) - else - ybot = islope(ivx)/slfac*xelsk(inb)+nolev1(ivx) - * -stemlen-zmult - end if - ymin = min(ymin,ybot) - end if -3 continue - maxdrop = ncmid(iv,ipb1)-4-ymin+5.01 - ifigdr(ivf,iline) = max(ifigdr(ivf,iline),maxdrop) - end if -c -c Compute ornament levels if needed -c - NomOrnLev = ncmid(iv,ipb1)+5 - iorn = 0 - do 8 inb = 1 , nnb - ip = ipb(inb) - if (.not.btest(iornq(ivx,ip),23)) go to 8 - if (btest(irest(ivx,ip),26) .and. ulq(ivx,ibc).eq.'l') then -c -c letter-dynamic or hairpin ending under down-beamed -c - iorn = iorn+1 - ybeam = nolev1(ivx)-stemlen+islope(ivx)*xelsk(inb)/slfac+1 - * -1.2*(multb-1) - ihornb(ivx,iorn) = min(nint(ybeam-3.),NomOrnLev-10) - else if (.not.btest(ipl(ivx,ip),10)) then -c -c Bits 0-13: (stmgx+Tupf._) , 14: Down fermata, was F -c 15: Trill w/o "tr", was U , 16-18 Editorial s,f,n , 19-21 TBD -c -c Non-chord. There IS an ornament. Need ihornb only if upbeam, and if -c ornament is 1,2,3,5,6,7,8,9,10,15-21 (up- but not domn ferm.) -c - if (ulq(ivx,ibc).eq.'u' .and. - * iand(iornq(ivx,ipb(inb)),4163566).gt.0) then - iorn = iorn+1 - iornq(ivx,ip) = ibset(iornq(ivx,ip),22) - ybeam = nolev1(ivx)+stemlen+islope(ivx)*xelsk(inb)/slfac-1 - * +1.2*(multb-1) - ihornb(ivx,iorn) = max(nint(ybeam+3.),NomOrnLev) - end if - else -c -c In a chord. Orn may be on main note or non-main or both. Set ihornb if -c upbeam and highest note has orn, or down beam and lowest. Find 1st chord note -c - do 10 icrd1 = 1 , ncrd - if (iand(255,icrdat(icrd1)) .eq. ip .and. - * iand(15,ishft(icrdat(icrd1),-8)) .eq. ivx) go to 11 -10 continue -11 continue -c -c Find outermost note, min or max depending on beam direction ulq. xto is true -c if there's an ornament on that note. Expand orn list to include ._, since if -c on extreme chord note in beam, will move. -c So ornaments are all except 0,4,13 (,g,) -c - levx = nolev(ivx,ip) - xto = iand(iornq(ivx,ipb(inb)),4186094).gt.0 - icrdx = 0 - do 12 icrd = icrd1 , ncrd - if (iand(255,icrdat(icrd)) .ne. ip .or. - * iand(15,ishft(icrdat(icrd),-8)) .ne. ivx) go to 13 - levc = iand(127,ishft(icrdat(icrd),-12)) - if ((ulq(ivx,ibc).eq.'u'.and.levc.gt.levx) .or. - * (ulq(ivx,ibc).eq.'l'.and.levc.lt.levx)) then - levx = levc - icrdx = icrd - xto = iand(icrdorn(icrd),4186094).gt.0 - end if -12 continue -13 continue -c -c If there's orn on extreme note, do stuff -c - if (xto) then - iorn = iorn+1 - if (ulq(ivx,ibc) .eq. 'u') then - ybeam = nolev1(ivx)+stemlen+islope(ivx)*xelsk(inb)/slfac-1 - * +1.2*(multb-1) - ihornb(ivx,iorn) = max(nint(ybeam+3.),NomOrnLev) - else - ybeam = nolev1(ivx)-stemlen+islope(ivx)*xelsk(inb)/slfac+1 - * -1.2*(multb-1) - ihornb(ivx,iorn) = min(nint(ybeam-3.),NomOrnLev-10) - end if - if (icrdx .eq. 0) then -c -c Affected ornament is on main note -c - iornq(ivx,ip) = ibset(iornq(ivx,ip),22) - else - icrdorn(icrdx) = ibset(icrdorn(icrdx),22) - end if - end if - end if -8 continue -c -c Henceforth nornb will be a counter. -c - if (iorn .gt. 0) nornb(ivx)=1 - if (ixrest(ivx) .eq. 2) ixrest(ivx) = 0 - return - end - block data - parameter (nm=24) - common /comtol/ tol - common /comtrans/ cheadq - common /compage/ widthpt,ptheight,hoffpt,voffpt, - * nsyst,nflb,ibarflb(0:40), - * isysflb(0:40),npages,nfpb,ipagfpb(0:18),isysfpb(0:18), - * usefig,fintstf,gintstf,fracsys(30),nmovbrk,isysmb(0:30), - * nistaff(0:40) - common /cblock/ - * etatop,etabot,etait,etatc,etacs1,hgtin,hgtti,hgtco, - * xilbn,xilbtc,xilhdr,xilfig,a,b,inhnoh - common /cominbot/ inbothd - logical usefig - common /comstart/ facmtr - character*60 cheadq - character*120 instrq,titleq,compoq - logical headlog - common /comtitl/ instrq,titleq,compoq,headlog,inskip,ncskip, - * inhead - common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, - * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, - * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, - * rtshfac - common /combmh/ bmhgt,clefend - common /comdyn/ ndyn,idyndat(99),levdsav(nm),ivowg(12),hoh1(12), - * hoh2(12),hoh2h1(2),ntxtdyn,ivxiptxt(41),txtdynq(41), - * idynda2(99),levhssav(nm),listcresc,listdecresc - character*128 txtdynq - logical kbdrests - common /comkbdrests/ levbotr(8),levtopr(8),kbdrests - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans - common /comsize/ isize(nm) -c - data tol /.001/ - data cheadq - * /' '/ - data gslfac /9./ - data instrq,titleq,compoq,headlog /3*' ',.false./ -c -c meter space (pts) = xb4mbr = musicsize*facmtr -c - data facmtr /0.55/ - data grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, - * flagfac,dotfac,bacfac,agc1fac,clefend,bmhgt - * / 1.3333,.4 , .7 , .3 , 0.2 , 2.0 , 1.0 , - * .7,.7 ,.9 ,.5 ,2.3 ,1.1 / - data rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac,arpfac - * / 1.32 , 2.25 , 0.47 , 0.83 , 0.17 , 0.5 , 1.7 / - data rtshfac / 1.0 / - data isize /nm*0/ -c -c From other -c - data ptheight,widthpt,hoffpt,voffpt, - * etatop,etabot,etait,etatc,etacs1,hgtin,hgtti,hgtco, - * xilbn,xilbtc,xilhdr,xilfig,a,b,inbothd,inhnoh - * / 740. , 524. , 0., 0., - * .50 , .25 , 0.4 , 0.4 , 0.2 , 12. ,21. , 12., - * 4 , 1.6 ,5.,5.7,1.071,2.714,16 ,16 / - data fracsys /30*0./ - data ivowg,hoh1,hoh2,hoh2h1 /0,0,0,0,0,1,1,1,1,1,1,1, -c * 2.0,1.5,1.0,0.5,1.3,1.3,0.4,0.8,1.2,0.8,1.2,1.6, - * 2.2,1.7,1.2,0.7,1.3,1.3,0.4,0.8,1.2,0.8,1.2,1.6, - * -2.7,-2.2,-1.7,-1.2,-2.3,-2.1,-1.0,-1.7,-2.1,-1.6,-1.9,-2.3, - * -0.3,0.3 / - data kbdrests /.false./, - * levtopr /9,7,5,5,7,5,6,6/, levbotr /0,0,0,2,1,4,5,4/ - data EarlyTransOn, LaterInstTrans /2*.false./ - data iInstTrans /nm*0/ - data iTransAmt /nm*0/ - end - subroutine catspace(space,squez,nnsk) - parameter (nkb=3999,maxblks=9600) - common /c1omnotes/ nnodur,wminnh(nkb),nnpd(maxblks),durb(maxblks), - * iddot,nptr(nkb),ibarcnt,mbrest,ibarmbr, -c * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) - * ibaroff,udsp(nkb),wheadpt,sqzb(maxblks) - common /comtol/ tol -c logical gotclef - do 16 iptr = nptr(ibarcnt) , nptr(ibarcnt+1)-1 - if (abs(space-durb(iptr)) .lt. tol) then - if (abs(squez-sqzb(iptr)) .lt. tol) then -c -c Increment pre-existing entry -c - nnpd(iptr) = nnpd(iptr)+nnsk - return - end if - end if -16 continue -c -c Didn't find current duration & squez, so add a new entry. -c No particular reason to keep in order, so add at the end. -c - nnpd(nptr(ibarcnt+1)) = nnsk - durb(nptr(ibarcnt+1)) = space - sqzb(nptr(ibarcnt+1)) = squez - nptr(ibarcnt+1) = nptr(ibarcnt+1)+1 - return - end - character*1 function chax(n) -c -c The only reason for this seemingly do-nothing function is to get around an -c apparent bug in the Visual Fortran Standard Edition 5.0.A compiler! -c - chax = char(n) - return - end - subroutine checkdyn(lineq,iccount,ibar) - character*128 lineq - character*1 durq,chax - character*4 dynsymq - logical txtdyn - txtdyn = .false. -c -c On entry, iccount is on "D" -c - if (lineq(iccount+1:iccount+1) .eq. '"') then -c -c Dynamic text -c - - istart = iccount+2 ! 1 past 1st quote -3 continue - iend = index(lineq(istart:128),'"') - if (lineq(istart+iend-2:istart+iend-2) .eq. '\') then - istart = iccount+iend+2 - go to 3 - end if - if (iend .eq. 0) then - call errmsg(lineq,iccount+1,ibar, - * 'Dynamic text must be terminated with double quote!') - call stop1() - end if -c -c Set iccount to character after 2nd ", and set ipm -c -c iccount = iccount+iend+2 - iccount = istart+iend - ipm = index('- +',lineq(iccount:iccount)) - if (ipm .eq. 0) then - call errmsg(lineq,iccount,ibar, - * 'Expected "-", "+", or blank here!') - call stop1() - end if - else -c -c Expect ordinary dynamic -c - do 1 iend = iccount+2 , 128 - ipm = index('- +',lineq(iend:iend)) - if (ipm .gt. 0) go to 2 -1 continue -2 continue - if (iend-iccount.gt.5 .or. iend-iccount.lt.2) then - call errmsg(lineq,iend-1,ibar, - * 'Wrong length for dynamic mark!') - call stop1() - end if - read(lineq(iccount+1:iend-1),'(a'//chax(47+iend-iccount)//')') - * dynsymq - idno = (index( - * 'ppppppp pp p mp mf f fp sfz ff fff ffff< > ', - * dynsymq)+3)/4 - if (idno .eq. 0) then - call errmsg(lineq,iccount+1,ibar,'Illegal dynamic mark!') - call stop1() - end if - iccount = iend - end if - if (ipm .ne. 2) then -c -c There is a vertical shift, have "+" or "-" -c - iccount = iccount+1 - if (index('0123456789',lineq(iccount:iccount)) .eq. 0) then - call errmsg(lineq,iccount,ibar, - * 'Expected integer here for vertical offset!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - idno = nint(fnum) - if (idno .gt. 63) then - call errmsg(lineq,iccount-1,ibar, - * 'Vertical offset for dynamic mark must be (-63,63)!') - call stop1() - end if - ipm = index('- +',durq) - if (ipm .eq. 0) then - call errmsg(lineq,iccount,ibar, - * 'Expected "+", "-", or blank here!') - call stop1() - end if - if (ipm .ne. 2) then -c -c There is a horizontal shift -c - iccount = iccount+1 - if (index('.0123456789',lineq(iccount:iccount)) .eq. 0) then - call errmsg(lineq,iccount,ibar, - * 'Expected number here for horizontal offset!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - idno = nint(10*fnum) - if (idno .gt. 255) then - call errmsg(lineq,iccount-1,ibar, - * 'Horizontal offset for dynamic mark must be (-25.5,25.5)!') - call stop1() - else if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibar, - * 'There should be a blank here!') - call stop1() - end if - end if -c -c iccount should be on the blank at the end of the entire symbol -c - end if - return - end - subroutine chkarp(ncrd,icrdat,ivx,ip,iscacc,isarp) -c subroutine chkarp(found1,ncrd,icrdat,icrdot,ivx,ip,isacc,isarp, -c * icashft) - logical found1,iscacc,isarp,btest - integer icrdat(193) - found1 = .false. -c -c icashft will be max left shift of accid's in chord notes. -c Used only for spacing checks. -c Will include left shift of chord note itself. -c Rezero after use. -c - do 18 icrd = 1 , ncrd -c -c This if block cycles thru all chord notes on ivx,ip; then returns. -c - if (iand(255,icrdat(icrd)) .eq. ip .and. - * iand(15,ishft(icrdat(icrd),-8)) .eq. ivx) then - found1 = .true. - iscacc = iscacc .or. - * (btest(icrdat(icrd),19).and..not.btest(icrdat(icrd),27)) -c -c Accid on this chord note, and it's not midi-only. -c -c irshft = igetbits(icrdot(icrd),7,20) -cc -cc Include increment for notehead shift -cc -c if (btest(icrdat(icrd),23)) then -c if (irshft .eq. 0) then -c irshft = 44 -c else -c irshft=irshft-20 -c end if -c end if -c if (irshft .ne. 0) then -cc -cc Accid on chord note is shifted. Include only left shift, in 20ths. -cc -c if (irshft .lt. 64) icashft = max(icashft,64-irshft) -c end if -c end if - isarp = isarp .or. btest(icrdat(icrd),25) - else if (found1) then - return - end if -18 continue - return - end - subroutine chkimidi(icm) - parameter (nm=24,mv=24576) - integer*2 mmidi - logical restpend,relacc,notmain,twoline,ismidi,crdacc - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - if (imidi(icm) .ge. mv) then - print* - print*,'Midi file is too long! It will be corrupted or worse' - write(*,'(a6,2x,4i8)') - * 'imidi:',imidi(0),imidi(1),imidi(2),imidi(3) - end if - return - end - subroutine chkkbdrests(ip,iv,ivx,nn,islur,irest,nolev,ivmx, -c * nib,nv,ibar,tnow,tol,nodur,mode,levtopr,levbotr,mult) - * nib,nv,ibar,tnow,tol,nodur,mode,levtopr,levbotr,mult,ipl) - parameter (nm=24) - integer*4 nn(nm),islur(nm,200),irest(nm,200), - * nolev(nm,200),nib(nm,15),nodur(nm,200),levbotr(8),levtopr(8), - * ivmx(nm,2),mult(nm,200),ipl(nm,200) -c -c On 130127 put this code, formerly in make2bar right before calling notex for -c a single note/rest, into this subroutine, so the same logic could also be -c with the calls to beamstrt/mid/end to adjust height of rests in xtups if the -c keyboard rest option is selected -c -c mode=1 if called as before, 2 if for an xtup. Only affects check for -c quarter rests, which will fix later. -c -c Get reference level: next following note if no intervening blank rests, -c otherwise next prior note. Relative to bottom line. -c -c if (ip.ne.nn(ivx).and..not.btest(iornq(ivx,ip),30)) then - if (ip.ne.nn(ivx).and..not.btest(ipl(ivx,ip),1)) then -c -c Not the last note and not "look-left" for level -c - do 8 kkp = ip+1 , nn(ivx) - if (btest(islur(ivx,kkp),29)) go to 4 - if (.not.btest(irest(ivx,kkp),0)) then - levnext = nolev(ivx,kkp)-ncmid(iv,kkp)+4 ! Relative to bottom line - go to 9 - end if -8 continue - end if -4 continue -c -c If here, there were no following notes or came to a blank rest, or -c "look-left" option set. So look before -c -c if (ip .eq. 1) go to 2 ! Get out if this is the first note. - if (ip .eq. 1) return ! Get out if this is the first note. - do 3 kkp = ip-1, 1, -1 - if (.not.btest(irest(ivx,kkp),0)) then - levnext = nolev(ivx,kkp)-ncmid(iv,kkp)+4 ! Relative to bottom line - go to 9 - end if -3 continue -c go to 2 ! Pretty odd, should never be here, but get out if so. - return ! Pretty odd, should never be here, but get out if so. -9 continue -c -c Find note in other voice at same time -c - iupdown = sign(1,ivx-nv-1) - ivother = ivmx(iv,(3-iupdown)/2) - tother = 0. - do 5 kkp = 1 , nib(ivother,ibar) - if (abs(tother-tnow) .lt. tol) go to 6 - tother = tother+nodur(ivother,kkp) -5 continue -c -c If here, then no note starts in other voice at same time, so set default -c - levother = -iupdown*50 - go to 7 -6 continue -c -c If here, have just identified a simultaneous note or rest in other voice -c - if (.not.btest(irest(ivother,kkp),0)) then ! Not a rest, use it - levother = nolev(ivother,kkp)-ncmid(iv,ip)+4 - else - if (nodur(ivother,kkp) .eq. nodur(ivx,ip)) then -c -c Rest in other voice has same duration, get out (so defualt spacing is used) -c -c go to 2 - return - end if - levother = -iupdown*50 - end if -7 continue - if (mode.eq.1) then - indxr = log2(nodur(ivx,ip))+1 - else -c nodu = 2**(4-(iand(mult(ivx,ip),15)-8)) - indxr = 4-(iand(mult(ivx,ip),15)-8)+1 - end if - if (iupdown .lt. 0) then - levtop = levtopr(indxr) - iraise1 = levother-levtop-3 ! Based on other note - iraise2 = levnext-levtop ! Based on following note - if (indxr.eq.5 .and. levnext.lt.1) iraise2=iraise2+2 - iraise = min(iraise1,iraise2) - if (mod(iraise+50,2).eq.1 .and. - * iraise+levtop.gt.-1) iraise = iraise-1 - else - levbot = levbotr(indxr) - iraise1 = levother-levbot+3 - iraise2 = levnext-levbot - if (indxr.eq.5 .and. levnext.gt.8) iraise2=iraise2-1 - iraise = max(iraise1,iraise2) - if (mod(iraise+50,2).eq.1 .and. - * iraise+levbot.le.9) iraise = iraise-1 - end if - nolev(ivx,ip) = 100+iraise - return - end - subroutine chklit(lineq,iccount,literr) - character*128 lineq - character*1 charq,chax - literr = 0 - itype = 1 -17 call g1etchar(lineq,iccount,charq) - if (charq .eq. chax(92)) then - itype = itype+1 - if (itype .gt. 3) then - literr = 1 - return - end if - go to 17 - end if - lenlit = itype -18 call g1etchar(lineq,iccount,charq) - if (charq.eq.chax(92)) then - call g1etchar(lineq,iccount,charq) - if (charq .ne. ' ') then -c -c Starting a new tex command withing the string -c - lenlit = lenlit+2 - if (lenlit .gt. 128) then - literr = 2 - return - end if - go to 18 - end if - else - lenlit = lenlit+1 - if (lenlit .gt. 128) then - literr = 2 - return - end if - go to 18 - end if - return - end - subroutine chkpm4ac(lineq,iccount,nacc,moved) -c -c Called after getting +/-/ in a note (not rest). iccount is on the +-<>. -c Sets moved=.true. and sets move parameters in nacc if necc: horiz only (bits -c 10-16) if < or >, horiz and vert (bits 4-9) if two consecutive signed -c numbers. If moved=.true., iccount on exit is on end of last number. -c If moved=.false., iccount still on +/- -c - logical moved,ishorz - character*128 lineq - character*1 durq - if (index('sfnA',lineq(iccount-1:iccount-1)).gt.0 .and. - * index('0123456789.',lineq(iccount+1:iccount+1)).gt.0) then -c -c Prior char was accid & next is #; this may be start of accidental shift. -c Must test for "." above in case we get "<" or ">" -c - ipm = index('- +< >',lineq(iccount:iccount))-2 - if (lineq(iccount+1:iccount+1).eq.'.' .and. - * index('0123456789',lineq(iccount+2:iccount+2)).eq.0) then -c -c Rare case of [accid][+/-].[letter]. Bail out -c - moved = .false. - return - end if - ishorz = ipm .gt. 1 -c -c Save iccount in case it's not accid shift and we have to reset. -c - icsav = iccount - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - if (ishorz .or. index('+-',durq).gt.0) then -c -c This has to be accidental shift. Set vert. shift. -c - if (.not.ishorz) then -c -c +/- syntax, both shifts set, vertical first -c - call setbits(nacc,6,4,int(ipm*fnum+32.5)) - ipm = index('- +',durq)-2 - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - else -c -c syntax, only horiz set -c - ipm = ipm-3 - end if -c -c Set horiz. shift -c - call setbits(nacc,7,10,nint(20*(ipm*fnum+5.35))) - iccount = iccount-1 - moved = .true. - else -c -c False alarm. Reset everything and flow onward -c - moved = .false. - iccount = icsav - end if - else -c -c Either prior char was not 'sfn' or next was not digit, so take no action -c - moved = .false. - end if - return - end - subroutine clefsym(isl,notexq,lnote,nclef) -c -c Returns string calling Don's TeX macro \pmxclef, for drawing small clefs. -c - character*(*) notexq - character*1 chax - nclef = iand(ishft(isl,-12),7) - if (nclef .eq. 0) then -c -c treble -c - nlev = 2 - else if (nclef .gt. 6) then -c -c French violin -c - nlev = 0 - else if (nclef .lt. 5) then -c -c C-clef -c - nlev = 2*nclef-2 - else -c -c F-clef -c - nlev = 2*nclef-6 - end if - notexq = chax(92)//'pmxclef'//chax(48+min(nclef,7)) - * //chax(48+nlev) - lnote = 10 - return - end - subroutine crdacc(nacc,naccid,micrd,nolevm,rmsshift,lasttime, - * levmaxacc,icrdot0,segrb0,ksegrb0,nsegrb0,twooftwo,icashft) -c -c nacc = accidental bitmap for main note -c naccid = # of accid's in chord -c micrd = array with icrd #'s for notes w/ acc's, 0=>main note -c nolevm = level of main note -c segrb(1|2,.) x|y-coord of right-bdry segment -c ksegrb(.) internal use; tells what defined this segment -c -2: Left-shifted notehead -c -1: Original right boundary -c 0: Main note accidental -c icrd: Chord-note accidental -c isetshft(i),i=1,naccid: what set shift for this accid, same codes -c icrdot0 = top-down level-rank of main note among accid-notes -c icrdot(icrd)(27-29) = level rank of chord-note among accid-notes -c twooftwo will be true 2nd time thru; signal to store shifts w/ notes -c - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - real*4 segar(5,2,6),segal(5,2,6),segrb(2,50),segrb0(2,50) - integer*4 nsegar(5),nsegal(5),micrd(10),iacctbl(6),ksegrb(50), - * isetshft(10),ksegrb0(50) - logical lasttime,mainnote,twooftwo - data nsegar / 3,4,3,3,2 /, nsegal / 2,4,3,3,2 / - data segar / -c -c Fancy sharp boundary. fl,sh,na,dfl,dsh -c - * -0.05,-0.38,-0.34,-.05, -.15,-1.4,-2.9,-3.0, -1.4, -1.2, -c * -0.75,-0.20,-0.80, 0. , 0. , .96,-1.04,1.6, 0. , 0. , -c meas value for y, natural is 1.6 - * -0.75,-0.20,-0.80,-.75, 0. , .96,-1.04,1.48, .96, 1.2, - * 0.00,-0.38, 0.00, 0. , 0. ,3.15, 1.64,3.0, 3.15, 0. , - * 0. , 0.00, 0. , 0. , 0. , 0. , 2.90, 0. , 0. , 0. , - * 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , - * 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. / - data segal / -c * 0.00, 0.00,-1.04, 0. , 0. ,3.15, 2.9,-1.6, 0. , 0. , -cc (meas. value is 3.08) ^^^^ -cc Raise top of flat so it interferes with bottom of sharp - * -1.00,-1.02,-0.60,-1.65, -1.2,-1.4,-2.9, -3.0, -1.4, -1.2, - * 0.00,-1.20,-1.04, 0. , 0. ,3.15,-1.64,-1.48,3.15, 1.2, - * 0. ,-1.02, 0.00, 0. , 0. , 0. , 1.04, 3.0, 0. , 0. , - * 0. , 0.00, 0. , 0. , 0. , 0. , 2.9 , 0. , 0. , 0. , - * 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , - * 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. / -c -c iacctbl(i) = internal accid # (1-5) when i=extern accid # (1,2,3,5,6) -c - data iacctbl / 1 , 2 , 3 , 0 , 4 , 5 / -c -c Set up barrier segrb(iseg,ipoint) to define coords of corner points -c on stem+notes -c - do 11 iseg = 1 , nsegrb0 - segrb(1,iseg) = segrb0(1,iseg) - segrb(2,iseg) = segrb0(2,iseg) - ksegrb(iseg) = ksegrb0(iseg) -11 continue - nsegrb = nsegrb0 - rmsshift = 0. - shiftmin = 1000. - do 1 iwa = 1 , naccid -c -c Initialize shift for this note -c - shift = 0. - mainnote = micrd(iwa).eq.0 - isetshft(iwa) = -1 -c -c Get note level and accidental type -c - if (mainnote) then - nolev = nolevm - iacctype = iacctbl(igetbits(nacc,3,0)) - else - nolev = igetbits(icrdat(micrd(iwa)),7,12) - iacctype = iacctbl(igetbits(icrdat(micrd(iwa)),3,20)) - end if -c -c Cycle thru segments on right edge of this accidental -c - do 2 isega = 1 , nsegar(iacctype)-1 - ybotaseg = nolev+segar(iacctype,2,isega) - ytopaseg = nolev+segar(iacctype,2,isega+1) -c -c Cycle thru segments of right-hand barrier -c - do 3 isegrb = 1 , nsegrb-1 -c -c Must find all barrier segments that start below ytopseg & end above ybotseg -c - if (segrb(2,isegrb) .lt. ytopaseg) then -c -c Barrier seg starts below top of accid -c Check if barrier seg ends above bottom of accid -c - if (segrb(2,isegrb+1) .gt. ybotaseg) then - if (shift .gt. - * segrb(1,isegrb)-segar(iacctype,1,isega)) then - shift = segrb(1,isegrb)-segar(iacctype,1,isega) -c -c Record the cause of the shift -c - isetshft(iwa) = ksegrb(isegrb) - end if - end if -c -c Does barrier segment end above top of accid seg? -c - if (segrb(2,isegrb+1) .gt. ytopaseg) go to 4 - end if -3 continue -4 continue -2 continue - if (.not.btest(nacc,28) .and. abs(shift).gt.0.0001 - * .and. .not.lasttime) then -c if (nolev .eq. levmaxacc) then - if (nolev.eq.levmaxacc .and. isetshft(iwa).eq.-1) then - rmsshift = 1000. - return - end if -c -c Does the following properly account for left-shifted noteheads? -c -c Top-down rank of this note we just shifted -c - if (mainnote) then - irank = icrdot0 - else - irank = igetbits(icrdot(micrd(iwa)),3,27) - end if -c -c Compare level-rank of this note vs. that of note that caused the shift. -c This has effect of checking for basic interferences from top down. -c -c ksegrb(.) internal use; tells what defined this segment -c -2: Left-shifted notehead -c -1: Original right boundary -c 0: Main note accidental -c icrd: Chord-note accidental -c isetshft(i),i=1,naccid: what set shift for this accid, same codes -c - if (isetshft(iwa) .lt. 0) then - iranksetter = 0 - else if (isetshft(iwa) .eq. 0) then - iranksetter = icrdot0 - else - iranksetter = igetbits(icrdot(isetshft(iwa)),3,27) - end if - if (iranksetter.ne.0 .and. irank.ne.iranksetter+1) then - rmsshift = 1000. - return - end if - end if - rmsshift = rmsshift+shift**2 - if (lasttime .and. abs(shift).gt..0001) then - if (mainnote) then - if (.not.btest(nacc,29)) go to 10 - else - if (.not.btest(icrdat(micrd(iwa)),29)) go to 10 - end if -c -c If here, "A" was set on a manual shift, so must cumulate the shift. Note that if there -c was a manual shift but auto-shift was zero, will not come thru here, but shift value -c will be left intact. -c - if (mainnote) then - shift = shift+.05*(igetbits(nacc,7,10)-107) - else - shift = shift+.05*(igetbits(icrdot(micrd(iwa)),7,20)-107) - end if -10 continue - if (twooftwo) then -c -c Record the shift for this accidental -c - if (shift .lt. -5.35) then - call printl(' ') - call printl('WARNING: auto-generated accidental '// - * 'shift too big for PMX, ignoring') - else - ishift = nint(20*(shift+5.35)) - if (mainnote) then - call setbits(nacc,7,10,ishift) - else - call setbits(icrdot(micrd(iwa)),7,20,ishift) - end if - end if - else -c -c This is the earlier call to precrd, so need minimum shift -c - shiftmin = min(shiftmin,shift) - end if - end if -c -c Bail out if this is the last accidental to check -c - if (iwa .eq. naccid) go to 1 -c -c Add this accidental to the right barrier! Count down from highest barrier segment, -c find 1st one starting below top of accid, and first one starting below bot. -c - do 5 ibelowtop = nsegrb , 1 , -1 - if (segrb(2,ibelowtop) .lt. - * nolev+segal(iacctype,2,nsegal(iacctype))) then - do 9 ibelowbot = ibelowtop , 1 , -1 - if (segrb(2,ibelowbot) .lt. - * nolev+segal(iacctype,2,1)) go to 6 -9 continue - print*,'Oops2!' - call stop1() - end if -5 continue - print*,'Ugh0! in crdaccs' - call stop1() -6 continue - netgain = nsegal(iacctype)-ibelowtop+ibelowbot -c -c Shift high segments up -c - if (netgain .ge. 0) then - do 7 isegrb = nsegrb , ibelowtop+1 , -1 - segrb(1,isegrb+netgain) = segrb(1,isegrb) - segrb(2,isegrb+netgain) = segrb(2,isegrb) - ksegrb(isegrb+netgain) = ksegrb(isegrb) -7 continue -c -c Set up 1st segment above accid -c - segrb(1,ibelowtop+netgain) = segrb(1,ibelowtop) - segrb(2,ibelowtop+netgain) = - * nolev+segal(iacctype,2,nsegal(iacctype)) - ksegrb(ibelowtop+netgain) = ksegrb(ibelowtop) - else -c -c netgain<0, must remove segments. Use same coding but reverse order, -c work from bottom up -c - segrb(1,ibelowtop+netgain) = segrb(1,ibelowtop) - segrb(2,ibelowtop+netgain) = - * nolev+segal(iacctype,2,nsegal(iacctype)) - ksegrb(ibelowtop+netgain) = ksegrb(ibelowtop) - do 12 isegrb = ibelowtop+1 , nsegrb - segrb(1,isegrb+netgain) = segrb(1,isegrb) - segrb(2,isegrb+netgain) = segrb(2,isegrb) - ksegrb(isegrb+netgain) = ksegrb(isegrb) -12 continue - end if -c -c Insert new segments -c - do 8 isega = 1 , nsegal(iacctype)-1 - segrb(1,ibelowbot+isega) = shift+segal(iacctype,1,isega) - segrb(2,ibelowbot+isega) = nolev+segal(iacctype,2,isega) - if (mainnote) then - ksegrb(ibelowbot+isega) = 0 - else - ksegrb(ibelowbot+isega) = micrd(iwa) - end if -8 continue -c -c Update number of barrier segments -c - nsegrb = nsegrb+netgain -cc -cc Temporary printout for boundary segments as built up -cc -c write(15,'()') -c write(15,'(a/(2f8.2,i5))')' y x kseg', -c * (segrb(2,iseg),segrb(1,iseg),ksegrb(iseg),iseg=1,nsegrb) -c write(15,'(a/(2i5))')' micrd isetshft', -c * (micrd(iwa1),isetshft(iwa1),iwa1=1,iwa) -cc -1 continue ! next accidental - if (lasttime .and. .not.twooftwo) then -c -c This is the final call on the pre-ask pass, so compute left-shift rqmt. -c - icashft = nint(-20*shiftmin) - end if -cc -cc Temporary printout for boundary segments -cc -c if (twooftwo) then -c write(15,'()') -c write(15,'(a/(2f8.2,i5))')' y x kseg', -c * (segrb(2,iseg),segrb(1,iseg),ksegrb(iseg),iseg=1,nsegrb) -c write(15,'(a/(2i5))')' micrd isetshft', -c * (micrd(iwa),isetshft(iwa),iwa=1,naccid) -c end if -cc - return - end - subroutine crdaccs(nacc,ipl,irest,naccid,kicrd,nolevm, - * levmaxacc,levminacc,icrdot0,twooftwo,icashft) -c -c nacc = accidental bitmap for main note -c naccid = # of accid's in chord -c kicrd = array with icrd #'s for notes w/ acc's, 0=>main note -c nolevm = level of main note -c -c This is called once per multi-accidental chord. In here, loop over all -c permutations of the order of accidental as stored in kicrd. Each time thru -c loop, call crdacc once, get rms shift. Only save permutation and rms value -c if it is less than old value. -c - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 -c -c Make consistent? 120106 -c integer*4 kicrd(7),iperm(7),micrd(10),ipermsav(7),ksegrb0(50) - integer*4 kicrd(10),iperm(7),micrd(10),ipermsav(7),ksegrb0(50) - real*4 segrb0(2,50) - logical btest,tagged,manual,lshift,twooftwo -cc -cc Temporary printout of level-rankings -cc -c write(15,'()') -c do 98 iacc = 1 , naccid -c if (kicrd(iacc) .eq. 0) then -c write(15,'(3i5)')nolevm,icrdot0 -c else -c write(15,'(2i5)')igetbits(icrdat(kicrd(iacc)),7,12), -c * igetbits(icrdot(kicrd(iacc)),3,27) -c end if -c98 continue -cc -c -c Initialize right-barrier -c - segrb0(1,1) = 0. - segrb0(2,1) = -1000. - segrb0(1,2) = 0. - segrb0(2,2) = 1000. - nsegrb0 = 2 - ksegrb0(1) = -1 - ksegrb0(2) = -1 -c -c Search for left-shifted notes, Make up the initial right-barrier, which -c will be good for all permutations. -c irest()(27) is set if any notes are left-shifted -c Must use ALL chord notes, not just ones w/ accid's. -c - if (btest(irest,27)) then - do 15 icrd = icrd1-1, icrd2 - if (icrd .eq. icrd1-1) then -c -c Main note -c -c lshift = btest(ipl,8) - lshift = btest(ipl,8) .or. btest(nacc,31) - if (lshift) nolev = nolevm - else -c -c Chord note -c - lshift = btest(icrdat(icrd),23) -c if (lshift) nolev = igetbits(icrdat(icrd),7,12) - if (lshift) then - nolev = igetbits(icrdat(icrd),7,12) - if (btest(nacc,31) .and. nolev.eq.nolevm+1) then -c -c This note is not really shifted, It is the upper of a 2nd with the main -c note on an upstem, and Main note must be shifted. -c nacc(31) signals the real truth. -c - lshift = .false. - end if - end if - end if - if (lshift) then - do 16 isegrb = 1 , nsegrb0-1 - if (segrb0(2,isegrb+1) .gt. nolev-1) then -c -c Add this notehead to the right boundary here. Move all higher segs up 2. -c - do 17 iiseg = nsegrb0 , isegrb+1 , -1 - segrb0(1,iiseg+2) = segrb0(1,iiseg) - segrb0(2,iiseg+2) = segrb0(2,iiseg) - ksegrb0(iiseg+2) = ksegrb0(iiseg) -17 continue - go to 18 - end if -16 continue -18 continue -c -c Insert notehead into list. Set kseg=-2 to signal notehead shift. -c - iiseg = isegrb+1 - segrb0(1,iiseg) = -1.2 - segrb0(2,iiseg) = nolev-1. - ksegrb0(iiseg) = -2 - segrb0(1,iiseg+1) = 0. - segrb0(2,iiseg+1) = nolev+1. - ksegrb0(iiseg+1) = -1 - nsegrb0 = nsegrb0+2 - end if -15 continue - end if -c -c Done setting right barrier for left-shifted noteheads -c - tagged = .false. - manual = .false. -c -c Preprocess to check for manual shifts. -c If are manual main [nacc(10-16)] or chord note [icrdot(20-26)]shifts, then -c If any manual shift is preceded by "A" [nacc(29), icrdat(29)] then -c 1. Auto-shifting proceeds -c 2. "A"-shifts add to autoshifts -c 3. non-"A" shifts are ignored! -c Else (>0 man shifts, none has "A") -c No auto-ordering, No autoshifts, Observe all manual shifts. -c End if -c End if -c - maxmanshft = 0 - do 13 i = 1 , naccid - if (kicrd(i) .eq. 0) then -c -c Main note -c - manshft = igetbits(nacc,7,10) - if (manshft .ne. 0) then - manual = .true. - if (btest(nacc,29)) then - tagged = .true. - else -c maxmanshft = max(maxmanshft,64-manshft) - maxmanshft = max(maxmanshft,107-manshft) - end if - end if - else -c -c Chord note -c - manshft = igetbits(icrdot(kicrd(i)),7,20) - if (manshft .ne. 0) then - manual = .true. - if (btest(icrdat(kicrd(i)),29)) then - tagged = .true. - else -c maxmanshft = max(maxmanshft,64-manshft) - maxmanshft = max(maxmanshft,107-manshft) - end if - end if - end if -13 continue - if (manual) then - if (tagged) then -c -c zero out all untagged shifts -c - do 14 i = 1 , naccid - if (kicrd(i) .eq. 0) then - if (.not.btest(nacc,29)) call setbits (nacc,7,10,0) - else - if (.not.btest(icrdat(kicrd(i)),29)) - * call setbits (icrdot(kicrd(i)),7,20,0) - end if -14 continue - else -c -c There are manual shifts but none tagged. Only proceed if "Ao" was entered -c - if (.not.btest(nacc,28)) then - icashft = maxmanshft - return - end if - end if - end if - if (btest(nacc,28)) then -c -c Take the accidentals in order as originally input, then exit. -c - call crdacc(nacc,naccid,kicrd,nolevm,rmsshift,.true., - * idummy,idummy,segrb0,ksegrb0,nsegrb0,twooftwo,icashft) - return -c end if - else if (naccid .eq. 3) then -c -c Special treatment if 3 accidentals in chord. If there aren't accids on a 2nd -c then place in order top, bottom, middle. -c - do 20 i = 1 , 3 - if (kicrd(i) .eq. 0) then - irank = icrdot0 - nolev = nolevm - else - irank = igetbits(icrdot(kicrd(i)),3,27) - nolev = igetbits(icrdat(kicrd(i)),7,12) - end if - if (irank .eq. 1 ) then - micrd(1) = kicrd(i) - else - micrd(5-irank) = kicrd(i) - end if - if (irank .eq. 2) then - levmidacc = nolev - end if -20 continue - if (levmaxacc.ne.levmidacc+1 .and. - * levmidacc.ne.levminacc+1) then - call crdacc(nacc,naccid,micrd,nolevm,rmsshift,.true., - * idummy,idummy,segrb0,ksegrb0,nsegrb0,twooftwo,icashft) - return - end if - end if - rmsmin = 100000. -c -c Initialize permutation array -c - do 7 i = 1 , naccid - iperm(i) = i -7 continue -c -c Start looping over permutations -c - do 8 ip = 1 , 5041 - if (ip .ne. 1) then -c -c Work the magic algorithm to get the next permutation -c - do 1 k = naccid-1 , 1 , -1 - if (iperm(k) .le. iperm(k+1)) go to 2 -1 continue -c -c If here, we just got the last permutation, so exit the loop over permutations -c - go to 10 -2 continue - do 3 j = naccid , 1 , -1 - if (iperm(k) .le. iperm(j)) go to 4 -3 continue -4 continue - it = iperm(j) - iperm(j) = iperm(k) - iperm(k) = it - is = k+1 - do 5 ir = naccid , 1 , -1 - if (ir .le. is) go to 6 - it = iperm(ir) - iperm(ir) = iperm(is) - iperm(is) = it - is = is+1 -5 continue -6 continue - end if -c -c New we have a permutation. Take icrd values out of kicrd and put them into -c micrd in the order of the permutation -c - do 9 i = 1 , naccid - micrd(i) = kicrd(iperm(i)) -9 continue -cc -cc Temporary printout -cc -c write(15,'(/a6,10i3)')'perm:',(iperm(i),i=1,naccid) -cc - call crdacc(nacc,naccid,micrd,nolevm,rmsshift,.false., - * levmaxacc,icrdot0,segrb0,ksegrb0,nsegrb0,twooftwo,icashft) -cc -cc Temporary printout -cc -c write(15,*)'perm done, rmsshift:',rmsshift -cc - if (rmsshift .lt. rmsmin) then -c -c Save this permutation, reset minrms -c - do 11 i = 1 , naccid - ipermsav(i) = iperm(i) - rmsmin = rmsshift -11 continue - end if -8 continue - print*,'Should not BEEEEEE here!' - call stop1() -10 continue -c -c Done looping, get info for the final choice -c - do 12 i = 1 , naccid - micrd(i) = kicrd(ipermsav(i)) -12 continue -cc -cc Temporary printout -cc -c write(15,'(/a6,10i3)')'Final perm:',(ipermsav(i),i=1,naccid) -cc - call crdacc(nacc,naccid,micrd,nolevm,rmsshift,.true., - * idummy,idummy,segrb0,ksegrb0,nsegrb0,twooftwo,icashft) - return - end - subroutine doacc(ihshft,ivshft,notexq,lnote,nacc,nolev,ncm,caut) - character*1 sq,chax - character*3 acsymq - character*8 noteq - character*79 notexq - logical btest,caut - sq = chax(92) - if (ihshft .eq. -107) ihshft=0 -cc -cc If main note shifted left, so shift accid. Terminate below, when acc. is done. -cc - if (ihshft .ne. 0) then -c -c Accid must be shifted horizontally -c - if (ihshft .lt. 0) then - notexq = sq//'loffset{' - ihshft = -ihshft - else - notexq = sq//'roffset{' - end if - hshft = .05*ihshft - if (hshft .lt. 1.) then - write(notexq(10:12),'(f3.2)')hshft - lnote = 12 - else - write(notexq(10:13),'(f4.2)')hshft - lnote = 13 - end if - notexq = notexq(1:lnote)//'}{'//sq - lnote = lnote+3 - else - notexq = sq - lnote = 1 - end if - if (btest(nacc,3)) then - notexq = notexq(1:lnote)//'big' - lnote = lnote+3 - end if - if (caut) then -c -c Cautionary accidental. Need to define bigcna,... in pmx.tex -c - notexq = notexq(1:lnote)//'c' - lnote = lnote+1 - end if - call accsym(nacc,acsymq,lacc) - notexq = notexq(1:lnote)//acsymq(1:lacc) - lnote = lnote+lacc - noleva = nolev - if (ivshft .ne. 0) noleva = noleva+ivshft-32 - call notefq(noteq,lnoten,noleva,ncm) - if (lnoten .eq. 1) call addblank(noteq,lnoten) - notexq = notexq(1:lnote)//noteq(1:lnoten) - lnote = lnote+lnoten - if (ihshft .ne. 0) then -c -c Terminate horizontal shift -c - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - end if - return - end - subroutine docrd(ivx,ip,nodu,ncm,iv,tnow,soutq,lsout,ulq,ibmcnt, - * islur,nvmx,nv,beamon,nolevm,ihornb,nornb,stemlen, - * dotxtup,nacc,irest) - parameter (nm=24,mv=24576) - integer*4 irest(nm,24) - common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), - * xinsnow,lowdot - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, - * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, - * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, - * rtshfac - integer*2 mmidi,iinsiv - logical restpend,relacc,notmain,twoline,ismidi,crdacc - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - logical lowdot,dotxtup - integer*4 ihornb(nm,24),nornb(nm) - character*1 ulq(nm,9),chax - character*7 nosymq - character*8 noteq - character*79 notexq,outq - character*80 soutq - logical btest,isleft,isright,beamon - character*79 inameq - common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, - * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, - * lnam(nm),inameq(nm) - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans - common /commidisig/ midisig - common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) - * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) - common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), - * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) -c -c This subr. once produced notexq for entire chord. 10/18/97 altered to write -c chord notes as we go. 10/22/97 find range of icrd first. -c 2/25/98 moved rangefinding to precrd so done before slurs, so now -c on entry, icrd1, icrd2 define range of icrd for this chord. -c -c Set counter (for this note) for chord notes present. Set notmain=T. -c Will test for notmain=.true. in addmidi to tell whether to save pitch. -c - nmidcrd = 0 - notmain = .true. - crdacc = .false. - do 5 icrd = icrd1 , icrd2 - lnote = 0 - nolev = igetbits(icrdat(icrd),7,12) -c -c 3/8/03 save original pitch to use in midi, in case 2nds alter things. -c - nolevo = nolev -c -c Check for special situations with 2nds (see precrd). -c - if (btest(nacc,30) .and. nolev.eq.nolevm-1) then -c -c Upstem, 2nd with upper as main, interchange pitches, -c rt-shift upper (now chord note). Lower (orig chord, now main) -c if dotted, probably had shifted dot, dot parameters must be moved -c from chord to main -c - nolev = nolevm - if (btest(icrdat(icrd),26)) then -c -c Orig. chord note dot shift, must transfer to main. -c - icrdotsav = icrdot(icrd) - icrdatsav = icrdat(icrd) - if (btest(irest(ivx,ip),19)) then -c -c Main note (upper) had a dot shift, must move it to chord -c - call setbits(icrdat(icrd),1,26,1) - call setbits(icrdot(icrd),7,0, - * nint(updot(ivx,ndotmv(ivx)+1)*10)+64) - call setbits(icrdot(icrd),7,7, - * nint(rtdot(ivx,ndotmv(ivx)+1)*10)+64) -c -c May need to worry about other chord params (accid shefts etc) later -c - else - icrdat(icrd) = ibclr(icrdat(icrd),26) - end if -c -c We are adding a main note dot shift, so push any later ones back -c - - if (.not.btest(irest(ivx,ip),19)) then - maxdotmv(ivx) = maxdotmv(ivx)+1 - do 1 indm = maxdotmv(ivx) , ndotmv(ivx)+2 , -1 - updot(ivx,indm) = updot(ivx,indm-1) - rtdot(ivx,indm) = rtdot(ivx,indm-1) -1 continue - end if - irest(ivx,ip) = ibset(irest(ivx,ip),19) - updot(ivx,ndotmv(ivx)+1) = 0.1*(iand(127,icrdotsav)-64) - rtdot(ivx,ndotmv(ivx)+1) = - * 0.1*(iand(127,ishft(icrdotsav,-7))-64) - end if - else if (btest(nacc,31) .and. nolev.eq.nolevm+1) then -c -c Downstem, 2nd with lower as main, interchange pitches, -c left-shift lower (now chord note). Lower (orig main, now chord) -c probably had shifted dot, dot parameters must be moved from -c main to chord -c - nolev = nolevm - if (btest(irest(ivx,ip),19)) then - icrdotsav = icrdot(icrd) - icrdatsav = icrdat(icrd) - icrdat(icrd) = ibset(icrdat(icrd),26) -c bits in icrdot -c 0-6 10*abs(vertical dot shift in \internote) + 64 -c 7-13 10*abs(horizontal dot shift in \internote) + 64 -c Assuming >0 for now! - call setbits(icrdot(icrd),7,0, - * nint(updot(ivx,ndotmv(ivx)+1)*10)+64) - call setbits(icrdot(icrd),7,7, - * nint(rtdot(ivx,ndotmv(ivx)+1)*10)+64) -c -c Must also set dot shift for (now) main note (orig. chord note). -c - if (btest(icrdatsav,26)) then - updot(ivx,ndotmv(ivx)+1) = 0.1*(iand(127,icrdotsav)-64) - rtdot(ivx,ndotmv(ivx)+1) = - * 0.1*(iand(127,ishft(icrdotsav,-7))-64) - else -c -c No dot move on original chord (now main) note, -c - updot(ivx,ndotmv(ivx)+1) = 0. - rtdot(ivx,ndotmv(ivx)+1) = 0. - end if - end if - end if -c -c Lower dot for lower-voice notes?. Conditions are: -c 1. Dotted time value -c 2. Lower voice of two -c 3. Note is on a line -c 4. Not a rest (cannot be a rest in a chord!) -c. 5. Flag (lowdot) is set to true -c - if (lowdot .and. nvmx.eq.2 .and. ivx.le.nv) then - if (2**log2(nodu).ne.nodu .and. mod(nolev-ncm,2).eq.0) then - if (btest(icrdat(icrd),26)) then -c -c Note already in movdot list. Drop by 2. -c - call setbits(icrdot(icrd),7,0, - * igetbits(icrdot(icrd),7,0)-20) - else -c -c Not in list so just move it right now -c - call dotmov(-2.,0.,soutq,lsout,igetbits(islur,1,3)) - end if - end if - end if - if (btest(icrdat(icrd),26)) then -c -c Move the dot. Basic call for chord notes, not main note. -c - updotc = 0.1*(iand(127,icrdot(icrd))-64) - rtdotc = 0.1*(iand(127,ishft(icrdot(icrd),-7))-64) - call dotmov(updotc,rtdotc,soutq,lsout,igetbits(islur,1,3)) - end if - isleft = btest(icrdat(icrd),23) - isright = btest(icrdat(icrd),24) -c -c Check for ornament in chord. -c - if (icrdorn(icrd) .gt. 0) then - call putorn(icrdorn(icrd),nolev,nolevm,nodu,nornb,ulq, - * ibmcnt,ivx,ncm,islur,nvmx,nv,ihornb,stemlen,outq,lout, - * ip,0,beamon,.true.) - call addstr(outq,lout,soutq,lsout) - end if -c -c Chord-note symbol. First check for breve -c - if (nodu .eq. 128) then - nosymq = chax(92)//'zbreve' - lsym = 7 - else -c -c Not a breve chord. Get first letters in chord-note symbol -c - if (isleft) then - nosymq = chax(92)//'l' - else if (isright) then - nosymq = chax(92)//'r' - else - nosymq = chax(92)//'z' - end if - if (nodu .ge. 64) then - nosymq = nosymq(1:2)//'w' - else if (nodu .ge. 32) then - nosymq = nosymq(1:2)//'h' - else - nosymq = nosymq(1:2)//'q' - end if - if (2**log2(nodu).eq.nodu .and. .not.dotxtup) then - lsym = 3 - else if (.not.btest(islur,3) .or. dotxtup) then -c -c Single dot -c - nosymq = nosymq(1:3)//'p' - lsym = 4 - else -c -c Double dot -c - nosymq = nosymq(1:3)//'pp' - lsym = 5 - end if - end if - if (btest(icrdat(icrd),19).and..not.btest(icrdat(icrd),27)) then -c -c Accidental and not MIDI-only. Build up bits 0-3 of nacc -c - nactmp = igetbits(icrdat(icrd),3,20) -c -c Kluge for bigness. Only means 'As' has not been issued -c - if (bacfac .ne. 1.e6) nactmp = nactmp+8 - call doacc(igetbits(icrdot(icrd),7,20)-107, - * igetbits(icrdot(icrd),6,14), -c * notexq,lnote,nactmp,nolev,ncmid(iv,ip)) -c Get original nolev, not altered to deal with 2nds - * notexq,lnote,nactmp,igetbits(icrdat(icrd),7,12), -c * ncmid(iv,ip)) - * ncmid(iv,ip),btest(icrdat(icrd),31)) - notexq = notexq(1:lnote)//nosymq - crdacc = .true. - else - notexq = nosymq - end if - lnote = lnote+lsym -c -c Get note name (again if accid, due to possible octave jump) -c - call notefq(noteq,lnoten,nolev,ncm) - if (lnoten.eq.1) call addblank(noteq,lnoten) -c -c Put in note name -c - notexq = notexq(1:lnote)//noteq - lnote = lnote+lnoten - if (btest(icrdat(icrd),25)) then -c -c Arpeggio signal -c - call putarp(tnow,ivx,ip,nolev,ncm,soutq,lsout) - end if - call addstr(notexq,lnote,soutq,lsout) - if (ismidi) then -c -c Here is where we collect MIDI pitch info for the chord note. By checking -c notmain, addmidi(...) knows to just compute the -c pitch number and store it in mcpitch(nmidcrd). Then on call to addmidi() -c for MAIN note, will put in note codes for all chord notes + main note. -c - kv = 1 - if (ivx .gt. iv) kv=2 - nmidcrd = nmidcrd+1 - if (nmidcrd .gt. 20) then - print* - print*,'21 chord notes is too many for midi processor' - call stop1() - end if -c -c Use original saved pitch level, unaltered by 2nds logic. -c - call addmidi(midchan(iv,kv),nolevo+miditran(instno(iv)), - * igetbits(icrdat(icrd),3,20),midisig,1., - * .false.,.false.) - end if -5 continue - notmain = .false. - return - end - subroutine dodyn(ivx,ip,nolev,ncm,ipl,islur,irest,nvmx,nv, - * beamon,ihornb,nornb,ulq,ibmcnt,nostem,soutq,lsout) - parameter (nm=24) -c -c Inputs are array *elements* except ihornb,nornb,ulq -c - common /commus/ musize,whead20 - common /comdyn/ ndyn,idyndat(99),levdsav(nm),ivowg(12),hoh1(12), - * hoh2(12),hoh2h1(2),ntxtdyn,ivxiptxt(41),txtdynq(41), - * idynda2(99),levhssav(nm),listcresc,listdecresc - character*128 txtdynq - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - logical btest,beamon,upstem,nostem - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - logical fontslur,upslur,WrotePsslurDefaults - character*1 udqq,chax,ulq(nm,9) - character*4 dynstrq - character*5 numpq - character*48 dyntablq,tempq - character*79 notexq - character*80 soutq - integer*4 ihornb(nm,24),nornb(nm),idynn(10) - common /comhair/ ihairuse,idhair(nm) - data dyntablq /'ppppppp pp p mp mf f fp sfz ff fff ffff'/ - numdyn = 0 -c -c Find dynamics for (ivx,ip) in list. May be as many as 4. Store idyn values -c in idynn(1...4) -c - do 1 idyn = 1 , ndyn - ivxtent = iand(idyndat(idyn),15) - * +16*igetbits(idynda2(idyn),1,10) - if (ivxtent .eq. ivx) then - iptent = igetbits(idyndat(idyn),8,4) - if (iptent .eq. ip) then - numdyn = numdyn+1 - idynn(numdyn) = idyn - else if (iptent .gt. ip) then -c -c I don't think there are any more possible for this ivx,ip, so exit loop -c - go to 2 - end if - end if -1 continue -2 continue -c -c At this point there is a list of idyn's in idynn(1...numdyn) -c Compute level, and stem-dir'n-based horizontal tweaks -c - hoffsd = 0. -c -c Set upstem to false as default -c - upstem = .false. - if (btest(irest,0)) then -c -c It's a rest. Assume it doesn't go below the staff -c - lbot = ncm-4 - else if (.not.beamon) then - if (udqq(nolev,ncm,islur,nvmx,ivx,nv).eq.'u' .or. nostem) then - upstem = .true. - if (.not.btest(ipl,10)) then - lbot = min(nolev-1,ncm-4) - else - lbot = min(minlev-1,ncm-4) - end if - else - hoffsd = -.5 - if (.not.btest(ipl,10)) then - lbot = min(nolev-7,ncm-4) - else - lbot = min(minlev-7,ncm-4) - end if - end if - else - if (ulq(ivx,ibmcnt) .eq. 'u') then - upstem = .true. - if (.not.btest(ipl,10)) then - lbot = min(nolev-1,ncm-4) - else - lbot = min(minlev-1,ncm-4) - end if - else - hoffsd = -.5 -c -c 171230 Desperation -c lbot = ihornb(ivx,nornb(ivx))+1 - if (nornb(ivx).eq.0) then - lbot = 1 - else - lbot = ihornb(ivx,nornb(ivx))+1 - end if - if (lbot .eq. 1) then -c -c Kluge for non-beamed, down xtup, for which ihorb was never set. -c Assumes stem is shortened. -c - lbot = nolev-5 - end if - nornb(ivx) = nornb(ivx)+1 - end if - end if - lbot = lbot-5 - jtxtdyn1 = 1 -c -c Now ready to loop over current dyn's -c - do 3 icntdyn = 1 , numdyn - idynd = idyndat(idynn(icntdyn)) - idynd2 = idynda2(idynn(icntdyn)) - idno = igetbits(idynd,4,12) -c ivx = iand(15,idynd) - ivx = iand(15,idynd)+16*igetbits(idynd2,1,10) -c -c Build the command into notex in stages. Insert name & rq'd args in order: -c -c Command name -c hpstrt, hpcend, hpdend, pmxdyn -c ivx -c X X X -c level -c X X X -c hoff -c X X X X -c d-mark -c X -c - if (idno .eq. 0) then -c -c Text-dynamic -c - notexq = chax(92)//'txtdyn' - lnote = 7 - else if (idno .le. 12) then -c -c Letter-group -c - notexq = chax(92)//'pmxdyn' - lnote = 7 - else if (fontslur) then - lnote = 7 - if (idno .eq. 13) then -c -c Start a font-based hairpin -c - notexq = chax(92)//'hpstrt' - else if (idno .eq. 14) then -c -c End crescendo -c - notexq = chax(92)//'hpcend' - else -c -c End decrescendo -c - notexq = chax(92)//'hpdend' - end if -c -c Put in voice number as ID for font-based hairpin -c - if (ivx .le. 9) then - notexq = notexq(1:lnote)//char(48+ivx) - lnote = lnote+1 - else if (ivx .le. 19) then - notexq = notexq(1:lnote)//'{1'//char(38+ivx)//'}' - lnote = lnote+4 - else - notexq = notexq(1:lnote)//'{2'//char(28+ivx)//'}' - lnote = lnote+4 - end if - else -c -c Postscript hairpins -c - lnote = 7 - if (idno .eq. 13) then - notexq = chax(92)//'Icresc' - else if (idno .eq.14) then - notexq = chax(92)//'Idecresc' - lnote = 9 - else - notexq = chax(92)//'Tcresc' - end if - if (idno .le. 14) then -c -c Get and record ID no for start of ps hairpin -c Find first unused ID -c - do 8 idh = 1 , 24 - if (.not.btest(ihairuse,idh)) go to 9 -8 continue - call printl('Bad place in putdyn, call Dr. Don') - call stop1() -9 continue - ihairuse = ibset(ihairuse,idh) - idhair(ivx) = idh - else -c -c Unrecord ID no for end of ps hairpin -c - call setbits(ihairuse,1,idhair(ivx),0) - end if -c -c Write ID # for start or end of ps hairpin -c - idh = idhair(ivx) - if (idh .le. 9) then - notexq = notexq(1:lnote)//char(48+idh) - lnote = lnote+1 - else if (idh .le. 19) then - notexq = notexq(1:lnote)//'{1'//char(38+idh)//'}' - lnote = lnote+4 - else - notexq = notexq(1:lnote)//'{2'//char(28+idh)//'}' - lnote = lnote+4 - end if - end if -c -c Begin setting level -c - lbot1 = lbot - if (idno.gt.0 .and. idno.le.5) then -c -c All letters are short so raise a bit. -c - lbot1 = lbot1+1 - else if (idno .ge. 13) then - lbot1 = lbot1+2 - end if -c -c Convert so reference is bottom line -c - lbot1 = lbot1-ncm+4 - if ((fontslur.and.idno.eq.13) .or. - * ((.not.fontslur).and.(idno.eq.13.or.idno.eq.14))) then -c -c Hairpin start. Save level and user-tweak before applying user tweak. -c - levdsav(ivx) = lbot1 - levhssav(ivx) = 0 - if (btest(idynd,16)) levhssav(ivx) = -64+igetbits(idynd,7,17) - else if ((fontslur.and.idno.ge.14) .or. idno.eq.15) then -c -c Hairpin end; Compare level with saved start level before user-tweaks -c - lbot1 = min(lbot1,levdsav(ivx)) -c -c Save pre-tweak level -c - lpretweak = lbot1 - end if -c -c Check for user-defined vertical tweak -c - if (btest(idynd,16)) lbot1 = lbot1-64+igetbits(idynd,7,17) -c -c Now horizontal stuff -c - hoff = hoffsd -c -c Some special horizontal tweaks -c - if (upstem .and. idno.gt.0 .and. - * (idno.le.4 .or. idno.eq.8 .or. idno.eq.9)) hoff = hoff+.4 -c -c User-defined tweaks -c - if (btest(idynd2,0)) - * hoff = hoff+(igetbits(idynd2,9,1)-256)*.1 - if (numdyn .gt. 1) then -c -c Horizontal-interaction-based tweaks. -c -c Cases: -c numdyn type1 type2 type3 data used -c 2 wrd-grp hrpnstrt - ivowg(1...12),hoh1(1...12) -c 2 hrpnend wrd-grp - ivowg,hoh2 -c 2 hrpnend hrpnstrt - hoh2h1(1...2) -c 3 hrpnend wrd-grp hrpnstrt ivowg,hoh2,hoh1 -c - if (idno.gt.0 .and. idno.le.12) then -c -c Word-group, may need vertical tweak to line up. -c - lbot1 = lbot1+ivowg(idno) -c -c Protecting against hp start-stop on same note -c - else if (((fontslur.and.idno.ge.14).or.idno.eq.15) - * .and. icntdyn.lt.numdyn) then -c -c Hairpin ending, check next type -c - if ((fontslur .and. - * igetbits(idyndat(idynn(icntdyn+1)),4,12).eq.13) - * .or. (.not.fontslur .and. - * ((igetbits(idyndat(idynn(icntdyn+1)),4,12).eq.13) - * .or. - * (igetbits(idyndat(idynn(icntdyn+1)),4,12).eq.14)))) - * then -c -c Hairpin end then hairpin start, no words, (remember dealing with end now) -c - hoff = hoff+hoh2h1(1) - else -c -c Hairpin end then word-group, need idno for w-g to set hp offset -c - hoff = hoff + - * hoh2(igetbits(idyndat(idynn(icntdyn+1)),4,12)) - end if -c -c Protecting against hp start-stop on same note -c - else if (icntdyn.gt.1 .and. idno.gt.0 .and. - * ((fontslur.and.idno.lt.14).or. - * (.not.fontslur.and.idno.lt.15))) then -c -c Hairpin start, check prior type -c - if ((fontslur.and. - * igetbits(idyndat(idynn(icntdyn-1)),4,12).ge.14) - * .or. - * (.not.fontslur.and. - * igetbits(idyndat(idynn(icntdyn-1)),4,12).eq.15)) - * then -c -c Hairpin end then hairpin start, (remember dealing with start now) -c - hoff = hoff+hoh2h1(2) - else -c -c Hairpin start after word-group, need idno for w-g to set hp offset -c - hoff = hoff+ - * hoh1(igetbits(idyndat(idynn(icntdyn-1)),4,12)) - end if - end if - end if -c -c End of if-block for 2- or 3-way interactions. -c - if ((.not.fontslur) .and. idno.ge.13) -c -c Slur font and hairpin. Add hoff, and change from \interneote to \qn@width -c - * hoff = (hoff+.5)*6./2.5 -c -c Position corrections all done now. Put in the level. -c - if ((fontslur.and.idno.eq.13) .or. - * ((.not.fontslur).and.(idno.eq.13.or.idno.eq.14))) then -c -c Hairpin start. -c - if (.not.fontslur) then -c -c Postscript hairpin start...inset placeholder for start level. - - notexq = notexq(1:lnote)//'{ }' - lnote = lnote+5 - end if - else -c -c Insert actual level in all cases except hairpin start -c Create string with level in it -c - if (lbot1 .gt. 9) then - numpq = '{' - write(numpq(2:3),'(i2)')lbot1 - numpq = numpq(1:3)//'}' - lnumpq = 4 - else if (lbot1 .gt. -1) then - numpq = char(48+lbot1) - lnumpq = 1 - else if (lbot1 .gt. -10) then - numpq = '{' - write(numpq(2:3),'(i2)')lbot1 - numpq = numpq(1:3)//'}' - lnumpq = 4 - else - numpq = '{' - write(numpq(2:4),'(i3)')lbot1 - numpq = numpq(1:4)//'}' - lnumpq = 5 - end if -c -c Level has now been computed and stored in numpq -c Append the level -c - notexq = notexq(1:lnote)//numpq(1:lnumpq) - lnote = lnote+lnumpq - end if - if (abs(hoff) .lt. .001) then -c -c No horiz offset -c - notexq = notexq(1:lnote)//'0' - lnote = lnote+1 - else -c -c Horizontal tweak -c - lform = lfmt1(hoff) - notexq = notexq(1:lnote)//'{' - lnote = lnote+1 - write(notexq(lnote+1:lnote+lform), - * '(f'//chax(48+lform)//'.1)')hoff - lnote = lnote+lform - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - end if - if (idno .eq. 0) then -c -c text-dynamic. Find the string and append it -c - do 4 jtxtdyn = jtxtdyn1 , ntxtdyn -c ivxip = ivx+16*ip - ivxip = ivx+32*ip - if (ivxip .eq. ivxiptxt(jtxtdyn)) go to 5 -4 continue - call printl('Abnormal stop in putdyn') - call stop1() -5 continue - ltxtdyn = lenstr(txtdynq(jtxtdyn),128) -c -c Font size based on musicsize -c -c if (musize .eq. 20) then -c notexq = notexq(1:lnote)//'{'//char(92)//'medtype' -c * //char(92)//'it ' -c lnote = lnote+13 -c else if (musize .eq. 16) then -c notexq = notexq(1:lnote)//'{'//char(92)//'normtype' -c * //char(92)//'it ' -c lnote = lnote+14 -c else if (musize .eq. 24) then -c notexq = notexq(1:lnote)//'{'//char(92)//'bigtype' -c * //char(92)//'it ' -c lnote = lnote+13 -c else if (musize .eq. 29) then -c notexq = notexq(1:lnote)//'{'//char(92)//'Bigtype' -c * //char(92)//'it ' -c lnote = lnote+13 -c end if -c -c Do this to insert 1st 2 args of \txtdyn, allow 3rd to be longer (on next line) -c - call addstr(notexq(1:lnote),lnote,soutq,lsout) - if (musize .eq. 20) then - notexq = '{'//char(92)//'medtype'//char(92)//'it ' - lnote = 13 - else if (musize .eq. 16) then - notexq = '{'//char(92)//'normtype'//char(92)//'it ' - lnote = 14 - else if (musize .eq. 24) then - notexq = '{'//char(92)//'bigtype'//char(92)//'it ' - lnote = 13 - else if (musize .eq. 29) then - notexq = '{'//char(92)//'Bigtype'//char(92)//'it ' - lnote = 13 - end if -c - notexq = notexq(1:lnote)//txtdynq(jtxtdyn)(1:ltxtdyn)//'}' - lnote = lnote+ltxtdyn+1 -c -c Reset jtxtdyn1 just in case >1 txtdyn on same note. -c - jtxtdyn1 = jtxtdyn+1 - else if (idno .le. 12) then -c -c Letter-group dynamic. Append the letter-group command -c - id = 4*idno - dynstrq = dyntablq(id-3:id) - id = lenstr(dynstrq,4) - notexq = notexq(1:lnote)//chax(92)//dynstrq(1:id) - lnote = lnote+1+id - end if - call addstr(notexq(1:lnote),lnote,soutq,lsout) - if ((.not.fontslur).and.idno.eq.15) then -c -c PS slurs on, hairpin is ending. Go back and set height at beginning. -c Add user-defined tweak to default level -c - lbot1 = lpretweak+levhssav(ivx) - if (lbot1 .gt. 9) then - numpq = '{' - write(numpq(2:3),'(i2)')lbot1 - numpq = numpq(1:3)//'}' - lnumpq = 4 - else if (lbot1 .gt. -1) then - numpq = char(48+lbot1) - lnumpq = 1 - else if (lbot1 .gt. -10) then - numpq = '{' - write(numpq(2:3),'(i2)')lbot1 - numpq = numpq(1:3)//'}' - lnumpq = 4 - else - numpq = '{' - write(numpq(2:4),'(i3)')lbot1 - numpq = numpq(1:4)//'}' - lnumpq = 5 - end if -c -c Construct string to search backwards for placeholder -c - if (idh .le. 9) then - tempq = 'cresc'//char(48+idh)//'{ }' - ltemp = 11 - else if (idh .le. 19) then - tempq = 'cresc'//'{1'//char(38+idh)//'}{ }' - ltemp = 14 - else - tempq = 'cresc'//'{2'//char(28+idh)//'}{ }' - ltemp = 14 - end if - write(11,'(a)')soutq(1:lsout)//'%' - lsout = 0 - call backfill(11,tempq,ltemp, - * tempq(1:ltemp-5)//numpq(1:lnumpq),ltemp-5+lnumpq) - end if -3 continue -c -c Shrink arrays, decrease ndyn 111109 -c - do 6 icntdyn = numdyn, 1 , -1 - do 7 jdyn = idynn(icntdyn) , ndyn-1 - idyndat(jdyn) = idyndat(jdyn+1) - idynda2(jdyn) = idynda2(jdyn+1) -7 continue - ndyn = ndyn-1 -6 continue - end - subroutine dograce(ivx,ip,ptgr,soutq,lsout,ncm,nacc,ig,ipl, - * farend, - * beamon,nolev,ncmidx,islur,nvmx,nv,ibmcnt,tnote,ulq,instno) -c -c ip will be one LESS than current note, for way-after's before bar-end, -c It is only used to find ig. -c ig is returned to makeabar in case there's a slur that needs to be ended -c - parameter (nm=24) - logical beamon,stemup - common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, - * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, - * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, - * graspace(37), - * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), - * naccg(74),voltxtq(6),litq(83) - common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, - * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, - * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, - * rtshfac - common /comask/ bar1syst,fixednew,scaldold, - * wheadpt,fbar,poenom - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - common /comoct/ noctup - logical upg,slurg,slashg,bar1syst,upslur,btest,isgaft,iswaft, - * normsp,farend,fontslur,WrotePsslurDefaults - real*4 ptgr(37) - character*80 soutq - character*128 litq - character*79 notexq - character*20 voltxtq - character*10 figq - character*8 noteq,noteqGA - character*3 acsymq - character*1 sq,chax,udqq,ulq(nm,9) - common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), - * fullsize(nm),ivxfig2,ivvfig(2,74) - sq = chax(92) - isgaft = btest(ipl,29) - iswaft = btest(ipl,31) - normsp = .not. isgaft -c -c Find ig. -c - do 120 ig = 1 , ngrace - if (ipg(ig).eq.ip .and. ivg(ig).eq.ivx) go to 121 -120 continue - print*,'Problem finding grace index in dograce' - stop -121 continue - ngs = ngstrt(ig) - mg = multg(ig) -c wheadpt1 = wheadpt*fullsize(ivx) - wheadpt1 = wheadpt*fullsize(instno) -c -c For way-after-graces at end of bar, must set the octave. -c - if (farend) then - noctup = 0 - if (ncm .eq.23) noctup = -2 - end if - if (slurg(ig) .and. .not.iswaft .and..not.isgaft) then - if (listslur .eq. 16777215) then - print* - print*,'You defined the twentyfifth slur, one too many!' - write(15,'(/,a)') - * 'You defined the twentyfifth slur, one too many!' - call stop1() - end if -c -c Slur on fore-grace. Get index of next slur not in use, from 23 down. -c - ndxslur = log2(16777215-listslur) - - end if - if (nng(ig) .eq. 1) then -c -c Single grace. -c - if (normsp) then -c -c Anything but GA -c - call addstr(sq//'shlft',6,soutq,lsout) - niptgr = nint(ptgr(ig)) -c -c Empirical tweak for postscript. -c -C if (.not.fontslur) niptgr = niptgr+nint(wheadpt*.3) -c++ - if (niptgr .lt. 10) then - call addstr(chax(48+niptgr)//'{',2,soutq,lsout) - else if (niptgr .lt. 100) then - write(notexq(1:2),'(i2)')niptgr - call addstr('{'//notexq(1:2)//'}{',5,soutq,lsout) - else - print*, - * 'Call Dr. Don if you really want grace note group > 99 pt' - stop - end if - else - call addstr(sq//'gaft{1.5}{',11,soutq,lsout) -c -c GA. Compute aftshft, for later use. -c - aftshft = grafac - if (naccg(ngstrt(ig)).gt.0) aftshft = aftshft+agc1fac - aftshft = aftshft*wheadpt - end if - if (slurg(ig) .and. .not.isgaft .and..not.iswaft) then -c -c Start slur on pre-grace. No accounting needed since will be ended very soon. -c - call notefq(noteq,lnoten,nolevg(ngs),ncm) - if (fontslur) then - if (upg(ig)) then - call addstr(sq//'islurd',7,soutq,lsout) - else - call addstr(sq//'isluru',7,soutq,lsout) - end if - else -c -c Start Postscript slur. -c - if (upg(ig)) then - call addstr(sq//'isd',4,soutq,lsout) - else - call addstr(sq//'isu',4,soutq,lsout) - end if - end if -c -c Print slur number, 23-ndxslur -c - lnote = 0 - if (23-ndxslur .lt. 10) then -c notexq = notexq(1:lnote)//chax(59-ndxslur) - notexq = chax(71-ndxslur) - lnote = 1 - else if (23-ndxslur .lt. 20) then -c notexq = notexq(1:lnote)//'{1'//chax(49-ndxslur)//'}' - notexq = '{1'//chax(61-ndxslur)//'}' - lnote = 4 - else - notexq = notexq(1:lnote)//'{2'//chax(51-ndxslur)//'}' - lnote = 4 - end if - call addstr(notexq(1:lnote)//noteq(1:lnoten), - * lnote+lnoten,soutq,lsout) - if (.not.fontslur) then -c -c Horizontal tweaks for postscript slur on single grace -c - stemup = .true. - if (upg(ig)) then -c -c Check for up-grace + down stem. Get stem direction -c - if (.not.beamon) then -c -c Separate note. Get stem direction. -c - stemup = udqq(nolev,ncmidx, - * islur,nvmx,ivx,nv) .eq. 'u' - else -c -c In a beam -c - stemup = ulq(ivx,ibmcnt) .eq. 'u' - end if -c -c Stop the shift if whole note -c - stemup = stemup .or. tnote.gt.63 - end if - if (stemup) then - call addstr('{-.3}',5,soutq,lsout) - else - call addstr('{-.8}',5,soutq,lsout) - end if - end if - end if - if (naccg(ngs) .gt. 0) then - call notefq(noteq,lnoten,nolevg(ngs),ncm) -c -c Save for checking octave shifts in GA -c - if (isgaft) then - lnotenGA = lnoten - noteqGA = noteq - end if -c - if (lnoten .eq. 1) call addblank(noteq,lnoten) - call accsym(naccg(ngs),acsymq,lacc) - call addstr(sq//'big'//acsymq(1:lacc)// - * noteq(1:lnoten),4+lacc+lnoten,soutq,lsout) - end if - if (slashg(ig)) then - notexq = sq//'grc' - lnote = 4 - else if (mg .eq. 0) then - notexq = sq//'zq' - lnote = 3 - else - notexq = sq//'zc' - do 61 i = 2 , mg - notexq = notexq(1:i+1)//'c' -61 continue - lnote = mg+2 - end if - if (upg(ig)) then - notexq = notexq(1:lnote)//'u' - else - notexq = notexq(1:lnote)//'l' - end if - call addstr(notexq,lnote+1,soutq,lsout) - call notefq(noteq,lnoten,nolevg(ngs),ncm) -c - if (isgaft .and. naccg(ngs).eq.0) then - lnotenGA = lnoten - noteqGA = noteq - end if -c - if (lnoten .eq. 1) call addblank(noteq,lnoten) - call addstr(noteq,lnoten,soutq,lsout) - if (slashg(ig)) call addstr(sq//'off{-'//sq// - * 'noteskip}',16,soutq,lsout) -c -c Above code needed since slashg causes spacing -c - if (slurg(ig) .and. (iswaft.or.isgaft)) then -c -c Terminate slur on single after-grace -c - ndxslur = igetbits(ipl,5,23) - call notefq(noteq,lnoten,nolevg(ngs),ncm) - call addstr(sq//'tslur',6,soutq,lsout) -c -c Print 24-ndxslur -c -c if (11-ndxslur .lt. 10) then - if (23-ndxslur .lt. 10) then -c call addstr(chax(59-ndxslur)//noteq(1:lnoten), - call addstr(chax(71-ndxslur)//noteq(1:lnoten), - * 1+lnoten,soutq,lsout) - else if (23-ndxslur .lt. 20) then - call addstr('{2'//chax(61-ndxslur)//'}'//noteq(1:lnoten), - * 4+lnoten,soutq,lsout) - else -c call addstr('{1'//chax(49-ndxslur)//'}'//noteq(1:lnoten), - call addstr('{1'//chax(51-ndxslur)//'}'//noteq(1:lnoten), - * 4+lnoten,soutq,lsout) - end if - slurg(ig) = .false. - listslur = ibclr(listslur,ndxslur) - end if - call addstr('}',1,soutq,lsout) -c -c+++ Try to fix loss of octave with single gaft -c - if (isgaft) then - itrans = 0 - do 1 i = 1 , lnotenGA - if (noteqGA(i:i) .eq. chax(39)) then - itrans = itrans+7 - else if (noteqGA(i:i) .eq. chax(96)) then - itrans = itrans-7 - end if -1 continue - if (itrans. eq. -14) then - call addstr(sq//'advance'//sq//'transpose-14',21, - * soutq,lsout) - else if (itrans .eq. -7) then - call addstr(sq//'advance'//sq//'transpose-7',20, - * soutq,lsout) - else if (itrans .eq. 7) then - call addstr(sq//'advance'//sq//'transpose7',19, - * soutq,lsout) - else if (itrans .eq. 14) then - call addstr(sq//'advance'//sq//'transpose14',20, - * soutq,lsout) - end if - end if - else -c -c Multiple grace. Put in literally. Compute beam stuff -c - sumx = 0. - sumy = 0. - sumxy = 0. - sumxx = 0. - sumyy = 0. - x = 0. - do 118 ing = ngs , ngs+nng(ig)-1 - if (ing.gt.ngs .and. naccg(ing).gt.0) x = x+acgfac - y = nolevg(ing) - sumx = sumx + x - sumy = sumy + y - sumxy = sumxy + x*y - sumxx = sumxx + x*x - sumyy = sumyy + y*y - x = x+emgfac -118 continue - delta = nng(ig)*sumxx-sumx*sumx - em = (nng(ig)*sumxy-sumx*sumy)/delta - islope = nint(0.5*em*gslfac) - if (iabs(islope) .gt. 9) islope = isign(9,islope) - beta = (sumy-islope/gslfac*sumx)/nng(ig) - nolev1 = nint(beta) -c -c Back up -c - notexq = sq//'settiny'//sq//'off{' - if (normsp) then - write(notexq(14:18),'(a1,f4.1)')'-',ptgr(ig) - call addstr(notexq(1:18)//'pt}',21,soutq,lsout) - finalshift = ptgr(ig) - else - aftshft = wheadpt*1.33 - if (naccg(ngstrt(ig)).gt.0) aftshft = aftshft+wheadpt*0.5 - write(notexq(14:17),'(f4.1)')aftshft - call addstr(notexq(1:17)//'pt}'//sq//'bsk',24,soutq,lsout) - end if -c -c Start the beam -c - notexq = sq//'ib' - do 119 ing = 2 , mg - notexq = notexq(1:ing+1)//'b' -119 continue - if (upg(ig)) then - notexq = notexq(1:mg+2)//'u' - else - notexq = notexq(1:mg+2)//'l' - end if - notexq = notexq(1:mg+3)//'0' -c -c Get starting note for beam -c - call notefq(noteq,lnoten,nolev1,ncm) - call addstr(notexq(1:mg+4)//noteq(1:lnoten), - * mg+4+lnoten,soutq,lsout) -c -c Put in the slope -c - if (islope .ge. 0) then - call addstr(chax(48+islope),1,soutq,lsout) - else - call addstr('{-'//chax(48-islope)//'}',4,soutq,lsout) - end if -c -c Start a slur on multiple fore-grace -c - if (slurg(ig) .and. .not.isgaft .and. .not.iswaft) then - call notefq(noteq,lnoten,nolevg(ngs),ncm) - if (fontslur) then - if (upg(ig)) then - call addstr(sq//'islurd',7,soutq,lsout) - else - call addstr(sq//'isluru',7,soutq,lsout) - end if - else -c -c Need a tweak for postscript slur -c - if (upg(ig)) then - call addstr(sq//'isd',4,soutq,lsout) - else - call addstr(sq//'isu',4,soutq,lsout) - end if - end if -c -c Print 23-ndxslur -c - if (23-ndxslur .lt. 10) then - call addstr(chax(71-ndxslur)//noteq(1:lnoten),1+lnoten, - * soutq,lsout) - else if (23-ndxslur .lt. 2) then - call addstr('{1'//chax(61-ndxslur)//'}'//noteq(1:lnoten), - * 4+lnoten,soutq,lsout) - else - call addstr('{1'//chax(51-ndxslur)//'}'//noteq(1:lnoten), - * 4+lnoten,soutq,lsout) - end if -c -c Put in tweak for postscript slur -c - if (.not.fontslur) call addstr('{-.3}',5,soutq,lsout) - end if -c -c Put in first note. Call notefq again in case octave changed -c - call notefq(noteq,lnoten,nolevg(ngs),ncm) - if (naccg(ngs) .eq. 0) then - notexq = sq//'zqb0'//noteq(1:lnoten) - lnote = 5+lnoten - else - if (lnoten .eq. 1) call addblank(noteq,lnoten) - call accsym(naccg(ngs),acsymq,lacc) - notexq = sq//'big'//acsymq(1:lacc)//noteq(1:lnoten) - lnote = 4+lacc+lnoten - call notefq(noteq,lnoten,nolevg(ngs),ncm) - notexq =notexq(1:lnote)//sq//'zqb0'//noteq(1:lnoten) - lnote = lnote+5+lnoten - end if - call addstr(notexq,lnote,soutq,lsout) - do 127 ing = ngs+1 , ngs+nng(ig)-1 -c -c Skip -c - ptoff = wheadpt1*emgfac - if (naccg(ing).gt.0) ptoff = ptoff+wheadpt1*acgfac - if (isgaft .and. .not.iswaft) aftshft = aftshft+ptoff - notexq = sq//'off{' - write(notexq(6:8),'(f3.1)')ptoff - if (normsp) finalshift = finalshift-ptoff - call addstr(notexq(1:8)//'pt}',11,soutq,lsout) - if (ing .eq. ngs+nng(ig)-1) then -c -c Terminate beam if needed -c - if (upg(ig)) then - call addstr(sq//'tbu0',5,soutq,lsout) - else - call addstr(sq//'tbl0',5,soutq,lsout) - end if -c -c Terminate after slur if needed -c - if ((isgaft.or.iswaft) .and. slurg(ig)) then -c if (iswaft) ndxslur = igetbits(ipl,4,23) - if (iswaft) ndxslur = igetbits(ipl,5,23) - call notefq(noteq,lnoten,nolevg(ing),ncm) - call addstr(sq//'tslur',6,soutq,lsout) -c -c Print 11-ndxslur -cc Print 23-ndxslur -c - if (23-ndxslur .lt. 10) then - call addstr(chax(71-ndxslur)//noteq(1:lnoten), - * 1+lnoten,soutq,lsout) - else if (23-ndxslur .lt. 20) then - call addstr('{2'//chax(61-ndxslur)//'}' - * //noteq(1:lnoten),4+lnoten,soutq,lsout) - else - call addstr('{1'//chax(51-ndxslur)//'}' - * //noteq(1:lnoten),4+lnoten,soutq,lsout) - end if -c -c Stop slur terminator after exit from this subroutine -c - listslur = ibclr(listslur,ndxslur) - slurg(ig) = .false. - end if - end if -c -c Accidental if needed -c - if (naccg(ing).gt.0) then - call notefq(noteq,lnoten,nolevg(ing),ncm) - if (lnoten .eq. 1) call addblank(noteq,lnoten) - call accsym(naccg(ing),acsymq,lacc) - call addstr(sq//'big'//acsymq(1:lacc) - * //noteq(1:lnoten),4+lacc+lnoten,soutq,lsout) - end if -c -c Put in the (beamed) grace note -c - call notefq(noteq,lnoten,nolevg(ing),ncm) - call addstr(sq//'zqb0'//noteq(1:lnoten),5+lnoten, - * soutq,lsout) -127 continue -c -c Terminate the grace -c -c notexq = sq//'normalnotesize'//sq//'off{' -c lnote = 20 -c notexq = '}'//sq//'off{' -c lnote = 6 - notexq = sq//'off{' - lnote = 5 - ptoff = wheadpt*emgfac - if (iand(nacc,3).gt.0 .and. .not.btest(nacc,17)) - * ptoff = ptoff+wheadpt*accfac - if (isgaft .and. .not.iswaft) then - notexq = notexq(1:5)//'-' - lnote = 6 - ptoff = aftshft - end if - if (normsp) ptoff = finalshift - if (ptoff .lt. 9.95) then - write(notexq(lnote+1:lnote+3),'(f3.1)')ptoff - lnote = lnote+3 - else if (ptoff .lt. 99.95) then - write(notexq(lnote+1:lnote+4),'(f4.1)')ptoff - lnote = lnote+4 - else - write(notexq(lnote+1:lnote+5),'(f5.1)')ptoff - lnote = lnote+5 - end if - call addstr(notexq(1:lnote)//'pt}',lnote+3,soutq,lsout) - if (isgaft.and..not.iswaft) call addstr(sq//'sk',3,soutq,lsout) - call addstr(sq//'resetsize',10,soutq,lsout) - end if - return - end - subroutine dopsslur(nolev,isdat1,isdat2,isdat3,isdat4,nsdat,ip, - * iv,kv,nv,beamon,ncm,soutq,lsout,ulq,islur, - * ipl,iornq,islhgt,tno,nacc) -c -c Called once per main note. -c 12 May 2002 Create this subroutine to isolate postscript slurs/ties. -c Always set \Nosluradjust\Notieadjust -c - parameter (nm=24,mv=24576) - integer*4 isdat1(202),isdat2(202),isdat3(202),isdat4(202) - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - common /comsln/ is1n1,is2n1,irzbnd,isnx - character*1 ulq,slurudq,udfq,udqq,chax - character*79 notexq - character*8 noteq - character*80 soutq - logical upslur,beamon,btest,stemup,iscrd, - * settie,fontslur,pstie,WrotePsslurDefaults - logical slmon,dbltie - common /comslm/ levson(0:nm),levsoff(0:nm),imidso(0:nm), - * naccbl(0:nm),laccbl(0:nm,10),jaccbl(0:nm,10),nusebl, - * slmon(0:nm),dbltie - integer*2 mmidi,iinsiv - logical restpend,relacc,notmain,twoline,ismidi,crdacc - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans -c 130316 - common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) - * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) -c -c Bits in isdat1: -c 13-17 iv -c 3-10 ip -c 11 start/stop switch -c 12 kv-1 -c 19-25 ichar(code$) -c 26 force direction? - -c 27 forced dir'n = up if on, set in sslur; also -c final direction, set in doslur when beam is started, used on term. -c 28-31 mod(ndxslur,16), set in doslur when slur is started, used on term. -c 18 int(ndxslur/16), ditto. So this allows ndxslur>15. -c 2 stem slur flag -c 1 flag for "x" slur (voice-independent) -c -c Bits in isdat2 -c 0 Chord switch. Not set on main note. -c 1-2 left/right notehead shift. Set only for chord note. -c 3 tie positioning -c 4 dotted flag -c 6-11 voff1 1-63 => -31...+31 -c 12-18 hoff1 1-127 => -6.3...+6.3 -c 19-25 nolev -c 26 \sluradjust (p+s) -c 27 \nosluradjust (p-s) -c 28 \tieadjust (p+t) -c 29 \notieadjust (p-t) -c -c Bits in isdat3: Only used for slur endings -c 0 set if midslur (at least one argument) -c 1 set if curve (2 more args) -c 2-7 32+first arg (height correction) (1st arg may be negative) -c 8-10 second arg (initial slope) -c 11-13 third arg (closing slope) -c 14-21 tie level for use in LineBreakTies -c 22-29 ncm for use in LineBreakTies -c -c Bits in isdat4 Only used for linebreak slurs -c 0-5 Linebreak seg 1 voff 1-63 => -31...+31 -c 6-12 Linebreak seg 1 hoff 1-127 => -6.3...+6.3 -c 16-21 Linebreak seg 2 voff 1-63 => -31...+31 -c 22-28 Linebreak seg 2 hoff 1-127 => -6.3...+6.3 -c -c In listslur bit ib is on if slur index ib is in use, ib=0-13. -c ndxslur = slur index -c Height of slur is nole+ivoff+iupdn. iupdn is +/-1 if t&s slurs on same note, -c s-slur is blank (idcode=32), t-slur is idcode=1. -c ivoff is user-defined shift or shift due to . or _ , or chord adjustment. -c Ivoff will be set for ./_ only if no user-defined shift is specified. -c If highest note has upslur, save slur height in islhgt in case -c ornament must be moved. -c - islhgt = 0 - if (beamon) then - stemup = ulq .eq. 'u' - else if (nvmx(iv) .eq. 2) then - if (.not.btest(islur,30)) then -c -c Single note, 2 lines of music, stem direction not forced -c - stemup = ivx .gt. nv - else - stemup = btest(islur,17) - end if - else - stemup = udqq(nolev,ncm,islur,nvmx(iv),ivx,nv) .eq. 'u' - end if - iscrd = btest(ipl,10) - if (ismidi) then - settie = .false. - dbltie = .false. - end if - do 1 isdat = 1 , nsdat - isdata = isdat1(isdat) - if (iv .eq. igetbits(isdata,5,13) .and. - * ip .eq. igetbits(isdata,8,3) .and. -c * kv .eq. igetbits(isdata,1,12)+1) then - * (kv .eq. igetbits(isdata,1,12)+1 .or. - * btest(isdata,1))) then -c -c Since iv and kv match, ivx will be correct -c - idcode = igetbits(isdata,7,19) - ivoff = igetbits(isdat2(isdat),6,6)-32 - ihoff = igetbits(isdat2(isdat),7,12)-64 - iupdn = 0 - slurudq = 'd' - nolevs = igetbits(isdat2(isdat),7,19) - pstie = btest(isdat2(isdat),3) .or. idcode.eq.1 - if (btest(isdata,11)) then -c -c Turnon -c Get slur direction -c - if (btest(isdata,26)) then -c -c Force slur direction -c - if (btest(isdata,27)) slurudq = 'u' - else if (nvmx(iv) .eq. 1) then -c -c Only one voice per line -c - if (.not.beamon) then -c -c Separate note. -c - slurudq = udfq(nolev,ncm) - else -c -c In a beam -c - if (ulq .ne. 'u') slurudq = 'u' - end if - if (iscrd) then - if (nolevs .gt. ncm) then - slurudq = 'u' - else - slurudq = 'd' - end if - end if - else -c -c Two voices per line. Get default -c - if (ivx .gt. nv) slurudq = 'u' -c -c Upper voice of the two, so up slur -c - end if - if (btest(isdata,2)) then -c -c ADjust for stem slur. ASSUME this is the ONLY pos'n adjustment. -c - if (stemup) then - slurudq = 'u' - ivoff = ivoff+4 - else - slurudq = 'd' - ivoff = ivoff-4 - end if - end if -c -c Set level for slur starting on rest -c - if (nolevs.eq.0 .or. nolevs.gt.60) then - if (slurudq .eq. 'u') then - nolevs = ncm+2 - else - nolevs = ncm-2 - end if - end if -c -c Save up/down-ness for use at termination -c - if (slurudq .eq. 'u') isdata = ibset(isdata,27) -c -c End of section for setting slur direction, still in "Turnon" if-block. -c - if (btest(iornq,11).or.btest(iornq,12)) then -c -c Raise or lower slur by one unit provided . or _ is on same side as slur -c - ivoffinc = 0 - if ((stemup .and. slurudq.eq.'d') .or. - * (.not.stemup .and. slurudq.eq.'u')) then -c -c Must move the slur for _ or . -c - if (stemup) then - ivoffinc = -1 - else - ivoffinc = 1 - end if - if (((stemup .and. nolev.ge.ncm-2) .or. - * (.not.stemup .and. nolev.le.ncm+2)) .and. - * mod(abs(ncm-nolev),2).eq.0) ivoffinc = 2*ivoffinc - ivoff = ivoff+ivoffinc - end if - end if - if (listslur .eq. 16777215) then - print* - print*,'You1 defined the twentyfifth slur, one too many!' - write(15,'(/,a)') - * 'You defined the twentyfifth slur, one too many!' - call stop1() - end if -c -c Get index of next slur not in use, starting from 12 down -c - ndxslur = log2(16777215-listslur) -c -c Record slur index -c - listslur = ibset(listslur,ndxslur) -c -c Save for use on termination -c -c call setbits(isdata,4,28,ndxslur) -c 080531 Allow >16 slurs - call setbits(isdata,4,28,mod(ndxslur,16)) - call setbits(isdata,1,18,ndxslur/16) -c -c Shift for stem? -c - if (stemup .and. slurudq.eq.'u' .and. tno.lt.63.) then - if (.not.pstie) then - ihoff = ihoff+8 - else - ihoff = ihoff+2 - end if - end if - if (iscrd) then -c -c Additional horiz shifts for h-shifted noteheads? -c - if (btest(isdat2(isdat),1)) then -c -c Slur start on left-shifted chord notehead. ASSUME downstem. -c - if (nolevs.eq.minlev .and. slurudq.eq.'d') then - ihoff = ihoff-2 - else - ihoff = ihoff-10 - end if - else if (btest(isdat2(isdat),2)) then -c -c Right shifted chord notehead. ASSUME upstem. -c - if (nolevs.eq.maxlev .and. slurudq.eq.'u') then - ihoff = ihoff+2 - else - ihoff = ihoff+10 - end if - end if - end if - notexq = chax(92) - lnote = 1 -c -c Check for local adjustment default changes -c - if (btest(isdat2(isdat),26)) then - notexq = chax(92)//'sluradjust'//chax(92) - lnote = 12 - else if (btest(isdat2(isdat),27)) then - notexq = chax(92)//'nosluradjust'//chax(92) - lnote = 14 - else if (btest(isdat2(isdat),28)) then - notexq = chax(92)//'tieadjust'//chax(92) - lnote = 11 - else if (btest(isdat2(isdat),29)) then - notexq = chax(92)//'notieadjust'//chax(92) - lnote = 13 - end if - if (ihoff .eq. 0) then -c -c Write stuff for non-shifted start -c - notexq = notexq(1:lnote)//'islur'//slurudq - lnote = lnote+6 - else - notexq = notexq(1:lnote)//'is'//slurudq - lnote = lnote+3 - end if -c -c Prepend postscript tie switch -c - if (pstie) then - notexq = chax(92)//'tieforis'//slurudq//notexq(1:lnote) - lnote = lnote+10 - end if - if (btest(isdat2(isdat),4)) then -c -c Dotted slur -c -c noteq = notexq -c notexq = chax(92)//'dotted'//noteq - notexq = chax(92)//'dotted'//notexq(1:lnote) - lnote = lnote+7 - end if -c -c Add slur index to string -c Print 23-ndxslur -c - if (23-ndxslur .lt. 10) then -c -c 5/25/08 Allow 24 slurs -c - notexq = notexq(1:lnote)//chax(71-ndxslur) - lnote = lnote+1 - else if (23-ndxslur .lt. 20) then - notexq = notexq(1:lnote)//'{1'//chax(61-ndxslur)//'}' - lnote = lnote+4 - else - notexq = notexq(1:lnote)//'{2'//chax(51-ndxslur)//'}' - lnote = lnote+4 - end if -c -c Add note name to string -c - islhgt = nolevs+iupdn+ivoff - call notefq(noteq,lnoten,islhgt,ncm) - notexq = notexq(1:lnote)//noteq(1:lnoten) - lnote = lnote+lnoten -c -c Store height and staff mid level for use with LineBreakTies -c - call setbits(isdat3(isdat),8,14,islhgt) - call setbits(isdat3(isdat),8,22,ncm) -c -c Save height (for ornament and barnobox interference) if topmost slur is up -c - if (slurudq.eq.'u' .and. - * (.not.btest(isdat2(isdat),0).or.nolevs.eq.maxlev)) then - islhgt = nolevs+iupdn+ivoff -c -c Save height & idcode if top voice and slur start -c - if (ivx.eq.ivmx(nv,nvmx(nv)) .and. islhgt.gt.is1n1) then - is1n1 = islhgt - is2n1 = idcode - end if - end if - if (ihoff .ne. 0.) then - shift = ihoff*0.1 - notexq = notexq(1:lnote)//'{' - lnote = lnote+1 - lform = lfmt1(shift) - write(notexq(lnote+1:lnote+lform),'(f'// - * chax(48+lform)//'.1)') shift - lnote = lnote+lform - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - end if - call addstr(notexq,lnote,soutq,lsout) -c -c Zero out ip1 to avoid problems if slur goes to next input blk. -c - call setbits(isdata,8,3,0) -c -c Set slur-on data for midi. Only treat null-index slurs and ps ties for now. -c - if (ismidi .and. (idcode.eq.32 .or. idcode.eq.1)) then -c levson(midchan(iv,kv)) = nolevs -c 130316 - levson(midchan(iv,kv)) = nolevs+miditran(instno(iv)) - if (settie) dbltie = .true. -c -c Only way settie=T is if we just set a tie ending. So there's also a slur -c start here, so set a flag telling addmidi not to zero out levson -c - end if - else -c -c Slur is ending. Back thru list to find starting slur -c - do 3 j = isdat-1 , 1 , -1 - if (iv.eq.igetbits(isdat1(j),5,13) .and. -c * kv.eq.igetbits(isdat1(j),1,12)+1) then - * (kv.eq.igetbits(isdat1(j),1,12)+1 - * .or. btest(isdat1(j),1))) then - if (idcode .eq. igetbits(isdat1(j),7,19)) then - ndxslur = igetbits(isdat1(j),4,28) -c -c 080531 Allow >16 slurs -c - * +16*igetbits(isdat1(j),1,18) - if (btest(isdat1(j),27)) slurudq = 'u' - go to 4 - end if - end if -3 continue - print*,'Bad place in doslur' - call stop1() -4 continue -c -c Bugfix 070901 for slur ending on rest in 2-voice staff -c - if (nolevs.le.2 .or. nolevs.gt.60) then -c -c Ending is on a rest, reset nolevs to default starting height -c - nolevs = igetbits(isdat2(j),7,19) - end if - if (btest(isdat3(isdat),0) .or. btest(isdat3(j),0)) then -c -c Deal with \curve or \midslur. isdat is ending, j is start. -c - if (btest(isdat3(isdat),0)) then - imid = igetbits(isdat3(isdat),6,2)-32 - else - imid = igetbits(isdat3(j),6,2)-32 - end if -c -c Postscript slurs, and \midslur adjustment is needed. Invoke macro -c (from pmx.tex) that redefines \tslur as r'qd. Tentative mapping: -c Abs(imid) Postscript slur type -c 1 f -c 2-3 default -c 4 h -c 5 H -c 6+ HH -c - call addstr(chax(92)//'psforts'// - * chax(48+min(abs(imid),6)),9,soutq,lsout) - end if - if (btest(isdata,2)) then -c -c ADjust for stem slur. -c - if (stemup) then - slurudq = 'u' - ivoff = ivoff+4 - else - slurudq = 'd' - ivoff = ivoff-4 - end if - end if -c -c Shift slur ending for stem on any note? -c - if (.not.stemup .and. slurudq.eq.'d' .and. tno.lt.63.) then - if (.not.pstie) then - ihoff = ihoff-8 - else - ihoff = ihoff-3 - end if - end if - if (iscrd) then -c -c Shift termination for shifted notehead? -c - if (btest(isdat2(isdat),1)) then -c -c Left-shifted chord notehead. ASSUME downstem. -c - if (nolevs.eq.minlev .and. slurudq.eq.'d') then - ihoff = ihoff-2 - else - ihoff = ihoff-10 - end if - else if (btest(isdat2(isdat),2)) then -c -c Right shifted chord notehead. ASSUME upstem. -c - if (nolevs.eq.maxlev .and. slurudq.eq.'u') then - ihoff = ihoff+2 - else - ihoff = ihoff+10 - end if - end if - end if - if (ihoff .eq. 0) then - notexq = chax(92)//'tslur' - lnote = 6 - else -c -c Shift needed -c - notexq = chax(92)//'ts' - lnote = 3 - end if -c -c Switch to postscript tie -c - if (pstie) then - notexq = chax(92)//'tieforts'//notexq(1:lnote) - lnote = lnote+9 - end if -c -c Print 13-ndxslur -c 5/25/08 Allow 14 slurs -c - if (23-ndxslur .lt. 10) then - notexq = notexq(1:lnote)//chax(71-ndxslur) - lnote = lnote+1 - else if (23-ndxslur .lt. 20) then - notexq = notexq(1:lnote)//'{1'//chax(61-ndxslur)//'}' - lnote = lnote+4 - else - notexq = notexq(1:lnote)//'{2'//chax(51-ndxslur)//'}' - lnote = lnote+4 - end if - if (btest(iornq,11).or.btest(iornq,12)) then -c -c Raise or lower slur by one unit provided . or _ is on same side as slur -c - ivoffinc = 0 - if ((stemup .and. slurudq.eq.'d') .or. - * (.not.stemup .and. slurudq.eq.'u')) then - if (stemup) then - ivoffinc = -1 - else - ivoffinc = 1 - end if - if (((stemup .and. nolev.ge.ncm-2) .or. - * (.not.stemup .and. nolev.le.ncm+2)) .and. - * mod(abs(ncm-nolev),2).eq.0) ivoffinc = 2*ivoffinc - end if - ivoff = ivoff+ivoffinc - end if - call notefq(noteq,lnoten,nolevs+iupdn+ivoff,ncm) - if (slurudq.eq.'u' .and. - * (.not.btest(isdat2(isdat),0).or.nolevs.eq.maxlev)) then - islhgt = nolevs+iupdn+ivoff -c -c If topvoice, upslur, and idcode checks, no more need to keep hgt for barno. -c - if (ivx.eq.ivmx(nv,nvmx(nv)) .and. is1n1.gt.0) then - if (idcode .eq. is2n1) is1n1=0 - end if - end if - notexq = notexq(1:lnote)//noteq(1:lnoten) - lnote = lnote+lnoten - if (ihoff .ne. 0) then - shift = ihoff*0.1 - notexq = notexq(1:lnote)//'{' - lnote = lnote+1 - lform = lfmt1(shift) - write(notexq(lnote+1:lnote+lform), - * '(f'//chax(48+lform)//'.1)')shift - lnote = lnote+lform - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - end if - call addstr(notexq,lnote,soutq,lsout) -c -c Clear the bit from list of slurs in use -c - listslur = ibclr(listslur,ndxslur) -c -c Zero out the entire strings for start and stop -c - isdata = 0 - isdat2(isdat) = 0 - isdat3(isdat) = 0 - isdat4(isdat) = 0 - isdat1(j) = 0 - isdat2(j) = 0 - isdat3(j) = 0 - isdat4(j) = 0 -c -c Set midi info for slur ending -c - if (ismidi .and. (idcode.eq.32 .or. idcode.eq.1)) then - icm = midchan(iv,kv) - if (slmon(icm)) then - if (nolevs+miditran(instno(iv)).eq.levson(icm) .and. - * iand(7,nacc).eq.0) then -c -c There is a tie here. NB!!! assumed no accidental on 2nd member of tie. -c - levsoff(icm) = nolevs+miditran(instno(iv)) - settie = .true. - else - levsoff(icm) = 0 - levson(icm) = 0 - slmon(icm) = .false. - end if - end if - end if - end if - isdat1(isdat) = isdata - end if -1 continue -c -c Clear and collapse the slur data list -c - numdrop = 0 - do 2 isdat = 1 , nsdat - if (isdat1(isdat) .eq. 0) then - numdrop = numdrop+1 - else if (numdrop .gt. 0) then - isdat1(isdat-numdrop) = isdat1(isdat) - isdat2(isdat-numdrop) = isdat2(isdat) - isdat3(isdat-numdrop) = isdat3(isdat) - isdat4(isdat-numdrop) = isdat4(isdat) - isdat1(isdat) = 0 - isdat2(isdat) = 0 - isdat3(isdat) = 0 - isdat4(isdat) = 0 - end if -2 continue - nsdat = nsdat-numdrop -c call report(nsdat,isdat1,isdat2) - return - end - subroutine doslur(nolev,isdat1,isdat2,isdat3,nsdat,ip,iv,kv,nv, - * beamon,ncm,soutq,lsout,ulq,islur,ipl,iornq,islhgt,tno,nacc) -c -c Called once per main note. (5/26/02) for non-ps slurs only -c - parameter (nm=24,mv=24576) - integer*4 isdat1(202),isdat2(202),isdat3(202) - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - common /comsln/ is1n1,is2n1,irzbnd,isnx - character*1 ulq,slurudq,udfq,udqq,chax - character*79 notexq - character*8 noteq - character*80 soutq - logical upslur,beamon,btest,stemup,iscrd,sfound,tfound,tmove, - * settie,fontslur,WrotePsslurDefaults - logical slmon,dbltie - common /comslm/ levson(0:nm),levsoff(0:nm),imidso(0:nm), - * naccbl(0:nm),laccbl(0:nm,10),jaccbl(0:nm,10),nusebl, - * slmon(0:nm),dbltie - integer*2 mmidi,iinsiv - logical restpend,relacc,notmain,twoline,ismidi,crdacc - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans -c 130316 - common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) - * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) -c -c Bits in isdat1: -c 13-17 iv -c 3-10 ip -c 11 start/stop switch -c 12 kv-1 -c 19-25 ichar(code$) -c 26 force direction? -c 27 forced dir'n = up if on, set in sslur; also -c final direction, set in doslur when beam is started, used on term. -c 28-31 ndxslur, set in doslur when beam is started, used on term. -c -c Bits in isdat2 -c 0 Chord switch. Not set on main note. -c 1-2 left/right notehead shift. Set only for chord note. -c 3 tie positioning -c 4 dotted flag -c 6-11 voff1 1-63 => -31...+31 -c 12-18 hoff1 1-127 => -6.3...+6.3 -c 19-25 nolev -c -c Bits in isdat3: Only used for slur endings -c 0 set if midslur (at least one argument) -c 1 set if curve (2 more args) -c 2-7 32+first arg (height correction) (1st arg may be negative) -c 8-10 second arg (initial slope) -c 11-13 third arg (closing slope) -c -c In listslur bit ib is on if slur index ib is in use, ib=0-23. -c ndxslur = slur index -c Height of slur is nole+ivoff+iupdn. iupdn is +/-1 if t&s slurs on same note, -c s-slur is blank (idcode=32), t-slur is idcode=1. -c ivoff is user-defined shift or shift due to . or _ , or chord adjustment. -c Ivoff will be set for ./_ only if no user-defined shift is specified. -c If highest note has upslur, save slur height in islhgt in case -c ornament must be moved. -c - islhgt = 0 - if (beamon) then - stemup = ulq .eq. 'u' - else if (nvmx(iv) .eq. 2) then - if (.not.btest(islur,30)) then -c -c Single note, 2 lines of music, stem direction not forced -c - stemup = ivx .gt. nv - else - stemup = btest(islur,17) - end if - else - stemup = udqq(nolev,ncm,islur,nvmx(iv),ivx,nv) .eq. 'u' - end if - iscrd = btest(ipl,10) - if (btest(islur,1)) then -c -c 't'-slur (idcode=1) somewhere on this note. Find it, check height against -c 's'-slur (idcode=32) -c - sfound = .false. - tfound = .false. - tmove = .false. - do 5 isdat = 1 , nsdat - if (iv .eq. igetbits(isdat1(isdat),5,13) .and. - * ip .eq. igetbits(isdat1(isdat),8,3) .and. - * kv .eq. igetbits(isdat1(isdat),1,12)+1) then - if (.not.tfound) then - tfound = igetbits(isdat1(isdat),7,19).eq.1 - if (tfound) then - nolevt = igetbits(isdat2(isdat),7,19) - isdatt = isdat - if (sfound) go to 6 - end if - end if - if (.not.sfound) then - sfound = igetbits(isdat1(isdat),7,19).eq.32 - if (sfound) then - nolevs = igetbits(isdat2(isdat),7,19) - isdats = isdat - if (tfound) go to 6 - end if - end if - end if -5 continue -c -c Will come thru here if there is a t with no s, so comment out the following -c print*,'Did not find s+t-slurs in doslur' -c -6 continue - if (sfound .and. tfound) - * tmove = nolevs.eq.nolevt .and. -c -c Check if 2 starts or two stops -c - * ((btest(isdat1(isdats),11).and.btest(isdat1(isdatt),11)) .or. - * (.not.btest(isdat1(isdats),11).and. - * .not.btest(isdat1(isdatt),11)) ) -c -c This is a flag for later changing slur level, after we know slur dir'n. -c - end if - if (ismidi) then - settie = .false. - dbltie = .false. - end if - do 1 isdat = 1 , nsdat - isdata = isdat1(isdat) - if (iv .eq. igetbits(isdata,5,13) .and. - * ip .eq. igetbits(isdata,8,3) .and. - * kv .eq. igetbits(isdata,1,12)+1) then -c -c Since iv and kv match, ivx will be correct -c - idcode = igetbits(isdata,7,19) - ivoff = igetbits(isdat2(isdat),6,6)-32 - ihoff = igetbits(isdat2(isdat),7,12)-64 - iupdn = 0 - slurudq = 'd' - nolevs = igetbits(isdat2(isdat),7,19) - if (btest(isdata,11)) then -c -c Turnon, -c - if (nolevs.eq.0 .or. nolevs.gt.60) then -c -c Note was a rest, cannot start slur on rest. -c - print* - call printl('Cannot start slur on a rest') - call stop1() - end if -c -c Get slur direction -c - if (btest(isdata,26)) then -c -c Force slur direction -c - if (btest(isdata,27)) slurudq = 'u' - else if (nvmx(iv) .eq. 1) then -c -c Only one voice per line -c - if (.not.beamon) then -c -c Separate note. -c - slurudq = udfq(nolev,ncm) - else -c -c In a beam -c - if (ulq .ne. 'u') slurudq = 'u' - end if - if (iscrd) then - if (nolevs .gt. ncm) then - slurudq = 'u' - else - slurudq = 'd' - end if - end if - else -c -c Two voices per line. Get default -c - if (ivx .gt. nv) slurudq = 'u' -c -c Upper voice of the two, so up slur -c - end if -c -c Save up/down-ness for use at termination -c - if (slurudq .eq. 'u') isdata = ibset(isdata,27) -c -c End of section for setting slur direction, still in "Turnon" if-block. -c - if (idcode.eq.1 .and. tmove) then - iupdn = 1 - if (slurudq .eq. 'd') iupdn = -1 - end if - if (btest(iornq,11).or.btest(iornq,12)) then -c -c Raise or lower slur by one unit provided . or _ is on same side as slur -c - ivoffinc = 0 - if ((stemup .and. slurudq.eq.'d') .or. - * (.not.stemup .and. slurudq.eq.'u')) then -c -c Must move the slur for _ or . -c - if (stemup) then - ivoffinc = -1 - else - ivoffinc = 1 - end if - if (((stemup .and. nolev.ge.ncm-2) .or. - * (.not.stemup .and. nolev.le.ncm+2)) .and. - * mod(abs(ncm-nolev),2).eq.0) ivoffinc = 2*ivoffinc - ivoff = ivoff+ivoffinc - end if - end if - if (listslur .eq. 16777215) then - print* - print*,'You1 defined the twenty-fifth slur, one too many!' - write(15,'(/,a)') - * 'You2 defined the twenty-fifth slur, one too many!' - call stop1() - end if -c -c Get index of next slur not in use, starting from ? down -c - ndxslur = log2(16777215-listslur) -c -c Record slur index -c - listslur = ibset(listslur,ndxslur) -c -c Save for use on termination -c -c call setbits(isdata,4,28,ndxslur) -c 080531 Allow >16 slurs - call setbits(isdata,4,28,mod(ndxslur,16)) - call setbits(isdata,1,18,ndxslur/16) -c -c Shift for stem? -c - if (stemup .and. slurudq.eq.'u' .and. tno.lt.63.) - * ihoff = ihoff+8 - if (btest(isdat2(isdat),3)) then -c -c Tie spacing, (slur start) -c - if (slurudq.eq.'d') then - ivoff = ivoff+1 - ihoff = ihoff+8 - else if (slurudq.eq.'u') then - ivoff = ivoff-1 - if (.not.(stemup.and.tno.lt.63.)) ihoff = ihoff+8 -c -c (already shifted if (stemup.and.tno.gt.63.) and slurudq='u') -c - end if - end if - if (iscrd) then -c -c Additional horiz shifts for h-shifted noteheads? -c - if (btest(isdat2(isdat),1)) then -c -c Slur start on left-shifted chord notehead. ASSUME downstem. -c - if (nolevs.eq.minlev .and. slurudq.eq.'d') then - ihoff = ihoff-2 - else - ihoff = ihoff-10 - end if - else if (btest(isdat2(isdat),2)) then -c -c Right shifted chord notehead. ASSUME upstem. -c - if (nolevs.eq.maxlev .and. slurudq.eq.'u') then - ihoff = ihoff+2 - else - ihoff = ihoff+10 - end if - end if - end if - if (ihoff .eq. 0) then -c -c Write stuff for non-shifted start -c - notexq = chax(92)//'islur'//slurudq - lnote = 7 - else - notexq = chax(92)//'is'//slurudq - lnote = 4 - end if - if (btest(isdat2(isdat),4)) then -c -c Dotted slur -c - noteq(1:8) = notexq - notexq = chax(92)//'dotted'//noteq - lnote = lnote+7 - end if -c -c Add slur index to string -cc Print 11-ndxslur -c Print 23-ndxslur -c -c if (11-ndxslur .lt. 10) then - if (23-ndxslur .lt. 10) then -c -c 5/25/08 Allow 24 slurs -c -c notexq = notexq(1:lnote)//chax(59-ndxslur) - notexq = notexq(1:lnote)//chax(71-ndxslur) - lnote = lnote+1 - else if (23-ndxslur .lt. 20) then -c notexq = notexq(1:lnote)//'{1'//chax(49-ndxslur)//'}' - notexq = notexq(1:lnote)//'{1'//chax(61-ndxslur)//'}' - lnote = lnote+4 - else - notexq = notexq(1:lnote)//'{2'//chax(51-ndxslur)//'}' - lnote = lnote+4 - end if -c -c Add note name to string -c - call notefq(noteq,lnoten,nolevs+iupdn+ivoff,ncm) - notexq = notexq(1:lnote)//noteq(1:lnoten) - lnote = lnote+lnoten -c -c Save height (for ornament and barnobox interference) if topmost slur is up -c - if (slurudq.eq.'u' .and. - * (.not.btest(isdat2(isdat),0).or.nolevs.eq.maxlev)) then - islhgt = nolevs+iupdn+ivoff -c -c Save height & idcode if top voice and slur start -c - if (ivx.eq.ivmx(nv,nvmx(nv)) .and. islhgt.gt.is1n1) then - is1n1 = islhgt - is2n1 = idcode - end if - end if - if (ihoff .ne. 0.) then - shift = ihoff*0.1 - notexq = notexq(1:lnote)//'{' - lnote = lnote+1 - lform = lfmt1(shift) - write(notexq(lnote+1:lnote+lform),'(f'// - * chax(48+lform)//'.1)') shift - lnote = lnote+lform - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - end if - call addstr(notexq,lnote,soutq,lsout) -c -c Zero out ip1 to avoid problems if slur goes to next input blk. -c - call setbits(isdata,8,3,0) -c -c Set slur-on data for midi. Only treat null-index slurs and ps ties for now. -c - if (ismidi .and. idcode.eq.32) then - levson(midchan(iv,kv)) = nolevs+miditran(instno(iv)) - if (settie) dbltie = .true. -c -c Only way settie=T is if we just set a tie ending. So there's also a slur -c start here, so set a flag telling addmidi not to zero out levson -c - end if - else -c -c Slur is ending. Back thru list to find starting slur -c - do 3 j = isdat-1 , 1 , -1 - if (iv.eq.igetbits(isdat1(j),5,13) .and. - * kv.eq.igetbits(isdat1(j),1,12)+1) then - if (idcode .eq. igetbits(isdat1(j),7,19)) then - ndxslur = igetbits(isdat1(j),4,28) -c -c 080531 Allow >16 slurs -c - * +16*igetbits(isdat1(j),1,18) - if (btest(isdat1(j),27)) slurudq = 'u' - go to 4 - end if - end if -3 continue - print*,'Bad place in doslur' - call stop1() -4 continue - if (nolevs.eq.0 .or. nolevs.gt.60) then -c -c Ending is on a rest, reset nolevs to default starting height -c - nolevs = igetbits(isdat2(j),7,19) - end if - if (btest(isdat3(isdat),0)) then -c -c Deal with \curve or \midslur -c - imid = igetbits(isdat3(isdat),6,2)-32 -c -c Remember, only dealing with non-ps slurs -c -c Who knows where the following line came from. Removed it 6/30/02 to -c restore behavior of non-ps slurs to old way -c if (slurudq .eq. 'd') imid = -imid -c 3/8/03 added the following -c - if (slurudq .eq. 'd') imid = -abs(imid) -c - if (btest(isdat3(isdat),1)) then - notexq = chax(92)//'curve' - lnote = 6 - else - notexq = chax(92)//'midslur' - lnote = 8 - end if - if (imid.lt.0 .or. imid.gt.9) then -c -c Need brackets -c - notexq = notexq(1:lnote)//'{' - lnote = lnote+1 - if (imid .lt. -9) then - write(notexq(lnote+1:lnote+3),'(i3)')imid - lnote = lnote+3 - else if (imid.lt.0 .or. imid.gt.9) then - write(notexq(lnote+1:lnote+2),'(i2)')imid - lnote = lnote+2 - else - write(notexq(lnote+1:lnote+1),'(i1)')imid - lnote = lnote+1 - end if - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - else -c -c 1= 0 . -c Xtups are irrelevant here since they are already all in forced beams. -c Will update itnow by nodur at the END of this loop -c - ip = ip+1 - go to 11 - end if - nreal = nreal+1 - nodue(nreal) = nodur(ivx,ip) - short(nreal) = nodue(nreal).lt.16 .and. - * .not.btest(irest(ivx,ip),0) -c -c Rule out notes that have 'alone'-flag set -c - * .and..not.btest(islur(ivx,ip),18) - ipr(nreal) = ip - itr(nreal) = itnow - if (nodue(nreal) .eq. 1) then -c -c 64th gap -c - if (mod(itnow,2) .eq. 0) then -c -c Start of 32nd gap, lump with following note -c - ip = ip+1 - nodue(nreal) = 1+nodur(ivx,ip) - itnow = itnow+nodue(nreal) - else -c -c End of 32nd gap, lump with preceeding note -c - nreal = nreal-1 - nodue(nreal) = 1+nodue(nreal) - itnow = itnow+1 - end if - else - itnow = itnow+nodur(ivx,ip) - end if - go to 1 -9 continue - ir1 = 1 - itseg = lenbar/ibmrep - do 13 irep = 1 , ibmrep -c -c Set bitmaps for all shorts neighbored by a short. Each bit represents a -c span of 32nd note. maps, mapm, mape record start, full duration, and end -c of consecutive span of beamable (<1/4) notes. -c - maps = 0 - mapm = 0 - mape = 0 - itend = itseg*irep - itoff = itend-itseg - do 2 ir = ir1 , nreal - it2 = itr(ir)+nodue(ir)-2 - if (it2 .ge. itend) then - ir1 = ir - go to 14 - end if -c if (short(ir).and.((ir.gt.1.and.short(ir-1)).or.(ir.lt.nreal - if (short(ir).and.((ir.gt.1.and.short(max(ir-1,1))).or. - * (ir.lt.nreal.and.short(ir+1)))) then - ib1 = (itr(ir)-itoff)/2 - ib2 = (it2-itoff)/2 - if (max(ib1,ib2).gt.47 .or. ir.gt.48 .or. - * min(ib1,ib2).lt.0) return -c -c Must have an odd number obe beats in a long bar. Auto-beam won't work -c - nip1(ib1) = ipr(ir) - nip2(ib2) = ipr(ir) -c -c nip1,2(ib) = 0 unless a real note starts,ends on bit ib; then = ip -c - maps = ibset(maps,ib1) - mape = ibset(mape,ib2) - do 3 ib = ib1 , ib2 - mapm = ibset(mapm,ib) -3 continue - end if -2 continue -14 continue - if (mapm .eq. 0) go to 13 -c -c Zero out bits from forced beams -c - maps = iand(maps,not(mapfb(irep))) - mapm = iand(mapm,not(mapfb(irep))) - mape = iand(mape,not(mapfb(irep))) -c -c Compare map with template. -c - do 4 it = 1 , nummask(ibmtyp) - masknow = mask(it,ibmtyp) - if (iand(masknow,mapm) .eq. masknow) then -c -c Find least significant bit in the mask to check start time -c - mtemp = masknow - maskm = masknow - do 5 is1 = 0 , 47 - if (iand(1,mtemp) .eq. 1) go to 6 - mtemp = ishft(mtemp,-1) -5 continue -6 continue - if (iand(ishft(1,is1),maps) .eq. 0) go to 4 -c -c is1 is the bit where the beam starts. Continue shifting to -c find most significant bit in the mask to check ending time -c - do 7 is2 = is1 , 47 - mtemp = ishft(mtemp,-1) - if (iand(1,not(mtemp)) .eq. 1) go to 8 -7 continue -8 continue -c -c is2 is now the bit on which the beam ends. -c - if (iand(ishft(1,is2),mape) .eq. 0) go to 4 -c -c Did we pick out a single note from the middle of a longer sequence? -c - if (nip1(is1) .eq. nip2(is2)) go to 4 -c -c We almost have a beam. Check equality of notes if needed. -c - if (eqonly(it,ibmtyp)) then - do 10 ip = nip1(is1) , nip2(is2) - if (nodur(ivx,ip) .ne. 8) then -c -c There is a non-1/8th note in this beam. Exit if not 2 quarters -c - if (is2-is1 .ne. 15) go to 4 -c -c Beam is 2 quarters long. Check if can split in half. -c - ithalf = 0 - do 20 iip = nip1(is1) , nip2(is2) - ithalf = ithalf+nodur(ivx,iip) - if (ithalf .gt. 16) go to 4 - if (ithalf .eq. 16) go to 21 -20 continue - print*,'Problem in findbeam, please call Dr. Don' - go to 4 -21 continue -c -c Otherwise, split in half by keeping only the first half. Other half will -c be picked up later, assuming masks are listed longest first. -c - is2 = is1+7 -c -c Reset maskm (since only used part of mask), used later to zero out -c bits that contain beams -c - maskm = 0 - do 15 is = is1 , is2 - maskm = ibset(maskm,is) -15 continue - go to 16 - end if -10 continue - end if -16 continue -c -c This is a beam. If last "effective" ends on odd 64th, add 1 more -c -c if (abs(mod(to(iand(255,ipl(ivx,nip2(is2)))) -c * +nodur(ivx,nip2(is2)),2.)) .gt. tol) then - if (abs(amod(to(ipl2(ivx,nip2(is2))) - * +nodur(ivx,nip2(is2))+.5*tol,2.)) .gt. tol) then - nip2(is2) = nip2(is2)+1 - end if - numbms(ivx) = numbms(ivx)+1 - numnew = numbms(ivx) - call logbeam(numnew,nip1(is1),nip2(is2)) -c -c Zero out the appropriate bits so these notes don't get used again -c - mapm = iand(mapm,not(maskm)) - if (mapm.eq.0) go to 13 - maps = iand(maps,not(maskm)) - mape = iand(mape,not(maskm)) - end if -4 continue -13 continue - return - end - subroutine findeonk(nptr1,nptr2,wovera,xelsk,dtmin,dtmax,eonk0) - parameter (nkb=3999,maxblks=9600) -c -c Compute an exponent eonk for use in the "flattened" formula for elemskips -c vs time. We must solve the eqution f = 0. Initial quess is eonk0. -c -c logical gotclef - common /c1omnotes/ nnodur,wminnh(nkb),nnpd(maxblks),durb(maxblks), - * iddot,nptr(nkb),ibarcnt,mbrest,ibarmbr, -c * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) - * ibaroff,udsp(nkb),wheadpt,sqzb(maxblks) - common /comtol/ tol - common /comeon/ eonk,ewmxk - eonk = eonk0 - niter = 0 -1 continue - ewmxk = f1eon(dtmax)**eonk - niter = niter+1 - esum = 0. - desum = 0. - do 2 iptr = nptr1 , nptr2 - targ = durb(iptr)/sqzb(iptr) - esum = esum+nnpd(iptr)*sqzb(iptr)*feon(targ) - detarg = sqrt(targ/2*(dtmax/targ)**eonk)*alog(dtmax/targ) - desum = desum+nnpd(iptr)*sqzb(iptr)*detarg -2 continue - f = wovera*feon(dtmin)-xelsk-esum - fp = wovera*sqrt(dtmin/2*(dtmax/dtmin)**eonk)*alog(dtmax/dtmin) - * -desum - if (abs(fp).lt.tol .or. abs(eonk-.5).gt..5 .or. niter.gt.100) then - call printl( - * 'Error in findeonk. Please send source to Dr. Don') - eonk = 0. - ewmxk = 1. - return - end if - dsoln = -f/fp - if (abs(dsoln) .lt. .1*tol) return -c -c Not converged yet, try again -c - eonk = eonk+dsoln - go to 1 - end - function fnote(nodur,ivx,ip,nacc) -c -c This return the real duration of a note -c - parameter (nm=24) - integer*4 nodur(nm,200),nacc(nm,200) - logical btest - ipback = ip - if (nodur(ivx,ip) .gt. 0) then - if (ip .gt. 1) then -c -c Check if this is last note of xtup -c - if (nodur(ivx,ip-1).eq.0) then - ipback = ip-1 - go to 2 - end if - end if - fnote = nodur(ivx,ip) - return - end if -2 continue -c -c Count back to prior non zero note. Start at ip to avoid neg index if ip=1. -c Count how many doubled xtups notes there are from ip-1 to first note. -c - ndoub = 0 - do 1 ip1m1 = ipback , 1 , -1 - if (nodur(ivx,ip1m1) .gt. 0) go to 4 - if (ip1m1.lt.ip .and. btest(nacc(ivx,ip1m1),18)) ndoub=ndoub+1 -1 continue -4 continue -c -c count forward to next non-0 nodur. Start at ip in case last note of xtup. -c - do 3 iip = ip , 200 -c -c Count doubled xtup notes from ip to end. -c - if (btest(nacc(ivx,iip),18)) ndoub = ndoub+1 - if (nodur(ivx,iip) .gt. 0) then -c fnote = nodur(ivx,iip)/float(iip-ip1m1) - fnote = nodur(ivx,iip)/float(iip-ip1m1+ndoub) - if (btest(nacc(ivx,ip),18)) then - fnote = 2*fnote - else if (btest(nacc(ivx,ip),27)) then - fnote = 1.5*fnote - else if (ip .gt. 1) then - if (btest(nacc(ivx,ip-1),27)) fnote = .5*fnote - end if - return - end if -3 continue - print*,' ' - call printl - * ('Probable misplaced barline or incorrect meter, stopping') - print*,'ivx,ip:',ivx,ip - call stop1() - end - subroutine g1etchar(lineq,iccount,charq) - parameter(nm=24) - common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, - * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 - logical lastchar,issegno,isheadr,isvolt,fbon - common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac - logical mrecord,mplay,endmac - character*1 charq - character*128 lineq,lnholdq -c -c Gets the next character out of lineq*128. If pointer iccount=128 on entry, -c then reads in a new line. Resets iccount. Ends program if no more input. -c - if (iccount .eq. 128) then - call read10(lineq,lastchar) - if (lastchar) return - if (.not.endmac) then - iccount = 0 - if (.not.mplay) nline = nline+1 - else - endmac = .false. - iccount = icchold - lineq = lnholdq - end if - if (mrecord) then - call m1rec1(lineq,iccount,ibarcnt,ibaroff,nbars,ndxm) - end if - end if - iccount = iccount+1 - charq = lineq(iccount:iccount) - return - end - subroutine g1etnote(loop,ifig,optimize,fulltrans) - parameter (nm=24,nkb=3999,mv=24576,maxblks=9600) - character*1 chax - logical twotrem - common /a1ll/ iv,ivxo(600),ipo(600),to(600),tno(600),nnl(nm), - * nv,ibar,mtrnuml,nodur(nm,200),lenbar,iccount, - * nbars,itsofar(nm),nib(nm,15),nn(nm), - * rest(nm,200),lenbr0,lenbr1,firstline,newmeter - common /c1omnotes/ nnodur,wminnh(nkb),nnpd(maxblks),durb(maxblks), - * iddot,nptr(nkb),ibarcnt,mbrest,ibarmbr, -c * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) - * ibaroff,udsp(nkb),wheadpt,sqzb(maxblks) - common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, - * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 - common /compage/ widthpt,ptheight,hoffpt,voffpt, - * nsyst,nflb,ibarflb(0:40), - * isysflb(0:40),npages,nfpb,ipagfpb(0:18),isysfpb(0:18), - * usefig,fintstf,gintstf,fracsys(30),nmovbrk,isysmb(0:30), - * nistaff(0:40) - common /c1ommvl/ nvmx(nm),ivmx(nm,2),ivx,fbar,nacc(nm,200) - common /comkeys/ nkeys,ibrkch(18),newkey(18),iskchb,idsig,isig1, - * mbrestsav,kchmid(18),ornrpt,shifton,barend,noinst,stickyS - logical lastchar,firstline,rest,loop,newmeter,fbon,issegno,barend, - * isheadr,fulbrp,usefig,isvolt,iskchb,kchmid,plusmin,ornrpt, - * stickyS - common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac - common /commus/ musize,whead20 - logical mrecord,mplay,endmac,shifton,gotclef,optimize - character*128 lineq,lnholdq - character*1 charq,dotq,dumq,durq,charlq - integer*2 mmidi - logical restpend,relacc,notmain,twoline,ismidi,crdacc,cdot - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - character*131072 bufq - integer*2 lbuf(maxblks) - common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq - logical novshrinktop,upslur,fontslur,ztrans, - * WrotePsslurDefaults,cstuplet - common /comnvst/ novshrinktop,cstuplet - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - character*51 literq(3),lyrerq(5) - common /comligfont/ isligfont - logical isligfont - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans - logical fulltrans - common /comsize/ isize(nm) - common /commidisig/ midisig - common /comis4bignv/ is4bignv,AIset - logical is4bignv,AIset - common /comshort/ shortfrac,codafrac,ishort,mbrsum,nmbr,nocodabn, - * poefa - real*4 poefa(125) - logical nocodabn - data literq - * /'Literal TeX string cannot start with 4 backslashes!', - * 'TeX string must have <129 char, end with backslash!', - * 'Type 2 or 3 TeX string can only start in column 1!'/ - data lyrerq - * /'pmxlyr string must end with " followed by blank!', - * 'pmxlyr string cannot extend past position 120!', - * 'There must be "a" or "b" here!', - * 'There must be "+" or "-" here!', - * 'There must be an integer here!'/ - cdot = .false. - twotrem = .false. -1 call g1etchar(lineq,iccount,charq) - if (charq .ne. ' ') charlq = charq - if (lastchar) then - if (index('/%',charlq) .eq. 0) then - print* - print*,'WARNING:' - print*,'Last non-blank character is "',charlq,'", not "/,%"' - print*,'ASCII code:',ichar(charlq) - write(15,'(/a)')'Last non-blank character is "'//charlq// - * '", not "/,%"' - write(15,'(a11,2x,i3)')'ASCII code:',ichar(charlq) -c -c Append " /" to last line. NB lastchar=.true. => ilbuf=nlbuf+1. -c - ilbuf = ilbuf-1 - lbuf(ilbuf) = lbuf(ilbuf)+2 - bufq = bufq(1:ipbuf)//' /' - write(15,*)'appending /' - print*,'appending /' - lineq = lineq(1:iccount)//' /' - lastchar = .false. - go to 1 - end if - return - end if - if (charq .eq. ' ') then - go to 1 - else if (charq.eq.'%' .and. iccount.eq.1) then - iccount = 128 - go to 1 -c -c Replacement 1/22/12 since gfortran 4.7 with -O was choking here! -c -c else if ((ichar(charq).ge.97.and.ichar(charq).le.103) .or. - else if (index('abcdefg',charq).gt.0 .or. - * charq.eq.'r') then -c -c This is a note/rest. gotclef is only used for checking for clef before "/" -c - if (cdot) go to 28 -c if (gotclef) gotclef=.false. - idotform = 0 - numnum = 0 - plusmin = .false. -28 nnl(ivx) = nnl(ivx)+1 - if (nnl(ivx) .gt. 200) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '>200 notes in line of music. Use smaller blocks!') - call stop1() - end if - dotq = 'x' -c -c Check if this is 'r ' and previous note was full-bar-pause -c - fulbrp = charq.eq.'r' .and. lineq(iccount+1:iccount+1) .eq.' ' - * .and. nnl(ivx).gt.1 .and. rest(ivx,max(1,nnl(ivx)-1)) .and. - * nodur(ivx,max(1,nnl(ivx)-1)) .eq. lenbar -2 call g1etchar(lineq,iccount,durq) - ic = ichar(durq) - if (ic.le.57 .and. ic.ge.48) then -c -c Digit -c - if (numnum .eq. 0) then - nnodur = ic-48 - numnum = 1 - go to 2 - else if (numnum .eq. 1) then - if (charq .eq. 'r') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only one digit allowed after rest symbol "r"!') - call stop1() - end if - numnum = 2 - if (plusmin) then - print* - print*,'*********WARNING*********' - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Before version 1.2, +/- was ignored if octave was!') - print*, - * 'explicitly specified. May need to edit old editions' - end if - go to 2 - else - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '>2 digits in note symbol!') - call stop1() - end if - else if (durq.eq.'d') then - dotq = durq - if (lineq(iccount+1:iccount+1) .eq. 'd') then - iddot = 1 - iccount = iccount+1 -c -c Since we flow out, double dots won't work with other dot options -c - end if - if (index('+-',lineq(iccount+1:iccount+1)) .gt. 0) then -c -c move a dot, provided a number follows. -c - call g1etchar(lineq,iccount,durq) - call g1etchar(lineq,iccount,durq) - if (index('0123456789-.',durq) .eq. 0) then -c -c Backup, exit the loop normally -c - iccount = iccount-2 - go to 2 - end if - call readnum(lineq,iccount,dumq,fnum) - if (index('+-',dumq) .gt. 0) then -c -c Vertical shift also -c - call g1etchar(lineq,iccount,durq) - if (index('0123456789-.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected number after 2nd +/- (shift dot)!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - end if - iccount = iccount-1 - end if - go to 2 - else if (index('<>',durq) .gt. 0) then -c -c Accidental shift -c -c if (index('fsn',lineq(iccount-1:iccount-1)) .eq. 0) then - if (index('fsnA',lineq(iccount-1:iccount-1)) .eq. 0) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, -c * 'Expected "f", "s", or "n" before "<" or ">"!') - * 'Expected "f", "s", "n" or "A" before "<" or ">"!') - call stop1() - end if - ipm = 1 - if (durq .eq. '<') ipm=-1 - call g1etchar(lineq,iccount,durq) - if (index('123456789.0',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected number after (accidental shift)!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - fnum = ipm*fnum - if (fnum.lt.-5.35 .or. fnum.gt.1.0) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Horizontal accidental shift must be >-5.35 and <1.0!') - call stop1() - end if - iccount = iccount-1 - go to 2 - else if (index('+-',durq) .gt. 0) then - if (charq .ne. 'r') then - if (index('fsnA',lineq(iccount-1:iccount-1)) .gt. 0) then - ipm = 1 - if (durq .eq. '-') ipm=-1 - if (index('0123456789',lineq(iccount+1:iccount+1)) - * .gt.0) then -c -c This may be start of accidental shift, but may be octave jump; then duration -c - icsav = iccount - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - if (index('+-',durq) .gt. 0) then -c -c This is an accid shift since there's a 2nd consecutive signed number. -c Check size of 1st number. -c - if (fnum .gt. 30.5) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Vertical accidental shift must be less than 31!') - call stop1() - end if - ipm = 1 - if (durq .eq. '-') ipm = -1 - call g1etchar(lineq,iccount,durq) - if (index('1234567890.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected 2nd number of accidental shift)!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - fnum = ipm*fnum - if (fnum.lt.-5.35 .or. fnum.gt.1.0) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Horiz. accidental shift must be >-5.35 and <1.0!') - call stop1() - end if - iccount = iccount-1 - go to 2 - else -c -c Not accid shift, reset, then flow out -c - iccount = icsav - end if - end if - end if - plusmin = .true. - if (numnum .eq. 2) then - print* - print*,'*********WARNING*********' - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Before version 1.2, +/- was ignored if octave was!') - print*, - * 'explicitly specified. May need to edit old editions' - end if - go to 2 -c -c It's a rest containing +|- . Must refer to a vertical shift. Read past. -c - else - call g1etchar(lineq,iccount,durq) - call readnum(lineq,iccount,durq,dum) - if (lineq(iccount-1:iccount-1).eq.'.') iccount=iccount-1 - iccount = iccount-1 - go to 2 - end if -c else if (index('ulare',durq) .gt. 0) then - else if (index('ularec',durq) .gt. 0) then - go to 2 - else if (index('LS',durq) .gt. 0) then -c -c Stemlength change -c - call g1etchar(lineq,iccount,durq) - if (index('.0123456789:',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'There must be a number or colon here!') - call stop1() - end if - if (durq .eq. ':') then - if (.not.stickyS) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Turned off sticky stemlegth changes without turning on!') - call stop1() - end if - stickyS = .false. - go to 2 - end if - call readnum(lineq,iccount,durq,dum) -c if (dum.lt..5 .or. dum.gt.4.) then - if ((durq.eq.'L'.and.dum.gt.20.).or. - * (durq.eq.'S'.and.dum.gt.4.)) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Stemlength change amount too big!') - call stop1() - end if - if (durq .ne. ':') then - iccount = iccount-1 - else - if (stickyS) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Turned on sticky stemshrinks when already on!') - call stop1() - end if - stickyS = .true. - end if - go to 2 - else if (index('fsn',durq) .gt. 0) then -c -c Check for midi-only accid. CANNOT coesist with accidental position tweaks, so -c MUST come right after "f,s,n" -c - if (lineq(iccount+1:iccount+1) .eq. 'i') iccount=iccount+1 - go to 2 - else if (durq .eq. 'p') then - fulbrp = charq.eq.'r' - if (.not. fulbrp) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'The option "p" only works with "r" (rest)!') - call stop1() - end if - go to 2 - else if (durq .eq. 'b') then - if (charq .ne. 'r') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'You entered "b"; I expected "rb"!') - call stop1() - else if (numnum .eq. 2) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'You entered "r" & "b" with two numbers!') - end if - go to 2 - else if (durq .eq. 'x') then -c -c Xtuplet. Count number of doubled notes (for unequal xtups) -c - if (btest(nacc(ivx,nnl(ivx)),18)) then - ndoub = 1 - else - ndoub = 0 - end if -c -c Will set all durations to 0 except last one. -c - call g1etchar(lineq,iccount,durq) - if (index('123456789T',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'First char after "x" in xtuplet must be "1"-"9" or "T"!') - call stop1() - end if - if (durq .eq. 'T') then -c -c Set a flag for checking 2nd note inputs if dot is moved -c - twotrem = .true. -c -c Check all x-tremolo inputs here; set fnum=2 -c - fnum = 2 - call getchar(lineq,iccount,durq) - if (index('0123 ',durq).eq.0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'First char after "T" in xtuplet must be "0"-"3" or blank!') - call stop1() - else if (durq .ne. ' ') then - call getchar(lineq,iccount,durq) - if (index('0123 ',durq).eq.0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'This char must be "0"-"3" or blank!') - call stop1() - else if (durq .ne. ' ') then - call getchar(lineq,iccount,durq) -c -c Probably blank unles other options entered -c - end if - end if - else -c -c durq is digit, normal xtup -c - call readnum(lineq,iccount,durq,fnum) -c -c Leaves durq at next char after number -c - if (fnum .gt. 99) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Xtuplet cannot have more than 99 notes!') - call stop1() - else if (index(' DFnd',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only legal characters here are " ","D","F","n"!') - call stop1() - end if - end if -c -c End of mandatory xtup inputs. Check for options. Note D,F,d must precede n. -c - if (index('DF',durq) .gt. 0) then -c -c Double xtup note to make an un= xtup. Here, number already set, but may also -c have used this before number was set. -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) - ndoub = 1 - call g1etchar(lineq,iccount,durq) - else if (durq .eq. 'd') then - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),27) - call g1etchar(lineq,iccount,durq) - end if - if (durq .eq. 'n') then -c -c Number alteration stuff. After 'n', require '+-123456789fs ', no more 'DF'. -c - numshft = 0 -30 call g1etchar(lineq,iccount,durq) - if (durq .eq. 'f') then - go to 30 - else if (index('+-',durq) .gt. 0) then - numshft = numshft+1 - if (numshft .eq. 3) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only 2 shifts are allowed after "n" in xtup!') - call stop1() - end if - call g1etchar(lineq,iccount,durq) - if (index('0123456789.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'This character should be a digit or "."!') - call stop1() - end if - call readnum(lineq,iccount,durq,snum) - iccount = iccount-1 -c if ((numshft.eq.1 .and. snum.gt.15.1) .or. - if ((numshft.eq.1 .and. snum.gt.64.) .or. - * (numshft.eq.2 .and. snum.gt.1.51)) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Shift number after "n" in xtup is out of range!') - call stop1() - end if - go to 30 - else if (durq .eq. 's') then -c -c Slope alteration for bracket -c - call getchar(lineq,iccount,durq) - if (index('+-',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'For slope adjustment, this character must be "+" or "-"!') - call stop1() - end if - call g1etchar(lineq,iccount,durq) - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'This character should be a digit!') - call stop1() - end if - call readnum(lineq,iccount,durq,snum) - iccount = iccount-1 - if (nint(snum) .gt. 15) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Slope adjustment cannot exceed 15!') - call stop1() - end if - go to 30 - else if (index('123456789',durq) .gt. 0) then -c -c Unsigned integer => alternate printed number -c - call readnum(lineq,iccount,durq,snum) - if (snum .gt. 15.1) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Alternate xtup number after "n" must be <16!') - call stop1() - end if - iccount = iccount-1 - go to 30 - else if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after "n" in xtup!') - call stop1() - end if - end if - ntup = nint(fnum) - do 6 itup = 2 , ntup - nodur(ivx,nnl(ivx)) = 0 - nnl(ivx) = nnl(ivx)+1 -110 call g1etchar(lineq,iccount,durq) - if (durq.eq.' ') then - go to 110 - else if (durq .eq. 'o') then -c -c Ornament in xtup. "o" symbol must come AFTER the affected note -c - call g1etchar(lineq,iccount,dumq) - if (index('(stmx+Tup._)e:>^bc',dumq) .eq. 0 ) then - if (index('fg',dumq) .gt. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Fermata or segno not allowed in xtuplet!') - else - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal ornament!') - end if - call stop1() - end if - if (dumq .eq. 'T') then -c -c Trill. may be followed by 't' and/or number. read 'til blank -c -29 call g1etchar(lineq,iccount,dumq) - if (dumq .ne. ' ') go to 29 - else if (dumq .eq. 'e') then - call g1etchar(lineq,iccount,dumq) - if (index('sfn?',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after "e" in edit. accid. symbol!') - call stop1() - end if - call g1etchar(lineq,iccount,dumq) - if (dumq .eq. '?') call g1etchar(lineq,iccount,dumq) - else if (dumq .eq. ':') then - if (lineq(iccount+1:iccount+1) .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '":" must be followed by blank in "o: "!') - call stop1() - else if (.not.ornrpt) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Turned off repeated ornaments before they were on!') - call stop1() - end if - ornrpt = .false. - else - call g1etchar(lineq,iccount,dumq) - end if - if (index('+- :',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in ornament symbol!') - call stop1() - end if - if (dumq .eq. ':') then - if (lineq(iccount+1:iccount+1) .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '":" must be followed by blank in "o: "!') - call stop1() - else if (ornrpt) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Turned on repeated ornaments but already on!') - call stop1() - end if - ornrpt = .true. - end if - if (index('+-',dumq) .gt. 0) then - if (index('0123456789',lineq(iccount+1:iccount+1)) - * .eq. 0) then - call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, - * 'There should be an integer here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - if (durq .eq. ':') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Cannot shift AND repeat an ornament!') - call stop1() - end if -c -c 12/7/03 Allow horizontal shift on any ornament, not just breath and ceas. -c - if (index('+-',durq) .gt. 0) then - if (index('.0123456789',lineq(iccount+1:iccount+1)) - * .eq. 0) then - call errmsg(lineq,iccount+1, - * ibarcnt-ibaroff+nbars+1, - * 'There should be a number here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - end if - end if - go to 110 - else if (index('st(){}',durq) .gt. 0) then -c -c Slur in xtup -c - iposn = 0 - numint = 0 -15 call g1etchar(lineq,iccount,dumq) - iposn = iposn+1 - if (index('udlbfnhtv',dumq) .gt. 0) then - if (dumq.eq.'t' .and. durq.eq.'t') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Cannot use "t" as an option on a tie!') - call stop1() - end if - go to 15 - else if (index('+-',dumq) .gt. 0) then - numint = numint+1 - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - if (numint .eq. 1) then - if (nint(fnum) .gt. 30) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Magnitude of slur height adjustment cannot exceed 30!') - call stop1() - end if - else if (numint .eq. 2) then - if (abs(fnum).gt.6.3) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Slur horiz shift must be in the range (-6.3,6.3)!') - call stop1() - end if - else -c -c Third signed integer, must be a midslur or curve spec. -c - if (abs(fnum).gt.31) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Slur midheight must be in the range (-31,31)!') - call stop1() - end if - if (durq .eq. ':') then -c -c Expecting curve parameters. Get two numbers -c - do 40 i = 1 , 2 - iccount = iccount+1 - fnum = ichar(lineq(iccount:iccount))-48 - if (abs(fnum-3.5) .gt. 3.6) then - call errmsg(lineq,iccount, - * ibarcnt-ibaroff+nbars+1, - * 'Slur curve parameter must be in range (0,7)!') - call stop1() - end if -40 continue - iccount = iccount+1 - end if - end if - iccount = iccount-1 - go to 15 - - else if (dumq .eq. 's') then -c -c What follows should be one or two signed numbers for adjustment of line break -c slur, end of 1st segment or start of second. -c - if (fontslur) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'May not use linebreak slur options with font-based slurs!') - call stop1() - end if - call g1etchar(lineq,iccount,dumq) - if (index('+-',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'This character must be "+" or "-"!') - call stop1() - end if - iccount = iccount+1 - call readnum(lineq,iccount,dumq,fnum) - if (nint(fnum) .gt. 30) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Magnitude of slur height adjustment cannot exceed 30!') - call stop1() - end if - if (index('+-',dumq) .gt. 0) then - iccount = iccount+1 - call readnum(lineq,iccount,dumq,fnum) - if (abs(fnum) .gt. 6.3) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Slur horiz shift must be in range (-6.3,6.3)!') - call stop1() - end if - end if - iccount = iccount-1 - go to 15 - else if (dumq .eq. 'H' .and. iposn.gt.1) then - if (lineq(iccount+1:iccount+1) .eq. 'H') - * iccount=iccount+1 - go to 15 - else if (dumq .eq. 'p') then -c -c local change in postscript slur/tie adjustment default -c - if (fontslur) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must use postscript slurs ("Ap") to use this option!') - call stop1() - end if - call g1etchar(lineq,iccount,dumq) - if (index('+-',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected "+" or "-" here!') - call stop1() - end if - call g1etchar(lineq,iccount,dumq) - if (index('st',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected "s" or "t" here!') - call stop1() - end if - go to 15 - else if (dumq .ne. ' ') then - ic = ichar(dumq) - if ((ic.ge.48.and.ic.le.57) .or. - * (ic.ge.65.and.ic.le.90)) then - if (iposn .eq. 1) then - if (durq.eq.'t' .and. fontslur) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Slur ID not allowed on non-postscript tie!') - call stop1() - end if - if (lineq(iccount+1:iccount+1).eq.'x') - * iccount = iccount+1 - go to 15 - end if - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Slur ID must be 2nd character in slur symbol!') - call stop1() - end if - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in slur symbol!') - call stop1() - end if - go to 110 - else if (index('0123456789#-nx_',durq) .gt. 0) then -c -c We have a figure. Only allow on 1st note of xtup -c - if (itup .ne. 2) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Figure in xtup only allowed on 1st note!') - call stop1() - else if (durq.eq.'x') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'No floating figures in xtuplets!') - call stop1() - end if - if (usefig .and. ivx.eq.1) ifig = 1 -26 call g1etchar(lineq,iccount,durq) -c if (index('0123456789#-n_.:',durq) .gt. 0) then - if (index('0123456789#-n_.:v',durq) .gt. 0) then - go to 26 - else if (durq .eq. 's') then - isligfont = .true. - go to 26 - else if (durq .eq. '+') then -c -c vertical offset, must be integer then blank -c - call g1etchar(lineq,iccount,durq) - if (index('123456789',durq) .ne. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Integer for vertical offset expected here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Vertical offset must terminate figure!') - call stop1() - end if - iccount = iccount-1 - go to 26 - else if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in figure in xtuplet!') - call stop1() - end if - go to 110 - else if (durq .eq. 'G') then - ngr = 1 -79 call g1etchar(lineq,iccount,charq) - if (index('123456789',charq) .gt. 0) then - call readnum(lineq,iccount,durq,fnum) - ngr = nint(fnum) - iccount = iccount-1 - go to 79 - else if (index('AWulxs',charq) .gt. 0) then - go to 79 - else if (charq .eq. 'm') then - call g1etchar(lineq,iccount,charq) - if (index('01234',charq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'A digit less than 5 must follow "m" in a grace note!') - call stop1() - end if - go to 79 - else if (charq .eq. 'X') then -c -c Space before main note -c - call g1etchar(lineq,iccount,charq) - if (index('0123456789.',charq) .gt. 0) then - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - go to 79 - else - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'A number must follow "X" in a grace note!') - call stop1() - end if - end if -c -c At this point, charq is first note name in rest (grace?) -c - do 71 igr = 1 , ngr - numnum = 0 - if (igr .gt. 1) then -75 call g1etchar(lineq,iccount,charq) - if (charq .eq. ' ') go to 75 - end if - if (index('abcdefg',charq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'In grace, expected "a"-"g"!') - call stop1() - end if -78 call g1etchar(lineq,iccount,charq) - if (charq .ne. ' ') then - if (index('1234567',charq) .gt. 0) then - if (numnum .eq. 1) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only one of "+-1234567" allowed here in grace!') - call stop1() - end if - numnum = 1 - go to 78 - else if (index('+-nfs',charq) .gt. 0) then - go to 78 - end if -c -c Digits are possible octave numbers -c - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after note name in grace!') - call stop1() - end if -71 continue - go to 110 - else if (durq .eq. chax(92)) then - call chklit(lineq,iccount,literr) - if (literr .gt. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * literq(literr)) - call stop1() - end if - go to 110 - else if (durq .eq. '"') then -c -c pmx lyric -c - call chkpmxlyr(lineq,iccount,lyrerr) - if (lyrerr .gt. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * lyrerq(lyrerr)) - call stop1() - end if - go to 110 - else if (durq .eq. 'M') then -c -c Temporary trap until I get around putting this in pmxb -c - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Macros not yet allowed in xtuplets!') - call stop1() - else if (durq .eq. 'X') then - call g1etx(lineq,iccount,shifton, - * ibarcnt-ibaroff+nbars+1,udsp(ibarcnt+nbars+1),wheadpt) - go to 110 - else if (durq .eq. 'z') then -c -c Chord note in xtup. Read past for now. -c -33 call g1etchar(lineq,iccount,durq) - if (durq .ne. ' ') go to 33 - go to 110 - else if (durq .eq. 'D') then -c -c Dynamic mark -c - call checkdyn(lineq,iccount,ibarcnt-ibaroff+nbars+1) - go to 110 - else if (durq .eq. '%') then - if (iccount .ne. 1) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Comment must have "%" in column 1!') - call stop1() - end if - iccount = 128 - go to 110 - else if (durq .eq. '?') then - call getchar(lineq,iccount,durq) - if (durq .eq. ' ') then - iccount = iccount-1 - go to 110 - end if - if (durq .ne. '-') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expecting "-"') - call stop1() - end if - call getchar(lineq,iccount,durq) - if (index('0123456789.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expecting number') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - go to 110 -c -c 140215 Allow clef change inside xtup -c - else if (durq .eq. 'C') then - call g1etchar(lineq,iccount,durq) - if (.not.(index('tsmanrbf',durq).gt.0 .or. -c * (ichar(durq).ge.48 .and. ichar(durq).le.55))) then - * (ichar(durq).ge.48 .and. ichar(durq).le.56))) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must have t,s,m,a,n,r,b,f or 0-8 after C!') - call stop1() - end if -c gotclef = .true. - go to 110 -c+++ - else if (durq.eq.']' .and. lineq(iccount+1:iccount+1).eq.'[' - * .and. lineq(iccount+2:iccount+2).eq.' ') then - iccount = iccount+2 - go to 110 -c+++ -c -c Added 200118 to allow dot to be moved on 2nd note of 2-note tremolo -c - end if -c -c End of xtup options. At this point symbol can only be note or rest -c - if (index('abcdefgr',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'In xtup, this character is not allowed!') - call stop1() - end if -7 call g1etchar(lineq,iccount,durq) - if (index('12345678ulcb',durq) .gt. 0) then - go to 7 - else if (index('sfn',durq) .gt. 0) then -c -c Check for MIDI-only accidental. Cannot coexist with accid. pos'n shift. -c - if (lineq(iccount+1:iccount+1) .eq. 'i') iccount=iccount+1 - go to 7 - else if (index('+-<>',durq) .gt. 0) then -c -c May have either octave jump or shifted accid. on main xtup note -c - if (index('+-',durq).gt.0 .and. - * index('01234567890',lineq(iccount+1:iccount+1)).eq.0) - * go to 7 - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - go to 7 - else if (index('DF',durq) .gt. 0) then -c -c Double an xtup note to make an unequal xtup -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) - ndoub = ndoub+1 - go to 7 - else if (durq .eq. 'd') then - if (twotrem) then -c -c 2-note trem, get shift -c - call g1etchar(lineq,iccount,durq) - if (index('+-',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected +/- for shifted dot on end of 2-note trem!') - call stop1() - end if - call g1etchar(lineq,iccount,durq) - if (index('0123456789.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected number here!') - call stop1() - end if - call readnum(lineq,iccount,dumq,fnum) - if (index('+-',dumq) .gt. 0) then -c -c Vertical shift also -c - call g1etchar(lineq,iccount,durq) - if (index('0123456789-.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected number after 2nd +/- (shift dot)!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - end if - iccount = iccount-1 - go to 7 - else - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),27) - end if - go to 7 - else if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal option on xtuplet note!') - call stop1() - end if - if (itup .eq. ntup-ndoub) go to 3 -6 continue -3 continue -c -c 6==End of loop for xtuplet input -c - else if (durq .eq. 'm') then -c -c Multi-bar rest: next 1 or two digits are # of bars. -c - if (mod(itsofar(iv),lenbar) .ne. 0) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Multibar rest must start at beginning of bar!') - call stop1() - else if (iv.eq.1.and.ibarmbr.gt.0) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Multibar rest only OK at one time per block!') - call stop1() - end if -c -c For some purposes, pretend its one bar only -c - nodur(iv,nnl(iv)) = lenbar - ibarmbr = nbars+1 - mbrest = 0 -c20 call g1etchar(lineq,iccount,durq) - call g1etchar(lineq,iccount,durq) - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected an integer after "rm"!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - mbrest = nint(fnum) -c iccount = iccount-1 - if (nv .gt. 1) then - if (iv .eq. 1) then - mbrestsav = mbrest - else - if (mbrest .ne. mbrestsav) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must enter same multi-bar rest in every voice!') - call stop1() - end if - end if -c -c Zero out mbrestsav so can check at end of input block whether -c all voices have one -c - if (iv .eq. nv) mbrestsav=0 - end if - if (durq .eq. 'n') then -c -c Get new height -c - call g1etchar(lineq,iccount,durq) - if (index('+-123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected an integer after "rm[x]n"!') - call stop1() - end if - if (index('+-',durq).ne.0) iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - end if - if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after "rm"!') - call stop1() - end if - else if (durq .eq. '.') then -c -c Dotted pattern. Close out note. Mult time by 3/4. -c Set time for next note to 1/4. Start the note. -c - idotform = 1 - else if (durq .eq. ',') then - idotform = 3 -c -c Now flow to duration setting, as if durq=' ' -c - else if (index('oL',durq) .gt. 0) then -c -c Suppress full bar rest, or look left for height -c - if (charq .ne. 'r') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"o","L" options only legal for rest, not note!') - call stop1() - end if - go to 2 - else if (index('DF',durq) .gt. 0) then -c -c Double note for xtup. Must check here in case "D" or "F" came before "x" or on -c last note of xtup. Need to flag it in pmxa since affects horiz. spacing. -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) - go to 2 - else if (durq .eq. 'A') then -c -c Main note accidental option -c - call getchar(lineq,iccount,durq) - if (index('o+-<>',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"o",+","-","<",">" are the only legal options here!') - call stop1() - end if -c -c Need more stuff here -c - if (durq .ne. "o") then -c -c Back up 1, flow out, will get +|-|<|> next loop preceded by "A", and will -c proceed to number input checking -c - iccount = iccount-1 - end if - go to 2 - else if (durq .eq. 'T') then -c -c Single stem tremolo. Only option (optional) is 1,2,3, or 4. -c - call getchar(lineq,iccount,durq) - if (index('1234',durq) .eq. 0) iccount = iccount-1 - go to 2 - else if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character!') - print*,'ASCII code:',ichar(durq) - call stop1() - end if -c -c End of block for note options. -c -c Set the duration -c - if (idotform .gt. 0) then - if (idotform .eq. 1) then - nodur(ivx,nnl(ivx)) = i1fnodur(nnodur,dotq)*3/2 - else if (idotform .eq. 2) then - nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx)-1)/3 - else if (idotform .eq. 3) then - nodur(ivx,nnl(ivx)) = i1fnodur(nnodur,dotq) - else if (idotform .eq. 4) then - nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx)-1)/2 - end if - else if (ibarmbr.ne.nbars+1 .and. .not.fulbrp) then - nodur(ivx,nnl(ivx)) = i1fnodur(nnodur,dotq) -c -c Check for double dot -c - if (iddot .eq. 1) then - nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx))*7/6 - iddot = 0 - end if - else if (fulbrp) then - nodur(ivx,nnl(ivx)) = lenbar -c -c Use a one-line function to set nnodur. It gives inverse of ifnodur. -c - nnodur = index('62514x0x37', - * chax(48+int(log(.1+lenbar)/.69315)))-1 - fulbrp = .false. - end if - rest(ivx,nnl(ivx)) = charq.eq.'r' -c -c If inside forced beam, check if note is beamable -c - if (fbon) then - if (nodur(ivx,nnl(ivx)) .lt. 16) go to 120 - if (nnl(ivx) .gt. 1) then - if (nodur(ivx,nnl(ivx)-1) .eq. 0) go to 120 - end if - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Unbeamable thing in forced beam!') - call stop1() - end if -120 continue -c -c Get number of prior bars for later check on whether note spans bar line -c - nbb4 = itsofar(ivx)/lenbar - itsofar(ivx) = itsofar(ivx)+nodur(ivx,nnl(ivx)) - if (mod(itsofar(ivx),lenbar) .eq. 0) then - nbars = nbars+1 - if (shifton) barend = .true. -c -c Will check barend when 1st note of next bar is entered. -c - if (nbars .gt. 15) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Cannot have more than 15 bars in an input block!') - call stop1() - end if - nib(ivx,nbars) = nnl(ivx) - if (firstline .and. lenbar.ne.lenbr1) then -c -c Just finished the pickup bar for this voice. -c - if (itsofar(ivx) .ne. lenbr0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Pickup bar length disagrees with mtrnum0!') - call stop1() - end if - lenbar = lenbr1 - itsofar(ivx) = 0 - end if - else if (barend) then - if (shifton) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Bar ended with user-defined shift still on!') - call stop1() - end if - barend = .false. - else if (itsofar(ivx)/lenbar .gt. nbb4) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'This note spans a bar line!') - call stop1() - end if - if (idotform.eq.1 .or. idotform.eq.3) then - call g1etchar(lineq,iccount,charq) - if (index('abcedfgr',charq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected note name or "r" here!') - call stop1() - end if - idotform = idotform+1 - numnum = 1 - go to 28 - end if -c -c End of sub block for note-rest -c - else if (charq .eq. 'z') then - call g1etchar(lineq,iccount,charq) - if (index('abcdefg',charq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected chord note name here!') - call stop1() - end if -25 call g1etchar(lineq,iccount,durq) -c if (index('dre12345678',durq) .gt. 0) then - if (index('dre12345678c',durq) .gt. 0) then - go to 25 - else if (index('fsn',durq) .gt. 0) then -c -c Check for midi-only accid. CANNOT coesist with accidental position tweaks, so -c MUST come right after "f,s,n" -c - if (lineq(iccount+1:iccount+1) .eq. 'i') iccount=iccount+1 - go to 25 - else if (durq .eq. 'A') then - if (index('fsn',lineq(iccount-1:iccount-1)) .eq. 0) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Must have "f,s,n" before "A" in chord note!') - call stop1() - end if - go to 25 - else if (index('<>',durq) .gt. 0) then - if (index('fsnA',lineq(iccount-1:iccount-1)) .eq. 0) then -c if (index('fsncA',lineq(iccount-1:iccount-1)) .eq. 0) then ! Causes problems - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Must have "f,s,n,A" before "<" or ">"!') - call stop1() - end if - call g1etchar(lineq,iccount,durq) - if (index('1234567890.',durq) .eq. 0) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Expected a number to start here for accidental shift!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - go to 25 - else if (index('+-',durq) .gt. 0) then - if (index('1234567890.',lineq(iccount+1:iccount+1)) .eq. 0) - * go to 25 -c -c Number or '.' (durq) follows +/- . Get it. -c - call g1etchar(lineq,iccount,durq) - if (durq .eq. '.' .and. index('1234567890', - * lineq(iccount+1:iccount+1)) .eq. 0) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * '"." here must be followed by a digit!') - call stop1() - else if (index('sfndA',lineq(iccount-2:iccount-2)).eq.0) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Number after +/- must follow "d,s,f,n,A"!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - if (index('+-',durq) .eq. 0) then - iccount = iccount-1 - go to 25 - end if -c -c 2nd +/- -c - call g1etchar(lineq,iccount,durq) - if (durq .eq. '.') call g1etchar(lineq,iccount,durq) - if (index('1234567890',durq) .eq. 0) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Expected a number here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - go to 25 - else if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in chord note!') - call stop1() - end if - else if (charq .eq. 'G') then - ngr = 1 -9 call g1etchar(lineq,iccount,charq) - if (index('123456789',charq) .gt. 0) then - call readnum(lineq,iccount,durq,fnum) - ngr = nint(fnum) - iccount = iccount-1 - go to 9 - else if (index('AWulxs',charq) .gt. 0) then - go to 9 - else if (charq .eq. 'm') then - call g1etchar(lineq,iccount,charq) - if (index('01234',charq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'A digit less than 5 must follow "m" in a grace note!') - call stop1() - end if - go to 9 - else if (charq .eq. 'X') then -c -c Space before main note -c - call g1etchar(lineq,iccount,charq) - if (index('0123456789.',charq) .gt. 0) then - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - go to 9 - else - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'A number must follow "X" in a grace note!') - call stop1() - end if - end if -c -c At this point, charq is first note name in rest (grace?) -c - do 19 igr = 1 , ngr - numnum = 0 - if (igr .gt. 1) then -55 call g1etchar(lineq,iccount,charq) - if (charq .eq. ' ') go to 55 - end if - if (index('abcdefg',charq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'In grace, expected "a"-"g"!') - call stop1() - end if -18 call g1etchar(lineq,iccount,charq) - if (charq .ne. ' ') then - if (index('1234567',charq) .gt. 0) then - if (numnum .eq. 1) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only one of "+-1234567" allowed here in grace!') - call stop1() - end if - numnum = 1 - go to 18 -c else if (index('nfs',charq) .gt. 0) then - else if (index('+-nfs',charq) .gt. 0) then - go to 18 - end if -c -c Digits are possible octave numbers -c - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after note name in grace!') - call stop1() - end if -19 continue - else if (charq .eq. chax(92)) then - call chklit(lineq,iccount,literr) - if (literr .gt. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * literq(literr)) - call stop1() - end if - else if (charq .eq. '"') then -c -c pmx lyric -c - call chkpmxlyr(lineq,iccount,lyrerr) - if (lyrerr .gt. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * lyrerq(lyrerr)) - call stop1() - end if - else if (charq .eq. 'o') then -c -c Ornament on non-xtup note. "o" symbol must come AFTER the affected note -c - if (nnl(ivx) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"o" must be in same input block, after affected note!') - call stop1() - end if - call g1etchar(lineq,iccount,dumq) -c if (index('(stmgx+Tupf._)e:>^bc',dumq) .eq. 0 ) then - if (index('(stmgx+Tupf._)e:>^bcCG',dumq) .eq. 0 ) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal ornament!') - call stop1() - end if - if (dumq .eq. ':') then - call g1etchar(lineq,iccount,dumq) - if (dumq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected blank after "o:"!') - call stop1() - else if (.not.ornrpt) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Turned off repeated ornaments before they were on!') - call stop1() - end if - ornrpt = .false. - else if (dumq .eq. 'g') then - if (issegno) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Sorry, only one "segno" per input block!') - call stop1() - else if (ivx .ne. 1) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'segno can only be in voice 1!') - call stop1() - end if - issegno = .true. -12 call g1etchar(lineq,iccount,dumq) - if (dumq.eq.'-' .or. - * (ichar(dumq).ge.48.and.ichar(dumq).le.58)) go to 12 - if (dumq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in segno ornament symbol!') - call stop1() - end if - else if (dumq .eq. 'T') then -c -c Trill. may be followed by 't' and/or number. read 'til blank -c -22 call g1etchar(lineq,iccount,dumq) - if (dumq .eq. ':') then - if (lineq(iccount+1:iccount+1) .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected blank after ":"!') - call stop1() - end if - go to 32 - else if (dumq .ne. ' ') then - go to 22 - end if - else if (dumq .eq. 'f') then - call g1etchar(lineq,iccount,dumq) - if (index(' d+-:',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after "f" in fermata ornament symbol!') - call stop1() - end if - if (dumq .eq. 'd') call g1etchar(lineq,iccount,dumq) - if (dumq .eq. ':') go to 32 - else if (dumq .eq. 'e') then - call g1etchar(lineq,iccount,dumq) - if (index('sfn?',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after "e" in edit. accid. symbol!') - call stop1() - end if - call g1etchar(lineq,iccount,dumq) - if (dumq .eq. '?') call g1etchar(lineq,iccount,dumq) - else - call g1etchar(lineq,iccount,dumq) - end if - if (index('+- :',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in ornament symbol!') - call stop1() - end if - if (index('+-',dumq) .gt. 0) then - if (index('0123456789',lineq(iccount+1:iccount+1)).eq.0) then - call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, - * 'There should be an integer here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - if (durq .eq. ':') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Cannot shift AND repeat an ornament!') - call stop1() - end if -c -c 12/7/03 Allow horizontal shift on any ornament, not just breath and caes. -c - if (index('+-',durq) .gt. 0) then - if (index('.0123456789',lineq(iccount+1:iccount+1)) - * .eq. 0) then - call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, - * 'There should be a number here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - end if - end if -32 continue - if (dumq .eq. ':') then - if (lineq(iccount+1:iccount+1) .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '":" must be followed by blank in "o: "!') - call stop1() - else if (ornrpt) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Turned on repeated ornaments but already on!') - call stop1() - end if - ornrpt = .true. - end if - else if (index('st(){}',charq) .gt. 0) then - numint = 0 - iposn = 0 -8 call g1etchar(lineq,iccount,dumq) - iposn = iposn+1 - if (charq.eq.'t' .and. dumq.eq.'t') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Cannot use "t" as an option on a tie!') - call stop1() - end if - if (index('udltb+-fnhHpsv ',dumq) .eq. 0) then -c -c Check for explicit ID code. -c - ic = ichar(dumq) - if (ic.lt.48 .or. (ic.gt.57.and.ic.lt.65) .or. - * ic.gt.90) then -c -c Not 0-9 or A-Z, so exit -c - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in slur symbol!') - call stop1() - else -c -c It is a possible ID code. Right place? -c - if (iposn .ne. 1) then -c -c Slur ID is not 2nd! -c - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Slur ID must be second character in slur symbol!') - call stop1() - else if (charq.eq.'t' .and. fontslur) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Slur ID not allowed on non-postscript tie!') - call stop1() - else if (lineq(iccount+1:iccount+1).eq.'x') then - iccount = iccount+1 - end if - end if -c -c Slur ID is OK. Note it cannot be "H" at this point.. -c - go to 8 - else if (dumq .eq. 'H') then - if (iposn .eq. 1) go to 8 -c -c "H" is NOT an ID code. -c - if (.not.fontslur .and. charq.eq.'t') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Cannot reshape postscript ties this way!') - call stop1() - end if - if (lineq(iccount+1:iccount+1) .eq. 'H') then - iccount=iccount+1 - iposn = iposn+1 - end if - go to 8 - else if (index('fh',dumq).gt.0 .and. .not.fontslur - * .and. charq.eq.'t') then -c -c 3/9/03 Can't reshape postscript tie. -c - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Cannot reshape postscript ties this way!') - call stop1() - else if (dumq .eq. 'p') then -c -c local change in postscript slur/tie adjustment default -c - if (fontslur) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must use postscript slurs ("Ap") to use this option!') - call stop1() - end if - call g1etchar(lineq,iccount,dumq) - if (index('+-',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected "+" or "-" here!') - call stop1() - end if - call g1etchar(lineq,iccount,dumq) - if (index('st',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected "s" or "t" here!') - call stop1() - end if - iposn = iposn+2 - go to 8 - end if - if (index('udltbfnh',dumq) .gt. 0) then - go to 8 - else if (index('+-',dumq) .gt. 0) then - numint = numint+1 - if (fontslur .and. charq.eq.'t') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"+|-" for slur height only allowed in "s"-slurs!') - call stop1() - end if - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - if (numint .eq. 1) then - if (nint(fnum) .gt. 30) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Magnitude of slur height adjustment cannot exceed 30!') - call stop1() - end if - else if (numint .eq. 2) then - if (abs(fnum) .gt. 6.3) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Slur horiz shift must be in range (-6.3,6.3)!') - call stop1() - end if - else -c -c Third signed integer, must be a midslur or curve spec. -c - if (abs(fnum).gt.31) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Slur midheight must be in the range (-31,31)!') - call stop1() - end if - if (durq .eq. ':') then -c -c Expecting curve parameters. Get two numbers -c - do 41 i = 1 , 2 - iccount = iccount+1 - fnum = ichar(lineq(iccount:iccount))-48 - if (abs(fnum-3.5) .gt. 3.6) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Slur curve parameter must be in range (0,7)!') - call stop1() - end if -41 continue - iccount = iccount+1 - end if - end if - iccount = iccount-1 - go to 8 - else if (dumq .eq. 's') then -c -c What follows should be one or two signed numbers for adjustment of line break -c slur, end of 1st segment or start of second. -c - if (fontslur) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'May not use linebreak slur options with font-based slurs!') - call stop1() - end if - call g1etchar(lineq,iccount,dumq) - if (index('+-',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'This character must be "+" or "-"!') - call stop1() - end if - iccount = iccount+1 - call readnum(lineq,iccount,dumq,fnum) - if (nint(fnum) .gt. 30) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Magnitude of slur height adjustment cannot exceed 30!') - call stop1() - end if - if (index('+-',dumq) .gt. 0) then - iccount = iccount+1 - call readnum(lineq,iccount,dumq,fnum) - if (abs(fnum) .gt. 6.3) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Slur horiz shift must be in range (-6.3,6.3)!') - call stop1() - end if - end if - iccount = iccount-1 - go to 8 - else if (dumq .eq. 'H' .and. iposn.gt.1) then - if (lineq(iccount+1:iccount+1) .eq. 'H') iccount=iccount+1 - go to 8 - end if - else if (charq .eq. '?') then - call getchar(lineq,iccount,durq) - if (durq .eq. ' ') then - iccount = iccount-1 - else - if (durq .ne. '-') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expecting "-"!') - call stop1() - end if - call getchar(lineq,iccount,durq) - if (index('0123456789.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expecting number!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - end if - else if ((ichar(charq).ge.48.and.ichar(charq).le.57) .or. - * index('#-nx_',charq) .gt. 0) then -c -c We have a figure. Must come AFTER the note it goes under -c - if (itsofar(ivx).eq.0 .and. - * (.not.firstline.or.lenbr0.eq.0.or.lenbar.eq.lenbr0)) then -c -c Figure before first note in block -c - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Cannot put figure before first note in block!') - call stop1() - end if - if (charq.eq.'x') then - indxb = index(lineq(iccount:128),' ') - if (indxb .lt. 5) then - call errmsg(lineq,iccount+indxb-1,ibarcnt-ibaroff+nbars+1, - * 'Cannot have a blank here in floating figure!') - call stop1() - end if - end if - if (usefig) ifig = 1 -5 call g1etchar(lineq,iccount,charq) - if (index(' 0123456789#-nx_.:+sv',charq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in figure!') - call stop1() - else if (charq .eq. '+') then -c -c vertical offset, must be integer, then blank -c - call g1etchar(lineq,iccount,charq) - if (index('123456789',charq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Integer for vertical offset expected here!') - call stop1() - end if - call readnum(lineq,iccount,charq,fnum) - if (charq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Vertical offset must terminate figure!') - call stop1() - end if - iccount = iccount-1 - go to 5 - else if (charq .eq. 's') then - isligfont = .true. - end if - if (charq .ne. ' ') go to 5 - else if (charq .eq. '[') then - if (fbon) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Started forced beam while another was open!') - call stop1() - end if - fbon = .true. -17 call g1etchar(lineq,iccount,charq) - if (index('uljhf:',charq) .gt. 0) then - go to 17 - else if (index('+-',charq) .gt. 0) then - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - go to 17 - else if (charq .eq. 'm') then -c -c Forced multiplicity, next char should be 1-4 -c - call g1etchar(lineq,iccount,charq) - if (index('1234',charq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Forced multiplicity for a beam must be 1, 2, 3, or 4!') - call stop1() - end if - go to 17 - else if (charq .ne. ' ') then - if (index('0123456789',charq) .gt. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'After "[", digits must now be preceeded by "+" or "-"!') - print*,'You will have to edit older sources to meet this rqmt,' - print*,'but it was needed to allow 2-digit height adjustments.' - print*,'Sorry for the inconvenience. --The Management' - else - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after [!') - end if - call stop1() - end if - else if (charq .eq. ']') then - if (.not.fbon) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Forced beam stop with no corresponding start!') - call stop1() - end if - call g1etchar(lineq,iccount,charq) - if (charq .eq. '-') then - if (lineq(iccount+1:iccount+2) .ne. '[ ') then - call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, - * 'Only sequence allowed here is "[ "!') - call stop1() - else - iccount = iccount+2 - end if - else if (charq .eq. '[') then - if (lineq(iccount+1:iccount+1) .ne. ' ') then - call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, - * 'This character must be a blank!') - call stop1() - end if - else -c -c Forced beam is really ending -c - fbon = .false. - if (charq .eq. 'j') then - if (lineq(iccount+1:iccount+1) .ne. ' ') then - call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, - * 'This character must be a blank!') - call stop1() - end if - else if (charq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"]" must be followed by blank, "j", "-", or "["!') - call stop1() - end if - end if - else if (charq .eq. 'D') then -c -c Dynamic mark -c - if (nnl(ivx) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"D" must not come before any notes have been entered!') - call stop1() - end if - call checkdyn(lineq,iccount,ibarcnt-ibaroff+nbars+1) - else if (index('lhw',charq) .gt. 0) then -c -c Save position for later check -c - icclhw = iccount - call g1etchar(lineq,iccount,durq) - if (index('0123456789.+- ',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after "l", "w", or "h"!') - call stop1() - end if - isheadr = isheadr .or. charq .eq. 'h' - if (index(' +-',durq) .gt. 0) then -c -c There is a header (or lower string?) -c - if (index('+-',durq) .gt. 0) then -c -c User-defined vert offset (\internote). -c - if (charq .ne. 'h') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"+" or "-" not permitted here!') - call stop1() - end if -c -c Have "h" followed by +/- . Check for digit. -c Can blow durq since not using fnum for now, but... -c - call g1etchar(lineq,iccount,durq) - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'There must be a digit here!') - call stop1() - end if -c -c Have "h" followed by +/- followed by a digit. No need to get the number. -c -c call readnum(lineq,iccount,durq,fnum) - end if - if (charq .ne. 'w') then -c -c Header or lower string. -c - if (icclhw .ne. 1) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * '"h" or "l" must be first character in line!') - call stop1() - end if -c -c Read past the next line, which has the string. -c - call read10(charq,lastchar) - nline = nline+1 - iccount = 128 - else - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Symbol "w" (width) must be followed by a digit!') - call stop1() - end if - else -c -c Height or width change spec. Check if at start of piece. -c - if (ibarcnt .gt. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Symbol must go at top of first input block!') - call stop1() - end if - call readnum(lineq,iccount,durq,dimen) -c -c Check units. Convert to points -c - if (durq .eq. ' ' .or. durq .eq. 'p') then - dimen = dimen+.5 - else if (durq .eq. 'i') then - dimen = dimen*72+.5 - else if (durq .eq. 'm') then - dimen = dimen/25.4*72+.5 - else - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal unit; must be "p","i",or"m"!') - call stop1() - end if -c -c 151211 fix. May have extra character. -c - if (index('pim',durq) .gt. 0) then -c -c Get another character, see if it's blank -c - if (lineq(iccount+1:iccount+1) .ne. ' ') then - call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, - * 'This character should be a blank!') - call stop1() - end if - end if - if (charq .eq. 'h') then - ptheight = int(dimen) - else - widthpt = int(dimen) - end if - end if - else if (charq .eq. 'm') then -c -c Time signature change. Only allow at beginning of block. -c mtrnuml, mtrdenl (logical) and p (printable) will be input. -c mtrnuml=0 initially. (In common) -c -c Check whether at beginning of a block -c - if (ivx.ne.1 .or. nnl(1).ne.0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Meter change only OK in voice 1, at start of block!') - print*,'voice number is',ivx - call stop1() - end if - newmeter = .true. - if (index('o0123456789',lineq(iccount+1:iccount+1)).eq.0) then - call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in "m" command for meter change!') - call stop1() - end if - call readmeter(lineq,iccount,mtrnuml,mtrdenl) - if (mtrnuml .eq. 0) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Digit 0 not allowed here!') - call stop1() - end if - call readmeter(lineq,iccount,mtrnmp,mtrdnp) -c -c Read past printed time signature; not used in pmxa. -c - lenbeat = i1fnodur(mtrdenl,'x') - lenmult = 1 - if (mtrdenl .eq. 2) then - lenbeat = 16 - lenmult = 2 - end if - lenbar = lenmult*mtrnuml*lenbeat - mtrnuml = 0 - else if (charq .eq. 'C') then - call g1etchar(lineq,iccount,durq) - if (.not.(index('tsmanrbf',durq).gt.0 .or. - * (ichar(durq).ge.48 .and. ichar(durq).le.56))) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must have t,s,m,a,n,r,b,f or 0-8 after C!') - call stop1() - end if - else if (charq .eq. 'R') then - if (ivx .ne. 1) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Repeats can only go in voice 1!') - call stop1() - end if -c10 call g1etchar(lineq,iccount,durq) -c if (index('lrdDbz',durq) .gt. 0) go to 10 -c if (durq .ne. ' ') then -c call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, -c * 'Illegal character after "R" (repeat/double bar)!') -c call stop1() -c end if - call g1etchar(lineq,iccount,durq) - call g1etchar(lineq,iccount,dumq) - if (index('l Xr Xd XD Xb Xz XlrXdlX',durq//dumq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after "R*" (repeat/double bar)!') - call stop1() - end if - if (dumq .ne. ' ') then - call g1etchar(lineq,iccount,durq) - if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must have blank after "R**" (repeat/double bar)!') - call stop1() - end if - end if - else if (charq .eq. 'V') then -c -c Ending -c - if (iv .ne. 1) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Voltas are only allowed in voice #1!') - call stop1() - else if (isvolt) then - print* - print*,'*******WARNING********' - write(15,'(/,a)')'*******WARNING********' - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'There is more than one volta in this input block.!') - print*,'This may work in a score, but WILL NOT work in parts.' - print*, - *'Safest to have only 1 volta per block, at the start of the block' - write(15,'(a)') - * 'This may work in a score, but WILL NOT work in parts.' - write(15,'(a)') - *'Safest to have only 1 volta per block, at the start of the block' - end if - isvolt = .true. - lvoltxt = 0 -11 call g1etchar(lineq,iccount,durq) - if (durq .ne.' ') then - go to 11 - end if - else if (charq .eq. 'B') then - continue - else if (charq .eq. 'P') then - if (ivx.ne.1 .or. nnl(1).ne.0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only allowed at beginning of block!') - call stop1() - end if -16 call g1etchar(lineq,iccount,durq) - if (durq.eq.'l'.or.durq.eq.'r'.or.(ichar(durq).ge.48 .and. - * ichar(durq).le.57)) go to 16 - if (durq .eq. 'c') then -c -c Expect a centered name, and it has to be last option -c - call g1etchar(lineq,iccount,durq) - if (durq .eq. '"') then -c -c Quoted name, go to next quote mark -c - do 35 iccount = iccount+1 , 127 - if (lineq(iccount:iccount).eq.'"' .and. - * lineq(iccount-1:iccount-1).ne.'\') go to 36 -35 continue - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Missing close quote after page number command (P)!') - call stop1() -36 continue - else if (durq .ne. ' ') then -c -c Space-delimited name, look for next blank -c - do 37 iccount = iccount+1 , 127 - if (lineq(iccount:iccount) .eq. ' ') go to 38 -37 continue -38 continue - end if - else if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only "l","r","c" or digit allowed after "P"!') - call stop1() - end if - else if (charq .eq. 'W') then - call g1etchar(lineq,iccount,durq) - if (index('.0123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected a number to start here!') - call stop1() - end if - call readnum(lineq,iccount,durq,wminnh(ibarcnt+nbars+1)) - else if (charq .eq. 'T') then -c -c Titles -c - call g1etchar(lineq,iccount,durq) - if (index('itc',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must put "i", "t", or "c" after "T"!') - call stop1() - end if - ihead = ihead+2**(index('itc',durq)-1) -c -c Maybe a number after 'Tt', but ignore here. Read past string on next line. -c - call read10(charq,lastchar) - nline = nline+1 - iccount = 128 - else if (charq .eq. 'A') then -27 call g1etchar(lineq,iccount,durq) -c if (index('rbsdeK',durq) .gt. 0) then - if (index('rbsdK',durq) .gt. 0) then - go to 27 - else if (durq .eq. 'e') then -c -c Check for is4bignv. Must do here to catch first \internote, written in topfile -c before ever calling getnote. Initialize as .false. in pmxa. Make it true only -c if nv>7, AI not set, Ai not set. -c - is4bignv = nv.gt.7 .and. .not.AIset - go to 27 - else if (durq .eq. 'v') then - if (ibarcnt .eq. 0) novshrinktop = .true. - go to 27 - else if (durq .eq. 'a') then - call g1etchar(lineq,iccount,durq) - if (index('0123456789.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'After "Aa", need decimal number!') - call stop1() - end if - call readnum(lineq,iccount,durq,fbar) - iccount = iccount-1 - go to 27 - else if (durq .eq. 'i') then - is4bignv = .false. - AIset = .true. - call g1etchar(lineq,iccount,durq) -c -c Local interstaff correction. Set to -1. if not specifiec, or after use, -c or anytime except at top, since pmxb handles all times except at top. -c - call readnum(lineq,iccount,durq,tintstf) - if (ibarcnt .eq. 0) fintstf = tintstf - iccount = iccount-1 - go to 27 - else if (durq .eq. 'I') then -c -c Global interstaff correction. Use in place of fintstf if fintstf<0 -c - is4bignv = .false. - AIset = .true. - call g1etchar(lineq,iccount,durq) - call readnum(lineq,iccount,durq,gintstf) - iccount = iccount-1 - go to 27 - else if (durq .eq. 'o') then - optimize = .true. - go to 27 - else if (durq .eq. 'S') then - do 50 iiv = 1 , noinst - call g1etchar(lineq,iccount,durq) - if (index('-0st',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'After "AS", need nv instances of "s,t,-,0"!') - call stop1() - end if - if (durq.eq.'-'.or.durq.eq.'s') then - isize(iiv) = 1 - else if (durq.eq.'t') then - isize(iiv) = 2 - end if -50 continue - go to 27 - else if (durq .eq. 'p') then - fontslur = .false. -42 continue - call g1etchar(lineq,iccount,durq) - if (index('+-',durq) .gt. 0) then -c -c Characters to change defaults for ps slurs -c - call g1etchar(lineq,iccount,durq) - if (index('shtc',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only letters allowed here are "s","h","t","c"!') - call stop1() - end if -c -c Now check for another default modifier -c - go to 42 - else if (index('lh',durq) .gt. 0) then -c -c Flags for optional linebreak ties or header specials -c - go to 42 - else - iccount = iccount-1 - end if - go to 27 - else if (durq .eq. 'N') then -c -c Override default name for a part file. Must have part number, then -c partname in quotes. Must be on line by itself, and start in column 1. -c Will only be passed thru to scor2prt. -c - if (iccount .ne. 2) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"AN" must start in column 1!') - call stop1() - end if - ndxquote = index(lineq,'"') - if (ndxquote.lt.4 .or. ndxquote.gt.5 .or. - * index('123456789',lineq(3:3)).eq.0 .or. - * (ndxquote.eq.5.and.index('012',lineq(4:4)).eq.0)) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"AN" must be followed by inst. #, then quote!') - call stop1() - end if - ndxquote = index(lineq(ndxquote+1:128),'"') - if (ndxquote .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'In "AN", file name must be in quotes!') - call stop1() - end if - iccount = 128 - else if (durq .eq. 'T') then - cstuplet = .true. - else if (durq .eq. 'R') then -c -c Get full name of normal include file; must occupy remainder of line -c - call getpmxmod(.false.,lineq(iccount+1:128)) - iccount = 128 - else if (durq .eq. 'c') then - call g1etchar(lineq,iccount,durq) - if (index('l4',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only "l" or "4" is allowed here!') - call stop1() - end if - if (durq .eq. 'l' ) then - hoffpt = -25 - voffpt = -45 - else if (durq .eq. '4') then - ptheight = 745 - widthpt = 499 - hoffpt = -24 - voffpt = -24 - end if - go to 27 - else if (durq .eq. 'V') then - call g1etchar(lineq,iccount,durq) - if (index('+-',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only "+" or "-" is allowed here!') - call stop1() - end if - call g1etchar(lineq,iccount,durq) - if (index('0123456789.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'A number for vert shift before \eject must start here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - if (index('+-',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only "+" or "-" is allowed here!') - call stop1() - end if - call g1etchar(lineq,iccount,durq) - if (index('0123456789.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'A number for vert shift after \eject must start here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - go to 27 - else if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, -c * 'After "A" must follow one of the letters abcdeiINprRsST!') - * 'After "A" must follow one of abcdeiILNprRsSTvV!') - print*,'For AS, since ver. 2.7, must only have noinst args.' - write(15,'(a)') - * 'For AS, since ver. 2.7, must only have noinst args.' - call stop1() - end if - else if (charq .eq. 'K') then -c -c Rules and function of K command -c -c Only 1 K +/-n +/-m allowed per block if n.ne.0 (transposition). isig1 is -c initial sig, and must be passed to pmxb because it is needed when topfile -c is called, which is before the K+n+m command is read in pmxb. Also, we -c compute and save ibrkch and newkey for each syst, accounting for key changes, -c then adjust fbar to make poenom much more accurate. -c Jan 02: Now K-0+[n] is used to transpose e.g. from f to f#. -c -77 continue - call g1etchar(lineq,iccount,durq) -c if (index('+-i',durq) .eq. 0) then - if (index('+-in',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"K" (transpose or key change) must be followed by "+,-,i,n"!') - call stop1() - end if - if (durq .eq. 'n') go to 77 - if (durq .ne. 'i') then -c -c Normal key change and/or transposition) -c -c iccount = iccount+1 - num1 = 44-ichar(durq) -c -c num1= +1 or -1 -c - ztrans = num1.eq.-1 - call g1etchar(lineq,iccount,durq) - if (index('0123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '1st +/- must be followed by a number!') - call stop1() - end if -c iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - num1 = nint(fnum)*num1 - ztrans = ztrans .and. num1.eq.0 - if (index('+-',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '1st number after "K" must be followed by "+,-"!') - call stop1() - end if - iccount = iccount+1 - num2 = 44-ichar(durq) - call readnum(lineq,iccount,durq,fnum) - num2 = num2*int(fnum+.1) - if (num1.eq.0 .and. .not.ztrans) then -c -c Key change, only one per block allowed -c - if (iskchb) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Only one key change allowed per input block!') - call stop1() - end if - iskchb = .true. - nkeys = nkeys+1 - kchmid(nkeys) = mod(itsofar(ivx),lenbar).ne.0 -c -c Make ibrkch = barnum-1 if at start of bar, so fsyst advances ok at linebreak. -c - ibrkch(nkeys) = ibarcnt+nbars - if (kchmid(nkeys)) ibrkch(nkeys) = ibrkch(nkeys)+1 - newkey(nkeys) = num2+idsig -c 130316 -c do 43 iinst = 1 , noinst - midisig = newkey(nkeys) -c43 continue - else -c -c Transposition -c - fulltrans = .true. - if (ibarcnt .gt. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Transposition must be at top of first input block!') - call stop1() - end if - isig1 = num2 - idsig = isig1-newkey(1) -c -c idsig is the difference between sig after transposition, and sig in setup. -c It may alter # of accid's in key changes if there is transposition. -c - end if - else ! durq='i' -c -c 110522/110529 -c Instrument-wise transposition Ki[iInstTrans][+/-][iTransAmt][+/-][iTransKey] -c and repeat i[...] for multiple instruments. Store info here if ibarcnt=0 -c so can pass to topfile (via comInstTrans), which is called before getnote. -c Otherwise, will store info from getnote. Initialize EarlyTransOn and -c LaterInstTrans to .false. in blockdata. Set EarlyTransOn from here; -c LaterInstTrans from g1etnote. Zero both out after use. nInstTrans really -c only needed for instrument-signatures, not transpositions. iTransAmt is -c ALWAYS active per instrument. Set up instno(iv) so can fetch iTransAmt for -c each staff. -c - call GetiTransInfo(.true.,ibarcnt,lineq,iccount, - * ibaroff,nbars,noinst) - end if - else if (charq .eq. '|') then -c -c Optional bar symbol -c - if (mod(itsofar(ivx),lenbar).ne.0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Bar line marker out of place!') - call stop1() - else if (shifton) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Bar ended with user-defined shift still on!') - call stop1() - end if - else if (charq .eq. '/') then - if (ornrpt) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'WARNING: Block ended with repeated ornament still on!') - ornrpt = .false. - end if - if (stickyS) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'WARNING: Block ended with sticky stemshrink still on!') - stickyS = .false. - end if - if (fbon) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Block ended with forced beam open!') - call stop1() - else if (shifton) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Bar ended with user-defined shift still on!') - call stop1() -c -c 140215 Temporary to allow clef change in stup -c -c else if (gotclef) then -c call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, -c * 'May not enter clef at end of input block!') -c call stop1() - end if - barend = .false. -c -c Perform time checks -c - if (mod(itsofar(ivx),lenbar).ne.0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Block duration not divisible by lenbar!') - print*,'lenbar, timesofar are ',lenbar,itsofar(ivx) - call stop1() - else if (ivx.gt.1 .and. itsofar(ivx).ne.itsofar(1)) then - print* - print*,'No of bars in voice 1, current voice:', - * itsofar(1)/lenbar,itsofar(ivx)/lenbar - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Block duration not equal to voice 1!') - call stop1() - end if - call g1etchar(lineq,iccount,durq) - if (durq .eq. ' ' .and. iv.eq.nv) then -c -c End of input block -c - loop = .false. - else -c -c Start a new voice -c - if (lenbr0.ne.0 .and. firstline) lenbar = lenbr0 - nbars = 0 - if (durq .eq. ' ') then -c -c New voice is on next staff -c - iv = iv+1 - ivx = iv - else -c -c New voice is on same staff. Set up for it -c - ivx = nv+1 - do 23 iiv = 1 , nv - if (nvmx(iiv) .eq. 2) ivx = ivx+1 -23 continue - if (ivx .gt. nm) then - write(*,'(1x,a21,i3,a23)')'Cannot have more than',nm, - * ' lines of music at once' - call stop1() - end if - nvmx(iv) = 2 - ivmx(iv,2) = ivx - itsofar(ivx) = 0 - nnl(ivx) = 0 - do 24 j = 1 , 200 - rest(ivx,j) = .false. - nacc(ivx,j) = 0 -24 continue -c -c For midi stuff, record that there is a 2nd line of music in this voice -c - if (ismidi) twoline(iv) = .true. - end if - end if - iccount = 128 - else if (charq .eq. 'S') then -c -c New nsyst: for use with partmaker scor2prt, for parts w/ diff # of systs. -c - if (ibarcnt .gt. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"S" can only be in first input block!') - call stop1() - end if - call g1etchar(lineq,iccount,durq) - if (index('123456789 ',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'A digit must follow "S"!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnsyst) - nsyst = nint(fnsyst) -14 continue - if (durq .eq. 'P') then -c -c New npages for parts. -c - call g1etchar(lineq,iccount,durq) - if (index('123456789 ',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must have a number here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnsyst) - npages = nint(fnsyst) - go to 14 - else if (durq .eq. 'm') then -c -c Reset musize (musicsize). -c - call g1etchar(lineq,iccount,durq) - if (index('123456789 ',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must have a number here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnsyst) - musize = nint(fnsyst) - wheadpt = whead20*musize - go to 14 - else if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in "S" symbol!') - call stop1() - end if - else if (charq .eq. 'L') then -c -c Force line break -c - call g1etchar(lineq,iccount,durq) - if (durq .eq. 'C') then -c -c Coda, no real line break, just get coda length -c - if (ishort .ne. 1) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Cannot use "LC" without first using "L[n]S"!') - call stop1() - end if - ishort = 0 - call g1etchar(lineq,iccount,durq) - if (index('1234567890.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Need number to define coda length!') - call stop1() - end if - call readnum(lineq,iccount,durq,codafrac) - poefa(isysflb(nflb)) = poefa(isysflb(nflb))+codafrac - if (index(' n',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Need blank or "n" here!') - call stop1() - end if - return - end if - nflb = nflb+1 - ibarflb(nflb) = ibarcnt+nbars+1 - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Need integer to define forced line break!') - call stop1() - end if - call readnum(lineq,iccount,durq,sysflb) - isysflb(nflb) = nint(sysflb) - if (isysflb(nflb) .eq. 1) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'For now, "L1" not allowed!') - call stop1() - end if - if (nflb .gt. 1) then -c -c Check if new number is > prior one -c - if (isysflb(nflb) .le. isysflb(nflb-1)) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'You already forced a line break at a later line!') - call stop1() - end if - end if - if (npages .eq. 0) then - print* - print*,'WARNING! You forced a line break at line ', - * isysflb(nflb),' but npage = 0. Continue?' - read(*,'(a)') charq - if (index('yY',charq) .eq. 0) call stop1() - else if (isysflb(nflb) .gt. nsyst) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Forced line break at line num > nsyst!') - call stop1() - else if (index(' PMS',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must have " ", "P", "M", or "S" here!') - call stop1() - end if -49 continue ! Transfer up from below to allow S after M - if (durq .eq. 'S') then -c -c Shortened line, get shortening fraction -c - ishort = 1 - call g1etchar(lineq,iccount,durq) - if (index('1234567890.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Need number to define line shortening fraction!') - call stop1() - end if - call readnum(lineq,iccount,durq,shortfrac) - poefa(isysflb(nflb)) = shortfrac - if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Need blank here!') - end if - end if - if (durq .eq. 'P') then -c -c Forced page break here, get page number. -c - call g1etchar(lineq,iccount,durq) - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Need integer to define forced page break!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - nfpb = nfpb+1 - ipagfpb(nfpb) = nint(fnum) - isysfpb(nfpb) = isysflb(nflb) - if (ipagfpb(nfpb) .gt. npages) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Forced page break at page num > npages!') - call stop1() - else if (nfpb .gt. 1) then - if (ipagfpb(nfpb) .le. (ipagfpb(nfpb-1))) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Forced page break numbers must increase!') - call stop1() - end if - end if - end if - if (index(' M',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in linebreak symbol!') - call stop1() - else if (durq .eq. 'M') then - nmovbrk = nmovbrk+1 - isysmb(nmovbrk) = isysflb(nflb) - call g1etchar(lineq,iccount,durq) -31 if (durq .eq. '+') then -c -c Vertical spacing, read past number. -c - call g1etchar(lineq,iccount,durq) - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Integer required here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - go to 31 - else if (durq .eq. 'i') then -c -c Change indentation, -c - call g1etchar(lineq,iccount,durq) - if (index('.123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Decimal number required here!') - call stop1() - end if -c -c fracsys was initialized in block data to all 0.'s -c - call readnum(lineq,iccount,durq,fracsys(nmovbrk)) - go to 31 - else if (durq .eq. 'c') then - call g1etchar(lineq,iccount,durq) - go to 31 - else if (durq .eq. 'r') then - call g1etchar(lineq,iccount,durq) - if (index('+-',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must have "+" or "-" after "r" as movement break option!') - call stop1() - end if - call g1etchar(lineq,iccount,durq) - go to 31 - else if (durq .eq. 'n') then -c -c Change # of voices. Input ninow, iorig(1...ninow). Will use names, -c staves per inst. and clefs corr. to iorig in original list of instruments. -c - nv = 0 - call g1etchar(lineq,iccount,durq) - if (durq .eq. ':') then -c -c Signals a 2-digit number, get next two characters -c - call g1etchar(lineq,iccount,durq) - call g1etchar(lineq,iccount,dumq) - if (index('12',durq).eq.0 - * .or.index('0123456789',dumq).eq.0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal new number of instruments '//durq//dumq// - * ' at movement break!') - call stop1() - end if - read(lineq(iccount-1:iccount),'(i2)')ninow - else -c -c durq is a single digit number for noinow -c - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal new number of instruments '//durq// - * ' at movement break!') - call stop1() - end if - ninow = ichar(durq)-48 - end if - if (ninow.gt.noinst) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'New number of instruments must be <= original!') - call stop1() - end if - do 63 iinow = 1 , ninow - call g1etchar(lineq,iccount,durq) - if (durq .eq. ':') then -c -c Signals a 2-digit number -c - call g1etchar(lineq,iccount,durq) - call g1etchar(lineq,iccount,dumq) - if (index('12',durq).eq.0 - * .or.index('0123456789',dumq).eq.0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal 2-digit instrument number '//durq//dumq// - * ' at movement break!') - call stop1() - end if - read(lineq(iccount-1:iccount),'(i2)')iorig - else -c -c durq is a single digit number for iorig -c - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal instrument number '//durq// - * ' at movement break!') - call stop1() - end if - iorig = ichar(durq)-48 - end if - if (iorig .gt. noinst) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'New instrument number must be <= original noinst!') - call stop1() - end if - nv = nv+nsperi(iorig) -63 continue - do 61 iiv = 1 , nv -c -c Get clef names -c - call g1etchar(lineq,iccount,durq) - if (.not.(index('tsmanrbf',durq).gt.0 .or. -c * (ichar(durq).ge.48 .and. ichar(durq).le.55))) then - * (ichar(durq).ge.48 .and. ichar(durq).le.56))) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must have t,s,m,a,n,r,b,f or 1-7 as clef symbol here!') - call stop1() - end if -c -c Initialize new voices -c - nvmx(iiv) = 1 - ivmx(iiv,1) = iiv - itsofar(iiv) = 0 - nnl(iiv) = 0 - do 62 j = 1 , 200 - rest(iiv,j) = .false. -62 continue -61 continue -c -c Loop back up, this might not be last option in M -c - call g1etchar(lineq,iccount,durq) - go to 31 - else if (durq .eq. 'S') then - go to 49 - else if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after Movement break symbol!') - call stop1() - end if - if (fracsys(nmovbrk) .lt. 0.001) then -c -c Since fracsys was not explicitly set, set it to prior value. -c - if (nmovbrk .eq. 1) then - fracsys(nmovbrk) = fracindent - else - fracsys(nmovbrk) = fracsys(nmovbrk-1) - end if - end if - end if -c -c Just before exiting if-block for forced line breaks, set counter to use when -c dealing with vertical space calcs -c - nistaff(nflb) = nv-1 - else if (charq .eq. 'F') then - usefig = .false. - else if (charq .eq. 'X') then - call g1etx(lineq,iccount,shifton,ibarcnt-ibaroff+nbars+1, - * udsp(ibarcnt+nbars+1),wheadpt) - else if (charq .eq. 'I') then -c -c MIDI settings. -c - if (ivx.ne.1 .or. nnl(1).ne.0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'MIDI stuff only allowed at start of block!') - call stop1() - end if - if (nv .gt. 15) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Sorry but MIDI does not work with more than 15 voices!') - call stop1() - end if - ismidi = .true. - print*,'#11087 Calling getmidi from g1etnote' - call getmidi(noinst,lineq,iccount,ibarcnt,ibaroff,nbars,lenbar, - * mtrdenl,nv,.true.) - else if (charq .eq. 'M') then - call setmac(lineq,iccount,ibarcnt,ibaroff,nbars,charq,durq,ivx, - * nline) - else if (index(',.',charq) .gt. 0) then -c -c Continued rhythmic shortcut -c - idotform = index('. ,',charq) - if (idotform .eq. 1) then -c -c Change duration of prior note -c - itsofar(ivx) = itsofar(ivx)-nodur(ivx,nnl(ivx)) - nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx))*3/2 - itsofar(ivx) = itsofar(ivx)+nodur(ivx,nnl(ivx)) - end if - idotform = idotform+1 - numnum = 1 - cdot = .true. - go to 1 - else - print*,'ASCII code:',ichar(charq) - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'This character is not allowed here!') - print*,'ASCII code:',ichar(charq) - call stop1() - end if - return - end - subroutine g1etset(nv,noinst,mtrnuml,mtrdenl,mtrnmp,mtrdnp, - * xmtrnum0,newkey,npages,nsyst,musize,bottreb) - parameter(nm=24,maxblks=9600) - character*131072 bufq - character*1 chax - integer*2 lbuf(maxblks) - common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq - character*128 lineq - logical lastchar,issegno,isheadr,isvolt,fbon,bottreb, - * newway - common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, - * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 - common /commidisig/ midisig -c -c Get the first line -c - iccount = 0 - nline = 1 -9 call getbuf(lineq) - if (lineq(1:1) .eq. '%') then - nline = nline+1 - go to 9 - end if - if (lineq(1:3) .eq. '---') then -c -c Have TeX input until next line that starts with '---' -c -3 nline = nline+1 - call getbuf(lineq) - if (ilbuf .gt. nlbuf) go to 1 - go to 2 -1 print*,'You did not terminate type 0 TeX input with "---"' - call stop1() -2 continue - if (lineq(1:3) .ne. '---') go to 3 -c -c Force a new line read on first call to readin -c - iccount = 128 - end if -c -c Here, lineq and nline are first non-TeX lines. -c - nv = nint(readin(lineq,iccount,nline)) - if (nv .gt. nm) then - write(*,'(1x,a46,i3)') - * 'In setup data, number of voices cannot exceed',nm - call stop1() - end if - noinst = nint(readin(lineq,iccount,nline)) - if (noinst .gt. nv) then - write(*,'(a)') - * 'In setup data, cannot have more instruments than staves' - call stop1() - end if - newway = noinst.le.0 - if (newway) noinst = -noinst - do 10 iinst = 1 , noinst -c -c Seve # of staves per inst in case later drop some inst's. -c - if (newway) then - nsperi(iinst) = nint(readin(lineq,iccount,nline)) - else if (iinst .gt. 1 ) then - nsperi(iinst) = 1 - else - nsperi(iinst) = nv-noinst+1 - end if -10 continue - mtrnuml = nint(readin(lineq,iccount,nline)) - mtrdenl = nint(readin(lineq,iccount,nline)) -cc -cc Kluge!!! -cc -c if (mtrdenl .eq. 1) then -c mtrdenl = 2 -c mtrnuml = mtrnuml*2 -c end if - mtrnmp = nint(readin(lineq,iccount,nline)) - mtrdnp = nint(readin(lineq,iccount,nline)) - if (mtrnmp.eq.0 .and. mtrdnp .ge. 8) then - write(*,'(a)')'In setup data, with mtrnmp=0, mtrdnp must be <8' - call stop1() - end if - xmtrnum0 = readin(lineq,iccount,nline) - newkey = nint(readin(lineq,iccount,nline)) -c 130316 -c do 11 iinst = 1 , noinst - midisig = newkey -c11 continue - npages = nint(readin(lineq,iccount,nline)) - nsyst = nint(readin(lineq,iccount,nline)) - musize = nint(readin(lineq,iccount,nline)) - fracindent = readin(lineq,iccount,nline) - if (fracindent .ge. 1.) then - write(*,'(a)')'In setup data, fracindent must be <1' - call stop1() - end if - if (npages .gt. nsyst) then - print*,'Error in input file: npages > nsyst' - call stop1() - else if((musize-16)*(musize-20)*(musize-24)*(musize-29).ne.0) then - call printl('Musicsize must be 16, 20, 24, or 29') - call stop1() - end if -c -c Next noinst non-comment lines are names of instruments. -c - do 4 i = 1 , abs(noinst) -5 call getbuf(lineq) - nline = nline+1 - if (lineq(1:1) .eq. '%') go to 5 -4 continue -c -c Mext non-comment line has nv clef names -c -6 call getbuf(lineq) - nline = nline+1 - if (lineq(1:1) .eq. '%') go to 6 - do 7 iv = 1 , nv -c if (index('brnamstf01234567',lineq(iv:iv)) .eq. 0) then - if (index('brnamstf012345678',lineq(iv:iv)) .eq. 0) then - call errmsg(lineq,iv,0, - * 'There should be a clef symbol here!') - call stop1() - end if -7 continue - if (lineq(nv+1:nv+1) .ne. ' ') then - call errmsg(lineq,nv+1,0, - * 'There should be a blank here!') - call stop1() - end if -c -c Set flag if voice 1 is treble, since it affects vertical spacing -c -c bottreb = lineq(1:1).eq.'t' - bottreb = index('t08',lineq(1:1)).gt.0 -c -c Next non-comment line has path name -c -8 call getbuf(lineq) - nline = nline+1 - if (lineq(1:1) .eq. '%') go to 8 - lpath = index(lineq,' ')-1 - if (index('/:'//chax(92),lineq(lpath:lpath)) .eq. 0) then - call errmsg(lineq,lpath,0, - * 'Last character of pathname is not "/",":", or "' - * //chax(92)//'"!') - call stop1() - end if - return - end - subroutine g1etx(lineq,iccount,shifton,ibar,udsp,wheadpt) -c -c Parse "X" commands. Ignore all "B"; "P" means to ignore whole symbol. -c In scor2prt, must strip out "P", copy only "B" and "P"-type "X"-symbols. -c - logical shifton,number,btest - character*128 lineq - character*1 charq,dumq - number = .false. - nPBSc = 0 -1 call g1etchar(lineq,iccount,charq) - if (index('PBS:',charq) .gt. 0) then -c -c Continue checking here even if "P". -c - ipbsc = index('PBS:',charq) - if (btest(nPBSc,ipbsc)) then - call errmsg(lineq,iccount,ibar,'Only one allowed per symbol!') - call stop1() - end if - nPBSc = ibset(nPBSc,ipbsc) - go to 1 - else if (index('+-.0123456789',charq) .gt. 0) then - number = .true. - if (index('+-',charq) .gt. 0) then - call g1etchar(lineq,iccount,dumq) - if (index('.0123456789',dumq) .eq. 0) then - call errmsg(lineq,iccount,ibar,'Expected a number here!') - call stop1() - end if - end if - call readnum(lineq,iccount,dumq,fnum) - if (charq.eq.'-') fnum = -fnum - if (dumq .ne. 'p') then - iccount = iccount-1 - fnum = fnum*wheadpt - end if - go to 1 - else if (charq .ne. ' ') then - call errmsg(lineq,iccount,ibar,'Not allowed in "X" symbol!') - call stop1() - end if -c -c Done with parsing. Other checks -c - if (iand(6,nPBSc).eq.6 .or. iand(24,nPBSc).eq.24) then - call errmsg(lineq,iccount-1,ibar, - * 'Cannot have both "P" and "B" or "S" and ":"!') - call stop1() - end if - if (btest(nPBSc,4)) then - if (number) then - if (shifton) then - call errmsg(lineq,iccount-1,ibar, - * 'Started a group shift without stopping prior one!') - call stop1() - else - shifton = .true. - end if - else - if (.not. shifton) then - call errmsg(lineq,iccount-1,ibar, - * 'Ended a group shift without starting one!') - call stop1() - else - shifton = .false. - end if - end if - end if -c -c P off, S off, c off => normal user-defined space. Add to udsp (later fsyst) -c - if (iand(nPBSc,26).eq.0) udsp = udsp+fnum - if (.not.number .and. .not.btest(nPBSc,4)) then - call errmsg(lineq,iccount-1,ibar, - * 'Must have either a number or a colon in "X" symbol!') - call stop1() - end if - return - end -c integer*4 function mytime() -c CHARACTER(10) tq -c CALL DATE_AND_TIME(TIME=tq) -c read(tq,'(2i2,f6.3)')ih,im,ts -c mytime = 1000*(ts+60*(im+60*ih)) -c return -c end - subroutine getbuf(lineq) - parameter (maxblks=9600) - character*(*) lineq - character*131072 bufq - integer*2 lbuf(maxblks) - common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq - lineq = bufq(ipbuf+1:ipbuf+lbuf(ilbuf)) - ipbuf = ipbuf+lbuf(ilbuf) - ilbuf = ilbuf+1 - return - end - subroutine getchar(lineq,iccount,charq) - parameter (nm=24) -c -c Gets the next character out of lineq*128. If pointer iccount=128 on entry, -c then reads in a new line. Resets iccount. Ends program if no more input. -c - common /comget/ lastchar,rptnd1,sluron(nm,2),fbon,ornrpt,stickyS, - * movbrk,movnmp,movdnp,movgap,parmov,fintstf,gintstf, - * rptprev,equalize,rptfq1,rptfq2 - logical lastchar,rptnd1,sluron,fbon,rptprev,ornrpt - common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac - logical mrecord,mplay,endmac,equalize,stickyS - character*1 charq,rptfq1,rptfq2 - character*128 lineq,lnholdq - if (iccount .eq. 128) then - call read10(lineq,lastchar) - if (lastchar) return - if (.not. endmac) then - iccount = 0 - else - endmac = .false. - iccount = icchold - lineq = lnholdq - end if - if (mrecord) then - call mrec1(lineq,iccount,ndxm) - end if - end if - iccount = iccount+1 - charq = lineq(iccount:iccount) - return - end - subroutine getdyn(ivx,ip,irest,iornq,lineq,iccount) - parameter (nm=24) - common /comdyn/ ndyn,idyndat(99),levdsav(nm),ivowg(12),hoh1(12), - * hoh2(12),hoh2h1(2),ntxtdyn,ivxiptxt(41),txtdynq(41), - * idynda2(99),levhssav(nm),listcresc,listdecresc - character*128 txtdynq - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - logical fontslur,upslur,WrotePsslurDefaults - character*1 durq,chax - character*4 dynsymq - character*128 lineq -c -c Get info for dynamic mark. Enter after getting "D", iccount sits on "D" -c Bits in idyndat are as follows -c 00-03 ivx -c 04-11 ip -c 12-15 code for type of mark -c 0 => arbitrary text -c 1-12 => pppp,ppp,pp,p,mp,mf,f,fp,sfz,ff,fff,ffff -c If (.not. fontslur) -c 13 => hairpin start, 14,15 => <,> (ending) -c else -c 13 < start, 14 > start, 15 ending -c end if -c 16 flag for vertical offset -c 17-23 vertical offset + 64 , \internote -c 31 Hairpin start (0), stop (1) -c -c idynda2 -c -c 00 flag for horizontal offset -c 01-09 (horizontal offset)/10 + 25.6 notehead widths -c 10 5th bit for ivx (5/15/10) -c - irest = ibset(irest,26) - ndyn = ndyn+1 - idyn = ivx - idynda2(ndyn) = 0 - if (ivx .ge. 16) call setbits(idynda2(ndyn),1,10,1) - call setbits(idyn,8,4,ip) - if (lineq(iccount+1:iccount+1) .eq. '"') then -c -c text-dynamic -c - ntxtdyn = ntxtdyn+1 - iccountt = iccount -3 continue - iend = iccountt+index(lineq(iccountt+2:128),'"')+2 - if (lineq(iend-2:iend-2) .eq. '\') then - iccountt = iend-2 - go to 3 - end if - txtdynq(ntxtdyn) = lineq(iccount+2:iend-2) -c -c Store ivx, ip in bits 0-12 -c - ivxiptxt(ntxtdyn) = ivx+32*ip - ipm = index('- +',lineq(iend:iend)) - idno = 0 - else -c -c Word-group or hairpin -c - do 1 iend = iccount+2 , 128 - ipm = index('- +',lineq(iend:iend)) -c -c Exit the loop at first blank, "+", or "-" -c - if (ipm .gt. 0) go to 2 -1 continue -2 continue - read(lineq(iccount+1:iend-1),'(a'//chax(47+iend-iccount)//')') - * dynsymq - idno = (index( - * 'ppppppp pp p mp mf f fp sfz ff fff ffff < > ', - * dynsymq)+3)/4 -c -c Save for later down -c - idno1 = idno - end if -c -c Set flag to check level later if in beam -c - iornq = ibset(iornq,23) - if (idno.ge.14) then -c -c Hairpin here. Check if opposite type from one that's already on -c - if (idno.eq.14.and.btest(listdecresc,ivx) .or. - * idno.eq.15.and.btest(listcresc,ivx)) then - call printl(' ') - call printl('Started one kind of hairpin while other is on') - call stop1() - end if -c -c Start or stop? -c - if (btest(listcresc,ivx) .or. btest(listdecresc,ivx)) then -c -c Cresc/decresc is on, this is an ending. If fontslur, leave idno as is. -c - if (.not.fontslur) idno = 15 - else if (fontslur) then -c -c Start of font slur -c - idno = 13 - else -c -c Start of postscript slur -c - idno = idno-1 - end if - end if -c -c Now that we used list[de]cresc, update -c - if (idno .ge.13) then - if (idno.eq.15 .or. (fontslur.and.idno.eq.14)) then -c -c Something's ending -c - if (btest(listcresc,ivx)) then -c -c It's a cresc! -c - listcresc = ibclr(listcresc,ivx) - else - listdecresc = ibclr(listdecresc,ivx) - end if - else -c -c Something's starting -c - if (idno1 .eq. 14) then -c -c It's a cresc! -c - listcresc = ibset(listcresc,ivx) - else - listdecresc = ibset(listdecresc,ivx) - end if - end if - end if - call setbits(idyn,4,12,idno) - iccount = iend - if (ipm .ne. 2) then -c -c There is a vertical shift -c - idyn = ibset(idyn,16) - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - idno = nint(fnum) - call setbits(idyn,7,17,(ipm-2)*idno+64) - ipm = index('- +',durq) - if (ipm .ne. 2) then -c -c There is a horizontal shift -c -c idynda2(ndyn) = ibset(idyn,23) - idynda2(ndyn) = ibset(idynda2(ndyn),0) - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - idno = nint(10*fnum) - call setbits(idynda2(ndyn),9,1,(ipm-2)*idno+256) - end if -c -c iccount should be on the blank at the end of the entire symbol -c - end if - idyndat(ndyn) = idyn - return - end - subroutine getfig(itoff,charq,lineq,iccount,isfig,itfig, -c * itsofar,nodur,figq,ivupfig,nfigs) - * itsofar,nodur,figq,ivupfig,ivvfig,nfigs) - logical isfig - character*1 charq - character*10 figq - character*128 lineq - nfigs = nfigs+1 - ivupfig = 0 - ivvfig = 0 - itoff = 0 - if (charq .eq. 'x') then -c -c Floating figure. -c - call getchar(lineq,iccount,charq) - read(charq,'(i1)')noff - call getchar(lineq,iccount,charq) - read(charq,'(i1)')loff - itoff = noff*ifnodur(loff,'x') - call getchar(lineq,iccount,charq) - else -c -c Figure on a note -c - isfig = .true. - end if - itfig = itsofar+itoff-nodur - lfig = 1 - figq = charq -5 call getchar(lineq,iccount,charq) -c if (index(' +',charq) .eq. 0) then - if (index(' +v',charq) .eq. 0) then - figq = figq(1:lfig)//charq - lfig = lfig+1 - go to 5 - else if (charq .eq. '+') then -c -c Get vertical offset for figure. Next character after number has to be blank. -c - iccount = iccount+1 - call readnum(lineq,iccount,charq,fnum) - ivupfig = nint(fnum) - else if (charq .eq. 'v') then -c -c Get vertical change in figdrop. Must be last item in figure word. -c - isign = 1 - call getchar(lineq,iccount,charq) - if (charq .eq. '-') then - isign=-1 - call getchar(lineq,iccount,charq) - end if - ivvfig = isign*(ichar(charq)-48) - end if - return - end - subroutine getgrace(ivx,nnl,lineq,iccount,islur,iornq,ipl,ndlev, - * lastlev,iv,nv) - parameter (nm=24) - common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, - * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, - * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, - * graspace(37), - * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), - * naccg(74),voltxtq(6),litq(83) - logical upg,slurg,slashg - character*1 charq,durq - character*20 voltxtq - character*128 lineq,litq - integer*4 islur(nm,200),iornq(nm,0:200),ipl(nm,200),nnl(nm), - * ndlev(nm,2) - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans -c -c Grace, comes *before* main note: -c UNLESS there's an 'A' or 'W' after the 'G' -c ngrace = # of grace note groups so far in block -c ivg(ngrace), ipg(ngrace) -c nng(ngrace) = # of notes in this group: default = 1 -c ngstrt(ngrace) = starting position in nolevg of levels for this grace -c multg(ngrace) = multiplicity: default = 1; input as 'm(digit)' -c upg(ngrace) = logical for beam or stem dirn: default T, input'u,l' -c slurg(ngrace) = logical for slur; default F, input 's' -c slashg(ngrace) = T if slash; default is F, input 'x' -c These data MUST precede note name of first note -c nolevg, naccg: lists of levels and accid's, indexed as described above. -c - ngrace = ngrace+1 - ivg(ngrace) = ivx - ipg(ngrace) = nnl(ivx)+1 - if (ngrace .eq. 1) then - ngstrt(ngrace) = 1 - else - ngstrt(ngrace) = ngstrt(ngrace-1)+nng(ngrace-1) - end if - islur(ivx,nnl(ivx)+1) = ibset(islur(ivx,nnl(ivx)+1),4) - nng(ngrace) = 1 - multg(ngrace) = 1 - upg(ngrace) = .true. - slurg(ngrace) = .false. - slashg(ngrace) = .false. -18 call getchar(lineq,iccount,charq) - if (index('WA',charq) .gt. 0) then -c -c Grace is on note that was already done, so shift flags forward one note. -c This puts flag on actual note with grace; later for W will go ahead one more. -c - ipg(ngrace) = nnl(ivx) - islur(ivx,nnl(ivx)+1) = ibclr(islur(ivx,nnl(ivx)+1),4) - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),4) - if (slurg(ngrace)) - * iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),24) - if (charq .eq. 'A') then -c -c close After, clear way-after bit, to ensure priority of most recent A/W -c - ipl(ivx,nnl(ivx)) = ibset(ibclr(ipl(ivx,nnl(ivx)),31),29) - else -c -c Way after; later assign to following note, and position like normal grace. -c - ipl(ivx,nnl(ivx)) = ibset(ibclr(ipl(ivx,nnl(ivx)),29),31) - end if - else if (charq .eq. 'm') then - call getchar(lineq,iccount,charq) - multg(ngrace) = ichar(charq)-48 - else if (index('123456789',charq) .gt. 0) then - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - nng(ngrace) = nint(fnum) - else if (charq .eq. 'l') then - upg(ngrace) = .false. - else if (charq .eq. 's') then - slurg(ngrace) = .true. - if (nnl(ivx) .gt. 0) then -c -c If A- or W-grace, set signal to start slur on main note. -c - if(btest(ipl(ivx,nnl(ivx)),31) .or. - * btest(ipl(ivx,nnl(ivx)),29)) - * iornq(ivx,nnl(ivx))=ibset(iornq(ivx,nnl(ivx)),24) - end if - else if (charq .eq. 'x') then - slashg(ngrace) = .true. - else if (charq .eq. 'u') then - else if (charq .eq. 'X') then -c -c Space before main note of grace. Number will come next. -c - iccount = iccount+1 - call readnum(lineq,iccount,durq,graspace(ngrace)) - iccount = iccount-1 - end if - if (index('abcdefg',charq) .eq. 0) go to 18 -c -c At this point, charq is first note name in grace -c - do 19 ing = ngstrt(ngrace), ngstrt(ngrace)+nng(ngrace)-1 - naccg(ing) = 0 - ioct = 0 - if (ing .gt. ngstrt(ngrace)) then -55 call getchar(lineq,iccount,charq) - if (charq .eq. ' ') go to 55 - endif - iclastlev = 0 -9 call getchar(lineq,iccount,durq) - if (durq .ne. ' ') then - if (durq.eq.'+') then - lastlev = lastlev+7 - iclastlev = iclastlev+7 - else if (durq.eq.'-') then - lastlev = lastlev-7 - iclastlev = iclastlev-7 - else if (index('fsn',durq) .gt. 0) then - if (naccg(ing) .eq. 0) then - naccg(ing) = index('fsn',durq) - else -c -c Double accidental -c - naccg(ing) = ibset(naccg(ing),2) - end if - else - ioct = ichar(durq)-48 - end if - go to 9 - end if - if (ioct .gt. 0) then - lastlev = ifnolev(charq,ioct,iTransAmt(instno(iv))) - else - if (nnl(ivx).eq.0 .and. ing.eq.ngstrt(ngrace)) then - if (ivx .le. nv) then - kv = 1 - else - kv = 2 - end if - lastlev = ndlev(iv,kv)+iclastlev - end if - lastlev = lastlev-3 - * +mod(ifnolev(charq,10,iTransAmt(instno(iv)))-lastlev+3,7) - end if - nolevg(ing) = lastlev -19 continue -c -c Grace could come before first note of block, so reset end level. -c - if (nnl(ivx).eq.0) then - if (ivx .le. nv) then - kv = 1 - else - kv = 2 - end if - ndlev(iv,kv) = lastlev - end if - return - end - subroutine GetiTransInfo(From1,ibarcnt,lineq,iccount, - * ibaroff,nbars,noinst) -cccccccccccccccccccccccc -cc -cc GetiTransInfo.for -cc -cccccccccccccccccccccccc -c -c Called from both g1etnote and getnote, after first 'i' in Ki[...] -c On entry, iccount points to last char retrieved, which is 'i' -c -c From1: locgical, true if called from g1etnote -c ibarcnt: tells whether to set EarlyTransOn to true. -c EarlyTransOn set false in blkdata, true here, back to false in topfile. -c -c 110522/110529 -c Instrument-wise transposition Ki[iInstTrans][+/-][iTransAmt][+/-][iTransKey] -c and repeat i[...] for multiple instruments. Store info in g1etnot if ibarcnt=0 -c so can pass to topfile (via comInstTrans), which is called before getnote. -c Otherwise, will store info from getnote. Initialize EarlyTransOn and -c LaterInstTrans to .false. in blockdata. Set EarlyTransOn from g1etnote; -c LaterInstTrans from getnote. Zero both out after use. nInstTrans really -c only needed for instrument-signatures, not transpositions. iTransAmt is -c ALWAYS active per instrument. Set up instno(iv) so can fetch iTransAmt for -c each staff. -c -c iTransAmt stored as fn of instrument #, not like iTransKey which is -c fn. of nm, just a counter, where corr. inst num is iInstTrans(nm). This -c simplifies use of iTransAmt for all calls to ifnolev. -c - parameter (nm=24) - logical From1 - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans,store - character*128 lineq - character*1 durq - durq = 'x' ! Can't initialize in declaration stmt, only works once. - if(.not.EarlyTransOn) EarlyTransOn = From1 .and. ibarcnt.eq.0 - store = (EarlyTransOn.and.ibarcnt.eq.0) .or. - * (ibarcnt.gt.0.and..not.From1) - LaterInstTrans = .not.From1 .and. ibarcnt.gt.0 - if (store) nInstTrans = 0 -1 continue - if (durq .eq. ' ') return - call g1etchar(lineq,iccount,durq) - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'There must be an instrument number here!') - call stop1() - end if - if (store) nInstTrans = nInstTrans+1 - call readnum(lineq,iccount,durq,fnum) - instn = nint(fnum) - if (instn.gt.noinst) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Instrument number out of range!') - call stop1() - end if - if (store) iInstTrans(nInstTrans) = instn -c -c durq is +/- following inst # (for iTransAmt), iccount is on it. -c - if (index('+-',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '1st character after instrument number must be "+,-"!') - call stop1() - end if - itramt = 44-ichar(durq) ! +1/-1 for itramt - call g1etchar(lineq,iccount,durq) - if (index('0123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'There must be a transposition amount here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - if (store) iTransAmt(instn) = nint(fnum)*itramt -c -c durq is +/- following iTransAmt (for iTransKey), iccount is on it. -c - if (index('+-',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '1st character after transposition amount must be "+,-"!') - call stop1() - end if - ikey = 44-ichar(durq) ! +1/-1 - call g1etchar(lineq,iccount,durq) - if (index('0123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'There must be a key indicator here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - if (store) iTransKey(nInstTrans) = nint(fnum)*ikey -c -c durq is now 1st character after iTransKey, should be either 'i' or ' ' -c - if (durq.ne.'i'.and.durq.ne.' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'There must be blank or "i" here!') - call stop1() - end if - go to 1 - end - subroutine getmidi(noinstarg,lineq,iccount,ibarcnt,ibaroff,nbars, - * lenbar,mtrdenl,nv,first) -c -c Use this from both pmxa and pmxb to input and check midi data. "first" tells -c whether pmxa or pmxb. If .not.first, then tempo and pause commands cause -c things to be written immediately into the midi storage buffers. -c - parameter (nm=24,mv=24576) - common /comevent/ miditime,lasttime - logical mmacrec,gottempo - common /commmac/ mmacstrt(0:nm,20),mmacend(0:nm,20),immac, - * mmactime(20),nmidsec,msecstrt(0:nm,60),msecend(0:nm,60), - * mmacrec,gottempo -c -c immac(i) is the index of i-th macro, i=1,nmac. Also make a list containing -c nmidsec section starts and stops based on PLAYING macros (not recording). -c - integer*2 mmidi,midinum(26) - logical restpend,relacc,notmain,twoline,ismidi,crdacc - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) - * ,miditran(nm),midtc(0:nm),noinstdum,iinsiv(nm) - integer*2 iinsiv - character*1 durq - character*2 instq - character*128 lineq - logical first - common /comdiag/ n69(0:nm),n34(0:nm) -c -c Instrument codes -c - data midinum - * / 1, 5, 7, 13,20,25,33,41,42,43,44,57,58,59,61,65,66,67, -c XXpiXrhXhaXmaXorXguXabXvlXvaXvcXcbXtrXtbXtuXfrXsoXalXteX -c - * 68,69,71,72,74,75, 8,55 / -c bsXobXbaXclXflXreXctXvo -c -1 call getchar(lineq,iccount,durq) - print*,'#11946 In getmidi,durg:',durq - if (durq .eq. 't') then -c -c Tempo in beats ber minute -c - call getchar(lineq,iccount,durq) - if (index('0123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected an integer here for the pause!') - call stop1() - end if - call readnum(lineq,iccount,durq,qpm) - iccount = iccount-1 - if (.not.first) then - call midievent('t',nint(qpm),0) - gottempo = .true. - end if - go to 1 - else if (durq .eq. 'p') then -c -c Insert a pause. pausemid = pause in 1/4's -c - call getchar(lineq,iccount,durq) - if (index('0123456789.',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected a number here for the pause!') - call stop1() - end if - call readnum(lineq,iccount,durq,pausemid) - iccount = iccount-1 - if (.not.first) then -c -c Compute a meter for the pause. This is only to keep MidiNotate on track. -c Round pause to nearest 16th. Let denominator always be 16. -c - numb16 = nint(pausemid*4) - call midievent('m',numb16,16) -c -c Put in pausemid beats of rest -c - do 3 icm = 0 , numchan-1 - call addmidi(icm,0,0,0,4.*numb16,.true.,.false.) -3 continue - miditime = miditime+nint(240*pausemid) -c -c Restore meter -c - call midievent('m',mtrdenl*lenbar/64,mtrdenl) - end if - go to 1 - else if (durq .eq. 'i') then -c -c Instrument numbers or letters. Expect noinst of them. -c - do 2 ivx = 1 , noinstarg - call getchar(lineq,iccount,durq) - if (ichar(durq) .gt. 96) then -c -c It's a lowercase letter. Get another, find corr. instrument #. -c - instq(1:1) = durq - call getchar(lineq,iccount,durq) - instq = instq(1:1)//durq - iname = index('XXpiXrhXhaXmaXorXguXabXvlXvaXvcXcbXtrXtbX'// - * 'tuXfrXsoXalXteXbsXobXbaXclXflXreXctXvo',instq)/3 - if (iname .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Unrecognized 2-letter midi instrument name!') - call stop1() - end if - midinst(ivx) = midinum(iname)-1 - print*,'#12012 in getmidi, inst=',instq - else -c -c Expect a number, followed by ":" if that is followed by another number. -c I.e., if after call to readnum, durq is not ":", it must be either blank -c or next instrument letter. -c - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected a midi instrument number here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - midinst(ivx) = nint(fnum)-1 - if (midinst(ivx).lt.0 .or. midinst(ivx).gt.255) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Midi instrument number must be in range 1-128!') - call stop1() - end if - if (durq .ne. ':') iccount = iccount-1 - end if -2 continue - go to 1 - else if (durq .eq. 'v') then -c -c Get volumes for each instrument. Expect noinst of them. -c Follow same pattern as for insttrument numbers above. -c - do 7 ivx = 1 , noinstarg - call getchar(lineq,iccount,durq) - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected a midi velocity number here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - midivel(ivx) = nint(fnum)-1 - if (midivel(ivx).lt.0 .or. midivel(ivx).gt.127) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Midi velocity must be in range 1-128!') - call stop1() - end if - if (durq .ne. ':') iccount = iccount-1 -7 continue - if (.not. first) then - call inst2chan(midvelc,midivel,midchan,nv,iinsiv,twoline) - end if - go to 1 - else if (durq .eq. 'b') then -c -c Get balance for each instrument. Expect noinst of them. -c Follow same pattern as for instrument numbers above. -c - do 8 ivx = 1 , noinstarg - call getchar(lineq,iccount,durq) - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected a balance number here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - midibal(ivx) = nint(fnum)-1 - print*,'#12077 set midibal to',midibal(ivx) - if (midibal(ivx).lt.0 .or. midibal(ivx).gt.127) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Midi balance must be in range 1-128!') - call stop1() - end if - if (durq .ne. ':') iccount = iccount-1 -8 continue - if (.not. first) then - call inst2chan(midbc,midibal,midchan,nv,iinsiv,twoline) - print*,'#12086 midbc0,1,midibal1,2:', - *midbc(0),midbc(1),midibal(1),midibal(2) - end if - go to 1 - else if (durq .eq. 'T') then -c -c Get transposition for each instrument. Expect noinst of them. -c Follow similar pattern as above, but separator is +|-. -c - do 9 ivx = 1 , noinstarg - call getchar(lineq,iccount,durq) - ipm = index('-+',durq) - if (ipm .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected "+" or "-" for midi transposition here!') - call stop1() - end if - ipm = 2*ipm-3 - call getchar(lineq,iccount,durq) - if (index('0123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected a number here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - miditran(ivx) = ipm*nint(fnum) -c if (mod(miditran(ivx),12).ne. 0) then -c call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, -c * 'Midi transposition limited to multiples of 12!') -c call stop1() -c end if - iccount = iccount-1 -9 continue - if (.not. first) then - call inst2chan(midtc,miditran,midchan,nv,iinsiv,twoline) - end if - go to 1 - else if (durq .eq. 'g') then - call getchar(lineq,iccount,durq) - if (index('0123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected an integer here for the midi gap!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - mgap = nint(fnum) - iccount = iccount-1 - go to 1 - else if (durq .eq. 'M') then -c -c MidiMacros -c - call getchar(lineq,iccount,durq) - if (durq .eq. 'R') then -c -c Start recording -c - if (mmacrec) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'You tried to record a MidiMacro while already recording!') - call stop1() - end if - mmacrec = .true. - call getchar(lineq,iccount,durq) - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected MidiMacro ID number here!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - if (.not.first) then - immac = nint(fnum) - if (immac .gt. 20) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'MidiMacro ID cannot exceed 20!') - call stop1() - end if -c -c Save the start time -c - mmactime(immac) = miditime - do 4 icm = 0 , numchan - if (icm .lt. numchan) then - if (restpend(icm)) then -c -c Adjust if there's a rest at end of prior section. Insert dummy turnoff. -c (This causes two turn-offs in a row, which testmidi sees as an error). -c -c Before: section1 ------rest------- section2(to be recorded) -c After: section1 rest1 now rest2 section2(recorded) -c - call addmidi(icm,30,0,0,trest(icm),.false.,.true.) - trest(icm) = 0 - restpend(icm) = .false. - end if - else - if (miditime .gt. lasttime) then -c -c Insert a dummy turnoff in conductor track -c - call addmidi(icm,30,0,0,(miditime-lasttime)/15., - * .false.,.true.) - lasttime = miditime - end if - end if - mmacstrt(icm,immac) = imidi(icm)+1 -4 continue - end if - go to 1 - else if (index('123456789P',durq) .eq. 0) then -c -c End recording; close the open macro. Get immac from common. -c - if (.not.mmacrec) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'You tried to end a MidiMacro before starting one!') - call stop1() - end if - mmacrec = .false. - iccount = iccount-1 - if (.not.first) then -c -c Save the macro duration -c - mmactime(immac) = miditime-mmactime(immac) - do 5 icm = 0 , numchan - if (icm .lt. numchan) then - if (restpend(icm)) then - call addmidi(icm,30,0,0,trest(icm),.false.,.true.) - trest(icm) = 0 - restpend(icm) = .false. - end if - else - if (miditime .gt. lasttime) then -c -c Insert a dummy turnoff in conductor track if needed. -c - call addmidi(icm,30,0,0,(miditime-lasttime)/15., - * .false.,.true.) - lasttime = miditime - end if - end if - mmacend(icm,immac) = imidi(icm) -5 continue - end if - if (durq .ne. ' ')go to 1 - else if (durq .eq. 'P') then -c -c Play Back a Macro -c - call getchar(lineq,iccount,durq) - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Expected MidiMacro ID number here!') - call stop1() - end if - if (mmacrec) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'You tried to play a MidiMacro before ending recording!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - if (.not.first) then - immac = nint(fnum) - if (mmactime(immac) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Cannot play a MIDI macro before recording it!') - call stop1() - end if - do 6 icm = 0 , numchan - if (icm .lt. numchan) then - if (restpend(icm)) then - call addmidi(icm,30,0,0,trest(icm),.false.,.true.) - trest(icm) = 0. - restpend(icm) = .false. - end if - else - if (miditime .gt. lasttime) then -c -c Insert a dummy turnoff in conductor track -c - call addmidi(icm,30,0,0,(miditime-lasttime)/15., - * .false.,.true.) - end if - end if - msecend(icm,nmidsec) = imidi(icm) - msecstrt(icm,nmidsec+1) = mmacstrt(icm,immac) - msecend(icm,nmidsec+1) = mmacend(icm,immac) - msecstrt(icm,nmidsec+2) = imidi(icm)+1 -6 continue - nmidsec = nmidsec+2 -c -c Update running time -c - miditime = miditime+mmactime(immac) - lasttime = miditime - end if - go to 1 - else - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in MidiMacro sub-command!') - call stop1() - end if - else if (durq .eq. 'd') then - debugmidi = .true. - go to 1 - else if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character in MIDI input data!') - write(*,'(a)') - * 'May be too many args to i,v,b, or T. As of Ver. 2.7, '// - * 'should be noinst, not nv' - write(15,'(a)') - * 'May be too many args to i,v,b, or T. As of Ver. 2.7, '// - * 'should be noinst, not nv' - call stop1() - end if - if (.not.gottempo .and. .not.first) then -c -c If no tempo is set on first call on the pmxb pass, then set it -c - call midievent('t',96,0) - gottempo = .true. - end if - return - end - subroutine getnote(loop) - parameter (nm=24,mv=24576) - common /comlast/ islast,usevshrink - logical islast,usevshrink,ignorenats,newmbrhgt - common /comignorenats/ mbrhgt,newmbrhgt,ignorenats - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - character*10 figq - character*1 ulq,sepsymq,sq,rptfq1,rptfq2,clefq,chax - logical beamon,firstgulp,figbass,figchk,isfig - character*60 cheadq - character*120 instrq,titleq,compoq - integer*2 mmidi - logical restpend,relacc,notmain,twoline,ismidi,crdacc,autofbon - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 - common /comtitl/ instrq,titleq,compoq,headlog,inskip,ncskip, - * inhead - common /cominbot/ inbothd - common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), - * fullsize(nm),ivxfig2,ivvfig(2,74) - common /comnotes/ nnodur,lastlev,ndlev(nm,2),shifton,setis,notcrd, - * npreslur,was2(nm),ninow,nobar1,nsystp(75),ipage, - * OptLineBreakTies,HeaderSpecial - common /comget/ lastchar,rptnd1,sluron(nm,2),fbon,ornrpt,stickyS, - * movbrk,movnmp,movdnp,movgap,parmov,fintstf,gintstf, - * rptprev,equalize,rptfq1,rptfq2 - common /comhead/ ihdht,lower,headrq,lowerq,ihdvrt - common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, - * tautofb,autofbon,t1autofb - common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, - * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, - * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, - * graspace(37), - * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), - * naccg(74),voltxtq(6),litq(83) - logical upg,slurg,slashg,fbon,ornrpt,shifton,setis,notcrd,isbjmp, - * was2,nobar1,quoted,isbj2,stickyS, - * OptLineBreakTies,HeaderSpecial - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - character*128 litq - common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), - * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) - common /combc/ bcspec - common /comas3/ ask(2500),iask,topmods -c -c nvmx is either 1 or 2. ivmx(iv,1)=iv, ; ivmx(iv,2)>nv if defined -c ivx is current ivmx, and is the index for all notes, acc's etc. -c - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, - * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, - * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, - * rtshfac - common /comtrans/ cheadq - common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, - * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, - * lnam(nm),inameq(nm) - common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac - common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) - common /comask/ bar1syst,fixednew,scaldold, - * wheadpt,fbar,poenom - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), - * xinsnow,lowdot - common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) - common /c1ommac/ ip1mac(20),il1mac(20),ip2mac(20),il2mac(20), - * ic1mac(20),ilmac,iplmac - common /comdyn/ ndyn,idyndat(99),levdsav(nm),ivowg(12),hoh1(12), - * hoh2(12),hoh2h1(2),ntxtdyn,ivxiptxt(41),txtdynq(41), - * idynda2(99),levhssav(nm),listcresc,listdecresc - common /comclefq/ clefq(nm) - common /comtol/ tol - common /comArpShift/NumArpShift,IvArpShift(20),IpArpShift(20), - * ArpShift(20) - character*128 txtdynq - logical mrecord,mplay,endmac,lowdot,rename,bar1syst,upslur, - * fontslur,WrotePsslurDefaults - character*128 lineq,lnholdq,lineqt - character*80 headrq, lowerq - character*79 inameq - character*59 hdlndq - character*20 voltxtq - character*1 charq,dotq,durq,ulfbq,dumq - logical loop,lastchar,lower,rptnd1,rptprev,bcspec,moved, - * topmods,headlog,btest,sluron,cdot,equalize - character*24 tempq - logical novshrinktop,cstuplet - common /comnvst/ novshrinktop,cstuplet - logical kbdrests - common /comkbdrests/ levbotr(8),levtopr(8),kbdrests - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans - common /comkeys/ nkeys,ibrkch(18),newkey(18),iskchb,idumm1,isig1, - * mbrestsav,kchmid(18),logdumm1,logdumm2,barend,noinst,logdumm3 - logical barend,iskchb,kchmid,logdumm1,logdumm2,logdumm3 - common /combibarcnt/ ibarcnt - common /commidisig/ midisig - common /comlyr/ inputmlyr - logical inputmlyr - common /combottop/ botamt,topamt,bottopgap - logical bottopgap - logical inxtup - common /comshort/ shortfrac,codafrac,ishort,mbrsum,nmbr,nocodabn, - * poefa - real*4 poefa(125) - logical nocodabn - cdot = .false. - inxtup = .false. -1 call getchar(lineq,iccount,charq) - if (lastchar) return - if (charq .eq. ' ') go to 1 - if (charq .eq. '%') then -c -c Check for a bar number format: -c - if (iccount.eq.1 .and. lineq(2:2).eq.' ' .and. - * index('bB1234567890',lineq(3:3)).gt.0) then - if (islast) write(11,'(a)')lineq(1:lenstr(lineq,128)) - end if - iccount = 128 - go to 1 - end if -c -c Closing repeat iff charq='/' and the prev. char was 'R' with 'd' or 'r' -c - if (rptprev) then - rptnd1 = charq .eq. '/' - rptprev = .false. - end if -c -c Repeat at end of a piece -c - if ((ichar(charq).ge.97.and.ichar(charq).le.103) .or. - * charq.eq.'r') then - if (cdot) go to 28 -c -c This is a note/rest. -c - idotform = 0 - numnum = 0 -c -c If start of line of music, set pitch from previous -c - if (ivx .le. nv) then - kv = 1 - else - kv = 2 - end if - if (nnl(ivx).eq.0) lastlev = ndlev(iv,kv) -c -c notcrd is used to tell if orn. goes on main note or chord note -c -c notcrd = .true. !Move dow. Was not observed if dotted shortcut. -c -c Increase note count, then loop 'til blank. Label 28 is for dotted shortcuts. -c -28 continue -c -c Moved this from just above, 2 Feb 02 -c - notcrd = .true. - nnl(ivx) = nnl(ivx)+1 - if (ornrpt) then -c -c Replicate ornament bits, also bit 23 for beam handling if chord. -c - iornq(ivx,nnl(ivx)) = ior(iornq(ivx,nnl(ivx)),iornq(ivx,0)) - if (iand(iornq(ivx,nnl(ivx)),32896) .gt. 0) then -c -c This is a trill (bit 7 or 15) so must dup the parameters -c - ntrill = ntrill + 1 - ivtrill(ntrill) = ivx - iptrill(ntrill) = nnl(ivx) - xnsktr(ntrill) = xnsktr(ntrill-1) - end if - end if - if (stickyS) then -c -c Grab stemlength shortening parameters from prior note -c - mult(ivx,nnl(ivx)) = ibset(mult(ivx,nnl(ivx)),27) -c call setbits (mult(ivx,nnl(ivx)),3,28, -c * igetbits(mult(ivx,nnl(ivx)-1),3,28)) - call setbits (mult(ivx,nnl(ivx)),6,10, - * igetbits(mult(ivx,nnl(ivx)-1),6,10)) - end if - if (autofbon .and. tautofb.gt.tol .and. .not.fbon) then -c -c Doing auto forced beams, and period has been set, so check if this note -c starts a period. -c -c if (mod(1.*itsofar(ivx),tautofb) .lt. tol) then - if (mod(itsofar(ivx)-t1autofb,tautofb) .lt. tol) then -c -c Start a forced beam here -c - nfb(ivx) = nfb(ivx)+1 - fbon = .true. - ulfbq(ivx,nfb(ivx)) = 'x' - t1fb(ivx,nfb(ivx)) = itsofar(ivx) - end if - end if - if (fbon) ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),30) - dotq = 'x' - if (charq.eq.'r') - * irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),0) - if (btest(irest(ivx,nnl(ivx)),0)) then -c -c Rest stuff. First check if previous note was full-bar-pause -c - if (lineq(iccount+1:iccount+1) .eq.' ' - * .and. nnl(ivx).gt.1) then - if (btest(islur(ivx,nnl(ivx)-1),19)) - * islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),19) - end if -c -c Set default rest level at 0 unless 2 voices/staff in which case it's -4 or 2 -c for voice a or b. Set a-types at 0 as encountered and adjust later -c after '//'. (Override heights will be set to 100+offset) -c - if (ivx .le. nv) then - nolev(ivx,nnl(ivx)) = 0 - else - nolev(ivx,nnl(ivx)) = 2 - end if - end if -2 call getchar(lineq,iccount,durq) - ic = ichar(durq) - if (ic.le.57 .and. ic.ge.48) then -c -c Digit -c - if (numnum .eq. 0) then - nnodur = ic-48 - numnum = 1 - go to 2 - else if (numnum .eq. 1) then - ioct = ic-48 - numnum = 2 - go to 2 - else - print*,'>2 digits in note sym., ivx,nn:',ivx,nnl(ivx) - call stop1() - end if - else if (durq .eq. 'd') then - dotq = durq - if (lineq(iccount+1:iccount+1) .eq. 'd') then -c -c Double dot. -c - iccount = iccount+1 - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),3) - end if - if (index('+-',lineq(iccount+1:iccount+1)) .gt. 0) then -c -c move a dot, unless next char is not part of a number -c - if (index('0123456789.',lineq(iccount+2:iccount+2)) .eq. 0) - * go to 2 - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),19) - call getchar(lineq,iccount,durq) - ndotmv(ivx) = ndotmv(ivx)+1 - iccount=iccount+1 - call readnum(lineq,iccount,dumq,updot(ivx,ndotmv(ivx))) - if (durq .eq. '-') - * updot(ivx,ndotmv(ivx)) = -updot(ivx,ndotmv(ivx)) - if (index('+-',dumq) .gt. 0) then -c -c Vertical shift also -c - iccount=iccount+1 - call readnum(lineq,iccount,durq,rtdot(ivx,ndotmv(ivx))) - if (dumq .eq. '-') - * rtdot(ivx,ndotmv(ivx)) = -rtdot(ivx,ndotmv(ivx)) - else - rtdot(ivx,ndotmv(ivx)) = 0. - end if - iccount = iccount-1 - end if - go to 2 - else if (durq .eq. 'p') then -c -c Full-bar rest as pause -c - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),19) - go to 2 - else if (durq .eq. 'b') then -c -c Blank rest -c - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),29) - go to 2 - else if (index('fsn',durq) .gt. 0) then -c -c Accidental -c -c if (nacc(ivx,nnl(ivx)) .eq. 0) then -c 171209 May have set bit 18 earlier if D or F preceded accidental - if (igetbits(nacc(ivx,nnl(ivx)),2,0) .eq. 0) then -c -c No accidental has been set yet -c -c nacc(ivx,nnl(ivx)) = index('fsn',durq) - nacc(ivx,nnl(ivx)) = - * ior(nacc(ivx,nnl(ivx)),index('fsn',durq)) - else -c -c Repeated accid, so must be double -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),2) - end if - go to 2 - else if (durq .eq. 'i') then -c -c Set flag for MIDI-only accidental. -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),17) - go to 2 - else if (durq .eq. 'c') then -c -c Set flags for cautionary accidental -c - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),31) - iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),31) - go to 2 - else if (index('+-<>',durq) .gt. 0) then - ipm = index('- +',durq)-2 - if (.not.btest(irest(ivx,nnl(ivx)),0)) then -c -c A note, not a rest. -c - call chkpm4ac(lineq,iccount,nacc(ivx,nnl(ivx)),moved) - if (moved) go to 2 -c -c Octave jump with a note -c - if (numnum .lt. 2) then - lastlev = lastlev+ipm*7 - else - ioct = ioct+ipm*1 - end if - go to 2 - else -c -c Override default height of a rest -c - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - if (lineq(iccount-1:iccount-1) .eq. '.') then -c -c Kluge in case there is a shortcut ".". It will have been sucked up by -c readnum. (Same doesn't hold for ",") -c - iccount = iccount-1 -c go to 2 - end if - nolev(ivx,nnl(ivx)) = 100+ipm*nint(fnum) -c -c There may be more characters for this rest -c - iccount = iccount-1 - go to 2 - end if - else if (durq .eq. 'x') then -c -c Xtuplet. Count number of doubled notes (for unequal xtups) -c - if (btest(nacc(ivx,nnl(ivx)),18)) then - ndoub = 1 - else - ndoub = 0 - end if -c -c Initialize counter for # of non-rests, so can later unbeam if = 1. -c - inxtup = .true. - note1xtup = nnl(ivx) - nnb = 0 - if (.not.btest(irest(ivx,nnl(ivx)),0)) nnb = 1 -c -c Will set all durations to 0 except last one. Set flag on this note. -c - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),28) -c -c Next input will be digit unless its a "T" -c - iccount = iccount+1 - if (lineq(iccount:iccount) .eq. 'T') then -c -c Set up tremolo -c - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),2) - ntup = 2 -c -c Set default beaming, based on Wikipedia article -c May be a problem here is nnodur is inherited -c - if (nnodur .eq. 4) then - nsolid = 0 - nindent = 3 - else if (nnodur .eq. 2) then - nsolid = 3 - nindent = 0 - else if (nnodur .eq. 8) then - nsolid = 1 - nindent = 2 - end if - call getchar(lineq,iccount,durq) - if (index('0123456789',durq) .gt. 0) then - nsolid = index('0123456789',durq)-1 - if (nsolid.eq.0 .and. nnodur.eq.2) then - print*,'' - print*,'Unbeamed half-note 2-note tremolo forbidden.' - call stop1() - end if - call getchar(lineq,iccount,durq) - if (index('0123456789',durq) .gt. 0) then - nindent = index('0123456789',durq)-1 - end if - end if - call setbits(irest(ivx,nnl(ivx)),2,3,nsolid) - call setbits(irest(ivx,nnl(ivx)),2,5,nindent) - if (nsolid .eq. 0) then - islur(ivx,nnl(ivx)) = - * ibset(islur(ivx,nnl(ivx)),18) - end if - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),31) - islur(ivx,nnl(ivx)+1) = ibset(islur(ivx,nnl(ivx)+1),21) - call setbits(islur(ivx,nnl(ivx)+1),3,22,nsolid) -c -c Set some force-beam parameters for the tremolo -c -c Need to check if there's already a forced beam explicitly set here. -c If there was, shouldn't do any harm resetting parameters. -c - if (nfb(ivx).eq.0 .or. t1fb(ivx,nfb(ivx)).ne.itsofar(ivx)) - * nfb(ivx) = nfb(ivx)+1 - fbon = .true. - ulfbq(ivx,nfb(ivx)) = 'x' - t1fb(ivx,nfb(ivx)) = itsofar(ivx) - t2fb(ivx,nfb(ivx)) = itsofar(ivx) + ifnodur(nnodur,dotq) - nadj = 0 -c -c Set open beamed notehead flag for half-note tremolo -c Just gave 2 quarters with or without flag set. Need to fix -c - else - call readnum(lineq,iccount,durq,fnum) - ntup = nint(fnum) - end if - if (index('DF',durq) .gt. 0) then -c -c -c Double xtup note to make an un= xtup. Here xtup number already set but may also -c have this command before. -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) - if (durq .eq. 'F') nacc(ivx,nnl(ivx)) = - * ibset(nacc(ivx,nnl(ivx)),19) - ndoub = 1 - call getchar(lineq,iccount,durq) - else if (durq .eq. 'd') then - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),27) - call getchar(lineq,iccount,durq) - end if -c -c Only other possibilities here are ' ' or 'n' -c - if (durq .eq. 'n') then -c -c Alter xtup number -c - if (lineq(iccount+1:iccount+1) .eq. ' ') then -c -c If the only modifier is 'n', cancel the number -c - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),31) - else - numshft = 0 -30 call getchar(lineq,iccount,durq) - if (durq .eq. 'f') then -c -c Flip up-down-ness -c - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),14) - go to 30 - else if (index('+-',durq) .gt. 0) then -c -c Vertical or horiz shift -c - numshft = numshft+1 - iofforn = 1 - if (durq .eq. '-') iofforn = -1 - iccount = iccount+1 - call readnum(lineq,iccount,durq,xofforn) - iccount = iccount-1 - if (numshft .eq. 1) then -c -c Vertical shift -c 160214 Allow (-64,64) -c iofforn = iofforn*nint(xofforn) + 16 - iofforn = iofforn*nint(xofforn) + 64 -c -cc Turn on bit 1; set bits 2-6 to iofforn -c Turn on bit 1 of irest; set bits 16-22 of mult to iofforn -c -c irest(ivx,nnl(ivx)) = -c * ior(irest(ivx,nnl(ivx)),2+4*iofforn) - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),1) - call setbits(mult(ivx,nnl(ivx)),8,16,iofforn) - else -c -c Horizontal shift -c - iofforn = iofforn*nint(xofforn*10)+16 - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),7) - call setbits(irest(ivx,nnl(ivx)),5,9,iofforn) - end if - go to 30 - else if (durq .eq. 's') then -c -c Slope adjustment for bracket -c - mult(ivx,nnl(ivx)) = ibset(mult(ivx,nnl(ivx)),4) - call getchar(lineq,iccount,durq) - iofforn = index('- +',durq)-2 - iccount = iccount+1 - call readnum(lineq,iccount,durq,xofforn) - iccount = iccount-1 - iofforn = nint(iofforn*xofforn+16) - call setbits(mult(ivx,nnl(ivx)),5,5,iofforn) - else if (index('123456789',durq) .gt. 0) then -c -c Replacement printed number -c - call readnum(lineq,iccount,durq,xofforn) - call setbits(nacc(ivx,nnl(ivx)),5,22,nint(xofforn)) - iccount = iccount-1 - go to 30 - end if - end if - end if -c -c Set note level of 1st note of xtup, provided not a rest -c - if (.not.btest(irest(ivx,nnl(ivx)),0)) then - if (numnum .eq. 2) then - lastlev = ifnolev(charq,ioct,iTransAmt(instno(iv))) - nolev(ivx,nnl(ivx)) = lastlev - else - lastlev = lastlev-3 - * +mod(ifnolev(charq,10,iTransAmt(instno(iv)))-lastlev+3,7) - nolev(ivx,nnl(ivx)) = lastlev - end if - end if - do 40 npreslur = npreslur , 1 , -1 -c -c Set note level for preslur on starting note of xtuplet -c - call setbits(isdat2(nsdat-npreslur+1),7,19,lastlev) -40 continue - numnum = 0 - nodur(ivx,nnl(ivx)) = 0 - do 6 itup = 2 , ntup - if (ornrpt) then - iornq(ivx,nnl(ivx)) = ior(iornq(ivx,nnl(ivx)), - * iand(iornq(ivx,nnl(ivx)-1),10026991)) - if (iand(iornq(ivx,nnl(ivx)),32896) .gt. 0) then -c -c This is a trill (bit 7 or 15) so must dup the parameters -c - ntrill = ntrill + 1 - ivtrill(ntrill) = ivx - iptrill(ntrill) = nnl(ivx) - xnsktr(ntrill) = xnsktr(ntrill-1) - end if - end if - nnl(ivx) = nnl(ivx)+1 - if (fbon) ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),30) -7 call getchar(lineq,iccount,charq) - if (charq .eq. ' ') then - go to 7 - else if (charq .eq. '%') then - iccount = 128 - go to 7 - else if (charq .eq. 'o') then -c -c Ornament in xtuplet. "o" symbol must come AFTER the affected note -c - if (notcrd) then - nole = nolev(ivx,nnl(ivx)-1) - else - nole = iand(127,ishft(icrdat(ncrd),-12)) - end if - call getorn(lineq,iccount,iornq(ivx,nnl(ivx)-1), - * iornq(ivx,0),ornrpt,noffseg, - * nnl(ivx)-1,ivx,.false.,notcrd,nole) - go to 7 - else if (index('st(){}',charq) .gt. 0) then - nnlivx = nnl(ivx)-1 - if (charq.eq.'(' .or. charq.eq.'{') then -c -c Detected preslur in xtuplet loop, non-chord note -c - nnlivx = nnlivx+1 - npreslur = npreslur+1 - end if - islur(ivx,nnlivx) = ibset(islur(ivx,nnlivx),0) - if (charq.eq.'t') islur(ivx,nnlivx) = - * ibset(islur(ivx,nnlivx),1) - if (ivx .le. nv) then - kv = 1 - else - kv = 2 - end if - if (fontslur) then - call sslur(lineq,iccount,iv,kv,nnlivx,isdat1,isdat2, - * isdat3,nsdat,notcrd,nolev(ivx,nnlivx),charq) - else - call spsslur(lineq,iccount,iv,kv,nnlivx,isdat1,isdat2, - * isdat3,isdat4,nsdat,notcrd,nolev(ivx,nnlivx),charq) - end if - go to 7 - else if (charq .eq. 'G') then -c -c Kluge to get grace in xtup at right location -c - nnl(ivx) = nnl(ivx)-1 - call getgrace(ivx,nnl,lineq,iccount,islur,iornq,ipl,ndlev, - * lastlev,iv,nv) - nnl(ivx) = nnl(ivx)+1 - go to 7 - else if (charq .eq. sq) then - call littex(islur,nnl(ivx),ivx,topmods,lineq,iccount) - go to 7 - else if (charq .eq. '"') then -c -c pmxlyr string in xtup. Expand "..." to \pmxlyr{...}\ -c - if (.not. inputmlyr) then - ictemp = 0 - lineqt = sq//sq//sq//'input musixlyr '//sq - call littex(islur,nnl(ivx)+1,ivx,topmods,lineqt,ictemp) - inputmlyr = .true. - end if - call dopmxlyr(lineq,iccount) - charq = sq - call littex(islur,nnl(ivx),ivx,topmods,lineq,iccount) - go to 7 - else if (index('0123456789#-nx_',charq) .gt. 0) then -c -c Figure. Must come AFTER the first note of xtup -c - ivf = 1 - if (ivx .gt. 1) then - if (ivxfig2 .eq. 0) then - ivxfig2 = ivx - else if (ivx .ne. ivxfig2) then - print* - print*,'Figures not allowed in >1 voice above first' - stop - end if - ivf = 2 - end if - nfig1 = nfigs(ivf)+1 - call getfig(itoff(ivf,nfig1),charq,lineq,iccount, - * isfig(ivf,nnl(ivx)-1),itfig(ivf,nfig1),itsofar(ivx), -c * 0,figq(ivf,nfig1),ivupfig(ivf,nfig1),nfigs(ivf)) - * 0,figq(ivf,nfig1),ivupfig(ivf,nfig1),ivvfig(ivf,nfig1), - * nfigs(ivf)) - go to 7 - else if (charq .eq. 'X') then - call getx(lineq,iccount,irest(ivx,max(1,nnl(ivx)-1)), - * shifton,wheadpt,iornq(ivx,nnl(ivx)),ivx, - * irest(ivx,nnl(ivx)),itsofar(ivx),ntup,itup,nnodur, - * dotq,ndoub) - go to 7 - else if (charq .eq. 'z') then -c -c Chord note in xtup. Goes with *prior* note. -c - notcrd = .false. - ncrd = ncrd+1 - ipl(ivx,nnl(ivx)-1) = ibset(ipl(ivx,nnl(ivx)-1),10) - numnum = 0 -c icrdat(ncrd) = ior(nnl(ivx)-1,ishft(ivx,8)) - icrdat(ncrd) = nnl(ivx)-1 - call setbits(icrdat(ncrd),4,8,mod(ivx,16)) - if (ivx .ge. 16) icrdat(ncrd) = ibset(icrdat(ncrd),28) - icrdorn(ncrd) = 0 -c -c Get note name -c - call getchar(lineq,iccount,charq) -c -c Get optional inputs -c -34 call getchar(lineq,iccount,durq) -c -c When chord note is done, will get ' ', making ndx=0, so go past this block -c - ndx = index('fsn+-<>12345678reicd',durq) - if (ndx .gt. 0) then - if (ndx .le. 3) then - if (.not.btest(icrdat(ncrd),19)) then - icrdat(ncrd) = ibset(icrdat(ncrd),19) - icrdat(ncrd) = ior(icrdat(ncrd),ishft(ndx,20)) - else - icrdat(ncrd) = ibset(icrdat(ncrd),22) - end if - else if (durq .eq. 'd') then -c -c Get dot on chord note in xtup. Assume +n+n -c - icrdat(ncrd) = ibset(icrdat(ncrd),26) - call getchar(lineq,iccount,durq) - iccount=iccount+1 - call readnum(lineq,iccount,dumq,fnum) - if (durq .eq. '+') then - icrdot(ncrd) = ior(icrdot(ncrd),nint(fnum*10)+64) - else - icrdot(ncrd) = ior(icrdot(ncrd),-nint(fnum*10)+64) - end if - if (index('+-',dumq) .gt. 0) then -c -c Vertical shift specified also -c - iccount=iccount+1 - call readnum(lineq,iccount,durq,fnum) - if (dumq .eq. '+') then - ifnum = nint(fnum*10)+64 - else - ifnum = -nint(fnum*10)+64 - end if - else - ifnum = 64 - end if - icrdot(ncrd) = ior(icrdot(ncrd),ishft(ifnum,7)) - iccount = iccount-1 -c iccount = iccount+4 -c -c -c - else if (ndx .eq. 19) then -c -c Set flags for cautionary accidental -c - icrdat(ncrd) = ibset(icrdat(ncrd),31) - iornq(ivx,nnl(ivx)-1) = - * ibset(iornq(ivx,nnl(ivx)-1),31) - else if (ndx .le. 7) then -c -c +/-/ Check whether octave or accidental shift -c - nactmp = 0 - call chkpm4ac(lineq,iccount,nactmp,moved) - if (moved) then -c -c Transfer accidental shift values -c - call setbits(icrdot(ncrd),6,14, - * igetbits(nactmp,6,4)) - call setbits(icrdot(ncrd),7,20, - * igetbits(nactmp,7,10)) - else - if (durq .eq. '+') then - lastlev = lastlev+7 - else if (durq .eq. '-') then - lastlev = lastlev-7 - end if - end if - else if (durq .eq. 'e') then - icrdat(ncrd) = ibset(icrdat(ncrd),23) - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),27) - else if (durq .eq. 'r') then - icrdat(ncrd) = ibset(icrdat(ncrd),24) - irest(ivx,nnl(ivx)-1) = - * ibset(irest(ivx,nnl(ivx)-1),20) - else if (durq .eq. 'i') then -c -c Midi-only accidental -c - icrdat(ncrd) = ibset(icrdat(ncrd),27) - else -c -c must be a number, save it in ioct -c - numnum = 1 - ioct = ndx-7 - end if - go to 34 - end if - if (numnum .eq. 1) then - lastlev = ifnolev(charq,ioct,iTransAmt(instno(iv))) - else - lastlev = lastlev-3 - * +mod(ifnolev(charq,10,iTransAmt(instno(iv)))-lastlev+3,7) - end if - icrdat(ncrd) = ior(icrdat(ncrd),ishft(lastlev,12)) - do 41 npreslur = npreslur , 1 , -1 -c -c Set note level for preslur on chord note in xtup -c - call setbits (isdat2(nsdat-npreslur+1),7,19,lastlev) -c -c Following lines copied from loop for non-xtup, chord note, preslur -c Initially I assigned the slur(s) to next note, so fix. -c - islur(ivx,nnl(ivx)) = ibclr(islur(ivx,nnl(ivx)),0) - islur(ivx,nnl(ivx)-1) = ibset(islur(ivx,nnl(ivx)-1),0) - isdat2(nsdat-npreslur+1) = - * ibset(isdat2(nsdat-npreslur+1),0) - call setbits(isdat1(nsdat-npreslur+1),8,3, - * igetbits(isdat1(nsdat-npreslur+1),8,3)-1) -41 continue - go to 7 - else if (charq .eq. '?') then -c -c Arpeggio -c - if (btest(ipl(ivx,nnl(ivx)-1),10)) then -c -c This is a chordal note. Set a bit in icrdat. But if *main* (spacing) note -c of chord, will not set icrdat(25), but iornq(27) -c - icrdat(ncrd) = ibset(icrdat(ncrd),25) - else - iornq(ivx,nnl(ivx)-1) = ibset(iornq(ivx,nnl(ivx)-1),27) - end if -c -c Check for shift -c - call getchar(lineq,iccount,durq) - if (durq .eq. ' ') then - iccount = iccount-1 - else -c -c durq must be "-" -c - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 -c -c record the shift -c - NumArpShift = NumArpShift+1 - IvArpShift(NumArpShift) = ivx - IpArpShift(NumArpShift) = nnl(ivx)-1 - ArpShift(NumArpShift) = fnum - end if - go to 7 - else if (charq .eq. 'D') then - call getdyn(ivx,nnl(ivx)-1,irest(ivx,nnl(ivx)-1), - * iornq(ivx,nnl(ivx)-1),lineq,iccount) - go to 7 -c -c 140215 Allow clef change inside xtuplet. With normal code, came out one -c note too late, so try making it come earlier. -c - else if (charq .eq. 'C') then -c -c Clef change on next note. Set bits 11-15. Won't allow in 2nd line of music. -c - if (nnl(iv)-1 .gt. 0) ncc(iv) = ncc(iv)+1 -c -c 140218 Need to get time differently inside xtup, since itsofar doesn't get -c updated until after xtup is done -c - nodurt = ifnodur(nnodur,dotq) - tcc(iv,ncc(iv)) = itsofar(iv)+int(1.*nodurt/ntup*(itup-1)) - isl = ibset(islur(iv,nnl(iv)),11) - call getchar(lineq,iccount,durq) -c -c Store clef number, or 7 if clef number = 9 (French violin clef) -c - isl = ior(isl,ishft(min(numclef(durq),7),12)) - ncmidcc(iv,ncc(iv)) = ncmidf(durq) - if (durq .eq. '8') then - ipl(iv,nnl(iv))=ibset(ipl(iv,nnl(iv)),2) - iTransAmt(instno(iv)) = 7+iTransAmt(instno(iv)) - end if -c -c Set marker on note with lowest voice # starting at same time. -c - if (iv .eq. 1) then - isl = ibset(isl,15) - else - do 70 iiv = 1 , iv -c nnliiv = nnl(iiv) - nnliiv = nnl(iiv)-1 - if (iiv .eq. iv) nnliiv = nnliiv+1 - itother = 0 - do 71 iip = 1 , nnliiv - if (itother .lt. itsofar(iv)) then - itother = itother+nodur(iiv,iip) - go to 71 - else if (itother .eq. itsofar(iv)) then - islur(iiv,iip) = ibset(islur(iiv,iip),15) - go to 72 - end if -71 continue -70 continue -72 continue - end if -c -c Need 'or' since may have set bit 15 in the above loop -c -c islur(iv,nnl(iv)+1) = ior(isl,islur(iv,nnl(iv)+1)) - islur(iv,nnl(iv)) = ior(isl,islur(iv,nnl(iv))) - go to 7 -c+++ - else if (charq .eq. ']') then -c -c Multiplicity up-down, must have '][ ' -c - islur(ivx,nnl(ivx)-1) = ibset(islur(ivx,nnl(ivx)-1),20) - iccount = iccount+2 - go to 7 -cc+++ - end if -c -c End of loop for xtup options. If here, charq must be a (non-crd) note name. -c or rest -c - if (charq .eq. 'r') then -c -c Rest in xtup -c - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),0) - if (index('+-b',lineq(iccount+1:iccount+1)) .gt. 0) then - call getchar(lineq,iccount,durq) - if (durq .eq. 'b') then -c -c Blank rest in middle of xtup -c - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),29) - else -c -c Override height of embedded xtup rest -c - ipm = index('- +',durq)-2 - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - nolev(ivx,nnl(ivx)) = 100+ipm*nint(fnum) - iccount = iccount-1 - end if - else if (ivx .le. nv) then - nolev(ivx,nnl(ivx)) = 0 - else - nolev(ivx,nnl(ivx)) = 2 - end if - else -c -c Counter for non-rests -c - nnb = nnb+1 - end if - notcrd = .true. -8 call getchar(lineq,iccount,durq) - if (durq .ne. ' ') then - if (index('+-<>',durq) .gt. 0) then -c -c Accidental horizontal shift -c - call chkpm4ac(lineq,iccount,nacc(ivx,nnl(ivx)),moved) - if (.not.moved) then - if (durq.eq.'+') then - lastlev = lastlev+7 - else if (durq.eq.'-') then - lastlev = lastlev-7 - end if - end if - else if (index('fsn',durq) .gt. 0) then -c -c if (nacc(ivx,nnl(ivx)) .eq. 0) then -c May have set other bits earlier - if (igetbits(nacc(ivx,nnl(ivx)),2,0) .eq. 0) then -c -c No accid set yet -c -c nacc(ivx,nnl(ivx)) = index('fsn',durq) - nacc(ivx,nnl(ivx)) = - * ior(nacc(ivx,nnl(ivx)),index('fsn',durq)) - else -c -c Symbol must be repeated, so it's a double -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),2) - end if - else if (durq .eq. 'i') then -c -c Set flag for midi-only accidental -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),17) - - else if (durq .eq. 'c') then -c -c Set flags for cautionary accidental -c - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),31) - iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),31) - else if (index('ul',durq) .gt. 0) then -c -c Force stem direction for non-beamed xtup note -c - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),30) - if (durq .eq. 'u') islur(ivx,nnl(ivx)) = - * ibset(islur(ivx,nnl(ivx)),17) - else if (durq .eq. 'e') then -c -c Left-shift main xtup note -c - ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),8) - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),27) - else if (durq .eq. 'r') then -c -c Right-shift main xtup note -c - ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),9) - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),20) - else if (index('DF',durq) .gt. 0) then -c -c Double an xtup note to make an unequal xtup -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) - if (durq .eq. 'F') nacc(ivx,nnl(ivx)) = - * ibset(nacc(ivx,nnl(ivx)),19) - ndoub = ndoub+1 - else if (durq .eq. 'd') then -c -c Dotted xtup note -c -c if (btest(irest(ivx,nnl(ivx))-1,2)) then - if (btest(irest(ivx,nnl(ivx)-1),2)) then -c -c Move dot on 2nd note of 2-note tremolo -c - ndotmv(ivx) = ndotmv(ivx)+1 - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),19) - call g1etchar(lineq,iccount,durq) ! Will be + or - - iccount = iccount+1 - call readnum(lineq,iccount,dumq, - * updot(ivx,ndotmv(ivx))) - if (durq .eq. '-') updot(ivx,ndotmv(ivx)) = - * -updot(ivx,ndotmv(ivx)) - if (index('+-',dumq) .gt. 0) then -c -c Vertical shift also -c - call readnum(lineq,iccount,durq, - * rtdot(ivx,ndotmv(ivx))) - if (durq .eq. '-') rtdot(ivx,ndotmv(ivx)) - * = -rtdot(ivx,ndotmv(ivx)) - end if - iccount = iccount-1 - else -c -c Dot for 3:1 pair of xtup notes -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),27) - end if - else -c -c Must be an octave number -c - lastlev = ifnolev(charq,ichar(durq)-48 - * ,iTransAmt(instno(iv))) - end if - go to 8 - end if - if (itup .lt. ntup) then -c -c Last note is handled *after* flowing out of the xtup if block, but still -c within block for a note-rest. Set note level now (rest already done). -c Could have problem here if rests & doubled notes are combined in xtup, -c since might exit the loop at the wrong place. Worry about it later. -c - if (.not.btest(irest(ivx,nnl(ivx)),0)) then - lastlev = lastlev-3+mod(ifnolev(charq,10, - * iTransAmt(instno(iv)))-lastlev+3,7) - nolev(ivx,nnl(ivx)) = lastlev - end if - nodur(ivx,nnl(ivx)) = 0 - do 42 npreslur = npreslur , 1 , -1 -c -c Set note level for preslur on internal xtup note -c - call setbits (isdat2(nsdat-npreslur+1),7,19,lastlev) -42 continue - end if - if (itup .eq. ntup-ndoub) go to 12 -6 continue -12 continue - if (ornrpt) then - iornq(ivx,nnl(ivx)) = ior(iornq(ivx,nnl(ivx)), - * iand(iornq(ivx,nnl(ivx)-1),10026991)) - if (iand(iornq(ivx,nnl(ivx)),32896) .gt. 0) then -c -c This is a trill (bit 7 or 15) so must dup the parameters -c - ntrill = ntrill + 1 - ivtrill(ntrill) = ivx - iptrill(ntrill) = nnl(ivx) - xnsktr(ntrill) = xnsktr(ntrill-1) - end if - end if -c -c End of if-block for xtuplet input -c - else if (durq .eq. 'm') then -c -c Multi-bar rest: next 1 or two digits are # of bars. -c For some purposes, pretend its one bar only -c - nodur(ivx,nnl(ivx)) = lenbar - ibarmbr = nbars+1 - mbrest = 0 - xb4mbr = 0. -20 call getchar(lineq,iccount,durq) - if (ichar(durq).ge.48.and.ichar(durq).le.57) then - mbrest = 10*mbrest+ichar(durq)-48 - go to 20 - end if -c -c durq will either be blank or 'n' - if (durq .eq. 'n') then -c -c Get new height -c - iplmi = 1 - call g1etchar(lineq,iccount,durq) - if (durq .eq. '-') then - iplmi = -1 - iccount = iccount+1 - end if - call readnum(lineq,iccount,durq,hgt) - mbrhgt = nint(iplmi*hgt) - newmbrhgt = .true. - end if - else if (index('ul',durq) .gt. 0) then -c -c Set stem flipper -c - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),30) - if (durq .eq. 'u') islur(ivx,nnl(ivx)) = - * ibset(islur(ivx,nnl(ivx)),17) - go to 2 - else if (durq .eq. 'a') then -c -c "Alone", i.e., prohibit beam -c - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),18) - go to 2 - else if (durq .eq. 'r') then -c -c Right offset by one notehead -c - ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),9) - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),20) - go to 2 - else if (durq .eq. 'e') then -c -c Left offset by one notehead -c - ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),8) - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),27) - go to 2 - else if (index('LS',durq) .gt. 0) then -c -c Stemlength change. Get dstemlen in \internotes. Allowable values are -4 to 27.5 -c Set mult(27). Map value to 0 to 63, store in mult(10-15). Later convert to -c interbeams = internotes*2/3. -c -c - isign = 1 - if (durq .eq. 'S') isign = -1 - mult(ivx,nnl(ivx)) = ibset(mult(ivx,nnl(ivx)),27) - call getchar(lineq,iccount,durq) - if (durq .eq. ':') then -c -c End stickyS. Grab data now from prior note, since we have to shut off stickyS. -c - call setbits (mult(ivx,nnl(ivx)),6,10, - * igetbits(mult(ivx,nnl(ivx)-1),6,10)) - stickyS = .false. - go to 2 - end if -c -c If durq .ne. ':' then iccount is now on the start of the number -c - call readnum(lineq,iccount,durq,dum) - dum = isign*dum - call setbits (mult(ivx,nnl(ivx)),6,10,nint((dum+4.)*2)) - if (durq .eq. ':') then - stickyS = .true. - else - iccount = iccount-1 - end if - go to 2 - else if (durq .eq. ',') then -c -c 2:1 pattern -c - idotform = 3 -c -c Now flow to duration setting, as if durq=' ' -c - else if (durq .eq. '.') then -c -c Dotted pattern. Close out note. Mult time by 3/4. -c Set time for next note to 1/4. Start the note. -c - idotform = 1 - else if (durq .eq. 'o') then -c -c Suppress rest centering -c - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),25) - go to 2 - else if (durq .eq.'L') then -c -c With keyboard rest option, look left -c -c iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),30) - ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),1) - go to 2 - else if (index('DF',durq) .gt. 0) then -c -c Double note for xtup. Must check here in case "D" came before "x" or on -c last note of xtup. Need to flag it in pmxa since affects horiz. spacing. -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) - if (durq .eq. 'F') nacc(ivx,nnl(ivx)) = - * ibset(nacc(ivx,nnl(ivx)),19) - go to 2 - else if (durq .eq. 'A') then -c -c Accidental option -c - call getchar(lineq,iccount,durq) -c - if (durq .eq. 'o') then -c -c Ordered accidentals in a chord. Mark the main note. -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),28) - else -c -c Only other possibility is +-<> . Set tag, reduce iccount and loop to get #'s -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),29) - iccount = iccount-1 - end if - go to 2 - else if (durq .eq. 'T') then - call getchar(lineq,iccount,durq) - multtrem = index('1234',durq) - if (multtrem .eq. 0) then - iccount = iccount-1 - multtrem = 1 - end if - ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),4) - call setbits(ipl(ivx,nnl(ivx)),2,5,multtrem-1) - go to 2 - else if (durq .ne. ' ') then - print*,'Illegal character in note: ',durq,', ivx,nn:', - * ivx,nnl(ivx) - call stop1() - end if -c -c Done with note/rest options. Set level and duration. -c - if (.not.btest(irest(ivx,nnl(ivx)),0)) then - if (numnum .eq. 2) then - lastlev = ifnolev(charq,ioct,iTransAmt(instno(iv))) - nolev(ivx,nnl(ivx)) = lastlev - else - lastlev = lastlev-3 - * +mod(ifnolev(charq,10,iTransAmt(instno(iv)))-lastlev+3,7) - nolev(ivx,nnl(ivx)) = lastlev - end if - do 43 npreslur = npreslur , 1 , -1 -c -c Set level for preslur on normal note, non-chord -c - call setbits(isdat2(nsdat-npreslur+1),7,19,lastlev) -43 continue -c -c Only matters if last note, non-rest of xtuplet -c - nnb = nnb+1 - end if -c -c Set flag for unbeamed xtup if it just has 1 note -c - if (inxtup .and. nnb.eq.1) then - islur(ivx,note1xtup) = ibset(islur(ivx,note1xtup),18) - end if - if (idotform .gt. 0) then - if (idotform .eq. 1) then - nodur(ivx,nnl(ivx)) = ifnodur(nnodur,dotq)*3/2 - else if (idotform .eq. 2) then - nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx)-1)/3 - else if (idotform .eq. 3) then - nodur(ivx,nnl(ivx)) = ifnodur(nnodur,dotq) - else if (idotform .eq. 4) then - nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx)-1)/2 - end if - else if (btest(islur(ivx,nnl(ivx)),19)) then -c -c Set duration of full-bar rest as pause -c - nodur(ivx,nnl(ivx)) = lenbar -c -c Use a one-line function to set nnodur. It gives inverse of ifnodur. -c - nnodur = index('62514x0x37', - * chax(48+int(log(.1+lenbar)/.69315)))-1 - else if (ibarmbr.ne.nbars+1) then - nodur(ivx,nnl(ivx)) = ifnodur(nnodur,dotq) - if (btest(islur(ivx,nnl(ivx)),3)) - * nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx))*7/6 - end if - if (shifton .and. .not.btest(irest(ivx,nnl(ivx)),16)) then -c -c Shift is on, and this is not first shifted note. Check for duration change -c - if (nodur(ivx,nnl(ivx)) .ne. nodur(ivx,nnl(ivx)-1)) then -c -c Must stop and restart the offset. -c - irest(ivx,nnl(ivx)-1) = ibset(irest(ivx,nnl(ivx)-1),17) - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),16) - nudoff(ivx) = nudoff(ivx)+1 - udoff(ivx,nudoff(ivx)) = udoff(ivx,nudoff(ivx)-1) - end if - end if - itsofar(ivx) = itsofar(ivx)+nodur(ivx,nnl(ivx)) - if (autofbon .and. tautofb.gt.tol .and. fbon) then -c -c Check to see if need to terminate auto forced beam -c - if (mod(itsofar(ivx)-t1autofb,tautofb) .lt. tol) then -c -c Terminate autofb -c - t2fb(ivx,nfb(ivx)) = itsofar(ivx) - fbon = .false. - end if - end if - if (mod(itsofar(ivx)-lenb0,lenbar) .eq. 0) then -c -c Finished a bar -c - nbars = nbars+1 - nib(ivx,nbars) = nnl(ivx) - if (firstgulp.and.lenb0.ne.0.and.nbars.eq.1) then -c -c Just finished the pickup bar for this voice. -c - lenbar = lenb1 - end if - end if - if (idotform .eq. 1) then - call getchar(lineq,iccount,charq) - idotform = 2 - numnum = 1 - go to 28 - else if (idotform .eq. 3) then - call getchar(lineq,iccount,charq) - idotform = 4 - numnum = 1 - go to 28 - end if -c -c End of sub block for note-rest -c - else if (charq .eq. 'z') then -c -c Chord note. Must have note name, may have octave#,+,-,s,f,n,d -c Actually the 'd' is not used, since time value comes from -c basic note. Unless dot is to be shifted! -c Doesn't increase # of notes, so must handle separately -c ncrd: index of crd -c Set bit 10 of ipl on main note as flag -c Bits in icrdat: -c 0-7 ip within voice -c 8-11 ivx -c 12-18 note level -c 19 accidental? -c 20-22 accidental value (1=natural, 2=flat, 3=sharp, 6=dflat, 7=dsharp) -c 23 shift left -c 24 shift right -c 25 arpeggio start or stop -c 26 flag for moved dot (here, not icrdot, since this is always reset!) -c 27 Midi-only accidental -c 29 Tag for accidental shift...means add to autoshifts. -c 31 Cautionary accidental -c -c Bits in icrdot: -c 0-6 10*abs(vertical dot shift in \internote) + 64 -c 7-13 10*abs(horizontal dot shift in \internote) + 64 -c 14-19 vert accidental shift-32 -c 20-26 20*(horiz accidental shift+3.2) -c 27-29 top-down level rank of chord note w/accid. Set in crdaccs. -c -c Bits in icrdorn are same as in iornq, even tho most orns won't go in crds. -c - ncrd = ncrd+1 - ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),10) - numnum = 0 -c icrdat(ncrd) = ior(nnl(ivx)-1,ishft(ivx,8)) - icrdat(ncrd) = nnl(ivx) - call setbits(icrdat(ncrd),4,8,mod(ivx,16)) - if (ivx .ge. 16) icrdat(ncrd) = ibset(icrdat(ncrd),28) - icrdot(ncrd) = 0 - icrdorn(ncrd) = 0 -c -c Get note name -c - call getchar(lineq,iccount,charq) -c -c Get optional inputs -c -25 call getchar(lineq,iccount,durq) -c ndx = index('fsn+-<>12345678rediA',durq) - ndx = index('fsn+-<>12345678rediAc',durq) - if (ndx .eq. 20) then -c -c Expect +|-|<|> , set tag, loop -c - icrdat(ncrd) = ibset(icrdat(ncrd),29) - go to 25 - else if (ndx .gt. 0) then - if (ndx .le. 3) then - if (.not.btest(icrdat(ncrd),19)) then - icrdat(ncrd) = ibset(icrdat(ncrd),19) - icrdat(ncrd) = ior(icrdat(ncrd),ishft(ndx,20)) - else - icrdat(ncrd) = ibset(icrdat(ncrd),22) - end if - else if (ndx .eq. 21) then -c -c Set flags for cautionary accidental -c - icrdat(ncrd) = ibset(icrdat(ncrd),31) - iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),31) - else if (ndx .le. 7) then -c -c +/-/ Check whether octave or accidental shift -c - nactmp = 0 - call chkpm4ac(lineq,iccount,nactmp,moved) - if (moved) then -c -c Transfer accidental shift values -c - call setbits(icrdot(ncrd),6,14,igetbits(nactmp,6,4)) - call setbits(icrdot(ncrd),7,20,igetbits(nactmp,7,10)) - else - if (durq .eq. '+') then - lastlev = lastlev+7 - else if (durq .eq. '-') then - lastlev = lastlev-7 - end if - end if - else if (durq .eq. 'e') then - icrdat(ncrd) = ibset(icrdat(ncrd),23) - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),27) - else if (durq .eq. 'r') then - icrdat(ncrd) = ibset(icrdat(ncrd),24) - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),20) - else if (durq .eq. 'i') then -c -c Midi-only accidental on chord note -c - icrdat(ncrd) = ibset(icrdat(ncrd),27) - else if (durq .eq. 'd') then -c -c Must keep 'd' optional (backward compatibility), unless it is moved! -c - if (index('+-',lineq(iccount+1:iccount+1)) .gt. 0) then -c -c move a dot, unless next char is not part of a number -c - if (index('0123456789.',lineq(iccount+2:iccount+2)) - * .eq. 0) go to 25 - icrdat(ncrd) = ibset(icrdat(ncrd),26) - call getchar(lineq,iccount,durq) - iccount=iccount+1 - call readnum(lineq,iccount,dumq,fnum) - if (durq .eq. '+') then - icrdot(ncrd) = ior(icrdot(ncrd),nint(fnum*10)+64) - else - icrdot(ncrd) = ior(icrdot(ncrd),-nint(fnum*10)+64) - end if - if (index('+-',dumq) .gt. 0) then -c -c Vertical shift specified also -c - iccount=iccount+1 - call readnum(lineq,iccount,durq,fnum) - if (dumq .eq. '+') then - ifnum = nint(fnum*10)+64 - else - ifnum = -nint(fnum*10)+64 - end if - else - ifnum = 64 - end if - icrdot(ncrd) = ior(icrdot(ncrd),ishft(ifnum,7)) - iccount = iccount-1 - end if - else -c -c must be a single digit, save it in ioct -c - numnum = 1 - ioct = ndx-7 - end if - go to 25 - end if - if (numnum .eq. 1) then - lastlev = ifnolev(charq,ioct,iTransAmt(instno(iv))) - else - lastlev = lastlev-3 - * +mod(ifnolev(charq,10,iTransAmt(instno(iv)))-lastlev+3,7) - end if - icrdat(ncrd) = ior(icrdat(ncrd),ishft(lastlev,12)) - do 44 npreslur = npreslur , 1 , -1 - call setbits (isdat2(nsdat-npreslur+1),7,19,lastlev) -c -c Set level for chord note. -c Initially I assigned the slur(s) to next note, so fix. -c - islur(ivx,nnl(ivx)+1) = ibclr(islur(ivx,nnl(ivx)+1),0) - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),0) - isdat2(nsdat-npreslur+1) = ibset(isdat2(nsdat-npreslur+1),0) - call setbits(isdat1(nsdat-npreslur+1),8,3, - * igetbits(isdat1(nsdat-npreslur+1),8,3)-1) -44 continue - if (notcrd) then -c -c This is the first chord note in this chord. -c - minlev = min(nolev(ivx,nnl(ivx)),lastlev) - maxlev = max(nolev(ivx,nnl(ivx)),lastlev) - else - minlev = min(minlev,lastlev) - maxlev = max(maxlev,lastlev) - end if - notcrd = .false. - else if (charq .eq. 'G') then - call getgrace(ivx,nnl,lineq,iccount,islur,iornq,ipl,ndlev, - * lastlev,iv,nv) -c -c Grace, comes *before* main note: -c UNLESS there's an 'A' or 'W' after the 'G' -c ngrace = # of grace note groups so far in block -c ivg(ngrace), ipg(ngrace) -c nng(ngrace) = # of notes in this group: default = 1 -c ngstrt(ngrace) = starting position in nolevg of levels for this grace -c multg(ngrace) = multiplicity: default = 1; input as 'm(digit)' -c upg(ngrace) = logical for beam or stem dirn: default T, input'u,l' -c slurg(ngrace) = logical for slur; default F, input 's' -c slashg(ngrace) = T if slash; default is F, input 'x' -c These data MUST precede note name of first note -c nolevg, naccg: lists of levels and accid's, indexed as described above. -c - else if (charq .eq. sq) then -c -c Literal TeX string -c - call littex(islur,nnl(ivx)+1,ivx,topmods,lineq,iccount) - else if (charq .eq. '"') then -c -c pmxlyr string. Expand "..." to \pmxlyr{...}\ -c - if (.not. inputmlyr) then - ictemp = 0 - lineqt = sq//sq//sq//'input musixlyr '//sq - call littex(islur,nnl(ivx)+1,ivx,topmods,lineqt,ictemp) - inputmlyr = .true. - end if - call dopmxlyr(lineq,iccount) - charq = sq - call littex(islur,nnl(ivx)+1,ivx,topmods,lineq,iccount) - else if (charq .eq. 'o') then -c -c Ornament on non-xtup note. Symbol must come AFTER the affected note -c - if (notcrd) then - nole = nolev(ivx,nnl(ivx)) - else - nole = iand(127,ishft(icrdat(ncrd),-12)) - end if - call getorn(lineq,iccount,iornq(ivx,nnl(ivx)), - * iornq(ivx,0),ornrpt,noffseg,nnl(ivx),ivx, - * .true.,notcrd,nole) - else if (index('st(){}',charq) .gt. 0) then - nnlivx = nnl(ivx) - if (charq.eq.'(' .or. charq.eq.'{') then -c -c Detect preslur on normal non-chord note -c - nnlivx = nnlivx+1 - npreslur = npreslur+1 - end if - islur(ivx,nnlivx) = ibset(islur(ivx,nnlivx),0) - if (charq.eq.'t') - * islur(ivx,nnlivx) = ibset(islur(ivx,nnlivx),1) - if (ivx .le. nv) then - kv = 1 - else - kv = 2 - end if - if (fontslur) then - call sslur(lineq,iccount,iv,kv,nnlivx,isdat1,isdat2,isdat3, - * nsdat,notcrd,nolev(ivx,nnlivx),charq) - else - call spsslur(lineq,iccount,iv,kv,nnlivx,isdat1,isdat2,isdat3, - * isdat4,nsdat,notcrd,nolev(ivx,nnlivx),charq) - end if - else if (charq .eq. '?') then -c -c Arpeggio -c - if (btest(ipl(ivx,nnl(ivx)),10)) then -c -c This is a chordal note. Set a bit in icrdat. But if *main* (spacing) note -c of chord, will not set icrdat(25), but iornq(27) -c - icrdat(ncrd) = ibset(icrdat(ncrd),25) - else - iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),27) - end if -c -c Check for shift -c - call getchar(lineq,iccount,durq) - if (durq .eq. ' ') then - iccount = iccount-1 - else -c -c durq must be "-" -c - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 -c -c record the shift -c - NumArpShift = NumArpShift+1 - IvArpShift(NumArpShift) = ivx - IpArpShift(NumArpShift) = nnl(ivx) - ArpShift(NumArpShift) = fnum - end if - else if (index('0123456789#-nx_',charq) .gt. 0) then -c -c We have a figure. Must come AFTER the note it goes under -c - - ivf = 1 - if (ivx .gt. 1) then - if (ivxfig2 .eq. 0) then - ivxfig2 = ivx - else if (ivx .ne. ivxfig2) then - print* - print*,'Figures not allowed in >1 voice above first' - stop - end if - ivf = 2 - end if - nfig1 = nfigs(ivf)+1 - call getfig(itoff(ivf,nfig1),charq,lineq,iccount, - * isfig(ivf,nnl(ivx)),itfig(ivf,nfig1),itsofar(ivx), - * nodur(ivx,nnl(ivx)),figq(ivf,nfig1), -c * ivupfig(ivf,nfig1),nfigs(ivf)) - * ivupfig(ivf,nfig1),ivvfig(ivf,nfig1),nfigs(ivf)) - else if (charq .eq. '[') then -c -c Start forced beam. Record barno & time since start of inp. blk. Set signal -c - nfb(ivx) = nfb(ivx)+1 - fbon = .true. - ulfbq(ivx,nfb(ivx)) = 'x' - t1fb(ivx,nfb(ivx)) = itsofar(ivx) - nadj = 0 - if (autofbon) then - autofbon = .false. - end if -17 call getchar(lineq,iccount,charq) - if (index('ulf',charq) .gt. 0) then - ulfbq(ivx,nfb(ivx)) = charq - go to 17 - else if (charq .eq. 'j') then -c -c Continuing a jumped beam here -c - irest(ivx,nnl(ivx)+1) = ibset(irest(ivx,nnl(ivx)+1),24) -c -c Set flag to watch for END of this forced beam, so can set flag rest(30) on -c NEXT note as signal to start a new notes group there. -c - isbj2 = .true. - go to 17 - else if (charq .eq. 'h') then - islur(ivx,nnl(ivx)+1) = ibset(islur(ivx,nnl(ivx)+1),2) - go to 17 - else if (charq .eq. 'm') then -c -c Force multiplicity. Next input is digit -c - call getchar(lineq,iccount,charq) - islur(ivx,nnl(ivx)+1) = ibset(islur(ivx,nnl(ivx)+1),21) - call setbits(islur(ivx,nnl(ivx)+1),3,22,ichar(charq)-48) - go to 17 - else if (charq .eq. ':') then -c -c Start auto forced beam pattern -c - autofbon = .true. -c -c When forced later beam ends, check whether tautofv <=0; if so set it. -c - tautofb = -itsofar(ivx) - t1autofb = itsofar(ivx) - go to 17 - else if (charq .ne. ' ') then -c -c Must be '+/-' for height or slope shift -c - nadj = nadj+1 -c -c nadj = 1,2, or 3 for normal start level, slope, or beam-thk start level. -c - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - iadj = nint(fnum) - if (charq .eq. '-') iadj = -iadj - if (nadj .eq. 1) then -c -c This is a level shift. Note if 0 was entered, iadj = 30 -c - call setbits(ipl(ivx,nnl(ivx)+1),6,11,iadj+30) - else if (nadj .eq. 2) then -c -c Must be a slope shift -c - call setbits(ipl(ivx,nnl(ivx)+1),6,17,iadj+30) - else -c -c Beam-thk fine tune -c - call setbits(islur(ivx,nnl(ivx)+1),2,27,iadj) - end if - go to 17 - end if - else if (charq .eq. ']') then - if (autofbon .and. tautofb.lt.tol) then - tautofb=itsofar(ivx)+tautofb - end if - call getchar(lineq,iccount,charq) - if (index('j ',charq) .gt. 0) then -c -c Since ']' comes AFTER note, itsofar has been updated. Set ending signal. -c - t2fb(ivx,nfb(ivx)) = itsofar(ivx) - fbon = .false. - if (charq .eq. 'j') then - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),23) - end if - if (isbj2) then -c -c This is the end of a fb segment of a jump beam. Set flag on NEXT note to -c force start of new notes group, provided this is not last note in bar. -c - if (mod(itsofar(ivx),lenbar) .ne. 0) - * irest(ivx,nnl(ivx)+1) = ibset(irest(ivx,nnl(ivx)+1),30) - isbj2 = .false. - end if - else if (charq .eq. '[') then -c -c Multiplicity down-up signal -c - islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),20) - else if (charq .eq. '-') then -c -c Set signals for gap in single-slope beam [...]-[...] -c - nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),20) - nacc(ivx,nnl(ivx)+1) = ibset(nacc(ivx,nnl(ivx)+1),21) -c -c Next two characters must be "[ ". Skip over them. -c - iccount = iccount+2 - end if - else if (charq .eq. 'D') then - call getdyn(ivx,nnl(ivx),irest(ivx,nnl(ivx)), - * iornq(ivx,nnl(ivx)),lineq,iccount) - else if (charq .eq. 'h') then -c -c Heading or height. For heading, only OK if at start of block -c Check whether at beginning of a block -c - if (iv.ne.1 .or. nnl(1).ne.0) then - print*,'You entered "h" not at beginning of block' - call stop1() - end if - call getchar(lineq,iccount,durq) - ihdvrt = 0 - if (index('+-',durq) .gt. 0) then -c -c Vertical offset -c - iccount = iccount+1 - call readnum(lineq,iccount,charq,fnum) - ihdvrt = fnum+.1 - if (durq .eq. '-') ihdvrt = -ihdvrt - durq = charq - end if - if (durq .ne. ' ') then -c -c Height symbol. Read past (until next blank) -c -3 call getchar(lineq,iccount,durq) - if (durq .ne. ' ') go to 3 - else -c -c Set flag for header & read it in -c - ihdht = 16 - call getbuf(headrq) - iccount = 128 - end if - else if (charq .eq. 'L') then -c -c Linebreak, already handled some in pmxa, but need to get data for -c shortened line or coda lengths -c - iccount = iccount+1 - if (lineq(iccount:iccount) .eq. 'C') then -c -c Coda, get length -c - iccount = iccount+1 - call readnum(lineq,iccount,durq,codafrac) - ishort = 3 - if (durq .eq. 'n') nocodabn = .true. - return - end if -c -c Get line number -c - call readnum(lineq,iccount,durq,fmovbrk) -48 continue ! Allow transfer up from below if S follows M - if (durq .eq. 'S') then -c -c Shortened line, get shortening fraction -c - iccount = iccount+1 - call readnum(lineq,iccount,durq,shortfrac) - ishort = 1 - codafrac = 0. - end if -c -c Begin check for movement break -c - if (durq .eq. 'P') then - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - end if - if (durq .eq. 'M') then - movbrk = nint(fmovbrk) - movgap = 0 - parmov = -1. - call getchar(lineq,iccount,durq) -31 if (durq .eq. '+') then -c -c Get vertical space (\internotes) -c - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - movgap = nint(fnum) - go to 31 - else if (durq .eq. 'i') then - iccount = iccount+1 - call readnum(lineq,iccount,durq,parmov) - go to 31 - else if (durq .eq. 'c') then - nobar1 = .true. - call getchar(lineq,iccount,durq) - go to 31 - else if (durq .eq. 'r') then -c -c "rename" can be set on or off. -c - call getchar(lineq,iccount,durq) - rename = durq.eq.'+' - call getchar(lineq,iccount,durq) - go to 31 - else if (durq .eq. 'n') then -c -c Change # of voices. Input ninow, iiorig(1...ninow). Will use names, -c staves per inst. and clefs corr. to iiorig in original list of instruments. -c - nvold = nv - nv = 0 - rename = .true. - call getchar(lineq,iccount,durq) - if (durq .eq. ':') then - iccount = iccount+2 - read(lineq(iccount-1:iccount),'(i2)')ninow - else - ninow = ichar(durq)-48 - end if - iiv = 0 - do 63 iinow = 1 , ninow - call getchar(lineq,iccount,durq) - if (durq .eq. ':') then - iccount = iccount+2 - read(lineq(iccount-1:iccount),'(i2)')iiorig(iinow) - else - iiorig(iinow) = ichar(durq)-48 - end if - nspern(iinow) = nsperi(iiorig(iinow)) - nv = nv+nspern(iinow) - sepsymq(iiv+nspern(iinow)) = '&' - if (nspern(iinow) .gt. 1) then - do 64 iis = 1 , nspern(iinow)-1 - sepsymq(iiv+iis) = '|' -64 continue - end if - iiv = iiv+nspern(iinow) -63 continue -c -c 120818 Per Rainer's suggestion, defer changing \nbinstruments until issuing \newmovement -c -c if (islast) then -c if (ninow .lt. 10) then -c write(11,'(a)')sq//'newnoi{'//chax(ninow+48)//'}%' -c else -c write(11,'(a8,i2,a2)')sq//'newnoi{',ninow,'}%' -c end if -c end if - if (nv.eq.1 .and. nvold.gt.1) then - if (islast) write(11,'(a)')sq//'nostartrule' - else if (nv.gt.1 .and. nvold.eq.1) then - if (islast) write(11,'(a)')sq//'startrule' - end if - iiv = 0 - do 60 iinow = 1 , ninow - do 61 iis = 1 , nspern(iinow) - iiv = iiv+1 -c -c May not really need to re-enter clefs, but it's easier to program since -c clef names are not saved but are needed in newvoice to set ncmidcc. -c - call getchar(lineq,iccount,clefq(iiv)) - call newvoice(iiv,clefq(iiv),.true.) - if (nspern(iinow) .eq. 1) then - hdlndq = chax(48+numclef(clefq(iiv))) - lclf = 1 - else if (iis .eq. 1) then - hdlndq = '{'//chax(48+numclef(clefq(iiv))) - lclf = 2 - else if (iis .lt. nspern(iinow)) then - hdlndq = hdlndq(1:lclf)//chax(48+numclef(clefq(iiv))) - lclf = lclf+1 - else - hdlndq = - * hdlndq(1:lclf)//chax(48+numclef(clefq(iiv)))//'}' - lclf = lclf+2 - end if -61 continue -c -c setstaffs & setclef go by instrument, not voice -c - if (islast) then - if (iinow .lt. 10) then - write(11,'(a)')sq//'setstaffs' - * //chax(48+iinow)//chax(48+nspern(iinow))//'%' - write(11,'(a)')sq//'setclef'//chax(48+iinow) - * //hdlndq(1:lclf)//'%' - if (fullsize(iiorig(iinow)).gt.0.9) then - write(11,'(a)')sq//'setsize'//chax(48+iinow) - * //sq//'normalvalue%' -c -c 140526 Account for staff size specs when noinst changes. May be confusion -c here if more than one staff per instrument -c - else if (fullsize(iiorig(iinow)).gt..7) then - write(11,'(a)')sq//'setsize'//chax(48+iinow) - * //sq//'smallvalue%' - else - write(11,'(a)')sq//'setsize'//chax(48+iinow) - * //sq//'tinyvalue%' - end if - else - write(11,'(a11,i2,a)')sq//'setstaffs{',iinow, - * '}'//chax(48+nspern(iinow))//'%' - write(11,'(a9,i2,a)')sq//'setclef{',iinow, - * '}'//hdlndq(1:lclf)//'%' - end if - end if -60 continue -c -c Loop back up, this may not be last option in M. Note flow out if durq=' ' -c - call getchar(lineq,iccount,durq) - go to 31 - else if (durq .eq. 'S') then - go to 48 - end if -c -c Write instrument names -c - if (.not.rename) then - do 62 iinst = 1 , ninow - if (islast) then - if (iinst .lt. 10) then - write(11,'(a8,i1,a3)')sq//'setname',iinst,'{}%' - else - write(11,'(a9,i2,a4)')sq//'setname{',iinst,'}{}%' - end if - end if -62 continue - else - do 65 iinst = 1 , ninow - if (islast) then - if (iinst .lt. 10) then - write(11,'(a8,i1,a)')sq//'setname',iinst,'{'// - * inameq(iiorig(iinst))(1:lnam(iiorig(iinst)))//'}%' - else - write(11,'(a9,i2,a)')sq//'setname{',iinst,'}{'// - * inameq(iiorig(iinst))(1:lnam(iiorig(iinst)))//'}%' - end if - end if -65 continue - if (ishort.ne.4.and.ishort.ne.2) rename = .false. -c -c Reset later and rewrite setname{} in shortening case mcm, since if -c written here it will be inside {{...}} and will be ignored -c - end if - end if - else if (charq .eq.'|' ) then -c -c End of bar symbol. Check about end of bar hardspace. -c - if (btest(iornq(ivx,nnl(ivx)+1),26)) then -c -c There was a hardspace followed by a bar line. Remove it from the hardspace -c list, store with shifts instead, set special bit. Need to repeat this code -c at '/'. -c - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),18) - nudoff(ivx) = nudoff(ivx)+1 - udoff(ivx,nudoff(ivx)) = udsp(nudsp) - nudsp = nudsp-1 - iornq(ivx,nnl(ivx)+1) = ibclr(iornq(ivx,nnl(ivx)+1),26) - end if - else if (index('wS',charq) .gt. 0) then -c -c Width symbol or new nsyst. Read past (until blank) -c -4 call getchar(lineq,iccount,durq) - if (durq .ne. ' ') go to 4 - else if (charq .eq. 'l') then -c -c Lower string. Only OK if at start of block -c Check whether at beginning of a block -c - if (iv.ne.1 .or. nnl(1).ne.0) then - print*,'You entered "l" not at beginning of block' - call stop1() - end if -c -c Set flag for lower string & read it in -c - lower = .true. - call getbuf(lowerq) - iccount = 128 - else if (charq .eq. 'm') then -c -c Meter change. Only allow at beginning of block. -c mtrnuml, mtrdenl (logical) and p (printable) will be input. -c mtrnuml=0 initially. (In common) -c -c Check whether at beginning of a block -c - if (iv.ne.1 .or. nnl(1).ne.0) then - print*,'You entered "m" not at beginning of block' - call stop1() - end if - call readmeter(lineq,iccount,mtrnuml,mtrdenl) - call readmeter(lineq,iccount,mtrnmp,mtrdnp) - lenbeat = ifnodur(mtrdenl,'x') - if (mtrdenl .eq. 2) lenbeat = 16 - lenbar = mtrnuml*lenbeat - if (mtrdenl .eq. 2) lenbar = lenbar*2 - lenb1 = lenbar - lenb0 = 0 - if (ismidi) call midievent('m',mtrnuml,mtrdenl) - else if (charq .eq. 'C') then -c -c Clef change on next note. Set bits 11-15. Won't allow in 2nd line of music. -c - if (nnl(iv) .gt. 0) ncc(iv) = ncc(iv)+1 - tcc(iv,ncc(iv)) = itsofar(iv) - isl = ibset(islur(iv,nnl(iv)+1),11) - call getchar(lineq,iccount,durq) -c -c Store clef number, or 7 if clef number = 9 (French violin clef) -c - isl = ior(isl,ishft(min(numclef(durq),7),12)) - ncmidcc(iv,ncc(iv)) = ncmidf(durq) - if (durq .eq. '8') then - ipl(iv,nnl(iv)+1)=ibset(ipl(iv,nnl(iv)+1),2) - iTransAmt(instno(iv)) = 7+iTransAmt(instno(iv)) - lastlev = lastlev+7 - if (nnl(iv).eq.0) then - ndlev(iv,1) = ndlev(iv,1)+7 - ndlev(iv,2) = ndlev(iv,2)+7 - end if - else -c -c This won't work if you really had an octave transposition with some -c other clef. Need a check on whether prior clef was an octave clef. -c - if (iTransAmt(instno(iv)).eq.7) then - iTransAmt(instno(iv))=iTransAmt(instno(iv))-7 - lastlev = lastlev-7 - if (nnl(iv).eq.0) then - ndlev(iv,1) = ndlev(iv,1)-7 - ndlev(iv,2) = ndlev(iv,2)-7 - end if - end if - end if -c -c Set marker on note with lowest voice # starting at same time. -c - if (iv .eq. 1) then - isl = ibset(isl,15) - else - do 13 iiv = 1 , iv - nnliiv = nnl(iiv) - if (iiv .eq. iv) nnliiv = nnliiv+1 - itother = 0 - do 14 iip = 1 , nnliiv - if (itother .lt. itsofar(iv)) then - itother = itother+nodur(iiv,iip) - go to 14 - else if (itother .eq. itsofar(iv)) then - islur(iiv,iip) = ibset(islur(iiv,iip),15) - go to 15 - end if -14 continue -13 continue -15 continue - end if -c -c Need 'or' since may have set bit 15 in the above loop -c - islur(iv,nnl(iv)+1) = ior(isl,islur(iv,nnl(iv)+1)) - else if (charq .eq. 'R') then -c -c Repeats. set bits 5, 6, and/or 8 of islur(1,ip+1) -c -10 call getchar(lineq,iccount,durq) -c -c Save designator in case it's a terminal Rr or Rd -c - if (durq .eq. 'l') then - islur(1,nnl(1)+1) = ibset(islur(1,nnl(1)+1),5) - go to 10 - else if (index('rdDbz',durq) .gt. 0) then - if (durq .eq. 'r') then - islur(1,nnl(1)+1) = ibset(islur(1,nnl(1)+1),6) - else if (durq .eq. 'd') then - islur(1,nnl(1)+1) = ibset(islur(1,nnl(1)+1),8) - else if (durq .eq. 'D') then - islur(1,nnl(1)+1) = ibset(islur(1,nnl(1)+1),26) - else if (durq .eq. 'b') then - islur(1,nnl(1)+1) = ibset(islur(1,nnl(1)+1),25) - else if (durq .eq. 'z') then -c iornq(1,nnl(1)+1) = ibset(iornq(1,nnl(1)+1),29) - ipl(1,nnl(1)+1) = ibset(ipl(1,nnl(1)+1),0) - end if - rptprev = .true. - rptfq1 = durq - go to 10 - end if - else if (charq .eq. 'V') then -c -c Ending -c - nnnl = nnl(1)+1 - lvoltxt = 0 -11 call getchar(lineq,iccount,durq) - if (durq.eq.'b' .or. durq .eq.'x') then -c -c End Volta, set bit9, and bit10 on if 'b' (end w/ box) -c - islur(1,nnnl) = ibset(islur(1,nnnl),9) - if (durq .eq. 'b') islur(1,nnnl) = ibset(islur(1,nnnl),10) - go to 11 - else if (durq .ne. ' ') then -c -c Start volta; Get text -c - if (lvoltxt .eq. 0) then -c -c First character for text -c - lvoltxt = 1 - islur(1,nnnl) = ibset(islur(1,nnnl),7) - nvolt = nvolt+1 - voltxtq(nvolt) = durq - else - voltxtq(nvolt) = voltxtq(nvolt)(1:lvoltxt)//durq - lvoltxt = lvoltxt+1 - end if - go to 11 - end if - else if (charq .eq. 'B') then - bcspec = .not.bcspec - else if (charq .eq. 'P') then -c -c Page numbers. Print stuff right now. -c - npg1 = 0 -c -c Will use ltopnam to signal whether there's a centered heading -c - ltopnam = 0 - ipg1r = 0 -16 call getchar(lineq,iccount,durq) - if (ichar(durq).ge.48 .and. ichar(durq).le.57) then - npg1 = npg1*10+ichar(durq)-48 - go to 16 - else if (durq .eq. 'l') then - if (npg1.eq.0 .or. mod(npg1,2).eq.1) ipg1r = 1 - go to 16 - else if (durq .eq. 'r') then - if (npg1.gt.0 .and. mod(npg1,2).eq.0) ipg1r = 1 - go to 16 - else if (durq .eq. 'c') then -c -c Top-centered name. Assume this is last option. Read the name. -c May surround name in double quotes (to allow blanks). -c - call getchar(lineq,iccount,durq) - if (durq .eq. ' ') then - ltopnam = lenstr(cheadq,60) - else - namstrt = iccount - if (durq .eq. '"') then -c -c Using quote delimiters. -c - quoted = .true. - namstrt = namstrt+1 - else - quoted = .false. - end if - do 35 iccount = namstrt+1, 128 -c if ((quoted .and. lineq(iccount:iccount) .eq. '"') .or. - if ((quoted .and. lineq(iccount:iccount).eq.'"' .and. - * lineq(iccount-1:iccount-1).ne.'\') .or. - * (.not.quoted .and. lineq(iccount:iccount) .eq. ' ')) - * go to 36 -c -c On exit, iccount is OK, and name is in (namstrt:iccount-1) -c -35 continue - print*,'Awww, cmon, should not be here.' - call stop1() -36 continue - ltopnam = iccount-namstrt - cheadq = lineq(namstrt:iccount-1) - end if - end if -c -c Done getting data, now assemble the command -c - if (npg1.eq.0) npg1=1 -c -c 2/23/03 Don't use \atnextline if on first page and only one system -c -c if (ipage.gt.1 .or. nsystp(1).gt.1) then - hdlndq = sq//'def'//sq//'atnextline{'//sq//'toppageno{' - lhead = 27 -c else -c hdlndq = sq//'toppageno{' -c lhead = 11 -c end if - if (npg1 .lt. 10) then -c -c Note we are overwriting the last "{" -c - write(hdlndq(lhead:lhead),'(i1)')npg1 - else if (npg1 .lt. 100) then - lhead = lhead+3 - write(hdlndq(lhead-2:lhead),'(i2,a1)')npg1,'}' - else - lhead = lhead+4 - write(hdlndq(lhead-3:lhead),'(i3,a1)')npg1,'}' - end if - hdlndq = hdlndq(1:lhead)//chax(ipg1r+48)//'{' - lhead = lhead+2 -c if (ipage.gt.1 .or. nsystp(1).gt.1) then - if (ltopnam .eq. 0) then - if (islast) write(11,'(a)')hdlndq(1:lhead)//'}}%' - else - if (islast) - * write(11,'(a)')hdlndq(1:lhead)//cheadq(1:ltopnam)//'}}%' - end if -c else -c if (ltopnam .eq. 0) then -c if (islast) write(11,'(a)')hdlndq(1:lhead)//'}%' -c else -c if (islast) -c * write(11,'(a)')hdlndq(1:lhead)//cheadq(1:ltopnam)//'}%' -c end if -c end if - else if (charq .eq. 'W') then -c -c Just eat the number that must follow, it was used in pmxa -c - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - else if (charq .eq. 'T') then - headlog = .true. - inhead = 0 - call getchar(lineq,iccount,durq) - if (durq .eq. 'i') then - call getbuf(instrq) -c -c A kluge for parts from separate score file for later movements. -c - if (instrq(1:1) .eq. ' ') headlog = .false. - cheadq = instrq(1:60) - else if (durq .eq. 't') then - call getchar(lineq,iccount,durq) -c -c Optionally can include extra vertical \internotes above inbothd -c - if (index('-+0123456789',durq) .gt. 0) then - ipm = 1 - if (index('+-',durq) .gt. 0) then -c -c Don't trust readnum to round this negative integer properly -c - iccount = iccount+1 - if (durq .eq. '-') ipm = -1 - end if - call readnum(lineq,iccount,durq,fnum) - inhead = ipm*nint(fnum) - end if - call getbuf(titleq) - else - call getbuf(compoq) - end if - inhead = inhead+inbothd - iccount = 128 - else if (charq .eq. 'A') then -c -c Accidental handling etc. -c -27 call getchar(lineq,iccount,durq) - if (durq .eq. 'r') then - if (islast) then - relacc = .true. - write(11,'(a)')sq//'relativeaccid%' - end if - else if (durq .eq. 's') then - bacfac = 1.e6 - else if (durq .eq. 'b') then - if (islast) write(11,'(a)')sq//'bigaccid%' - accfac = bacfac - else if (durq .eq. 'a') then - call getchar(lineq,iccount,durq) - call readnum(lineq,iccount,durq,fnum) - iccount = iccount-1 - else if (durq .eq. 'i') then - call getchar(lineq,iccount,durq) - call readnum(lineq,iccount,durq,tintstf) - if (.not.firstgulp) fintstf = tintstf -c -c Local corrections for first page were handled by pmxa -c - iccount = iccount-1 - else if (durq .eq. 'I') then - call getchar(lineq,iccount,durq) - call readnum(lineq,iccount,durq,gintstf) - iccount = iccount-1 - else if (durq .eq. 'd') then - lowdot = .true. - else if (durq .eq. 'o') then - continue - else if (durq .eq. 'S') then - do 50 iiv = 1 , noinst - call getchar(lineq,iccount,durq) - if (index('-s',durq) .gt. 0) then - fullsize(iiv) = 0.8 - else if (durq .eq. 't') then - fullsize(iiv) = 0.64 - else -c fullsize(ivx) = 1.0 - fullsize(iiv) = 1.0 - end if -50 continue - else if (durq .eq. 'e') then -c -c Line-spacing equalization -c - equalize = .true. -c -c The following redefinition of \parskip was put into pmx.tex in version 2.25 or so. -c But it causes problems with some older scores and when excerpts are combined -c with LaTeX. So as of 2.352 we write it here. -c - write(11,'(a)')sq//'global'//sq//'parskip 0pt plus 12'//sq - * //'Interligne minus 99'//sq//'Interligne%' - tempq = sepsymq(1) - lentemp = 1 - do 51 iiv = 2 , nv-1 - tempq = tempq(1:lentemp)//sepsymq(iiv) - lentemp = lentemp+1 -51 continue - write(11,'(a)')sq//'def'//sq//'upstrut{'//sq//'znotes' - * //tempq(1:lentemp)//sq//'zcharnote{'//sq//'upamt}{~}' - * //sq//'en}%' - else if (durq .eq. 'v') then -c -c Toggle usevshrink -c - usevshrink = .not.usevshrink - else if (durq .eq.'p') then -c -c Postscript slurs. fontslur is already false (set in g1etnote) -c - if (.not.WrotePsslurDefaults) then -c -c Set postscrirpt slur adjustment defaults -c - write(11,'(a)')sq//'Nosluradjust'//sq//'Notieadjust' - * //sq//'nohalfties' - WrotePsslurDefaults = .true. - end if -52 continue - call g1etchar(lineq,iccount,durq) ! might be "+", "-", "h" or "l" - if (index('+-',durq) .gt. 0) then -c -c Characters to change defaults for ps slurs -c - call g1etchar(lineq,iccount,charq) ! charq will be "s,t,h,c" - if (durq .eq. '+') then - if (charq .eq. 's') then - write(11,'(a)')sq//'Sluradjust' - else if (charq .eq. 't') then - write(11,'(a)')sq//'Tieadjust' - else if (charq .eq. 'h') then - write(11,'(a)')sq//'halfties' - else - SlurCurve = SlurCurve + 1 - if (SlurCurve .gt. 3.1) then - call printl('WARNING!') - call printl - * ('Default slur curvature advanced past HH, resetting') - SlurCurve = 3 - end if - end if - else - if (charq .eq. 's') then - write(11,'(a)')sq//'Nosluradjust' - else if (charq .eq. 't') then - write(11,'(a)')sq//'Notieadjust' - else if (charq .eq. 'h') then - write(11,'(a)')sq//'nohalfties' - else - SlurCurve = SlurCurve - 1 - if (SlurCurve .lt. -1.1) then - call printl('WARNING!') - call printl( - * 'Default slur curvature decremented below f, resetting') - SlurCurve = -1 - end if - end if - end if - go to 52 ! Check for another set of default changes - else if (durq .eq. 'l') then -c -c Set optional linebreak ties -c - OptLineBreakTies = .true. - go to 52 - else if (durq .eq. 'h') then -c -c Set flag to write header special on every page -c - HeaderSpecial = .true. - go to 52 - else - iccount = iccount-1 - end if - else if (durq .eq. 'K') then -c -c Toggle keyboard rest placement flag -c - kbdrests = .not.kbdrests - else if (durq .eq. 'c') then - call g1etchar(lineq,iccount,durq) -c -c Just eat the input; it was used in pmxa -c - go to 27 - else if (durq .eq. 'V') then - bottopgap = .true. - topamt = 0. - call getchar(lineq,iccount,durq) - pmfac = index('- +',durq)-2 - call g1etchar(lineq,iccount,durq) - call readnum(lineq,iccount,durq,botamt) - botamt = botamt*pmfac - pmfac = index('- +',durq)-2 - call g1etchar(lineq,iccount,durq) - call readnum(lineq,iccount,durq,topamt) - topamt = topamt*pmfac - iccount = iccount-1 - go to 27 - end if - if (index('NR',durq) .gt. 0) then -c -c Override default part names for scor2prt, or normal include file. -c Just bypass rest of input line -c - iccount = 128 - else if (durq .ne. ' ') then - go to 27 - end if - else if (charq .eq. 'K') then -77 continue - call getchar(lineq,iccount,durq) - if (durq .eq. 'n') then - ignorenats = .true. - go to 77 - end if - if (durq .ne. 'i') then -c -c Normal, full-score key change and/or transposition -c - num1 = 44-ichar(durq) - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - num1 = num1*nint(fnum) -c -c On exit, durq='+','-'. But only need isig if after start, else done in pmxa -c - iccount = iccount+1 - call readnum(lineq,iccount,charq,fnum) - if (ismidi) then - midisig = nint(fnum) - if (durq.eq.'-') midisig = -midisig -c 130317 - midisig = midisig+idsig - call midievent('k',midisig,0) - - end if -c70 continue - if (num1 .eq. 0) then -c -c Key change, not transposition. -c - ipl(ivx,nnl(ivx)+1) = ibset(ipl(ivx,nnl(ivx)+1),28) - lastisig = isig - isig = nint(fnum) - if (durq .eq. '-') isig = -isig - isig = isig+idsig - if (ismidi) call midievent('k',isig,0) - else -c -c num1 .ne. 0, so transposition, so must be at beginning. isig came with K... -c but was passed to pmxb through pmxtex.dat. isig0 comes from setup data -c (signature before transposition). idsig must be added to future key changes. -c - jv = 0 - do while (jv .lt. nm) - jv = jv+1 - iTransAmt(jv) = num1 - end do - idsig = isig-isig0 - end if - else -c -c Instrument specific transposition. -c - call GetiTransInfo(.false.,ibarcnt,lineq,iccount, - * ibaroff,nbars,noinst) -c -c The sig parameters will have been set 1st time but that's OK -c - end if - else if (charq .eq. '/') then - if (btest(iornq(ivx,nnl(ivx)+1),26)) then -c -c There was a hardspace followed by end of block. Remove it from the hardspace -c list, store with shifts instead, set special bit. This code also at '|' -c - irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),18) - nudoff(ivx) = nudoff(ivx)+1 - udoff(ivx,nudoff(ivx)) = udsp(nudsp) - nudsp = nudsp-1 - iornq(ivx,nnl(ivx)+1) = ibclr(iornq(ivx,nnl(ivx)+1),26) - end if - call getchar(lineq,iccount,durq) -c -c Save ending note level: -c - if (ivx .le. nv) then -c -c This is the first line of music on this staff. If previous block had only 1 -c voice, save last pitch from line 1 of prev. block to line 2, in case a -c 2nd line is started just below -c - if (.not.was2(iv)) ndlev(iv,2) = ndlev(iv,1) - was2(iv) = .false. - ndlev(iv,1) = lastlev - else -c -c This is the 2nd line of music on this staff. -c - was2(iv) = .true. - ndlev(iv,2) = lastlev - end if - if (durq .eq. ' ' .and. iv.eq.nv) then -c -c End of input block -c - loop = .false. - else -c -c Start a new line of music -c - if (lenb0.ne.0 .and. firstgulp) lenbar = lenb0 - nbars = 0 - if (durq .eq. ' ') then -c -c New line of music is on next staff -c - iv = iv+1 - ivx = iv - else -c -c durq must be 2nd '/'. New line of music is on same staff. Set up for it -c - ivx = nv+1 - do 23 iiv = 1 , nv - if (nvmx(iiv) .eq. 2) ivx = ivx+1 -23 continue - nvmx(iv) = 2 - ivmx(iv,2) = ivx - itsofar(ivx) = 0 - nnl(ivx) = 0 - nfb(ivx) = 0 - nudoff(ivx) = 0 - ndotmv(ivx) = 0 - do 24 j = 1 , 200 - irest(ivx,j) = 0 - islur(ivx,j) = 0 - nacc(ivx,j) = 0 - iornq(ivx,j) = 0 - ipl(ivx,j) = 0 - mult(ivx,j) = 0 -24 continue -c -c Go back and lower the rests in voice "a" that don't have over-ridden heights -c - do 26 j = 1 , nnl(iv) - if (btest(irest(iv,j),0) .and. nolev(iv,j).eq.0) - * nolev(iv,j) = -4 -26 continue - end if - end if - iccount = 128 - else if (charq .eq. 'X') then -c -c 3rd arg is only for termination of group shifts. Use "max" to avoid zero index, -c which only happens for normal X at block start, and we took special measures to -c keep group shifts for crossing block boundaries. -c - call getx(lineq,iccount,irest(ivx,max(1,nnl(ivx))), - * shifton,wheadpt,iornq(ivx,nnl(ivx)+1),ivx, - * irest(ivx,nnl(ivx)+1),itsofar(ivx),0,0,0,' ',ndoub) - else if (charq .eq. 'I') then -c -c Midi controls. -c - print*,'#14928 Calling getmidi from getnote' - call getmidi(noinst,lineq,iccount,ibarcnt,ibaroff,nbars,lenbar, - * mtrdenl,nv,.false.) - else if (charq .eq. 'M') then -c -c Macro action -c - call getchar(lineq,iccount,charq) - if (index('RS',charq) .gt. 0) then -c -c Record or save a macro. Get the number of the macro. -c - call getchar(lineq,iccount,durq) - call readnum(lineq,iccount,durq,fnum) - macnum = nint(fnum) - macuse = ibset(macuse,macnum) - if (charq .eq. 'R') then - call mrec1(lineq,iccount,ndxm) - else -c -c Save (Record but don't activate) -c -5 call mrec1(lineq,iccount,ndxm) - if (mrecord) then - call getbuf(lineq) - iccount = 0 - go to 5 - end if - iccount = iccount+ndxm+1 - end if - else if (charq .eq. 'P') then -c -c Playback the macro -c - call getchar(lineq,iccount,charq) - call readnum(lineq,iccount,durq,fnum) - macnum = nint(fnum) - icchold = iccount - lnholdq = lineq - iccount = 128 - ilmac = il1mac(macnum) - mplay = .true. - end if - else if (index(',.',charq) .gt. 0) then -c -c Continued rhythmic shortcut -c - idotform = index('. ,',charq) - if (idotform .eq. 1) then -c -c Check for start of forced beam on 2nd member of dotform=1 shortcut -c - if (fbon) then - if (t1fb(ivx,nfb(ivx)).eq.itsofar(ivx)) - * t1fb(ivx,nfb(ivx)) = - * t1fb(ivx,nfb(ivx))+nodur(ivx,nnl(ivx))/2 - end if -c -c Change duration of prior note -c - itsofar(ivx) = itsofar(ivx)-nodur(ivx,nnl(ivx)) - nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx))*3/2 - itsofar(ivx) = itsofar(ivx)+nodur(ivx,nnl(ivx)) - end if - idotform = idotform+1 - numnum = 1 - cdot = .true. - go to 1 - end if - return - end - subroutine getorn(lineq,iccount,iornq,iornq0,ornrpt,noffseg, - * ip,ivx,noxtup,notcrd,nole) -c -c iornq: Main note. Do not alter if chord note, except turn on bit 23 -c iornq0: Store iorni + bit 23, in case of repeated ornaments -c iorni: Internal use, 1st 21 bits of iornq or icrdorn, dep. on notcrd. -c noffseg: horiz. offset for segno -c nole: level of note w/ orn, used to ID the note/orn if there's a level shift. -c - - common /comivxudorn/ivxudorn(63) - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - common /comcb/ nbc,ibcdata(36) - character*1 charq,durq - character*128 lineq - logical ornrpt,negseg,noxtup,notcrd -c -c Bits 0-13: (stmgx+Tupf._), 14: Down fermata, was F, 15: Trill w/o "tr", was U -c 16-18 Editorial sharp, flat, natural "oes,f,n"; 19-20: >^, 21 ? for ed. accid. -c - call getchar(lineq,iccount,charq) - if (index('bc',charq) .gt. 0) then -c -c caesura or breath, handle specially and exit. Set up data in ibcdata(1...nbc) -c ivx(0-3,28), ip(4-12), -c vshift (vshift+32 in bits 13-18), -c hshift (nint(10*vshift)+128 in bits 19-26) -c bit 27 = 0 if caesura, 1 if breath -c bit 28: 5th bit of ivx -c - iornq = ibset(iornq,28) - nbc = nbc+1 -c ibcdata(nbc) = ivx+16*ip - ibcdata(nbc) = mod(ivx,16)+16*ip - if (ivx.ge.16) ibcdata(nbc) = ibset(ibcdata(nbc),28) - if (charq .eq. 'b') ibcdata(nbc) = ibset(ibcdata(nbc),27) - call getchar(lineq,iccount,durq) - if (index('+-',durq) .gt. 0) then -c -c We have a vertical shift, get it -c - iccount = iccount+1 - call readnum(lineq,iccount,charq,fnum) - if (durq .eq. '-') fnum=-fnum - call setbits(ibcdata(nbc),6,13,nint(32+fnum)) - if (index('+-',charq) .gt. 0) then -c -c Horizontal shift, get it -c - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - if (charq .eq. '-') fnum=-fnum - call setbits(ibcdata(nbc),8,19,nint(10*fnum)+128) - end if - end if - return - end if -c -c Set signal on main note that some note at this time has ornament. ONLY used -c in beamstrt to activate further tests for whether ihornb is needed. -c - iornq = ibset(iornq,23) -c -c Isolate 21 bits defining exisiting ornaments -c - if (notcrd) then -c iorni = iand(4194303,iornq) -c iorni = iand(541065215,iornq) - iorni = iand(1614807039,iornq) - else - iorni = iand(4194303,icrdorn(ncrd)) - end if -c korn = index('stmgx+Tupf._)e:XXX>^',charq) - korn = index('stmgx+Tupf._)e:XXX>^XXXXXXXXCG',charq) - if (korn .ne. 15) iorni = ibset(iorni,korn) -c -c Note that korn=0 => charq='(', and we set bit 0. if "e" (14), alter later -c as follows: korn=16-18 for sfn, and or 21 for bare ?. -c When this if-block is done, korn will = bit# of actual ornament (unless "?"). -c - if (korn .eq. 15) then -c -cc Turn off repeated ornament ('o:'), Replicate bits 0-3,5-15,19-20 prev iornq -cc Turn off repeated ornament ('o:'), Replicate bits 0-3,5-15,19-21 prev iornq -c Turn off repeated ornament ('o:'), Replicate bits 0-3,5-15,19-21,29 prev iornq -c -c iorni = ior(iorni,iand(iornq0,1638383)) -c iorni = ior(iorni,iand(iornq0,3735535)) -c iorni = ior(iorni,iand(iornq0,540606447)) - iorni = ior(iorni,iand(iornq0,1614348271)) - ornrpt = .false. - call getchar(lineq,iccount,durq) -c -c durq will be ' ' -c - else if (korn .eq. 14) then -c -c Editorial accidental -c - call getchar(lineq,iccount,durq) -c korn = 15+index('sfn',durq) - korn = 15+index('sfn?',durq) - if (korn .eq. 19) korn=21 - iorni = ibset(ibclr(iorni,14),korn) - call getchar(lineq,iccount,durq) - if (durq .eq. '?') then -c -c This is "oe[s|f|n]?". Set 21st bit also. -c - iorni = ibset(iorni,21) - korn = korn+6 - call getchar(lineq,iccount,durq) - end if -c iorni = ibset(ibclr(iorni,14),korn) - else if (korn.eq.4 .and. noxtup) then -c -c segno. Check in pmxa for just 1/block & notcrd. Get horiz. offset in points -c - noffseg = 0 - negseg = .false. - call getchar(lineq,iccount,durq) - if (durq .ne. ' ') then -c -c Segno shift is specified -c - if (durq .eq. '-') then - negseg = .true. - call getchar(lineq,iccount,durq) - end if - call readnum(lineq,iccount,durq,fnum) - noffseg = int(fnum) - if (negseg) noffseg = -noffseg - end if - else if (korn .eq. 7) then -c -c Trill. Check in pmxa for notcrd. Default is 1 noteskip long, with "tr" -c - ntrill = ntrill + 1 - ivtrill(ntrill) = ivx - iptrill(ntrill) = ip - xnsktr(ntrill) = 1. - call getchar(lineq,iccount,durq) - if (durq .eq. 't') then -c -c Convert to new internal symbol for non-'"tr" trill -c - korn = 15 - iorni = ibset(ibclr(iorni,7),15) - call getchar(lineq,iccount,durq) - end if - if (index('0123456789.',durq) .gt. 0) then -c -c We have a number for the length -c - call readnum(lineq,iccount,durq,xnsktr(ntrill)) - end if - else if (korn.eq.10 .and. noxtup) then -c -c Fermata -c - call getchar(lineq,iccount,durq) - if (durq .eq. 'd') then - korn = 14 - iorni = ibset(ibclr(iorni,10),14) - call getchar(lineq,iccount,durq) - end if - else - call getchar(lineq,iccount,durq) - end if - if (index('+- :',durq) .eq. 0) then - print*,'Unexpected character at end of ornament: ',durq - call stop1() - end if - if (index('+-',durq) .gt. 0) then -c -c Shift ornament up or down -c - nudorn = nudorn+1 -c -c Set bit 25 in iorni as a signal. This may not really be necessary. -c - iorni = ibset(iorni,25) -c -c Assemble info to put in kudorn(nudorn) Bits 0-7:ip, 8-11:ivx, 12-18:nolev, -c 19-24: type of ornament to be shifted, 25-30: shift+32, 31:h-shft present -c - xofforn = 44-ichar(durq) - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - iofforn = nint(xofforn*fnum) - kudorn(nudorn) = ip+ishft(mod(ivx,16),8)+ishft(nole,12) - * +ishft(korn,19)+ishft(iofforn+32,25) - ivxudorn(nudorn) = ivx - if (index('+-',durq) .gt. 0) then -c -c Horizontal shift -c - kudorn(nudorn) = ibset(kudorn(nudorn),31) - xofforn = 44-ichar(durq) - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) -c 141226 ornhshft(nudorn) = nint(xofforn*fnum) - ornhshft(nudorn) = xofforn*fnum - end if - else if (durq .eq. ':') then -c -c Turn on repeated ornaments -c - ornrpt = .true. -c -c Save the ornament value just set -c - iornq0 = iorni - end if - if (notcrd) then - iornq = ior(iornq,iorni) - else - icrdorn(ncrd) = ior(icrdorn(ncrd),iorni) - end if - return - end - subroutine getpmxmod(global,includeq) -c -c If global=.true., checks for environment variable with path to pmx.mod. -c Then, if variable exists and points to pmx.mod, insert lines from -c pmx.mod into buffer -c If global=.false., checks for existence of includeq and uses it. -c -c lenbuf0 = total length of bufq on entry -c lbuf(i) = length of line (i) -c nlbuf = number of lines stored in bufq -c ilbuf = index of first line after setup stuff (on entry). In general, index of -c next line to be sucked from buffer. -c ilbufmod = counter for lines in pmx.mod as they are grabbed. -c Starts at ilbuf. Points to position of next line after -c pmx.mod stuff in bufq on exiting loop 1 -c ilbuff = transient counter for shifting operations -c ipbuf = on entry, points to last character in setup stuff. In general, points -c to last character of most recent line sucked from buffer. -c ipbufmod = points to last character of most recent inserted line -c from pmx.mod -c - parameter (maxblks=9600,nm=24) - common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, - * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 - logical lastchar,fbon,issegno,isheadr,isvolt - character*(*)includeq - character*80 pmxmoddirq - character*128 lnholdq - character*131072 bufq - integer*2 lbuf(maxblks) - common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq - logical fexist,global - line1pmxmod = ilbuf - if (.not.global) then - inquire(file=includeq,EXIST=fexist) -c -c Transfer includeq to temporary char variable with known length -c - pmxmoddirq = includeq - lpmxmoddirq = lenstr(pmxmoddirq,80) - print* - write(15,'()') - if (.not.fexist) then - call printl('Could not find '//pmxmoddirq(1:lpmxmoddirq) - * //', checking further.') -c -c File named includeq doesn't not exist. Get directory from PMXMODDIR and -c see if it's there -c - call getenv('PMXMODDIR',pmxmoddirq) - lpmxmoddirq = lenstr(pmxmoddirq,80) - if (lpmxmoddirq. gt. 0) then - pmxmoddirq = pmxmoddirq(1:lpmxmoddirq)//includeq - lpmxmoddirq = lenstr(pmxmoddirq,80) - else - call printl( - * 'No other directory defined by PMXMODDIR, stopping') - call stop1() - end if - inquire(file=pmxmoddirq,EXIST=fexist) - if (.not.fexist) then - call printl('Could not find '//pmxmoddirq(1:lpmxmoddirq) - * //', stopping.') - call stop1() - end if - end if - call printl('Opening normal include file ' - * //pmxmoddirq(1:lpmxmoddirq)) - open(18,file=pmxmoddirq) - else -c -c Check for existence of pmx.mod -c - call getenv('PMXMODDIR',pmxmoddirq) - lpmxmoddirq = lenstr(pmxmoddirq,80) - if (lpmxmoddirq .eq. 0) return - pmxmoddirq = pmxmoddirq(1:lpmxmoddirq)//'pmx.mod' - lpmxmoddirq = lpmxmoddirq+7 - inquire(file=pmxmoddirq,EXIST=fexist) - if (.not.fexist) return - call printl('Opening global include file ' - * //pmxmoddirq(1:lpmxmoddirq)) - open(18,file=pmxmoddirq(1:lpmxmoddirq)) - end if - call printl('Adding include data') -c -c Read lines in from pmx.mod one at a time -c - ipbufmod = ipbuf - lenbufmod = lenbuf0 - do 1 ilbufmod = ilbuf , maxblks - read(18,'(a)',end=3)lnholdq -c -c A line was read. Slide all existing lengths from here forward ahead by 1 -c - do 2 ilbuff = nlbuf , ilbufmod , -1 - lbuf(ilbuff+1) = lbuf(ilbuff) -2 continue -c -c Get length of line from include file -c - lenmodline = lenstr(lnholdq,128) - if (lenmodline .eq. 0) then -c -c Blank line. Make it a single blank with length 1 -c - lenmodline = 1 - lnholdq = ' ' - end if - lbuf(ilbufmod) = lenmodline - call printl(lnholdq(1:lenmodline)) -c -c Insert new stuff into bufq -c - bufq = bufq(1:ipbufmod)//lnholdq(1:lenmodline)// - * bufq(ipbufmod+1:lenbufmod) -c -c Update internal parameters -c - ipbufmod = ipbufmod+lbuf(ilbufmod) - lenbufmod = lenbufmod+lbuf(ilbufmod) - nlbuf = nlbuf+1 -1 continue -3 continue - call printl('Closing '//pmxmoddirq(1:lpmxmoddirq)) - close(18) - linesinpmxmod = linesinpmxmod+ilbufmod-ilbuf - lenbuf0 = lenbufmod -c -c Fix Andre's error reporting problem 101211 leading to log(neg#) due -c to nline being 2 bigger than it should be -c - nline=nline-2 -c - return - end - subroutine getset(nv,noinst,mtrnuml,mtrdenl,mtrnmp,mtrdnp, - * xmtrnum0,npages,nsyst,musicsize,fracindent,istype0, - * inameq,clefq,sepsymq,pathnameq,lpath,isig0) - parameter (nm=24) - common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) - character*1 clefq(nm),sepsymq(nm) - character*40 pathnameq - character*79 inameq(nm) - character*128 lineq - logical istype0,newway,rename - common /commidisig/ midisig -c -c Get the first line -c - iccount = 0 -9 call getbuf(lineq) - if (lineq(1:1) .eq. '%') go to 9 - istype0 = lineq(1:3).eq.'---' - if (istype0) then -c -c Have TeX input until next line that starts with '---'. Save in scratch. -c - open(17,status='SCRATCH') -3 call getbuf(lineq) - if (lineq(1:3) .ne. '---') then - write(17,'(a)')lineq - go to 3 - end if -c -c Force a new line read on first call to readin -c - iccount = 128 - end if -c -c Here, lineq is first line w/ numerical setup data. -c - nv = nint(readin(lineq,iccount,nline)) - noinst = nint(readin(lineq,iccount,nline)) - newway = noinst.le.0 - if (newway) noinst = -noinst - do 2 iinst = 1 , noinst -c -c Seve # of staves per inst in case later drop some inst's. -c - if (newway) then -c -c Read in nvi for each instrument -c - nsperi(iinst) = nint(readin(lineq,iccount,nline)) - else if (iinst .gt. 1 ) then - nsperi(iinst) = 1 - else - nsperi(iinst) = nv-noinst+1 - end if - iiorig(iinst) = iinst - nspern(iinst) = nsperi(iinst) -2 continue - mtrnuml = nint(readin(lineq,iccount,nline)) - mtrdenl = nint(readin(lineq,iccount,nline)) -cc -cc Kluge to make mtrdenl work -cc -c if (mtrdenl .eq. 1) then -c mtrdenl = 2 -c mtrnuml = mtrnuml*2 -c end if - mtrnmp = nint(readin(lineq,iccount,nline)) - mtrdnp = nint(readin(lineq,iccount,nline)) - xmtrnum0 = readin(lineq,iccount,nline) -c -c Original key sig (before any trnasposition) in next position. Transposed -c sig for topfile was transferred thru pmxtex.dat. Need isig0 for key -c changes if transposed. -c - isig0 = nint(readin(lineq,iccount,nline)) -c 130316 -c do 11 iinst = 1 , noinst -c midisig(iinst) = isig0 - midisig = isig0 -c11 continue - npages = nint(readin(lineq,iccount,nline)) - nsyst = nint(readin(lineq,iccount,nline)) - musicsize = nint(readin(lineq,iccount,nline)) - fracindent = readin(lineq,iccount,nline) -c -c Next noinst non-comment lines are names of instruments. -c - do 4 i = 1 , noinst -5 call getbuf(inameq(i)) - if (inameq(i)(1:1) .eq. '%') go to 5 -4 continue -c -c Next non-comment line has nv clef names -c -6 call getbuf(lineq) - if (lineq(1:1) .eq. '%') go to 6 - iv = 0 - nvsofar = 0 - do 1 jinst = 1 , noinst - nvsofar = nvsofar+nsperi(jinst) - do 10 ivi = 1 , nsperi(jinst) - iv = iv+1 - clefq(iv) = lineq(iv:iv) - if (iv .eq. nvsofar) then - sepsymq(iv) = '&' - else - sepsymq(iv) = '|' - end if -10 continue -1 continue -c -c Mext non-comment line has path name -c -8 call getbuf(pathnameq) - if (pathnameq(1:1) .eq. '%') go to 8 - lpath = index(pathnameq,' ')-1 -c -c 160130 Replace '\' by '/' -c -12 ipos = index(pathnameq,'\') - if (ipos .gt. 0) then - pathnameq(ipos:ipos)='/' -c print*,'Changed pathname to ',pathnameq(1:lpath) - go to 12 - end if - return - end - function getsquez(n,ntot,space,tnote,to) - real*4 tnote(600),to(600) - common /comtol/ tol -c -c Get the squez factor by checking space against tgovern=minimum duration -c of all notes sounding at time of n-th note in the list. -c The starting time of base increment is to(n) and ending time is to(n)+space -c Sounding notes are those that start at or before to(n) .and. end at or -c after tend=to(n)+space -c Since notes are ordered by increasing start times, as soon as we find one -c that starts too late, we are done checking. -c - tgovern = 1000. - tend = to(n)+space - do 1 in = 1 , ntot -c -c Since to() is ordered by start times, exit loop after first note that -c starts later than note of interest. -c - if (to(in) .gt. to(n)+tol) go to 2 - if (to(in)+tnote(in) .gt. tend-tol) then -c -c If here, this note overlaps and must be tested. -c - tgovern = min(tgovern,tnote(in)) - end if -1 continue -2 continue - getsquez = space/tgovern - return - end - subroutine getx(lineq,iccount,irest,shifton,wheadpt,iornq1,ivx, - * irest1,itsofar,ntup,itup,nnodur,dotq,ndoub) - parameter(nm=24) -c -c Parse "X" commands. Ignore all "B"; "P" means to ignore whole symbol. -c In scor2prt, must strip out "P", copy only "B" and "P"-type "X"-symbols. -c Since during getnote phase time is integer itsofar, which is not updated -c during xtups, we use itup and ntup to get actual time. On entry, ntup=0 if -c not in xtup. -c - common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) - logical shifton,colon,ess,number - character*128 lineq - character*1 charq,durq,dotq - colon = .false. - ess = .false. - number = .false. - nextbl = iccount+index(lineq(iccount:128),' ')-1 - if (index(lineq(iccount:nextbl),'P') .gt. 0) then -c -c "Parts only", ignore entire symbol -c - iccount = nextbl - return - end if -1 call getchar(lineq,iccount,charq) - if (charq.eq.'B') then -c -c "Both parts and score," ignore character -c - go to 1 - else if (charq .eq. ':') then - colon = .true. - go to 1 - else if (charq .eq. 'S') then - ess = .true. - go to 1 - else if (index('+-.0123456789',charq) .gt. 0) then - number = .true. - if (charq.eq.'-') iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - if (charq .eq. '-') fnum = -fnum - if (durq .ne. 'p') then - fnum = fnum*wheadpt - iccount = iccount-1 - end if - go to 1 - end if -c -c charq must be blank, so done parsing -c - if (.not.ess .and. .not.colon) then -c -c Ordinary hardspace. Goes before next note. -c (Later, at "|" or "/", check for presence and switch to udoff if there!) -c - nudsp = nudsp+1 - iornq1 = ibset(iornq1,26) - udsp(nudsp) = fnum - tudsp(nudsp) = itsofar - if (ntup .gt. 0) tudsp(nudsp) = tudsp(nudsp) -c * +float(itup-1)/ntup*ifnodur(nnodur,dotq) - * +float(itup-1+ndoub)/ntup*ifnodur(nnodur,dotq) - else if (.not.number) then -c -c Must be "X:" End a group offset. -c - irest = ibset(irest,17) - shifton = .false. - return - else -c -c Only other possibility is start offset, "S" for single, ':' for multiple -c - nudoff(ivx) = nudoff(ivx)+1 - udoff(ivx,nudoff(ivx)) = fnum - if (ess) then - irest1 = ibset(irest1,15) - else - irest1 = ibset(irest1,16) - shifton = .true. - end if - end if - return - end - function i1fnodur(idur,dotq) - character*1 dotq - if (idur .eq. 6) then - i1fnodur=1 - else if (idur .eq. 3) then - i1fnodur=2 - else if (idur .eq. 1) then - i1fnodur=4 - else if (idur .eq. 8) then - i1fnodur=8 - else if (idur .eq. 4) then - i1fnodur=16 - else if (idur .eq. 2) then - i1fnodur=32 - else if (idur .eq. 0) then - i1fnodur=64 - else if (idur .eq. 16) then -c -c Only used for denominator of time signatures, not for notes -c - i1fnodur=4 - else if (idur .eq. 9) then - i1fnodur = 128 - else - print* - print*,'You entered an invalid note-length value:',idur - call stop1() - end if - if (dotq .eq. 'd') i1fnodur = i1fnodur*3/2 - return - end -c integer*4 function longi(ishort) -c integer*2 ishort -c longi = ishort -c return -c end - function iashft(nacc) - integer*4 ias(6) - data ias /-1,1,0,0,-2,2/ - iashft = ias(nacc) - return - end - function ifnodur(idur,dotq) - character*1 dotq - if (idur .eq. 6) then - ifnodur=1 - else if (idur .eq. 3)then - ifnodur=2 - else if(idur .eq. 1) then - ifnodur=4 - else if(idur .eq. 8) then - ifnodur=8 - else if(idur .eq. 4) then - ifnodur=16 - else if(idur .eq. 2) then - ifnodur=32 - else if(idur .eq. 0) then - ifnodur=64 - else if(idur .eq. 9) then - ifnodur=128 - else if (idur .eq. 16) then -c -c Only used for denominator of time signatures, not for notes -c - ifnodur=4 - else - print*,'You entered an invalid note value' - stop - end if - if (dotq .eq. 'd') ifnodur = ifnodur*3/2 - return - end - function ifnolev(noq,oct,ntrans) - character*1 noq - integer oct - ifnolev = 7*oct+mod(ichar(noq)-92,7)+1+ntrans - return - end -c subroutine report(nsdat,isdat1,isdat2) -c integer*4 isdat1(202),isdat2(202) -c write(*,'(a)') -c * ' isd on? iv kv ip id ud1 ud2 ndx ivo iho lev crd lhd rhd' -c do 1 isdat = 1 , nsdat -c isdata = isdat1(isdat) -c ionoff = igetbits(isdata,1,11) -cc iv = iand(7,isdata) -c iv = igetbits(isdata,5,13) -c kv = igetbits(isdata,1,12)+1 -c ip = igetbits(isdata,8,3) -c idcode = igetbits(isdata,7,19) -c iud1 = igetbits(isdata,1,26) -c iud2 = igetbits(isdata,1,27) -c ndxslur = igetbits(isdata,4,28) -c isdatb = isdat2(isdat) -c ivo = igetbits(isdatb,6,6)-32 -c iho = igetbits(isdatb,7,12)-64 -c lev = igetbits(isdatb,7,19) -c icrd = igetbits(isdatb,1,0) -c lhd = igetbits(isdatb,1,1) -c irhd = igetbits(isdatb,7,2) -c write(*,'(17i4)')isdat,ionoff,iv,kv,ip,idcode,iud1,iud2,ndxslur, -c * ivo,iho,lev,icrd,lhd,irhd -c1 continue -c print* -c return -c end - function igetbits(isdata,iwidbit,ishift) -c -c Extracts integer given by iwidbit bits of isdata, shifted by ishift, and -c then added to ioff -c - igetbits = iand(2**iwidbit-1,ishft(isdata,-ishift)) - return - end - function igetvarlen(mmidi,icm,imidi,nbytes) -c -c Gets variable-length integer starting in mmidi at imidi+1. Returns nbytes. -c - parameter (nm=24,mv=24576) - integer*2 mmidi(0:nm,mv) - igetvarlen = 0 - do 1 nbytes = 1 , 4 - igetvarlen = 128*igetvarlen - * +iand(127,mmidi(icm,imidi+nbytes)) - if (.not.btest(mmidi(icm,imidi+nbytes),7)) return -1 continue - print*,'Messup in igetvarlen' - call stop1() - end - logical function isdotted(nodur,ivx,ip) - parameter (nm=24) -c -c Function returns true if note is dotted or double-dotted. -c Return false for any xtuplet. -c - common /comtol/ tol - integer*4 nodur(nm,200) - if (nodur(ivx,ip) .eq. 0) then - isdotted = .false. - return - else if (ip .gt. 1) then - if (nodur(ivx,ip-1) .eq. 0) then - isdotted = .false. - return - end if - end if -c -c Ruled out all xtups, so is dotted or double-dotted if not a power of 2. -c - isdotted = - * mod(alog(float(nodur(ivx,ip)))/.69314718+.5*tol,1.) .gt. tol - return - end - function isetvarlen(idur,nbytes) - isetvarlen = 0 - itemp = idur - do 1 nbytes = 1 , 4 - isetvarlen = isetvarlen + iand(itemp,127)*256**(nbytes-1) - itemp = ishft(itemp,-7) - if (itemp .gt. 0) then - isetvarlen = isetvarlen+2**(8*nbytes+7) - else - return - end if -1 continue - print*,'Problem in fn. isetvarlen' - call stop1() - end - subroutine istring(i,string,len) -c -c Returns string with integer only if length is 1, otherwise enclosed in -c brackets. -c - character*(*) string - if (i .ne. 0) then - len = alog10(abs(i)*1.0001)+1 - if (i .lt. 0) len = len+1 - else - string = '0' - len = 1 - return - end if - if (len .eq. 1) then - string = char(48+i) - else - string = '{' - write(string(2:1+len),'(i'//char(48+len)//')')i - string = string(1:len+1)//'}' - len = len+2 - end if - return - end - function lenstr(string,n) - character*(*) string - do 1 lenstr = n , 1 , -1 - if (string(lenstr:lenstr) .ne. ' ') return -1 continue - lenstr = 0 - return - end - function levrn(nolev,irest,iud,ncm,mult) -c -c Used for placing numbers in xtups. Returns note level if not a rest, -c else level of top or bottom of rest symbol opposite beam. iud=-1 for upstm. -c - logical btest - if (.not.btest(irest,0)) then - levrn = nolev - else -c -c Restlevel is -4, 0, 2 or 100+offset. First get offset from 1-voice default. -c - if (mult .gt. 0) then - if (mult .eq. 2) then - ioff = -1+2*iud - else if (mult .ne. 4) then - ioff = iud*mult - else - ioff = 1+4*iud - end if - else -c -c May need to futz with this later for non-beamed xtups (quarter, half rests) -c - ioff = iud*2 - end if - levrn = mod(nolev+20,100)-20+ncm+ioff - endif - return - end - function lfmt1(x) -c -c Computes total length of an "f" format with one decimal place. -c First round to nearest 0.1 -c - if (abs(x) .lt. .001) then - lfmt1 = 2 - else - y = sign(.1*int(10*abs(x)+.5),x) - lfmt1 = int(log10(1000*abs(y)+.001)) - if (y .lt. 0) lfmt1 = lfmt1+1 - end if - return - end - subroutine LineBreakTies(isdat1,isdat2,isdat3,isdat4,nsdat, - * ispstie,sepsymq) - parameter (nm=24) - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - common /comoct/ noctup - integer*4 isdat1(202),isdat2(202),isdat3(202),isdat4(202) - logical fontslur,WrotePsslurDefaults,btest,upslur,ispstie,tie - character*1 udq,chax,sepsymq(nm) - character*8 noteq - character*128 notexq -c -c This is called twice from pmxb after having input an entire block, before -c making a bar that starts a new system. So nsdat reflects all slur starts -c and stops in new block, while listslur, which is only set when bars are -c made, reflects only open slurs from the old block. So we must check -c listslur to find open ties, not all nsdat. -c First of two calls (ispstie=.false. on entry) terminates tie at end of line. -c Second (ispstie=.true. on entry) restarts tie at start of new line. Only -c need data from original tie-start for both of these. Tie/slur data from -c closing of full tie are not used except for shape alterations. -c -c do 1 ndx = 0 , 11 - do 1 ndx = 0 , 23 - if (btest(listslur,ndx)) then -c -c Slur or tie with index ndx is open. Find the one with right ndxb, see if tie -c - do 2 isdat = 1 , nsdat -c if (igetbits(isdat1(isdat),4,28) .ne. ndx) go to 2 ! Wrong index - if (igetbits(isdat1(isdat),4,28) - * +16*igetbits(isdat1(isdat),1,18) .ne. ndx) go to 2 ! Wrong index - if (.not.btest(isdat1(isdat),11)) go to 2 ! Bypass if stop - if (btest(isdat2(isdat),3)) go to 3 ! "st" - idcode = igetbits(isdat1(isdat),7,19) - if (idcode.eq.1) go to 3 ! "t" - tie = .false. - go to 5 -2 continue - end if - go to 1 -3 continue - tie = .true. -5 continue -c -c A slur or tie is open, with index ndx -c - iv = igetbits(isdat1(isdat),5,13) - kv = igetbits(isdat1(isdat),1,12)+1 - udq = 'd' - if (btest(isdat1(isdat),27)) udq='u' - notexq = chax(92)//'znotes' - lnote = 7 - do 4 iiv = 1 , iv-1 - notexq = notexq(1:lnote)//sepsymq(iiv) - lnote = lnote+1 -4 continue - if (kv .eq. 2) then - notexq = notexq(1:lnote)//chax(92)//'nextvoice' - lnote = lnote+10 - end if -c -c Compute horiz and vert offsets -c -c nolev = igetbits(isdat2(isdat),7,19) - islhgt = igetbits(isdat3(isdat),8,14) - ilb12 = 0 - if (ispstie) ilb12 = 1 - ivoff = igetbits(isdat4(isdat),6,ilb12*16)-32 - if (ivoff .eq. -32) ivoff = 0 -C nolev = nolev+ivoff - islhgt = islhgt+ivoff - ihoff = (igetbits(isdat4(isdat),7,ilb12*16+6)-64) ! This is 10X hoff - if (ihoff .eq. -64) ihoff = 0 -c -c Add starting stuff for command -c - if (.not.ispstie) then ! End 1st segment - notexq = notexq(1:lnote)//chax(92)//'roffset{' - lnote = lnote+9 -c hoff = ihoff*.1-.5 -c hoff = ihoff*.1-.8 - hoff = ihoff*.1-.4 - if (hoff .lt. 0) then - hoff = -hoff - notexq = notexq(1:lnote)//'-' - lnote = lnote+1 - end if - call writflot(hoff,notexq,lnote) - notexq = notexq(1:lnote)//'}{' - lnote = lnote+2 - else - notexq = notexq(1:lnote)//chax(92)//'off{-' - * //chax(92)//'afterruleskip}' - lnote = lnote+21 -c -c 091025 add dotting for 2nd segment if needed -c - if (btest(isdat2(isdat),4)) then - notexq = chax(92)//'dotted'//notexq(1:lnote) - lnote = lnote+7 - end if - end if - if (ispstie .and. tie) then - notexq = notexq(1:lnote)//chax(92)//'tieforis'//udq - lnote = lnote+10 - end if - if (btest(isdat3(isdat),0)) then -c -c Curvature tweak on termination of 1st seg -c - imid = igetbits(isdat3(isdat),6,2)-32 -c -c Invoke macro (from pmx.tex) that redefines \tslur as r'qd. mapping: -c Abs(imid) Postscript slur type -c 1 f -c 4 h -c 5 H -c 6 HH -c - notexq = notexq(1:lnote)//chax(92)//'psforts'//chax(48+imid) - lnote = lnote+9 -c -c Zero out the flag in case there's a different curv on term of 2nd, -c - isdat3(isdat) = ibclr(isdat3(isdat),0) - end if -c -c Add the command name -c - if (ispstie) then - notexq = notexq(1:lnote)//chax(92)//'is'//udq - lnote = lnote+4 - else if (tie) then - notexq = notexq(1:lnote)//chax(92)//'ttie' - lnote = lnote+5 - else - notexq = notexq(1:lnote)//chax(92)//'tslur' - lnote = lnote+6 - end if -c -c Add index -c -c if (11-ndx .lt. 10) then -c notexq = notexq(1:lnote)//chax(59-ndx) -c lnote = lnote+1 -c else -c notexq = notexq(1:lnote)//'{1'//chax(49-ndx)//'}' -c lnote = lnote+4 -c end if - if (23-ndx .lt. 10) then - notexq = notexq(1:lnote)//chax(71-ndx) - lnote = lnote+1 - else if (23-ndx .lt. 20) then - notexq = notexq(1:lnote)//'{1'//chax(61-ndx)//'}' - lnote = lnote+4 - else - notexq = notexq(1:lnote)//'{2'//chax(51-ndx)//'}' - lnote = lnote+4 - end if - if (ispstie .or. .not.tie) then -c -c Add note name for slur height -c - noctup = 0 - ncm = igetbits(isdat3(isdat),8,22) - if (ncm .eq. 23) noctup = -2 -c call notefq(noteq,lnoten,nolev,ncm) - call notefq(noteq,lnoten,islhgt,ncm) - notexq = notexq(1:lnote)//'{'//noteq(1:lnoten)//'}' - lnote = lnote+1+lnoten+1 - end if - if (ispstie) then -c -c Horizontal shift start of new thing -c - notexq = notexq(1:lnote)//'{' - lnote = lnote+1 -c ihoff = ihoff-13 - if (tie) then - ihoff = ihoff-12 - else - ihoff = ihoff-7 - end if - if (ihoff .lt. 0) then - ihoff = -ihoff - notexq = notexq(1:lnote)//'-' - lnote = lnote+1 - end if - call writflot(ihoff*.1,notexq,lnote) - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - end if -c -c Add closing stuff -c - if (ispstie) then - notexq = notexq(1:lnote)//chax(92)//'off{' - * //chax(92)//'afterruleskip}' - lnote = lnote+20 - else - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - end if - notexq = notexq(1:lnote)//chax(92)//'en%' - lnote = lnote+4 - write(11,'(a)')notexq(1:lnote) -1 continue - ispstie = .not.ispstie - return - end - subroutine littex(islur,nnl,iv,topmods,lineq,iccount) - parameter (nm=24) - common /comlast/ islast,usevshrink - logical islast,usevshrink - integer islur(nm,200) - logical topmods - common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, - * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, - * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, - * graspace(37), - * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), - * naccg(74),voltxtq(6),litq(83) - logical upg,slurg,slashg,merge - character*128 lineq,litq - character*20 voltxtq - character*1 durq,chax - merge = .false. - if (nlit .gt. 0) then - merge = iv.eq.ivlit(nlit) .and. nnl.eq.iplit(nlit) - end if - nlit = nlit+1 - ivlit(nlit) = iv - iplit(nlit) = nnl - itype = 1 -17 call getchar(lineq,iccount,durq) - if (durq .eq. chax(92)) then - itype=itype+1 - go to 17 - end if - litq(nlit) = chax(92)//durq - lenlit(nlit) = 2 -18 call getchar(lineq,iccount,durq) - if (durq.eq.chax(92)) then - call getchar(lineq,iccount,durq) - if (durq .ne. ' ') then -c -c Starting a new tex command within the string -c - litq(nlit) = litq(nlit)(1:lenlit(nlit))//chax(92)//durq - lenlit(nlit) = lenlit(nlit)+2 - go to 18 - end if - else - litq(nlit) = litq(nlit)(1:lenlit(nlit))//durq - lenlit(nlit) = lenlit(nlit)+1 - go to 18 - end if -c -c If here, just read backslash-blank so string is done -c - if (itype .eq. 1) then - islur(iv,nnl) = ibset(islur(iv,nnl),16) - if (merge) then -c -c There are 2 separate strings on the same note, so merge them. -c - nlit = nlit-1 - litq(nlit) = litq(nlit)(1:lenlit(nlit)) - * //litq(nlit+1)(1:lenlit(nlit+1)) - lenlit(nlit) = lenlit(nlit)+lenlit(nlit+1) - if (lenlit(nlit) .gt. 128) then - print* - print*, - * 'Merged type-1 TeX strings longer than 128 characters' - write(15,'(/,a)') - * 'Merged type-1 TeX strings longer than 128 characters' - call stop1() - end if - end if - else -c -c Type 2 or 3. -c - if (itype .eq. 3) then -c -c Write the string NOW -c - if (islast) - * write(11,'(a)')litq(nlit)(1:lenlit(nlit))//'%' - else -c -c Must go at top -c - if (.not.topmods) then - topmods = .true. - open(16,status='SCRATCH') - end if -c -c Must write '%' here rather than later, in case string ends with blank. -c - write(16,'(a)')litq(nlit)(1:lenlit(nlit))//'%' - end if - nlit = nlit-1 - end if - return - end - function llen(strq,n) - character*129 strq - do 1 llen = n , 0 , -1 - if (strq(llen:llen) .ne. ' ') return -1 continue - end - function log2(n) -c -c 5/25/08 Modify to allow more slurs -c -c log2 = alog(1.*n)/0.6931472+.0001 -c log2 = dlog(1.d0*n)/0.693147181d0+.00000001d0 - log2 = dlog(1.d0*n)/0.693147181d0+.00000002d0 - return - end - subroutine logbeam(numnew,nip1,nip2) - parameter (nm=24) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, - * tautofb,autofbon,t1autofb - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - character*1 ulq,sepsymq,sq,ulfq,ulfbq - logical beamon,firstgulp,figbass,figchk,isfig,isxtup,btest, - * autofbon - ibm1(ivx,numnew) = nip1 - ibm2(ivx,numnew) = nip2 - numnow = numnew - if (numnew .gt. 1) then -c -c If it starts before any others, must put it in order -c - do 11 ib = numnew-1 , 1 , -1 - if (ibm1(ivx,ib) .lt. nip1) go to 12 - ibm1(ivx,ib+1) = ibm1(ivx,ib) - ibm2(ivx,ib+1) = ibm2(ivx,ib) - ulq(ivx,ib+1) = ulq(ivx,ib) - ibm1(ivx,ib) = nip1 - ibm2(ivx,ib) = nip2 - numnow = ib -11 continue -12 continue - end if - sum = 0. -c -c Beam has non-xtup within -c - nrests = 0 - isxtup = .false. - do 9 iip = nip1 , nip2 - if (btest(islur(ivx,nip1),21)) then -c -c Forced multiplicity -c - call setbits(mult(ivx,iip),4,0, - * igetbits(islur(ivx,nip1),3,22)+8) - else if (.not.isxtup) then - if (nodur(ivx,iip) .gt. 0) then - call setbits(mult(ivx,iip),4,0,4-log2(nodur(ivx,iip))+8) - else -c -c Start xtup within forced beam -c - isxtup = .true. - iip1 = iip - end if - else if (isxtup .and. nodur(ivx,iip).gt.0) then -c -c End of xtup within forced beam. Must count doubled notes -c - ndoub = 0 - do 1 iiip = iip1 , iip - if (btest(nacc(ivx,iiip),18)) ndoub = ndoub+1 -1 continue - multx = int(10.5+2.929+(0.952*alog(1.+iip-iip1+ndoub)- - * alog(nodur(ivx,iip)/2.))/0.69315)-10 - do 74 iiip = iip1 , iip - call setbits(mult(ivx,iiip),4,0,multx+8) -c -c Note the following still works after making mult only the 1st 4 bits. -c - if (btest(nacc(ivx,iiip),18)) - * mult(ivx,iiip) = mult(ivx,iiip)-1 - if (btest(nacc(ivx,iiip),19)) then - mult(ivx,iiip) = mult(ivx,iiip)+1 - else if (iiip .gt. 1) then - if (btest(nacc(ivx,iiip-1),19)) - * mult(ivx,iiip) = mult(ivx,iiip)+1 - end if -74 continue - isxtup = .false. - end if - if (btest(irest(ivx,iip),0)) then - nrests = nrests+1 - else - sum = sum+nolev(ivx,iip) - end if -9 continue -c -c Set beam up-down-ness -c - if (ifb.gt.0 .and. ulfbq(ivx,max(1,ifb)).ne.'x') then - if (ulfbq(ivx,ifb) .eq. 'f') then -c -c Get default, then trade "l" and "u" -c - ulq(ivx,numnow) = char(225-ichar( - * ulfq(sum/(nip2-nip1+1-nrests),ncmid(iv,nip1)))) - else - ulq(ivx,ifb) = ulfbq(ivx,ifb) - end if -c -c This probably works only because forced beams are done first, so they -c don't have to be re-sorted within each voice. ???? -c - else if (nvmx(iv) .eq. 2) then -c -c Multi-voice per staff -c - if (ivx .le. nv) then - ulq(ivx,numnow) = 'l' - else - ulq(ivx,numnow) = 'u' - end if - else -c -c Defaults -c - ulq(ivx,numnow) = - * ulfq(sum/(nip2-nip1+1-nrests),ncmid(iv,nip1)) - end if - return - end - subroutine m1rec1(lineq,iccount,ibarcnt,ibaroff,nbars,ndxm) -c -c This is called when (a) macro recording is just starting and -c (b) at the start of a new line, if recording is on -c - parameter (maxblks=9600) - character*128 lineq,lnholdq - common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac - common /c1ommac/ ip1mac(20),il1mac(20),ip2mac(20),il2mac(20), - * ic1mac(20),ilmac,iplmac - logical mrecord,mplay,endmac - character*131072 bufq - integer*2 lbuf(maxblks) - common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq - lbuf(1) = lbuf(1) - if (.not.mrecord) then -c -c Starting the macro -c - ip1mac(macnum) = ipbuf-lbuf(ilbuf-1)+iccount - il1mac(macnum) = ilbuf-1 - ic1mac(macnum) = iccount - mrecord = .true. - end if - if (iccount .lt. 128) then - ndxm = index(lineq(iccount+1:128),'M') - if (ndxm .gt. 0) ndxm = ntindex(lineq(iccount+1:128),'M', - * 128-iccount) - if (ndxm .gt. 0) then -c -c This line ends the macro. -c - if (lineq(iccount+ndxm+1:iccount+ndxm+1) .ne. ' ') then - call errmsg(lineq,iccount+ndxm+1,ibarcnt-ibaroff+nbars+1, - * 'Improper macro termination!') - call stop1() - end if - ip2mac(macnum) = ipbuf-lbuf(ilbuf-1)+iccount+ndxm - il2mac(macnum) = ilbuf-1 - mrecord = .false. - end if - end if - return - end - subroutine make1bar(ibmrep,tglp1,tstart,cwrest,squez, - * istop,numbms,istart) - parameter (nm=24,mv=24576) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - common /comipl2/ ipl2(nm,200) - character*10 figq - character*1 ulq,sepsymq,sq - logical beamon,firstgulp,figbass,figchk,isfig,bar1syst - common /comeskz2/ eskz2(nm,200) - common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), - * fullsize(nm),ivxfig2,ivvfig(2,74) - common /combeam/ ibmtyp - common /comask/ bar1syst,fixednew,scaldold, - * wheadpt,fbar,poenom - common /comas1/ naskb,task(40),wask(40),elask(40) - common /comas2/ nasksys,wasksys(800),elasksys(800) - common /comhead/ ihdht,lower,headrq,lowerq,ihdvrt - common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, - * tautofb,autofbon,t1autofb - common /comsln/ is1n1,is2n1,irzbnd,isnx - common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, - * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, - * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, - * graspace(37), - * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), - * naccg(74),voltxtq(6),litq(83) - logical upg,slurg,slashg,autofbon - character*128 litq - common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), - * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) - integer cnn(nm),istart(80),istop(80),nxtnow(nm),ifbnow(nm), - * numbms(nm),mapfb(16) - real*4 xit(nm),t1xtup(20),tstart(80),squez(80) - character*1 ulfbq - character*79 inameq - character*20 voltxtq - common /comoct/ noctup - character*80 headrq,lowerq - logical cwrferm - common /comcwrf/ cwrferm(nm) - common /comnsp/ space(80),nb,prevtn(nm), - * flgndv(nm),flgndb,eskgnd,ptsgnd,ivmxsav(nm,2),nvmxsav(nm) - logical lower,cwrest(nm),vxtup,flgndb,btest,upslur, - * infbmx(nm),lowdot,inxtup(nm),drawbm - common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), - * mtupv(nm,9),nxtinbm(nm), - * islope(nm),xelsk(24),eloff(nm,9), - * nssb(nm),issb(nm),lev1ssb(nm,20) - common /comdraw/ drawbm(nm) - common /comstart/ facmtr - common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, - * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, - * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, - * rtshfac -c -c Above are factors for grace note, clef spacing. (fraction of wheadpt) -c In 1.04, moved to block data subprogram -c - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, - * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, - * lnam(nm),inameq(nm) - common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) - common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), - * xinsnow,lowdot - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - common /comtol/ tol - integer*2 mmidi - logical restpend,relacc,notmain,twoline,ismidi,crdacc,fontslur, - * WrotePsslurDefaults - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - common /comntot/ ntot - if (ismidi) then -c -c Initialize for this bar the accidental counter for the midi file. -c naccim(icm) = # of accidentals from earlier in the bar -c - do 45 iv = 1 , nv - do 45 kv = 1 , nvmx(iv) - naccim(midchan(iv,kv)) = 0 -45 continue - end if -c -c Time from start of gulp to end of bar, used with forced beams -c - tglp2 = lenb0+ibar*lenb1 - if (lenb0 .gt. 0) tglp2 = tglp2-lenb1 - tglp1 = tglp2-lenbar -c -c infbmx will only be true if in xtup that is NOT in explicit forced beam. -c - do 1 iv = 1 , nv - do 1 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - cwrest(ivx) = .false. - infbmx(ivx) = .false. - inxtup(ivx) = .false. - if (ibar .gt. 1) then - nn(ivx) = nib(ivx,ibar)-nib(ivx,ibar-1) - else - nn(ivx) = nib(ivx,ibar) - end if -1 continue -c -c initialize list note counter, time(iv), curr. note(iv). The loop to 4 -c ONLY initializes each voice. -c - in = 1 - nxtup = 0 - narp = 0 - do 4 iv = 1 , nv - do 4 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - cwrferm(ivx) = .false. - cnn(ivx) = 1 - ivxo(in) = ivx - ipo(in) = cnn(ivx) - tnote(in) = fnote(nodur,ivx,1,nacc) - to(in) = 0. - xit(ivx) = tnote(in) -c -c Note that xit(ivx) is to END of note in voice, but it1xtup is start time. -c - if (nodur(ivx,ipo(in)) .eq. 0) then -c -c First note of xtuplet at start of bar in voice ivx. -c - nxtup = nxtup+1 - nxtnow(ivx) = nxtup - inxtup(ivx) = .true. - t1xtup(nxtup) = 0. -c -c Xtup at start of bar. If no explicit forced beam, start one, set -c signal infbmx, and save number ifbnow for use at termination. -c - if (nfb(ivx) .gt. 0) then - do 60 ifb = 1 , nfb(ivx) - if (t1fb(ivx,ifb) .gt. tglp1+xit(ivx)+tol) then -c -c No explicit fb here; so exit loop and insert one. -c - go to 61 - else if (t1fb(ivx,ifb) .lt. tglp1+xit(ivx)+tol .and. - * t2fb(ivx,ifb) .gt. tglp1+xit(ivx)+tol) then -c -c IS explicit fb here; must NOT insert one -c - go to 62 - end if -60 continue - end if -61 continue -c -c If here, xtup isn't in explicit fb, so must insert one -c - infbmx(ivx) = .true. - call addfb(nfb,ivx,t1xtup(nxtup)+ - * tglp1,t1fb,t2fb,ulfbq,ifbadd) - ifbnow(ivx) = ifbadd - end if -62 continue - if (abs(xit(ivx)-lenbar) .lt. tol) xit(ivx) = 1000. - in = in+1 -4 continue -c -c Build the list: This is a manual loop starting at 5 -c -5 continue -c -c Determine which voice comes next from end of notes done so far. -c tmin is the earliest ending time of notes done so far -c - tmin = 1000. - do 6 iiv = 1 , nv - do 6 kv = 1 , nvmx(iiv) - iivx = ivmx(iiv,kv) - tminn = min(tmin,xit(iivx)) - if(tminn .lt. tmin-tol) then - tmin = tminn - ivx = iivx - end if -6 continue - if (abs(tmin-1000.) .lt. tol) go to 7 - ivxo(in) = ivx - cnn(ivx) = cnn(ivx)+1 - ipo(in) = cnn(ivx) - to(in) = tmin -c -c Check if this voice is done -c - tnote(in) = fnote(nodur,ivx,cnn(ivx),nacc) - if (cnn(ivx) .eq. nn(ivx)) then - xit(ivx) = 1000. - else - xit(ivx) = xit(ivx)+tnote(in) - end if -c -c Flag xtups -c - if (nodur(ivx,cnn(ivx)) .eq. 0) then - if (.not.inxtup(ivx)) then -c -c First note of xtup, not at start of bar. -c - nxtup = nxtup+1 - nxtnow(ivx) = nxtup - inxtup(ivx) = .true. - t1xtup(nxtup) = xit(ivx)-tnote(in) -c -c (Note: can't be on last note in voice, so xit(ivx) <> 1000) -c Put xtuplet in a forced beam if not already in forced beam -c - if (nfb(ivx) .gt. 0) then - do 70 ifb = 1 , nfb(ivx) - if (t1fb(ivx,ifb) .gt. tglp1+xit(ivx)+tol) then -c -c NO explicit bm; put one in -c - go to 71 - else if (t1fb(ivx,ifb) .lt. tglp1+xit(ivx)+tol .and. - * t2fb(ivx,ifb) .gt. tglp1+xit(ivx)+tol) then -c -c IS explicit bm. Don't put one -c - go to 72 - end if -70 continue - end if -71 continue -c -c If here, no explicit bm, so put one in -c - infbmx(ivx) = .true. - call addfb(nfb,ivx,t1xtup(nxtup)+tglp1, - * t1fb,t2fb,ulfbq,ifbadd) - ifbnow(ivx) = ifbadd - end if -72 continue - else if (inxtup(ivx)) then -c -c This test is sufficient because already know nodur>0 -c - inxtup(ivx) = .false. - if (infbmx(ivx)) then -c -c Xtup is in auto-forced beam, so end it -c - t2fb(ivx,ifbnow(ivx)) = - * t1xtup(nxtnow(ivx))+nodur(ivx,cnn(ivx))+tglp1 - infbmx(ivx) = .false. - end if - end if - if (btest(irest(ivxo(in),ipo(in)),24) .or. - * btest(irest(ivxo(in),ipo(in)),30)) then -c -c For staff jumped beam, flag the first note (lowest voice) at same time. -c Later will start new notes group here. -c - inj = in - if (ivxo(in) .gt. 1) then - do 40 iin = in-1 , 1 , -1 - if (to(iin)+tol .lt. to(in)) go to 41 - if (abs(to(iin)-to(in)) .lt. tol) then - inj = iin - go to 40 - end if -40 continue - end if -41 continue - irest(ivxo(inj),ipo(inj)) = ibset(irest(ivxo(inj),ipo(inj)),29) - end if - in = in+1 - go to 5 -7 continue - ntot = in-1 - do 8 in = 1 , ntot-1 - tno(in) = to(in+1)-to(in) -8 continue - tno(ntot) = tnote(ntot) -c -c Debug writes -c -c write(*,'()') -c write(*,'(a)')' Greetings from PMXB' -c write(*,'(16i5)')(ivxo(in),in=1,ntot) -c write(*,'(16i5)')(ipo(in),in=1,ntot) -c write(*,'(16f5.1)')(to(in),in=1,ntot) -c write(*,'(16f5.1)')(tno(in),in=1,ntot) -c write(*,'(16i5)')(nodur(ivxo(in),ipo(in)),in=1,ntot) -c write(*,'(16f5.1)')(fnote(nodur,ivxo(in),ipo(in),nacc),in=1,ntot) -c -c Done w/ list. Loop for parsing into note blocks: -c - ib = 1 - istart(1) = 1 - space(1) = 0. - in = 1 -c -c A manual loop to set space(ib) and istop(ib) -c -9 continue - - ivx = ivxo(min(in+1,ntot)) - ip = ipo(min(in+1,ntot)) - isl = islur(ivx,ip) - if (in.eq.ntot .or. ((ivx.eq.1 .and. - * (iand(isl,67109216).gt.0 .or. btest(ipl(1,ip),28) -c * .or. ornq(1,ip).eq.'g')) .or. btest(isl,15) )) then -c Bits 1-13: stmgx+Tupf._) -c 14: Down fermata, was F -c 15: Trill w/o "tr", was U - * .or. btest(iornq(1,ip),4))) .or. btest(isl,15) ) -c -c Checking for start of 2nd part of jumped beam -c - * .or. btest(irest(ivx,ip),29) ) then -c -c Bar end, segno, int. rpt or sig change, clef,end of 1st part of jumped beam; -c flow out of if-loop and into block-wrapup -c -c 10/18/97: Problem with clef alignment. Got isl{15} set on lowest-numbered -c voice, but it wasn't first in the list at the same time. So check if -c prior notes in list have same time -c 5/25/98: This stuff causes trouble with just "c2 Ct c", maybe when clef -c changes on last note in the list? -c - if (btest(isl,15) .and. in.lt.ntot) then - do 50 iin = in , 1 , -1 - if (tno(iin) .gt. tol) then - in = iin - islur(ivx,ip) = ibclr(islur(ivx,ip),15) - islur(ivxo(in+1),ipo(in+1)) = - * ibset(islur(ivxo(in+1),ipo(in+1)),15) - go to 51 - end if -50 continue -51 continue - end if - if (space(ib) .lt. tol) then - space(ib) = tno(in) - squez(ib) = 1. - end if - istop(ib) = in - else if (space(ib) .lt. tol) then -c -c space hasn't been set yet, so tentatively set: -c - space(ib) = tno(in) - if (space(ib) .lt. tol) then - in=in+1 - else - squez(ib) = getsquez(in,ntot,space(ib),tnote,to) - istop(ib) = in - end if - go to 9 - else if (tno(in+1) .lt. tol) then -c -c This is not the last note in the group, so -c - in = in+1 - go to 9 - else if (abs(tno(in+1)-space(ib)) .lt. tol) then - xsquez = getsquez(in+1,ntot,space(ib),tnote,to) - if (abs(xsquez-squez(ib)) .lt. tol) then -c -c Keep spacing the same, update tentative stop point -c - in = in+1 - istop(ib) = in - go to 9 - end if - end if -c -c At this point istart and istop are good, so finalize block -c - tstart(ib) = to(istart(ib)) - if (istop(ib) .eq. ntot) go to 15 - ib = ib+1 - istart(ib) = istop(ib-1)+1 - in = istart(ib) -c -c Set tentative block space and squeeze-factor for upcoming block -c - space(ib) = tno(in) - if (space(ib).gt.tol) - * squez(ib)= getsquez(in,ntot,space(ib),tnote,to) - istop(ib) = in - go to 9 -15 continue - nb = ib -c -c Invert the list of places into ipl(0-7), making it easier to analyze a voice -c - do 13 in = 1 , ntot -c -c ??? This may fix extra \loff's (bit 8 of ipl) in measures with >255 notes. -c -c ipl(ivxo(in),ipo(in)) = ior(ipl(ivxo(in),ipo(in)),in) - ipl2(ivxo(in),ipo(in)) = in -13 continue -c -c Compute elemskips from start of bar to each note in the bar, for beam slopes -c - eskzb = 0. - ib = 1 - do 30 in = 1 , ntot - if (in .eq. istart(ib)) then - deskb = squez(ib)*feon(space(ib)/squez(ib)) - else if (tno(in-1) .gt. tol) then - eskzb = eskzb+deskb - end if - eskz(ivxo(in),ipo(in)) = eskzb - eskz2(ivxo(in),ipo(in)) = eskzb - if (in .eq. istop(ib)) then - eskzb = eskzb+deskb - ib = ib+1 - end if -30 continue -c -c Analyze for beams. -c - do 20 iv = 1 , nv - do 20 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - numbms(ivx) = 0 - mapfb(1) = 0 - mapfb(2) = 0 - mapfb(3) = 0 - mapfb(4) = 0 -c -c First forced beams. -c - if (nfb(ivx) .gt. 0) then -c -c tglp2 is time from start of gulp to end of current bar. -c - nfbbar = 0 - do 80 ifb = 1 , nfb(ivx) - if (t1fb(ivx,ifb).gt.tglp2-tol) go to 81 - nfbbar = nfbbar+1 - numbms(ivx) = numbms(ivx)+1 - numnew = numbms(ivx) -c -c Times from beginning of bar -c - itbb1 = int(t1fb(ivx,ifb)-tglp1+tol) - itbb2 = int(t2fb(ivx,ifb)-tglp1+tol) - do 83 ip = 1 , nn(ivx) - if (int(to(ipl2(ivx,ip))+tol) .eq. itbb1) then - nip1fb = ip - do 84 ip1 = ip , nn(ivx) - inip1 = ipl2(ivx,ip1) - if (abs(to(inip1)+tnote(inip1)-itbb2) .lt. tol) then - nip2fb = ip1 - itbb3 = itbb2-2 - go to 85 - end if -84 continue - end if -83 continue - print* - print*,'Timing problem w/ forced beams' - write(15,'(/a)')'Timing problem w/ forced beams' -85 continue - call logbeam(numnew,nip1fb,nip2fb) -c -c Set up mapfb for forced beam just logged: -c - ib1 = itbb1/2 - ib2 = itbb3/2 - ibrep = lenbar/ibmrep/2 - do 86 irep = 1 , ibmrep - ib1now = max(0,ib1-(irep-1)*ibrep) - ib2now = min(irep*ibrep-1,ib2-(irep-1)*ibrep) - mapnow = 0 - do 87 ib = ib1now , ib2now - mapnow = ibset(mapnow,ib) -87 continue - mapfb(irep) = ior(mapfb(irep),mapnow) -86 continue -c -c Since we are cycling thru forced beams, for those that start with a rest and -c have height & slope adjustments, move adjustments to next note. -c 060924: Copy to ALL later notes in fb, in case there's more than 1 rest at -c start of beam -c - if (btest(irest(ivx,nip1fb),0)) then - do 88 kp = nip1fb+1 , nip2fb - call setbits(ipl(ivx,kp),6,11, - * igetbits(ipl(ivx,nip1fb),6,11)) - call setbits(ipl(ivx,kp),6,17, - * igetbits(ipl(ivx,nip1fb),6,17)) - call setbits(islur(ivx,kp),2,27, - * igetbits(islur(ivx,nip1fb),2,27)) -88 continue - end if -80 continue -81 continue -c -c Slide down, reduce nfb(ivx). This lets us count up from 1 for each new bar. -c Remember, makeabar is called 1/bar, and it calls findbeam once per voice. -c - if (nfbbar .gt. 0) then - nfb(ivx) = nfb(ivx)-nfbbar - do 82 ifb = 1 , nfb(ivx) - t1fb(ivx,ifb) = t1fb(ivx,ifb+nfbbar) - t2fb(ivx,ifb) = t2fb(ivx,ifb+nfbbar) - ulfbq(ivx,ifb) = ulfbq(ivx,ifb+nfbbar) -82 continue - end if - end if - ifb = 0 -c -c Done with forced beam masks for this bar and voice. Now get normal beams. -c - call findbeam(ibmrep,numbms,mapfb) -20 continue - return - end - subroutine make2bar(ninow,tglp1,tstart,cwrest,squez, - * istop,numbms,istart,clefq) - parameter (nm=24,mv=24576) - common /comlast/ islast,usevshrink - logical islast,usevshrink - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - common /comipl2/ ipl2(nm,200) - character*10 figq - character*1 ulq,sepsymq,sq,chax - logical beamon,firstgulp,figbass,figchk,isfig,bar1syst,isbjmp, - * isbj2 - common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 - common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), - * fullsize(nm),ivxfig2,ivvfig(2,74) - common /combeam/ ibmtyp - common /comask/ bar1syst,fixednew,scaldold, - * wheadpt,fbar,poenom - common /comas1/ naskb,task(40),wask(40),elask(40) - common /comas2/ nasksys,wasksys(800),elasksys(800) - common /comhead/ ihdht,lower,headrq,lowerq,ihdvrt - common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, - * tautofb,autofbon,t1autofb - common /comsln/ is1n1,is2n1,irzbnd,isnx - common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, - * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, - * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, - * graspace(37), - * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), - * naccg(74),voltxtq(6),litq(83) - logical upg,slurg,slashg,issig,rpndot,autofbon - character*128 litq - common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), - * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) - integer istart(80),istop(80),iaskb(nm),numbms(nm), - * nornb(nm),ihornb(nm,24),lcwr(nm),ibmcnt1(nm),ifig(2) - character*1 ulfbq,udqq,clefq(nm),slurudq,udq - character*8 noteq - character*79 cwrq(nm),notexq,inameq - character*20 voltxtq - common /comoct/ noctup - character*80 soutq,headrq,lowerq - common /comnsp/ space(80),nb,prevtn(nm), - * flgndv(nm),flgndb,eskgnd,ptsgnd,ivmxsav(nm,2),nvmxsav(nm) - logical bspend,lower,cwrest(nm),vxtup, - * isgrace,isclef,nofirst,iscln,isdot,isflag, - * isacc,isfirst,flgndb,btest,stemup,upslur, - * isgaft,isarp,isrshft,isaccs,iscacc, - * lowdot,flipend,iscwr,isdotted,beamon1(nm) - real*4 ptgr(37),ptclef(nm),ptsndg(nm),eskndg(nm),tstart(80), - * squez(80) - logical cwrferm,drawbm - common /comcwrf/ cwrferm(nm) - common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), - * mtupv(nm,9),nxtinbm(nm), - * islope(nm),xelsk(24),eloff(nm,9), - * nssb(nm),issb(nm),lev1ssb(nm,20) - common /comdraw/ drawbm(nm) - common /comstart/ facmtr - common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, - * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, - * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, - * rtshfac -c -c Factors for grace note, clef spacing. (fraction of wheadpt) -c In 1.04, moved to block data subprogram -c - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, - * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, - * lnam(nm),inameq(nm) - common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) - common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), - * xinsnow,lowdot - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - common /strtmid/ ihnum3,flipend(nm),ixrest(nm) - common /comtol/ tol - common /comignorenats/ mbrhgt,newmbrhgt,ignorenats - logical ignorenats,newmbrhgt - integer*2 mmidi,iinsiv - logical restpend,relacc,notmain,twoline,ismidi,crdacc,fontslur - * ,WrotePsslurDefaults - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - logical slmon,dbltie - common /comslm/ levson(0:nm),levsoff(0:nm),imidso(0:nm), - * naccbl(0:nm),laccbl(0:nm,10),jaccbl(0:nm,10),nusebl, - * slmon(0:nm),dbltie - common /comevent/ miditime,lasttime - logical kbdrests - common /comkbdrests/ levbotr(8),levtopr(8),kbdrests - logical secondgrace - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans - common /commidisig/ midisig -c 130316 - common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) - * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) - common /comclefrests/ centrests - logical centrests - common /xjbeambrests/ nbrests - common /comc8flag/ c8flag(nm) - logical c8flag - common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) - character*4 ivxq - logical rename - common /comshort/ shortfrac,codafrac,ishort,mbrsum,nmbr,nocodabn, - * poefa - real*4 poefa(125) - logical nocodabn - nbrests = 0 -c -c Set up main ib loop within which a block (notes group) is written -c - do 25 iv = 1 , nv - do 25 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - ibmcnt(ivx) = 1 - ibmcnt1(ivx) = 1 - beamon(ivx) = .false. - beamon1(ivx) = .false. - nornb(ivx) = 0 - iaskb(ivx) = 1 - vxtup(ivx) = .false. - drawbm(ivx) = .true. -25 continue - naskb = 0 - ifig(1) = 1 - ifig(2) = 1 - ixtup = 0 - bspend = .false. - iscwr = .false. - rpndot = .false. - do 16 ib = 1 , nb -c -c Check for segno -c - if (btest(iornq(1,ipo(istart(ib))),4) .and. - * ivxo(istart(ib)).eq.1) then - if (noffseg.le.-10) then - write(noteq(1:5),'(1H{,i3,1H})')noffseg - lnoten = 5 - else if (noffseg.lt.0 .or. noffseg.ge.10) then - write(noteq(1:4),'(1H{,i2,1H})')noffseg - lnoten = 4 - else - write(noteq(1:1),'(i1)')noffseg - lnoten = 1 - end if - notexq = sq//'znotes'//sq//'segnoo'//noteq(1:lnoten)//'9' - lnote = 15+lnoten - do 130 iv = 2 , nv - if (lnote .gt. 60) then - if (islast) write(11,'(a)')notexq(1:lnote)//'%' - notexq = sepsymq(iv-1)//sq//'segnoo' - * //noteq(1:lnoten)//'9' - lnote = lnoten+9 - else - notexq = notexq(1:lnote)//sepsymq(iv-1)//sq//'segnoo' - * //noteq(1:lnoten)//'9' - lnote = lnote+lnoten+9 - end if -130 continue - if (islast) write(11,'(a)')notexq(1:lnote)//sq//'en' - lnote = 0 - end if -c -c Check for new clefs -c - isclef = .false. - if (btest(islur(ivxo(istart(ib)),ipo(istart(ib))),15)) - * then -c -c In preceding line, fl32 gave wrong result for ... .gt.0 !!! -c - do 140 in = istart(ib) , istop(ib) - if (btest(islur(ivxo(in),ipo(in)),11)) then - call wsclef(ivxo(in),ninow, - * iand(ishft(islur(ivxo(in),ipo(in)),-12),7)) -c -c If clefq = '8', must add eg \settrebleclefsymbol3\treblelowoct% -c -c if (clefq(ivxo(in)) .eq. '8') then - if (btest(ipl(ivxo(in),ipo(in)),2)) then -c -c Find instrument number for voice ivso(in) -c - iv1 = 1 - do 1111 iinst = 1 , ninow - if (ivxo(in) .lt. iv1+nspern(iinst)) go to 2222 - iv1 = iv1+nspern(iinst) -1111 continue - print* - print*,'Should not be here in make2bar!' - call stop1() -2222 continue - if (iinst .le. 9) then - write(11,'(a20,i1,a)')sq//'settrebleclefsymbol', - * iinst,sq//'treblelowoct%' - else - write(11,'(a20,i2,a)')sq//'settrebleclefsymbol', - * iinst,sq//'treblelowoct%' - end if - c8flag(ivxo(in)) = .true. - end if - end if -140 continue - if (islast) write(11,'(a)')sq//'pmxnewclefs' - isclef = .true. - end if -c -c Start a notes group. We're just gonna define every one using pnotes{n}, -c where \def\pnotes#1{\vnotes#1\elemskip} -c - soutq = sq//'pnotes{' - eonsqz = squez(ib)*feon(space(ib)/squez(ib)) - if (eonsqz .gt. 9.995) then - write(soutq(9:12),'(f4.1)')eonsqz - else if (eonsqz .gt. 0.995) then - write(soutq(9:12),'(f4.2)')eonsqz - else if (eonsqz .gt. 0.095) then - soutq = soutq(1:8)//'0.' - write(soutq(11:12),'(i2)')nint(100*eonsqz) - else - soutq = soutq(1:8)//'0.0' - write(soutq(12:12),'(i1)')nint(100*eonsqz) - end if - soutq = soutq(1:12)//'}' - lsout = 13 -c -c Check whole block, flag accidentals etc that are too close, one per *time*. -c Note about bar starts and after rpt's/boublebars: There is an afterruleskip -c (fbar*wheadpt) following, but rpts seem to occupy some of that gap, so -c (dotsfac*wheadpt) is presumed to be filled up. -c - in = istart(ib)-1 - itrpt = -1 - itsig = -1 -c -c Begin big manual loop over notes in this block; ends at 112 -c -111 in = in+1 - if (in .gt. istop(ib)) go to 112 - ip = ipo(in) - ivx = ivxo(in) - if (ivx .le. nv) then - iv = ivx - else - do 128 iv = 1 , nv - if (nvmx(iv) .eq. 2 .and. ivmx(iv,2).eq. ivx) go to 129 -128 continue - print*,'Trouble finding iv!, ivx,nvmx,ivmx:',ivx,nvmx(1),nvmx(2) - print*,ivmx(1,1),ivmx(1,2),ivmx(2,1),ivmx(2,2) - stop - end if -129 continue -c -c Call precrd here so we know how much space to add for accid's in chords -c After calling precrd, icashft>0 means there is a shifted chordal accid (incl. -c main note. -c -c To call precrd, need up-downness, so must track if in beam. -c -c Deal w/ staff-jumping beams later -c if ((numbms(ivx).gt.0 .and. ibmcnt(ivx).le.numbms(ivx) -c * .and. ibm1(ivx,ibmcnt(ivx)) .eq. ip) .or. -c * btest(nacc(ivx,ip),21)) then -c if (.not.btest(irest(ivx,ip),24)) then - if ((numbms(ivx).gt.0 .and. ibmcnt1(ivx).le.numbms(ivx) - * .and. ibm1(ivx,ibmcnt1(ivx)) .eq. ip)) then - beamon1(ivx)=.true. - end if - icashft = 0 - if (btest(ipl(ivx,ip),10)) then -c -c There is a chord on this note. Need up-down-ness in precrd to auto shift for 2nds. -c - if (beamon1(ivx)) then - call precrd(ivx,ip,nolev(ivx,ip),nacc(ivx,ip), - * ipl(ivx,ip),irest(ivx,ip),ulq(ivx,ibmcnt1(ivx)), - * .false.,icashft) - else - call precrd(ivx,ip,nolev(ivx,ip),nacc(ivx,ip), - * ipl(ivx,ip),irest(ivx,ip),udqq(nolev(ivx,ip), - * ncmid(iv,ip),islur(ivx,ip),nvmx(iv),ivx,nv), - * .false.,icashft) - end if - end if -c -c Turn beam off? -c - if (beamon1(ivx) .and. ibm2(ivx,ibmcnt1(ivx)).eq.ip) then - beamon1(ivx) = .false. - ibmcnt1(ivx) = ibmcnt1(ivx)+1 - end if -c -c Remember, rpts & internal sigs can only come at start of (internal) block -c - isacc = iand(nacc(ivx,ip),3).gt.0 - * .and. .not.btest(nacc(ivx,ip),17) - * .and. .not.btest(ipl(ivx,ip),10) -c -c i.e., do not set for chord. Now check for "(" as ornament on main note, -c -c!!! Need to do this for chord notes too. Maybe in chkarp? -c - isaccs = isacc .or. btest(iornq(ivx,ip),0) -c -c 5/15/02 Add check for ) ornament of prior note. -c 5/16 Nope...fails when grace intervenes. -c if (ip .gt. 1) then -c isaccs = isaccs .or. btest(iornq(ivx,ip-1),13) -c end if - isarp = btest(iornq(ivx,ip),27) - iscacc = .false. - if (btest(ipl(ivx,ip),10)) then -c -c There is a chord here; check for arpeggios and accidentals. Note accid shifts are -c not of concern here, only whether there's an accid, whick causes iscacc=.true. -c - iscacc = igetbits(nacc(ivx,ip),3,0).gt.0 .and. - * .not.btest(nacc(ivx,ip),17) - call chkarp(ncrd,icrdat,ivx,ip,iscacc,isarp) - end if -c -c When we get motivated, will do spacing for arpeggios here. -c - if (ivx.eq.1 .and. iand(islur(ivx,ip),96).gt.0) - * itrpt = nint(to(in)) - issig = btest(ipl(ivx,ip),28) - if (ivx.eq.1 .and. issig) itsig = nint(to(in)) - isgrace = btest(islur(ivx,ip),4) .and. - * .not.btest(ipl(ivx,ip),29) .and. .not.btest(ipl(ivx,ip),31) - isgaft = .false. - if (ip .gt. 1) then - xnd = tnote(ipl2(ivx,ip-1)) - isgaft = btest(ipl(ivx,ip-1),29) .or. btest(ipl(ivx,ip-1),31) - isgrace = isgrace .or. isgaft - end if - iscln = isclef .and. btest(islur(ivx,ip),11) -c -c Is prev. note non-beamed, up-stemmed, & flagged? Recall if ip>1, have nd -c - isflag = ip.gt.1 .and. xnd.gt.tol .and. xnd.lt.16.-tol - if (isflag) - * isflag = .not.btest(irest(ivx,ip-1),0) - * .and. udqq(nolev(ivx,ip-1), - * ncmid(iv,ip-1),islur(ivx,ip-1),nvmx(iv),ivx,nv).eq.'u' - if (isflag) then - do 116 ibmchk = 1 , numbms(ivx) - if (ip-1 .lt. ibm1(ivx,ibmchk)) then - go to 117 -c -c Add check for non-beamed xtuplets. May be problem with stem direction. -c - else if (ip-1.le.ibm2(ivx,ibmchk) .and. - * .not.btest(islur(ivx,ibm1(ivx,ibmchk)),18)) then - isflag = .false. - go to 117 - end if -116 continue - end if -117 continue -c -c If isflag, then won't need to check for dot on prev. note. -c -c 5/16/02 ??? Try using this for ) ornament. -c - isflag = isflag .or. btest(iornq(ivx,ip-1),13) - isdot = ip.gt.1 - if (isdot) isdot = isdotted(nodur,ivx,ip-1) - isrshft = ip .gt. 1 - if (isrshft) isrshft = btest(irest(ivx,ip-1),20) - if (.not.(isaccs.or.isgrace.or.iscln.or.isflag.or.isrshft.or. - * isdot.or.btest(iornq(ivx,ip),26).or. - * btest(irest(ivx,ip),21).or.isarp.or. - * btest(irest(ivx,ip),27).or.iscacc)) go to 111 -c -c Here is an accid,grace,clef,flag,rtshft,dot,udsp,arpeg,left-shift. -c Compute pts, the total occupied space including prior notehead. -c -c 130324 -c wheadpt1 = wheadpt*fullsize(iv) - wheadpt1 = wheadpt*fullsize(instno(iv)) - pts = wheadpt1 -c -c Set up for possible cautionary accidental here -c - if (isaccs .or. iscacc) then - if (.not.btest(iornq(ivx,ip),31)) then - taccfac = accfac - else - taccfac = 1.4*accfac ! cautionary accidental - end if - end if - if (isgrace) then - secondgrace = .false. - do 122 ig = 1 , ngrace - if (.not. isgaft) then - if (ipg(ig).eq.ip .and. ivg(ig).eq.ivx) go to 123 - else if (ip .gt. 1) then - if (ipg(ig).eq.ip-1 .and. ivg(ig).eq.ivx) go to 123 - end if -122 continue - print*,'Problem finding grace index in makeabar' - stop -123 continue -c -c wgr = distance to backspace (in headwidths), less main acc. -c ptgr = same in pts,+ main acc. Not used for after-grace. Distance to backspace. -c spgr = total space needed (w/o main acc). -c Also, spgr is same for b4 or after, but xb4fac-space will be in diff. place. -c - if (nng(ig) .eq. 1) then - wgr = grafac - if (multg(ig) .eq. 0) wgr = wgr-.4 - else - wgr = nng(ig)*emgfac - do 126 ing = 2 , nng(ig) - if (naccg(ngstrt(ig)-1+ing) .gt. 0) wgr = wgr+acgfac -126 continue - end if - if (graspace(ig) .gt. 0.) then -c -c User-defined space before grace -c - wgr = wgr+graspace(ig) - end if - ptgr(ig) = wgr*wheadpt1 - spgr = ptgr(ig)+xb4fac*wheadpt1 -c -c!!! May need to mod for chord accid's -c - if (isaccs .or. iscacc) ptgr(ig) = ptgr(ig) + taccfac*wheadpt1 - if (naccg(ngstrt(ig)) .gt. 0) spgr = spgr+wheadpt1*agc1fac - pts = pts+spgr -c -c Special check for after-grace on ip-1 and normal on ip. Must go back thru -c loop again for the normal grace. -c - if (isgaft .and. ig.lt.ngrace .and. .not.secondgrace) then - if (ipg(ig+1).eq.ip) then - secondgrace = .true. - ig = ig+1 - go to 123 - end if - end if - end if - if (iscln) then - pts = pts+clefac*wheadpt1 -c -c How far to backspace when printing the clef -c - ptclef(ivx) = 0. -c -c!!! May need to mod for chord accid's -c - if (isaccs .or. iscacc) - * ptclef(ivx) = ptclef(ivx)+taccfac*wheadpt1 - if (isgrace) ptclef(ivx) = ptclef(ivx)+spgr - end if - if (isrshft) then - pts = pts+rtshfac*wheadpt1 - else if (isflag) then - pts = pts+flagfac*wheadpt1 - else if (isdot) then - pts = pts+dotfac*wheadpt1 - end if - if (abs(to(in)-itrpt) .lt. tol) then -c -c Repeat, need a little extra space -c - pts = pts+dotsfac*wheadpt1 - end if - if (isarp) then - pts = pts+arpfac*wheadpt1 - end if -c -c Add in padding space -c - pts = pts+xspfac*wheadpt1 -c -c Now done with all items needing space except accidentals, -c accidental shifts, and left-notehead-shifts, and will later -c subtract a notehead if at start of bar. -c -c Get available space in elemskips (esk) -c - isfirst = ip.eq.1 .or. abs(to(in)-itrpt).lt.tol .or. - * abs(to(in)-itsig).lt.tol - if (isfirst) then -c -c At start of bar or after repeat sign or new signature -c - if (abs(to(in)-itsig).lt.tol) then - esk = 0. - else - esk = fbar - end if - else -c -c Not 1st note of bar -c - esk = eskz(ivx,ip)-eskz(ivx,ip-1) - end if - if (isgrace) then -c -c Since graces can be very long, cannot assume no interference if prior -c note uses >1 noteskip. So must get elsk's back to prior note, whether or -c not it used only one noteskip. -c <>???? -c -c 10/8/05 Kluge to not zero out esk if in xtup -c - esksav = esk - if ((ip.le.2 .or. nodur(ivx,max(1,ip-2)).gt.0) .and. -c * to(in).ne.itsig) - * abs(to(in)-itsig).gt.tol) - * call eskb4(ip,ivx,in,ib,space,tstart,fbar,itrpt,esk) - if (abs(esk) .lt. tol) esk = esksav - end if -c -c Done getting available elemskips. Remove headwidth if first. Must do here -c rather than earlier since check uses isfirst -c - if (isfirst) pts = pts-wheadpt1 -c -c Deal with accidental shifts and left-notehead shifts -c - if (btest(ipl(ivx,ip),10)) then -c -c In a chord -c - ptsl = 0. - if (btest(irest(ivx,ip),27)) ptsl = wheadpt1 - ptsadd = max(ptsl,icashft*.05*wheadpt1) -c -c Note: may have icashft=-20000 (if shftmin=-1000 in crdacc) but that's OK -c - else -c -c Not in a chord -c - ihshft = 0 - if (isaccs) then - ihshft = igetbits(nacc(ivx,ip),7,10) -c if (ihshft .ne. 0) ihshft = max(0,64-ihshft) - if (ihshft .ne. 0) ihshft = max(0,107-ihshft) - end if -c -c Check for left-shifted main note -c - if (btest(ipl(ivx,ip),8)) ihshft = max(20,ihshft) - ptsadd = ihshft*.05*wheadpt1 - end if - pts = pts+ptsadd - if (isgrace) ptgr(ig) = ptgr(ig)+ptsadd - if (iscln) ptclef(ivx) = ptclef(ivx)+ptsadd -c -c Left-shifted, non-chord note before? -c - if (ip .gt. 1) then - if (.not.btest(ipl(ivx,ip-1),10) .and. - * btest(irest(ivx,ip-1),27)) pts = pts-wheadpt1 - end if -c -c Try big accidentals first -c - ptbneed = pts - if (isaccs .or. iscacc) then - ptbneed = ptbneed+wheadpt1*bacfac - end if - if (poefa(iline)*poenom*esk .gt. ptbneed) then -c -c Set flag for big accidental -c - if (isacc) nacc(ivx,ip) = ibset(nacc(ivx,ip),3) - go to 99 - end if -c -c Cannot use big, so try small -c - ptsneed = pts - if (isaccs .or. iscacc) then - ptsneed = ptsneed+taccfac*wheadpt1 - end if - if (poefa(iline)*poenom*esk .lt. ptsneed) then - call addask(to(in),ptsneed,poefa(iline)*esk, - * fixednew,poefa(iline)*scaldold,0.,.false.) - end if -99 continue - if (btest(iornq(ivx,ip),26)) then -c -c User-defined space. Warning, "zero" may change value in addask! -c - zero = 0. - call addask(to(in),ptsneed,zero, - * fixednew,scaldold,tglp1,.true.) - end if -c -c End of big manual loop over "in" for accidental checking -c - go to 111 -112 continue -c -c End of ask analysis for this block. -c -c Adjust eskz if there are added spaces. Corrects length of xtup brackets. -c - if (naskb.gt.0) call adjusteskz(ib,istart,poenom) -c -c Check for internal repeat or sig change. -c - if (ib.gt.1 .and. ivxo(istart(ib)).eq.1) then - iirpt = iand(islur(1,ipo(istart(ib))),67109216) - if (iirpt .gt. 0) then -c -c Internal repeat -c - if (islast) write(11,'(a)')sq//'advance'//sq//'barno-1%' - if (iirpt .eq. 96) then - if (islast) write(11,'(a)')sq//'leftrightrepeat' - fixednew = fixednew+lrrptfac*wheadpt - else if (btest(iirpt,5)) then - if (islast) write(11,'(a)')sq//'leftrepeat' - fixednew = fixednew+rptfac*wheadpt - else if (btest(iirpt,6)) then - if (islast) write(11,'(a)')sq//'rightrepeat' - fixednew = fixednew+rptfac*wheadpt - else if (btest(iirpt,8)) then - if (islast) write(11,'(a)')sq//'doublebar' - else - print*,'Unexpected mid-bar repeat command R*' - call stop1() - end if - scaldold = scaldold-fbar - end if - if (btest(ipl(1,ipo(istart(ib))),28)) then -c -c Internal signature change. -c - notexq = sq//'generalsignature{' - lnote = 18 - if (isig .lt. 0) then - notexq = notexq(1:lnote)//'-' - lnote = lnote+1 - end if - if (islast) write(11,'(a)')notexq(1:lnote) - * //chax(48+abs(isig))//'}%' - if (islast .and. ignorenats) - * write(11,'(a)')sq//'ignorenats%' - if (islast) write(11,'(a)')sq//'zchangecontext'//sq - * //'addspace{-.5'//sq//'afterruleskip}%' - lnote = 0 - end if - end if - flgndb = .false. -c -c Done with start-of-block stuff. Begin main loop over voices. -c - do 11 iv = 1 , nv - do 11 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - icm = midchan(iv,kv) -c -c A rather klugey way to set flag for figure in this voice -c Must always check figbass before figchk. -c - if (figbass) then - ivf = 0 - if (ivx .eq. 1) then - ivf = 1 - else if (ivx .eq. ivxfig2) then - ivf = 2 - end if - if (ivf.gt.0) figchk(ivf) = nfigs(ivf).gt.0 - end if - if (ivx .gt. 1) then - if (ivx .le. nv) then - call addstr(sepsymq(iv-1),1,soutq,lsout) - else - call addstr(sq//'nextvoice',10,soutq,lsout) - end if - end if - if (ihdht.gt.0 .and. ivx.eq.nv) then -c -c Write header. First adjust height if needed to miss barno. -c - if (bar1syst .and. iline.ne.1) then - ihdht = 15+irzbnd+isnx - end if -c -c Add user-defined vertical shift -c - ihdht = ihdht+ihdvrt - lchead = lenstr(headrq,80) - notexq = sq//'zcharnote{' - write(notexq(12:13),'(i2)')ihdht - notexq = notexq(1:13)//'}{'//sq//'bigfont'//sq//'kern-30pt ' - call addstr(notexq,34,soutq,lsout) - call addstr(headrq(1:lchead)//'}',1+lchead,soutq,lsout) - ihdht = 0 - end if - if (lower .and. ivx.eq.nv) then - lclow = lenstr(lowerq,80) - call addstr(sq//'zcharnote{-6}{'// - * sq//'tempo'//sq//'kern-10pt '// - * lowerq(1:lclow)//'}',33+lclow,soutq,lsout) - lower=.false. - end if - tnow = tstart(ib) - nofirst = .true. -c -c Done setting up voice ivx for start of block ib. Loop over notes in voice. -c - do 10 jn = istart(ib), istop(ib) - if (ivxo(jn) .ne. ivx) go to 10 - ip = ipo(jn) -c -c May have problem with not initializing islhgt, so do it here -c - islhgt = 0 -c - if (nofirst) then - noctup = 0 - if (ncmid(iv,ip) .eq. 23) noctup = -2 - nofirst = .false. - end if -c -c Check for internal floating figure (before last note of group). -c -12 if (figbass) then - if (ivx.eq.1 .or. ivx.eq.ivxfig2) then - ivf = 1 - if (ivx .gt. 1) ivf = 2 - if (figchk(ivf) .and. itfig(ivf,ifig(ivf)).lt.tnow-tol) - * then -c -c Bypassed figure location. Backup, place fig, return. -c - offnsk = (tnow-itfig(ivf,ifig(ivf)))/space(ib) - call putfig(ivf,ifig(ivf),offnsk,figchk(ivf),soutq, - * lsout) - go to 12 - end if - end if - end if -c -c Put in \sk if needed -c - if (to(jn) .gt. tnow+tol) then - call addstr(sq//'sk',3,soutq,lsout) - tnow = tnow+space(ib) - go to 12 - end if -c -c Check for user-defined shifts -c - if (btest(irest(ivx,ip),15).or.btest(irest(ivx,ip),16)) - * call putshft(ivx,.true.,soutq,lsout) -21 if (iaskb(ivx).le.naskb .and. - * tnow.gt.task(iaskb(ivx))-tol) then - if (task(iaskb(ivx)) .gt. tstart(ib)-tol) then -c -c Insert placeholder for accidental skip -c - call addstr(sq//'ask ',9,soutq,lsout) - nasksys = nasksys+1 - wasksys(nasksys) = wask(iaskb(ivx)) - if (wask(iaskb(ivx)) .gt. 0.) then - elasksys(nasksys) = elask(iaskb(ivx)) - else -c -c This is a signal to permit negative ask's. Should really have elask>=0. -c - elasksys(nasksys) = -elask(iaskb(ivx)) - end if - end if -c -c May have skipped some task's in earlier blocks (due to void voice) -c - iaskb(ivx) = iaskb(ivx)+1 - go to 21 - end if - if (figbass) then - if (ivx.eq.1 .or. ivx.eq.ivxfig2) then - ivf = 1 - if (ivx .gt. 1) ivf = 2 - if (figchk(ivf) .and. - * abs(itfig(ivf,ifig(ivf))-tnow).lt.tol) then -c -c Figure on a note. NB: later special check for late figs. -c - call putfig(ivf,ifig(ivf),0.,figchk(ivf),soutq,lsout) - end if - end if - end if -c -c Check for new clef here. -c - if (isclef .and. btest(islur(ivx,ip),11)) then - if (ptclef(iv) .gt. 0.) then - notexq = sq//'off{-' - if (ptclef(iv) .lt. 9.95) then - write(notexq(7:9),'(f3.1)')ptclef(iv) - lnote = 9 - else - write(notexq(7:10),'(f4.1)')ptclef(iv) - lnote = 10 - end if - notexq = notexq(1:lnote)//'pt}' - lnote = lnote+3 - call addstr(notexq,lnote,soutq,lsout) - end if - call clefsym(islur(iv,ip),notexq,lnote,nclef) -c -c 151220 If clef is treblelowoct, change '0' in pos'n 9 to '8' -c - if (btest(ipl(ivx,ip),2)) notexq = - * notexq(1:8)//'8'//notexq(10:10) - call addstr(notexq,lnote,soutq,lsout) - if (ptclef(iv) .gt. 0.) then - notexq = sq//'off{' - if (ptclef(iv) .lt. 9.95) then - write(notexq(6:8),'(f3.1)')ptclef(iv) - lnote = 8 - else - write(notexq(6:9),'(f4.1)')ptclef(iv) - lnote = 9 - end if - notexq = notexq(1:lnote)//'pt}' - lnote = lnote+3 - call addstr(notexq,lnote,soutq,lsout) - end if - end if -c -c Checking for literal TeX string BEFORE starting beams!! -c - if (btest(islur(ivx,ip),16)) then - do 124 il = 1 , nlit - if (iplit(il).eq.ip .and. ivlit(il).eq.ivx) go to 125 -124 continue - print*,'Problem finding index for literal string' - call stop1() -125 continue -c -c Write a type 1 tex string. -c - if (lenlit(il) .lt. 71) then -c -c Add normally -c - call addstr(litq(il),lenlit(il),soutq,lsout) - else -c -c Longer than 71. Write souq, Write string, start new soutq. -c - if (islast) write(11,'(a)')soutq(1:lsout)//'%' - if (islast) write(11,'(a)')litq(il)(1:lenlit(il))//'%' - lsout = 0 - end if - end if -c -c Arpeggio on a main (non-chordal) note? -c - if (btest(iornq(ivx,ip),27)) then -c call putarp(tnow,iv,ip,nolev(ivx,ip),ncmid(iv,ip), - call putarp(tnow,ivx,ip,nolev(ivx,ip),ncmid(iv,ip), - * soutq,lsout) - end if -c -c See if a beam starts here -c - if ((numbms(ivx).gt.0 .and. ibmcnt(ivx).le.numbms(ivx) - * .and. ibm1(ivx,ibmcnt(ivx)) .eq. ip) .or. - * btest(nacc(ivx,ip),21)) then - if (.not.btest(irest(ivx,ip),24)) then -c -c Not a jump start -c - if (kbdrests .and. btest(irest(ivx,ip),0) .and. - * .not.btest(islur(ivx,ip),29).and. nvmx(iv).eq.2 .and. - * nolev(ivx,ip).le.50) - * call chkkbdrests(ip,iv,ivx,nn,islur,irest,nolev, - * ivmx,nib,nv,ibar,tnow,tol,nodur,2,levtopr,levbotr, - * mult,ipl) - call beamstrt(notexq,lnote,nornb,ihornb,space,squez,ib) -c -c Shift beam start if notehead was shifted -c - if (btest(ipl(ivx,ip),8)) then - call addstr(sq//'loff{',6,soutq,lsout) - else if (btest(ipl(ivx,ip),9)) then - call addstr(sq//'roff{',6,soutq,lsout) - end if - if (lnote .gt. 0) call addstr(notexq,lnote,soutq,lsout) - if (btest(ipl(ivx,ip),8) .or. - * btest(ipl(ivx,ip),9)) call addstr('}',1,soutq,lsout) - else -c -c Jump start. Set marker for second part of a jump beam. Note ivbj2 was set -c to 0 at end of first part of jump beam -c - ivbj2 = ivx -c -c Check for xtup since we bypassed beamstrt wherein vxtup is normally set -c - if (btest(irest(ivx,ip),28) .and. ixrest(ivx).ne.2) - * vxtup(ivx) = .true. -c -c Since beamstrt is not called, and drawbm is normally set there, need to set -c it here. This could cause problems if someone tries a staff-jumping, -c unbarred beam, which I'll deal with when it comes up. -c - drawbm(ivx) = .true. - end if - if (ixrest(ivx) .eq. 0) then - beamon(ivx) = .true. - bspend = .true. - if (.not.btest(irest(ivx,ip),24))bspend = .true. - end if - end if -c -c Setup for chords and possible slurs in chords -c - if (btest(ipl(ivx,ip),10)) then -c -c There is a chord on this note. Just rerun precrd. Klunky, but saves -c me from tracking down errors instroduced when I moved 1st call -c forward for accidental spacing analysis. -c - if (beamon(ivx)) then - call precrd(ivx,ip,nolev(ivx,ip),nacc(ivx,ip), - * ipl(ivx,ip),irest(ivx,ip),ulq(ivx,ibmcnt(ivx)), - * .true.,icashft) - else - call precrd(ivx,ip,nolev(ivx,ip),nacc(ivx,ip), - * ipl(ivx,ip),irest(ivx,ip),udqq(nolev(ivx,ip), - * ncmid(iv,ip),islur(ivx,ip),nvmx(iv),ivx,nv), - * .true.,icashft) - end if - end if -c -c Is there slur or grace activity? -c - isgrace = btest(islur(ivx,ip),4) - if (ip .gt. 1) isgrace = isgrace.or.btest(ipl(ivx,ip-1),31) -c -c isgrace if not 1st note in bar and previous note has Way-after grace. -c - if (btest(islur(ivx,ip),0) .or. isgrace) then - if (btest(islur(ivx,ip),0)) then - if (fontslur) then -c -c Call routine for non-postscript slurs -c - call doslur(nolev(ivx,ip),isdat1,isdat2,isdat3,nsdat, - * ip,iv,kv,nv,beamon(ivx),ncmid(iv,ip),soutq,lsout, - * ulq(ivx,ibmcnt(ivx)),islur(ivx,ip),ipl(ivx,ip), - * iornq(ivx,ip),islhgt,tnote(ipl2(ivx,ip)), - * nacc(ivx,ip)) - else -c -c Postscript slurs -c - call dopsslur(nolev(ivx,ip),isdat1,isdat2,isdat3, - * isdat4,nsdat, - * ip,iv,kv,nv,beamon(ivx),ncmid(iv,ip),soutq,lsout, - * ulq(ivx,ibmcnt(ivx)),islur(ivx,ip),ipl(ivx,ip), - * iornq(ivx,ip),islhgt,tnote(ipl2(ivx,ip)), - * nacc(ivx,ip)) - end if - end if - if (isgrace) then -c -c Grace note. -c - iphold = ip - isgrace = .false. - if (ip .gt. 1) isgrace = btest(ipl(ivx,ip-1),31) - if (isgrace) iphold = iphold-1 - isgrace = isgrace .or. (.not.btest(ipl(ivx,ip),31) - * .and..not.btest(ipl(ivx,ip),29)) -c -c Place grace now if (a) Way-after from prev note and ip>1 or (b) Pre-grace -c on current note. Do A-grace on current note, and W-grace at barend, later. -c - if (isgrace) then - call dograce(ivx,iphold,ptgr,soutq,lsout,ncmid(iv,ip), - * nacc(ivx,ip),ig,ipl(ivx,iphold),.false., - * beamon(ivx),nolev(ivx,ip),ncmid(iv,ip), - * islur(ivx,ip),nvmx(iv),nv,ibmcnt(ivx), -c 130324 -c * tnote(ipl2(ivx,ip)),ulq) - * tnote(ipl2(ivx,ip)),ulq,instno(iv)) - if (slurg(ig)) then -c -c Terminate slur started in dograce. Get direction of main note stem -c - if (.not.beamon(ivx)) then -c -c Separate note. Get stem direction. -c - stemup = udqq(nolev(ivx,ip),ncmid(iv,ip), - * islur(ivx,ip),nvmx(iv),ivx,nv) .eq. 'u' - else -c -c In a beam -c - stemup = ulq(ivx,ibmcnt(ivx)) .eq. 'u' - end if -c -c Stop the shift if whole note -c - stemup = stemup .or. - * tnote(ipl2(ivx,ip)).gt.63 - call endslur(stemup,.not.upg(ig),nolev(ivx,ip),0, - * ndxslur,0,ncmid(iv,ip),soutq,lsout,fontslur) - end if - end if - end if - if (btest(iornq(ivx,ip),24)) then -c -c Start slur on main note for After- or Way-after-grace. -c -c???? ndxslur = log2(33554431-listslur) - ndxslur = log2(16777215-listslur) -c -c Get note name -c - call notefq(noteq,lnoten,nolev(ivx,ip),ncmid(iv,ip)) -c -c Get slur direction -c - slurudq = 'u' - if (.not.beamon(ivx)) then - if (udqq(nolev(ivx,ip),ncmid(iv,ip),islur(ivx,ip), - * nvmx(iv),ivx,nv) .eq. 'u') slurudq = 'd' - else - if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') slurudq = 'd' - end if -c -cc Replace ndxslur by 11-ndxslur when printing only. -c Replace ndxslur by 23-ndxslur when printing only. -c -c if (11-ndxslur .lt. 10) then - if (23-ndxslur .lt. 10) then -c notexq = sq//'islur'//slurudq//chax(59-ndxslur) - notexq = sq//'islur'//slurudq//chax(71-ndxslur) - * //noteq(1:lnoten) - call addstr(notexq,8+lnoten,soutq,lsout) - else if (23-ndxslur .lt. 20) then - notexq = sq//'islur'//slurudq//'{1'//chax(61-ndxslur) - * //'}'//noteq(1:lnoten) - call addstr(notexq,11+lnoten,soutq,lsout) - else - notexq = sq//'islur'//slurudq//'{2'//chax(51-ndxslur) - * //'}'//noteq(1:lnoten) - call addstr(notexq,11+lnoten,soutq,lsout) - end if -c call setbits(ipl(ivx,ip),4,23,ndxslur) - call setbits(ipl(ivx,ip),5,23,ndxslur) - if (btest(ipl(ivx,ip),31)) -c -c Starting slur on W-grace on THIS note. Record ndxslur. -c - * listslur = ibset(listslur,ndxslur) - end if - end if -c -c Process dynamic marks -c - if (btest(irest(ivx,ip),26)) then - call dodyn(ivx,ip, - * nolev(ivx,ip),ncmid(iv,ip),ipl(ivx,ip),islur(ivx,ip), - * irest(ivx,ip),nvmx(iv),nv,beamon(ivx),ihornb,nornb,ulq, - * ibmcnt(ivx),nodur(ivx,ip).ge.64,soutq,lsout) - end if -c -c Check for chord notes. Moved up from below, 10/27/96 so chord orns done 1st. -c - if (btest(ipl(ivx,ip),10)) then -c -c Need a duration to set type of note head -c -c Clumsy test, but vxtup is not set until main note is processed. -c - if (.not.(vxtup(ivx).or.btest(irest(ivx,ip),28))) then - nodu = nodur(ivx,ip) - else if (btest(irest(ivx,ip),2) .or. - * (ip.gt.1.and.btest(irest(ivx,ip-1),2))) then -c -c In a 2-note tremolo -c - if (btest(irest(ivx,ip),2)) then -c -c First note of tremolo, duration is on next note -c - nodu = nodur(ivx,ip+1) - else - nodu = nodur(ivx,ip) - end if - else if (iand(mult(ivx,ip),15)-8 .lt. 0) then - nodu = 32 - else - nodu = 16 - end if - call docrd(ivx,ip,nodu,ncmid(iv,ip),iv,tnow,soutq,lsout, - * ulq,ibmcnt(ivx),islur(ivx,ip),nvmx(iv),nv, - * beamon(ivx),nolev(ivx,ip),ihornb,nornb,stemlen, - * btest(nacc(ivx,ip),27),nacc(ivx,ip), - * irest) - end if -c -c Now that chords are done, add stuff to midi file -c - if (ismidi) call addmidi(icm, -c 130316 - * nolev(ivx,ip)+miditran(instno(iv)), - * iand(nacc(ivx,ip),7),midisig, - * tnote(ipl2(ivx,ip)), - * btest(irest(ivx,ip),0),.false.) -c -c Check for breath or caesura -c - if (btest(iornq(ivx,ip),28)) then - call putcb(ivx,ip,notexq,lnote) - call addstr(notexq,lnote,soutq,lsout) - end if -c -c Check for main-note ornaments. ')' on dotted notes go in with note, not here. -c Bits 0-13: (stmgx+Tupf._) ; 14: Down fermata, was F -c 15: Trill w/o "tr", was U , 16-18 edit. accid., 19-21 TBD -c -c isacc = iand(iornq(ivx,ip),4194287) .gt. 0 -c isacc = iand(iornq(ivx,ip),541065199) .gt. 0 - isacc = iand(iornq(ivx,ip),1614807023) .gt. 0 -c -c isacc=.true. if any ornament except segno -c - if (btest(iornq(ivx,ip),13) .and. nodur(ivx,ip).gt.0) then -c -c If ). is only ornament, bypass. If with others, temporarirly zero the bit. -c - if (2**log2(nodur(ivx,ip)) .ne. nodur(ivx,ip)) then - if (iand(iornq(ivx,ip),516079) .eq. 0) then -c -c ). is the only non-segno ornament -c - isacc = .false. - else -c -c There are other ornaments in addition -c - rpndot = .true. - iornq(ivx,ip) = ibclr(iornq(ivx,ip),13) - end if - end if - end if - if (isacc .and. .not.cwrferm(ivx)) then -c -c Check for centered whole-bar rest with fermata (bits 10 or 14). -c - if (iand(iornq(ivx,ip),17408).gt.0 - * .and. btest(irest(ivx,ip),0) .and. - * nodur(ivx,ip).eq.lenbar .and. - * .not.(firstgulp.and.ibar.eq.1.and.lenb0.gt.0)) then - cwrferm(ivx) = .true. - go to 30 - end if - call putorn(iornq(ivx,ip),nolev(ivx,ip),nolev(ivx,ip), - * nodur(ivx,ip),nornb,ulq,ibmcnt(ivx),ivx,ncmid(iv,ip), - * islur(ivx,ip),nvmx(iv),nv,ihornb,stemlen, - * notexq,lnote,ip,islhgt,beamon(ivx), - * btest(ipl(ivx,ip),10)) - call addstr(notexq,lnote,soutq,lsout) - end if - if (rpndot) then - iornq(ivx,ip) = ibset(iornq(ivx,ip),13) - rpndot = .false. - end if -30 continue -c -c Check for main note accidental -c - if (iand(nacc(ivx,ip),3).gt.0 .and. - * .not.btest(nacc(ivx,ip),17)) then - ihshft = igetbits(nacc(ivx,ip),7,10) - if (ihshft .ne. 0) ihshft=ihshft-107 - if (.not.btest(ipl(ivx,ip),10) .and. btest(ipl(ivx,ip),8)) -c -c Not a chord, and left-shifted main note, so left-shift accid -c - * ihshft = ihshft-20 - call doacc(ihshft,igetbits(nacc(ivx,ip),6,4), - * notexq,lnote,nacc(ivx,ip),nolev(ivx,ip),ncmid(iv,ip), - * btest(irest(ivx,ip),31)) - call addstr(notexq,lnote,soutq,lsout) - end if -c -c Lower dot for lower-voice notes. Conditions are: -c 1. Dotted time value -c 2. Lower voice of two -c 3. Note is on a line -c 4. Not a rest -c. 5. Flag (lowdot) is set to true -c 6. Not in an xtuplet -c - if (lowdot .and. nvmx(iv).eq.2 .and. ivx.le.nv - * .and. nodur(ivx,ip).ne.0) then - if (.not.btest(irest(ivx,ip),0) .and. - * 2**log2(nodur(ivx,ip)).ne.nodur(ivx,ip) .and. - * mod(nolev(ivx,ip)-ncmid(ivx,ip),2).eq.0) then - if (btest(irest(ivx,ip),19)) then -c -c Note already in movdot list. Drop by 2. -c - updot(ivx,ndotmv(ivx)+1) = - * updot(ivx,ndotmv(ivx)+1)-2. - else -c -c Not in list so just move it right now -c - call dotmov(-2.,0.,soutq,lsout, - * igetbits(islur(ivx,ip),1,3)) - end if - end if - end if -c -c Check for dotted main notes with moved dots. Chord notes done elsewhere. -c Added check rules out special chordal 2nds, but later must check -c substituted chord note for dot shift that now applies to main note. -c - if (btest(irest(ivx,ip),19)) then - ndotmv(ivx) = ndotmv(ivx)+1 - call dotmov(updot(ivx,ndotmv(ivx)),rtdot(ivx,ndotmv(ivx)), - * soutq,lsout,igetbits(islur(ivx,ip),1,3)) - end if -c -c Stemlength changes -c - if (btest(mult(ivx,ip),27)) then - dstemlen = igetbits(mult(ivx,ip),6,10)*.5-4. - call addstr(sq//'stdstemfalse',13,soutq,lsout) - stemshort = 4.66+.667*dstemlen - call addstr(sq//'stemlength{',12,soutq,lsout) - write(notexq,'(f4.1)')stemshort - call addstr(notexq(1:4)//'}',5,soutq,lsout) - else if (ip .gt. 1) then - if (btest(mult(ivx,ip-1),27)) -c -c Cancel shortening. Looks like it gets automatically restored if new inst. or -c new line, so no need to worry about affecting other lines -c - * call addstr(sq//'stemlength{4.66}',17,soutq,lsout) - end if -c -c Zero out slur-height marker for raising ornaments -c - islhgt = 0 -c -c Now start with spacing notes. Is a beam start pending? -c - if (bspend .and. - * ibm2(ivx,ibmcnt(ivx)).gt.ibm1(ivx,ibmcnt(ivx))) then - if (ixrest(ivx) .eq. 4) then -c -c Special path for single note at end of otherwise beamed xtup -c - ixrest(ivx) = 0 - else - if (kbdrests .and. btest(irest(ivx,ip),0) .and. - * .not.btest(islur(ivx,ip),29).and. nvmx(iv).eq.2 .and. - * nolev(ivx,ip).le.50) - * call chkkbdrests(ip,iv,ivx,nn,islur,irest,nolev, - * ivmx,nib,nv,ibar,tnow,tol,nodur,2,levtopr,levbotr, - * mult,ipl) - if (btest(islur(ivx,ip),29) - * .and.btest(irest(ivx,ip),24)) then - notexq = chax(92)//'sk' - lnote = 3 - else - call beamn1(notexq,lnote) -c if (isbjmp .and. - if (isbjmp .and. ivbj2.ne.0 .and. - * iand(mult(ivx,ip),15)-8 .gt. multbj1) then -c -c Need to increase multiplicity at the beam jump -c -c ibmcnt was increased by 1 at the end of first seg of jump beam!? -c Try adding e.g. \nbbu1 if needed to increase multiplicity. Add -c character in reverse order to start of notexq. -c - if (ivbj1 .lt. 9) then - notexq = char(48+ivbj1)//notexq(1:lnote) - lnote = lnote+1 - else - notexq = '{1'//char(38+ivbj1)//'}' - * //notexq(1:lnote) - lnote = lnote+4 - end if - notexq = 'bb'//ulq(ivbj1,ibmcnt(ivbj1)-1) - * //notexq(1:lnote) - lnote = lnote+3 - if (iand(15,mult(ivx,ip))-8 .eq. 3) then - notexq = 'b'//notexq(1:lnote) - lnote = lnote+1 - end if - notexq = sq//'n'//notexq(1:lnote) - lnote = lnote+2 - end if - end if - end if - bspend = .false. -c -c Is a beam ending? -c - else if (numbms(ivx).gt.0 .and. ibmcnt(ivx).le.numbms(ivx) - * .and. (ibm2(ivx,ibmcnt(ivx)).eq.ip .or. - * btest(nacc(ivx,ip),20))) then - if (bspend) then -c -c Must be a single-note ending of a jump-beam -c - bspend = .false. - end if - call beamend(notexq,lnote) - if (isbjmp .and. ivx.eq.ivbj1) then -c -c Jump beam segment is ending, check if multiplicity DECREASES -c - if (space(ib+1) .gt. space(ib)) then -c -c Decrease multiplicity 3-1, 3-2, or 2-1. Spaces are 2,4, or 8. -c - if (ivx .lt. 10) then - ivxq = char(ivx+48) - livx = 1 - else - ivxq = '{1'//char(ivx-10)//'}' - livx = 4 - end if -c Changes to get staffcrossall.pmx to work. Not clear how. -c if (nint(space(ib+1)-space(ib)) .eq. 6) then - if (space(ib+1).eq.8..and.space(ib).eq.2.) then - notexq = sq//'tbbb'//ulq(ivx,ibmcnt(ivx))// - * ivxq(1:livx)//sq//'tbb'// - * ulq(ivx,ibmcnt(ivx))//ivxq(1:livx)//notexq(1:lnote) - lnote = lnote+11+2*livx -c else if (nint(space(ib+1)-space(ib)) .eq. 4) then - else if (space(ib+1).eq.8..and.space(ib).eq.4.) then - notexq = sq//'tbb'//ulq(ivx,ibmcnt(ivx))// - * ivxq(1:livx)//notexq(1:lnote) - lnote = lnote+5+livx -c else - else if (space(ib+1).eq.4..and.space(ib).eq.2.) then - notexq = sq//'tbbb'//ulq(ivx,ibmcnt(ivx))// - * ivxq(1:livx)//notexq(1:lnote) - lnote = lnote+6+livx - end if - end if - end if - if (.not.btest(nacc(ivx,ip),20)) then - vxtup(ivx) = .false. - nornb(ivx) = 0 - ibmcnt(ivx) = ibmcnt(ivx)+1 - beamon(ivx) = .false. - end if -c -c Or if we're in the middle of a beam -c - else if (numbms(ivx).gt.0 .and. beamon(ivx)) then -c -c Added 130127 -c - if (kbdrests .and. btest(irest(ivx,ip),0) .and. - * .not.btest(islur(ivx,ip),29).and. nvmx(iv).eq.2 .and. - * nolev(ivx,ip).le.50) - * call chkkbdrests(ip,iv,ivx,nn,islur,irest,nolev, - * ivmx,nib,nv,ibar,tnow,tol,nodur,2,levtopr,levbotr, - * mult,ipl) - call beamid(notexq,lnote) -c -c Or whole-bar rest -c - else if (btest(irest(ivx,ip),0) - * .and. nodur(ivx,ip).eq.lenbar - * .and..not.(firstgulp.and.ibar.eq.1.and.lenb0.gt.0) - * .and..not.btest(irest(ivx,ip),25) - * .and..not.btest(islur(ivx,ip),29)) then -c -c Rule out pickup bar, blank rests, non-centered. Remember islur b19=> rp -c - cwrest(ivx) = .true. - iscwr = .true. - call notex(cwrq(ivx),lcwr(ivx)) - tnow = tnow+lenbar - go to 10 - else if (ixrest(ivx) .eq. 0) then -c -c Before writing note or rest, check for keyboard rest height adjustment. -c Conditions are 0. This is a non-blank rest -c 1. kbdrests = .true. -c 2. There are two voices on the staff -c 3. No user-def height adjustments have been applied (nolev<50) -c - if (kbdrests .and. btest(irest(ivx,ip),0) .and. - * .not.btest(islur(ivx,ip),29).and. nvmx(iv).eq.2 .and. - * nolev(ivx,ip).le.50) then - call chkkbdrests(ip,iv,ivx,nn,islur,irest,nolev, - * ivmx,nib,nv,ibar,tnow,tol,nodur,1,levtopr,levbotr, - * mult,ipl) - end if - if (btest(ipl(ivx,ip),4)) then -c -c Deal with single stem tremolo -c Get up-downness, borrowed from notex -c - if (udqq(nolev(ivx,ip),ncmid(iv,ip),islur(ivx,ip), - * nvmx(iv),ivx,nv).eq.'u') then - udq = 'u' - else - udq = 'l' - end if - multtrem = igetbits(ipl(ivx,ip),2,5)+1 - if (nodur(ivx,ip) .lt. 64) then - notexq = sq//'tr' - else - notexq = sq//'Tr' - end if - lnote = 3 - if (multtrem .eq. 2) then - notexq = notexq(1:3)//'r' - lnote = 4 - else if (multtrem .eq.3) then - notexq = notexq(1:3)//'rr' - lnote = 5 - end if -c -c Get a numerical pitch argument -c - lineno = nolev(ivx,ip)-ncmid(iv,ip)+4 - if (lineno .lt.0 .or. lineno .gt.9) then - write(noteq,'(a1,i2,a1)')'{',lineno,'}' - lnoten = 4 - else - noteq = char(lineno+48) - lnoten = 1 - end if - notexq = notexq(1:lnote)//'m'//udq//noteq(1:lnoten) - lnote = lnote+2+lnoten - call addstr(notexq,lnote,soutq,lsout) - end if -c -c Get code for a separate note or rest -c If nacc(ivx,ip)(30-31)=1 (dotted chordal 2nd including main note), -c pitch will be shifted +/-1 inside notex. -c - call notex(notexq,lnote) - end if -c -c Right offset? This may cause trouble -c - if (btest(ipl(ivx,ip),8)) then - call addstr(sq//'loff{',6,soutq,lsout) - else if (btest(ipl(ivx,ip),9)) then - call addstr(sq//'roff{',6,soutq,lsout) - end if - if (ixrest(ivx).eq.0 .and. lnote.gt. 0) then - call addstr(notexq,lnote,soutq,lsout) - end if - if (btest(ipl(ivx,ip),8) .or. - * btest(ipl(ivx,ip),9)) call addstr('}',1,soutq,lsout) -c -c Terminate user-defined offsets. Fix format -c - if (btest(irest(ivx,ip),15) .or. btest(irest(ivx,ip),17)) - * call putshft(ivx,.false.,soutq,lsout) -c -c Deal with After- and Way-after-graces. First, if end of bar, compute space -c needed since it wasn't done during general ask-checks. If extra space is -c rq'd, convert GW to GA. Therefore GW at end of bar never needs extra sp. -c But will still need to add extra space as hardspace. -c - if (ip.eq.nn(ivx) .and. (btest(ipl(ivx,ip),31).or. - * btest(ipl(ivx,ip),29))) then - do 77 ig = 1 , ngrace - if (ipg(ig).eq.ip .and. ivg(ig).eq.ivx) go to 78 -77 continue - print*,'Problem finding grace index at "do 77"' - call stop1() -78 continue -c -c Get elemskip to end of bar. WON'T WORK IF XTUPS !! -c - esk = 0. - do 40 iib = ib , nb - if (iib .eq. ib) then - itleft = nint(to(ipl2(ivx,ip))) - else - itleft = nint(tstart(ib)) - end if - if (iib .lt. nb) then - itright = nint(tstart(iib+1)) - else - itright = lenbar - end if - esk = esk+feon(space(ib))* - * (itright-itleft)/space(ib) -40 continue - ptsavail = poenom*esk-wheadpt - if (nng(ig) .eq. 1) then - wgr = grafac - else - wgr = nng(ig)*emgfac - do 41 ing = 1 , nng(ig) - if (naccg(ngstrt(ig)-1+ing) .gt. 0) wgr = wgr+acgfac -41 continue - end if - ptgr(ig) = wgr*wheadpt - ptsneed = (wgr+0.5)*wheadpt - ptsndg(ivx) = 0. - if (ptsavail .lt. ptsneed) then - ptsndg(ivx) = ptsneed - eskndg(ivx) = esk - if (btest(ipl(ivx,ip),31)) then -c -c Convert GW to GA -c - ipl(ivx,ip) = ibset(ibclr(ipl(ivx,ip),31),29) - end if - end if - end if -c -c Check for GA -c - if (btest(ipl(ivx,ip),29)) - * call dograce(ivx,ip,ptgr,soutq,lsout,ncmid(iv,ip), - * nacc(ivx,ip),ig,ipl(ivx,ip),.false., -c 130324 -c * .false.,0,0,0,0,0,0,0.,ulq) - * .false.,0,0,0,0,0,0,0.,ulq,instno(iv)) -c -c Update running time -c - tnow = tnow+space(ib) -10 continue -c -c Have finished last note in this voice and block -c - itendb = nint(to(istop(ib))+space(ib)) - if (figbass .and. ivx.eq.1 .or. ivx.eq.ivxfig2) then - ivf = 1 - if (ivx .gt. 1) ivf = 2 -17 if (figchk(ivf) .and. itfig(ivf,ifig(ivf)).lt.itendb) then -c -c There's at least one figure left. offnsk could be <0 -c - offnsk = (tnow-itfig(ivf,ifig(ivf)))/space(ib) - call putfig(ivf,ifig(ivf),offnsk,figchk(ivf),soutq,lsout) - go to 17 - end if - end if -c -c Check for flag, dot, or upstem on last note of bar. -c - if (ib .eq. nb) then - ip = ipo(ipl2(ivx,nn(ivx))) - flgndv(ivx) = 0. - if (abs(tnote(ipl2(ivx,ip))-space(ib)).lt.tol) then - if (space(ib) .lt. 16.-tol) then -c -c Note in last space, smaller than a quarter note. -c - if ((.not.btest(irest(ivx,ip),0) .and. - * udqq(nolev(ivx,ip),ncmid(iv,ip),islur(ivx,ip), - * nvmx(iv),ivx,nv).eq.'u') - * .or. isdotted(nodur,ivx,ip)) then -c -c Upstem non-rest, or dotted -c - if (numbms(ivx).gt.0 - * .and. ip.eq.ibm2(ivx,max(1,numbms(ivx))) - * .and. .not.isdotted(nodur,ivx,ip)) - * then -c -c In beam and not dotted, so use smaller space -c - flgndv(ivx) = upstmfac - else - flgndv(ivx) = flagfac - end if - end if - else -c -c Last space, nonflagged (no beam) only worry dot or up -c - if (isdotted(nodur,ivx,ip)) then - flgndv(ivx) = flagfac - else if (tnote(ipl2(ivx,ip)).lt.64 .and. - * udqq(nolev(ivx,ip),ncmid(iv,ip),islur(ivx,ip), - * nvmx(iv),ivx,nv).eq.'u') then -c -c Upstem on last note , non-flagged -c - flgndv(ivx) = upstmfac - end if - end if - end if -c -c Check for right-shifted chordal note -c - if (btest(irest(ivx,ip),20)) flgndv(ivx) = rtshfac - flgndb = flgndb .or. flgndv(ivx).gt.0. - if (ismidi) then -c -c For midi, set flags for accidentals on last note of bar. Assume they affect -c first note of next bar whether or not tied. -c Note has already been done, so next entry into addmidi is 1st in new bar. -c First do main note, then chord notes -c -c Gyrations needed to account for multi-bar tied full-bar notes? -cc Old old lbacc(icm) = iand(nacc(ivx,ip),7) -c New old if (lbacc(icm).eq.0) lbacc(icm) = iand(nacc(ivx,ip),7) -c - if (iand(nacc(ivx,ip),7) .gt. 0) then -c -c Explicit accidental on last main note in bar -c - do 55 kacc = 1 , naccbl(icm) - if (laccbl(icm,kacc) .eq. nolev(ivx,ip)) go to 56 -55 continue - naccbl(icm) = naccbl(icm)+1 - laccbl(icm,naccbl(icm)) = nolev(ivx,ip) - jaccbl(icm,naccbl(icm)) = iashft(iand(nacc(ivx,ip),7)) - end if -56 continue - if (btest(ipl(ivx,ip),10) .and. crdacc) then - do 57 icrd = icrd1 , icrd2 - iacc = igetbits(icrdat(icrd),3,20) - if (iacc .gt. 0) then -c -c Explicit accidental on chord note at end of bar -c - nolevc = igetbits(icrdat(icrd),7,12) - do 58 kacc = 1 , naccbl(icm) - if (laccbl(icm,kacc) .eq. nolevc) go to 59 -58 continue - naccbl(icm) = naccbl(icm)+1 - laccbl(icm,naccbl(icm)) = nolevc - jaccbl(icm,naccbl(icm)) = iashft(iacc) - end if -59 continue -57 continue - end if -c if (lbacc(icm).eq.0 .and. accb4(icm)) then - do 65 kacc = 1 , naccim(icm) -c -c If naccim(icm)>0, -c possible implicit accidental from earlier in the bar. Check for prior accid -c in this bar at relevant note levels, main and chord notes. Only act if no -c explicit action from just above. Assuming any accid on last note in bar, -c either explicit or implicit, has same effect on 1st note of next bar. -c - if (nolev(ivx,ip) .eq. laccim(icm,kacc)) go to 66 - if (btest(ipl(ivx,ip),10)) then - do 67 icrd = icrd1 , icrd2 - if (iand(ishft(icrdat(icrd),-12),127) .eq. - * laccim(icm,kacc)) go to 66 -67 continue - end if - go to 65 -66 continue -c -c So far we know there is a main or chord note at level laccim(icm,kacc). So -c it will get a bl-accid if it didn't just already get one. -c - do 68 macc = 1 , naccbl(icm) - if (laccbl(icm,macc) .eq. laccim(icm,kacc)) go to 65 -68 continue - naccbl(icm) = naccbl(icm)+1 - laccbl(icm,naccbl(icm)) = laccim(icm,kacc) - jaccbl(icm,naccbl(icm)) = jaccim(icm,kacc) -65 continue - end if - end if -11 continue -c -c Close out the notes group -c - call addstr(sq//'en',3,soutq,lsout) - if (islast.and.lsout .gt. 0) write(11,'(a)')soutq(1:lsout)//'%' -16 continue -c -c Check for way-after graces at end of bar. We could not link these to notes -c as in midbar since there is no note following grace! Also, set flag if -c hardspace is needed. Also, save nvmx, ivmx for use in space checks on reloop. -c - isgrace = .false. - do 75 iv = 1 , nv - nvmxsav(iv) = nvmx(iv) - do 75 kv = 1 , nvmx(iv) - ivmxsav(iv,kv) = ivmx(iv,kv) - ivx = ivmx(iv,kv) - ptsgnd = 0. - if ((btest(ipl(ivx,nn(ivx)),29).or.btest(ipl(ivx,nn(ivx)),31)) - * .and. ptsndg(ivx).gt.0.) then - flgndb = .true. - if (ptsndg(ivx) .gt. ptsgnd) then - ptsgnd = ptsndg(ivx) - eskgnd = eskndg(ivx) - end if - end if - if (btest(ipl(ivx,nn(ivx)),31)) then -c -c This voice has a way-after grace here at end of bar -c - if (.not.isgrace) then -c -c This is the first one, so set up the string -c - isgrace = .true. - ivlast = 1 - soutq = sq//'znotes' - lsout = 7 - end if - do 76 iiv = ivlast , iv-1 - call addstr(sepsymq(iiv),1,soutq,lsout) -76 continue - ivlast = iv -c -c No need to put in 'nextvoice', even if 2 lines/staff -c - call dograce(ivx,nn(ivx),ptgr,soutq,lsout,ncmid(iv,nn(ivx)), - * nacc(ivx,nn(ivx)),ig,ipl(ivx,nn(ivx)),.true., -c 130324 -c * .false.,0,0,0,0,0,0,0.,ulq) - * .false.,0,0,0,0,0,0,0.,ulq,instno(iv)) - end if -75 continue - if (isgrace) then - call addstr(sq//'en%',4,soutq,lsout) - if (islast .and. lsout .gt. 0) write(11,'(a)')soutq(1:lsout) - end if - lsout = 0 -c -c Write multibar rest. Assuming nv = 1 and do not worry about cwbrest -c This has to be the only use of atnextbar -c - if (ibar.eq.ibarmbr .and. islast) then - if (newmbrhgt) then - soutq = sq//'def'//sq//'mbrhgt{' - if (mbrhgt .le. -10) then - write(soutq(13:15),'(i3)')mbrhgt - lsout = 15 - else if (mbrhgt.ge.10.or.mbrhgt.le.-1) then - write(soutq(13:14),'(i2)')mbrhgt - lsout = 14 - else - soutq = soutq(1:12)//char(48+mbrhgt) - lsout = 13 - end if - soutq = soutq(1:lsout)//'}%' - write(11,'(a)')soutq(1:lsout+2) - newmbrhgt = .false. - end if - soutq = sq//'def'//sq//'atnextbar{'//sq//'znotes' - lsout = 22 - notexq = sq//'mbrest' - lnote = 7 - call istring(mbrest,noteq,len) - notexq = notexq(1:lnote)//noteq(1:len) - lnote = lnote+len - mtrspc = nint(xb4mbr) - xb4mbr = 0. - call istring(mtrspc,noteq,len) - notexq = notexq(1:lnote)//noteq(1:len)//'0' - lnote = lnote+len+1 - do 62 iv = 1 , nv - call addstr(notexq,lnote,soutq,lsout) - if (iv .lt. nv) call addstr(sepsymq(iv),1,soutq,lsout) -62 continue - call addstr(sq//'en}%',5,soutq,lsout) - write(11,'(a)')soutq(1:lsout) - lsout = 0 - if (ishort .gt. 0) then - mbrsum = mbrsum+mbrest - nmbr = nmbr+1 - end if - if (mbrest .gt. 1) then - ndig = int(alog10(mbrest-1+.01))+1 - write(11,'(a14,i'//chax(48+ndig)//',a1)') - * sq//'advance'//sq//'barno',mbrest-1,'%' - end if - else if (iscwr) then -c -c Centered whole-bar rests. Set flag to pass to pmxb at start of NEXT bar -c to check for new clef and add space by redefining \CenterBar -c - centrests = .true. - call addstr(sq//'def'//sq//'value{0}',13,soutq,lsout) - call addstr(sq//'def'//sq//'atnextbar{'//sq//'znotes',22, - * soutq,lsout) - do 60 iv = 1 , nv -c added - lnote = 0 -c - do 61 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - if (cwrest(ivx)) then - call addstr(sq//'CenterBar{',11,soutq,lsout) - if (.not.cwrferm(ivx)) then - if (lcwr(ivx).ge.11 .and. cwrq(ivx)(11:11).ne.'p') then -c -c Kluge to use new definitions for centered, stacked rests -c - if (cwrq(ivx)(2:10).eq.'liftpause' .or. - * cwrq(ivx)(2:10).eq.'liftPAuse') - * cwrq(ivx)(10:10) = 'c' - end if - call addstr(cwrq(ivx)(1:lcwr(ivx)),lcwr(ivx),soutq, - * lsout) - call addstr('}{-2}{'//sq//'value}',13,soutq,lsout) - else -c -c Fermata on centered rest. Will need to fix up level. -c 12/6/07 shift it left so it's centered over rest -c - notexq = notexq(1:lnote)//sq//'loffset{.33}{' - * //sq//'fermataup7}'//cwrq(ivx)(1:lcwr(ivx)) - * //'}{-2}{'//sq//'value}' - lnote = lnote+26+lcwr(ivx)+13 - call addstr(notexq,lnote,soutq,lsout) - cwrferm(ivx) = .false. - end if - end if -61 continue - if (iv .ne. nv) call addstr(sepsymq(iv),1,soutq,lsout) -60 continue - if (islast) then - call addstr(sq//'en}%',5,soutq,lsout) - if (lsout.gt.0)write(11,'(a)')soutq(1:lsout) - end if - end if -c -c End of block for centered whole-bar rests and multi-bar rests -c -c If at end of block, save durations of last notes in bar, for possible use -c if clef changes at start of next bar -c - if (ibar .eq. nbars) then - do 63 iv = 1 , nv - do 63 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - prevtn(ivx) = tnote(ipl2(ivx,nn(ivx))) -63 continue - end if -c -c Update time for midi. This is only used for the event track -c - if (ismidi) then - miditime = miditime+15*lenbar -c -c If pickup, write the real time signature to the event track. Cannot use -c mtrnuml since it was reset to 0, have to recompute it -c - if (lenb0 .eq. lenbar) - * call midievent('m',mtrdenl*lenb1/64,mtrdenl) - end if - return - end - subroutine makeabar() -c -c On input, have pseudo-durations in nodur(ivx,ip). Not real durations for -c xtups, since only last note of xtup gets non-zero nodur, which -c corresponds to single note of full length of xtup. -c In this subroutine we make an ordered list of all notes in all voices. -c ilnc = list note counter -c ivxo(ilnc), ipo(ilnc) = voice# and position in voice of ilnc-th note. -c to(ilnc) = real start time of note in PMX-units (64=whole note) -c tno(ilnc) = time to next event in the bar. -c tnote(ilnc) = actual duration of note -c Then run thru list, grouping consecutive notes into \notes groups ib. -c space(ib) = real time unit for the \notes group -c squez(ib) = factor on space to get effective space. This will be 1 if -c there is a note exactly spanning each interval of space, and -c <1 if not. -c Details: let eon = elemskips per noteskip (like length). Basic formula is -c eon = sqrt(space/2.) -c If tgovern >= space, then -c eon = sqrt(tgovern/2)*(space/tgovern) = space/sqrt(2*tgovern). -c Time needed to give this eon using basic formula is -c teq = space**2/tgovern -c Factor on space to get teq is -c squez(ib) = space/tgovern -c The eon for each ib can then be computed based on time of space*squez. -c Iff squez = 1, there is a note spanning every increment in the \notes group. -c -c tnminb = minimum time span in the bar for increments spanned by notes, -c i.e., with squez=1. Use after parsing into line to decide if -c spacing needs to be "flattened" among notes groups. -c - common /comtol/ tol - parameter (nm=24,nkb=3999,maxblks=9600) - common /a1ll/ iv,ivxo(600),ipo(600),to(600),tno(600),nnl(nm), - * nv,ibar,mtrnuml,nodur(nm,200),lenbar,iccount, - * nbars,itsofar(nm),nib(nm,15),nn(nm), - * rest(nm,200),lenbr0,lenbr1,firstline,newmeter - common /linecom/ elskb,tnminb(nkb) - common /c1omnotes/ nnodur,wminnh(nkb),nnpd(maxblks),durb(maxblks), - * iddot,nptr(nkb),ibarcnt,mbrest,ibarmbr, -c * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) - * ibaroff,udsp(nkb),wheadpt,sqzb(maxblks) - common /c1ommvl/ nvmx(nm),ivmx(nm,2),ivx,fbar,nacc(nm,200) -c logical rest,firstline,newmeter,gotclef - logical rest,firstline,newmeter - integer cnn(nm),istart(80),istop(80) - real*4 xit(nm),space(80),tstart(80),squez(80),tnote(600) - elskb = 0. - tnminb(ibarcnt) = 1000. - do 1 iv = 1 , nv - do 1 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - if (ibar .gt. 1) then - nn(ivx) = nib(ivx,ibar)-nib(ivx,ibar-1) - else - nn(ivx) = nib(ivx,ibar) - end if -1 continue -c -c initialize list note counter, time(iv), curr. note(iv) -c - ilnc = 1 - do 4 iv = 1 , nv - do 4 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - cnn(ivx) = 1 - ivxo(ilnc) = ivx - ipo(ilnc) = 1 - to(ilnc) = 0. - tnote(ilnc) = fnote(nodur,ivx,1,nacc) - xit(ivx) = tnote(ilnc) - if (abs(xit(ivx)-lenbar).lt.tol) xit(ivx) = 1000. - ilnc = ilnc+1 -4 continue -c -c Build the list -c -5 continue -c -c Determine which voice comes next from end of notes done so far. -c tmin is the earliest ending time of notes done so far -c - tmin = 1000. - do 6 iv = 1 , nv - do 6 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - tminn = min(tmin,xit(ivx)) - if(tminn .lt. tmin) then - tmin = tminn - ivnext = ivx - end if -6 continue - if (tmin .gt. 999.) go to 7 - ivxo(ilnc) = ivnext - cnn(ivnext) = cnn(ivnext)+1 - ipo(ilnc) = cnn(ivnext) - to(ilnc) = tmin -c -c Check if this voice is done -c - tnote(ilnc) = fnote(nodur,ivnext,cnn(ivnext),nacc) - if (cnn(ivnext) .eq. nn(ivnext)) then - xit(ivnext) = 1000. - else - xit(ivnext) = xit(ivnext)+tnote(ilnc) - end if - ilnc = ilnc+1 - go to 5 -7 continue - ntot = ilnc-1 - if (ntot .gt. 600) then - call printl(' ') - call printl('Cannot have more than 600 notes per bar, stopping') - call stop1() - end if - do 8 in = 1 , ntot-1 - tno(in) = to(in+1)-to(in) -8 continue - tno(ntot) = fnote(nodur,ivxo(ntot),ipo(ntot),nacc) - tnote(ntot) = tno(ntot) -c -c Debug writes -c -c write(*,'()') -c write(*,'(16i5)')(ivxo(in),in=1,ntot) -c write(*,'(16i5)')(ipo(in),in=1,ntot) -c write(*,'(16f5.1)')(to(in),in=1,ntot) -c write(*,'(16f5.1)')(tno(in),in=1,ntot) -c write(*,'(16i5)')(nodur(ivxo(in),ipo(in)),in=1,ntot) -c write(*,'(16f5.1)')(tnote(in),in=1,ntot) -c -c Done w/ list. Initialize loop for building note blocks: -c - ib = 1 - istart(1) = 1 - space(1) = 0. - in = 1 -c -c Start the loop -c -9 continue - if (in .eq. ntot) then - if (space(ib) .lt. tol) then - space(ib) = tno(in) -c -c Last gap in bar is spanned by a note, so cannot need a squeeze. -c - squez(ib) = 1. - end if - istop(ib) = ntot -c -c From here flow out of this if block and into block-setup -c - else if (space(ib) .lt. tol) then -c -c space hasn't been set yet, so tentatively set: -c - space(ib) = tno(in) - if (space(ib) .lt. tol) then - in=in+1 - else -c -c Tentative space tno(in) is non-zero. Set squez, which will be kept (since -c it is a unique property of the particular increment starting here) : -c - squez(ib) = getsquez(in,ntot,space(ib),tnote,to) - istop(ib) = in - end if - go to 9 - else if (tno(in+1) .lt. tol) then -c -c This is not the last note in the space, so -c - in = in+1 - go to 9 - else if (abs(tno(in+1)-space(ib)) .lt. tol) then -c -c Next increment has same space. Does it have same squez? -c - xsquez = getsquez(in+1,ntot,space(ib),tnote,to) -c -c If it does have the same squez, loop, otherwise flow out -c - if (abs(xsquez-squez(ib)) .lt. tol) then -c -c Keep spacing the same, update tentative stop point -c - in = in+1 - istop(ib) = in - go to 9 - end if - end if -c -c At this point istart, istop, space, and squez are good, so close out block -c - tstart(ib) = to(istart(ib)) -c -c Compute elemskips assuming no flattening to increase min space. The formula -c is only correct if f1eon(t) = sqrt(t/2); more generally (after possible -c flattening in pmxb), elsperns = squez*feon(space/squez) -c - elsperns = f1eon(space(ib)*squez(ib)) - if (istop(ib) .eq. ntot) then - nnsk = nint((lenbar-tstart(ib))/space(ib)) - else - nnsk = nint((to(istop(ib)+1)-tstart(ib))/space(ib)) - end if - elskb = elskb+elsperns*nnsk - if (nptr(ibarcnt+1) .gt. nptr(ibarcnt)) then - call catspace(space(ib),squez(ib),nnsk) - else -c -c This is the first entry for this bar -c - nnpd(nptr(ibarcnt)) = nnsk - durb(nptr(ibarcnt)) = space(ib) - sqzb(nptr(ibarcnt)) = squez(ib) - nptr(ibarcnt+1) = nptr(ibarcnt+1)+1 - end if -c -c Update minimum space spanned by a note -c - if (abs(squez(ib)-1) .lt. tol) - * tnminb(ibarcnt) = min(tnminb(ibarcnt),space(ib)) - if (istop(ib) .eq. ntot) go to 15 -c -c End of spatial accounting for now -c - ib = ib+1 - istart(ib) = istop(ib-1)+1 - in = istart(ib) -c -c Set tentative block space for new block -c - space(ib) = tno(in) - if (space(ib).gt.tol) - * squez(ib)= getsquez(in,ntot,space(ib),tnote,to) - istop(ib) = in - go to 9 -15 continue -c nb = ib -c -c Debug writes -c -c write(*,'(16i5)')(istart(ib),ib=1,nb) -c write(*,'(16i5)')(istop(ib),ib=1,nb) -c write(*,'(16f5.1)')(space(ib),ib=1,nb) -c write(*,'(16f5.1)')(squez(ib),ib=1,nb) -c - return - end - subroutine midievent(typeq,in1,in2) -c -c We now store "conductor" events in mmidi(numchan,.), and count bytes -c with imidi(numchan) -c - parameter (nm=24,mv=24576) - integer*2 mmidi - logical restpend,relacc,notmain,twoline,ismidi,crdacc - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - common /comevent/ miditime,lasttime - character*1 typeq - idur = isetvarlen(miditime-lasttime,nbytes) - imidi(numchan) = imidi(numchan)+nbytes+1 - do 1 i = 1 , nbytes - mmidi(numchan,imidi(numchan)-i) = mod(idur,256) - idur = ishft(idur,-8) -1 continue - mmidi(numchan,imidi(numchan)) = 255 - if (typeq .eq. 't') then -c -c Tempo event. in1 = quarters per minute (integer) -c - mmidi(numchan,imidi(numchan)+1) = 5*16+1 - mmidi(numchan,imidi(numchan)+2) = 3 - misperq = nint(60000000./in1) - do 2 i = 1 , 3 - mmidi(numchan,imidi(numchan)+6-i) = mod(misperq,256) - misperq = ishft(misperq,-8) -2 continue - imidi(numchan) = imidi(numchan)+5 - else if (typeq .eq. 'm') then -c -c Meter event. in1=numerator, in2=denom (power of 2) -c - mmidi(numchan,imidi(numchan)+1) = 5*16+8 - mmidi(numchan,imidi(numchan)+2) = 4 - mmidi(numchan,imidi(numchan)+3) = in1 - if (in2 .gt. 0) then - mmidi(numchan,imidi(numchan)+4) = log2(in2) - else - mmidi(numchan,imidi(numchan)+4) = 0 - end if - mmidi(numchan,imidi(numchan)+5) = 24 - mmidi(numchan,imidi(numchan)+6) = 8 - imidi(numchan) = imidi(numchan)+6 - else if (typeq .eq. 'k') then -c -c Keychange event. in1 = isig -c - mmidi(numchan,imidi(numchan)+1) = 5*16+9 - mmidi(numchan,imidi(numchan)+2) = 2 - mmidi(numchan,imidi(numchan)+3) = mod(256+in1,256) - mmidi(numchan,imidi(numchan)+4) = 0 - imidi(numchan) = imidi(numchan)+4 - else - print*,'Program flameout in midievent' - call stop1() - end if - lasttime = miditime - return - end - subroutine moveln(iuin,iuout,done) - logical done - character*129 outq - done = .false. - read(iuin,'(a)',end=1) outq - lenout = llen(outq,129) - write(iuout,'(a)') outq(1:lenout) - return -1 done = .true. - return - end - subroutine mrec1(lineq,iccount,ndxm) -c -c This is called when (a) macro recording is just starting and -c (b) at the start of a new line, if recording is on -c - parameter (maxblks=9600) - character*128 lineq,lnholdq - common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac - logical mrecord,mplay,endmac - common /c1ommac/ ip1mac(20),il1mac(20),ip2mac(20),il2mac(20), - * ic1mac(20),ilmac,iplmac - character*131072 bufq - integer*2 lbuf(maxblks) - common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq - if (.not.mrecord) then -c -c Starting the macro -c - ip1mac(macnum) = ipbuf-lbuf(ilbuf-1)+iccount - il1mac(macnum) = ilbuf-1 - ic1mac(macnum) = iccount - mrecord = .true. - end if - if (iccount .lt. 128) then - ndxm = index(lineq(iccount+1:128),'M') - if (ndxm .gt. 0) ndxm = ntindex(lineq(iccount+1:128),'M', - * 128-iccount) - if (ndxm .gt. 0) then -c -c This line ends the macro. -c - ip2mac(macnum) = ipbuf-lbuf(ilbuf-1)+iccount+ndxm - il2mac(macnum) = ilbuf-1 - mrecord = .false. - end if - end if - return - end - function ncmid(iv,ip) - parameter (nm=24) - common /all/ mult(nm,200),jv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - common /comipl2/ ipl2(nm,200) - character*1 ulq,sepsymq,sq - logical beamon,firstgulp,figbass,figchk,isfig - common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), - * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /comtol/ tol - if (ncc(iv) .eq. 1) then - ncmid = ncmidcc(iv,1) - else - xtime = to(ipl2(ivx,ip)) - do 1 icc = ncc(iv) , 1 , -1 - if (xtime .gt. tcc(iv,icc)-tol) then - ncmid = ncmidcc(iv,icc) - return - end if -1 continue - print*,'Problem in ncmid()' - stop - end if - end - function ncmidf(clefq) -c -c Return middle line of a clef -c - character*1 clefq - if (clefq .eq. '8') then -c -c treblelowoct; will treat as treble for this purpose -c - ncmidf = 35 - else - ncmidf = 21+index(' b6r5n4a3m2s1t0f7',clefq)/2*2 - end if - return - end - subroutine newvoice(jv,clefq,change) - parameter (nm=24) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - character*1 ulq,sepsymq,sq - logical beamon,firstgulp,figbass,figchk,isfig - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, - * tautofb,autofbon,t1autofb - character*1 ulfbq,clefq - common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), - * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) - common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) - logical change,autofbon - nvmx(jv) = 1 - ivmx(jv,1) = jv - itsofar(jv) = 0 - nnl(jv) = 0 - nfb(jv) = 0 - if (firstgulp .or. change) then - ncmidcc(jv,1) = ncmidf(clefq) - else - ncmidcc(jv,1) = ncmidcc(jv,ncc(jv)) - end if - tcc(jv,1) = 0. - ncc(jv) = 1 - nudoff(jv) = 0 - ndotmv(jv) = 0 - do 5 j = 1 , 200 - irest(jv,j) = 0 - islur(jv,j) = 0 - ipl(jv,j) = 0 - nacc(jv,j) = 0 - iornq(jv,j) = 0 - mult(jv,j) = 0 - if (jv.le.2) isfig(jv,j) = .false. -5 continue - return - end - subroutine notefq(noteq,lnote,nolev,ncmid) -c -c Returns name of note level with octave transpositions, updates noctup. -c - common /comoct/ noctup - character*8 noteq - character*1 upcaseq,noteqt,chax - nupfroma = mod(nolev+1,7) - iname = 97+nupfroma - ioctup = (nolev+1)/7-4 - noteqt = chax(iname) - if (ncmid .eq. 23) noteqt = upcaseq(noteqt) - if (ioctup .eq. noctup) then - noteq = noteqt - lnote = 1 -c -c Must ALWAYS check if lnote=1 for use with functions requiring a blank -c - else if (ioctup .gt. noctup) then -c -c Raise octave. Encase in {} -c - write(noteq,'(8a1)')'{',(chax(39),i=noctup,ioctup-1), - * noteqt,'}' - lnote = 3+ioctup-noctup - noctup = ioctup - else -c -c Lower octave -c - write(noteq,'(8a1)')'{',(chax(96),i=ioctup,noctup-1), - * noteqt,'}' - lnote = 3+noctup-ioctup - noctup = ioctup - end if - return - end - subroutine notex(notexq,lnote) -c -c Returns non-beamed full note name -c - parameter (nm=24) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - character*1 ulq,sepsymq,sq - logical beamon,firstgulp,figbass,figchk, - * isfig,ispoi,btest,even - character*1 udq,udqq,chax - character*4 dotq - character*2 numq - character*79 notexq - character*8 noteq - character*40 restq - common /compoi/ ispoi - common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), - * fullsize(nm),ivxfig2,ivvfig(2,74) - character*10 figq - ip = ipo(jn) - nole = nolev(ivx,ip) -c -c Check for special situations with 2nds (see precrd) -c - if (btest(nacc(ivx,ip),30)) then - nole = nole - 1 - else if (btest(nacc(ivx,ip),31)) then - nole = nole + 1 - end if - nodu = nodur(ivx,ip) - if (.not.btest(irest(ivx,ip),0)) then - udq = udqq(nole,ncmid(iv,ip), - * islur(ivx,ip),nvmx(iv),ivx,nv) - end if -c -c Check figure level -c -c if (figbass .and. isfig(ivx,ip) -c * .and. .not.btest(irest(ivx,ip),0)) then - if (figbass .and. .not.btest(irest(ivx,ip),0) .and. - * ((ivx.eq.1.and.isfig(1,ip)) - * .or.(ivx.eq.ivxfig2.and.isfig(2,ip)))) then - if (udq .eq. 'u' .or. nodu.ge.64) then -c -c Upper or no stem, fnole (in noleunits) set by notehead -c - fnole = nole - else -c -c Lower stem, fnole set by bottom of stem -c - fnole = nole-stemlen - end if - zmin = fnole-ncmid(ivx,ip)+4 - if (ivx .eq. 1) then - ifigdr(1,iline) = max(ifigdr(1,iline),nint(4-zmin)) - else - ifigdr(2,iline) = max(ifigdr(2,iline),nint(4-zmin)) - end if - end if - if (.not.btest(irest(ivx,ip),0)) then - call notefq(noteq,lnoten,nole,ncmid(iv,ip)) - if (lnoten .eq. 1) call addblank(noteq,lnoten) - if (nodu .eq. 1) then - notexq =sq//'cccc'//udq//noteq(1:lnoten) - lnote = lnoten+6 - else if (nodu .eq. 2) then - notexq =sq//'ccc'//udq//noteq(1:lnoten) - lnote = lnoten+5 - else if (nodu .eq. 4) then - notexq =sq//'cc'//udq//noteq(1:lnoten) - lnote = lnoten+4 - else if (nodu .eq. 8) then - notexq =sq//'c'//udq//noteq(1:lnoten) - lnote = lnoten+3 - else if (nodu .eq. 16) then - notexq =sq//'q'//udq//noteq(1:lnoten) - lnote = lnoten+3 - else if (nodu .eq. 32) then - notexq =sq//'h'//udq//noteq(1:lnoten) - lnote = lnoten+3 - else if (nodu .eq. 64) then - notexq =sq//'wh'//noteq(1:lnoten) - lnote = lnoten+3 - else if (nodu .eq. 128) then -c notexq =sq//'zbreve'//noteq(1:lnoten)//sq//'sk' -c lnote = lnoten+10 - notexq =sq//'breve'//noteq(1:lnoten) - lnote = lnoten+6 - else - dotq = 'p' - ldot = 1 - if (btest(iornq(ivx,ip),13)) then -c -c Dotted note with ')' ornament -c - dotq='m' - else if (btest(islur(ivx,ip),3)) then -c -c Double dot -c - dotq = 'pp' - ldot = 2 - end if - if (nodu .ge. 192) then - notexq =sq//'breve'//dotq(1:ldot)//noteq(1:lnoten) - lnote = lnoten+6+ldot - else if (nodu .ge. 96) then - notexq =sq//'wh'//dotq(1:ldot)//noteq(1:lnoten) - lnote = lnoten+3+ldot - else if (nodu .ge. 48) then - notexq =sq//'h'//udq//dotq(1:ldot)//noteq(1:lnoten) - lnote = lnoten+3+ldot - else if (nodu .ge. 24) then - notexq =sq//'q'//udq//dotq(1:ldot)//noteq(1:lnoten) - lnote = lnoten+3+ldot - else if (nodu .ge. 12) then - notexq =sq//'c'//udq//dotq(1:ldot)//noteq(1:lnoten) - lnote = lnoten+3+ldot - else if (nodu .ge. 6) then - notexq =sq//'cc'//udq//dotq(1:ldot)//noteq(1:lnoten) - lnote = lnoten+4+ldot - ispoi = .true. - else - notexq =sq//'ccc'//udq//dotq(1:ldot)//noteq(1:lnoten) - lnote = lnoten+5+ldot - ispoi = .true. - end if - if (dotq(1:1) .eq. 'm') then -c -c Need another call to the note, in case the first one has octave shifts -c - if (lnoten .eq. 2) then - notexq = notexq(1:lnote)//'{'//noteq(2:2)//'}' - lnote = lnote+3 - else - notexq = notexq(1:lnote)//noteq(lnoten-1:lnoten-1) - lnote = lnote+1 - end if - end if - end if - else if (btest(islur(ivx,ip),29)) then -c -c Blank rest -c - notexq = sq//'sk' - lnote = 3 - else -c -c Non-blank rest -c - lnote = 0 - nole = mod(nole+20,100)-20 -c -c Kluge to get pause symbol for rp: -c - if (btest(islur(ivx,ip),19)) nodu = 64 - if (nodu .le. 28) then -c -c Normal rest < or = double-dotted quarter -c - lrest = 3 - if (nodu .gt. 14) then - restq =sq//'qp' - else if (nodu .gt. 7) then - restq =sq//'ds' - else if (nodu .gt. 3) then - restq =sq//'qs' - else if (nodu .gt. 1) then - restq =sq//'hs' - else - restq =sq//'qqs' - lrest = 4 - end if -c -c Special case for rest at start of F-tuplet inside a forced beam -c - if (btest(nacc(ivx,ip),18) .and. - * btest(nacc(ivx,ip),19)) then - restq = sq//'pt4'//restq(1:lrest) - lrest = lrest+4 - end if - notexq = restq - lnote = lrest -c -c At this point notexq=restq,lnote=lrest are name of rest. Now raise if necc. -c - if (nole .ne. 0) then - if (abs(nole) .lt. 10) then - noteq = chax(48+abs(nole)) - lnoten = 1 - else - write(noteq(1:2),'(i2)')abs(nole) - lnoten = 2 - end if - if (nole .gt. 0) then - notexq = sq//'raise'//noteq(1:lnoten)//sq//'internote' - else - notexq = sq//'lower'//noteq(1:lnoten)//sq//'internote' - end if - lnote = 16+lnoten - notexq = notexq(1:lnote)//restq(1:lrest) - lnote = lnote+lrest - end if - if (2**log2(nodu) .ne. nodu) then -c -c Deal with dots (on rests shorter than half rest) -c - restq = sq//'pt' - lrest = 3 - if (2*nodu .gt. 3*2**log2(nodu)) then - restq = sq//'ppt' - lrest = 4 - end if - nole = nole+4 - raisedot = 0 -c -c Tweak dot positions for special cases -c - even = (mod(100+nole,2).eq.0) -c if (.not.even.and.nodu.gt.8.and. -c * (nole.lt.0.or.nole.gt.8)) then - if (.not.even .and. (nole.lt.0.or.nole.gt.8)) then - raisedot = 1 - end if - if (nole.ge.10 .or. nole.le.-1) then - write(numq,'(i2)')nole - restq = restq(1:lrest)//'{'//numq//'}' - lrest = lrest+4 - else - restq = restq(1:lrest)//chax(nole+48) - lrest = lrest+1 - end if - if (raisedot.gt.0) then - restq = sq//'raise'//sq//'internote'// - * sq//'hbox{'//restq(1:lrest)//'}' - lrest = lrest+23 - end if - notexq = restq(1:lrest)//notexq(1:lnote) - lnote = lnote+lrest - end if - else -c -c Half rest or longer -c - if (nole .eq. 0) then -c -c Half or longer rest is not raised or lowered -c - if (nodu .le. 56) then - notexq =sq//'hpause' - lnote = 7 - else if (nodu .le. 112) then - if (.not.btest(islur(ivx,ip),19) .or. - * btest(irest(ivx,ip),25)) then - notexq = sq//'pause' - else - notexq = sq//'pausc' - end if - lnote = 6 - else - notexq =sq//'PAuse' - lnote = 6 - end if - if (2**log2(nodu) .ne. nodu) then -c -c Dotted rest, hpause or longer -c - notexq = notexq(1:lnote)//'p' - lnote = lnote+1 - if (2*nodu .gt. 3*2**log2(nodu)) then -c -c Double dotted long rest -c - notexq = notexq(1:lnote)//'p' - lnote = lnote+1 - end if - end if - else -c -c Raised or lowered half or whole rest -c - if (nodu .eq. 32) then - notexq = sq//'lifthpause' - lnote = 11 - else if (nodu .eq. 48) then - notexq = sq//'lifthpausep' - lnote = 12 - else if (nodu .eq. 56) then - notexq = sq//'lifthpausepp' - lnote = 13 - else if (nodu .eq. 64) then - notexq = sq//'liftpause' - lnote = 10 - else if (nodu .eq. 96) then - notexq = sq//'liftpausep' - lnote = 11 - else if (nodu .eq. 112) then - notexq = sq//'liftpausepp' - lnote = 12 - else if (nodu .eq. 128) then - notexq = sq//'liftPAuse' - lnote = 10 - else -c -c Assume dotted double whole rest -c - notexq = sq//'liftPAusep' - lnote = 11 - end if -c -c Set up height spec -c - nole = sign(abs(nole)/2,nole) - if (nole.le.9 .and. nole.ge.0) then - noteq = chax(48+nole) - lnoten = 1 - else - noteq = '{' - if (nole .ge. -9) then - write(noteq(2:3),'(i2)')nole - lnoten = 3 - else - write(noteq(2:4),'(i3)')nole - lnoten = 4 - end if - noteq = noteq(1:lnoten)//'}' - lnoten = lnoten+1 - end if - notexq = notexq(1:lnote)//noteq(1:lnoten) - lnote = lnote+lnoten - end if - end if - end if - return - end - function ntindex(line,s2q,lenline) -c -c Returns index(line,s2q) if NOT in TeX string, 0 otherwise -c - character*(*) s2q,line - character*1 chax - logical intex - ndxs2 = index(line,s2q) - ndxbs = index(line,chax(92)) - if (ndxbs.eq.0 .or. ndxs2.lt.ndxbs) then - ntindex = ndxs2 - else -c -c There are both bs and s2q, and bs is to the left of sq2. So check bs's to -c right of first: End is '\ ', start is ' \' -c - len = lenstr(line,lenline) - intex = .true. - do 1 ic = ndxbs+1 , len - if (ic .eq. ndxs2) then - if (intex) then - ntindex = 0 - ndxs2 = index(line(ic+1:len),s2q)+ic - else - ntindex = ndxs2 - return - end if - else if (intex .and. line(ic+1:ic+2).eq.chax(92)//' ') then - intex = .false. - else if (.not.intex .and. line(ic+1:ic+2).eq.' '//chax(92)) - * then - intex = .true. - end if -1 continue - end if - return - end - subroutine ntrbbb(n,char1q,ulqq,iv,notexq,lnote) -c -c This appends to notexq e.g. '\ibbbu1' -c - common /combbm/ isbbm - logical isbbm - character*79 notexq - character*1 char1q,ulqq,chax - character*4 tempq - if (n .ge. 5) isbbm = .true. - if (lnote .gt. 0) then - notexq = notexq(1:lnote)//chax(92)//char1q - else - notexq = chax(92)//char1q - end if - lnote = lnote+2 - do 3 im = 1 , n - notexq = notexq(1:lnote)//'b' - lnote = lnote+1 -3 continue -c -c add the number, 0 if 12 -c -c 5/25/08 Allow >12 -c -c call istring(mod(iv,12),tempq,len) - if (iv .lt. 24) then - call istring(iv,tempq,len) - else if (iv .eq. 24) then - tempq(1:1) = '0' - len = 1 - else - call printl('Sorry, too man open beams') - call stop1() - end if - notexq = notexq(1:lnote)//ulqq//tempq(1:len) - lnote = lnote+1+len - return - end - function numclef(clefq) -c -c Returns the number to be used as argument of \setclef for MusiXTeX -c For input 0-6 or tsmanrb return 0-7 -c 7 f 9 -c 8 0 -c - character*1 clefq - if (ichar(clefq) .lt. 55) then -c if (ichar(clefq) .le. 55) then - numclef = ichar(clefq)-48 -c if (numclef .eq. 7) numclef = 9 - else if (clefq .eq. '7') then - numclef = 9 - else if (clefq .eq. '8') then - numclef = 0 - else - numclef = index('tsmanrbxxf',clefq)-1 - end if - return - end - subroutine outbar(i,jlast) - character*1 chax - nfmt = log10(i+.5)+2 - if (jlast+5+nfmt .lt. 80) then - write(*,'(a5,i'//chax(48+nfmt)//',$)')' Bar',i - write(15,'(a5,i'//chax(48+nfmt)//',$)')' Bar',i - jlast = jlast+5+nfmt - else - write(*,'(/,a5,i'//chax(48+nfmt)//',$)')' Bar',i - write(15,'(/,a5,i'//chax(48+nfmt)//',$)')' Bar',i - jlast = 5+nfmt - end if - return - end - subroutine pmxa(basenameq,lbase,isfirst,nsyout,nbarss,optimize) -cccccccccccccccccccccccccccccccccccccccccccccccc -cc cc -cc Subroutine, combine with pmxb.for -cc -cccccccccccccccccccccccccccccccccccccccccccccccc -cc -cc Need to consider X spaces in xtuplets when getting poenom, and -cc maybe fbar? -cc mx06a -cc ID numbers for voices when number of voices is reduced. -cc -cc mx03a -cc account for new fracindent for new movements. -cc -cc Known changes since pmxa. Version 1.1b (see pmxb for longer list) -cc -cc Check ID codes for slurs. -cc Version 1.24 still does not have details for spacing/positioning -cc arpeggios if there are accidentals or shifted notes or crowded scores. -cc Fix problem in 1.22 with arpeggios across multi-line staves -cc Fix problem in 1.22 with flat key signatures -cc Read setup data as strings -cc Warning for octave designation plus +/- -cc Don't pause for volta warning, -cc Macros -cc Correct fsyst to account for transposition and key changes. -cc Check for nbars > nsyst -cc -ccccccccccccccccccccccccccccccccccc - parameter (nm=24,nkb=3999,nks=125,maxblks=9600) - logical loop,usefig,isfirst,optimize - character*131072 bufq - integer*2 lbuf(maxblks) - common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq - integer nn(nm),nodur(nm,200),ivxo(600),ipo(600), - * nnl(nm),itsofar(nm),nib(nm,15),lastbar(0:nks),nbarss(nks) - common /c1omnotes/ nnodur,wminnh(nkb),nnpd(maxblks),durb(maxblks), - * iddot,nptr(nkb),ibarcnt,mbrest,ibarmbr, -c * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) - * ibaroff,udsp(nkb),wheadpt,sqzb(maxblks) - common /compage/ widthpt,ptheight,hoffpt,voffpt, - * nsyst,nflb,ibarflb(0:40), - * isysflb(0:40),npages,nfpb,ipagfpb(0:18),isysfpb(0:18), - * usefig,fintstf,gintstf,fracsys(30),nmovbrk,isysmb(0:30), - * nistaff(0:40) - common /comkeys/ nkeys,ibrkch(18),newkey(18),iskchb,idsig,isig1, - * mbrestsav,kchmid(18),ornrpt,shifton,barend,noinst,stickyS - real*4 elsk(nkb),celsk(0:nkb),elss(nks),to(600),tno(600) - character*128 lnholdq - character*44 basenameq - logical rest(nm,200),firstline,fbon,isvolt,iskchb,kchmid,ornrpt, - * stickyS - common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, - * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 - logical lastchar,newmeter,newmb(nkb),issegno,bottreb,isheadr, - * shifton,barend - common /a1ll/ iv,ivxo,ipo,to,tno,nnl,nv,ibar,mtrnuml, - * nodur,lenbar,iccount,nbars,itsofar,nib,nn, - * rest,lenbr0,lenbr1,firstline,newmeter - common /linecom/ elskb,tnminb(nkb) - common /cblock/ - * etatop,etabot,etait,etatc,etacs1,hgtin,hgtti,hgtco, - * xilbn,xilbtc,xilhdr,xilfig,a,b,inhnoh - common /cominbot/ inbothd - common /c1ommvl/ nvmx(nm),ivmx(nm,2),ivx,fbar,nacc(nm,200) - common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac - common /commus/ musize,whead20 - common /comeon/ eonk,ewmxk -c logical mrecord,mplay,endmac,gotclef,cstuplet - logical mrecord,mplay,endmac,cstuplet - logical novshrinktop,upslur,fontslur,WrotePsslurDefaults - common /comnvst/ novshrinktop,cstuplte - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - common /comligfont/ isligfont - logical isligfont - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans - logical fulltrans - common /comis4bignv/ is4bignv,AIset - logical is4bignv,AIset - common /comshort/ shortfrac,codafrac,ishort,mbrsum,nmbr,nocodabn, - * poefa - real*4 poefa(125) - logical nocodabn - data wtimesig,wclef,wkeysig - * / 0.72 , 0.8 , 0.28 / -c data poefa /125*1./ -c This corrected a problem in Bob Tennent's compilation of pmx2.94 -c - do 97 i = 1 , 125 - poefa(i) = 1. -97 continue - is4bignv = .false. - AIset = .false. - whead20 = 0.3 - ishort = 0 - if (.not.optimize) then - print* - print*,'Starting first PMX pass' - write(15,'(a)') ' Starting first PMX pass' - end if - if (isfirst) then - open(19,file='pmxaerr.dat') - write(19,'(i6)') 0 - close(19) - end if - if (.not.optimize) jprntb = 81 - macuse = 0 - ornrpt = .false. - stickyS = .false. - mrecord = .false. - mplay = .false. - lastchar = .false. - novshrinktop = .false. - cstuplet = .false. - fontslur = .true. - isligfont = .false. - fulltrans = .false. - do 42 ibarcnt = 1 , nkb - udsp(ibarcnt) = 0. - wminnh(ibarcnt) = -1. -42 continue -c -c Initialize input buffer -c - lenbuf0 = ipbuf - ipbuf = 0 - ilbuf = 1 - call g1etset(nv,noinst,mtrnuml,mtrdenl,mtrnmp,mtrdnp, - * xmtrnum0,newkey(1),npages,nsyst,musize,bottreb) -c -c Set up list of instrument numbers (iv) -c - ivnow = 0 - do 13 instnow = 1 , noinst - do 14 iscount = 1 , nsperi(instnow) - ivnow = ivnow+1 - instno(ivnow) = instnow -14 continue -13 continue -c -c Save initial meter for midi -c - if (.not.isfirst .and. npages.eq.0) then - print*,'Sorry, must have npages>0 for optimization.' - call stop1() - end if - nsyout = nsyst -c -c isig1 will be changed in getnote if there is a transposition -c - isig1 = newkey(1) - if (npages .gt. nsyst) then - call printl('npages > nsyst in input. Please fix the input.') - call stop1() - end if -c -c fbar = afterruleskip/elemskip -c apt = width of small accidental + space in points (= 6 at 20pt) =wheadpt -c - fbar = 1. - wheadpt = whead20*musize - ifig = 0 - usefig = .true. - lenbeat = i1fnodur(mtrdenl,'x') - lenmult = 1 - if (mtrdenl .eq. 2) then - lenbeat = 16 - lenmult = 2 - end if - lenbr1 = lenmult*mtrnuml*lenbeat - lenbr0 = nint(lenmult*xmtrnum0*lenbeat) - mtrnuml = 0 - if (lenbr0 .ne. 0) then - ibaroff = 1 - lenbar = lenbr0 - else - ibaroff = 0 - lenbar = lenbr1 - end if - ibarcnt = 0 - nptr(1) = 1 - iccount = 128 - nmovbrk = 0 - nflb = 0 - nfpb = 0 - ipagfpb(0) = 1 - isysfpb(0) = 1 - ibarflb(0) = 1 - isysflb(0) = 1 - nistaff(0) = nv-1 -c -c Check for pmx.mod -c - linesinpmxmod = 0 -c line1pmxmod = ilbuf - call getpmxmod(.true.,' ') - if (.not.isfirst .and. linesinpmxmod .gt. 0) then - print*,'Sorry, cannot optimize if there is a pmx.mod file' - call stop1() - end if -c -c Initialize for loop over lines -c - nkeys = 1 - ibrkch(1) = 1 - mbrestsav = 0 - shifton = .false. - firstline = .true. - newmeter = .false. - ihead = 0 - isheadr = .false. -c gotclef = .false. - idsig = 0 - iddot = 0 - fintstf = -1. - gintstf = 1.0 - listcresc = 0 - listdecresc = 0 -30 loop = .true. - iskchb = .false. - issegno = .false. - nbars = 0 - ibarmbr = 0 - do 4 iv = 1 , nv - nvmx(iv) = 1 - ivmx(iv,1) = iv - itsofar(iv) = 0 - nnl(iv) = 0 - do 5 j = 1 , 200 - rest(iv,j) = .false. - nacc(iv,j) = 0. -5 continue -4 continue - iv = 1 - ivx = 1 - fbon = .false. - barend = .false. - isvolt = .false. -2 if (loop) then -c -c Within this short loop, nv voices are filled up for the duration of a block. -c On exit (loop=.false.) the following are set: nnl(nv),itsofar(nv) -c nodur(..),rest(..). nnl will later be -c increased and things slid around as accidental skips are added. -c - call g1etnote(loop,ifig,optimize,fulltrans) - if (lastchar) go to 20 - go to 2 - end if - if (mbrestsav .gt. 0) then - call printl(' ') - call printl( - * 'You must enter the same multibar rest in ALL parts') - call stop1() - end if - do 10 ibar = 1 , nbars - ibarcnt = ibarcnt+1 -c -c The following is just a signal to start a new bar when cataloging spaces -c for catspace(...) -c - nptr(ibarcnt+1) = nptr(ibarcnt) - newmb(ibarcnt) = .false. - if (newmeter.and.ibar.eq.1) newmb(ibarcnt) = .true. -c -c Above is only for spacing calcs later on. Remember new meter can only occur -c at START of a new input line (ibar = 1) -c - if (ibar .ne. ibarmbr) then - if (.not.optimize) call outbar(ibarcnt-ibaroff,jprntb) - else - if (.not.optimize) then - write(15,'(/,a20,i4,a1,i4)')' Multibar rest, bars', - * ibarcnt-ibaroff,'-',ibarcnt-ibaroff+mbrest-1 - write(*,'(/,a20,i4,a1,i4)')' Multibar rest, bars', - * ibarcnt-ibaroff,'-',ibarcnt-ibaroff+mbrest-1 - jprntb = 0 - end if - ibaroff = ibaroff-mbrest+1 - end if - if (firstline .and. lenbr0.ne.0) then - if (ibar .eq. 1) then - lenbar = lenbr0 - else - lenbar = lenbr1 - end if - end if - if (ibar .gt. 1) then -c -c For bars after first, slide all stuff down to beginning of arrays -c - do 11 iv = 1 , nv - do 11 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - ioff = nib(ivx,ibar-1) - do 12 ip = 1 , nib(ivx,ibar)-ioff - nodur(ivx,ip) = nodur(ivx,ip+ioff) - rest(ivx,ip) = rest(ivx,ip+ioff) - nacc(ivx,ip) = nacc(ivx,ip+ioff) -12 continue -11 continue - end if - do 67 iv = 1 , nv - do 67 kv = 1 , nvmx(iv) - ioff= 0 - if(ibar.gt.1)ioff = nib(ivmx(iv,kv),ibar-1) -67 continue - call makeabar() - elsk(ibarcnt) = elskb+fbar -10 continue - newmeter = .false. - firstline = .false. - go to 30 -20 continue -c -c Vertical analysis. -c - if (npages .eq. 0) then - if (nsyst .eq. 0) then - print*,'When npages=0, must set nsyst=bars/syst, not 0' - call stop1() - end if - nsyst = (ibarcnt-1)/nsyst+1 - if (nv .eq. 1) then - nsystpp = 12 - else if (nv .eq. 2) then - nsystpp = 7 - else if (nv .eq. 3) then - nsystpp = 5 - else if (nv .eq. 4) then - nsystpp = 3 - else if (nv .le. 7) then - nsystpp = 2 - else - nsystpp = 1 - end if - npages = (nsyst-1)/nsystpp+1 - end if -c -c Check nsyst vs ibarcnt -c - if (nsyst .gt. ibarcnt) then - print* - print*,'nsyst,ibarcnt:',nsyst,ibarcnt - print*,'There are more systems than bars.' - write(15,'(a,2i5)')' nsyst,ibarcnt:',nsyst,ibarcnt - write(15,'(a)')' There are more systems than bars.' - call stop1() - end if -c -c Set up dummy forced line & page breaks after last real one -c - nflb = nflb+1 - ibarflb(nflb) = ibarcnt+1 - isysflb(nflb) = nsyst+1 - nfpb = nfpb+1 - ipagfpb(nfpb) = npages+1 - isysfpb(nfpb) = nsyst+1 - heightil = ptheight*4./musize - open(12,status='SCRATCH') - write(12,'(a)')basenameq(1:lbase) - write(12,*)lbase -c -c Pass to pmxb the initial signature, including effect of transposition. -c - write(12,'(6f10.5/f10.5,3i5)')fbar,wheadpt,etait, - * etatc,etacs1,etatop,etabot,inbothd,inhnoh,isig1 - write(12,*)npages,widthpt,ptheight,hoffpt,voffpt,nsyst - iflbnow = -1 - isysb4 = 0 - do 8 ifpb = 1 , nfpb -c -c Each time thru this loop is like a single score with several pages -c - npages = ipagfpb(ifpb)-ipagfpb(ifpb-1) - nsyst = isysfpb(ifpb)-isysfpb(ifpb-1) - nomnsystp = (nsyst-1)/npages+1 - nshort = nomnsystp*npages-nsyst - do 7 ipage = 1 , npages - nsystp = nomnsystp - if (ipage .le. nshort) nsystp = nsystp-1 -c -c Last system number on this page: - isysendpg = isysb4+nsystp - nintpg = 0 - do 15 isy = isysb4+1, isysendpg - if (isysflb(iflbnow+1) .eq. isy) iflbnow = iflbnow+1 - nintpg = nintpg+nistaff(iflbnow) -15 continue - xilfrac = 0. - xiltxt = 0. - if (ipage.eq.1 .and. ihead.gt.0) then -c -c Needn't zero out ihead after printing titles if we only allow titles at top? -c - if (iand(ihead,1) .eq. 1) then - xiltxt = xiltxt+hgtin*4/musize - xilfrac = xilfrac+etait - end if - if (iand(ihead,2) .eq. 2) then - xiltxt = xiltxt+hgtti*4/musize - xilfrac = xilfrac+etatc - end if - if (iand(ihead,4) .eq. 4) then - xiltxt = xiltxt+hgtco*4/musize - xilfrac = xilfrac+etacs1 - else -c -c Use double the title-composer space if there is no composer -c - xilfrac = xilfrac+etatc - end if - end if - D = xilfrac+nsystp-1+etatop+etabot -c C = nsystp*(nv-1) - C = nintpg -c xN = heightil - xiltxt - 4*nsystp*nv - (nsystp-1)*xilbn - xN = heightil - xiltxt - 4*(nintpg+nsystp) - (nsystp-1)*xilbn - if (bottreb) xN = xN-(nsystp-1)*xilbtc - if (ihead.eq.0 .and. isheadr) xN = xN - xilhdr - if (ifig .eq. 1) then - xN = xN - nsystp*xilfig - end if - glueil = (xN-b*C)/(D+a*C) - omegaG = (b*D+a*xN)/(D+a*C) -c -c G = \interlines between systems -c omega*G = \interlines between staves of the same system -c \interstaff = 4+omega*G -c C = total number of interstaff spaces in the page -c D = omega-indep factors for scalable height = nsy-1 (intersystem glue) -c + etatop + etabot + etatxt + -c N = scaleable height (\interlignes) = height - htext - staff heights - xil -c xil = extra interliges = (nsy-1)*xilbn + 10 if header and no titles -c + (nsy-1)*xiltcb for treble clef bottoms -c + nsy*xilfig for figures -c G = N/(D + omega * C) = glueil, (1) -c But (empirically) omega*G = a*G + b (2) -c with a=1.071 and b=2.714 -c Solving (1) and (2) gives -c G = (N-b*C)/(D+a*C) , omega*G = (b*D+a*N)/(D+a*C) -c Pass to pmxb omega*G (=\interstaff-4) -c (etatop,bot,it,tc,cx)*G as inputs to \titles -c -c glueil = (heightil-xiltxt-nsystp*(xil+4*nv)) -c * /(nsystp*(1+gfact*(nv-1))-1+etatop+etabot+xilfrac) -c xnsttop = glueil*etatop -c xintstaff = 4+gfact*glueil -c -c Only the first page will get local adjustment now if needed, others in pmxb -c - if (ifpb.eq.1 .and. ipage.eq.1 .and. fintstf.gt.0.) then - facins = fintstf - fintstf = -1. - else -c -c gintstf = 1.0 by default, but may be changed with AI -c - facins = gintstf - end if - write(12,*)nsystp,max(0.,etatop*glueil),facins*(omegaG+4) - ihead = 0 - isheadr = .false. - isysb4 = isysendpg -7 continue -8 continue -c -c Done with vertical, now do horizontals -c - celsk(1) = elsk(1) - do 21 ibar = 2 , ibarcnt - celsk(ibar) = celsk(ibar-1)+elsk(ibar) -21 continue - lastbar(0) = 0 - ibar1 = 1 - wmins = -1. - iflb = 1 - imovbrk = 0 - ikey = 1 -c -c Return nsyst to its *total* value -c - nsyst = isysfpb(nfpb)-1 - do 22 isyst = 1 , nsyst - if (isyst .eq. isysflb(iflb)) iflb = iflb+1 - if (nmovbrk.gt.0 .and. imovbrk.lt.nmovbrk) then - if (isyst .eq. isysmb(imovbrk+1)) imovbrk = imovbrk+1 - end if - ibarb4 = lastbar(isyst-1) - if (isyst .eq. 1) then - if (isfirst) elsstarg = celsk(ibarflb(1)-1)/ - * (isysflb(1)-1-fracindent)*(1-fracindent) - celskb4 = 0. - else - celskb4 = celsk(ibarb4) -c -c Must dimension isysmb(0:*) just so I can execute this test! -c - if (isfirst) then - if (nmovbrk.gt.0 .and. isyst.eq.isysmb(imovbrk)) then -c -c First syst after forced line break. There may be indentation. -c - elsstarg = (celsk(ibarflb(iflb)-1)-celskb4) - * /(isysflb(iflb)-isyst-fracsys(imovbrk)) - * *(1-fracsys(imovbrk)) - else -c -c There is no indentation to deal with -c - elsstarg = (celsk(ibarflb(iflb)-1)-celskb4) - * /(isysflb(iflb)-isyst) - end if - end if - end if - if (isfirst) then - diff1 = abs(elsstarg-elsk(ibarb4+1)) - do 23 ibar = ibarb4+2 , ibarcnt - diff = elsstarg-(celsk(ibar)-celskb4) - if (abs(diff) .ge. diff1) go to 24 - diff1 = abs(diff) -23 continue -24 ibar = ibar-1 - lastbar(isyst) = ibar - nbarss(isyst) = ibar-ibarb4 - else -c -c nbarss is given as an input, must compute lastbar and ibar -c - lastbar(isyst) = nbarss(isyst)+ibarb4 - ibar = lastbar(isyst) - end if -c -c elss is # of elemskip in the syst. from notes & ars's, not ruleskips, ask's. -c - elss(isyst) = celsk(ibar)-celskb4 - write(12,'(i5)')lastbar(isyst-1)+1 -c -c Transposed sigs are isig1, newkey(2,3,...). -c - if (ikey .eq. 1) then - key1 = isig1 - else - key1 = newkey(ikey) - end if - fsyst = wclef+abs(key1)*wkeysig+2./musize - xelsk = 0. -1 if (ikey.lt.nkeys) then - if (ibrkch(ikey+1).le.lastbar(isyst)) then -c -c Add space for all key changes -c - ikey = ikey+1 - key2 = newkey(ikey) - naccs = max(abs(key2-key1),max(abs(key1),abs(key2))) - fsyst = fsyst+naccs*wkeysig -c -c Account for afterruleskips (fbar) -c - xelsk = xelsk+fbar/2 - if (ibrkch(ikey).lt.lastbar(isyst) .and. .not.kchmid(ikey)) - * xelsk = xelsk-1. - key1 = key2 - go to 1 - end if - end if -c -c Add extra fixed space for double bar -c - if (isyst .eq. nsyst) then - fsyst = fsyst+4.5/musize - end if -c -c Add extra fixed space for initial time signature -c - if (isyst .eq. 1) then - fsyst = fsyst+wtimesig - end if -c -c Add extra fixed space for time signature changes & user-defined spaces -c - do 26 ibars = ibarb4+1 , lastbar(isyst) - if (newmb(ibars)) fsyst = fsyst+wtimesig - fsyst = fsyst+udsp(ibars)/musize -26 continue - if (isyst .eq. 1) then - wdpt = widthpt*(1-fracindent) - else - if (nmovbrk.gt.0 .and. imovbrk.gt.0 .and. - * isyst.eq.isysmb(imovbrk)) then - wdpt = widthpt*(1-fracsys(imovbrk)) - else - wdpt = widthpt - end if - end if - wsyspt = wdpt-fsyst*musize-0.4*nbarss(isyst) -c -c Checks for min spacing -c Get min allowable space -c - dtmin = 1000. - do 45 ibar = ibar1 , ibar1+nbarss(isyst)-1 - dtmin = min(dtmin,tnminb(ibar)) - if (wminnh(ibar).ge.0.) wmins = wminnh(ibar) -45 continue - if (wmins .lt. 0) wmins = 0.3 - wminpt = (1+wmins)*0.3*musize -c -c Find max duration & # of notes for this system -c - dtmax = 0. - nns = 0 - do 43 iptr = nptr(ibar1) , nptr(ibar1+nbarss(isyst))-1 - dtmax = max(dtmax,durb(iptr)) - nns = nns + nnpd(iptr) -43 continue - elmin0 = wsyspt*f1eon(dtmin)/(elss(isyst)+xelsk) - if (elmin0 .ge. wminpt) then -c -c Subtract out fbar stuff to keep old way of passing sumelsk to pmxb; -c there is no need to "flatten" -c - sumelsk = elss(isyst)-fbar*nbarss(isyst) - eonk = 0. - ewmxk = 1. - else - elmin1 = wsyspt/((fbar*nbarss(isyst)+xelsk)/f1eon(dtmax)+nns) - if (elmin1 .le. wminpt) then -c print* -c print*,'In system #',isyst,' cannot meet min. space rqmt' -c write(15,'(/a,i5,a)') -c * 'In system #',isyst,' cannot meet min. space rqmt' - eonk = 0.9 - else -c -c Find eonk by Newton method -c - call findeonk(nptr(ibar1),nptr(ibar1+nbarss(isyst))-1, - * wsyspt/wminpt,fbar*nbarss(isyst)+xelsk,dtmin,dtmax, - * (wminpt-elmin0)/(elmin1-elmin0)) - eonk = min(.9,eonk) - end if - ewmxk = f1eon(dtmax)**eonk -c -c Recompute poenom! -c - sumelsk = 0 - do 44 iptr = nptr(ibar1) , nptr(ibar1+nbarss(isyst))-1 - sumelsk = sumelsk - * + nnpd(iptr)*sqzb(iptr)*feon(durb(iptr)/sqzb(iptr)) -44 continue - end if - poenom = wsyspt/(sumelsk+fbar*nbarss(isyst)+xelsk) -c -c Set fracindent for output: orig if isyst=1, fracsys(imovbrk) if movbrk, else 0 -c - if (isyst .gt. 0) then - if (nmovbrk.gt.0 .and. imovbrk.gt.0 .and. - * isyst.eq.isysmb(imovbrk)) then - fracindent = fracsys(imovbrk) - else - fracindent = 0. - end if - end if - write(12,'(1pe12.5/i5,5e12.3)') poenom,nbarss(isyst), - * sumelsk,fsyst,fracindent,eonk,ewmxk - ibar1 = ibar1+nbarss(isyst) -22 continue - rewind(12) - open(13,status='SCRATCH') - write(13,'(i5)')ifig - rewind(13) - ilbuf = 1 - ipbuf = 0 - if (.not.optimize) then - write(*,'(/,a)')' Done with first pass' - print* - write(15,'(/,a)')' Done with first pass' - write(15,'()') - end if -c -c Following syntax is needed since pmxa is called with literal argument .false. -c - if (isfirst) isfirst = .false. - return - end - subroutine pmxb(inlast,poevec,ncalls,optimize) -cccccccccccccccccccccccccc -cc -cc To Do -cc -cc Resolve disagreement in final poe for 1st system, compared with *.mx2 -cc Shift slurs on right- or left-shifted main notes (2/7/99) -cc Various end-of-input-block repeat problems (ick142.pmx). -cc Force multiplicity for un-beamed xtups. -cc Clef change at end of piece -cc Global "A" option to maximize "X" at a given time tick. -cc Tighten test for end-of-bar hardspace, flgndv(ivx) due to right-shifted -cc note. See trubl18.pmx -cc Tab character as space. -cc Clef interference with second line of music. -cc Add space for interferences between *different* lines of music? -cc Shift arpeggios, both automatic and manual. -cc Different musicsize for different instruments. -cc Spacing checks for accid's on left-shifted chord notes -cc Spacing checks for double dots -cc Allow forced line breaks w/o setting nsyst. -cc Cresc-Decresc. (Enhance MusiXTeX first?) -cc Dynamic Marks. -cc Bug with Voltas at line end (MusiXTeX problem?). -cc Subtle bug w/ slur hgt over line brk, see trubl15.pmx -cc Stem-end slurs. -cc Allow units in indentation. -cc Make inline TeX more context sensitive. -cc Werner's 4/2/98 problem with "o?" -cc Scor2prt converts e.g. "r0+0" into "r0 0", which seems to be wrong. -cc converts e.g. "r2db" into "r2d", which might be wrong. -cc Werner's generalsignature problem with Key change and new transposition. -cc (wibug8.pmx) -cc Unequal xtuplets -cc Print both sets of bar #'s in tex file. -cc Make barlines invisible \def\xbar{\empty} , fix fbar. -cc Auto-tie slurs 'At' -cc Forced line break anywhere (e.g. at a mid-bar repeat). -cc Clef change at very start of file. -cc Tighten test for M as macro terminator. -cc Fix title so not separate limit on author length + composer length. -cc Arpeggios in xtups. -cc -cc mx10b -cc Option for instrument name at top center. Last item in P command: -cc P[n]c text is instrument name (use in parts) -cc P[n]cstuff text is stuff (up to 1st blank) -cc P[n]c"stuff with spaces" text is stuff with spaces -cc -cc Post version 1.43 -cc Reduced space rqmt for multiplicity-0 graces (no flag) -cc Removed last sepsym in centered whole-bar rests, fixes volta height bug. -cc -cc Version 1.43 -cc Fix spacing for end-of-line signature change. -cc Adjust left-shift of grace group for shifted accidentals. -cc Put in extra space for left-shifted accidentals. -cc Fix bug with dot-shift before accid-shift on chord note. -cc Space-check for right-shifted main notes. -cc Enable forcing stem direction of single notes in non-beamed xtups. -cc Disallow clef change after last note before end of input block (pmxa) -cc Print meter change before page break -cc increase length of strings for \titles macro -cc version 1.42 -cc Loosen up input syntax for "X" commands. Subroutine getx() -cc "B" and "P" in "X" commands -cc mx09b -cc Allow multiple rests at start of xtup -cc Add 64th rest -cc Fix xtup numbers over rests. (subroutine levrn) -cc Initialize notcrd=.false. every gulp. Avoids undefined state with e.g. -cc c za / ( c a ... -cc Allow double dots to be shifted. -cc Fix spacing with double dotted notes; permit splitting small note. -cc Fix \dotted printout so it works with old compiler -cc mx08b -cc Automatic spaces if needed for shifted accidentals. -cc Some Dynamics -cc Increase accid. horiz. shift resolution to .o5 (use one more bit in nacc) -cc version 1.41 -cc Allow ":" as last char of path name -cc Dotted slurs "sb" -cc Continue bar numbering at movement break "L[integer]Mc" -cc mx07b -cc Whole-bar rests with double lines of music. Fixed all options ? -cc Shift accidentals, either [+|-][integer][+|-][number] or [<|>][number]. -cc Option to suppress centering full-bar rests. "o" -cc mx06b -cc Shift accid on left-shifted chord note. -cc Rest as first note of xtup. -cc Wrong slopes with small widths. Scale slfac1 by widthpt_default/widthpt -cc Allow Rb for single bar at movemnet break or end of piece. (islur(25)) -cc Change # of inst at a movement break. noinst is total # and must be used -cc in 1st movement. ninow is current. nspern(1,...,ninow) is current -cc staves/inst, nsperi(1,...,noinst) is original. rename tells whether to -cc reprint names in parindent at a movement break. Default is .false. -cc unless ninow changes, then .true. But can force either with r+/- as -cc option in 'M' -cc mx04b -cc Double-dotted notes, separate+beamed, main+chord, still no extra space. -cc ??? Don't shift slur ends on whole notes. -cc (pmxa) Write line number of error in pmxaerr.dat -cc mx02b -cc Admit "RD" before "/" (search for "rptfq2:" ) -cc In doslur, for multi-line staves, single notes, check forced stem dir'n -cc before setting stemup (used to set horiz offset). -ccccccccccccccccccccccccccccccc - parameter (nm=24,nks=125,mv=24576,maxblks=9600) -c -c FYI /all/ differs in appearance in function ncmid -c - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - common /comipl2/ ipl2(nm,200) -ccccccccccccc -cc islur cc -ccccccccccccc -c bit meaning -c 0 slur activity on this note -c 1 t-slur here. -c 2 force 0-slope beam starting on this note -c 3 Double dotted note! -c 4 grace before main note -c 5 left repeat -c 6 right repeat -c 7 start Volta -c 8 doublebar -c 9 end Volta -c 10 on=>endvoltabox -c 11 on=>clefchange -c 12-14 0=>treble, ... , 6=>bass -c 15 on=> start new block for clef change (maybe diff. voice) -c 16 literal TeX string -c 17 1=up, 0=down stem for single note (override) See bit 30! -c 18 if on, prohibit beaming -c 19 if on, full bar rest as pause -c 20 Beam multiplicity down-up -c 21 Forced multiplicity for any beam including xtups -c 22-24 Value of forced multiplicity -c 25 single barline at movement break -c 26 doubleBAR (see bits 5,6,8) -c 27-28 Forced beam fine-tune height (1 to 3) -c 29 Blank rest -c 30 If on, get stem dir'n from bit 17 -c 31 If on, suppress printing number with xtuplet starting here -ccccccccccccc -cc ipl cc -ccccccccccccc -c 0 blank barline (must be iv=1) (would have used islur but no room) -c 1 look left for K rests, moved here from iornq(30) -c 2 treblelowoct -c 3 Open notehead in forced beam xtup -c 4 Set if single stem tremolo -c 5-6 termulo multiplicity - 1 -c 7 unused -c 8 left offset main note one headwidth -c 9 right offset main note one headwidth -c 10 chord present? -c 11-16 Forced beam height adjustment (-30 to +30) -c 17-22 Forced beam slope adjustment (-30 to +30) -c 23-26 Slur index for Way-after grace. Inserted when slur is started. -c 27 5th bit for slur index for Way-after grace (100712) -c 28 key change: only in voice 1 -c 29 Grace after main note. (Type A) -c 30 In forced beam. Signals need to check beam heights -c 31 Grace way after main note. (stretch to next note, type W) -ccccccccccccc -cc iornq cc -ccccccccccccc -c 0 Ornament "(". Was user-defined horizontal slur shift on this note -c until 9/24/97; changed that to irest(21) -c 1-13 stmgx+Tupf._) -c 14 Down fermata, was F -c 15 Trill w/o "tr", was U -c 16-18 Editorial s,f,n -c 19-20 >^ -c 21 "?" for editorial accid, w/ or w/o s,f,n -c 22 Set if ihornb governs ornament height. Same in icrdorn. -c 23 Set in getorn if ANY note at time of this main note has ornament. -c This is ONLY used in beamstrt to signal whether to do more -c tests for whether ihornb is needed. (ihornb is only needed -c if nonchord+upbm, chord+upbm+top_note, chord+dnbm+bot_note) -c (7/1/00)Also set if any dynamic, as ihornb will be needed when dnbm. -c 24 Slur on after or way-after grace. Use as signal to START slur. -c 25 Tweak orn ht. Same in icrdorn for chord note -c 26 Insert user-defined space before this note (was 22) -c 27 Arpeggio stop or start (if 2 at same time), or all-in-this-chord -c 28 caesura or breath -cc 29 blank barline (must be iv=1) (would have used islur but no room) -c 29 coda -cc 30 "Look-left" option for keyboard rest -c 30 Part-by-part segno oG -c 31 Set if any note (main or chord) has cautionary accid, for space checks -ccccccccccccc -cc irest cc -ccccccccccccc -c 0 rest=1, no rest = 0 -c 1 There will be a vertical shift for number of this xtup -c 2 Set if 2-note tremolo starts here -c 3-4 nsolid, # of solid beams in 2-note tremolo -c 5-6 nindent, # of indented beams in 2-note tremolo -c 7 There is a horizontal shift for xtup number -c 9-13 Horiz shift, 1=>-1.5, ... , 31=>+1.5 -c 14 Flip up/down-ness of xtup number -c 15 Single-voice, single note shift X(...)[p]S -c 16 Start single-voice, multinote shift with this note X(...)[p]: -c 17 End single-voice, multinote shift after this note. Enter symbol -c after note. X: -c 18 User-defined hardspace after last note of bar, *after* this note. -c Value still stored in udoff(ivx,nudoff(ivx)), not with other -c hardspaces in udsp, to avoid confusion with time checks. -c 19 Move the dot. Data stored in ndotmv,updot,rtdot -c 20 Set if right-shifted main or chord note here. Use for space checks. -c 21 User-defined hardspace in xtup -c 22 User-defined slur shift horizontal slur shift. -c 23 Set on last note before staff-jumping a beam. -c 24 Set on first note after staff-jumping a beam -c 25 Suppress rest centering. "ro" -c 26 Dynamic on this note -c 27 Set if left-shifted main or chord note here. Use for space checks. -c 28 Set if xtup starts on this note. -c 29 Set on lowest-voice note at same time as 1st note after jump-beam. -c 30 Set on note after end of jump-beam segment, to force new note group -c 31 Flag for cautionary accidental -ccccccccccccc -cc nacc cc -ccccccccccccc -c 0-1 0=no accid, 1=fl, 2=sh, 3=na -c 2 double -c 3 big -c 4-9 vertshift-32 -c 10-16 20*(horiz. shift + 5.35) (Recentered ver 2.32) -c 17 Midi-only accidental -c 18 2:1 xtup -c 19 Together with nacc(18), increase multiplicity by 1 and dot 1st note. -c 20 Set on last note of each seg except last seg of single-slope beam. -c 21 Set on 1st note of each seg except 1st seg of single-slope beam. -c 22-26 If .ne.0, printed xtup number for xtup starting on this note. -c 27 Set for dotted xtup note. Mult dur by 1.5, mult next by .5 & increase -c multiplicity by 1 -c 28 Set on main note of chord if accidentals are ordered. -c 29 Tag for chordal accidental shift...means add to autoshifts. -c 30-31 Set 30|31 if main note in a chord is part of a 2nd and needs to be shifted. -c If upstem|downstem, main is upper|lower member of 2nd -c Action is to interchange pitches only when notes are placed. -ccccccccccccc -cc mult cc -ccccccccccccc -c 0-3 Multiplicity+8 (mult= # of flags) -c 4 Set if slope adjustment for xtup bracket -c 5-9 16+slope adjustment -c 10-15 New stem length, [0-63] => (-4,0,+27.5) -c 16-22 64+Vertical offset of xtup # -c 27 Stemlength override -cc 28-30 New stem length. -ccccccccccccc -cc isdat1 cc -ccccccccccccc -c 13-17 iv -c 3-10 ip -c 11 start/stop switch -c 12 kv-1 -c 19-25 ichar(code$) -c 26 force direction? -c 27 forced dir'n = up if on, set in sslur; also -c final direction, set in doslur when beam is started, used on term. -c 28-31 ndxslur, set in doslur when beam is started, used on term. -ccccccccccccc -cc isdat2 cc -ccccccccccccc -c 0 Chord switch. Not set on main note. -c 1-2 left/right notehead shift. Set only for chord note. -c 3 tie positioning -c 4 dotted slur -c 6-11 voff1 1-63 => -31...+31 -c 12-18 hoff1 1-127 => -6.3...+6.3 -c 19-25 nolev -c 26 \sluradjust (p+s) -c 27 \nosluradjust (p-s) -c 28 \tieadjust (p+t) -c 29 \notieadjust (p-t) -ccccccccccccc -cc isdat3 cc -ccccccccccccc -c 0 set if midslur (at least one argument) -c 1 set if curve (2 more args) -c 2-7 32+first arg (height correction) (1st arg may be negative) -c 8-10 second arg (initial slope) -c 11-13 third arg (closing slope) -c 14-21 tie level for use in LineBreakTies -c 22-29 ncm for use in LineBreakTies -ccccccccccccc -cc isdat4 cc Set these all at turn-on using s option -ccccccccccccc -c 0-5 Linebreak seg 1 voff 1-63 => -31...+31 -c 6-12 Linebreak seg 1 hoff 1-127 => -6.3...+6.3 -c 16-21 Linebreak seg 2 voff 1-63 => -31...+31 -c 22-28 Linebreak seg 2 hoff 1-127 => -6.3...+6.3 -ccccccccccccc -c icrdat c -ccccccccccccc -c 0-7 ip within voice -c 8-11 ivx (together with 28th bit) -c 12-18 note level -c 19 accidental? -c 20-22 accidental value (1=natural, 2=flat, 3=sharp, 6=dflat, 7=dsharp) -c 23 shift left -c 24 shift right -c 25 arpeggio start or stop -c 26 flag for moved dot (here, not icrdot, since this is always reset!) -c 27 Midi-only accidental -c 28 (6/27/10) 5th bit for ivx, to allow up to 24 voices -c 29 Tag for accidental shift...means add to autoshifts. -c 31 Flag for cautionary accidental on chord note -ccccccccccccc -c icrdot c: -ccccccccccccc -c 0-6 10*abs(vertical dot shift in \internote) + 64 -c 7-13 10*abs(horizontal dot shift in \internote) + 64 -c 14-19 vert accidental shift-32 -c 20-26 20*(horiz accidental shift+3.2) -c 27-29 top-down level rank of chord note w/accid. Set in crdaccs. -c -c Bits in icrdorn are same as in iornq, even tho most orns won't go in crds. -c -cccccccccccccccccccccccccccccccc - character*131072 bufq - integer*2 lbuf(maxblks) - common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq - character*10 figq - common /comignorenats/ mbrhgt,newmbrhgt,ignorenats - logical ignorenats,newmbrhgt - character*1 ulq,sepsymq,sq,chax - logical beamon,firstgulp,figbass,figchk, - * isfig,rptnd1,rptprev - logical loop,lastchar,slint,svolta,evolta,onvolt, - * cwrest(nm),islast,inlast,optimize - integer istop(80),numbms(nm),istart(80) - real*4 xnsttop(75),xintstaff(75),hesk(23),hpts(23),poevec(nks), - * tstart(80),squez(80) - character*1 clefq(nm),ulfbq,rptfq1,rptfq2,charq - character*79 notexq,inameq - character*40 pathnameq - character*44 basenameq - character*24 fmtq - character*20 voltxtq - character*120 instrq,titleq,compoq - common /comlast/ islast,usevshrink - logical usevshrink,stickyS,OptLineBreakTies,autofbon - common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 - common /comtitl/ instrq,titleq,compoq,headlog,inskip,ncskip, - * inhead - common /cominbot/ inbothd - common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), - * fullsize(nm),ivxfig2,ivvfig(2,74) - common /comnsp/ space(80),nb,prevtn(nm), - * flgndv(nm),flgndb,eskgnd,ptsgnd,ivmxsav(nm,2),nvmxsav(nm) - common /comstart/ facmtr - common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, - * tautofb,autofbon,t1autofb - common /comget/ lastchar,rptnd1,sluron(nm,2),fbon,ornrpt,stickyS, - * movbrk,movnmp,movdnp,movgap,parmov,fintstf,gintstf, - * rptprev,equalize,rptfq1,rptfq2 - common /combeam/ ibmtyp - common /comnotes/ nnodur,lastlev,ndlev(nm,2),shifton,setis,notcrd, - * npreslur,was2(nm),ninow,nobar1,nsystp(75),ipage, - * OptLineBreakTies,HeaderSpecial - common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, - * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, - * lnam(nm),inameq(nm) - common /comas1/ naskb,task(40),wask(40),elask(40) - common /comas2/ nasksys,wasksys(800),elasksys(800) - common /comas3/ ask(2500),iask,topmods - common /comask/ bar1syst,fixednew,scaldold, - * wheadpt,fbar,poenom - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - common /comsln/ is1n1,is2n1,irzbnd,isnx - common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, - * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, - * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, - * graspace(37), - * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), - * naccg(74),voltxtq(6),litq(83) - logical upg,slurg,slashg,fbon,ornrpt,shifton,isbjmp,notcrd,was2, - * isbj2,fontslur,WrotePsslurDefaults,HeaderSpecial - common /comivxudorn/ivxudorn(63) - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - character*128 litq,lnholdq - logical upslur,bar1syst,vshrink,lrpt,rrpt,lrptpend, - * ispoi,bcspec,topmods,headlog,clchb,clchv(nm),flgndb, - * btest,sluron,setis,nobar1 - common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), - * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) - common /compoi/ ispoi - common /combc/ bcspec - common /comeon/ eonk,ewmxk - common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, - * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, - * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, - * rtshfac - common /comhsp/ hpttot(176) - common /combmh/ bmhgt,clefend - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac - common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) - common /strtmid/ ihnum3,flipend(nm),ixrest(nm) - common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), - * xinsnow,lowdot - common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) - common /commus/ musize,whead20 - common /comtol/ tol - common /comdyn/ ndyn,idyndat(99),levdsav(nm),ivowg(12),hoh1(12), - * hoh2(12),hoh2h1(2),ntxtdyn,ivxiptxt(41),txtdynq(41), - * idynda2(99),levhssav(nm),listcresc,listdecresc - character*128 txtdynq - logical mrecord,mplay,endmac,flipend,istype0,lowdot,rename,ispstie - integer*2 mmidi - logical restpend,relacc,notmain,twoline,ismidi,crdacc,equalize, - * ismbr,putmbr - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - common /comcb/ nbc,ibcdata(36) - common /comclefq/ clefq - common /comArpShift/NumArpShift,IvArpShift(20),IpArpShift(20), - * ArpShift(20) - common /comligfont/ isligfont - logical isligfont - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans - common /combibarcnt/ ibarcnt - character*40 nmq - common /commidisig/ midisig - common /comclefrests/ centrests - logical newclef, centrests - common /comlyr/ inputmlyr - logical inputmlyr - common /combottop/ botamt,topamt,bottopgap - logical bottopgap - common /comis4bignv/ is4bignv,AIset - logical is4bignv,AIset - common /comhair/ idhairuse,idhair(nm) - common /comc8flag/ c8flag(nm) - logical c8flag - common /comshort/ shortfrac,codafrac,ishort,mbrsum,nmbr,nocodabn, - * poefa - real*4 poefa(125) - logical nocodabn - character*3 shortfraq,rendq - bottopgap = .false. - inputmlyr = .false. - idhairuse = 0 - if (.not.optimize) then - print* - print*,'Starting second PMX pass' - print* - write(15,'(a)')'Starting second PMX pass' - end if - newclef = .false. - centrests = .false. - ncalls = ncalls+1 - islast = inlast - macuse = 0 - isyscnt = 0 - stemmax = 8.2 - stemmin = 3.9 - stemlen = 6.0 - sq = chax(92) - ignorenats = .false. - newmbrhgt = .false. - bcspec = .true. - topmods = .false. - ismbr = .false. - read(12,'(a)')basenameq - read(12,*)lbase - read(12,*)fbar,wheadpt,etait,etatc,etacs1,etatop, - * etabot,inbothd,inhnoh,isig - ilbuf = 1 - ipbuf = 0 - call getset(nv,noinst,mtrnuml,mtrdenl,mtrnmp,mtrdnp,xmtrnum0, - * npages,nsyst,musicsize,fracindent,istype0,inameq, - * clefq,sepsymq,pathnameq,lpath,isig0) - if (ismidi) then -c -c Initial key signature and meter for pickup bar -c 130313 Unless explicit miditranspose for all parts (to be dealt with later), -c want concert sig (isig0) here. K+n+m will have changed sig to isig -c call midievent('k',isig,0) -c 130316 -c call midievent('k',isig0,0) -c call midievent('k',midisig,0) -c -c Above is probably cosmetic -c call midievent('k',midisig,0) - if (xmtrnum0 .gt. tol) then -c -c We have a pickup. Some tricky stuff to get a meter: -c - xntrial = xmtrnum0 - do 5 ip2 = 0 , 5 - if (abs(mod(xntrial,1.)) .lt. tol) go to 6 - xntrial = xntrial*2 -5 continue - print*,'Problem finding meter for pickup bar' - xntrial = 1. - ip2 = 0 -6 continue - call midievent('m',nint(xntrial),2**ip2*mtrdenl) - else -c -c No pickup, enter the starting meter -c - call midievent('m',mtrnuml,mtrdenl) - end if - end if -c -c Set musicsize from value passed in common, due to possible reset by S[n]m16 -c - musicsize = musize - read(12,*)npages,widthpt,height,hoffpt,voffpt,nsyst, - * (nsystp(ipa),xnsttop(ipa),xintstaff(ipa),ipa=1,npages),iauto -c -c If default width ever changes, must adjust this stmt. -c - slfac1 = 0.00569*524./widthpt - figbass = .false. - read(13,*)ifig - if (ifig .eq. 1) then - figbass = .true. - open(14,status='SCRATCH') - write(14,'(a)')sq//'def'//sq//'fixdrop{'//sq//'advance'//sq// - * 'sysno by 1'//sq//'ifcase'//sq//'sysno%' - end if - lastchar = .false. - ibcoff = 0 - if (xmtrnum0 .gt. 0.) ibcoff = -1 - open(11,status='SCRATCH') -c -c vshrink for the first page is calculated in topfile, -c and if true set interstaff=10. vshrink affects Titles. -c Must also save vshrink for page ending. -c - call topfile(basenameq,lbase,nv,clefq,noinst,musicsize, - * xintstaff(1),mtrnmp,mtrdnp,vshrink,fbar,fontslur) -c -c ninow is working value of # of instruments. noinst is max #, and # at start. -c - ninow = noinst -c -c Save original printed meter in case movement breaks -c - movnmp = mtrnmp - movdnp = mtrdnp -c - if (islast .and. figbass .and. musicsize.eq.16) - * write(11,'(a)')sq//'def'//sq//'figfont{'//sq//'eightrm}%' -c - if (islast .and. isligfont) then - if (musicsize .eq. 16) then - write(11,'(a)')sq//'font'//sq//'ligfont=cmrj at 8pt%' - else - write(11,'(a)')sq//'font'//sq//'ligfont=cmrj at 10pt%' - end if - end if - lenbeat = ifnodur(mtrdenl,'x') - if (mtrdenl .eq. 2) lenbeat = 16 - lenb1 = mtrnuml*lenbeat - if (mtrdenl .eq. 2) lenb1 = lenb1*2 - call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) - lenb0 = nint(xmtrnum0*lenbeat) - if (mtrdenl .eq. 2) lenb0 = lenb0*2 - if (lenb0 .ne. 0) then - if (islast) write(11,'(a)')sq//'advance'//sq//'barno by -1' - lenbar = lenb0 - else - lenbar = lenb1 - end if -c -c Initialize full-program variables -c - fixednew = 0. - scaldold = 0. - fintstf = -1. - gintstf = 1. - nasksys = 0 - ibarcnt = 0 - iline = 0 - movbrk = 0 - isystpg = 0 - ipage = 1 - iccount = 128 - iask = 0 - nhstot = 0 - nb = 1 - if (.not.optimize) jprntb = 81 - idsig = 0 - iflagbot = 0 -c -c Next 5 are raise-barno parameters. irzbnd is integer part of default level. -c - irzbnd = 3 - if (isig.eq.3 .and. clefq(nv).eq.'t') irzbnd = 4 - is1n1 = 0 - isnx = 0 - SlurCurve = 0. - ishort = 0 - nocodabn = .false. - mbrsum = 0 - nmbr = 0 -c -c 111109 Made global rather than per gulp -c - ndyn = 0 - ispoi = .false. - slint = .false. - lrptpend = .false. - rptnd1 = .false. - rptfq2 = 'E' - rptprev = .false. - onvolt = .false. - flgndb = .false. - fbon = .false. - shifton = .false. - ornrpt = .false. - setis = .false. - lowdot = .false. - rename = .false. - nobar1 = .false. - equalize = .false. - usevshrink = .true. - WrotePsslurDefaults = .false. - OptLineBreakTies = .false. - HeaderSpecial = .false. -c -c vshrink is initialized in topfile -c - stickyS = .false. -c -c ixrest = 1 or 2 if xtup has started with a rest -c - do 1 ivx = 1 , nm - ixrest(ivx) = 0 - fullsize(ivx) = 1. -c -c Set legacy note level to middle c as default -c - ndlev(ivx,1) = 29 - ndlev(ivx,2) = 29 -1 continue - npreslur = 0 - nhssys = 0 - listslur = 0 - do 31 i = 1 , 202 - isdat1(i) = 0 - isdat2(i) = 0 -31 continue - nsdat = 0 -c -c Initialize flag for figures in any other voice than 1 -c - ivxfig2 = 0 -c -c Initialize for loop over gulps -c - firstgulp = .true. -c -c Start a gulp -c -30 loop = .true. - notcrd = .true. - isbjmp = .false. - isbj2 = .false. - autofbon = .false. - tautofb = 0. - nbars = 0 - nfigs(1) = 0 - nfigs(2) = 0 - ngrace = 0 - ntrill = 0 - ncrd = 0 - nudorn = 0 - nlit = 0 - nvolt = 0 - ibarmbr = 0 - nudsp = 0 -c ndyn = 0 ! 111109 - ntxtdyn = 0 - nbc = 0 - NumArpShift = 0 - do 3 i = 1 , 37 - graspace(i) = 0. -3 continue -c -c Now initialize up to nv. Do it in getnote as r'qd for 2nd voices per syst. -c and also if nv increases in an 'M' directive. -c - do 4 iv = 1 , nv - call newvoice(iv,clefq(iv),.false.) -4 continue -c -c Check if endsymbol was set earlier -c - if (rptnd1) then - rptnd1 = .false. - rptfq2 = rptfq1 - else -c -c Only use if movbrk>0, to signal default ('RD') -c - rptfq2 = 'E' - end if - iv = 1 - ivx = 1 -2 if (loop) then -c -c Within this loop, nv voices are filled up for the duration of the block. -c On exit (loop=.false.) the following are set: nnl(nv),itsofar(nv) -c nolev(nv,nnl(nv)),nodur(..),accq(..),irest(..). -c nbars is for this input block. -c Only at the beginning of an input block will there be a possible mtr change, -c signalled by a nonzero mtrnuml. (which will be re-zeroed right after change) -c - call getnote(loop) - if (lastchar) go to 40 - go to 2 - end if -c -c Finished an input block (gulp). -c - if (ismidi) then -c -c Put rests into midi array for 2nd lines that were not used in this gulp. -c - do 60 iv = 1 , nv - if (twoline(iv) .and. nvmx(iv).eq.1) then - if (firstgulp .and. lenb0.ne.0) then - call addmidi(midchan(iv,2),0,0,0, - * (nbars-1.)*lenbar+lenb0,.true.,.false.) - else - call addmidi(midchan(iv,2),0,0,0,1.*nbars*lenbar,.true., - * .false.) - end if - end if -60 continue - end if - nvolt = 0 - do 28 iv = 1 , nm - nudoff(iv) = 0 - maxdotmv(iv) = ndotmv(iv) - ndotmv(iv) = 0 -28 continue -c -c Put stuff at top of p.1. Must wait until now to have read title info. -c - if (ibarcnt .eq. 0) then - call puttitle(inhnoh,xnsttop(ipage), - * etatop,sq,etait,etatc,etacs1,nv,vshrink,sepsymq) - if (HeaderSpecial) -c -c Write special header for first page -c - * write(11,'(a)')chax(92)//'special{header=psslurs.pro}%' - end if - do 10 ibar = 1 , nbars - ibarcnt = ibarcnt+1 - bar1syst = ibarcnt .eq. iauto - ndig = max(0,int(log10(.001+ibarcnt+ibcoff))) - if (islast) - * write(11,'(a11,i'//chax(50+ndig)//')') - * '% Bar count',ibarcnt+ibcoff - if (ibar .ne. ibarmbr) then - if (.not.optimize) call outbar(ibarcnt+ibcoff,jprntb) - else - if (.not.optimize) then - write(*,'(/,a20,i4,a1,i4)')' Multibar rest, bars', - * ibarcnt+ibcoff,'-',ibarcnt+ibcoff+mbrest-1 - write(15,'(/,a20,i4,a1,i4)')' Multibar rest, bars', - * ibarcnt+ibcoff,'-',ibarcnt+ibcoff+mbrest-1 - jprntb = 0 - end if - ibcoff = ibcoff+mbrest-1 -c if (ibar.eq.1 .and. firstgulp .and. -c * .not.btest(islur(1,1),5)) xb4mbr = facmtr*musicsize - if (ibar.eq.1 .and. firstgulp .and. - * .not.btest(islur(1,1),5)) xb4mbr = -.2*musicsize - end if -c -c Move the read to after end-of-bar hardspace checks, so we get right poenom -c at end of a line. -c if (bar1syst) read(12,*) poenom -c -c Check for clef at start of bar. No slide yet. Also flags at end of prev. -c bar. This block is run at the start of every bar. May fail for flag at -c end of last bar. To account for necc. hardspaces, compute and store -c nhssys = # of hard spaces for this system -c hesk(nhssys) = elemskips avialable -c hpts(nhssys) = hard points needed, including notehead -c Here, merely insert placeholder into output. Later, when poe is computed, -c compute additional pts and store them in hpttot(1...nhstot). Finally in -c subroutine askfig, write true pts where placeholders are. -c - ioff = 0 - if (ibar .gt. 1) ioff = nib(1,ibar-1) - clchb = btest(islur(1,ioff+1),15) - putmbr = .false. - if (ismbr) then - if (clchb) then -ccc -ccc Clef change and multi-bar rest coming up. Kluge to get space at end of rest. -ccc - write(11,'(a)')sq//'let'//sq//'mbrt'//sq//'mbrest' - * //sq//'def'//sq//'mbrest#1#2#3{%' - write(11,'(a14,f4.1,a)')sq//'mbrt{#1}{#2}{',musicsize*.55, - * '}'//sq//'global'//sq//'let'//sq//'mbrest'//sq//'mbrt}%' -cc -cc RDT suggestion is inset blank barline - 160103 Abandoned -cc -c write(11,'(a)')sq//'setemptybar'//sq//'bar'//sq//'qspace' -c * //sq//'advance'//sq//'barno-1' - end if - ismbr = .false. - putmbr = .true. - end if - if (ibar .eq. ibarmbr) ismbr = .true. -c -c Set flag here so at start of next bar, if there's a clef change, can add space -c after the mbr with the above kluge -c - if (.not.(clchb .or. flgndb)) go to 23 -c -c Must check available space -c - ptsndb = 0. -c -c Zero out block signal -c - if (clchb) islur(1,ioff+1) = ibclr(islur(1,ioff+1),15) -c -c In this loop, we determine how much hardspace is needed (if any) -c 9/7/97 Note that for last bar in input block, if number of lines of -c music decreases in new block, highest numbered ones won't be checked -c since the loop below covers the new nvmx(iv), not necessarily the old -c one. -c 4/18/98 Apparently nmxsav was a solution to the above problem -c - do 16 iv = 1 , nv - do 16 kv = 1 , nvmxsav(iv) - ivx = ivmxsav(iv,kv) - ptsndv = flgndv(ivx)*wheadpt - ioff = 0 - if (ibar .gt. 1) then - ioff = nib(ivx,ibar-1) - ip = ioff - if (ibar.gt.2) ip = ioff-nib(ivx,ibar-2) -c prevtn(ivx) = tnote(iand(ipl(ivx,ip),255)) - prevtn(ivx) = tnote(ipl2(ivx,ip)) -c -c If ibar=1 (1st bar in input block), prevtn(ivx) was set at end of makeabar. -c - end if -c -c Only allow clef changes when ivx <= nv -c - if (ivx .le. nv) then - clchv(iv) = clchb .and. btest(islur(iv,ioff+1),11) - if (clchv(iv)) then -c -c Clef change in this voice. Turn off signal. Get space avail. -c - islur(iv,ioff+1) = ibclr(islur(iv,ioff+1),11) - if (abs(prevtn(iv)-space(nb)).lt.tol) ptsndv = - * ptsndv+clefend*wheadpt - end if - end if - ptsndb = max(ptsndb,ptsndv+wheadpt*xspfac) -16 continue -c -c ???? where is nb set??? nb probably in left over from makeabar -c - esk = feon(space(nb)*squez(nb)) - ptsdflt = esk*poenom-wheadpt -c if ((ptsndb.gt.ptsdflt.or.ptsgnd.gt.0.) .and. movbrk.eq.0) then - if ((ptsndb.gt.ptsdflt.or.ptsgnd.gt.0.) .and. movbrk.eq.0 - * .and. .not.putmbr) then -c -c Must ADD hardspace! So put in a placeholder, and store params for later. -c - if (islast) write(11,'(a)')sq//'xardspace{ pt}%' - nhssys = nhssys+1 - if (ptsndb-ptsdflt .gt. ptsgnd-poenom*eskgnd) then - hesk(nhssys) = esk - hpts(nhssys) = ptsndb+wheadpt - else - hesk(nhssys) = eskgnd - hpts(nhssys) = ptsgnd+wheadpt - end if - fixednew = fixednew+hpts(nhssys) - scaldold = scaldold+hesk(nhssys) - end if - if (clchb) then - do 17 iv = 1 , nv - if (clchv(iv)) then - notexq = sq//'znotes' - lnote = 7 - do 24 iiv = 2 , iv - notexq = notexq(1:lnote)//sepsymq(iiv-1) - lnote = lnote+1 -24 continue -c -c Recompute ioff since it will vary from voice to voice -c - if (ibar .eq. 1) then - ioff = 0 - else - ioff = nib(iv,ibar-1) - end if -c -c Must call clefsym to get nclef, even if there is a movement break -c - call clefsym(islur(iv,ioff+1),fmtq,lclef,nclef) -c -c If clefq = '8', must change '0' in pos'n 9 to '8' -c - if (btest(ipl(iv,ioff+1),2)) fmtq = - * fmtq(1:8)//'8'//fmtq(10:10) - if (movbrk.eq.0 .and. - * islast) - * write(11,'(a)')notexq(1:lnote)//fmtq(1:lclef)//sq//'en%' - call wsclef(iv,ninow,nclef) -c -c Set new flag to be used just outside this loop, to kluge -c any calls to \CenterBar for full-bar rests, to make room for clef. -c - newclef = .true. -c -c 151220 -c wrong test: -c If clefq = '8', must add eg \settrebleclefsymbol3\treblelowoct% -c Replaced with right one. But also, clefq(iv) seems to stay at 8 here, -c and if we change from TLO to normal clef, need to resetclefsymbols -c -c if (clefq(iv) .eq. '8') then - if (btest(ipl(iv,ioff+1),2)) then -c -c Find instrument number for voice iv -c - iv1 = 1 - do 1111 iinst = 1 , ninow - if (iv .lt. iv1+nspern(iinst)) go to 2222 - iv1 = iv1+nspern(iinst) -1111 continue - print* - print*,'Should not be here in pmxb!' - call stop1() -2222 continue - if (iinst .le. 9) then - write(11,'(a20,i1,a)')sq//'settrebleclefsymbol',iinst, - * sq//'treblelowoct%' - else - write(11,'(a20,i2,a)')sq//'settrebleclefsymbol',iinst, - * sq//'treblelowoct%' - end if - c8flag(iv) = .true. - else - if (clefq(iv) .eq. '8') then - write(11,'(a20)')sq//'resetclefsymbols' - end if - end if - end if -17 continue - if (islast) write(11,'(a)')sq//'pmxnewclefs' - end if -23 continue -c -c Kluge \CenterBar for whole bar rests if necessary -c - if (newclef .and. centrests) then -c write(11,'(a)')sq//'def'//sq//'value{11}%' - nvalue = nint(.55*musicsize) - if (nvalue .gt. 10) then - write(11,'(a11,i2,a2)') - * sq//'def'//sq//'value{',nvalue,'}%' - else - write(11,'(a11,i1,a2)') - * sq//'def'//sq//'value{',nvalue,'}%' - end if - end if - newclef = .false. - centrests = .false. -c -c End of loop for end-of-bar hardspaces and non-movbrk clef symbol. -c - if (bar1syst) then - read(12,*) poenom - end if -c -c Repeat symbols. Haven't slid down yet, so use islur(1,nib(1,ibar-1)+1) -c - if (ibar .eq. 1) then - islnow = islur(1,1) -c iornqnow = iornq(1,1) - iplnow = ipl(1,1) - else - islnow = islur(1,nib(1,ibar-1)+1) -c iornqnow = iornq(1,nib(1,ibar-1)+1) - iplnow = ipl(1,nib(1,ibar-1)+1) - end if -c -c Check for R-symbols set at end of prior input block -c - if (movbrk.eq.0 .and. rptfq2.ne.'E') then - if (rptfq2 .eq. 'D') then - islnow = ibset(islnow,26) - else if (rptfq2 .eq. 'r') then - islnow = ibset(islnow,6) - else if (rptfq2 .eq. 'd') then - islnow = ibset(islnow,8) - else if (rptfq2 .eq. 'b') then - islnow = ibset(islnow,25) - else - print* - print*,'Illegal symbol with "R" at end of input block:', - * rptfq2 - call stop1() - end if - rptfq2 = 'E' - end if - if (iand(islnow,352) .ne. 0) then -c -c Bit 5(lrpt), 6(rrpt), or 8(doublebar) has been set -c - lrpt = btest(islnow,5) - rrpt = btest(islnow,6) - lrptpend = lrpt.and.bar1syst - if (lrpt .and. .not.lrptpend) then - if (rrpt) then - if (islast) write(11,'(a)')sq//'setleftrightrepeat' - fixednew = fixednew+wheadpt*lrrptfac-0.4 - else - if (islast) write(11,'(a)')sq//'setleftrepeat' - fixednew = fixednew+wheadpt*rptfac-0.4 - end if - else if (rrpt) then - if (islast) write(11,'(a)')sq//'setrightrepeat' - fixednew = fixednew+wheadpt*rptfac-0.4 - else if (btest(islnow,8)) then - if (islast) write(11,'(a)')sq//'setdoublebar' - fixednew = fixednew+wheadpt*dbarfac-0.4 - end if - else if (btest(islnow,26)) then -c -c doubleBAR -c - if (islast) write(11,'(a)')sq//'setdoubleBAR' - fixednew = fixednew+wheadpt*ddbarfac-0.4 -c else if (btest(iornqnow,29)) then - else if (btest(iplnow,0)) then -c -c no bar line -c -c-- if (islast) write(11,'(a)')sq//'setzalaligne' -c++ - if (islast) then - if (movbrk .eq. 0) then - write(11,'(a)')sq//'setzalaligne' - else -c -c Encountered "Rz" at start of input block at start of new movement, Must -c use newmovement macro with arg 4 rather than setzalaligne, since former -c already redefines stoppiece. -c - rptfq2 = 'z' - end if - end if -c++ - fixednew = fixednew-0.4 - end if -c -c 1st and 2nd endings -c - svolta = btest(islnow,7) - evolta = btest(islnow,9) - if (evolta) then - if (btest(islnow,10)) then - if (islast) write(11,'(a)')sq//'endvoltabox' - else - if (islast) write(11,'(a)')sq//'endvolta' - end if - onvolt = .false. - end if - if (svolta) then - nvolt = nvolt+1 - lvoltxt = index(voltxtq(nvolt),' ')-1 - if (lvoltxt .eq. 1) then - if (islast) write(11,'(a)')sq//'Setvolta' - * //voltxtq(nvolt)(1:1)//'%' - else - if (islast) write(11,'(a)')sq//'Setvolta'//'{'// - * voltxtq(nvolt)(1:lvoltxt)//'}%' - end if - onvolt = .true. - end if - if (ibar .gt. 1) then - ipnow = nib(1,ibar-1)+1 - else - ipnow = 1 - end if - iplnow = ipl(1,ipnow) - if (bar1syst) then -c -c If listslur>0, then there is at least one slur or tie carried over the break -c - ispstie = .false. - if (OptLineBreakTies .and. .not.fontslur .and. listslur.ne.0 - * .and. islast) - * call LineBreakTies(isdat1,isdat2,isdat3,isdat4, nsdat, - * ispstie,sepsymq) - iline = iline+1 -c -c End an old system, Start a new system -c -c Reduce space before mbrest at start of system -c Need this even if no accidentals in key signature -c - if (ibar.eq.ibarmbr) xb4mbr = -.2*musicsize -c - if (iline .ne. 1) then -c -c Not first line. -c Get corrected poe = points/elemskip for *previous* system -c - wdpt = widthpt*(1-fracindent) - poe = (wdpt-fsyst*musicsize-0.4*nbarss-fixednew)/ - * (elsktot+fbar*nbarss-scaldold) - isyscnt = isyscnt+1 - poevec(isyscnt) = poe -c -c Transfer data for system into global arrays to hold until very end -c - do 9 ia = 1 , nasksys - iask = iask+1 - ask(iask) = (wasksys(ia)/poe-abs(elasksys(ia))) - * /poefa(iline-1) -c -c Only admit negative ask if it was user-defined space, signalled by elask<=0. -c - if (elasksys(ia).gt.0) ask(iask)=dim(ask(iask),0.) -9 continue - do 25 ia = 1 , nhssys - nhstot = nhstot+1 - hpttot(nhstot) = max(hpts(ia)-hesk(ia)*poe,0.) -25 continue -c -c Reset counters for new system -c - scaldold = 0. - fixednew = 0. - nasksys = 0 - nhssys = 0 - end if -c -c End of if block for first bar of non-first system. Still 1st bar, any system -c - if (islast.and.figbass) write(11,'(a)')sq//'fixdrop%' - isystpg = isystpg+1 -c -c Try moving the next stmt way down, to fix a bug and get \eject printed at -c end of single-system page. -c if (isystpg .eq. nsystp(ipage)) isystpg = 0 - read(12,*)nbarss,elsktot,fsyst,frac,eonk,ewmxk - if (iline .gt. 1) fracindent=frac - if (figbass) then - ifigdr(1,iline) = 4 - ifigdr(2,iline) = 4 - end if - slfac = slfac1*musicsize*elsktot - if (iline .ne. 1) then -c -c For the line just _finished_, put figdrop in separate file. -c - if (figbass) write(14,'(a9,i2,a10,i2,1x,a4)') - * sq//'figdrop=',ifigdr(1,iline-1), - * ' '//sq//'figdtwo=',ifigdr(2,iline-1),sq//'or%' -c -c Check slurs in top staff for interference w/ barno. Only check when -c # if digits in barno >= |isig| But to keep on/off phasing, must ALWAYS -c keep track of ons and offs when |isig|<=3. -c - ndigbn = int(alog10(ibarcnt+ibcoff+.01))+1 - isnx = 0 - if (ndigbn.ge.iabs(isig) .and. is1n1.gt.0) then -c -c There's a slur in top voice over the line break, hgt=is1n1, idcode=is2n1 -c Look for termination in remainder of this input block. If not found, -c just use is1n1. Remember, haven't slid down yet. -c - ioff = 0 - if (ibar .gt. 1) ioff = nib(ivmx(nv,nvmx(nv)),ibar-1) - do 50 isdat = 1 , nsdat - if (igetbits(isdat1(isdat),5,13).eq.ivmx(nv,nvmx(nv)) - * .and. .not.btest(isdat1(isdat),11) - * .and. igetbits(isdat1(isdat),7,19).eq.is2n1) then -c -c Found slur ending. Just check note height, can't do fine adjustments. -c -c is1n1 = max(is1n1,igetbits(isdat2(nsdat),7,19)) - is1n1 = max(is1n1,igetbits(isdat2(isdat),7,19)) - go to 51 - end if -50 continue -c -c If exiting loop normally, did not find end of slur. c'est la vie. -c -51 continue - isnx = idim(is1n1,ncmid(nv,1)+1+irzbnd) - if (isnx .gt. 0) then -c -c AHA! Slur likely to interfere with barno. -c -c Modified 090525 to use \bnrs -c - slint = .true. - fmtq = '(a16,i1,a14)' - if (irzbnd+isnx .gt. 9) fmtq = '(a16,i2,a14)' - if (islast) write(11,fmtq)sq//'def'//sq//'raisebarno{', - * irzbnd+isnx,'.5'//sq//'internote}%' -c if (islast) then -c if (isnx .le. 9) then -c write(11,'(a5,i1,a2)')sq//'bnrs',isnx,'0%' -c else -c write(11,'(a6,i2,a3)')sq//'bnrs{',isnx,'}0%' -c end if -c end if -c - end if - end if - if (movbrk .gt. 0) then -c -c movbrk = 0 -c Move the reset down, so can use movbrk>0 to stop extra meter prints. -c -c New movement. Redefine stoppiece, contpiece. These will be called either -c explicitly or as part of alaligne. -c indsym = 0,1,2 for doubleBAR , doublebar, rightrepeat. -c This is passed to \newmovement. -c - if (rptfq2 .eq. 'E') rptfq2 = 'D' - indsym = index('Ddrbz',rptfq2)-1 - rptfq2 = 'E' -c -c Also check for Rd or Rr set the normal way -c - if (btest(islnow,8)) then - indsym = 1 - else if (btest(islnow,6)) then - indsym = 2 - end if - if (indsym .lt. 0) then - print* - print*,'Illegal end symbol before "/"' - call stop1() - end if -c -c Check for continuation (no bar number reset) -c - if (islast.and.nobar1) then - write(11,'(a)')sq//'advance'//sq//'barno1' - * //sq//'global'//sq//'startbarno'//sq//'barno%' -c -c Need above for shortening case mcm with Mc -c - end if -c -c Per Rainer's suggestion, changing \nbinstruments via 3rd arg of \newmovement -c -c if (movgap .lt. 10) then -c if (islast) write(11,'(a12,2i1,a1)') -c * sq//'newmovement',movgap,indsym,'%' -c else -c if (islast) write(11,'(a13,i2,a1,i1,a1)') -c * sq//'newmovement{',movgap,'}',indsym,'%' -c end if - if (islast) then - nmq = sq//'newmovement' - lnmq = 12 - if (movgap .lt. 10) then - lnmq = 14 - write(nmq(13:14),'(2i1)')movgap,indsym - else - lnmq = 17 - write(nmq(13:17),'(a1,i2,a1,i1)')'{',movgap,'}',indsym - end if - if (ninow .lt. 10) then - lnmq = lnmq+1 - write(nmq(lnmq:lnmq),'(i1)')ninow - else - lnmq = lnmq+4 - write(nmq(lnmq-3:lnmq),'(a1,i2,a1)')'{',ninow,'}' - end if - lnmq = lnmq+1 - write(nmq(lnmq:lnmq),'(a1)')'%' - if (ishort .eq. 4) then -c -c Ending Short-blank-coda -c - write(11,'(a)')sq//'Endpiece}}%' - end if - write(11,'(a)')nmq(1:lnmq) - if (ishort .eq. 2) then - write(11,'(a)')sq//'stoppiece}}%' - ishort = 5 - else if (ishort .eq. 4) then - write(11,'(a)')sq//'let'//sq//'stoppiece'//sq// - * 'holdstop%' -c -c Since we bypass newmovement, need to set the vertical gap. -c - if (movgap .gt. 10) then - write(11,'(a6,i2,a11)') - * sq//'vskip',movgap,sq//'internote%' - else if (movgap .gt. 0) then - write(11,'(a6,i1,a11)') - * sq//'vskip',movgap,sq//'internote%' - end if - ishort = 6 - end if - if ((ishort.eq.5.or.ishort.eq.6).and..not.rename) then - do 62 iinst = 1 , ninow - if (islast) then - if (iinst .lt. 10) then - write(11,'(a8,i1,a3)')sq//'setname',iinst,'{}%' - else - write(11,'(a9,i2,a4)')sq//'setname{',iinst, - * '}{}%' - end if - end if -62 continue - end if - rename = .false. - end if -c -c Change generalmeter if necessary -c - if (islast) then - call wgmeter(mtrnmp,mtrdnp) - end if - mtrnuml = 0 -c -c (Moved all name-writing to getnote, right when 'M' is detected) -c - if (btest(iplnow,28)) then -c -c Key signature at movement break -c - iplnow = ibclr(iplnow,28) - if (isig .gt. 0) then - if (islast) write(11,'(a18,i1,a2)') - * sq//'generalsignature{',isig,'}%' - else - if (islast) write(11,'(a18,i2,a2)') - * sq//'generalsignature{',isig,'}%' - end if - if (islast .and. LaterInstTrans) then - call Writesetsign(nInstTrans,iInstTrans,iTransKey, - * LaterInstTrans) - end if - end if - if (parmov .ge. -.1) then -c -c Resent paragraph indentation -c - ipi = parmov*widthpt+.1 - if (ipi .lt. 10) then - if (islast) write(11,'(a11,i1,a2)') - * sq//'parindent ',ipi,'pt' - else if (ipi .lt. 100) then - if (islast) - * write(11,'(a11,i2,a2)')sq//'parindent ',ipi,'pt' - else - if (islast) - * write(11,'(a11,i3,a2)')sq//'parindent ',ipi,'pt' - end if - end if - if (ishort .eq. 6) then - if (iflagbot .eq. 1) then - write(11,'(a)')sq//'vfill'//sq//'eject' -c iflagbot = 0 -c ishort = 0 - else - write(11,'(a)')sq//'contpiece' - end if -c -c Zero ishort later trying to write alaligne -c - end if - end if ! End of movement break stuff - if (isystpg .eq. 1) then -c -c First line on a page (not 1st page, still first bar). Tidy up old page -c then eject. -c -c Removed this 5/13/01 as it was causing double endvoltas. This probably -c is only needed at the end in case there is no endvolta specified. -c if (onvolt) then -cc if (islast) write(11,'(a)')sq//'endvoltabox%' -cc onvolt = .false. -c end if -c -c -c Check for meter change at start of a new PAGE -c - if (mtrnuml .gt. 0) then -c -c Meter change at start of a new page. Ugly repeated coding here. -c - mtrnms = mtrnuml - call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) - mtrnuml = mtrnms - if (movbrk .eq. 0 .and. islast) then - call wgmeter(mtrnmp,mtrdnp) - end if - end if -c -c Key signature change? -c - if (btest(iplnow,28) .and. movbrk.eq.0) then - notexq = sq//'xbar'//sq//'addspace{-'//sq// - * 'afterruleskip}'//sq//'generalsignature{' - lnote = 49 - if (isig .lt. 0) then - notexq = notexq(1:49)//'-' - lnote = 50 - end if - if (islast) write(11,'(a)') - * notexq(1:lnote)//chax(48+abs(isig))//'}%' - if (islast .and. LaterInstTrans) then - call Writesetsign(nInstTrans,iInstTrans,iTransKey, - * LaterInstTrans) - end if - if (islast .and. ignorenats) - * write(11,'(a)')sq//'ignorenats%' - if (islast) write(11,'(a)')sq//'zchangecontext'//sq - * //'addspace{-'//sq//'afterruleskip}' - * //sq//'zstoppiece'//sq//'PMXbarnotrue%' - else if (mtrnuml.gt.0 .and. movbrk.eq.0) then -c -c Meter change but no signature change -c - if (islast) - * write(11,'(a)')sq//'xchangecontext'//sq//'addspace{-'// - * sq//'afterruleskip}'//sq//'let'//sq//'bnat'//sq// - * 'barnoadd%' - if (islast) - * write(11,'(a)')sq//'def'//sq//'barnoadd{'//sq//'let'// - * sq//'barnoadd'//sq//'bnat}'//sq//'zstoppiece%' - else - if (islast) then - if ((ishort.eq.4.or.ishort.eq.2) - * .and. iflagbot.eq.1) then - ntmp = ibarcnt-ibarcnt0-nmbr+mbrsum - if (ntmp .le. 9) then - shortfraq(1:1) = char(48+ntmp) - lntmp = 1 - else - write(shortfraq(1:2),'(i2)')ntmp - lntmp = 2 - end if - write(11,'(a)')sq//'endpiece}}'//sq//'advance'//sq - * //'barno'//shortfraq(1:lntmp) -c -c Move down so can insert fil@begin -c iflagbot = 0 -c ishort = 0 -c - else if ((ishort.ne.6.and.ishort.ne.2) .or. - * iflagbot.ne.1) then - write(11,'(a)')sq//'stoppiece%' - end if - end if - end if -c -c This is the key spot when vshrink is used. Value of vshrink here comes from -c just after the prior pagebreak, i.e., it is not affected by "Av" -c that may have been entered at this pagebreak, since that only affects usevshrink. -c So choose page *ending* (with or without \vfill) depending on old vshrink. Then -c check value of usevshrink to reset vshrink if necessary for the new page, where -c we have to set \interstaff and later call puttitle. -c Top of first page needs special treatment. For this we use -c novshrinktop, which was set in g1etnote on the first pass, since on -c second pass, vshrink at top of page one is dealt with in topfile, which is called -c *before* any reading in any "Av" at the top of the first input block. -c - if (.not.vshrink) then - if (islast .and. bottopgap) then - if (abs(botamt) .gt. 1.e-6) then - if (botamt .gt. 9.95) then - fmtq = '(a,f4.1,a)' - else if (botamt .gt. 0.) then - fmtq = '(a,f3.1,a)' - else if (botamt .gt. -9.95) then - fmtq = '(a,f4.1,a)' - else - fmtq = '(a,f5.1,a)' - end if - write(11,fmtq)sq//'null'//sq//'vskip',botamt, - * sq//'Internote%' - end if - end if - xnstbot = xnsttop(ipage)*etabot/etatop - if (xnstbot .lt. 9.95) then - fmtq = '(a,f3.1,a)' - else - fmtq = '(a,f4.1,a)' - end if - if (islast) write(11,fmtq)sq//'vskip',xnstbot, - * sq//'Interligne'//sq//'eject%' - if (islast .and. bottopgap) then - if (abs(topamt) .gt. 1.e-6) then - if (topamt .gt. 9.95) then - fmtq = '(a,f4.1,a)' - else if (topamt .gt. 0.) then - fmtq = '(a,f3.1,a)' - else if (topamt .gt. -9.95) then - fmtq = '(a,f4.1,a)' - else - fmtq = '(a,f5.1,a)' - end if - write(11,fmtq)sq//'null'//sq//'vskip',topamt, - * sq//'Internote%' - end if - bottopgap = .false. - end if - else - if (islast) then - if (iflagbot.eq.1.and.ishort.eq.6)then -c -c cleanup for case bcm only -c - iflagbot = 0 - ishort = 0 - else - write(11,'(a)') sq//'vfill'//sq//'eject%' - if (iflagbot.eq.1.and.ishort.eq.2) then -c Clean up case bsl only - write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' - * //sq//'makeatother' - iflagbot = 0 - ishort = 0 - end if - end if - end if - end if - ipage = ipage+1 -c -c Now that page is ejected, compute new vshrink -c - vshrink = xintstaff(ipage).gt.20 .and. usevshrink - if (vshrink) then - xinsnow = 10 - else - xinsnow = xintstaff(ipage) - end if - if (fintstf.gt.0 .and. ipage.gt.1) then - xinsnow = xinsnow*fintstf/gintstf - fintstf = -1. - end if - if (xinsnow .lt. 9.95) then - fmtq = '(a,f3.1,a)' - else if (xinsnow .lt. 99.95) then - fmtq = '(a,f4.1,a)' - else - fmtq = '(a,f5.1,a)' - end if -c -c Vertical spacing parameters, then restart -c - if (is4bignv) xinsnow = .95*xinsnow - if (islast) then - write(11,fmtq)sq//'interstaff{',xinsnow, - * '}'//sq//'contpiece' - end if -c -c Check for meter change at start of a new PAGE -c - if (mtrnuml .gt. 0) then -c -c Meter change at start of a new page -c - call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) - if (movbrk .eq. 0) then - if (islast) then - call wgmeter(mtrnmp,mtrdnp) - end if - if (mtrdnp .gt. 0) then - if (islast) write(11,'(a)')sq//'newtimes2%' - if (ibar .eq. ibarmbr) xb4mbr = -.2*musicsize - end if - end if - end if -c -c If no real titles here, which there probably will never be, make vertical -c space at page top with \titles{...}. headlog=.false.<=>no real titles -c - if (ishort.eq.4 .and. iflagbot.eq.1) then - ishort = 0 - iflagbot = 0 - write(11,'(a)')sq//'makeatletter'//sq//'fil@begin'//sq// - * 'makeatother' - end if - call puttitle(inhnoh,xnsttop(ipage),etatop, - * sq,etait,etatc,etacs1,nv,vshrink,sepsymq) - if (HeaderSpecial) -c -c Write special header for first page -c - * write(11,'(a)')chax(92)//'special{header=psslurs.pro}%' - else -c -c First bar of system, not a new page, force line break -c - if (btest(iplnow,28)) then -c -c Signature change -c - notexq = sq//'xbar'//sq//'addspace{-'//sq// - * 'afterruleskip}'//sq//'generalsignature{' - lnote = 49 - if (isig .lt. 0) then - notexq = notexq(1:49)//'-' - lnote = 50 - end if - if (islast) write(11,'(a)')notexq(1:lnote) - * //chax(48+abs(isig))//'}%' - if (islast .and. LaterInstTrans) then - call Writesetsign(nInstTrans,iInstTrans,iTransKey, - * LaterInstTrans) - end if - if (islast) write(11,'(a)')sq//'advance'//sq//'barno-1%' - if (mtrnuml .ne. 0) then -c -c Meter+sig change, new line, may need mods if movement break here. -c - call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) - if (islast) then - call wgmeter(mtrnmp,mtrdnp) - if (ignorenats) write(11,'(a)')sq//'ignorenats%' - write(11,'(a)')sq//'xchangecontext'//sq// - * 'addspace{-'//sq//'afterruleskip}' - * //sq//'zstoppiece'//sq//'PMXbarnotrue'//sq//'contpiece%' - write(11,'(a)')sq//'addspace{-'//sq - * //'afterruleskip}%' - call wgmeter(mtrnmp,mtrdnp) - if (ignorenats) write(11,'(a)')sq//'ignorenats%' - write(11,'(a)')sq//'zchangecontext' - end if - else - if (islast .and. ignorenats) - * write(11,'(a)')sq//'ignorenats%' - if (islast) write(11,'(a)')sq//'xchangecontext'//sq// - * 'addspace{-'//sq//'afterruleskip}' - * //sq//'zstoppiece'//sq//'PMXbarnotrue'//sq//'contpiece%' - end if - else if (mtrnuml.eq.0.and.(ishort.eq.0.or.ishort.eq.6)) - * then -c -c No meter change -c - if (islast) then - if (ishort .ne. 6) then - write(11,'(a)')sq//'alaligne' - else - ishort = 0 - end if - end if - else if (ishort .ne. 0) then - if (ishort .eq. 1) then ! Start short line - write(shortfraq,'(f3.2)')shortfrac - write(11,'(a)')sq//'stoppiece'//sq//'parindent 0pt' - write(11,'(a)')sq//'vskip'//sq//'parskip' - write(11,'(a)')sq//'hbox to'//sq// - * 'hsize{'//sq//'vbox{'// - * sq//'hsize='//shortfraq//sq//'hsize%' - write(11,'(a)')sq//'contpiece' - write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' - * //sq//'makeatother' - ibarcnt0 = ibarcnt - mbrsum = 0 - ishort = 2 - nmbr = 0 - else if (ishort .eq. 2) then ! End short line, no new mvt - ntmp = ibarcnt-ibarcnt0-nmbr+mbrsum - if (ntmp .le. 9) then - shortfraq(1:1) = char(48+ntmp) - lntmp = 1 - else - write(shortfraq(1:2),'(i2)')ntmp - lntmp = 2 - end if - write(11,'(a)')sq//'stoppiece}}'//sq//'advance'//sq - * //'barno'//shortfraq(1:lntmp) -c -c Not clear why we needed this -c //sq//'startbarno'//sq//'barno%' - write(11,'(a)')sq//'contpiece' - write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' - * //sq//'makeatother' - ishort = 0 - else if (ishort .eq. 5) then ! End short line, new mvt - if (nobar1) then ! Continue bar numbering - write(11,'(a)')sq//'advance'//sq - * //'barno'//char(ibarcnt-ibarcnt0+48) - * //sq//'startbarno'//sq//'barno%' -c -c Must leave in \startbarno to get msm with LMc to work. -c - end if - write(11,'(a)')sq//'startpiece'//sq//'addspace'//sq - * //'afterruleskip%' - ishort = 0 - else if (ishort .eq. 3) then ! Mid line gap, start coda -c May never come thru here. Stuff is done later at least for mcl.pmx - write(shortfraq,'(f3.2)')codafrac - write(11,'(a)')sq//'endpiece}'//sq//'advance'//sq - * //'barno'//char(ibarcnt-ibarcnt0+48)//sq// - * 'startbarno'//sq//'barno%' - write(11,'(a)')sq//'hfill'//sq// - * 'vbox{'//sq//'hsize='//shortfraq//'%' - write(11,'(a)')sq//'contpiece' - write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' - * //sq//'makeatother' - ishort = 4 - else if (ishort .eq. 4) then ! End coda - ntmp = ibarcnt-ibarcnt0-nmbr+mbrsum - if (ntmp .le. 9) then - shortfraq(1:1) = char(48+ntmp) - lntmp = 1 - else - write(shortfraq(1:2),'(i2)')ntmp - lntmp = 2 - end if - write(11,'(a)')sq//'endpiece}}'//sq//'advance'//sq - * //'barno'//shortfraq(1:lntmp) - write(11,'(a)')sq//'contpiece' - write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' - * //sq//'makeatother' - ishort = 0 - mbrsum = 0 - nmbr = 0 - end if - else if (mtrnuml .ne. 0) then - -c -c New meter, no new sig, end of line, not new page. -c -c \generalmeter{\meterfrac{3}{4}}% -c \xchangecontext\addspace{-\afterruleskip}% -c \zalaligne\generalmeter{\meterfrac{3}{4}}\addspace{-\afterruleskip}% -c \zchangecontext -c - call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) - if (movbrk .eq. 0) then - if (islast) then - call wgmeter(mtrnmp,mtrdnp) - end if - if (mtrdnp .gt. 0) then - if (islast) then - write(11,'(a)') - * sq//'let'//sq//'bnat'//sq//'barnoadd' - * //sq//'def'//sq//'barnoadd{'//sq//'empty}%' - write(11,'(a)')sq//'xchangecontext'//sq// - * 'addspace{-'//sq//'afterruleskip}'//sq// - * 'zalaligne'//sq//'let'//sq//'barnoadd'//sq//'bnat' - call wgmeter(mtrnmp,mtrdnp) - write(11,'(a)')sq//'addspace{-'//sq// - * 'afterruleskip}'//sq//'zchangecontext' - end if - if (ibar .eq. ibarmbr) xb4mbr = -.2*musicsize - else - if (islast) write(11,'(a)')sq//'alaligne' - end if - else - if (islast) write(11,'(a)')sq//'alaligne' - end if - end if - end if -c -c Modified 090525 to use \bnrs -c - if (slint) then - slint = .false. - if (islast) write(11,'(a16,i1,a14)')sq//'def'//sq// - * 'raisebarno{',irzbnd,'.5'//sq//'internote}%' - end if - movbrk = 0 - end if -c -c Clean up if we squelched bar number reset at movement break -c - if (nobar1) then - if (islast) write(11,'(a)')sq//'startbarno1' - nobar1 = .false. - end if - read(12,*,end=14)iauto -14 continue -c -c We come thru here for the 1st bar of every system, so initialize is1n1 -c - is1n1 = 0 -c -c Brought down from above -c - if (isystpg .eq. nsystp(ipage)) then - isystpg = 0 -c -c The following is to avoid moving this reset of isystpg, but still send a signal -c down below for last system shortening events -c - if (ishort.eq.2) iflagbot = 1 - end if -c -c Check for linebreak ties -c - if (ispstie) - * call LineBreakTies(isdat1,isdat2,isdat3,isdat4,nsdat, - * ispstie,sepsymq) - else -c -c Not first bar of system -c - if (btest(iplnow,28)) then -c -c Signature change -c - if (mtrnuml .ne. 0) then -c -c Meter+signature change mid line, assume no movement break -c - call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) - if (islast) call wgmeter(mtrnmp,mtrdnp) - notexq = sq//'generalsignature{' - lnote = 18 - if (isig .lt. 0) then - notexq = notexq(1:18)//'-' - lnote = 19 - end if - if (islast) then - iptemp = 48+abs(isig) - charq = chax(iptemp) - notexq = notexq(1:lnote)//charq//'}%' - lnote = lnote+3 - write(11,'(a)')notexq(1:lnote) - if (islast .and. LaterInstTrans) then - call Writesetsign(nInstTrans,iInstTrans,iTransKey, - * LaterInstTrans) - end if - if (ignorenats) write(11,'(a)')sq//'ignorenats%' - write(11,'(a)')sq//'xchangecontext%' - end if - if (ibar .eq. ibarmbr) then -c -c Compute space for multibar rest -c - if (lastisig*isig .ge. 0) then - naccs = max(abs(lastisig),abs(isig)) - else - naccs = abs(lastisig-isig) - end if -c xb4mbr = (facmtr+naccs*.24)*musicsize - xb4mbr = -.2*musicsize - end if - else -c -c Signature change only -c - notexq = sq//'xbar'//sq//'addspace{-'//sq// - * 'afterruleskip}'//sq//'generalsignature{' - lnote = 49 - if (isig .lt. 0) then - notexq = notexq(1:49)//'-' - lnote = 50 - end if - if (islast) - * write(11,'(a)')notexq(1:lnote)//chax(48+abs(isig))//'}%' - if (islast .and. LaterInstTrans) then - call Writesetsign(nInstTrans,iInstTrans,iTransKey, - * LaterInstTrans) - end if - if (islast .and. ignorenats) - * write(11,'(a)')sq//'ignorenats%' - if (islast) write(11,'(a)')sq//'zchangecontext'//sq - * //'addspace{-.5'// sq//'afterruleskip}%' - if (ibar .eq. ibarmbr) then -c -c Compute space for multibar rest -c - if (lastisig*isig .ge. 0) then - naccs = max(abs(lastisig),abs(isig)) - else - naccs = abs(lastisig-isig) - end if -c xb4mbr = naccs*.24*musicsize - xb4mbr = -.2*musicsize - end if - end if - else if (ishort .eq. 3) then -c -c Gap before coda, assumed no signature change! -c - ntmp = ibarcnt-ibarcnt0-nmbr+mbrsum - if (ntmp .le. 9) then - shortfraq(1:1) = char(48+ntmp) - lntmp = 1 - else - write(shortfraq(1:2),'(i2)')ntmp - lntmp = 2 - end if - write(11,'(a)')sq//'endpiece}'//sq//'advance'//sq - * //'barno'//shortfraq(1:lntmp) - if (nocodabn) then - write(11,'(a)')sq//'nobarno' - nocodabn = .false. - end if - write(shortfraq,'(f3.2)')codafrac - write(11,'(a)')sq//'hfill'//sq// - * 'vbox{'//sq//'hsize='//shortfraq//sq//'hsize%' - write(11,'(a)')sq//'contpiece' - write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' - * //sq//'makeatother' - ishort = 4 - else if (mtrnuml .eq. 0) then -c -c No meter change -c - if (islast) write(11,'(a)')sq//'xbar' - else -c -c Change meter midline -c - call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) - if (movbrk .eq. 0) then - if (islast) then - call wgmeter(mtrnmp,mtrdnp) - end if - if (mtrdnp .gt. 0) then - if (islast) then - write(11,'(a,2i1,a)')sq//'newtimes0%' - end if -c if (ibar .eq. ibarmbr) xb4mbr = facmtr*musicsize - if (ibar .eq. ibarmbr) xb4mbr = -.2*musicsize - else - if (islast) write(11,'(a)')sq//'xbar' - end if - end if - end if - end if -c -c Now that xbar's are written, can put in left-repeats at line beginnings -c - if (lrptpend) then - if (islast) write(11,'(a)')sq//'advance'//sq//'barno-1' - * //sq//'leftrepeat' - lrptpend = .false. - end if - if (ibar .gt. 1) then -c -c For bars after first, slide all stuff down to beginning of arrays -c - do 11 iv = 1 , nv - do 11 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - ioff = nib(ivx,ibar-1) - do 12 ip = 1 , nib(ivx,ibar)-ioff - nolev(ivx,ip) = nolev(ivx,ip+ioff) - nodur(ivx,ip) = nodur(ivx,ip+ioff) - nacc(ivx,ip) = nacc(ivx,ip+ioff) - irest(ivx,ip) = irest(ivx,ip+ioff) - islur(ivx,ip) = islur(ivx,ip+ioff) - ipl(ivx,ip) = ipl(ivx,ip+ioff) - iornq(ivx,ip) = iornq(ivx,ip+ioff) - mult(ivx,ip) = mult(ivx,ip+ioff) - if (figbass .and. ivx.eq.1 .or. ivx.eq.ivxfig2) then - if (ivx.eq.1) then - isfig(1,ip) = isfig(1,ip+ioff) - else - isfig(2,ip) = isfig(2,ip+ioff) - end if - end if -12 continue - if (ivx.le.nv .and. ncc(iv).gt.1) then - islide = 0 - do 13 icc = 1 , ncc(iv) - if (tcc(iv,icc) .le. lenbar) then -c -c This time will drop <=0 when slid. -c - islide = icc-1 - ncmidcc(iv,1) = ncmidcc(iv,icc) - else - tcc(iv,icc-islide) = tcc(iv,icc)-lenbar - ncmidcc(iv,icc-islide) = ncmidcc(iv,icc) - end if -13 continue - ncc(iv) = ncc(iv)-islide - tcc(iv,1) = 0. - end if -11 continue - do 15 ig = 1 , ngrace - ipg(ig) = ipg(ig)-nib(ivg(ig),ibar-1) - if (ibar .gt. 2) ipg(ig) = ipg(ig)+nib(ivg(ig),ibar-2) -15 continue - do 21 il = 1 , nlit - iplit(il) = iplit(il)-nib(ivlit(il),ibar-1) - if (ibar .gt. 2) iplit(il) = iplit(il)+nib(ivlit(il),ibar-2) -21 continue - do 22 it = 1 , ntrill - iptrill(it) = iptrill(it)-nib(ivtrill(it),ibar-1) - if (ibar .gt. 2) iptrill(it) = - * iptrill(it)+nib(ivtrill(it),ibar-2) -22 continue - do 27 icrd = 1 , ncrd - ivx = iand(15,ishft(icrdat(icrd),-8)) - * +16*igetbits(icrdat(icrd),1,28) - ipnew = iand(255,icrdat(icrd))-nib(ivx,ibar-1) - if (ibar .gt. 2) ipnew = ipnew+nib(ivx,ibar-2) - icrdat(icrd) = iand(not(255),icrdat(icrd)) - icrdat(icrd) = ior(max(0,ipnew),icrdat(icrd)) -27 continue - do 29 iudorn = 1 , nudorn - ivx = ivxudorn(iudorn) - ipnew = iand(255,kudorn(iudorn))-nib(ivx,ibar-1) - if (ibar .gt. 2) ipnew = ipnew+nib(ivx,ibar-2) - kudorn(iudorn) = iand(not(255),kudorn(iudorn)) - kudorn(iudorn) = ior(max(0,ipnew),kudorn(iudorn)) -29 continue - do 42 idyn = 1 , ndyn - idynd = idyndat(idyn) - ivx = iand(15,idynd)+16*igetbits(idynda2(idyn),1,10) - ipnew = igetbits(idynd,8,4)-nib(ivx,ibar-1) -c -c The following construction avoids array bound errors in some compilers -c - if (ibar .gt. 2) then - ipnew = ipnew+nib(ivx,ibar-2) - end if - ipnew = dim(ipnew,0) - call setbits(idynd,8,4,ipnew) - idyndat(idyn) = idynd -42 continue - do 43 itxtdyn = 1 , ntxtdyn - idynd = ivxiptxt(itxtdyn) - ivx = iand(31,idynd) - ipnew = igetbits(idynd,8,5)-nib(ivx,ibar-1) - if (ibar .gt. 2) then - ipnew = ipnew+nib(ivx,ibar-2) - end if - ipnew = dim(ipnew,0) -c call setbits(idynd,8,4,ipnew) - call setbits(idynd,8,5,ipnew) - ivxiptxt(itxtdyn) = idynd -43 continue - do 41 isdat = 1 , nsdat - isdata = isdat1(isdat) - ivx = ivmx(igetbits(isdata,5,13),igetbits(isdata,1,12)+1) - ipnew = igetbits(isdata,8,3)-nib(ivx,ibar-1) - if (ibar .gt. 2) then - ipnew = ipnew+nib(ivx,ibar-2) - end if - ipnew = dim(ipnew,0) - call setbits(isdata,8,3,ipnew) - isdat1(isdat) = isdata -41 continue - do 44 ibc = 1 , nbc - ivx = iand(15,ibcdata(ibc))+16*igetbits(ibcdata(ibc),1,28) - ipnew = igetbits(ibcdata(ibc),8,4)-nib(ivx,ibar-1) - if (ibar .gt. 2) then - ipnew = ipnew+nib(ivx,ibar-2) - end if - ipnew = dim(ipnew,0) - call setbits(ibcdata(ibc),8,4,ipnew) -44 continue - do 45 iarps = 1 , NumArpShift - IpArpShift(iarps) = - * IpArpShift(iarps)-nib(IvArpShift(iarps),ibar-1) - if (ibar .gt. 2) then - IpArpShift(iarps) = - * IpArpShift(iarps)+nib(IvArpShift(iarps),ibar-2) - end if -45 continue -c -c Bookkeeping for figures. This will set nfigs = 0 if there are no figs left. -c If there are figs left, it will reset all times relative to start of -c current bar. -c - do 46 ivx = 1 , 2 - if (figbass) then - islide = 0 - do 20 jfig = 1 , nfigs(ivx) - if (itfig(ivx,jfig) .lt. lenbar) then -c -c This figure was already used -c - islide = jfig - else - itfig(ivx,jfig-islide) = itfig(ivx,jfig)-lenbar - figq(ivx,jfig-islide) = figq(ivx,jfig) - itoff(ivx,jfig-islide) = itoff(ivx,jfig) - ivupfig(ivx,jfig-islide) = ivupfig(ivx,jfig) - ivvfig(ivx,jfig-islide) = ivvfig(ivx,jfig) - end if -20 continue - nfigs(ivx) = nfigs(ivx)-islide - end if - if (nfigs(2) .eq. 0) go to 47 -46 continue -47 continue - end if -c -c End of sliding down for bars after first in gulp. -c -c The following may not be needed by makeabar, but just in case... -c - if (firstgulp .and. lenb0.ne.0) then - if (ibar .eq. 1) then - lenbar = lenb0 - else - lenbar = lenb1 - end if - end if -c -c Equal line spacing stuff -c - if (equalize .and. bar1syst) then - if (isystpg .eq. 1) then - write(11,'(a)')sq//'starteq%' - else if (isystpg .eq. nsystp(ipage)-1) then - write(11,'(a)')sq//'endeq%' - end if - end if - call make1bar(ibmrep,tglp1,tstart,cwrest,squez, - * istop,numbms,istart) - call make2bar(ninow,tglp1,tstart,cwrest,squez, - * istop,numbms,istart,clefq) -c -c Hardspace before barline? -c - hardb4 = 0. - do 35 iv = 1 , nv - do 35 kv = 1 , nvmx(iv) - ivx = ivmx(iv,kv) - if (btest(irest(ivx,nn(ivx)),18)) then - nudoff(ivx) = nudoff(ivx)+1 - hardb4 = max(hardb4,udoff(ivx,nudoff(ivx))) - end if -35 continue - if (hardb4 .gt. 0.) then - if (islast) write(11,'(a11,f5.1,a4)')sq - * //'hardspace{',hardb4,'pt}%' -c -c This was causing an incorrect poe in an example, which did not affect main -c spacing, but did cause an extra accidental space to be too small -c - fixednew = fixednew-hardb4 - end if -10 continue - firstgulp = .false. - lenb0 = 0 - go to 30 -40 close(12) - close(13) - ilbuf = 1 - ipbuf = 0 - wdpt = widthpt - if (iline .eq. 1) wdpt = widthpt*(1-fracindent) - poe = (wdpt-fsyst*musicsize-0.4*nbarss-fixednew)/ - * (elsktot+fbar*nbarss-scaldold) - poevec(nsyst) = poe - if (.not.islast) then - close(11) - close(16) - if (figbass) close(14) - return - end if - do 19 ia = 1 , nasksys - iask = iask+1 - ask(iask) = (wasksys(ia)/poe-abs(elasksys(ia)))/poefa(iline) - if (elasksys(ia).gt.0) ask(iask)=dim(ask(iask),0.) -19 continue - do 26 ia = 1 , nhssys - nhstot = nhstot+1 - hpttot(nhstot) = max(hpts(ia)-hesk(ia)*poe,0.) -26 continue - if (islast .and. - * onvolt) write(11,'(a)')sq//'endvoltabox' - rendq = '% ' - if (ishort .ne. 0) rendq = '}}%' - if (rptfq2 .ne. 'E') then -c -c Terminal repeat. Right or double? -c - if (rptfq2 .eq. 'r') then - if (islast) write(11,'(a)')sq//'setrightrepeat' - * //sq//'endpiece'//rendq - else if (rptfq2 .eq. 'd') then - if (islast) write(11,'(a)')sq//'setdoublebar'//sq//'endpiece' - * //rendq - else if (rptfq2 .eq. 'b') then - if (islast) write(11,'(a)')sq//'endpiece'//rendq - else if (rptfq2 .eq. 'z') then - if (islast) write(11,'(a)')sq//'setzalaligne'//sq//'Endpiece' - * //rendq - else - print* - print*,'R? , ? not "d","r",or"b","z"; rptfq2:',rptfq2 - write(15,*)'R? , ? not "d","r",or"b","z"; rptfq2:',rptfq2 - if (islast) write(11,'(a)')sq//'Endpiece' - end if - else - write(11,'(a)')sq//'Endpiece'//rendq - end if - if (.not.vshrink) then - if (islast .and. bottopgap) then - if (abs(botamt) .gt. 1.e-6) then - if (botamt .gt. 9.95) then - fmtq = '(a,f4.1,a)' - else if (botamt .gt. 0.) then - fmtq = '(a,f3.1,a)' - else if (botamt .gt. -9.95) then - fmtq = '(a,f4.1,a)' - else - fmtq = '(a,f5.1,a)' - end if - write(11,fmtq)sq//'null'//sq//'vskip',botamt, - * sq//'Internote%' - end if - end if - xnstbot = xnsttop(ipage)*etabot/etatop - if (xnstbot .lt. 9.95) then - fmtq = '(a,f3.1,a)' - else - fmtq = '(a,f4.1,a)' - end if - if (islast) write(11,fmtq)sq//'vskip',xnstbot, - * sq//'Interligne'//sq//'eject'//sq//'endmuflex' - if (islast) write(11,'(a)')sq//'bye' - else - if (islast) write(11,'(a)') - * sq//'vfill'//sq//'eject'//sq//'endmuflex' - if (islast) write(11,'(a)')sq//'bye' - end if - rewind(11) - if (figbass) then - write(14,'(a9,i2,a10,i2,1x,a5)') - * sq//'figdrop=',ifigdr(1,iline), - * ' '//sq//'figdtwo=',ifigdr(2,iline),sq//'fi}%' - rewind(14) - end if - call askfig(pathnameq,lpath,basenameq,lbase,figbass,istype0) - if (.not.optimize) then - print* - print*,'Writing ' - * //pathnameq(1:lpath)//basenameq(1:lbase)//'.tex' - print*,'Done with second PMX pass.' - write(15,'(/,a)')'Writing ' - * //pathnameq(1:lpath)//basenameq(1:lbase)//'.tex' - write(15,'(a)')' Done with second PMX pass. Now run TeX' - end if - return - end - subroutine poestats(nsyst,poe,poebar,devnorm) - parameter (nks=125) -c -c Compute avg. & norm. std. dev. of poe. -c - real*4 poe(nks) - sumx = 0. - sumxx = 0. - do 1 isyst = 1 , nsyst - sumx = sumx+poe(isyst) - sumxx = sumxx+poe(isyst)**2 -1 continue - devnorm = sqrt(nsyst*sumxx/sumx**2-1) - poebar = sumx/nsyst - return - end - subroutine precrd(ivx,ip,nolevm,nacc,ipl,irest,udq, - * twooftwo,icashft) -c -c Analyzes chords, data to be used with slurs on chords and plain chords. -c Check for 2nds, shift notes if neccesary. -c ipl(10) chord present -c irest(20) set if any note is right shifted -c irest(27) set if any note is left shifted -c ipl(8|9) left|right shift main note -c icrdat(23|24) ditto chord note -c udq is updown-ness, needed to analyze 2nds. -c levtabl(i)=0 if no note at this level, -1 if main note, icrd if chord note. -c icrdot(icrd)(27-29) sequence order of chord note if accid, top down -c - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - logical btest,is2nd,twooftwo - integer*4 kicrd(10),levtabl(88) - character*1 udq - do 11 i = 1 , 88 - levtabl(i) = 0 -11 continue - do 1 icrd1 = 1 , ncrd - ivx1 = iand(15,ishft(icrdat(icrd1),-8)) - * +16*igetbits(icrdat(icrd1),1,28) - ip1 = iand(255,icrdat(icrd1)) - if (ip1.eq.ip .and. ivx1.eq.ivx) go to 2 -1 continue - print* - print*, - * 'Cannot find first chord note in precrd. Send source to Dr. Don!' - call stop1() -2 continue - maxlev = nolevm - minlev = nolevm - levtabl(nolevm) = -1 - is2nd = .false. - naccid = 0 - levmaxacc = -100 - levminacc = 1000 -c -c Check 1st 3 bits of nacc for accid on main note of chord. -c - if (iand(7,nacc) .gt. 0) then - naccid = 1 -c -c Start list of notes with accid's. There will be naccid of them. kicrd=0 if main, -c otherwise icrd value for note with accidental. -c - kicrd(1) = 0 - levmaxacc = nolevm - levminacc = nolevm -c -c Start the level-ranking -c - icrdot0 = 1 - end if - do 3 icrd2 = icrd1 , ncrd - nolev = igetbits(icrdat(icrd2),7,12) - levtabl(nolev) = icrd2 - maxlev = max(maxlev,nolev) - minlev = min(minlev,nolev) -c -c Check for accidental -c - if (btest(icrdat(icrd2),19)) then - naccid = naccid+1 - levmaxacc = max(levmaxacc,nolev) - levminacc = min(levminacc,nolev) -c -c Add this icrd to list of values for notes with accid's. -c - kicrd(naccid) = icrd2 - if (.not.btest(nacc,28)) then -c -c Order not forced, so get the level-ranking, top down -c - iorder = 1 - do 12 iaccid = 1 , naccid-1 - if (kicrd(iaccid) .eq. 0) then - if (nolevm .gt. nolev) then - iorder = iorder+1 - else - icrdot0 = icrdot0+1 - end if - else - if (igetbits(icrdat(kicrd(iaccid)),7,12) - * .gt. nolev) then - iorder = iorder+1 - else - iold = igetbits(icrdot(kicrd(iaccid)),3,27) - call setbits(icrdot(kicrd(iaccid)),3,27,iold+1) - end if - end if -12 continue - call setbits(icrdot(icrd2),3,27,iorder) - end if - end if -c -c Exit loop if last note in this chord -c - if (icrd2 .eq. ncrd) go to 4 - if (igetbits(icrdat(icrd2+1),8,0) .ne. ip .or. -c * igetbits(icrdat(icrd2+1),4,8) .ne. ivx) go to 4 - * igetbits(icrdat(icrd2+1),4,8) - * +16*igetbits(icrdat(icrd2+1),1,28) .ne. ivx) go to 4 -3 continue - print* - print*,'Failed to find last chord note. Send source to Dr. Don!' - call stop1() -4 continue -c -c Now icrd1, icrd2 define range of icrd for this chord. -c -c Bypass autos-shifting if any manual shifts are present -c - if (btest(irest,20) .or. btest(irest,27)) go to 10 -c -c Check for 2nds -c - do 5 ilev = 1 , 87 - if (levtabl(ilev).ne.0 .and. levtabl(ilev+1).ne.0) then -c -c There is at least one 2nd.. -c - if (udq .eq. 'u') then -c -c Upstem. Start with 2nd just found and go up, rt-shifting upper -c member of each pair -c - ile = ilev -c -c Set main-note flag for ANY right-shift -c - irest = ibset(irest,20) -7 continue - if (levtabl(ile+1) .lt. 0) then -c -c Upstem, & upper member is main so must be rt-shifted. This would move -c stem too, so we rt-shift the OTHER note, and set flag that signals -c to interchange pitches just when these two notes are placed. -c - nacc = ibset(nacc,30) - icrdat(levtabl(ile)) = ibset(icrdat(levtabl(ile)),24) - else -c -c Upper member is chord note, must be rt-shifted -c - icrdat(levtabl(ile+1)) = ibset(icrdat(levtabl(ile+1)),24) - end if - ile = ile+1 -8 continue - ile = ile+1 - if (ile .lt. 87) then - if (levtabl(ile).ne.0 .and. levtabl(ile+1).ne.0) then - go to 7 - else - go to 8 - end if - end if - go to 10 - else -c -c Downstem. Start at top and work down, left-shifting lower member of each pair. -c We know that lowest pair is at (ilev,ilev+1). -c - ile = 88 -c -c Set main-note flag for ANY right-shift -c - irest = ibset(irest,27) -9 continue - if (levtabl(ile).ne.0 .and. levtabl(ile-1).ne.0) then - if (levtabl(ile-1) .lt. 0) then -c ipl = ibset(ipl,8) -c -c Dnstem, & lower member is main so must be left-shifted. This would move -c stem too, so we left-shift the OTHER note, and set flag that signals -c to interchange pitches just when these two notes are placed. -c - nacc = ibset(nacc,31) - icrdat(levtabl(ile)) = ibset(icrdat(levtabl(ile)),23) - else -c -c Lower member is chord note, must be shifted -c - icrdat(levtabl(ile-1)) = - * ibset(icrdat(levtabl(ile-1)),23) - end if - ile = ile-1 - end if - ile = ile-1 - if (ile .ge. ilev+1) go to 9 - go to 10 - end if - end if -5 continue -10 continue -c -c Done with 2nds, now do accid's. Call even if just one, in case left shifts. -c -c if (naccid .gt. 1) call crdaccs(nacc,ipl,irest,naccid, - if (naccid .ge. 1) call crdaccs(nacc,ipl,irest,naccid, - * kicrd,nolevm,levmaxacc,levminacc,icrdot0,twooftwo,icashft) - return - end - subroutine printl(string) - character*(*) string -c -c Send string to console and to log file -c - print*,string - write(15,'(a)')string - return - end - subroutine putarp(tnow,iv,ip,nolev,ncm,soutq,lsout) - parameter (nm=24) - common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), - * xinsnow,lowdot - common /comtol/ tol - common /comArpShift/NumArpShift,IvArpShift(20),IpArpShift(20), - * ArpShift(20) - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - logical lowdot,IsArpShift - character*80 soutq - character*79 notexq - character*8 symq(2) - character*1 chax - data symq /'raisearp','arpeggio'/ -c -c NOTE iv in arg list is really ivx, referring to voice rather than staff. -c -c Find which iarp, if any -c - do 1 iarp = 1 , narp - if (abs(tnow-tar(iarp)).lt.tol) go to 2 -1 continue -c -c If here, this is the *first* call for this arp. -c - narp = narp+1 - tar(narp) = tnow+tol*.5 - ivar1(narp) = iv - ipar1(narp) = ip - levar1(narp) = nolev - ncmar1(narp) = ncm - return -2 continue -c -c If here, this is *second* call at this time, narp points to values from 1st. -c -c Check for shift. Set IsArpShift and iarps -c - do 3 iarps = 1 , NumArpShift - if (IvArpShift(iarps) .eq. ivar1(iarp) .and. - * IpArpShift(iarps) .eq. ipar1(iarp)) then - IsArpShift = .true. - notexq = chax(92)//'loffset{' - write(notexq(10:14),'(f3.1,a2)') Arpshift(iarps),'}{' - lnote = 14 - go to 4 - end if -3 continue - IsArpShift = .false. - lnote = 0 -4 continue - if (iv .eq. ivar1(iarp)) then -c -c Arp is in a single voice. -c - levbot = min(levar1(iarp),nolev)-ncm+3 - invert = abs(levar1(iarp)-nolev)+1 - else -c -c Arp covers >1 voice. Lower voice has to be the first, upper is current and -c is where the symbol will be written. -c Check whether ivx's ivar1(iarp) & iv are in same staff -c - do 5 iiv = 1 , nm - if (ivmx(iiv,1).eq.ivar1(iarp) .or. (nvmx(iiv).eq.2.and. - * ivmx(iiv,2).eq.ivar1(iarp))) then - iivivx1 = iiv - go to 6 - end if -5 continue - print*,'Screwup#1 in putarp' - stop -6 continue - do 7 iiv = 1 , nm - if (ivmx(iiv,1).eq.iv .or. (nvmx(iiv).eq.2.and. - * ivmx(iiv,2).eq.iv)) go to 8 -c -c Found iv for both voices (iivivx1, iiv), done looking -c -7 continue - print*,'Screwup#2 in putarp' - stop -8 continue - if (iivivx1 .eq. iiv) then - nstaffshift = 0 - else - nstaffshift = -nint(2*xinsnow) - end if -c levbot = -nint(2*xinsnow)+3+levar1(iarp)-ncmar1(iarp) - levbot = nstaffshift+3+levar1(iarp)-ncmar1(iarp) - invert = -levbot+4+nolev-ncm - end if -c -c isym will be (1,2) if invert is (even,odd). If even, raise .5\internote -c - isym = mod(invert,2)+1 - ilvert = (invert+1)/2 - if (levbot .ge. 0 .and. levbot .le. 9) then -c -c Single digit -c - if (.not.IsArpShift) then - notexq = chax(92)//symq(isym)//chax(48+levbot) - else - notexq = notexq(1:lnote)// - * chax(92)//symq(isym)//chax(48+levbot) - end if - lnote = lnote+10 - else - if (.not.IsArpShift) then - notexq = chax(92)//symq(isym)//'{' - else - notexq = notexq(1:lnote)//chax(92)//symq(isym)//'{' - end if - lnote = lnote+10 - if (levbot .ge. -9) then -c -c Need two spaces for number -c - write(notexq(lnote+1:lnote+3),'(i2,a1)')levbot,'}' - lnote = lnote+3 - else - write(notexq(lnote+1:lnote+4),'(i3,a1)')levbot,'}' - lnote = lnote+4 - end if - end if -c if (ilvert .le. 9) then -c call addstr(notexq(1:lnote)//chax(48+ilvert),lnote+1, -c * soutq,lsout) -c else -c write(notexq(lnote+1:lnote+4),'(a1,i2,a1)')'{',ilvert,'}' -c call addstr(notexq(1:lnote+4),lnote+4,soutq,lsout) -c end if - - if (ilvert .gt. 9) then - write(notexq(lnote+1:lnote+4),'(a1,i2,a1)')'{',ilvert,'}' - lnote = lnote+4 - else - notexq = notexq(1:lnote)//chax(48+ilvert) - lnote = lnote+1 - end if - if (IsArpShift) then - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - end if - call addstr(notexq(1:lnote),lnote,soutq,lsout) -c -c cancel out the stored time, to permit two arps at same time! -c - tar(iarp) = -1. - return - end - subroutine putast(elask,indxask,outq) - character*129 outq,tag - character*9 fmtq - if (elask .ge. 0.) then - if (elask.lt.0.995) then - lp = 3 - else if (elask .lt. 9.995) then - lp = 4 - else - lp = 5 - end if - write(fmtq,'(a5,i1,a3)')'(a2,f',lp,'.2)' - else - lp = 5 - fmtq = '(a2,f5.1)' - end if -c -c Overwrite as follows: ...xyz*ask *lmnop... -> -c ...xyz*ast{.nn}*lmnop... -c ...xyz*ast{n.nn}*lmnop... -c ...xyz*ast{nn.nn}*lmnop... -c or for negative, ...xyz*ast{-nn.n}*lmnop... - tag = outq(indxask+9:) - write(outq(indxask+3:),fmtq)'t{',elask - outq = outq(1:indxask+4+lp)//'}'//tag - return - end - subroutine putcb(ivx,ip,notexq,lnote) - common /comcb/ nbc,ibcdata(36) - character*79 notexq - logical btest -c ivxip = ivx+16*ip - do 1 ibc = 1 , nbc -c if (ivxip .eq. iand(1023,ibcdata(ibc))) go to 2 -c if (ivx.eq.iand(15,ibcdata(ibc))+16*igetbits(ibcdata(ibc),1,28) -c * .and. ip.eq.iand(1008,ibcdata(ibc))) go to 2 - ivxbc = iand(15,ibcdata(ibc))+16*igetbits(ibcdata(ibc),1,28) - ipbc = igetbits(ibcdata(ibc),8,4) - if (ivx .eq. ivxbc .and. ip .eq.ipbc) go to 2 -1 continue - call printl('Error in putbc, Call Dr. Don') - stop -2 continue - if (btest(ibcdata(ibc),27)) then - lnote = 8 - notexq = char(92)//'pbreath' - else - lnote = 9 - notexq = char(92)//'pcaesura' - end if - ivshft = igetbits(ibcdata(ibc),6,13) -c?? ivshft = igetbits(ibcdata(ibc),6,13)-32 - if (ivshft .gt. 0) ivshft = ivshft-32 - if (ivshft.lt.0 .or. ivshft.gt.9) then - notexq = notexq(1:lnote)//'{' - lnote = lnote+1 - if (ivshft .lt. -9) then - write(notexq(lnote+1:lnote+3),'(i3)')ivshft - lnote = lnote+3 - else - write(notexq(lnote+1:lnote+2),'(i2)')ivshft - lnote = lnote+2 - end if - notexq = notexq(1:lnote)//'}' - lnote = lnote+1 - else - notexq = notexq(1:lnote)//char(48+ivshft) - lnote = lnote+1 - end if - ihshft = igetbits(ibcdata(ibc),8,19) - if (ihshft .eq. 0) then - notexq = notexq(1:lnote)//'0' - lnote = lnote+1 - else - hshft = .1*(ihshft-128) -c -c -12.81 ornament on a note, next line is top of manual loop. -c -2 continue -c -cc Bit # of last ornament (last of bits 0-21) -cc Bit # of last ornament (last of bits 0-24) -c Bit # of last ornament (last of bits 0-24,29-30) - if (btest(iornq,29)) then - ibit = 29 - else if (btest(iornq,30)) then - ibit = 30 - else - ibit = log2(iand(iornq,4194303)) -c ibit = log2(iand(iornq,33554431)) - end if - iornt = 2**ibit -c -c Begin routine to set height. Bits 0-13: (stmgx+Tupf._) -c 14: Down fermata, was F 15: Trill w/o "tr", was U, 16-18: edit. s,f,n -c 19-20: >^, 21: ? (with or w/o 16-18) -c and 29-30: C (coda), G (new segno) -c -c Do not use beam height for . or _ -c - if (btest(iornq,22) .and. iand(iornt,6144).eq.0) then -c -c Height is set by special beam stuff. -c Do not leave ihorn set, do separately for every ornament -c - ihorn = ihornb(ivx,nornb(ivx)) - if (ulpzq .eq. 'u') ihorn = ihorn-2 -c -c Following flag tells whether to increment nornb when exiting the subroutine. -c - usehornb = .true. - else if (ibit .eq. 14) then -c -c Down fermata. Don't worry about upper chord notes. -c - if (ulpzq .eq. 'l') then - ihorn = min(nolev,ncm-3) - else - ihorn = min(nolev-stemlen,ncm-3.) - end if - else if (btest(iornt,13) .or. btest(iornt,0)) then -c -c ( or ) -c - ihorn = nolev - else if (iand(iornt,6144) .gt. 0) then -c -cc Staccato . or tenuto _ , but not special beam stuff. Need up-down info -c NOTE: removed .&_ from special beam treatment. -c Staccato . or tenuto _ Need up-down info -c - if (.not.iscrd .or. (maxlev.ne.nolev.and.ulpzq.eq.'l') .or. - * (minlev.ne.nolev.and.ulpzq.eq.'u')) then - ihorn = nolev - else if (maxlev .eq. nolev) then - ulpzq = 'u' - ihorn = max(nolev+stemlen,ncm+3.) - else - ulpzq = 'l' - ihorn = min(nolev-stemlen,ncm-3.) - end if - else if (iscrd .and. nolev .eq. minlev) then - if (ulpzq .eq. 'l') then - ihorn = min(nolev-3,ncm-6) - else - ihorn = min(nolev-nint(stemlen)-3,ncm-6) - end if - else if (ibit.eq.10 .and. nolev.gt.90) then -c -c Special treatment for fermata on a shifted rest -c - ihorn = ncm+5 - else if (ulpzq.eq.'l') then -c -c (iscrd and nolev=maxlev) or (.not.iscrd) -c - ihorn = max(nolev+stemlen+2,ncm+5.) - else if (ibit.eq.29 .or. ibit.eq.30) then -c -c coda or new segno, no height tweak -c - ihorn = ncm+5 - else - ihorn = max(nolev+2,ncm+5) - end if - ioff = 0 - iclracc = 0 -c -c Begin routine to set name. Bits 0-13: (stmgx+Tupf._) -c 14: Down fermata, was F 15: Trill w/o "tr", was U, 16-18: edit. s,f,n -c - if (btest(iornt,2)) then - notexq = sq//'shake' - lnote = 6 - else if (btest(iornt,3)) then - notexq = sq//'mordent' - lnote = 8 - else if (btest(iornt,1)) then - notexq = sq//'mtr' - lnote = 4 - else if (btest(iornt,5)) then - notexq = sq//'xtr' - lnote = 4 - else if (btest(iornt,6)) then - notexq = sq//'ptr' - lnote = 4 - else if (btest(iornt,13)) then - notexq = sq//'rpn' - lnote = 4 - else if (btest(iornt,0)) then - notexq = sq//'lpn' - lnote = 4 - else if (btest(iornt,12)) then - notexq = sq//ulpzq//'st' - lnote = 4 - else if (btest(iornt,11)) then - notexq = sq//ulpzq//'pz' - lnote = 4 - else if (btest(iornt,8)) then - notexq = sq//'upz' - lnote = 4 - ioff = -2 - else if (btest(iornt,9)) then - notexq = sq//'uppz' - lnote = 5 - ioff = -2 - else if (btest(iornt,10)) then - if (nodur .lt. 48) then - notexq = sq//'fermataup' - else - notexq = sq//'Fermataup' - end if - lnote = 10 - ioff = -2 - else if (btest(iornt,14)) then - if (nodur .lt. 48) then - notexq = sq//'fermatadown' - else - notexq = sq//'Fermatadown' - end if - lnote = 12 - else if (btest(iornt,21)) then -c -c "?" in editorial ornament. Clear bit 16-18 after use, since ibit=21 -c - if (btest(iornq,16)) then - notexq = sq//'qsharp' - lnote = 7 - ioff = 2 - iornq = ibclr(iornq,16) - iclracc = 16 - else if (btest(iornq,17)) then - notexq = sq//'qflat' - lnote = 6 - ioff = 1 - iornq = ibclr(iornq,17) - iclracc = 17 - else if (btest(iornq,18)) then - notexq = sq//'qnat' - lnote = 5 - ioff = 2 - iornq = ibclr(iornq,18) - iclracc = 18 - else - notexq = sq//'qedit' - lnote = 6 - ioff = 0 - end if - else if (btest(iornt,16)) then - notexq = sq//'esharp' - lnote = 7 - ioff = 2 - else if (btest(iornt,17)) then - notexq = sq//'eflat' - lnote = 6 - ioff = 1 - else if (btest(iornt,18)) then - notexq = sq//'enat' - lnote = 5 - ioff = 2 - else if (btest(iornt,19)) then - notexq = sq//'usf' - lnote = 4 - ioff = -2 - else if (btest(iornt,20)) then - notexq = sq//'usfz' - lnote = 5 - ioff = -2 - else if (btest(iornt,29)) then - notexq = sq//'ccoda' - lnote = 6 - else if (btest(iornt,30)) then - notexq = sq//'ssegno' - lnote = 7 - end if - iudorn = 0 -c -c User-defined level shift of ornament from default? -c - if (btest(iornq,25)) then -c -c Find which (if any) element of kudorn has the shift. -c - do 3 iudorn = 1 , nudorn -c if (ibit .lt. 21) then -c if (ibit.lt.21 .or. ibit.eq.29) then - if (ibit.lt.21 .or. ibit.eq.29 .or. ibit.eq.30) then - ibitt = ibit -c -c Could have oes, but not oe? or oes? -c - else if (iclracc .gt. 0) then -c -c Earlier cleared edit. accid, meaning it was oes? -c - ibitt = iclracc+6 - else - ibitt = 21 - end if - ibitt=ip+ishft(mod(ivx,16),8)+ishft(nolev,12)+ishft(ibitt,19) -c if (ibitt .eq. iand(33554431,kudorn(iudorn))) go to 4 - if (ibitt .eq. iand(33554431,kudorn(iudorn)) - * .and. ivx.eq.ivxudorn(iudorn)) go to 4 -3 continue -c -c Nothing shifted on this note; exit this if block -c - iudorn = 0 - go to 5 -4 continue - ioffinc = iand(63,ishft(kudorn(iudorn),-25))-32 - if (ibit.eq.19 .and. ioffinc .lt. -7) then -c -c Convert usf to lsf. The reason has to do with positioning being impossile -c for some mysterious reason when you drop \usf below the staff -c - notexq = sq//'lsf' - ioffinc = ioffinc+6 - end if - ioff = ioff+ioffinc - end if -5 continue -c -c Shift level to avoid slur. Conditions are -c 1. There is a slur -c 2. No user-defined orn height shift (btest(iornq,25)) -c 3. upslur (islhgt>0) -c 4. ornament is not segno(4), ._)(11-13), down ferm(14) or "(" (0) Bin=30737 -c 5. islhgt+3 >= height already computed. -c - if (.not.btest(iornq,25) .and. - * islhgt.gt.0 .and. iand(iornt,30737).eq.0) - * ioff = ioff+dim(islhgt+3,ihorn ) - call notefq(noteq,lnoten,ihorn+ioff,ncm) - if (lnoten.eq.1) call addblank(noteq,lnoten) - if (iand(iornt,32896) .gt. 0) then -c -c T-trill or trill w/o "tr" -c - call dotrill(ivx,ip,iornt,noteq,lnoten,notexq,lnote) - else - notexq = notexq(1:lnote)//noteq(1:lnoten) - lnote = lnote+lnoten - end if - if (iudorn .gt. 0) then - if (btest(kudorn(iudorn),31)) then -c -c Horizontal shift -c - lform = lfmt1(ornhshft(iudorn)) - write(noteq(1:lform),'(f'//chax(48+lform)//'.1)') - * ornhshft(iudorn) - notexq = sq//'roffset{'//noteq(1:lform)//'}{' - * //notexq(1:lnote)//'}' - lnote = lnote+lform+12 - ornhshft(iudorn) = 0. - kudorn(iudorn) = ibclr(kudorn(iudorn),31) - end if - end if -c -c Zero out the bit for ornament just dealt with. -c - iornq = ibclr(iornq,ibit) - if (lout .eq. 0) then - outq = notexq(1:lnote) - else - outq = outq(1:lout)//notexq(1:lnote) - end if - lout = lout+lnote -c -c Check bits 0-21, go back if any are still set -c If bit 29 or 30 had been set, would have been used first time thru, -c and you wouldn't use both coda and segno on same note -c - if (iand(iornq,4194303) .gt. 0) go to 2 - if (usehornb) nornb(ivx) = nornb(ivx)+1 - return - end - subroutine putshft(ivx,onoff,soutq,lsout) - parameter (nm=24) - common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) - character*80 soutq,notexq - character*1 sq,chax - logical onoff - sq = chax(92) -c -c Start user-defined offsets X(...): or X(...)S -c - if (onoff) nudoff(ivx) = nudoff(ivx)+1 -c -c Xoff is in pts. Round off to nearest .1. Will use at end of shift. -c - xoff = udoff(ivx,nudoff(ivx)) - xoff = sign(int(10.*abs(xoff)+.5)/10.,xoff) - if (.not.onoff) xoff = -xoff - if (xoff .lt. -9.95) then - ifmt = 5 - else if (xoff.lt.-.95 .or. xoff.gt.9.95) then - ifmt = 4 - else - ifmt = 3 - end if - write(notexq,'(f'//chax(48+ifmt)//'.1)')xoff - call addstr(sq//'off{'//notexq(1:ifmt)//'pt}',8+ifmt, - * soutq,lsout) - return - end - subroutine puttitle(inhnoh,xnsttop,etatop,sq,etait,etatc, - * etacs1,nv,vshrink,sepsymq) -c -c Called once per page, at top of page! If vshrink, only called for p.1. -c Actual titles only allowed on p.1. (set by headlog). -c 3/18/01: The above comment is probably bogus...can use Tt on later pages. -c - common /comlast/ islast,usevshrink - logical islast,usevshrink - common /comtitl/ instrq,titleq,compoq,headlog,inskip,ncskip, - * inhead - common /cominbot/ inbothd - character*127 notexq - character*120 instrq,titleq,compoq - parameter (nm=24) - character*1 sq,sepsymq(nm),chax - logical headlog,vshrink - notexq = sq//'znotes' - lenline = 7 - do 22 iv = 1 , nv-1 - notexq = notexq(1:lenline)//sepsymq(iv) - lenline = lenline+1 -22 continue - notexq = notexq(1:lenline)//sq//'zcharnote{' - lenline = lenline+11 - if (.not.headlog) then - inhead = inhnoh - end if - if (vshrink .and. usevshrink) then - inhead = 16 - end if - ndig = int(alog10(inhead+.01))+1 - write(notexq(lenline+1:lenline+ndig+10),'(i'//chax(48+ndig)// - * ',a10)')inhead,'}{'//sq//'titles{' - lenline = lenline+ndig+10 -c -c Vertical skip at top of page (\Il) = etatop*glueil. Needed whether -c headers are present or not. -c - glueil = xnsttop/etatop - vskil = etatop*glueil - if (vshrink .and. usevshrink) vskil = 2 - call writflot(vskil,notexq,lenline) - if (.not.headlog) then - if (islast) write(11,'(a)')notexq(1:lenline) - * //'}{}{0}{}{0}{}{0}}'//sq//'en%' - else - notexq = notexq(1:lenline)//'}{' - lenline = lenline+2 - lcq = lenstr(instrq,120) - if (lcq .gt. 0) then - xitil = etait*glueil - if (vshrink .and. usevshrink) xitil = 2 - notexq = notexq(1:lenline)//instrq(1:lcq)//'}{' -c -c Null out instrument once used -c - instrq = ' ' - lenline = lenline+lcq+2 - call writflot(xitil,notexq,lenline) - else - notexq = notexq(1:lenline)//'}{0' - lenline = lenline+3 - end if - if (islast) write(11,'(a)')notexq(1:lenline)//'}%' - notexq = '{' - lenline = 1 - lcq = lenstr(titleq,120) - if (lcq .gt. 0) then - notexq = notexq(1:lenline)//titleq(1:lcq) - lenline = lenline+lcq - else - call printl(' ') - call printl('WARNING') - call printl( - * ' In a title block, you have specified instrument and/or') - call printl( - * ' composer but no title for the piece.') - end if - notexq = notexq(1:lenline)//'}{' - lenline = lenline+2 - xtcil = etatc*glueil - lcq = lenstr(compoq,120) - if (lcq .eq. 0) xtcil = 2*xtcil - if (vshrink .and. usevshrink) xtcil = 2 - call writflot(xtcil,notexq,lenline) - notexq = notexq(1:lenline)//'}{' - lenline = lenline+2 - if (lcq .gt. 0) then - notexq = notexq(1:lenline)//compoq(1:lcq)//'}{' - lenline = lenline+2+lcq -c -c Null out compoq so it does not get written later -c - compoq = ' ' - xcsil = etacs1*glueil - if (vshrink .and. usevshrink) xcsil = 2 - call writflot(xcsil,notexq,lenline) - else - notexq = notexq(1:lenline)//'}{0' - lenline = lenline+3 - end if - if (islast) write(11,'(a)')notexq(1:lenline)//'}}'//sq//'en%' - headlog = .false. - end if - return - end - subroutine putxtn(ntupv,iflop,multb,iud,wheadpt,poenom, - * nolev1,islope,slfac,xnlmid,islur,lnote,notexq,ncmid,nlnum, -c * eloff,iup,irest,usexnumt) - * eloff,iup,irest,mult,usexnumt) -c -c Places digit for xtuplet. -c - character*1 chax - character*8 noteq - character*79 notexq - logical btest,usexnumt - if (iflop.ne.0 .and. multb.gt.0) then -c -c Number goes on beam side, move R/L by .5 wheadpt for upper/lower -c - eloff = eloff-0.5*iud*wheadpt/poenom -c -c Number goes on beam side, must use beam parameters to set pos'n -c - nlnum = nolev1+islope/slfac*eloff+iup*(multb+8) - if (multb .ge. 2) nlnum = nlnum+iup - else - nlnum = nint(xnlmid-1+3*iud+iflop*11) - end if - if (.not.btest(islur,31)) then -c -c Only print number when wanted. First check vert, horiz offset -c - if (btest(irest,1)) nlnum = nlnum+igetbits(mult,8,16)-64 - if (btest(irest,7)) eloff = eloff+ - * (.1*iand(31,ishft(irest,-9))-1.6)*wheadpt/poenom - if (.not.usexnumt) then - notexq = chax(92)//'xnum{' - lnote = 10 - istrtn = 7 - else - notexq = chax(92)//'xnumt{' - lnote = 11 - istrtn = 8 - end if - if (eloff .lt. 0.995) then - write(notexq(istrtn:istrtn+3),'(i1,f3.2)')0,eloff - else if (eloff .lt. 9.995) then - write(notexq(istrtn:istrtn+3),'(f4.2)')eloff - else - write(notexq(istrtn:istrtn+4),'(f5.2)')eloff - lnote = lnote+1 - end if - call notefq(noteq,lnoten,nlnum,ncmid) - notexq = notexq(1:lnote)//'}'//noteq(1:lnoten) - lnote = lnote+1+lnoten - if (ntupv .lt. 10) then - write(notexq(lnote+1:lnote+1),'(i1)')ntupv - lnote = lnote+1 - else - notexq = notexq(1:lnote)//'{' - write(notexq(lnote+2:lnote+3),'(i2)')ntupv - notexq = notexq(1:lnote+3)//'}' - lnote = lnote+4 - end if - end if - return - end - subroutine read10(string,lastchar) - parameter (maxblks=9600) - character*131072 bufq - integer*2 lbuf(maxblks) - common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq - character*(*) string - character*128 lnholdq - logical lastchar - common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac - logical mrecord,mplay,endmac - common /c1ommac/ ip1mac(20),il1mac(20),ip2mac(20),il2mac(20), - * ic1mac(20),ilmac,iplmac - if (.not.mplay) then - if (ilbuf .gt. nlbuf) go to 999 - call getbuf(string) - return -999 lastchar = .true. - return - else -c -c Play a macro. Set pointer to first character needed in buffer -c - if (ilmac .eq. il1mac(macnum)) then -c -c Getting first line of macro -c - ip1 = ip1mac(macnum) - iplmac = ip1-ic1mac(macnum) - else if (ilmac .le. il2mac(macnum)) then -c -c Beyond first line of macro. Advance line-start pointer. -c - iplmac = iplmac+lbuf(ilmac-1) - ip1 = iplmac+1 - else -c -c Beyond last line of macro. Terminate it! -c - mplay = .false. - endmac = .true. - return - end if - if (ilmac .eq. il2mac(macnum)) then -c -c Getting last line of macro. -c - ip2 = ip2mac(macnum) - else -c -c Getting line before last line of macro. -c - ip2 = iplmac+lbuf(ilmac) - end if - if (ip2 .ge. ip1) then - string = bufq(ip1:ip2) - else -c -c Kluge for when macro start is on a line by itself -c - string = ' ' - end if - ilmac = ilmac+1 - return - end if - end - function readin(lineq,iccount,nline) -c -c Reads a piece of setup data from file lineq, gets a new lineq from -c file 10 (jobname.pmx) and increments nline if needed, passes over -c comment lines -c - character*128 lineq - character*1 durq,chax -4 if (iccount .eq. 128) then -1 call getbuf(lineq) - nline = nline+1 - if (lineq(1:1) .eq. '%') go to 1 - iccount = 0 - end if - iccount = iccount+1 -c -c Find next non-blank or end of line -c - do 2 iccount = iccount , 127 - if (lineq(iccount:iccount) .ne. ' ') go to 3 -2 continue -c -c If here, need to get a new line -c - iccount = 128 - go to 4 -3 continue -c -c iccount now points to start of number to read -c - i1 = iccount -5 call getchar(lineq,iccount,durq) -c -c Remember that getchar increments iccount, then reads a character. -c - if (index('0123456789.-',durq) .gt. 0) go to 5 - i2 = iccount-1 - if (i2 .lt. i1) then - print*,'Found "'//durq//'" instead of number' - call stop1() - end if - icf = i2-i1+49 - read(lineq(i1:i2),'(f'//chax(icf)//'.0)')readin - return - end - subroutine readmeter(lineq,iccount,mtrnum,mtrden) - character*128 lineq - character*1 durq,chax - if (index(lineq(iccount+1:iccount+3),'/') .eq. 0) then -c -c No slashes, so use old method -c - call getchar(lineq,iccount,durq) - if (durq .eq. '-') then -c -c Negative numerator is used only to printed; signals vertical slash -c - call getchar(lineq,iccount,durq) - mtrnum = -(ichar(durq)-48) - else if (durq .eq. 'o') then -c -c Numerator is EXACTLY 1 -c - mtrnum = 1 - else - mtrnum = ichar(durq)-48 - if (mtrnum .eq. 1) then -c -c Numerator is >9 -c - call getchar(lineq,iccount,durq) - mtrnum = 10+ichar(durq)-48 - end if - end if - call getchar(lineq,iccount,durq) - if (durq .eq. 'o') then - mtrden = 1 - else - mtrden = ichar(durq)-48 - if (mtrden .eq. 1) then - call getchar(lineq,iccount,durq) - mtrden = 10+ichar(durq)-48 - end if - end if - else -c -c Expect the form m[n1]/[n2]/[n3]/[n4] . Advance iccount by one from '/' or 'm' -c - iccount = iccount+1 - ns = index(lineq(iccount:128),'/') - read(lineq(iccount:iccount+ns-2),'(i'//chax(47+ns)//')')mtrnum -c -c Reset iccount to start of second integer -c - iccount = iccount+ns -c -c There must be either a slash or a blank at pos'n 2 or 3 -c - ns = index(lineq(iccount:iccount+2),'/') - if (ns .eq. 0) ns = index(lineq(iccount:iccount+2),' ') - read(lineq(iccount:iccount+ns-2),'(i'//chax(47+ns)//')')mtrden -c -c Set iccount to last character used -c - iccount = iccount+ns-1 - end if - return - end - subroutine readnum(lineq,iccount,durq,fnum) -c -c This reads a number starting at position iccount. Remember that on exit, -c getchar leaves iccount at the last character retrieved. So must only -c call this routine *after* detecting a number or decimal. -c On exit, durq is next character after end of number. -c - character*128 lineq - character*1 durq,chax - i1 = iccount -1 call getchar(lineq,iccount,durq) - if (index('0123456789.',durq) .gt. 0) go to 1 - i2 = iccount-1 - if (i2 .lt. i1) then - print*,'Found "'//durq//'" instead of number' - call stop1() - else if (lineq(i1:i1).eq.'.'.and.lineq(i2:i2).eq.'.') then - i2 = i2-1 - iccount = iccount-1 - end if - icf = i2-i1+49 - read(lineq(i1:i2),'(f'//chax(icf)//'.0)')fnum - return - end - subroutine setbits(isdata,iwidbit,ishift,ivalue) -c -c Sets iwidbits of isdata, shifted by ishift, to ivalue -c - ibase = 2**iwidbit-1 - isdata = iand(not(ishft(ibase,ishift)),isdata) - isdata = ior(isdata,ishft(ivalue,ishift)) - return - end - subroutine setbm2(xelsk,nnb,sumx,sumy,ipb,islope,nolev1) -c -c The MEAN SQUARE slope algorithm -c - parameter (nm=24) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - character*1 ulq,sepsymq,sq - logical beamon,firstgulp,figbass,figchk, - * isfig - real*4 xelsk(24) - integer ipb(24) - ibc = ibmcnt(ivx) - sumxx = 0. - sumxy = 0. - do 2 inb = 1 , nnb - sumxx = sumxx+xelsk(inb)**2 - sumxy = sumxy+xelsk(inb)*nolev(ivx,ipb(inb)) -2 continue - delta = nnb*sumxx-sumx*sumx - em = (nnb*sumxy-sumx*sumy)/delta - islope = nint(0.5*em*slfac) - if (iabs(islope) .gt. 9) islope = isign(9,islope) - beta = (sumy-islope/slfac*sumx)/nnb - nolev1 = nint(beta) -c -c Check if any stems are too short -c - smin = 100. - iul = -1 - if (ulq(ivx,ibc) .eq. 'u') iul = 1 - do 4 inb = 1 , nnb - ybeam = nolev1+iul*stemlen+islope*xelsk(inb)/slfac - ynote = nolev(ivx,ipb(inb)) - smin = min(smin,iul*(ybeam-ynote)) -4 continue - if (smin .lt. stemmin) then - deficit = stemmin-smin - nolev1 = nint(nolev1+iul*deficit) - end if - return - end - subroutine setmac(lineq,iccount,ibarcnt,ibaroff,nbars,charq,durq, - * ivx,nline) - character*1 charq,durq - common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac - logical mrecord,mplay,endmac,btest - character*128 lnholdq,lineq - common /c1ommac/ ip1mac(20),il1mac(20),ip2mac(20),il2mac(20), - * ic1mac(20),ilmac,iplmac -c -c Macro action -c - call g1etchar(lineq,iccount,charq) - if (charq.eq.'S' .and. ivx.ne.1) then - print* - print* - print*,'*********WARNING*********' - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * '"MS..." only put in parts by scor2prt if in voice #1!') - end if - if (index('RSP ',charq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Illegal character after "M" (macro)!') - call stop1() - else if (charq .ne. ' ') then -c -c Record or playback a macro. Get the number of the macro. -c - call g1etchar(lineq,iccount,durq) - if (index('123456789',durq) .eq. 0) then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Must input number after "MR","MP", or "MS"!') - call stop1() - end if - call readnum(lineq,iccount,durq,fnum) - macnum = nint(fnum) - if (durq .ne. ' ') then - call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, - * 'Macro number must be followed by a blank!') - call stop1() - end if - if (index('RS',charq ).gt. 0) then -c -c Record or save a macro -c - if (macnum.lt.1 .or. macnum.gt.20) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Macro number not in range 1-20!') - call stop1() - end if - macuse = ibset(macuse,macnum) - if (charq .eq. 'R') then - call m1rec1(lineq,iccount,ibarcnt,ibaroff,nbars,ndxm) - else if (charq .eq. 'S') then -c -c Save (Record but don't activate) -c -1 call m1rec1(lineq,iccount,ibarcnt,ibaroff,nbars,ndxm) - if (mrecord) then - call getbuf(lineq) - nline = nline+1 - iccount = 0 - go to 1 - end if - iccount = iccount+ndxm+1 - end if - else -c -c Playback the macro -c - if (.not.btest(macuse,macnum)) then - call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, - * 'Cannot play a macro that has not been recorded!') - call stop1() - end if - icchold = iccount - lnholdq = lineq - iccount = 128 - mplay = .true. - ilmac = il1mac(macnum) - end if - end if - return - end - subroutine setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) -c -c Sets last 2 args depending on 1st 2, (logical) num, denom. -c ibmtyp = 1, 2, or 3 defines set of masks for beam groupings. -c 1: all duple meters -c 2: triple w/ denom=4, subdivide in groups of 2 8ths -c 3: triple w/ denom=8, subdivide in groups of 3 8ths -c Note that lenbar is set at top or when 'm' symbol is read in getnote -c - if (mtrdenl .eq. 4) then - if (mod(mtrnuml,3) .eq. 0) then - ibmtyp = 2 - ibmrep = mtrnuml/3 - else - ibmtyp = 1 - ibmrep = mtrnuml/2 - end if - else if (mtrdenl .eq. 2) then - ibmtyp = 1 - if (mtrnuml .eq. 3) then - ibmrep = 3 - else - ibmrep = 2*mtrnuml/mtrdenl - end if - else if (mtrdenl.eq.8 .and. (mtrnuml.eq.8.or.mtrnuml.eq.4)) then -c -c Added 170726 -c - ibmtyp = 1 - ibmrep = mtrnuml/4 - else -c -c Assumes mtrdenl=8 and 3/8, 6/8, 9/8, or 12/8 -c - ibmtyp = 3 - ibmrep = mtrnuml/3 - end if -c -c Reset so we don't keep writing new meters -c - mtrnuml = 0 -c -c Prevent ibmrep=0. Needed for odd bars, e.g. 1/8, where beams don't matter -c - ibmrep = max(ibmrep,1) - return - end - subroutine SetupB(xelsk,nnb,sumx,sumy,ipb,smed,ixrest) -c -c The outer combo algorithm -c - parameter (nm=24) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - common /comipl2/ ipl2(nm,200) - character*1 ulq,sepsymq,sq - logical beamon,firstgulp,figbass,figchk,btest, - * isfig,vxtup,l1ng,l2ng,bar1syst,drawbm - common /comeskz2/ eskz2(nm,200) - real*4 slope(800),xelsk(24) - integer ipb(24) - common /comask/ bar1syst,fixednew,scaldold, - * wheadpt,fbar,poenom - common /comas1/ naskb,task(40),wask(40),elask(40) - common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), - * mtupv(nm,9),nxtinbm(nm), - * islope(nm),xels11(24),eloff(nm,9), - * nssb(nm),issb(nm),lev1ssb(nm,20) - common /comdraw/ drawbm(nm) - common /combmh/ bmhgt,clefend - common /commvl/ nvmx(nm),ivmx(nm,2),ivx - common /comtol/ tol - ibc = ibmcnt(ivx) - nxtinbm(ivx) = 0 - n1 = ipl2(ivx,ibm1(ivx,ibc)) -c -c Initialize counters used in this subroutine, and then later during actual -c beam drawing, to count later segments of single-slope beam groups -c - nssb(ivx) = 0 - issb(ivx) = 0 -c -c Set flag for xtup beam starting with rest (no others can start with rest) -c - if (btest(irest(ivx,ipo(n1)),0)) ixrest = 1 -c -c Figure how many elemskips to each note. Use the list, counting only non-rests. -c - eskz0 = eskz(ivx,ibm1(ivx,ibc)) - nnb = 0 - sumx = 0. - sumy = 0. - ipxt1 = 0 - iplast = ibm2(ivx,ibc) - do 2 ip = ibm1(ivx,ibc) , iplast - if (.not.btest(irest(ivx,ip),0)) then - nnb = nnb+1 - ipb(nnb) = ip - xelsk(nnb) = eskz(ivx,ip)-eskz0 - sumx = sumx+xelsk(nnb) - sumy = sumy+nolev(ivx,ipb(nnb)) - if (btest(nacc(ivx,ip),21)) then -c -c This is the starting note of later segment of single-slope beam group -c Temporarily store ip here. -c - nssb(ivx) = nssb(ivx)+1 - lev1ssb(ivx,nssb(ivx)) = nnb - end if - end if -c -c New xtup stuff here. Final object is to get distance from start of xtup -c to number. xtinbm counts xtups in this beam only. mtupv is the printed -c number. ntupv is number of notes in xtup, and is only used to get -c eloff, the distance from start of xtup to the number. -c - if (btest(nacc(ivx,ip),18)) ndoub = ndoub+1 - if (ipxt1.eq.0 .and. nodur(ivx,ip).eq.0) then -c -c Xtup is starting here -c - nxtinbm(ivx) = nxtinbm(ivx)+1 - ipxt1 = ip - if (btest(nacc(ivx,ip),18)) then - ndoub = 1 - else - ndoub = 0 - end if - else if (ipxt1.gt.0 .and. nodur(ivx,ip).gt.0) then -c -c Xtup ends here. Set total number of notes in xtup. -c - ntupv(ivx,nxtinbm(ivx)) = ip+1-ipxt1 -c -c Set printed number for embedded xtup. -c - mtupv(ivx,nxtinbm(ivx)) = ntupv(ivx,nxtinbm(ivx))+ndoub -c -c Middle note of xtup if ntupv odd, note to left of gap if even. -c - ipxtmid = (ip+ipxt1)/2 - eloff(ivx,nxtinbm(ivx)) = eskz2(ivx,ipxtmid)-eskz2(ivx,ipxt1) - if (mod(ntupv(ivx,nxtinbm(ivx)),2) .eq. 0) - * eloff(ivx,nxtinbm(ivx)) = eloff(ivx,nxtinbm(ivx))+ - * .5*(eskz2(ivx,ipxtmid+1)-eskz2(ivx,ipxtmid)) - ipxt1 = 0 - end if -2 continue -c -c Reset nxtinbm for use as counter as #'s are posted by putxtn(..) -c - nxtinbm(ivx) = 0 - smed = 0. -c if (.not.btest(islur(ivx,ipb(1)),2)) then - if (.not.btest(islur(ivx,ipb(1)),2) .and. nnb.gt.1) then -c -c No forced 0 slope -c -c if (nnb .eq. 1) go to 6 - nsc = 0 - do 5 inb = 1 , nnb-1 - do 5 jnb = inb+1 , nnb - nsc = nsc+1 - slope(nsc) = (nolev(ivx,ipb(jnb))-nolev(ivx,ipb(inb)))/ - * (xelsk(jnb)-xelsk(inb)) - if (abs(slope(nsc)) .lt. 1.e-4) then - nsc = nsc+1 - slope(nsc) = slope(nsc-1) - nsc = nsc+1 - slope(nsc) = slope(nsc-1) - end if -5 continue - if (nsc .eq. 1) then - smed = slope(1) - go to 6 - end if - nscmid = nsc/2+1 - do 7 i = 1 , nscmid - do 7 j = i+1 , nsc - if (slope(j) .lt. slope(i)) then - t = slope(j) - slope(j) = slope(i) - slope(i) = t - end if -7 continue - smed = slope(nscmid) - if (nsc .eq. 2*(nsc/2)) then -c -c Even number of slopes in the list, so median is ambiguous -c - if (abs(slope(nscmid-1)) .lt. abs(slope(nscmid))-tol) then -c -c Lower-numbered one is truly less in absolute value, so use it -c - smed=slope(nscmid-1) - else if (abs(slope(nscmid-1)+slope(nscmid)) .lt. tol) then -c -c Two slopes are effectively equal. Take the one with sign of the average -c - sum = 0. - do 1 i = 1 , nsc - sum = sum+slope(i) -1 continue - smed = sign(smed,sum) - end if - end if -6 continue - islope(ivx) = nint(0.5*smed*slfac) - if (iabs(islope(ivx)) .gt. 9) - * islope(ivx) = isign(9,islope(ivx)) - else -c -c Forced horizontal beam -c - islope(ivx) = 0 - end if - beta = (sumy-islope(ivx)/slfac*sumx)/nnb -c -c If ixrest>0, this is a virtual nolev1 at location of rest. Will first use -c as is for placing xtup number and/or bracket, then reset it for start of -c actual beam -c - nolev1(ivx) = nint(beta) -c -c Check if any stems are too short -c - smin = 100. - iul = -1 - if (ulq(ivx,ibc) .eq. 'u') iul = 1 - ssq = 0. - syb = 0. - yb1 = nolev1(ivx) - * +iul*(stemlen+bmhgt*(iand(15,mult(ivx,ipb(1)))-8-1)) - do 4 inb = 1 , nnb - ybeam = yb1+islope(ivx)*xelsk(inb)/slfac - * -iul*bmhgt*(iand(15,mult(ivx,ipb(inb)))-8-1) - syb = syb+ybeam - ynote = nolev(ivx,ipb(inb)) - off = ybeam-ynote - if (inb .eq. 1) then - off1 = off - else if (inb .eq. nnb) then - off2 = off - end if - ssq = ssq+off*off - smin = min(smin,iul*off) -4 continue - dnolev = 0. - if (smin .lt. stemmin) then - deficit = stemmin-smin - nolevo = nolev1(ivx) - nolev1(ivx) = nint(nolev1(ivx)+iul*deficit) - dnolev = nolev1(ivx)-nolevo - off1 = off1+dnolev - off2 = off2+dnolev - end if - ssq = ssq+2*dnolev*(syb-sumy)+dnolev**2 - if (.not.vxtup(ivx) .and. sqrt(ssq/nnb) .gt. stemmax .and. - * (abs(off1).lt.stemmax .or. abs(off2).lt.stemmax) -c * .and. .not.btest(islur(ivx,ipb(1)),2)) then - * .and. .not.btest(islur(ivx,ipb(1)),2) - * .and. nnb.ne.1) then -c -c The first check is to save trouble of putting xtup's in setbm2. -c The penultimate check is that first and last stems aren't both excessive. -c The last check is that a 0 slope has not been forced -c - call setbm2(xelsk,nnb,sumx,sumy,ipb,islope(ivx),nolev1(ivx)) - end if -c -c Check if beam starts or ends too high or low. -c - xboff = bmhgt*(iand(15,mult(ivx,ipb(1)))-8-1) - l1ng = iul*(nolev1(ivx)-ncmid(iv,ipb(1)))+xboff+7 .lt. 0. - xnolev2 = nolev1(ivx)+islope(ivx)/slfac*xelsk(nnb) - l2ng = iul*(xnolev2-ncmid(iv,ipb(nnb)))+xboff+7 .lt. 0 - if (l1ng .or. l2ng) then -c -c Need to correct start or stop, also slope -c - if (l1ng) then - nolev1(ivx) = nint(ncmid(iv,ipb(1))-(7.+xboff)*iul) - end if - if (l2ng) then - xnolev2 = nint(ncmid(iv,ipb(nnb))-(7.+xboff)*iul) - end if -c -c Since one or the other end has changed, need to change slope -c -c if (.not.btest(islur(ivx,ipb(1)),2)) - if (.not.btest(islur(ivx,ipb(1)),2) .and. nnb.ne.1) - * islope(ivx) = nint(slfac*(xnolev2-nolev1(ivx))/xelsk(nnb)) - end if - if (nssb(ivx) .gt. 0) then -c -c This is a single-slope beam group. Store start heights for later segs. -c - do 3 issbs = 1 , nssb(ivx) - lev1ssb(ivx,issbs) = nolev1(ivx)+islope(ivx)/slfac* - * xelsk(lev1ssb(ivx,issbs)) -3 continue - end if - return - end - subroutine sortpoe(nsyst,poe,ipoe) - parameter (nks=125) - real*4 poe(nks) - integer*4 ipoe(nks) -c -c Initialize ipoe: -c - do 3 iord = 1 , nsyst - ipoe(iord) = iord -3 continue -c -c Construct ipoe vector with pairwise interchanges. When done, ipoe(1) will -c be index of smallest poe, and ipoe(nsyst) will be index of biggest poe. -c - do 4 io1 = 1 , nsyst-1 - do 5 io2 = io1+1 , nsyst - if (poe(ipoe(io1)) .gt. poe(ipoe(io2))) then -c -c Interchange the indices -c - itemp = ipoe(io1) - ipoe(io1) = ipoe(io2) - ipoe(io2) = itemp - end if -5 continue -4 continue - return - end - subroutine spsslur(lineq,iccount,iv,kv,ip,isdat1,isdat2,isdat3, - * isdat4,nsdat,notcrd,nolev,starter) - parameter (nm=24) -c -c Reads in slur data. Record all h/v-shifts for non-chords, user-specified -c ones for chords. -c 5/26/02 This subr is called ONLY for postscript slurs. -c -c See subroutine doslur for bit values in isdat1,2,3 -c - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - integer*4 isdat1(202),isdat2(202),isdat3(202),isdat4(202) - logical notcrd,btest - character*128 lineq - character*1 durq,dumq,starter - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - logical upslur,fontslur,WrotePsslurDefaults -c -c Counter for signed integers. 1st is height, 2nd is horiz, 3rd is curve -c - numint = 0 - ivoff = 0 - ihoff = 0 - nsdat = nsdat+1 - if (starter.eq.'{' .or. starter.eq.'}') - * isdat2(nsdat)=ibset(isdat2(nsdat),3) - call setbits(isdat1(nsdat),5,13,iv) - call setbits(isdat1(nsdat),1,12,kv-1) - call setbits(isdat1(nsdat),8,3,ip) - isdat3(nsdat) = 0 - isdat4(nsdat) = 0 - ilb12 = 0 ! flag for tweaks of 1st or 2nd (0|1) seg of linebreak slur -c -c Get ID code -c - call getchar(lineq,iccount,durq) -c if (index('uldtb+-hfnHps ',durq) .gt. 0) then - if (index('uldtb+-hfnHpsv ',durq) .gt. 0) then -c -c Null id. Note for ps slurs, 'H' cannot be an ID -c - iccount = iccount-1 - if (lineq(iccount:iccount) .eq. 't') then - idcode = 1 - else - idcode = 32 - end if - else -c -c Set explicit idcode -c - idcode = ichar(durq) - if (lineq(iccount-1:iccount-1) .eq. 't') then -c -c Make t[ID] look like s[ID]t -c - isdat2(nsdat) = ibset(isdat2(nsdat),3) - end if - if (lineq(iccount+1:iccount+1).eq.'x') then -c -c Flag for 2-voice, indexed slurs -c - iccount = iccount+1 - call setbits(isdat1(nsdat),1,1,1) - end if - end if - call setbits(isdat1(nsdat),7,19,idcode) -c -c Set start/stop: look thru list from end for same idcode,iv,kv -c - do 2 isdat = nsdat-1 , 1 , -1 - if (idcode .eq. igetbits(isdat1(isdat),7,19) .and. - * iv .eq. igetbits(isdat1(isdat),5,13) .and. -c * kv-1 .eq. igetbits(isdat1(isdat),1,12)) then - * (kv-1 .eq. igetbits(isdat1(isdat),1,12) - * .or. btest(isdat1(isdat),1))) then -c -c Matched idcode & ivx. On/off?. If on, new is turnoff, leave bit 11 at 0. -c - if (btest(isdat1(isdat),11)) go to 3 -c -c Found slur is a turnoff, so new one is a turnon. Jump down to set bit -c - go to 4 - end if -2 continue -c -c If here, this is turnon. -c -4 continue - isdat1(nsdat) = ibset(isdat1(nsdat),11) -3 continue -c -c Now done with initial turnon- or turnoff-specifics. -c - if (nint(SlurCurve).ne.0 .and. btest(isdat1(nsdat),11)) then -c -c There's a default curvature tweak -c - icurv1 = nint(SlurCurve)+3 - if (icurv1 .eq. 2) icurv1 = 1 - isdat3(nsdat) = ibset(isdat3(nsdat),0) - call setbits(isdat3(nsdat),6,2,32+icurv1) - end if -c -c Loop for rest of input -c -1 call getchar(lineq,iccount,durq) - if (index('uld',durq) .gt. 0) then -c -c Force direction -c - isdat1(nsdat) = ibset(isdat1(nsdat),26) - if (durq .eq. 'u') isdat1(nsdat) = ibset(isdat1(nsdat),27) - go to 1 - else if (index('+-',durq) .gt. 0) then - numint = numint+1 - if (numint .eq. 1) then -c -c Vertical offset -c - iccount = iccount+1 - call readnum(lineq,iccount,dumq,fnum) - iccount = iccount-1 - ivoff = nint(fnum) - if (durq .eq. '-') ivoff = -ivoff - else if (numint .eq. 2) then -c -c Horizontal offset -c - iccount = iccount+1 - call readnum(lineq,iccount,dumq,fnum) - iccount = iccount-1 -c -c fnum is abs(hshift), must be 0 to 6.3 -c - ihoff = fnum*10 + .5 - if (durq .eq. '-') ihoff = -ihoff -c -c Later will set bits to 1...127 to represent -6.3,...+6.3 -c - else -c -c Must be the 3rd signed integer, so it's a curve specification -c - isdat3(nsdat) = ibset(isdat3(nsdat),0) - iccount = iccount+1 - call readnum(lineq,iccount,dumq,fnum) - icurv1 = nint(fnum) - if (durq .eq. '-') icurv1 = -icurv1 - call setbits(isdat3(nsdat),6,2,32+icurv1) - if (dumq .ne. ':') then -c -c Back up the pointer and loop for more input -c - iccount = iccount-1 - else -c -c Expect two single digits as parameters for curve -c - isdat3(nsdat) = ibset(isdat3(nsdat),1) - call setbits(isdat3(nsdat),3,8, - * ichar(lineq(iccount+1:iccount+1))-48) - call setbits(isdat3(nsdat),3,11, - * ichar(lineq(iccount+2:iccount+2))-48) - iccount = iccount+2 - end if - end if - go to 1 - else if (durq .eq. 't') then - isdat2(nsdat) = ibset(isdat2(nsdat),3) - go to 1 - else if (durq .eq. 'b') then - isdat2(nsdat) = ibset(isdat2(nsdat),4) - go to 1 - else if (durq .eq. 's') then -c -c Endpoint tweaks for linebreak slurs. -c - call getchar(lineq,iccount,durq) ! Must be +|- -c -c Next is vertical offset -c - iccount = iccount+1 - call readnum(lineq,iccount,dumq,fnum) - if (durq .eq. '-') fnum=-fnum - call setbits(isdat4(nsdat),6,ilb12*16,nint(fnum)+32) - if (index('+-',dumq) .gt. 0) then -c -c Also a horizontal offset -c - iccount = iccount+1 - call readnum(lineq,iccount,durq,fnum) - if (dumq .eq. '-') fnum=-fnum - call setbits(isdat4(nsdat),7,ilb12*16+6,nint(10*fnum)+64) - end if - iccount = iccount-1 - ilb12 = 1 - go to 1 - else if (index('fnhH',durq).gt.0) then -c -c Special ps slur curvatures. -c Translate to old \midslur args (1,4,5,6) -c - icurv1 = index('fnxhH',durq) - if (icurv1 .eq. 5) then -c -c check for 2nd H -c - if (lineq(iccount+1:iccount+1) .eq. 'H') then - iccount = iccount+1 - icurv1 = 6 - end if - end if - isdat3(nsdat) = ibset(isdat3(nsdat),0) - call setbits(isdat3(nsdat),6,2,32+icurv1) - go to 1 - else if (durq .eq. 'p') then ! Local adjustment - call getchar(lineq,iccount,durq) ! +|- - call getchar(lineq,iccount,dumq) ! s|t -c 26 \sluradjust (p+s) -c 27 \nosluradjust (p-s) -c 28 \tieadjust (p+t) -c 29 \notieadjust (p-t) - if (durq .eq. '+') then - if (dumq .eq. 's') then - isdat2(nsdat) = ibset(isdat2(nsdat),26) - else - isdat2(nsdat) = ibset(isdat2(nsdat),28) - end if - else - if (dumq .eq. 's') then - isdat2(nsdat) = ibset(isdat2(nsdat),27) - else - isdat2(nsdat) = ibset(isdat2(nsdat),29) - end if - end if - go to 1 - else if (durq .eq. 'v') then ! Stem slur - isdat1(nsdat) = ibset(isdat1(nsdat),2) - go to 1 - end if -c -c Record shifts -c - call setbits(isdat2(nsdat),6, 6,ivoff+32) - call setbits(isdat2(nsdat),7,12,ihoff+64) -c -c Record chord flag, note level, notehead shift -c - if (notcrd) then - call setbits(isdat2(nsdat),7,19,nolev) - else - nolevc = igetbits(icrdat(ncrd),7,12) - call setbits(isdat2(nsdat),7,19,nolevc) - isdat2(nsdat) = ibset(isdat2(nsdat),0) - call setbits(isdat2(nsdat),2,1,igetbits(icrdat(ncrd),2,23)) - end if - return - end - subroutine sslur(lineq,iccount,iv,kv,ip,isdat1,isdat2,isdat3, - * nsdat,notcrd,nolev,starter) - parameter (nm=24) -c -c Reads in slur data. Record all h/v-shifts for non-chords, user-specified -c ones for chords. -c 5/26/02 now only for non-postscript slurs, use spsslur() for postscript -c -c See subroutine doslur for bit values in isdat1,2,3 -c - common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), - * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, - * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 - integer*4 isdat1(202),isdat2(202),isdat3(202) - logical notcrd,btest - character*128 lineq - character*1 durq,dumq,starter - common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur - * ,WrotePsslurDefaults,SlurCurve - logical upslur,fontslur,WrotePsslurDefaults -c -c Counter for signed integers. 1st is height, 2nd is horiz, 3rd is curve -c - numint = 0 - ivoff = 0 - ihoff = 0 - nsdat = nsdat+1 - if (starter.eq.'{' .or. starter.eq.'}') - * isdat2(nsdat)=ibset(isdat2(nsdat),3) - call setbits(isdat1(nsdat),5,13,iv) - call setbits(isdat1(nsdat),1,12,kv-1) - call setbits(isdat1(nsdat),8,3,ip) - isdat3(nsdat) = 0 -c -c Get id letter -c - if (lineq(iccount:iccount) .eq. 't') then -c -c Old-style t-slur. Use special idcode = 1 -c - idcode = 1 - else - call getchar(lineq,iccount,durq) - if (index('uldtb+-hf ',durq) .gt. 0) then -c -c Null id -c - idcode = 32 - iccount = iccount-1 - else if (durq.eq.'H') then -c -c Postscript slur, cannot use 'H' as code, must check for 2nd 'H' -c - idcode = 32 - iccount = iccount-1 -c -c There may be another "H", but no need to deal with it yet -c - else -c -c Set explicit idcode -c - idcode = ichar(durq) - end if - end if - call setbits(isdat1(nsdat),7,19,idcode) -c -c Set start/stop: look thru list from end for same idcode,iv,kv -c - do 2 isdat = nsdat-1 , 1 , -1 - if (idcode .eq. igetbits(isdat1(isdat),7,19) .and. - * iv .eq. igetbits(isdat1(isdat),5,13) .and. - * kv-1 .eq. igetbits(isdat1(isdat),1,12)) then -c -c Matched idcode & ivx. On/off?. If on, new is turnoff, leave bit 11 at 0. -c - if (btest(isdat1(isdat),11)) go to 3 -c -c Found slur is a turnoff, so new one is a turnon. Jump down to set bit -c - go to 4 - end if -2 continue -c -c If here, this is turnon. -c -4 continue - isdat1(nsdat) = ibset(isdat1(nsdat),11) -3 continue -c -c Now done with initial turnon- or turnoff-specifics. Loop for rest of input -c -1 call getchar(lineq,iccount,durq) - if (index('uld',durq) .gt. 0) then -c -c Force direction -c - isdat1(nsdat) = ibset(isdat1(nsdat),26) - if (durq .eq. 'u') isdat1(nsdat) = ibset(isdat1(nsdat),27) - go to 1 - else if (index('+-',durq) .gt. 0) then - numint = numint+1 - if (numint .eq. 1) then -c -c Vertical offset -c - iccount = iccount+1 - call readnum(lineq,iccount,dumq,fnum) - iccount = iccount-1 - ivoff = nint(fnum) - if (durq .eq. '-') ivoff = -ivoff - else if (numint .eq. 2) then -c -c Horizontal offset -c - iccount = iccount+1 - call readnum(lineq,iccount,dumq,fnum) - iccount = iccount-1 -c -c fnum is abs(hshift), must be 0 to 6.3 -c - ihoff = fnum*10 + .5 - if (durq .eq. '-') ihoff = -ihoff -c -c Later will set bits to 1...127 to represent -6.3,...+6.3 -c - else -c -c Must be the 3rd signed integer, so it's a curve specification -c - isdat3(nsdat) = ibset(isdat3(nsdat),0) - iccount = iccount+1 - call readnum(lineq,iccount,dumq,fnum) - icurv1 = nint(fnum) - if (durq .eq. '-') icurv1 = -icurv1 - call setbits(isdat3(nsdat),6,2,32+icurv1) - if (dumq .ne. ':') then -c -c Back up the pointer and loop for more input -c - iccount = iccount-1 - else -c -c Expect two single digits as parameters for curve -c - isdat3(nsdat) = ibset(isdat3(nsdat),1) - call setbits(isdat3(nsdat),3,8, - * ichar(lineq(iccount+1:iccount+1))-48) - call setbits(isdat3(nsdat),3,11, - * ichar(lineq(iccount+2:iccount+2))-48) - iccount = iccount+2 - end if - end if - go to 1 - else if (durq .eq. 't') then - isdat2(nsdat) = ibset(isdat2(nsdat),3) - go to 1 - else if (durq .eq. 'b') then - isdat2(nsdat) = ibset(isdat2(nsdat),4) - go to 1 - else if (index('fhH',durq) .gt. 0) then -c -c Special ps slur curvatures. Translate to old \midslur args (1,4,5,6) -c - icurv1 = 2+index('fhH',durq) - if (icurv1 .eq. 3) then - icurv1 = 1 - else if (icurv1 .eq. 5) then -c -c check for 2nd H -c - if (lineq(iccount+1:iccount+1) .eq. 'H') then - iccount = iccount+1 - icurv1 = 6 - end if - end if - isdat3(nsdat) = ibset(isdat3(nsdat),0) -c -c Must change sign if downslur, but cannot do it now since we don't know -c slur direction for sure. -c - call setbits(isdat3(nsdat),6,2,32+icurv1) - go to 1 - end if -c -c Record shifts -c - call setbits(isdat2(nsdat),6, 6,ivoff+32) - call setbits(isdat2(nsdat),7,12,ihoff+64) -c -c Record chord flag, note level, notehead shift -c - if (notcrd) then - call setbits(isdat2(nsdat),7,19,nolev) - else - nolevc = igetbits(icrdat(ncrd),7,12) - call setbits(isdat2(nsdat),7,19,nolevc) - isdat2(nsdat) = ibset(isdat2(nsdat),0) - call setbits(isdat2(nsdat),2,1,igetbits(icrdat(ncrd),2,23)) - end if - return - end - subroutine stop1() - call exit(1) - end - subroutine topfile(basenameq,lbase,nv,clefq,noinst,musicsize, - * xinstf1,mtrnmp,mtrdnp,vshrink,fbar,fontslur) - parameter (nm=24) - common /comlast/ islast,usevshrink - logical islast,usevshrink,fontslur - common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, - * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, - * lnam(nm),inameq(nm) - common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), - * xinsnow,lowdot - common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) - character*79 inameq - character*44 basenameq - character*24 fmtq - character*5 fbarq - character*1 clefq(nm),sq,chax,clefqiv - common /comstart/ facmtr - logical vshrink,lowdot,rename - logical novshrinktop,cstuplet - common /comnvst/ novshrinktop,cstuplet - common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), - * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans - logical EarlyTransOn,LaterInstTrans - common /comsize/ isize(nm) - common /comis4bignv/ is4bignv,AIset - logical is4bignv,AIset - common /comc8flag/ c8flag(nm) - logical c8flag - sq = chax(92) - vshrink = xinstf1.gt.20. .and. .not.novshrinktop - if (vshrink) then - xinsnow = 10. - else - xinsnow = xinstf1 - end if - if (.not.islast) return -c -c Initialize octave treble clef tracker -c - do 6 im = 1 , nm - c8flag(im) = .false. -6 continue - write(11,'(a)')'%%%%%%%%%%%%%%%%%' - write(11,'(a)')'%' - write(11,'(a)')'% '//basenameq(1:lbase)//'.tex' - write(11,'(a)')'%' - write(11,'(a)')'%%%%%%%%%%%%%%%%' - write(11,'(a)')sq//'input musixtex' - write(11,'(a)')sq//'input pmx' - write(11,'(a)') - * sq//'setmaxslurs{24}'//sq//'setmaxinstruments{24}%' - if (.not.fontslur) write(11,'(a)')sq//'input musixps' -c -c Need to input musixmad to permit more slurs. -c - if (musicsize .eq. 20) then - write(11,'(a)')sq//'normalmusicsize%' - else if (musicsize .eq. 16) then - write(11,'(a)')sq//'smallmusicsize%' - else if (musicsize .eq. 24) then - write(11,'(a)')sq//'largemusicsize%' -c -c Eliminate, per Tennent's analysis and musixtex changes since first input -c -c write(11,'(a)')sq//'def'//sq//'meterfont{'//sq// -c * 'meterlargefont}%' - else if (musicsize .eq. 29) then - write(11,'(a)')sq//'Largemusicsize%' -c write(11,'(a)')sq//'def'//sq//'meterfont{'//sq// -c * 'meterLargefont}%' - end if -c -c Set sizes. Have sizes per staff in isize(.) and noinst per staff in -c nsperi(.) -c -c 130324 -c iiv = 1 - do 5 iinst = 1 , noinst -c if (isize(iiv) .eq. 1) then - if (isize(iinst) .eq. 1) then - if(iinst.le.9) then - write(11,'(a8,i1,a)') - * sq//'setsize',iinst,sq//'smallvalue%' - else - write(11,'(a9,i2,a)') - * sq//'setsize{',iinst,'}'//sq//'smallvalue%' - end if -c else if (isize(iiv) .eq. 2) then - else if (isize(iinst) .eq. 2) then - if(iinst.le.9) then - write(11,'(a8,i1,a)') - * sq//'setsize',iinst,sq//'tinyvalue%' - else - write(11,'(a9,i2,a)') - * sq//'setsize{',iinst,'}'//sq//'tinyvalue%' - end if - end if -c iiv = iiv+nsperi(iinst) -5 continue - write(fbarq,'(f5.3)')fbar - write(11,'(a)')sq//'nopagenumbers' - write(11,'(a)')sq//'tracingstats=2'//sq//'relax' - write(11,'(a7,i3,a2)')sq//'hsize=',nint(widthpt),'pt' - write(11,'(a6,i'//chax(49+int(log10(height+.1)))//',a2)') - * sq//'vsize',int(height+.1),'pt' - if (abs(hoffpt) .gt. 0.1) then - if (hoffpt .le. -10.) then - write(11,'(a8,i3,a2)')sq//'hoffset',nint(hoffpt),'pt' - else if (hoffpt .lt. 0.) then - write(11,'(a8,i2,a2)')sq//'hoffset',nint(hoffpt),'pt' - else if (hoffpt .lt. 10.) then - write(11,'(a8,i1,a2)')sq//'hoffset',nint(hoffpt),'pt' - else - write(11,'(a8,i2,a2)')sq//'hoffset',nint(hoffpt),'pt' - end if - end if - if (abs(voffpt) .gt. 0.1) then - if (voffpt .le. -10.) then - write(11,'(a8,i3,a2)')sq//'voffset',nint(voffpt),'pt' - else if (voffpt .lt. 0.) then - write(11,'(a8,i2,a2)')sq//'voffset',nint(voffpt),'pt' - else if (voffpt .lt. 10.) then - write(11,'(a8,i1,a2)')sq//'voffset',nint(voffpt),'pt' - else - write(11,'(a8,i2,a2)')sq//'voffset',nint(voffpt),'pt' - end if - end if -c -c The default raisebarno=3.5 internote, set in pmx.tex. Increase to 4.5 if -c 3 sharps and treble clef, to avoid vertical clash with top space g# -c - if (isig.eq.3 .and. clefq(nv).eq.'t') write(11,'(a)') - * sq//'def'//sq//'raisebarno{4.5'//sq//'internote}' - if (noinst .lt. 10) then - write(11,'(a19,i1,a1)')sq//'def'//sq//'nbinstruments{', - * noinst,'}' - else - write(11,'(a19,i2,a1)')sq//'def'//sq//'nbinstruments{', - * noinst,'}' - end if - iv = 0 - do 1 iinst = 1 , noinst - nstaves = nsperi(iinst) - if (iinst .lt. 10) then - write(11,'(a)')sq//'setstaffs'//chax(48+iinst) - * //chax(48+nstaves) - else - write(11,'(a11,i2,a)')sq//'setstaffs{',iinst,'}' - * //chax(48+nstaves) - end if - iv = iv+1 - clefqiv = clefq(iv) - if (clefqiv.eq.'8') then - clefqiv='t' - iTransAmt(instno(iv)) = 7+iTransAmt(instno(iv)) - c8flag(iv) = .true. - end if - if (nstaves .eq. 1) then - fmtq = chax(48+numclef(clefq(iv))) - lfmtq = 1 - else - fmtq = '{'//chax(48+numclef(clefq(iv))) - lfmtq = 2 - do 2 k = 2 , nstaves - iv = iv+1 - fmtq = fmtq(1:lfmtq)//chax(48+numclef(clefq(iv))) - lfmtq = lfmtq+1 -2 continue - fmtq = fmtq(1:lfmtq)//'}' - lfmtq = lfmtq+1 - end if - if (iinst .lt. 10) then - write(11,'(a)')sq//'setclef'//chax(48+iinst)//fmtq(1:lfmtq) - else - write(11,'(a9,i2,a)')sq//'setclef{',iinst,'}'//fmtq(1:lfmtq) - end if - if (clefq(iv) .eq. '8') then - if (iinst .lt. 10) then - write(11,'(a)')sq//'settrebleclefsymbol'//chax(48+iinst)// - * sq//'treblelowoct%' - else - write(11,'(a21,i2,a)')sq//'settrebleclefsymbol{',iinst,'}'// - * sq//'treblelowoct%' - end if - c8flag(iv) = .true. - end if - do 3 lname = 79 , 2 , -1 - if (inameq(iinst)(lname:lname) .ne. ' ') go to 4 -3 continue -4 continue - lnam(iinst) = lname - if (iinst .lt. 10) then - write(11,'(a8,i1,a)')sq//'setname',iinst, - * '{'//inameq(iinst)(1:lname)//'}' - else - write(11,'(a9,i2,a)')sq//'setname{',iinst, - * '}{'//inameq(iinst)(1:lname)//'}' - end if -1 continue - write(11,'(a18,i2,a2)')sq//'generalsignature{',isig,'}%' - if (EarlyTransOn) - * call Writesetsign(nInstTrans,iInstTrans,iTransKey,EarlyTransOn) - call wgmeter(mtrnmp,mtrdnp) - ipi = nint(fracindent*widthpt) - if (ipi .lt. 10) then - write(11,'(a11,i1,a2)')sq//'parindent ',ipi,'pt' - else if (ipi .lt. 100) then - write(11,'(a11,i2,a2)')sq//'parindent ',ipi,'pt' - else - write(11,'(a11,i3,a2)')sq//'parindent ',ipi,'pt' - end if - write(11,'(a)')sq//'elemskip1pt'//sq//'afterruleskip' - * //fbarq//'pt'//sq//'beforeruleskip0pt'//sq//'relax' - if (.not.vshrink) then - if (xinstf1 .lt. 9.95) then - fmtq = '(a,f3.1,a)' - else - fmtq = '(a,f4.1,a)' - end if - facis = 1. - if (is4bignv) facis = .95 - write(11,fmtq)sq//'stafftopmarg0pt'//sq//'staffbotmarg0pt' - * //sq//'interstaff{',xinstf1*facis,'}'//sq//'relax' - else - write(11,'(a)')sq//'stafftopmarg0pt'// - * sq//'staffbotmarg5'//sq//'Interligne'//sq// - * 'interstaff{10}'//sq//'relax' - end if - if (nv.eq.1) write(11,'(a)')sq//'nostartrule' - write(11,'(a)')sq//'readmod{'//basenameq(1:lbase)//'}' - if (cstuplet) then - write(11,'(a)')sq//'input tuplet' - * //sq//'def'//sq//'xnumt#1#2#3{'//sq//'zcharnote{#2}{~}' - * //sq//'def'//sq//'tuplettxt{'//sq//'smalltype'//sq//'it{#3}' - * //sq//'/'//sq//'/}}%' - write(11,'(a)')sq//'let'//sq//'ovbkt'//sq//'uptuplet' - * //sq//'let'//sq//'unbkt'//sq//'downtuplet%' - end if - write(11,'(a)')sq//'startmuflex'//sq//'startpiece'//sq// - * 'addspace'//sq//'afterruleskip%' - return - end - character*1 function udfq(nolev,ncm) -c -c Slur directions -c - common /combc/ bcspec - logical bcspec - ntest = nolev-ncm - if (ntest.lt.0 .or. - * (ntest.eq.0 .and. bcspec .and. ncm.eq.23) ) then - udfq = 'd' - else - udfq = 'u' - end if - return - end - character*1 function udqq(nole,ncm,isl,nvmx,ivx,nv) -c -c Stem direction for single notes -c - character*1 ulfq - character*1 udqqq - logical btest - if (btest(isl,30)) then -c -c Absolute override -c - if (btest(isl,17)) then - udqqq = 'u' - else - udqqq = 'l' - end if - else if (nvmx .eq. 1) then -c -c Single voice per staff, default -c - udqqq = ulfq(1.*nole,ncm) - else -c -c Multi-voice per staff, 1st is lower, 2nd upper -c - if (ivx .le. nv) then - udqqq = 'l' - else - udqqq = 'u' - end if - end if - udqq = udqqq - return - end - character*1 function ulfq(xnolev,ncm) -c -c Stem directions -c - common /combc/ bcspec - logical bcspec - test = xnolev-ncm - if (test.lt.-.001 .or. - * (test.lt..001.and.bcspec.and.ncm.eq.23) ) then - ulfq = 'u' - else - ulfq = 'l' - end if - return - end - function upcaseq(chq) - character*1 chq,upcaseq,chax - if (ichar(chq).ge.61.and.ichar(chq).lt.122) then - upcaseq = chax(ichar(chq)-32) - else - upcaseq = chq - print*,'Warning, upcaseq was called with improper argument: ' - * //chq - stop - end if - return - end - subroutine wgmeter(mtrnmp,mtrdnp) -c -c Writes meter stuff to file 11, so only called if islast=.true. -c - character*1 sq,chax - if (mtrdnp .eq. 0) return - sq=chax(92) - if (mtrnmp.gt.0 .and. mtrnmp.le.9) then - if (mtrdnp .lt. 10) then - write(11,'(a25,i1,a2,i1,a3)') - * sq//'generalmeter{'//sq//'meterfrac{', - * mtrnmp,'}{',mtrdnp,'}}%' - else - write(11,'(a25,i1,a2,i2,a3)') - * sq//'generalmeter{'//sq//'meterfrac{', - * mtrnmp,'}{',mtrdnp,'}}%' - end if - else if (mtrnmp .ge. 10) then - if (mtrdnp .lt. 10) then - write(11,'(a25,i2,a2,i1,a3)') - * sq//'generalmeter{'//sq//'meterfrac{', - * mtrnmp,'}{',mtrdnp,'}}%' - else - write(11,'(a25,i2,a2,i2,a3)') - * sq//'generalmeter{'//sq//'meterfrac{', - * mtrnmp,'}{',mtrdnp,'}}%' - end if - else if (mtrnmp .lt. 0) then - write(11,'(a26,i1,a2,i1,a3)') - * sq//'generalmeter{'//sq//'meterfracS{', - * -mtrnmp,'}{',mtrdnp,'}}%' - else if (mtrdnp .le. 4) then - write(11,'(a21,i1,a2)') - * sq//'generalmeter{'//sq//'meterN',mtrdnp,'}%' - else if (mtrdnp .eq. 5) then - write(11,'(a)')sq//'generalmeter'//sq//'allabreve%' - else if (mtrdnp .eq. 6) then - write(11,'(a)')sq//'generalmeter'//sq//'meterC%' - else if (mtrdnp .eq. 7) then - write(11,'(a)')sq//'generalmeter'//sq//'meterIIIS%' - end if - return - end - subroutine writemidi(jobname,ljob) - parameter(nm=24,mv=24576) - common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, - * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), - * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), - * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), - * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, - * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), - * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), - * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), - * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) - character*1 ulq,sepsymq,sq - logical beamon,firstgulp,figbass,figchk,isfig - character*1 byteq(4),char,chax - character*10 tempoq,instq - character*44 jobname - integer*2 mmidi - logical restpend,relacc,notmain,twoline,ismidi,crdacc - common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, - * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), - * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), - * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, - * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), - * debugmidi - logical debugmidi - common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) - * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) - common /comevent/ miditime,lasttime - logical mmacrec,gottempo - common /commmac/ mmacstrt(0:nm,20),mmacend(0:nm,20),immac, - * mmactime(20),nmidsec,msecstrt(0:nm,60),msecend(0:nm,60), - * mmacrec,gottempo - character*79 inameq - common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, - * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, - * lnam(nm),inameq(nm) - logical rename - common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) -c -c Used to be icmm(0:nm); did midi fail when nv>16? -c - integer*2 iinsiv,icmm(0:15) - character*5 versionc - common /comver/ versionc -c -c These are not consecutive because channel 9 is reserved for percussion. -c - data icmm /0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16/ -c -c Write Header -c - write(51,'(a,$)')'MThd'//char(0)//char(0)//char(0)//char(6) - * //char(0)//char(1)//char(0)//char(numchan+1)//char(0)//char(240) - if (debugmidi) - * write(52,'(a6,10Z4)')'"MThd"',0,0,0,6, - * 0,1,0,numchan+1,0,240 -c -c Write the "conductor" track, for keys, meter, and tempos -c Get the number of bytes in the conductor event stream -c - ndata = 1+imidi(numchan)-msecstrt(numchan,nmidsec) - do 15 isec = 1 , nmidsec-1 - ndata = ndata+1+msecend(numchan,isec)-msecstrt(numchan,isec) -15 continue -c ib1 = (4+ljob+26+ndata+4)/256 -c ib0 = 4+ljob+26+ndata+4-256*ib1 - ib1 = (4+ljob+27+ndata+4)/256 - ib0 = 4+ljob+27+ndata+4-256*ib1 - write(51,'(a,$)')'MTrk'//char(0)//char(0)//char(ib1)//char(ib0) -c -c Text header -c -c * //char(0)//char(255)//char(1)//char(ljob+26) - * //char(0)//char(255)//char(1)//char(ljob+27) - if (debugmidi) - * write(52,'(a6,8z4)')'"MTrk"',0,0,ib1,ib0, - * 0,255,1,ljob+27 - write(51,'(a,$)')jobname(1:ljob) - if (debugmidi) write(52,'(a)')'"'//jobname(1:ljob)//'"' -c -c (separate writes are needed to defeat compiler BUG!!!) -c -c write(51,'(a,$)')'.mid, produced by PMX 2.30' - write(51,'(a,$)')'.mid, produced by PMX '//versionc - if (debugmidi) write(52,'(a)') - * '".mid, produced by PMX '//versionc//'"' -c -c Conductor event data: Loop over sections. -c - do 16 isec = 1 , nmidsec - if (isec .lt. nmidsec) then - mend = msecend(numchan,isec) - else - mend = imidi(numchan) - end if - do 17 i = msecstrt(numchan,isec) , mend - write(51,'(a,$)')char(mmidi(numchan,i)) - if (debugmidi) write(52,'(z4)')mmidi(numchan,i) -17 continue -16 continue -c -c And close out the time sig / tempo track. -c - write(51,'(a,$)')char(0)//char(255)//char(2*16+15)//char(0) - if (debugmidi) write(52,'(4z4)')0,255,2*16+15,0 -c -c Loop over track for each voice: The following sets up iv. -c - iv = nv - if (twoline(nv)) then - kv = 2 - else - kv = 1 - end if -c - do 5 icm = 0 , numchan-1 -c -c Get the number of bytes in the data stream -c - ndata = 1+imidi(icm)-msecstrt(icm,nmidsec) - do 11 isec = 1 , nmidsec-1 - ndata = ndata+1+msecend(icm,isec)-msecstrt(icm,isec) -11 continue -c -c Add 3 for instrum, 4 for bal, plus 4 (for closing) to byte count, -c - ndata = ndata+11 -c -c Add 4+lnam(iinsiv(iv)) if lnam>0 , -c - if (lnam(iinsiv(iv)).gt.0) ndata = ndata+4+lnam(iinsiv(iv)) -c -c Separate total byte counts into 4 bytes -c - do 2 ibyte = 1 , 4 - if (ndata .gt. 0) then - byteq(ibyte) = char(mod(ndata,256)) - ndata = ishft(ndata,-8) - else - byteq(ibyte) = char(0) - end if -2 continue -c -c Now write front stuff for this track -c - write(51,'(a,$)')'MTrk'//byteq(4)//byteq(3)//byteq(2)//byteq(1) - * //char(0)//char(12*16+icmm(icm))//char(midinst(iinsiv(iv))) - * //char(0)//char(11*16+icmm(icm))//char(10)//char(midbc(icm)) - print*,'#25294 In writemidi, midbc:',midbc(icm) - if (debugmidi) write(52,'(a4,z2,a7,11z4)')'icm=',icm, - * ' "MTrk"',ichar(byteq(4)),ichar(byteq(3)),ichar(byteq(2)), - * ichar(byteq(1)),0,12*16+icmm(icm),midinst(iinsiv(iv)), - * 0,11*16+icmm(icm),10,midbc(icm) - if (lnam(iinsiv(iv)) .gt. 0) then -c -c Add instrument name as sequence name -c - write(51,'(a,$)')char(0)//char(255)//char(3) - * //char(lnam(iinsiv(iv))) - if (debugmidi) write(52,'(4z4)')0,255,3,lnam(iinsiv(iv)) - write(51,'(a,$)') - * inameq(iinsiv(iv))(1:lnam(iinsiv(iv))) - if (debugmidi) write(52,'(a)') - * '"'//inameq(iinsiv(iv))(1:lnam(iinsiv(iv)))//'"' - end if - write(tempoq,'(i2)')icm - write(instq,'(i3)')midinst(iinsiv(iv)) - call printl('MIDI instrument '//tempoq(1:2)//' is '//instq(1:3)) -c -c Notes: Loop over sections. -c - do 9 isec = 1 , nmidsec - if (isec .lt. nmidsec) then - mend = msecend(icm,isec) - else - mend = imidi(icm) - end if - do 10 i = msecstrt(icm,isec) , mend - write(51,'(a,$)')char(mmidi(icm,i)) - if (debugmidi) write(52,'(z4)')mmidi(icm,i) -10 continue -9 continue -c -c Closing 4 bytes -c - write(51,'(a,$)')chax(0)//char(255)//char(2*16+15)//char(0) - if (debugmidi) write(52,'(4z4)')0,255,2*16+15,0 - if (kv .eq. 2) then - kv = 1 - else if (iv .eq. 1) then - go to 5 - else - iv = iv-1 - if (twoline(iv)) kv=2 - end if -5 continue - write(*,'(1x,a12,(10i6))')'Bytes used:',(imidi(icm),icm=0,numchan) - write(15,'(1x,a12,(10i6))') - * 'Bytes used:',(imidi(icm),icm=0,numchan) - close(51) - if (debugmidi) close(52) - return - end - subroutine Writesetsign(nInstTrans,iInstTrans,iTransKey,flag) - parameter(nm=24) - integer*4 iInstTrans(nm),iTransKey(nm) - character*79 notexq - character*1 chax - logical flag -c -c Assumes notexq is blank -c - do 1 i = 1 , nInstTrans - notexq = chax(92)//'setsign' - lnote = 8 - if (iInstTrans(i) .lt. 10) then - notexq = notexq(1:lnote)//chax(48+iInstTrans(i)) - lnote = lnote+1 - else - write(notexq(lnote+1:lnote+4),'(a1,i2,a1)') - * '{',iInstTrans(i),'}' - lnote = lnote+4 - end if - if (iTransKey(i) .lt. 0) then - write(notexq(lnote+1:lnote+4),'(a1,i2,a1)') - * '{',iTransKey(i),'}' - lnote = lnote+4 - else - notexq = notexq(1:lnote)//chax(48+iTransKey(i)) - lnote = lnote+1 - end if - write(11,'(a)')notexq(1:lnote)//'%' -1 continue - flag = .false. - return - end - subroutine writflot(x,notexq,lenline) - character*(*) notexq - if (x .lt. 0.95) then - write(notexq(lenline+1:lenline+2),'(f2.1)')x - lenline = lenline+2 - else if (x .lt. 9.95) then - write(notexq(lenline+1:lenline+3),'(f3.1)')x - lenline = lenline+3 - else - write(notexq(lenline+1:lenline+4),'(f4.1)')x - lenline = lenline+4 - end if - return - end - subroutine wsclef(iv,ninow,nclef) -c subroutine wsclef(iv,ninow,clefq,nclef) -c -c Writes \setclef for instrument containing *staff* iv -c - parameter (nm=24) - common /comlast/ islast,usevshrink - logical islast,usevshrink - common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) - logical rename -c -c In pmx271, had removed clefq, so with 2 or more staves in -c an instrument, had problems. So replace in 272 -c - common /comclefq/ clefq(nm) - character*1 clefq,chax - character*40 temq - common /comc8flag/ c8flag(nm) - logical c8flag - if (nclef .lt. 7) then - clefq(iv) = chax(48+nclef) - else - clefq(iv)='9' - end if - if (.not.islast) return - iv1 = 1 - do 1 iinst = 1 , ninow - if (iv .lt. iv1+nspern(iinst)) go to 2 - iv1 = iv1+nspern(iinst) -1 continue - print* - print*,'Should not be here in wsclef!' - call stop1() -2 continue -c -c Here, iinst is the instrument number with staff of clef change -c - iv2 = iv1+nspern(iinst)-1 - if (iinst .lt. 10) then - temq = chax(92)//'setclef'//chax(48+iinst) - ltem = 9 - else - write(temq,'(a9,i2,a1)') chax(92)//'setclef{',iinst,'}' - ltem = 12 - end if - if (iv1 .eq. iv2) then -c -c Only one staff (iv) in instrument with clef change -c - write(11,'(a)')temq(1:ltem)//clefq(iv)//'%' - else - temq = temq(1:ltem)//'{' - ltem = ltem+1 -c -c Loop over staves, but clefq has only changed for one of them -c - do 3 iiv = iv1 , iv2 - temq = temq(1:ltem)//chax(48+numclef(clefq(iiv))) - ltem = ltem+1 -3 continue - write(11,'(a)')temq(1:ltem)//'}%' - end if - if (c8flag(iv)) then -c -c If we change FROM octave treble clef to some other, need the following. -c - write(11,'(a)')char(92)//'settrebleclefsymbol'//chax(48+iinst) - * //char(92)//'trebleclef%' - c8flag(iv) = .false. - end if - return - end - subroutine chkpmxlyr(lineq,iccount,lyrerr) - character*128 lineq - character*1 charq - lyrerr = 0 -c -c On entry, last char was " -c -18 call g1etchar(lineq,iccount,charq) - if (iccount .eq. 121) then - lyrerr = 2 - return -c else if (charq.eq.'"') then - else if (charq.eq.'"' .and. - * .not.(lineq(iccount-1:iccount-1).eq.char(92))) then - call g1etchar(lineq,iccount,charq) -c -c Check for raise/lower command -c - if (charq .eq. '@') then -c -c @ positions lyrics vertically for current voice -c [a,b] above or below of the staff -c +/- i offset, \internotes -c - call g1etchar(lineq,iccount,charq) - if (index('ab',charq).eq.0) then - lyrerr = 3 - return - end if - call g1etchar(lineq,iccount,charq) - if (index('+-',charq).eq.0) then - lyrerr = 4 - return - end if - call g1etchar(lineq,iccount,charq) - if (index('0123456789',charq).eq.0) then - lyrerr = 5 - return - end if - else if (charq .ne. ' ') then -c -c 2nd " must be followed by ' ' -c - lyrerr = 1 - return - end if - return - end if - go to 18 - end - subroutine dopmxlyr(lineq,iccount) -c -c lineq has " at iccount. Find end of lyrics string, replace "..." -c with \pmxlyr{...}\, but also look for ~ in lyrics and replace with '\ll ', -c (unless preceded with '\'), check length -c - character*128 lineq,lineqt - character*1 sq,chax - sq = chax(92) - iend = lenstr(lineq,128) -c -c i2nd = iccount+index(lineq(iccount+1:128),'"') -c Find position of closing '"'; must bypass any \" which is used for umlaut -c - i2nd = iccount+index(lineq(iccount+1:128),'"') -2 continue - if (lineq(i2nd-1:i2nd-1).eq.char(92)) then - i2nd = i2nd+index(lineq(i2nd+1:128),'"') - go to 2 - end if - istart = iccount -1 itilde = istart+index(lineq(istart+1:i2nd-1),'~') - if (itilde.gt.istart.and.itilde.lt.i2nd) then -c -c Replace tilde if not preceded by \ -c - if (iend .ge. 117) then - print*,'Sorry, lyric string is too long, stopping' - call stop1() - else if (lineq(itilde-1:itilde-1) .eq. sq) then - istart = itilde - go to 1 - end if - lineqt = lineq(1:itilde-1)//sq//'lk ' - * //lineq(itilde+1:iend) - iend = lenstr(lineqt,128) - i2nd = i2nd+3 - lineq = lineqt - go to 1 - end if - if (iccount .eq. 1) then - lineqt = sq//'pmxlyr{'//lineq(2:i2nd-1)//'}'//sq - * //lineq(i2nd+1:128) - else - lineqt = lineq(1:iccount-1)//sq//'pmxlyr{' - * //lineq(iccount+1:i2nd-1)//'}'//sq - * //lineq(i2nd+1:128) - end if - i2nd = i2nd+8 - lineq = lineqt - if (lineq(i2nd+1:i2nd+1) .eq. '@') then - lineqt = lineq(1:i2nd)//'at{'//lineq(i2nd+2:i2nd+4)//'}'//sq - * //lineq(i2nd+5:128) - lineq = lineqt - end if - return - end - subroutine inst2chan(midc,midi,midchan,nv,iinsiv,twoline) -c propagate per-instrument quantities to per-channel ones - parameter (nm=24) - integer*4 midc(0:nm),midi(nm),midchan(nm,2) - integer*2 iinsiv(nm) - logical twoline(nm) - do iv = nv, 1, -1 - if (twoline(iv)) then - midc(midchan(iv,2)) = midi(iinsiv(iv)) - end if - midc(midchan(iv,1)) = midi(iinsiv(iv)) - end do - end - - + program pmxab +c +c This program, PMX, developed by Don Simons +c (dsimons@roadrunner.com), is a preprocessor for MusiXTeX. In concert with +c MusiXTeX and TeX, its purpose is to allow the user to create high-quality +c typeset musical scores by including a sequence of PMX commands in an ASCII +c input file. +c +c This program is free software: you can redistribute it and/or modify +c it under the terms of the GNU General Public License as published by +c the Free Software Foundation, either version 3 of the License, or +c (at your option) any later version. +c +c This program is distributed in the hope that it will be useful, +c but WITHOUT ANY WARRANTY; without even the implied warranty of +c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +c GNU General Public License for more details. +c +c You should have received a copy of the GNU General Public License +c along with this program. If not, see . +c +c + character*9 date + character*5 version,versionc + common /comver/ versionc +c +c To compile with gfortran: +c 1. Merge all files using copy *.for epmx[nnnn].for +c 2. Search and replace all character*65536 with character*131072 +c 3. Comment/uncomment getarg lines +c 4. gfortran -O pmx[nnnn].for -o pmxab.exe +c +c To do +c Correct Rainer's email address in manual +c Linesplit (\\) in h +c Tt at start of a movement. +c Toggle midi on or off; allow midi only. +c Page number printed on 1st page even if 1 system. +c Still need inserted space for chordal accidentals +c Voicewise transposition. +c better segno +c coda +c duevolte +c Fix xtup bracket direction in 2-line staves?? (maybe leave as is) +c Sticky ornaments with shifts. +c Deal with Werner's vertical spacing thing associated with title. +c Multiple ties in midi +c Werner's missing c in MIDI due to start/stop ties on same note. +c Beams with single 64ths +c 128ths and/or dotted 64ths +c Close out MIDI with integral # of beats? +c Increase ast dimensions or redo logic. +c Does slur direction get set for user-defined single-note stem dir'ns? +c Transpose by sections. +c Optimization loop over sections only +c Command-line option to read nbarss in. Write out nbarss when optimizing. +c (or just read from .plg?) +c Beams over bar lines. +c 2-digit figures +c A real coule (slanted line between notes in a chord) +c Dotted slurs for grace notes. +c Undotted chord notes with dotted main note. +c Forced line break without line number +c Fix dot moving when 2nds in chord get flipped +c To do: increase length on notexq in dodyn +c 2.94 +c Allow moving dots on main and chord note in 2-note termolos +c Add definitions of \hbp and \hbpp to pmx.tex +c 2.91 +c Tweak: insert \stdstemfalse before every user-shortened or lengthened stem. +c This cancels defaul extensions to middle line and also (with 'L') allows +c stems that are longer than 4.66 but still don't reach middle line. +c Allow alteration of number height in multibar rest, option n. +c Fix bug introduced in 2.89 so that the "o" in "mo800" is now OK. +c 2.90 +c Many tweaks to allow gaps at end or middle of a system using +c L[n]S[x] and LC[y]. New pmx.tex. +c 2.88 +c Comment out print*,"Changed pathname to..." since it was going +c iteration when optimizing linebreaks with the undocumented option Ao. +c Add nv back in as argument for getmidi, so loop transferring data +c from midivel to midvelc can be executed. This corrects bug and +c allows per-instrument change in midi velocities at the start +c of any block +c Add subroutine inst2chan to transfer midi data as noted above. Works with +c Iv but buggy when used with IT and Ib +c 2.87 +c Allow changes to and from octave treble clef. Instrument with it +c must only have one staff. +c Some fixes for beam multiplicity changes at staff jumps. Must still +c use inline for mult. increase at downward staff jump. See sjb.pmx. +c 2.84 +c Bug fix: dots in chordal seconds +c Bug fix: Initialize ihornb for non-beamed, down xtup +c Bug fix: When using "AT" with 2-note x3c rD. +c 2.83 +c Fix problems when changing to or from octave treble clef. +c Fix beaming (or not) and number location for xtups with +c multiple rests. Still some problems with number height but +c can be band-aided with number height tweak option. +c Tweak error messages for options on "R" command. +c Allow forced beam height and slope tweaks with 2-note tremolos +c Allow chordal note with 2-note tremolos, adding dots as needed. +c Fix call to ncmid in beamstrt when setting start height for beam of +c 2-note trem, by changing arg from ivx to iv +c 2.82 +c bugfix: beams with rests, not confused with xtups. +c x option after slur index to allow slurs to go from one voice to another. +c x option also for ties +c 2.81 +c Allow string of rests to end xtup +c in chordal half-note 2-note tremolo, make chord notes open. +c 2.80 +c Add 2-note tremolos +c 2.78 +c Expand bufq to 131072 bytes +c Expand maxblks tp 9600 +c Allow up to 75 pages +c Index postscript hairpins from 1 up instead of by voice #. +c Add option 'o' to forced beam for open notehead (\hb); set ipl(3) +c Add option T[n], n=1,2,3 for single stem tremolo +c 2.77 +c Enable AV+/-x+/-y to add vskip bigh before or after \eject +c 2.76 +c 2.75 +c Bugfix: unbeamed xtups with dots: in beamn1 and beamid allow dotted 16th, and +c 2 or 3 flags on shortened note. +c 2.74 +c Bugfix: allow "0" as argument of @ command on lyrics string. +c Check for and allow "\ in centered page headings with P command. +c Check for and allow "\ in text dynamics with D command. +c For lyrics string starting in xtuplet, insert check for inputting musixlyr. +c For staff-crossing beamed xtuplet chords, if 2nd segment of a joined beam +c starts with a blank rest, put '\sk' into the TeX. +c To enable high-to-both beamed etup staff-crossing chord, for blank +c rest at start of forced beam, shift \sk's from before to after \ib..; +c so \ib is at start and note in upper voice has a beam to connect to. +c Expand range of vertical xtup number shift, now stored in mult(16-22) +c Check for and allow \" within lyrics strings, for umlauts. +c 2.73 (160121) +c Dirk's "..." command, to convert "text" into \pmxlyr{text}\ and insert as +c inline TeX. Replace all '~' inside "..." and not preceded with '\', by +c '\lk '. Right after 2nd ", replace @[a,b][+,-]n with \at{[a,b][+,-]n}\ +c Include definitions of \ly and \at in pmx.tex (2 Feb 16). After first ", +c add (as type 2 string) '\\input musixlyr \' +c After inputting pathname, change any '\' to '/', for Linux compatibility. +c 2.72 (160110) +c Really finalize \mbrest...go back to 3 args to deal with clef changes. +c Fine tune centered whole bar rests to deal with clef changes +c Fix bug in wsclef when >1 staff per instrument, since \setclef +c needs to know instrument and specify clefs on all staves for that +c instrument. Ones that were not changed by user will not be printed, +c and will be kept the same as before. +c Fix bug with arpegii from one voice to another in same staff. +c 2.71 (151226) +c Finalize mbrest mods +c 2.705 +c Fix error message +c 2.704 (140614) +c Octave treble clef +c Make horizontal ornament shift (ornhshft) floating +c 2.703 (140323) +c Option v[-]n at end of any figure will alter figdrop for rest of system +c 2.702 +c Stem slurs. Only for ps, assume no other pos'n adjustments. Option "v" +c 2.701 +c oC = coda (\code{10}) +c Move iornq(29) (blank barline) to ipl(0) (changes in pmxb, getnote) +c oG = new seqno +c To do: fix grace note spacing problem (partially done) +c 2.622 +c Redefine midtc(..) and miditran(..); clean up all transpositions/key changes +c Kn[+/-...] \ignorenats at signature changes +c Fix tie checks in doslur() and dopsslur() to subtract iTransAmt from nolevs +c before checking and setting pitch levels levson() and levsoff() +c Define midisig separately from isig. Put in common commidisig. +c Use for explicit midi signature and for accid corrections to midi piches +c in addmidi. +c 2.621 +c Make keyboard rest option work in xtuplets. Created subroutine +c chkkbdrests, modified make2bar to include calls to chkkbdrests as rqd. +c 2.620 +c Allow user-defined rest height tweaks at start of beam. +c 2.619 +c At movement break, change \nbinstruments in \newmovement macro; add +c 3rd arg to \newmovement in pmx.tex; modify pmxb.for and getnote.for +c to remove call to newnoi and change call to \newmovement +c 2.618 +c Add option Ac[l,4] to set vert and horiz size and offsets to properly +c center page for letter or a4 paper. +c 2.617 +c In g1etnote, change if-check for note to use index(...) instead +c of ichar(charq) since it was messing up gfortran optimizer +c After pmxa, search for and remove penultimate line / +c because it was screwing up linux-compiled versions +c Bugfix: Increase dimension of kicrd from 7 to 10 in crdaccs(...) +c 2.616 (111110) +c Allow hairpins to span multiple notes groups (gulps). +c 2.615+ (110810) +c Fix midi when some instruments are transposed, by subtracting +c iTransAmt(instno(iv)) from pitch values sent to via addmidi in +c make2bar.for (for main notes) and docrd (for chord notes) +c 2.615 (110725) +c Fig bug with size-setting (in topfile) when instrument has >1 staves +c 2.615 (110724) +c Make AS[0|-|s|t]... really set sizes +c 2.614 +c Mod notex.for to fix Terry's bug with raised dotted rests (caused +c by double-hboxing). +c 2.613 +c Bugfix: In pmxa, change "do while" limit to keep from overwriting instno. +c 2.612 +c Enhance AS to allow s or t for smallsize or tinysize +c 2.611 +c Error trap for "D" before any notes in a block. +c 2.610 +c Instrument-wise key changes and transposition (incomplete) +c 2.603 +c 101211 In getpmxmod.for, decreased nline by 2 to fix locating errors +c following reading in an include file. +c 101121 Added some error messages in g1etset.for setup data +c 2.602 +c Correct slur indexing in linebreakslurs. +c Account for comment lines in line count for error messages +c 2.601 +c Bug fix: allow 24 slurs with graces +c 2.60 Changes made make it really big +c increase mv (size of midi) ? Note: MIDI can't have >16 voices w/o +c major reprogramming, and 16 may also be a problem (icmm) +c nm=24 (voices) done +c 24 slurs done +c 24 simultaneous beams (Replace index 24 by 0, so get 0-23) +c bufq*131072 (gfortran only) +c getarg syntax (gfortran only) +c 2.523+ +c Fix voice numbering for normal dynamics and text dynamics +c 2.523 +c Version of bigpmx first posted to Hiroaki's web site. +c 2.522 +c 5/26/10 Replace ipl bits 0-7 with ipl2, add new common for it. +c With 2.521+ as starting version, incorporate bigpmx mods to allow 24 voices. +c 5/13/10 Fix log2 function +c 5/15/10 Fix bitwise storage for dynamics, fix segnoo string length. +c 2.521+ +c 091025 Enable dotting 2nd part of linebreak slur or tie. +c To adjust barno height due to linebreak slur, use \bnrs instead of +c explicitly redefining \raisebarno (pmxb) +c 2.521 +c Bugfix +c 2.520 +c 090519 Enable ligfonts (special figured bass characters) +c 2.519 +c Fix another bug which kept \sk from being output so misaligned some notes. +c 2.518 +c Fix bugs: referencing fig data, char declaration for member of +c common/comfig/ +c 2.517 +c Allow figures in voice 1 + any one other. +c 2.516 +c Allow figures in voice #2 +c 2.515+ to do: Change manual and activate rule against clef change in voice #2. +c 2.515 +c 071222 Changes in getnote to allow auto forced beams to start anywhere. +c 071206 In make2bar, shift fermataup7 to left over centered pause. +c 070901 In doslur, check for nolev <=2 in case slur ends on rest in 2-line +c staff (it was screwing up vertical justification). +c n34 for tweaks to midi durations of quarter note septuplets. +c To do: In ref250.tex, the tables where 's,t,)' is explained, the line +c [+,- i] ... Vertical adjustment of the start of second segment +c should it be replaced by +c [s +,- i] ... Vertical adjustment of the start of second segment +c 2.514 +c Changes in make2bar to get horizontal spacing right when normal grace +c follows after grace +c Changes in dograce to get octaves right for any material entered inside +c \gaft, which shields transpose register changes from the outside world. +c 2.513 +c In make1bar, near end, for forced beams starting with a rest, copy hgt and +c slope tweaks to ALL notes after first, not just the second one, so if +c there's more than one rest at start the tweaks are still observed. +c In beamid and beamend, add stand-alone triply-flagged notes for xtups. +c 2.512 +c Near end of pmxb, fix error trap to allow redundant 'RD' +c Enable multiplicity down-up '][' within xtup. +c 2.511 +c Introduce eskz2 for xtup #'s and bracket lengths, to remove bug caused by +c adjusteskz as in bar 7 of barsant. +c 2.510a +c Test: remove restriction on tempo changes in MIDI macros +c Send to CM for beta testing. +c 2.509+ +c To do: Correct manual on AS. "-" is for smaller staves. +c 2.510 +c Forgot to declare litq, voltxtq as character in subroutine getgrace +c 2.509 +c Corrected small bug in arpeggio shifting (ivx <= iv in call putarp) +c 2.508 +c Allow graces in xtups. New subroutine getgrace. +c 2.507 +c To do: Raise/lower figures. +c To do: Add 24, 29 to list of musicsizes in manual +c New sub adjusteskz to account for ask's when computing lengths of +c brackets for unbeamed xtups, slopes and horizontal posn's of number +c Bug fix: in beamn1, beamid, and beamend, allow unbeamed xtups w/ 2 flags +c Add look-left option for keyboard rests, "L" in rest command, set iornq(30) +c 2.506 +c Fix bug with AK, when simultaneous rests have same duration, use defaults. +c 2.505 +c Keyboard rests AK +c 2.504 +c Space after normal grace: option X[n] +c Fixed og when nv .ne. noinst, by using sepsymq instead of '&' +c (To do) length of xtup bracket when there is added non-collision space. +c Trap musicsize if .ne. 16,20,24,29. +c 2.503 +c Enable arpeggio left shift with ?-x +c To do: In manual, arpeggio over 2 staves. +c Allow musicsize of 24 and 29. Had to define meter font size explicitly, +c also change font size for text dynamics, but not much else so far. +c Bugfix in beamstrt, introduced in 2415, ip was changed before putxtn +c was called, causing error in printing replacement number. +c 2.502 +c Incorporate Dirk Laurie's patch to use { , } , for ties. +c Figure height adjustment: append +[n] +c Change ec font stuff in pmx.tex per Olivier Vogel's comment (CM email?) +c 2.501 +c Readjust horizontal offset back to .8 in LineBreakTies +c Fix zero-subscript (iudorn) in putorn +c 2.50 +c Increase number of text-dynamics (dimension of txtdynq) per block +c from 12 to 41. +c Slur option n to override altered default curvature. +c Allow default ps slur curvature tweaks with Ap+/-c +c 2.416 +c Increase length of textdynq from 24 to 128 +c (Todo) Add comment in manual about blank lines at end. +c Configuration file: Define subroutine getpmxmod, check path in environment +c variable pmxmoddir, check existence, read lines into bufq after setup. +c Increase dimension on idynn in dodyn from 4 to 10 for max number +c of marks in a bar +c Increase allowable # of lines from 2000 to 4000. +c (To do) Replace definition of \liftpausc per Olivier. +c (To do) Fix extraneous error message if RD is placed at very end. +c 2.415 +c Fix "AT" option: replace putxtn,topfile,beamstrt,beamid to use \xnumt +c instead of redefining \xnum. Change font used to \smallfont (as for +c normal xtups, +c Allow slur to start on rest. +c 2.414 +c Correct bug in crdacc when adding accidental to boundary causes number of +c segments to decrease +c Special rule for 3-accidental chords: If no 2nds, place them in order +c top, bottom, middle. +c 2.413 +c Correct bugs in chordal accidentals, related to left-shifted noteheads +c (a) Special problems with downstem when main note needs shifting +c (b) Assign 0 rank to boundary segs due to left-shifted noteheads +c 2.412 +c Change default horiz shift of start of seg 2 of linebreak slurs: +c -.7 for slurs, -1.2 for ties, +c Use height of start of seg 1 slur itself for end of 1 and start of 2. +c 2.411 +c "Apl" activates special treatment of linebreak slur/tie's; breaks all in 2. +c "s" option in start of slur/tie as precursor to vert/horiz tweaks for end +c of seg 1. of linebreak slur/tie, 2nd "s" for start of seg2. +c With "Apl", curvature adjustments on starting slur command apply to seg 1, +c those on ending command to seg 2. +c 2.410 +c "AT" to allow Col. S.'s tuplet option. Simply input tuplet.tex and redefine +c \xnum, \unbkt, \ovbkt. +c "s" option in main xtup input after "x": slope tweak for bracket. mult(4) is +c flag, mult(5-9) is tweak value+16 +c 2.409 +c Bugfix in docrd for MIDI: Use original pitch in case main/chord were +c switched due to 2nds. +c Remove "o" from error message for "A" command. +c New syntax: optional instrument number separator ":" in movement +c break command to precede a 2-digit instrument. +c Conditional output formats for \setname at movement break to allow +c instrument numbers >9. +c Bugfix in coding to raise barno due to slur over line break (pmxb) +c Move date/version data statement in pmxab to a better place. +c 2.408 +c Allow pnotes{x} when x>9.995 (mod is only to format stmt in make2bar). +c Bug fix in \liftPAusep in notex.for and in pmx.tex +c Character variables for version and date +c For up-stem single graces slurred to down-stem, shift slur start left by +c 0.8 so slur doesn't get too short. +c Initialize and slide mult, same as other full-program variables in /all/. +c 2.407 +c Allow AN[n]"[partname]" to be parsed by scor2prt as filename for part n, +c 2.406 +c Alter PMX: put \dnstrut into \znotes in \starteq (for system spacing +c equalization). +c Put dimensions of double sharps and flats in crdacc (for chords). +c Bugfix: Use sepsymq in LineBreakTies(..) instead of '&' +c Use only first 4 bits of mult for multiplicity+8, so rest can be used +c for other stuff. +c Move stemlength stuff in nacc(27-30) to mult(27-30) to remove conflict. +c 2.405: Not published but saved for safety. +c Option Aph to write \special{header=psslurs.pro} top of each page, so +c dviselec will work OK. +c 2.404 +c Allow slur to end on rest, but not start on a rest. Efaults height +c of ending is default height of start (before any automatic or user- +c defined djustments). User may adjust height as normal from default. +c 2.403 +c Bugfix: turn off repeated beaming patterns.at end of non-last voice. +c 2.402 +c Automatic repeated forced beams. Start with "[:" End with next explicit +c forced beam or end of input block. +c Increase # of forced beams per line of music per input block from 20 to 40 +c 2.401 +c Optional K-Postscript Linebreak Ties, Apl. New subroutine LineBreakTies. +c Makes 1st part normal shape, and starts 2nd part a little further left. +c Enable arpeggios in xtuplets. Had to make time itar(narp) a real. +c 2.40 +c Set up WrotePsslurDefaults (logical) so only write defaults on 1st Ap. +c Fix non-ps-slur input to \midslur (third signed integer). Do not reverse +c sign for down-slurs. +c 2.359 +c Add error exit subroutine stop1 to make exit status g77-compatible.. +c Absolute octave on xtup chord note was 2 octave too high, fixed in getnote +c Fermata on vertically shifted rest: special trap in putorn() to set height. +c Correct multiple grace note spacing for small staves (in dograce, +c define wheadpt1 depending on staff size) +c 2.358 +c Allow curvature corrections at start of postscript slur, in dopsslur() +c Local slur options p[+|-][s|t] for [nos|s]luradjust,[not|t]ieadjust +c Options for [Nos|S]luradjust,[Not|T]ieadjust,[noh|h]alfties: Ap[+|-][s|t|h] +c Make t[ID] act like s[ID]t, most mods in spsslur(). +c Add spsslur() to read in data for ps slurs, call from getnote. +c In beamstrt, save args for SetupB in common comipb to save them for +c 2nd call when xtup starts with rest +c Add spacing for ornament ")" as if it were accidental, in make2bar(). +c Horiz shift start and end of ps ties, dep. on stem dir'n, in dopsslur() +c Horiz. shift start of ps grace slur, 2 places in dograce(). +c Horiz shift end of grace slur in endslur() +c Make st slurs into postscript ties. Separate subroutine dopsslur(), +c Non-beamed xtup: "a" in 1st note or rest, before "x" (sets drawbm=.false.) +c Allow two D"x" on same note. Introduced jtxtdyn1 in dodyn. +c 2.357a +c Fix missing "end" in backfill.com, too-long lines in g1etnote, getnote +c 2.357 +c Increase dimension for # of lit TeX strings from 52 to 83. +c Allow blank rest in middle of xtuplet. Only mods in g*etnote(). +c 2.356 +c Increased some dimensions from 30 to 40 to allow up to 40 pages. +c In unbeamed xtups, "n" did not suppress bracket. Fixed in beamstrt(). +c Fix parsing of "f,h,H,HH" in sslur. +c Fix bug with cdot, note-level for slur termination (in getnote) +c 2.355 +c Midi transposition: IT[+|-][n1][+|-][n2]...[+|-][n(noinst)], +c n=# of half-steps. Restrict to mult. of 12 now, to avoid key-sig issues +c Make midi recognize ps ties in doslur. +c Correct ttieforsl so that it eats 2nd argument properly, using \zcharnote +c to get octave right. +c 2.354 +c With postscript slurs, make t-slurs real ties by inserting replacement +c macros \tieforisu, etc, defined in pmx.tex +c Check for open cresc or decresc at end of input block, using list[de]cresc +c Hairpin syntax conditional on postscript slurs. Backup to fill in start +c level, using new backfill(...). Separate height tweaks for +c start and finish. +c 2.353 +c K-0+n to transpose by half step (rather than just change key) +c Allow "rm[n]" when nv>1. Require it in all parts. Just write a stack of +c \mbrest's +c Enable "Rz"; define \setzalaligne in pmx.tex. Special treatment at end +c of input block before movement break, and at start of block after +c movement break, using \newmovement rather than \setzalaligne, since +c former already redefines \stoppiece. In second case, set rptfg2='z'. +c Make clefq(nm) common between pmxb and getnote; change references in +c getnote at 'M' to array elements, setting all new clefs as you go. +c 2.352 +c Remove \parskip redefinition from pmx.tex; write it into TeX file when +c "Ae" is invoked. +c Ap to activate postscript slurs. Add macro \psforts to pmx.tex to redefine +c \tslur in case \midslur was used. Allow slur inputs 'f','h','H','HH', +c translate them thru mapping to (1,4,5,6) as \midslur params, then let +c \psforts translate them back to ps slur macors. +c 2.351 +c Number slurs from 0 up instead of 11 down, anticipating postscript slurs. +c Write "\eightrm" instead of "\cmr8" for \figfont with small baseline size. +c Increase length of basenameq to 44 characters everywhere. +c Increase dimension of mcpitch (midi-chord-pitch) to 20. +c Set default systems per page to 1 if nv>7 +c In pmxb, move place where isystpg is reset to 0, so that \eject gets +c written when there is just one system per page. +c 2.35 +c Cautionary accidentals with 'c' anywhere in note symbol. +c NEW pmx.tex with \resetsize to set size to normal or small depending on +c current \internote. Used with new coding in dograce() to get right +c new size in case user has \setsize'ed some lines to \smallvalue. For +c \smallvalue-sized staves, redefine \tinynotesize to give 11-pt font. +c Affects pmx.tex. +c Continuation figure with fractional length. May now mix with other figures. +c If another figure follow Cont-fig, separate with colon. +c 2.342 +c Bugfix in getnote to recognize relative octave shift in grace at start of +c input block. +c In make2bar, initialize islhgt=0 earlier than before (possible solution +c to Suse g77 compile problem that I could not reproduce).. +c Bugfix in beamstrt & beamn1 for r2x6 c4D d d d +c 2.341 +c Syntax check: Forced page break page number must be > than previous. +c Bugfix: Define ivx when "sliding down" breath/caesure data in pmxb. +c 2.34 +c New pmx.tex with redefined liftpausc +c Bug fix with dotted, non-beamed xtups. +c 2.332 +c Fix bugs in horizonal shifts, spacing, for accid's, graces, noteheads. +c Allow arbitrary pos. input to W in g1etnote and getnote. +c 2.331 +c Bug-fix in dodyn(..): typo on length of arg of txtdyn +c 2.33 +c Caesura (oc), breath (ob). Set iornq(28), store rest of data in ibcdata() +c 2.321 +c Rescale accidental shifts. Still use 7 bits but now map (0,127) +c onto (-1.,5.35) +c Fix ihornb bug in dodyn, seen with dynamics on lower-voice non-beamed xtups +c 2.32 (Noticed after posting) +c Prohibit "/" as figure. +c 2.32 (Posted) +c Tidied up accidentals in chords, do spacing. +c Still to do: +c check for "(" on chord notes in spacing algo +c small accids +c double accids +c autoshift slurs +c 2.310 +c Extra call to precrd ahead of spacing chk, and single-note crd/acc +c shifts seem OK, but not multiple. crd/acc shifts not recorded 1st time. +c 2.309 +c Alternate algo for accid shifts in chords. +c 2.308 +c Auto horiz. notehead shifting added to precrd. +c 2.307 +c Auto shifting of multiple accidentals in chords. +c "Ao" in main chord note to keep accidentals in order. Set nacc(28). +c If there are any manual main or chord note shifts, then +c If any manual shift is preceded by "A" then +c 1. Auto-shifting proceeds +c 2. "A"-shifts add to autoshifts +c 3. non-"A" shifts are ignored! +c Else (>0 man shifts, none has "A") +c No auto-ordering, No autoshifts, +c End if +c End if +c 2.306 +c Initialize legacy note level to middle C in case user forgets to set +c octave. +c Shift xtup note? +c Shift in elemskips rather than noteheads? +c 2.305 +c Stop pmxb from multiple endvolta's at start of new page. +c 2.304 +c "Sx" in a note means shorten stemlength by x \internotes. "Sx:" turn on +c for multiple notes in the voice, "S:" last shortened note. +c 2.303 +c vshrink stuff all OK? Description is in pmxb. +c 2.302 +c Toggle vshrink with "Av". vshrink normally kicks in when \interstaff +c hits 20. This still needs work. +c Add " /" to last line if last char is not % or /. +c 2.301 +c Check in beamn1 for single note before multiplicity down-up. +c allow '.PMX' as well as '.pmx' +c 2.299 +c Correct typo in pmxb involving PMXbarnotrue. +c Replacement printed number for xtup: Unsigned integer after 'n' after 'x' +c Minor upgrade parsing xtuplet options 'x...' +c Correct dimension of nxtinbm in make2bar. +c 2.298 +c Account for doubled xtup notes in subroutine getx (user-defined spaces), +c by adding ndoub as an argument.. +c 2.297 +c Created and solved compiler problem. Put drawbm(NM) in its own common. +c Add new def'ns [\a|PA]usc, \lift[pa|PA]usc to pmx.tex, use them in make2bar +c when \centerbar is used. +c Modify \mbrest & \CenterBar in pmx.tex to use \volta@endcor etc. Have PMX +c use right 2nd and 3rd args for \mbrest when key, meter, or clef changes. +c 2.296 +c Correct printed numbers for forced beams with multiple xtups. For each beam +c make list in setupb by voice of eloff (h-offset) and mtupv (printed #) +c Increase lengths of jobname and infileq by 20 characters +c Enable whole notes and breves as 1st or last note of xtup in beamn1 and +c beamend, and wholes in beamid. +c 2.295 +c Midi balance Ib[n1]:[n2]:...[nn] +c Single-slope beam groups [...]-[...] +c Trap "i" unless after accidental (main notes, xtups, chord notes) +c 2.294 +c Unequal xtups with "D" to double a note in an xtup. +c As above, "F" will (a) increase multiplicity by 1 for marked note and next +c one and (b) add a dot to the first one. +c Fix bug with e.g. c84 [ .d e.f ] by checking whether forced beam is on +c when "." is encountered, then correcting beam start time.(end of getnote) +c MIDI velocity (volume) set: Iv[n1]:[n2]:[n3]... +c 2.293 +c Check for single notes spanning bar lines. +c Correct various bugs with staff-jumping beams. (1) for 2nd segment, vxtup +c must be set in make2bar since beamstrt is not called, fixing problem with +c dot at end. (2) add ivjb2 to flag which voice has 2nd segment and fix +c problem when >2 staves. +c Add nodur to args of dodyn, so can check if stemless and avoid height tweak +c Correct bug in getdyn setting flag in idynda2(0) for manual horiz. tweak +c 2.292a +c Undo syntax check for Type 2 or 3 TeX string starting in column 1. +c Meanwhile, Werner's problem with a mid-line Type 3 string has gone away?! +c 2.292 +c Allow comments in xtuplets +c Enable multiple octave jumps in grace notes. +c Allow dynamics in xtuplets. +c Fix bug in getdyn searching for end of text string (correct length of lineq +c to 128) +c Fix bug in dodyn, must ignore horiz. interaction tweak for +c user-text (idno = 0) +c Syntax check for Type 2 or 3 TeX string starting in column 1 +c (NOTE: later undone!) +c Syntax check for page number > npages at forced line break. +c 2.291 +c Fix error in AS command (accid spacing for small systems), making only +c one spec per staff, nv total. +c Stop using MIDI channel 10 +c 2.29 +c Fix error in console output format for # of bytes used in MIDI file. +c Fix bug in dograce so no space is added between grace and main note when +c there is a MIDI-only accidental. +c Fix bug so oes?+4 works. It was too ugly to explain. +c ...Different ways of storing accidental specs on input and output. +c No longer zap \writezbarno in special situations. +c Fix bug in dyntxt level on rest +c Line spacing equalization. Add macros \starteq, \endeq, \spread, etc. +c Activate with Ae. (Maybe later could input alternate values for +c \upamt, \dnamt, \parskip). Put \starteq on 1st note in voice 1 +c in the page, and \endeq on 1st note of next-to-last line in page. +c 2.28 +c Flip direction of forced beam "[f..." +c Fix beam numbering for staff jumping beams. Uses irest(23,24,29,30) +c Fix bug in sliding ip's for txtdyn's +c In dyn's allow vert. offsets +/-64, horiz +/-25.6 (store in idnyda2(1-99) +c 2.27 +c Comment out lines in dodyn checking number of dynamic marks found. Voice +c order may not be monotonic if two lines on a staff. +c Literal dynamic: D"[text]" +c 2.26 +c Allow hairpin start-stop on same note by disabling auto-tweaks in dodyn, +c increasing dimension of idynn to 4 to allow 4 symbols on same note. +c Increase voltxtq length from 10 to 20. +c AS[-/0][-/0]... to inform PMX that "-" voices are small, and rough +c accounting for ast's is done by defining effective headwidth +c whead1 in makebar2 to be 0.8*whead. +c 2.25 +c Fix logic bug with sepsym's when # of instruments changes. +c Slight increases in default offsets for hairpin starts after "p" +c 2.24 +c Hairpins D< or D> as toggle. +c Many automatic position tweaks for letter-group dynamics and hairpins. +c 2.23 +c Continued rhythmic shortcuts: space followed by "." or "," +c 2.22 +c In call to doslur, change tno(...) to tnote(...). This was only +c used when checking to slurs per stem directions, and should have been +c the note duration all along. +c MIDI-only accidental, bit 17 in nacc, or 27 in icrdat. +c Use "i" anywhere in note symbol. +c 2.21 +c Increase from 20 to 30 dimensions for movement breaks and midi sections. +c Fix out-of-order declarations per mutex comments +c Add "Bad error" and "Kluging" messages to log file. +c 2.197 +c add /comips/ to save tie-check midi variables +c For spacing of clef changes at start of input block, changed integer time +c lastnodur to prevtn, so it works with xtups. Possible incompatibility! +c 2.196 +c Fix Ickbug with time check in ncmid() +c Interchange \fermataup7 and \pausec to get proper alignment +c Enable French violin clef "f", number 7 in PMX, but 9 in MusiXTeX. +c Add defn's of \hsp, \hspp to pmx.tex +c Fix pre-slurs on xtup chord notes. +c Fixed raised PAuse, define \liftPAuse +c Replace \zbreve\sk with \breve. +c Made "1" work as mtrdenl by doubling it and mtrnuml. BUT WAIT...what +c about "o" and 1 as shorthand for 16???? Search for "Kluge" +c Added "vo" (voice) as MIDI instrument 55 +c Allow 3-digit page numbers (search for "toppageno") +c Fix bug caused by prior fix (cancelling accid after bar line was ignored). +c Fix double accids in chords +c 2.194 +c Fix bug with accid/tie/barline/chord in addmidi by restructuring accid if +c block. +c Add meter to MIDI file with every pause +c Purify FORTRAN? +c 2.193 +c Increased # of in-line TeX strings from 36 to 52. +c Fix entry of # of bytes in header of tempo/meter/key track to allow >255. +c 2.191 +c Event track: Tempos, meters, keys all together. Data in comevent +c 2.15 +c Pretty good midi capability. Still no attention to slurs on chord notes. +c 2.11 +c 11 Dec 99 c rm1 +c 11 Dec 99 "oes?", "oe?" +c 11 Dec 99 Cancel slur horizontal tweaks with non-stemmed notes +c 11 Dec 99 Error message for shifted, repeated ornaments. +c 2.10 (Version 2.1) +c Fix bug with lowdot and xtuplets +c 2.09 +c Fix bug with multiple ornament heights over beams, when one is . or _ +c Error message from pmxa if rest on last note of xtup. +c Enable 12 slurs. +c Reinstate multiple rests at start of xtup. +c 2.07 +c Combine consecutive type-1 TeX strings. +c \midslur and \curve as 3rd signed digit in slur termination, + 2 opt.int's. +c Fixed breve chord notes in docrd +c Check irest(28) as well as vxtup when setting nodur for chord notes, since +c vxtup isn't set until 1st *main* note in xtup +c Vectorize nolev1, slope, ixrest. Klug fix for xtups with variable spacing. +c 2.06+ +c Make deterministic the beam slope calculation when there are an even # of +c slopes in list and middle two are equal magnitude but opposite sign. +c pmxa Trap for "o:" before 1st note in block +c Partial bug fix for 64th notes in xtuplets. +c Make ixrest a vector, since with new time scheme may not finish xtup in +c same notes block. +c Increase max # of pages from 20 to 30 (dimensions of nsystp,..., in pmxb) +c 2.06 +c Account for changes in nv when computing \interstaff. Add a counter +c nistaff(iflb) = # of interstaff spaces per system = nv-1. Set whenever +c setting isysflb(iflb). Note nv can only change at a forced line break. +c Note also, iflb starts at 0! +c 2.05 +c Automatic start of new notes group with part 2 of staff-jump beam +c In make1bar, set irest bit 29 of lowest-voice note at same time, +c use as flag when making notes groups. +c For now, remove dummy blank line at end...it zaps terminal repeats. +c 2.02 +c Fixed slur-counting bug for multiple, slurred, aftergraces. +c 2.01 +c Increase to ask(1400) +c Increase max forced page breaks to 18 +c Define pausc for centered pause +c 2.0a +c Insert dummy blank line at very end to handle input files w/o terminal CR-LF +c pmx03r +c Option m[n] in S symbol to change musicsize (for parts) +c Double dotted rests now work. +c Write file name to log file +c Check existence of input file +c Allow 24-char jobname, may end with ".pmx" +c Comment out time stuff +c Replace 3-argument getarg with 2-argument + iargc +c Fix bug with negative noinst due to nint<=int replacement +c move lovation of iv in isdat1 to allow iv>7. +c Set nm=12 +c pmx03q +c replace int(x+.001) with nint(x) +c Write TeX file name to screen and to pml. +c Replace char(...) with chax(...) to sovle msdev bug. +c Bug fix: macro terminations when M is on a line by itself. +c Bug fix: don't accumulate space for XS in pmxa. +c Streamline Macros: use pointers to bufq instead of scratch files +c pmx03p +c Store input file in single character array bufq. +c lbuf(i)*2 is length of line i +c ipbuf is position just before next line to be read. +c pmx03 +c Optimize read/writes +c pmx02 +c Fix line count (for errors) when there are saved macros +c pmx01 +c In optimize mode, open/close macros (Watch out for residual zz files!) +c Command line input +c Option Ao to optimize, otherwise normal processing +c +ccccccc + parameter (nks=125,nm=24,mv=24576,maxblks=9600) + character*128 lnholdq + character*131072 bufq + integer*2 lbuf(maxblks) + common /comevent/ miditime,lasttime + logical slmon,dbltie + common /comslm/ levson(0:nm),levsoff(0:nm),imidso(0:nm), + * naccbl(0:nm),laccbl(0:nm,10),jaccbl(0:nm,10),nusebl, + * slmon(0:nm),dbltie + integer*2 mmidi + logical restpend,relacc,notmain,twoline,ismidi,crdacc + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) + * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) + integer*2 iinsiv + common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq + common /commus/ musize,whead20 + integer*4 nbars0(nks),nbars(nks),ipoe(nks),nbari(nks) + real*4 poe0(nks),poe(nks) + logical isfirst,optimize + logical*4 fexist + character*44 jobname + character*47 infileq + common /a1ll/ iv,ivxo(600),ipo(600),to(600),tno(600),nnl(nm), + * nv,ibar,mtrnuml,nodur(nm,200),lenbar,iccount, + * idum,itsofar(nm),nib(nm,15),nn(nm), + * rest(nm,200),lenbr0,lenbr1,firstline,newmeter + logical rest,firstline,newmeter + common /comdiag/ n69(0:nm),n34(0:nm) + logical mmacrec,gottempo + common /commmac/ mmacstrt(0:nm,20),mmacend(0:nm,20),immac, + * mmactime(20),nmidsec,msecstrt(0:nm,60),msecend(0:nm,60), + * mmacrec,gottempo + common /truelinecount/ linewcom(20000) +c +c Added 130302 only to get nsperi from g1etnote, for use in midi setup +c + common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, + * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 + logical lastchar,fbon,issegno,isheadr,isvolt +c +c immac(i) is the index of i-th macro, i=1,nmac. Also make a list containing +c nmidsec section starts and stops based on PLAYING macros (not recording). +c +ccccccccccccccccccccccccc +c + data date /'17 Mar 20'/ + data version /'2.94'/ +c +ccccccccccccccccccccccccc + data maxit,ncalls /200,0/ + data isfirst /.true./ +c itstart = mytime() + versionc = version +c +c Initialize midi parameters +c + gottempo = .false. + ismidi = .false. + debugmidi = .false. + relacc = .false. + mmacrec = .false. + nmidsec = 1 + mgap = 10 + miditime = 0 + lasttime = 0 + nmidcrd = 0 + nusebl = 0 + notmain = .false. + do 3 ivx = 1 , nm + twoline(ivx) = .false. + midinst(ivx) = 6 + midivel(ivx) = 127 + midibal(ivx) = 64 + miditran(ivx) = 0 +3 continue + do 12 icm = 0 , nm + imidi(icm) = 0 + restpend(icm) = .false. + trest(icm) = 0. + levson(icm) = 0 + levsoff(icm) = 0 + slmon(icm) = .false. + naccbl(icm) = 0 + n69(icm) = 0 + n34(icm) = 0 + msecstrt(icm,1) = 1 +12 continue +c +c End of midi parameter initialization +c + musize = 0 + optimize = .false. + numargs = iargc() + if (numargs .eq. 0) then + print*,'You could have entered a jobname on the command line,' + print*,' but you may enter one now:' + read(*,'(a)')jobname + numargs = 1 + else +c call getarg(1,jobname,idum) ! May need to replace this w/ next line + call getarg(1,jobname) + end if +10 ljob = lenstr(jobname,44) + if (ljob .gt. 44) then + print*,'Jobname is too long. Try again.' + call stop1() + else if (ljob .eq. 0) then + print*,'No was jobname entered. Try again.' + call stop1() + else if (numargs .eq. 2) then + if (ljob.eq.2 .and. jobname(1:2).eq.'-o') then + optimize = .true. +c call getarg(2,jobname,idum) ! May need to replace this w/ next line + call getarg(2,jobname) + numargs = 1 + go to 10 + else + print*,'Illegal option on command line' + call stop1() + end if + end if +c +c Strip ".pmx" if necessary +c + ndxpmx = max(index(jobname,'.pmx'),index(jobname,'.PMX')) + if (ndxpmx .gt. 0) then + jobname = jobname(1:ndxpmx-1) + ljob = ljob-4 + end if +c +c Check for existence of input file +c + infileq = jobname(1:ljob)//'.pmx' + inquire(file=infileq,EXIST=fexist) + if (.not.fexist) then + inquire(file=jobname(1:ljob)//'.PMX',EXIST=fexist) + if (.not.fexist) then + print*,'Cannot find file '//infileq + call stop1() + else + infileq = jobname(1:ljob)//'.PMX' + end if + end if +c +c Open a log file +c + open(15,file=jobname(1:ljob)//'.pml') + call printl('This is PMX, Version '//version//', '//date) + ljob4 = ljob + call printl('Opening '//infileq) + open(18,file=infileq) +c +c Copy input file into common buffer +c + ipbuf = 0 + linewcom(1) = 1 + do 8 ilbuf = 1 , maxblks + ncomments = 0 +14 read(18,'(a)',end=9)lnholdq + lbuf(ilbuf) = lenstr(lnholdq,128) + if (lbuf(ilbuf) .eq. 0) then +c +c Blank line. Make it a single blank with length 1 +c + lbuf(ilbuf) = 1 + lnholdq = ' ' + end if +c +c Now line has at least one non blank character. Check for comment +c As of Version 260, do not copy comments into bufq +c But need to count %'s for error messaging +c if (lnholdq(1:1).eq.'%') go to 14 + if (lnholdq(1:1).eq.'%') then + ncomments = ncomments+1 + go to 14 + end if +c +c When here, have counted all preceding comments and have a real line +c + if (ilbuf .gt. 1) then + linewcom(ilbuf) = linewcom(ilbuf-1)+1+ncomments + else + linewcom(1) = 1+ncomments + end if + if (ipbuf+lbuf(ilbuf).gt.131072) then + print*,'Too many characters in file, stopping' + call stop1() + end if + bufq(ipbuf+1:ipbuf+lbuf(ilbuf)) = lnholdq + ipbuf = ipbuf+lbuf(ilbuf) +8 continue + call printl('Too many lines in input file') + call stop1() +9 continue +c +c Insert dummy line to handle input files w/o CR-LF at end. +c + nlbuf = ilbuf-1 +c nlbuf = ilbuf +c bufq(ipbuf+1:ipbuf+3) = ' / ' +c lbuf(nlbuf) = 3 + close(18) + do 6 numit = 1 , maxit + if (optimize) call printl('Starting an iteration') +c +c When isfirst=.true., pmxa() generates linebreaks normally, output in nbars0. +c Otherwise, nbars0 is the input +c When islast=.false., pmxb only returns poe's, otherwise does whole job +c + call pmxa(jobname,ljob4,isfirst,nsyst,nbars0,optimize) + if (.not.optimize) then + if (ismidi) then +c +c This was moved here from writemidi 130302 to allow midivel,bal,tran, to be +c set up here as functions of instrument rather than iv (staff). +c Count up staves(iv,nv) vs instruments. Store instr# for iv in iinsiv(iv) +c + nstaves = 0 + ivt = 0 + do 16 iinst = 1 , nm + nstaves = nstaves+nsperi(iinst) + do 17 ivtt = 1 , nsperi(iinst) + ivt = ivt+1 + iinsiv(ivt) = iinst +17 continue + if (nstaves .eq. nv) go to 18 +16 continue + print*,'Screwup!' + call stop1() +18 continue +c +c Set up channel numbers for midi. +c + numchan = 0 + do 11 iv = nv , 1 , -1 + if (twoline(iv)) then + midchan(iv,2) = numchan + numchan = numchan+1 + end if + midchan(iv,1) = numchan + numchan = numchan+1 +11 continue +c +c numchan will now be the number of channels, but max channel # is numchan-1 +c +c Set up velocities, balances, and midi-transpositions +c + do 13 iv = nv , 1 , -1 + if (twoline(iv)) then +c 130302 Make these functions of instrument rather than staff (iv) +c midvelc(midchan(iv,2)) = midivel(iv) +c midbc(midchan(iv,2)) = midibal(iv) +c midtc(midchan(iv,2)) = miditran(iv) + midvelc(midchan(iv,2)) = midivel(iinsiv(iv)) + midbc(midchan(iv,2)) = midibal(iinsiv(iv)) + midtc(midchan(iv,2)) = miditran(iinsiv(iv)) + end if +c midvelc(midchan(iv,1)) = midivel(iv) +c midbc(midchan(iv,1)) = midibal(iv) +c midtc(midchan(iv,1)) = miditran(iv) + midvelc(midchan(iv,1)) = midivel(iinsiv(iv)) + midbc(midchan(iv,1)) = midibal(iinsiv(iv)) + midtc(midchan(iv,1)) = miditran(iinsiv(iv)) +13 continue + end if +c +c TEMPORARY!!! +c + write(15,*)'nlbuf: ',nlbuf + ip1 = 1 + do 10000 ilb = 1 , nlbuf +c write(15,'(2i5,a40,3i5)')ilb,lbuf(ilb), +c * bufq(ip1:ip1+lbuf(ilb)-1), +c * (ichar(bufq(ip1+lbuf(ilb)-k:ip1+lbuf(ilb)-k)), +c * k=min(3,lbuf(ilb)),1,-1) + ip1 = ip1+lbuf(ilb) +10000 continue + iplast = ip1-1 +c +c Check to see if (1) last line is "/" and (2) next to last +c line is "/" +c + if (bufq(iplast+1-lbuf(nlbuf):iplast) .eq. ' /') then + if (bufq(iplast-lbuf(nlbuf):iplast-lbuf(nlbuf)).eq.'/') then + print*,'Removing last line of "/"' + write(15,*)'Removing last line of "/"' + nlbuf = nlbuf-1 + end if + end if +c + call pmxb(.true.,poe0,ncalls,optimize) + if (ismidi) then +c +c Write midi file +c + open(51,file=jobname(1:ljob)//'.mid') + if (debugmidi) open(52,file=jobname(1:ljob)//'.dbm') + call printl(' ') + call printl('Writing '//jobname(1:ljob)//'.mid') + call writemidi(jobname,ljob) + end if + close(15) + stop + end if + write(15,*)'nlbuf: ',nlbuf + ip1 = 1 + call pmxb(.false.,poe0,ncalls,optimize) + call poestats(nsyst,poe0,poebar0,devnorm0) +c +c Save initial deviation and line breaks for later comparison +c + if (numit .eq. 1) then + devpmx = devnorm0 + do 20 isys = 1 , nsyst + nbari(isys) = nbars0(isys) +20 continue + end if + call sortpoe(nsyst,poe0,ipoe) + do 1 iupord = nsyst , 1 , -1 + isysu = ipoe(iupord) + print*,'isysu=',isysu + write(15,*)'isysu=',isysu +c +c Skip if system isysu has poe0 < avg or isysd has poe0 > avg +c + if (poe0(isysu).lt.poebar0) go to 1 + do 5 idnord = 1 , nsyst + isysd = ipoe(idnord) + if (isysu.eq.isysd .or. nbars0(isysd).eq.1 + * .or. poe0(isysd).gt.poebar0) go to 5 + do 2 isyst = 1 , nsyst + nbars(isyst) = nbars0(isyst) + if (isyst .eq. isysu) then + nbars(isyst) = nbars(isyst)+1 + else if (isyst .eq. isysd) then + nbars(isyst) = nbars(isyst)-1 + end if +2 continue + call pmxa(jobname,ljob4,isfirst,nsyst,nbars,optimize) + call pmxb(.false.,poe,ncalls,optimize) + call poestats(nsyst,poe,poebar,devnorm) + if (devnorm .lt. devnorm0) then + devnorm0 = devnorm + poebar0 = poebar + do 4 isys = 1 , nsyst + nbars0(isys) = nbars(isys) + poe0(isys) = poe(isys) +4 continue + print*,'Improved with iup,idown,devnorm:', + * isysu,isysd,devnorm0 + write(15,*)'Improved with iup,idown,devnorm:', + * isysu,isysd,devnorm0 + write(*,'(5x,20i3)')(nbars0(isys),isys=1,nsyst) + write(15,'(5x,20i3)')(nbars0(isys),isys=1,nsyst) + call sortpoe(nsyst,poe0,ipoe) + go to 6 + end if +5 continue +1 continue +c +c If we get here, must have gone thru all switches and found nothing better, +c so done! +c + go to 7 +6 continue +7 continue + print*,'Optimum located, numit:',numit,', ncalls:',ncalls + write(15,*)'Optimum located, numit:',numit,', ncalls:',ncalls + print*,'Final error:',devnorm0,', initial error:',devpmx + write(15,*)'Final error:',devnorm0,', initial error:',devpmx + print*,'Percentage improvement:',100.*(1-devnorm0/devpmx) + write(15,*)'Percentage improvement:',100.*(1-devnorm0/devpmx) + call printl('Initial bars/system:') + write(*,'(5x,20i3)')(nbari(isys),isys=1,nsyst) + write(15,'(5x,20i3)')(nbari(isys),isys=1,nsyst) + call printl('Final bars/system:') + write(*,'(5x,20i3)')(nbars0(isys),isys=1,nsyst) + write(15,'(5x,20i3)')(nbars0(isys),isys=1,nsyst) + call pmxa(jobname,ljob4,.false.,nsyst,nbars0,optimize) + call pmxb(.true.,poe0,ncalls,optimize) + close(15) + end + subroutine accsym(nacc,acsymq,lacc) + character*3 acsymq + iacc = iand(nacc,7) + if (iacc .eq. 1) then + acsymq = 'fl' + lacc = 2 + else if (iacc .eq. 2) then + acsymq = 'sh' + lacc = 2 + else if (iacc .eq. 3) then + acsymq = 'na' + lacc = 2 + else if (iacc .eq. 5) then + acsymq = 'dfl' + lacc = 3 + else if (iacc .eq. 6) then + acsymq = 'dsh' + lacc = 3 + else + print*,'bad accidental: ',iacc + end if + return + end + subroutine addask(taskn,waskn,elaskn, + * fixednew,scaldold,tglp1,scfac,isudsp) + parameter (nm=24) + logical isudsp + common /comas1/ naskb,task(40),wask(40),elask(40) + common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) + common /comtol/ tol + scoarg = scaldold*scfac + if (isudsp) then +c +c Find which udsp we're dealing with +c + do 1 iudsp = 1 , nudsp + if (abs(taskn+tglp1-tudsp(iudsp)) .lt. tol) go to 2 +1 continue + print*,'You should note BEEE here in addask!' + call stop1() +2 continue +c +c Fixednew and scaldold must not be changed, since udsp's are already included +c in fsyst from pmxa, and udsp don't involve scaled space.. +c + if (naskb.gt.0 .and. abs(taskn-task(max(1,naskb))).lt.tol) then +c +c Must add user-defined space to what's there already. +c + wask(naskb) = wask(naskb)+udsp(iudsp) + else +c +c This place has no other space. +c + naskb = naskb+1 + task(naskb) = taskn + wask(naskb) = udsp(iudsp) + elask(naskb) = 0. + end if + else +c 130330 start + oldwask = 0. + oldelask = 0. +c 130330 end +c +c This is a normal space, no effect if smaller than existing space +c + if (naskb.gt.0 .and. abs(taskn-task(max(1,naskb))).lt.tol) then +c +c We already put in some space at this time +c Check if new one needs more space than old one at same time +c + if (waskn .gt. wask(naskb)) then +c +c 130330 We were double counting the larger space when it came 2nd +c Need to fix but don't see how yet. Assume times came in order and +c that last naskb defined spaces that need updating +c + oldwask = wask(naskb) + oldelask = elask(naskb) +c End of 130330 insertions + naskb = naskb-1 + else + return + end if + end if + naskb = naskb+1 + task(naskb) = taskn + wask(naskb) = waskn + elask(naskb) = elaskn +c 130330 start +c fixednew = fixednew+waskn +c scaldold = scaldold+elaskn + fixednew = fixednew+waskn-oldwask + scaldold = scoarg+elaskn-oldelask +c 130330 end + end if + return + end + subroutine addblank(noteq,lnoten) + character*8 noteq + character*1 tchar + tchar = noteq(1:1) + noteq = ' '//tchar + lnoten = 2 + return + end + subroutine addfb(nfb,iv,tnew,t1fb,t2fb,ulfbq,ifbadd) + parameter (nm=24) + integer nfb(nm) + common /comtol/ tol + real*4 t1fb(nm,20),t2fb(nm,20) + character*1 ulfbq(nm,20) + ifbadd = 1 + nfb(iv) = nfb(iv)+1 + do 1 ifb = nfb(iv)-1 , 1 , -1 + if (tnew .lt. t1fb(iv,ifb)-tol) then + t1fb(iv,ifb+1) = t1fb(iv,ifb) + t2fb(iv,ifb+1) = t2fb(iv,ifb) + ulfbq(iv,ifb+1) = ulfbq(iv,ifb) + else + ifbadd = ifb+1 + go to 2 + end if +1 continue +2 continue + t1fb(iv,ifbadd) = tnew + ulfbq(iv,ifbadd) = 'x' + return + end + subroutine addmidi(icm,nolev,iacc,midisig,time,rest,endrest) +c subroutine addmidi(icm,nolev,iacc,isig,time,rest,endrest) + parameter(nm=24,mv=24576) + integer*2 mmidi,itk(25) + integer*4 itiesav(5,100) + character*1 notenumq + logical endrest,eximacc,it1found + logical rest + logical restpend,relacc,notmain,twoline,ismidi,crdacc + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) + * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) + integer*2 iinsiv + logical slmon,dbltie + common /comslm/ levson(0:nm),levsoff(0:nm),imidso(0:nm), + * naccbl(0:nm),laccbl(0:nm,10),jaccbl(0:nm,10),nusebl, + * slmon(0:nm),dbltie + common /comevent/ miditime,lasttime + common /comdiag/ n69(0:nm),n34(0:nm) +c common /commidisig/ midisig(nm) +c +c Following variables are local but must be saved. I hope they are. +c (3/18/00) With g77 they are not, so add a common block here. +c +c integer*2 ipslon(0:nm),lusebl(10),jusebl(10),icmm(0:12) + integer*2 ipslon(0:nm),lusebl(10),jusebl(10),icmm(0:15) + common /comips/ ipslon,lusebl,jusebl +c data icmm /0,1,2,3,4,5,6,7,8,10,11,12,13/ + data icmm /0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16/ +c +c Cancel out barline accidentals if there's a rest. +c + if (rest) naccbl(icm) = 0 +c +c Special path to insert dummy rest at end of a section +c + if (endrest) go to 20 +c + do 7 ion = 0 , nmidcrd +c +c check if this is only to get pitch of a chord note +c + if (notmain) go to 6 +c +c check for rest +c + if (rest) then +c +c Will not put in a note, but must update timing +c + if (.not.restpend(icm)) then +c +c First rest in sequence, save the time +c + restpend(icm) = .true. + trest(icm) = time + else + trest(icm) = trest(icm)+time + end if +c +c Note: code checkers don't like the above due to calling addmidi(trest(icm)) +c but this only happens if rest at end of section (endrest=.true.) (called +c from getmidi(), in which case these above lines are bypassed. +c + call chkimidi(icm) + return + end if +c +c time tics +c + if (imidi(icm).gt.0 .and. ion.eq.0) then + idur = mgap + else + idur = 0 + end if + if (restpend(icm)) then + restpend(icm) = .false. + idur = idur+nint(15*trest(icm)) + end if +c +c time to start of note +c + idurvar = isetvarlen(idur,nby2on) + if (nby2on .gt. 4) then + print*,'You got >4 bytes, something is bogus.' + call stop1() + end if + imidi(icm) = imidi(icm)+1 + do 2 i = 1 , nby2on +c +c imidi points to cell before highest (leftmost) byte. Start with lowest byte +c at far right, fill in backwards +c + mmidi(icm,imidi(icm)+nby2on-i) = mod(idurvar,256) + if (nby2on .gt. 1) idurvar = idurvar/256 +2 continue + imidi(icm) = imidi(icm)+nby2on-1 +c +c Note-on signal +c + imidi(icm) = imidi(icm)+1 + mmidi(icm,imidi(icm)) = 9*16+icmm(icm) +c +c Entry point for chord note pitch determination +c +6 continue +c +c Get midi pitch. On chord iteration, only do this first time (main note), +c since pitch was already computed for nonmain chord notes. +c + if (ion .eq. 0) then + ipsav = nolev*12./7+11 + ipsav0 = ipsav + if (midisig .ne. 0) then +c +c Adjust for signature +c + notenumq = char(48+mod(nolev,7)) + if (midisig.ge.index('4152630',notenumq)) then + ipsav = ipsav+1 + else if (-midisig.ge.index('0362514',notenumq)) then + ipsav = ipsav-1 + end if + end if +c +c Deal with accidentals. +c +c iacc 0 1 2 3 4 5 6 7 +c effect X fl sh na X dfl dsh X +c iashft X -1 1 0 X -2 2 X +c + jacc = 0 + eximacc = .false. + if (iacc .gt. 0) then +c +c Adjust key-sig-adjusted pitch for explicit accidental (and exit) +c + jacc = iashft(iacc) + eximacc = .true. + if (.not.relacc) jacc = jacc+ipsav0-ipsav +c +c (Above) Shift applies to diatonic pitch but will be added to adjusted one +c + else if (naccim(icm) .gt. 0) then +c +c Possible implicit accidental from earlier in the bar +c Check for prior accid in this bar at this note level +c + do 3 kacc = 1 , naccim(icm) + if (laccim(icm,kacc) .eq. nolev) then + jacc = jaccim(icm,kacc) + eximacc = .true. + if (.not.relacc) jacc = jacc+ipsav0-ipsav + go to 4 + end if +3 continue +4 continue + end if +c +c Must split off the following if block from those above because chord +c notes can cause naccim>0, forcing us to miss other chord note's +c accross-bar-line accidental +c + if (naccbl(icm).gt.0 .and. .not.eximacc) then +c +c Possible carryover accid from prior bar (or prior same-pitch note). +c + do 21 kacc = 1 , naccbl(icm) + if (laccbl(icm,kacc) .eq. nolev) then + jacc = jaccbl(icm,kacc) +c +c Since we are *using* the bar-line accid, must flag it to be saved for next. +c + nusebl = nusebl+1 + jusebl(nusebl) = jacc + lusebl(nusebl) = nolev + if (.not.relacc) jacc = jacc+ipsav0-ipsav + go to 22 + end if +21 continue +22 continue + end if + ipsav = ipsav+jacc + end if + if (notmain) then + mcpitch(nmidcrd) = ipsav +c +c Save pitch for tie checks +c + if (levson(icm).eq.nolev.and..not.slmon(icm)) + * ipslon(icm) = ipsav + else + imidi(icm) = imidi(icm)+1 + if (ion.eq.0) then + mmidi(icm,imidi(icm)) = ipsav + if (levson(icm).eq.nolev.and..not.slmon(icm)) + * ipslon(icm) = ipsav + else + mmidi(icm,imidi(icm)) = mcpitch(ion) + end if + end if + if (ion .eq. 0) then +c +c Only record accids for non-chords, main chord note during chord iteration +c and chordnotes on first call but not during iteration +c + if (iacc.gt.0) then +c +c Set marker for accidental for possible continuations later this bar +c but first check and clear earlier ones on same note. +c + do 23 kacc = 1 , naccim(icm) + if (laccim(icm,kacc) .eq. nolev) then + do 24 macc = kacc , naccim(icm)-1 + laccim(icm,macc) = laccim(icm,macc+1) + jaccim(icm,macc) = jaccim(icm,macc+1) +24 continue + go to 25 + end if +23 continue + go to 26 +25 continue + naccim(icm) = naccim(icm)-1 +26 continue +c +c Flag new accidental +c + naccim(icm) = naccim(icm)+1 + laccim(icm,naccim(icm)) = nolev + jaccim(icm,naccim(icm)) = iashft(iacc) + end if +c +c Bail if this is a chord note on the first call (from docrd) +c + if (notmain) then + call chkimidi(icm) + return + end if + end if +c +c Vel +c + imidi(icm) = imidi(icm)+1 + mmidi(icm,imidi(icm)) = midvelc(icm) + call chkimidi(icm) +7 continue +c +c For tie checks +c + if (levson(icm).gt.0.and..not.slmon(icm)) imidso(icm) = imidi(icm) +c +c Entry point for special rests at section ends (endrest=T) +c +20 continue +c +c Now insert all the ends +c + do 8 ioff = 0 , nmidcrd + if (ioff .eq. 0) then +c +c time to end +c + idur1 = nint(15*time) + if (.not.endrest .or. miditime.eq.nint(15*trest(icm))) then + idur = idur1-mgap + else + idur = idur1 + end if +c +c Deal with roundoff problems with 7-tuplets on half or quarters +c + if (idur1 .eq. 69) then + n69(icm) = n69(icm)+1 +c if (mod(n69(icm)+6,7) .gt. 3) idur = 58 + if (mod(n69(icm)+6,7) .gt. 3) idur = idur1-mgap-1 + else if (idur1 .eq. 34) then + n34(icm) = n34(icm)+1 + if (mod(n34(icm)+6,7) .gt. 4) idur = idur1-mgap+1 + end if + idurvar = isetvarlen(idur,nby2off) + if (nby2off .gt. 4) then + print*,'You got >4 bytes, something is bogus.' + call stop1() + end if + imidi(icm) = imidi(icm)+1 + call chkimidi(icm) + do 1 i = 1 , nby2off + mmidi(icm,imidi(icm)+nby2off-i) = mod(idurvar,256) + if (nby2off .gt. 1) idurvar = idurvar/256 +1 continue + imidi(icm) = imidi(icm)+nby2off-1 + else +c +c Inserting end of chord note, delta time is 0 +c + imidi(icm) = imidi(icm)+1 + mmidi(icm,imidi(icm)) = 0 + end if +c +c Note off +c + imidi(icm) = imidi(icm)+1 + mmidi(icm,imidi(icm)) = 8*16+icmm(icm) +c +c Pitch +c + imidi(icm) = imidi(icm)+1 + if (ioff .eq. 0) then + mmidi(icm,imidi(icm)) = ipsav + else + mmidi(icm,imidi(icm)) = mcpitch(ioff) + end if +c +c Vel +c + imidi(icm) = imidi(icm)+1 + mmidi(icm,imidi(icm)) = 0 + call chkimidi(icm) + if (endrest) then + return + end if +8 continue + naccbl(icm) = nusebl + if (nusebl .gt. 0) then +c +c Fix tables of "bar-line" accids that are saved due to consecutive notes. +c + do 30 kacc = 1 , nusebl + laccbl(icm,kacc) = lusebl(kacc) + jaccbl(icm,kacc) = jusebl(kacc) +30 continue + nusebl = 0 + end if +c +c Begin tie checks +c + if (slmon(icm)) then +c +c Prior note had a slur start +c + if (levson(icm).eq.levsoff(icm) .and. iacc.eq.0) then +c +c We have a tie! (Assumed there would be no accidental on tie-ending note) +c Make a list of times of all events back to the one starting at imidso+1, +c which is at or before where the tie started. Ident tie start and stop by +c comparing pitches. Save the 4 pieces of data in itiesav(1...4,nsav4tie) +c Store actual time in itiesav(5,nsav4tie), using itiesav(1,1) as initial +c time. + nsav4tie = 0 + imidt = imidso(icm) +10 nsav4tie = nsav4tie+1 + itiesav(1,nsav4tie) = igetvarlen(mmidi,icm,imidt,nbytes) + imidt = imidt+nbytes + do 11 j = 1 , 3 + itiesav(j+1,nsav4tie) = mmidi(icm,imidt+j) +11 continue + imidt = imidt+3 + if (nsav4tie .eq. 1) then + itiesav(5,1) = itiesav(1,1) + else + itiesav(5,nsav4tie) = itiesav(1,nsav4tie)+ + * itiesav(5,nsav4tie-1) + end if + if (imidt .ne. imidi(icm)) go to 10 +c +c Find which two pitches agree with saved slur pitch. +c + it1found = .false. + do 12 it2 = 1 , nsav4tie + if (itiesav(3,it2) .eq. ipslon(icm)) then + if (it1found) go to 13 + it1 = it2 + it1found = .true. + end if +12 continue + call printl( + * 'Program error, tied notes, send source to Dr. Don') + it1 = nsav4tie+1 + it2 = nsav4tie+1 +13 continue +c +c List the positions we want to keep +c + jsav = 0 + do 14 isav = 1 , nsav4tie + if (isav.eq.it1 .or. isav.eq.it2) go to 14 + jsav = jsav+1 + itk(jsav) = isav +14 continue + nsav4tie = nsav4tie-2 +c +c Now dump events it1 & it2, recompute times, restack mmidi. +c + imidi(icm) = imidso(icm) + do 15 isav = 1 ,nsav4tie + if (isav .eq. 1) then + idurvar = isetvarlen(itiesav(5,itk(isav)),nbytes) + else + idurvar = isetvarlen(itiesav(5,itk(isav))- + * itiesav(5,itk(isav-1)),nbytes) + end if + imidi(icm) = imidi(icm)+1 + do 16 i = 1 , nbytes + mmidi(icm,imidi(icm)+nbytes-i) = mod(idurvar,256) + if (nbytes .gt. 1) idurvar = idurvar/256 +16 continue + imidi(icm) = imidi(icm)+nbytes-1 + do 17 i = 2 , 4 + imidi(icm) = imidi(icm)+1 + mmidi(icm,imidi(icm)) = itiesav(i,itk(isav)) +17 continue +15 continue + end if + slmon(icm) = .false. + levsoff(icm) = 0 + if (.not.dbltie) levson(icm) = 0 + end if + if (levson(icm).gt.0) slmon(icm) = .true. + if (nmidcrd .gt. 0) nmidcrd = 0 + call chkimidi(icm) + return + end + subroutine addstr(notexq,lnote,soutq,lsout) + common /comlast/ islast,usevshrink + logical islast,usevshrink + character*(*) notexq + character*80 soutq + if (lsout+lnote .gt. 72) then + if (islast) write(11,'(a)')soutq(1:lsout)//'%' + lsout = 0 + end if + if (lsout .gt. 0) then + soutq = soutq(1:lsout)//notexq(1:lnote) + else + soutq = notexq(1:lnote) + end if + lsout = lsout+lnote + return + end + subroutine adjusteskz(ib,istart,poenom) +c +c For block ib, this adds accidental spaces to eskz, for use in getting +c length of xtup bracket and slopes of brackets and beams. +c + parameter (nm=24) + common /comas1/ naskb,task(40),wask(40),elask(40) + integer*4 istart(80) + common /comnsp/ space(80),nb,prevtn(nm), + * flgndv(nm),flgndb,eskgnd,ptsgnd,ivmxsav(nm,2),nvmxsav(nm) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + character*1 ulq,sepsymq,sq + logical beamon,firstgulp,figbass,figchk,isfig + common /comeskz2/ eskz2(nm,200) + common /comtol/ tol + common /comntot/ ntot + inmin = istart(ib)+1 + do 10 iaskb = 1 , naskb + if (task(iaskb) .lt. to(istart(ib))-tol) go to 10 + eskadd = wask(iaskb)/poenom-elask(iaskb) + do 11 in = inmin , ntot + if (to(in) .gt. task(iaskb)-tol) then + eskz2(ivxo(in),ipo(in)) = eskz2(ivxo(in),ipo(in))+eskadd + if (abs(to(in)-task(iaskb)).lt. tol) inmin=inmin-1 + else + inmin = inmin+1 + end if +11 continue +10 continue + return + end + subroutine askfig(pathnameq,lpath,basenameq,lbase,figbass,istype0) + logical figbass,ispoi,topmods,istype0,done,isbbm + common /comhsp/ hpttot(176) + common /compoi/ ispoi + common /combbm/ isbbm + common /comas3/ ask(2500),iask,topmods + character*40 pathnameq + character*44 basenameq + character*1 sq,chax + character*129 outq + sq = chax(92) + open(12,file=pathnameq(1:lpath)//basenameq(1:lbase)//'.tex') +c +c Transfer first 5 lines of main internal TeX file +c + do 11 il = 1 , 5 + call moveln(11,12,done) +11 continue + if (istype0) then +c +c Transfer literal TeX stuff from special scratch file +c + rewind(17) +10 call moveln(17,12,done) + if (.not.done) go to 10 + close(17) + end if +c +c Transfer next 2 lines from main scratch file +c + do 3 il = 1 , 2 + call moveln(11,12,done) +3 continue + if (ispoi) write(12,'(a)')sq//'input musixpoi' + if (isbbm) write(12,'(a)')sq//'input musixbbm' + if (figbass) then +c +c Transfer .fig data from scratch (unit 14) into external .tex (unit 12) +c +4 call moveln(14,12,done) + if (.not.done) go to 4 + close(14) + end if + iask = 0 + ihs = 0 +1 read(11,'(a129)',end=999)outq +c +c Hardspaces. +c + if (outq(1:5) .eq. sq//'xard') then + ihs = ihs+1 + outq(2:2) = 'h' + write(outq(12:15),'(f4.1)')hpttot(ihs) + lenout = 19 + go to 9 + end if +c +c This part hard-wires ask's into new .tex file as ast's +c +2 indxask = index(outq,sq//'ask') + if (indxask .ne. 0) then + iask = iask+1 + call putast(ask(iask),indxask,outq) + go to 2 + end if + lenout = llen(outq,129) +9 continue + write(12,'(a)')outq(1:lenout) +c +c If this is the line with "readmod", check for topmods. +c + if (topmods .and. outq(2:8).eq.'readmod') then + topmods = .false. + rewind(16) + do 7 il = 1 , 1000 + read(16,'(a129)',end=8)outq + lenout = llen(outq,129) +c +c We inserted the '%' in subroutine littex, to guarantee including blank. +c + write(12,'(a)')outq(1:lenout) +7 continue +8 continue + close(16) + end if + go to 1 +999 close(11) + close(12) + return + end + subroutine backfill(iunit,oldq,lenold,newq,lennew) +c +c In iunit, looks backward for oldq, overwrites newq +c Safest if both are same length! +c + character*128 lineq(200),nowq + character*(*) oldq,newq + linesback = 0 +1 continue + backspace(iunit) + read(iunit,'(a)')nowq + ndx = index(nowq,oldq(1:lenold)) +c +c Save the line just read +c + linesback = linesback+1 + lineq(linesback) = nowq + if (ndx .eq. 0) then + backspace(iunit) + go to 1 + end if +c +c If here, it's replacement time. +c + lineq(linesback) = nowq(1:ndx-1)//newq(1:lennew) + * //nowq(ndx+lenold:128) + backspace(iunit) + do 2 line = linesback , 1 , -1 + write(iunit,'(a128)')lineq(line) +2 continue + return + end + subroutine beamend(notexq,lnote) + parameter (nm=24) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + character*1 ulq,sepsymq,sq,ulqq,chax + logical beamon,firstgulp,figbass,figchk,flipend,btest, + * isfig,vxtup,isdotm,isbjmp,isbj2,drawbm + common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 + common /comoct/ noctup + common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), + * mtupv(nm,9),nxtinbm(nm), + * islope(nm),xelsk(24),eloff(nm,9), + * nssb(nm),issb(nm),lev1ssb(nm,20) + common /comdraw/ drawbm(nm) + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /strtmid/ ihnum3,flipend(nm),ixrest(nm) + character*4 tempq + character*8 noteq + character*79 notexq + ip = ipo(jn) + multip = iand(mult(ivx,ip),15)-8 + lnote = 0 + if (ixrest(ivx) .eq. 4) then +c +c This is the LAST note in the xtup (i.e., all rests before). Make single. +c + nodur(ivx,ip) = 2**(4-multip) + call notex(notexq,lnote) + ixrest(ivx) = 0 + return + end if + nole = nolev(ivx,ip) +c +c Check for special situations with 2nds (see precrd) +c + if (btest(nacc(ivx,ip),30)) then + nole = nole - 1 + else if (btest(nacc(ivx,ip),31)) then + nole = nole + 1 + end if +c +c Terminate indented beams for 2-note tremolo if needed +c + if (btest(irest(ivx,ip-1),2) .and. + * igetbits(irest(ivx,ip-1),2,5) .gt. 0) then + nindent = igetbits(irest(ivx,ip-1),2,5) + if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then + addoff = -1-.5*nindent + else + addoff = 1+.5*nindent + endif +c addoff = addoff+(.595-.065*abs(islope(ivx)))*islope(ivx) + addoff = addoff+.0822*islope(ivx) + if (addoff .lt. -.05) then + write(tempq,'(f4.1)')addoff + else + write(tempq,'(f4.2)')addoff + end if + notexq = sq//'raise'//tempq(1:4)//sq//'internote'//sq//'hbox{' + * //sq//'loffset{.7}{'//sq//'tb'//ulq(ivx,ibmcnt(ivx))// + * '0}}' + lnote = 46 + end if + if (.not.drawbm(ivx)) then +c +c Xtuplet with no beam, just put in the right kind of note +c + if (btest(irest(ivx,ip),0)) then +c +c Rest at end of unbeamed xtup +c + lnote = 3 + if (btest(islur(ivx,ip),29)) then + notexq = sq//'sk' +c +c 180106 There was a problem with nolev(ivx,ip) not being set to 0 for +c a blank rest ending xtup, but hopefully returning from here will handle it. +c + return + else if (multip .eq. 0) then + notexq = sq//'qp' + else if (multip .eq. -1) then + notexq = sq//'hp' + else if (multip .eq. 1) then + notexq = sq//'ds' + else if (multip .eq. 2) then + notexq = sq//'qs' + else + notexq = sq//'hs' + end if +c +c 180106 Deal with possible level tweak +c + nole = mod(nolev(ivx,ip)+50,100)-50 + if (nole .ne. 0) then + if (abs(nole) .lt. 10) then + noteq = chax(48+abs(nole)) + lnoten = 1 + else + write(noteq(1:2),'(i2)')abs(nole) + lnoten = 2 + end if + if (nole .gt. 0) then + notexq = sq//'raise'//noteq(1:lnoten)//sq//'internote' + * //notexq(1:lnote) + else + notexq = sq//'lower'//noteq(1:lnoten)//sq//'internote' + * //notexq(1:lnote) + end if + lnote = 16+lnoten+lnote + end if + return + end if + if (btest(islur(ivx,ip),30)) then +c +c Forced stem direction +c + ndsav = nodur(ivx,ip) + nodur(ivx,ip) = 2**(4-multip) + if (btest(nacc(ivx,ip-1),27)) + * nodur(ivx,ip)=nodur(ivx,ip)/2 + call notex(notexq,lnote) + nodur(ivx,ip) = ndsav + else + call notefq(noteq,lnoten,nole,ncmid(iv,ip)) + if (lnoten .eq. 1) call addblank(noteq,lnoten) +c +c To reduce confusion due to this early update of lnote, do it +c below, separately in each case/ +c lnote = lnoten+3 + if (.not.btest(nacc(ivx,ip-1),27)) then +c +c Prior note is not regular-dotted +c + if (btest(irest(ivx,ip-1),2) .and. + * igetbits(irest(ivx,ip-1),2,5) .gt. 0) then +c +c Unbeamed tremolo with indented beams. Put termination in right here +c + nindent = igetbits(irest(ivx,ip-1),2,5) + if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then + addoff = -1-.5*nindent + else + addoff = 1+.5*nindent + endif +c +c Is there an islope here, for unbeamed? +c + if (addoff .lt. -.05) then + write(tempq,'(f4.1)')addoff + else + write(tempq,'(f4.2)')addoff + end if + notexq = sq//'raise'//tempq(1:4)//sq//'internote'//sq// + * 'hbox{' + * //sq//'loffset{.7}{'//sq//'tb'//ulq(ivx,ibmcnt(ivx))// + * '0}}' + lnote = 46 + end if + if (multip .eq. 0) then + if (btest(irest(ivx,ip-1),2) .and. + * nodur(ivx,ip).gt.24) then +c +c 2nd note of unbeamed half-note trem; make open +c But it's not clear if unbeamed half-note tremolo is Kosher, +c so don't worry about stem lengths here now. +c + if (lnote .eq. 0) then + notexq = sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq + else + notexq = notexq(1:46)// + * sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq + lnote = 46 + end if + else + if (btest(irest(ivx,ip-1),2) .and. + * nodur(ivx,ip).eq.24 .or. nodur(ivx,ip).eq.12) then +c +c Need a dot. +c + lnote = 46 + if (lnoten .eq. 1) then + noteq = ' '//noteq(1:1) + lnoten = 2 + end if +c +c Insert stemlength stuff here for unbeamed dotted tremolo. +c May later combine with below to avoid repeat. But need to +c return to normal stem length after note is set. +c + nindent = igetbits(irest(ivx,ip-1),2,5) + if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then + slen = (4.5+nindent+nolev1(ivx)-nole + * +1.3*(eskz(ivx,ip)-eskz(ivx,ip-1)-.7) + * *islope(ivx)/slfac)*.6667 + else + slen = (4.5+nindent-nolev1(ivx)+nole + * -1.3*(eskz(ivx,ip)-eskz(ivx,ip-1)-.7) + * *islope(ivx)/slfac)*.6667 + end if + write(tempq,'(f4.1)')slen + notexq = sq//'slx{'//tempq//'}'//notexq(1:lnote) + lnote = lnote+10 + end if +c +c Next steps are a historical kluge to distinguish dotted unbeamed 2-note trem +c (needs \qup) from normal xtup on dotted note (eg e44dx2 f, wants no dot) +c + if (btest(irest(ivx,ip-1),2)) then + if (lnote .eq. 0) then +c notexq = sq//'q'//ulq(ivx,ibmcnt(ivx)) + notexq = sq//'q'//ulq(ivx,ibmcnt(ivx))//'p' + * //noteq(1:lnoten) + else + notexq = notexq(1:lnote)//sq//'q' +c * //ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) + * //ulq(ivx,ibmcnt(ivx))//'p'//noteq(1:lnoten) + end if +c lnote = lnote+3+lnoten + lnote = lnote+4+lnoten + else + if (lnote .eq. 0) then + notexq = sq//'q'//ulq(ivx,ibmcnt(ivx)) + * //noteq(1:lnoten) + else + notexq = notexq(1:lnote)//sq//'q' + * //ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) + end if + lnote = lnote+3+lnoten + end if + if (btest(irest(ivx,ip-1),2) .and. + * nodur(ivx,ip).eq.24 .or. nodur(ivx,ip).eq.12) then + notexq = notexq(1:lnote)//sq//'slz' + lnote=lnote+4 + end if + end if + else if (btest(irest(ivx,ip-1),2)) then +c +c 2nd note of unbeamed quarter or 8th trem; make quarter note +c Get stemlength change +c + lnote = 46 + nindent = igetbits(irest(ivx,ip-1),2,5) + if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then + slen = (4.5+nindent+nolev1(ivx)-nole + * +1.3*(eskz(ivx,ip)-eskz(ivx,ip-1)-.7) + * *islope(ivx)/slfac)*.6667 + else + slen = (4.5+nindent-nolev1(ivx)+nole + * -1.3*(eskz(ivx,ip)-eskz(ivx,ip-1)-.7) + * *islope(ivx)/slfac)*.6667 + end if + write(tempq,'(f4.1)')slen + notexq = notexq(1:46)//sq//'slx{'//tempq//'}' + lnote = lnote+10 +c if (lnote .eq. 0) then +c notexq = sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq +c else +c notexq = notexq(1:46)// +c * sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq +c end if +c +c +c Check for dotted unbeamed tremolo +c + if (abs(nodur(ivx,ip)/12.-nodur(ivx,ip)/12).lt..001) then +c +c Need a dot +c + if (lnoten .eq. 1) then + noteq = ' '//noteq(1:1) + lnoten = 2 + end if + if (lnote .eq. 0) then + notexq = sq//'pt'//noteq(1:lnoten) + else + notexq = notexq(1:lnote)//sq//'pt'//noteq(1:lnoten) + end if + lnote = lnote+3+lnoten + call notefq(noteq,lnoten,nole,ncmid(iv,ip)) + if (lnoten .eq. 1) then + noteq = ' '//noteq(1:1) + lnoten = 2 + end if + end if + notexq = notexq(1:lnote)// + * sq//'q'//ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) +c * //sq//'stemcut' + * //sq//'slz' +c lnote=lnote+3+lnoten+8 + lnote=lnote+3+lnoten+4 + else if (multip .eq. -1) then + notexq = sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) + lnote = lnoten+3 + else if (multip .eq. 1) then + notexq = sq//'c'//ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) + lnote = lnoten+3 + else if (multip .eq. 2) then + notexq = sq//'cc'//ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) + lnote = lnoten+4 + else if (multip .eq. 3) then + notexq = sq//'ccc'//ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) + lnote = lnoten+5 + else if (multip .eq. -2) then + notexq = sq//'wh'//noteq(1:lnoten) + lnote = lnoten+3 + else if (multip .eq. -3) then + notexq = sq//'breve'//noteq(1:lnoten) + lnote = lnoten+6 + else + print* + print*,'(Error in beamend, send source to Dr. Don)' + call stop1() + end if + else +c +c Prior note is regular-dotted so this one is halved +c + lnote = lnoten+3 + if (multip .eq. 0) then + notexq = sq//'c'//ulq(ivx,ibmcnt(ivx))//noteq + else if (multip .eq. -1) then + notexq = sq//'q'//ulq(ivx,ibmcnt(ivx))//noteq + else if (multip .eq. -2) then + notexq = sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq + else if (multip .eq. 1) then + notexq = sq//'cc'//ulq(ivx,ibmcnt(ivx))//noteq + lnote = lnoten+4 + else if (multip .eq. 2) then + notexq = sq//'ccc'//ulq(ivx,ibmcnt(ivx))//noteq + lnote = lnoten+5 + end if + end if + end if + return + end if +c +c End of block for unbeamed. Problem if beamed but ends w/ rest. Try just +c skipping the call in that case. +c + if (.not.btest(irest(ivx,ip),0)) then + call notefq(noteq,lnoten,nole,ncmid(iv,ip)) + end if +c call notefq(noteq,lnoten,nole,ncmid(iv,ip)) +c lnote = 0 +c +c New way, with flipend, which was computed in beamstrt. +c + if (flipend(ivx) .and. btest(ipl(ivx,ip),30)) then + ulq(ivx,ibmcnt(ivx)) = chax(225-ichar(ulq(ivx,ibmcnt(ivx)))) + flipend(ivx) = .false. + end if + if (ip .gt. ibm1(ivx,ibmcnt(ivx))) then +c +c This is not a one-noter from beam-jump. Check if multiplicity has increased +c + if (btest(irest(ivx,ip-1),0)) then +c +c Prior note is a rest, check one before that +c + mp = iand(mult(ivx,ip-2),15)-8 + else + mp = iand(mult(ivx,ip-1),15)-8 + end if + if (multip .gt. mp) then +c +c Assume 1-3, 2-3, or 1-2 +c + do 2 imp = multip , mp+1 , -1 + call ntrbbb(imp,'t',ulq(ivx,ibmcnt(ivx)),ivx,notexq,lnote) +2 continue + else if (btest(nacc(ivx,ip-1),27)) then +c +c 2nd member of dotted xtup +c + call ntrbbb(multip+1,'t', + * ulq(ivx,ibmcnt(ivx)),ivx,notexq,lnote) + end if + end if +c +c Beam termination and direction analysis +c + if (btest(irest(ivx,ip),23) .and. .not.isbjmp) then +c +c This is the end of the first segment in a jump-beam. ivbj1=ivx will be number +c of the jump-beam. ivbj2 will be tested along with isbjmp to see if in the +c voice of the 2nd part of jumped beam. (May need special treatment for +c multi-segment jump-beams +c + isbjmp = .true. + ivbj1 = ivx + multbj1 = iand(15,mult(ivx,ip)-8) + ivbj2 = 0 + end if + if (.not.btest(irest(ivx,ip),23)) then +c +c This is either a normal beamend or end of a sequence of jump-beam segments, +c (170409) or rest at end of xtup +c so some sort of termination is required +c + ulqq = ulq(ivx,ibmcnt(ivx)) + if (.not.isbjmp .or. ivx.ne.ivbj2) then + if (btest(irest(ivx,ip),0)) then +c +c Xtup ends with rest +c + if (multip .eq. 1) then + notexq = sq//'ds' + lnote = 3 + else if (multip .eq. 2) then + notexq = sq//'qs' + lnote = 3 + else if (multip .eq. 3) then + notexq = sq//'hs' + lnote = 3 + end if +c +c 170801 Borrowed from main rest entry way down below to get level adjustment: +c BUT nole is like 102, not 2, so subtracted 100 for nole. Why different??? +c "... Now raise if necc." +c + if (btest(islur(ivx,ip),29)) then +c +c Blank rest +c + notexq = sq//'sk' + lnote = 3 + else if (nole .ne. 0) then +c +c Bandaid. Odd case with rests in xtups + 2 voices where came thru here with +c nolev=-4 but expected 100+/-. Try to fix. +c + if (abs(nole).lt.30) nole = 100+nole +c + if (abs(nole-100) .lt. 10) then + noteq = chax(48+abs(nole-100)) + lnoten = 1 + else + write(noteq(1:2),'(i2)')abs(nole-100) + lnoten = 2 + end if +c ??? if (nole .gt. 0) then + if (nole .gt. 100) then + notexq = sq//'raise'//noteq(1:lnoten)//sq//'internote' + * //notexq(1:lnote) + else + notexq = sq//'lower'//noteq(1:lnoten)//sq//'internote' + * //notexq(1:lnote) + end if + lnote = 16+lnoten+lnote + end if + return + else +c +c Normal termination +c + call ntrbbb(1,'t',ulqq,mod(ivx,24),notexq,lnote) + end if + else +c +c Terminate a sequence of jump-beam segments. +c + ulqq = chax(225-ichar(ulqq)) + call ntrbbb(1,'t',ulqq,mod(ivbj1,24),notexq,lnote) + end if + end if +c +c Check for end of 2nd seg of staff-jump xtup chord blank rest +c +c if (isbjmp.and.ivx.eq.ivbj2 + if (isbjmp + * .and.btest(islur(ivx,ip),29)) then + notexq = notexq(1:lnote)//sq//'sk' + return + end if +c +c And now the note, checking for open-head beamed tremolo +c + if (btest(irest(ivx,ip-1),2)) then +c +c Check for dotted tremolo +c + if (abs(nodur(ivx,ip)/12.-nodur(ivx,ip)/12).lt..001) then +c +c Need a dot +c + if (nodur(ivx,ip).eq.24 .or. nodur(ivx,ip).eq.12) then +c +c Solid notehead +c + notexq = notexq(1:lnote)//sq//'qbp' + else +c +c Assuming open notehead and nodur = 48 +c + notexq = notexq(1:lnote)//sq//'hbp' + end if + lnote = lnote+4 + else + if (nodur(ivx,ip).eq.32 .or. nodur(ivx,ip).eq.48) then + if (lnote .gt. 0) then + notexq = notexq(1:lnote)//sq//'hb' + else + notexq = sq//'hb' + end if + else + if (lnote .gt. 0) then + notexq = notexq(1:lnote)//sq//'qb' + else + notexq = sq//'qb' + end if + end if + lnote = lnote+3 + end if + else +c +c No tremolo +c + if (lnote .gt. 0) then + notexq = notexq(1:lnote)//sq//'qb' + else + notexq = sq//'qb' + end if + lnote = lnote+3 + end if + isdotm = .false. + if (.not.vxtup(ivx)) then + if (2**log2(nodur(ivx,ip)) .ne. nodur(ivx,ip)) then + if (.not.btest(iornq(ivx,ip),13)) then + notexq = notexq(1:lnote)//'p' + else + notexq = notexq(1:lnote)//'m' + isdotm = .true. + end if + lnote = lnote+1 + end if + end if +c +c 5/25/08 Allow >12 +c 5/9/10 Up to 24; replace 24 with 0 +c + if (.not.(isbjmp.and.ivx.eq.ivbj2)) then + call istring(mod(ivx,24),tempq,len) + else + call istring(mod(ivbj1,24),tempq,len) + end if + if (isbjmp .and. ivx.eq.ivbj2 + * .and..not.btest(irest(ivx,ip),23)) isbjmp=.false. + notexq = notexq(1:lnote)//tempq(1:len) + lnote = lnote+len + notexq = notexq(1:lnote)//noteq(1:lnoten) + lnote = lnote+lnoten + if (isdotm) then + if (lnoten .eq. 1) then + notexq = notexq(1:lnote)//'{'//noteq(1:1)//'}' + lnote = lnote+3 + else + notexq = notexq(1:lnote)//noteq(lnoten-1:lnoten-1) + lnote = lnote+1 + end if + end if + return + end + subroutine beamid(notexq,lnote) + parameter (nm=24) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + character*1 ulq,sepsymq,sq,ulqq,chax + logical beamon,firstgulp,figbass,figchk,flipend,btest, + * isfig,vxtup,isdotm,isbjmp,bar1syst,isdotted,isbj2,drawbm + character*79 notexq + common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 + common /comoct/ noctup + common /strtmid/ ihnum3,flipend(nm),ixrest(nm) + common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), + * mtupv(nm,9),nxtinbm(nm), + * islope(nm),xelsk(24),eloff(nm,9), + * nssb(nm),issb(nm),lev1ssb(nm,20) + common /comdraw/ drawbm(nm) + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /comask/ bar1syst,fixednew,scaldold, + * wheadpt,fbar,poenom + character*8 noteq + character*4 tempq + lnote = 0 + ip = ipo(jn) + nole = nolev(ivx,ip) +c +c Check for special situations with 2nds (see precrd) +c + if (btest(nacc(ivx,ip),30)) then + nole = nole - 1 + else if (btest(nacc(ivx,ip),31)) then + nole = nole + 1 + end if + if (.not.btest(irest(ivx,ip),0)) then + multip = iand(mult(ivx,ip),15)-8 +c if (btest(islur(ivx,ip-1),3)) multip = multip+1 +c +c (Above test OK since must have ip>1). Double dotted note preceding +c +c Move the following, because can't ask for note until after checking for +c embedded xtup with number, due to ordering/octave feature. +c +c call notefq(noteq,lnoten,nolev(ivx,ip),ncmid(iv,ip)) + end if + if (btest(irest(ivx,ip),28)) vxtup(ivx) = .true. + if (vxtup(ivx)) then +c +c In an xtup +c + if (btest(irest(ivx,ip),0)) then +c +c Intermediate rest in xtup, put in the rest. Reset nodur so notex works OK +c + nodur(ivx,ip) = 2**(4-(iand(mult(ivx,ip),15)-8)) + call notex(notexq,lnote) +c +c Re-zero so next note does not get confused +c + nodur(ivx,ip) = 0 + return + end if + if (.not.drawbm(ivx)) then +c +c Xtuplet with no beam, just put in the right kind of note +c + if (btest(islur(ivx,ip),30)) then +c +c Forced stem direction +c + ndsav = nodur(ivx,ip) + nodur(ivx,ip) = 2**(4-multip) + if (btest(nacc(ivx,ip),19) .or. + * btest(nacc(ivx,ip),27)) then + nodur(ivx,ip)=3*nodur(ivx,ip)/2 + else if (btest(nacc(ivx,ip-1),27)) then + nodur(ivx,ip)=nodur(ivx,ip)/2 + end if + call notex(notexq,lnote) + nodur(ivx,ip) = ndsav + else +c +c Use ulq for stem direction +c + call notefq(noteq,lnoten,nole,ncmid(iv,ip)) + if (lnoten .eq. 1) call addblank(noteq,lnoten) + lnote = 3 + if (.not.btest(nacc(ivx,ip-1),27)) then +c +c Prior note of xtup is not regular-dotted +c + if (multip .eq. 0) then + notexq = sq//'q'//ulq(ivx,ibmcnt(ivx)) + else if (multip .eq. -1) then + notexq = sq//'h'//ulq(ivx,ibmcnt(ivx)) + else if (multip .eq. 1) then + notexq = sq//'c'//ulq(ivx,ibmcnt(ivx)) + else if (multip .eq. 2) then + notexq = sq//'cc'//ulq(ivx,ibmcnt(ivx)) + lnote = 4 + else if (multip .eq. 3) then + notexq = sq//'ccc'//ulq(ivx,ibmcnt(ivx)) + lnote = 5 + else if (multip .eq. -2) then + notexq = sq//'wh' + end if + if (btest(nacc(ivx,ip),27)) then +c +c This xtup note is regular dotted non-beamed xtup +c +c notexq = notexq(1:3)//'p' +c lnote = 4 + notexq = notexq(1:lnote)//'p' + lnote = lnote+1 + end if + else +c +c Prior note of xtup is regular-dotted so this one is halved +c + if (multip .eq. 2) then + notexq = sq//'ccc'//ulq(ivx,ibmcnt(ivx)) + lnote = 5 + else if (multip .eq. 1) then + notexq = sq//'cc'//ulq(ivx,ibmcnt(ivx)) + lnote = 4 + else if (multip .eq. 0) then + notexq = sq//'c'//ulq(ivx,ibmcnt(ivx)) + else if (multip .eq. -1) then + notexq = sq//'q'//ulq(ivx,ibmcnt(ivx)) + else if (multip .eq. -2) then + notexq = sq//'h'//ulq(ivx,ibmcnt(ivx)) + end if + end if + notexq = notexq(1:lnote)//noteq + lnote = lnote+lnoten + end if + return + else if (nodur(ivx,ip).eq.0) then +c +c In the beamed xtup but not the last note +c + if (nodur(ivx,ip-1).gt.0) then +c +c Embedded Xtup, mult>0, starts here. Put in number if needed +c + nxtinbm(ivx) = nxtinbm(ivx)+1 + iud = 1 + if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') iud = -1 +c +c Get ip#, notelevel of middle note (or gap) in xtup +c + ipmid = ip+ntupv(ivx,nxtinbm(ivx))/2 + xnlmid = levrn(nolev(ivx,ipmid),irest(ivx,ipmid),iud, + * ncmid(iv,ipmid),iand(15,mult(ivx,ipmid))-8) + if (mod(ntupv(ivx,nxtinbm(ivx)),2).eq.0) xnlmid = (xnlmid+ + * levrn(nolev(ivx,ipmid-1),irest(ivx,ipmid-1),iud, + * ncmid(iv,ipmid-1),iand(15,mult(ivx,ipmid-1))-8))/2 + iflop = 0 + if (abs(xnlmid-ncmid(iv,ip)).lt.3.) iflop = -iud + iup = iud+2*iflop + if (btest(irest(ivx,ip),14)) then + iup = -iup + iflop = 0 + if (iud*iup .lt. 0) iflop = iup + end if +c +c Place number if needed +c + if (.not.btest(islur(ivx,ip),31)) then + mprint = igetbits(nacc(ivx,ip),5,22) + if (mprint.eq.0) mprint=mtupv(ivx,nxtinbm(ivx)) + call putxtn(mprint,iflop,multip,iud,wheadpt,poenom, + * nolev1(ivx),islope(ivx),slfac, + * xnlmid,islur(ivx,ip),lnote,notexq,ncmid(iv,ip),nlnum, + * eloff(ivx,nxtinbm(ivx)),iup,irest(ivx,ip), + * mult(ivx,ip),.false.) + end if + call notefq(noteq,lnoten,nole,ncmid(iv,ip)) + else +c +c Intermediate note of xtup +c + call notefq(noteq,lnoten,nole,ncmid(iv,ip)) + end if + else +c +c Last note of xtup (but not last note of beam!) +c + call notefq(noteq,lnoten,nole,ncmid(iv,ip)) + end if + else if (btest(irest(ivx,ip),0)) then + call notex(notexq,lnote) + return + else + call notefq(noteq,lnoten,nole,ncmid(iv,ip)) + end if +c +c Check for string of rests up to and including last note in xtup. +c +c Replace next 2 lines to keep from doing this block +c when in second part of staff-jumping chordal xtup. This fix could +c break some unaccounted non-chordal staff-jum xtup situations. +c if (vxtup(ivx) .and. btest(irest(ivx,ip+1),0) .and. +c * .not.btest(irest(ivx,ip),0)) then + if (vxtup(ivx) .and. btest(irest(ivx,ip+1),0) .and. + * .not.btest(irest(ivx,ip),0) .and. + * .not.(isbjmp.and.ivx.eq.ivbj2)) then +c +c This note is not a rest but next is a rest. Do rests continue to +c end of xtup, where nodur>0 +c + do 3 ipnow = ip+1 , ip+24 + if (nodur(ivx,ipnow).gt.0) go to 4 ! This is last of xtup + if (.not.btest(irest(ivx,ipnow+1),0)) go to 5 ! Next is not rest +c +c If I don't go to 5, know next note IS a rest! +c +3 continue +4 continue + call ntrbbb(1,'t',ulq(ivx,ibmcnt(ivx)),ivx,notexq,lnote) + notexq = notexq(1:lnote)//sq//'qb' + lnote = lnote+3 + call istring(ivx,tempq,len) + notexq = notexq(1:lnote)//tempq(1:len) + lnote = lnote+len + notexq = notexq(1:lnote)//noteq(1:lnoten) + lnote = lnote+lnoten + return +5 continue +c +c Check if multiplicity changes in a way requiring action, +c unless (160211) it's blank rest on start of 2nd seg of joined beam +c + else if(.not.btest(irest(ivx,ip-1),24) + * .or..not.btest(islur(ivx,ip-1),29)) then + ipleft = ip-1 + if (btest(irest(ivx,ipleft),0)) ipleft = ipleft-1 + if (.not.btest(islur(ivx,ipleft),20)) then + multl = iand(15,mult(ivx,ipleft))-8 + else + multl = 1 + end if + mub = multip - multl + ipright = ip+1 + if (btest(irest(ivx,ipright),0)) ipright = ipright+1 + if (.not.btest(islur(ivx,ip),20)) then + multr = iand(15,mult(ivx,ipright))-8 + else + multr = 1 + end if + mua = multr-multip + if (mub.gt.0 .or. mua .lt. 0) then +c +c Multiplicity has increased from left or will decrease to right. Need action. +c + if (isbjmp .and. ivx.eq.ivbj2) then + ivb = ivbj1 + ulqq = chax(225-ichar(ulq(ivx,ibmcnt(ivx)))) + else + ivb = ivx + ulqq = ulq(ivx,ibmcnt(ivx)) + end if + if (mua .ge. 0) then + call ntrbbb(multip,'n',ulqq,ivb,notexq,lnote) +c +c Test for next note being blank rest, assuming staff-crossing +c xtup chord +c + else if (multl .ge. multr .and. + * .not.btest(islur(ivx,ip+1),29)) then + do 1 im = multip , 1+multr, -1 + call ntrbbb(im,'t',ulqq,ivb,notexq,lnote) +1 continue +c else +c Test for next note being blank rest, assuming staff-crossing +c xtup chord +c + else if (.not.btest(islur(ivx,ip+1),29)) then + do 2 im = 1+multr, multip + call ntrbbb(im,'r',ulqq,ivb,notexq,lnote) +2 continue + call ntrbbb(multr,'n',ulqq,ivb,notexq,lnote) + end if + else if (ip .gt. 1) then +c +c Check for 2nd member of dotted xtup +c + if (btest(nacc(ivx,ip-1),27)) call ntrbbb(multip+1,'t', + * ulq(ivx,ibmcnt(ivx)),ivx,notexq,lnote) + end if + end if +c +c Now put in the note +c + if (lnote .gt. 0) then + notexq = notexq(1:lnote)//sq//'qb' + else + notexq = sq//'qb' + end if + lnote = lnote+3 + isdotm = .false. + if (isdotted(nodur,ivx,ip)) then +c +c rule out ')' +c + if (.not.btest(iornq(ivx,ip),13)) then + if (.not.btest(islur(ivx,ip),3)) then + notexq = notexq(1:lnote)//'p' + else +c +c Double dot +c + notexq = notexq(1:lnote)//'pp' + lnote = lnote+1 + end if + else + notexq = notexq(1:lnote)//'m' + isdotm = .true. + end if + lnote = lnote+1 + else if (btest(nacc(ivx,ip),19) + * .or. btest(nacc(ivx,ip),27)) then +c +c Special dotted notation for 2:1 xtup, or normal dot in xtup +c + notexq = notexq(1:lnote)//'p' + lnote = lnote+1 + end if +c +c 5/25/08 Allow >12 +c + if (.not.(isbjmp.and.ivx.eq.ivbj2)) then +c call istring(mod(ivx,12),tempq,len) + call istring(mod(ivx,24),tempq,len) + else +c call istring(mod(ivbj1,12),tempq,len) + call istring(mod(ivbj1,24),tempq,len) + end if + notexq = notexq(1:lnote)//tempq(1:len) + lnote = lnote+len + notexq = notexq(1:lnote)//noteq(1:lnoten) + lnote = lnote+lnoten + if (isdotm) then + if (lnoten .eq. 2) then + notexq = notexq(1:lnote)//'{'//noteq(2:2)//'}' + lnote = lnote+3 + else + notexq = notexq(1:lnote)//noteq(lnoten-1:lnoten-1) + lnote = lnote+1 + end if + end if + return + end + subroutine beamn1(notexq,lnote) + parameter (nm=24) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + character*1 ulq,sepsymq,sq + logical beamon,firstgulp,figbass,figchk,btest, + * isfig,vxtup,isdotm,isbjmp,isbj2,drawbm + logical gotnote + common /comoct/ noctup + common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 + common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), + * mtupv(nm,9),nxtinbm(nm), + * islope(nm),xelsk(24),eloff(nm,9), + * nssb(nm),issb(nm),lev1ssb(nm,20) + common /comdraw/ drawbm(nm) + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + character*8 noteq,tempq,numq + character*79 notexq + gotnote = .false. + lnoten = 0 + ip1 = ipo(jn) + multip = iand(15,mult(ivx,ip1))-8 + if (.not.drawbm(ivx) .and. btest(irest(ivx,ip1),0)) then + lnote = 0 +c +c The rest was already written in beamstrt, so just get out of here +c + return + end if + nole = nolev(ivx,ipo(jn)) +c +c Check for special situations with 2nds (see precrd) +c + if (btest(nacc(ivx,ipo(jn)),30)) then + nole = nole - 1 + else if (btest(nacc(ivx,ipo(jn)),31)) then + nole = nole + 1 + end if + if (vxtup(ivx) .and. .not.drawbm(ivx)) then +c +c Xtuplet with no beam, just put in the right kind of note +c + if (btest(islur(ivx,ip1),30)) then +c +c Forced stem direction +c + ndsav = nodur(ivx,ip1) + nodur(ivx,ip1) = 2**(4-multip) + if (btest(nacc(ivx,ip1),19) .or. + * btest(nacc(ivx,ip1),27)) nodur(ivx,ip1)=3*nodur(ivx,ip1)/2 + call notex(notexq,lnote) + nodur(ivx,ip1) = ndsav + else + call notefq(noteq,lnoten,nole,ncmid(iv,ip1)) + gotnote = .true. + if (lnoten .eq. 1) call addblank(noteq,lnoten) + lnote = 3 + if (multip .le. 0) then + if ((btest(irest(ivx,ip1),2) .and. + * nodur(ivx,ip1+1).ge.32) + * .or. multip .eq. -1) then +c +c 1st note of unbeamed half-note trem; make open +c + notexq = sq//'h'//ulq(ivx,ibmcnt(ivx)) + else if (multip .eq. -2) then + notexq = sq//'wh' + else + notexq = sq//'q'//ulq(ivx,ibmcnt(ivx)) + end if +c +c Check for dot +c + if (btest(irest(ivx,ip1),2) .and. + * abs(nodur(ivx,ip1+1)/12.-nodur(ivx,ip1+1)/12).lt..001) then +c +c Need a dot. already called addblank for noteq +c + if (lnote .eq. 0) then + notexq = sq//'pt'//noteq(1:lnoten) + lnote = 3+lnoten + else + notexq = notexq(1:lnote)//'p' + lnote = lnote+1 + end if + end if +c +c Insert the stemlength calcs here for dotted, unbeamed. +c Later may combine with below to avoid repeat. +c + if (btest(irest(ivx,ip1),2)) then + nindent = igetbits(irest(ivx,ip1),2,5) + if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then + slen = (4.5+nindent+nolev1(ivx)-nole + * -.4*islope(ivx)/slfac)*.6667 + else + slen = (4.5+nindent-nolev1(ivx)+nole + * +.4*islope(ivx)/slfac)*.6667 + end if + write(tempq,'(f4.1)')slen + notexq = sq//'slx{'//tempq(1:4)//'}'// + * notexq(1:lnote) + lnote = lnote+10 + end if + else if (btest(irest(ivx,ip1),2)) then +c +c 1st note of unbeamed quarter or 8th trem, make a quarter note +c +c Stem length calcs here. The .2 factor is empirical, but +c slfac accounts for musicsize. +c + nindent = igetbits(irest(ivx,ip1),2,5) + if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then + slen = (4.5+nindent+nolev1(ivx)-nole + * -.4*islope(ivx)/slfac)*.6667 + else + slen = (4.5+nindent-nolev1(ivx)+nole + * +.4*islope(ivx)/slfac)*.6667 + end if + write(tempq,'(f4.1)')slen + notexq = sq//'slx{'//tempq(1:4)//'}'// + * sq//'q'//ulq(ivx,ibmcnt(ivx)) + lnote = 13 +c +c Check for dotted 2-note trem; prepend dot to notexq if needed +c + if (nodur(ivx,ip1+1).eq.12 .or. + * nodur(ivx,ip1+1).eq.24) then + if (lnoten .eq. 1) then + noteq = ' '//noteq(1:1) + lnoten = 2 + end if + notexq = sq//'pt'//noteq(1:lnoten)//notexq(1:lnote) + lnote = lnote+3+lnoten + call notefq(noteq,lnoten,nole,ncmid(iv,ip1)) + gotnote = .true. + if (lnoten .eq. 1) then + noteq = ' '//noteq(1:1) + lnoten = 2 + end if + end if + else if (multip .eq. -1) then + notexq = sq//'h'//ulq(ivx,ibmcnt(ivx)) + else if (multip .eq. 1) then + notexq = sq//'c'//ulq(ivx,ibmcnt(ivx)) + else if (multip .eq. 2) then + notexq = sq//'cc'//ulq(ivx,ibmcnt(ivx)) + lnote = 4 + else if (multip .eq. 3) then + notexq = sq//'ccc'//ulq(ivx,ibmcnt(ivx)) + lnote = 5 + else if (multip .eq. -2) then + notexq = sq//'wh' + else if (multip .eq. -3) then + notexq = sq//'breve' + lnote = 6 + else + print* + print*,'(Error in beamn1, send source to Dr. Don)' + call stop1() + end if + if (btest(nacc(ivx,ip1),19) .or. btest(nacc(ivx,ip1),27)) then +c notexq = notexq(1:3)//'p' +c lnote = 4 + notexq = notexq(1:lnote)//'p' + lnote = lnote+1 + end if + notexq = notexq(1:lnote)//noteq + lnote = lnote+lnoten + end if + return + end if +c +c Check if mult. decreases from 1st note to 2nd +c + if (ibm2(ivx,ibmcnt(ivx)).gt.ip1 + * .or. btest(islur(ivx,ip1),20)) then +c +c More than one note or single-note before a multiplicity-down-up "][" +c + if (btest(islur(ivx,ip1),20)) then + multr = 1 + else if (.not.btest(irest(ivx,ip1+1),0)) then + multr = iand(15,mult(ivx,ip1+1))-8 + else + multr = iand(15,mult(ivx,ip1+2))-8 + end if + lnote = 0 +c +c Check if staff-jumper +c + if (isbjmp .and. ivbj2.gt.0) then + ivxp = ivbj1 + else + ivxp = ivx + end if + if (multr .lt. multip) then + do 1 im = multip , multr+1 , -1 +c +c Right-shifted 'termination' +c + if (isbjmp .and. ivbj2.gt.0) then +c +c Jump beam +c + call ntrbbb(im,'t',ulq(ivxp,ibmcnt(ivx)), + * ivxp,notexq,lnote) + else +c +c Same staff +c + call ntrbbb(im,'r',ulq(ivx,ibmcnt(ivx)),ivxp,notexq,lnote) + end if +1 continue + end if + end if +c +c Check for beamed, dotted 2-note tremolo +c + if (btest(irest(ivx,ip1),2) .and. + * abs(nodur(ivx,ip1+1)/12.-nodur(ivx,ip1+1)/12).lt..001) then + call notefq(noteq,lnoten,nole,ncmid(iv,ip)) + gotnote = .true. + if (lnoten .eq. 1) then + noteq = ' '//noteq(1:1) + lnoten = 2 + end if + end if +c +c Put in the note, but check first for open-head beamed tremolo. +c + if (btest(irest(ivx,ip1),2) .and. nodur(ivx,ip1+1).ge.32) then +c +c 2-note open head tremolo +c + if (lnote .gt. 0) then + notexq = notexq(1:lnote)//sq//'hb' + else + notexq = sq//'hb' + end if + else + if (lnote .gt. 0) then + notexq = notexq(1:lnote)//sq//'qb' + else + notexq = sq//'qb' + end if + end if + lnote = lnote+3 + if (btest(irest(ivx,ip1),2) .and. + * (nodur(ivx,ip1+1).eq.24.or.nodur(ivx,ip1+1).eq.12 + * .or.nodur(ivx,ip1+1).eq.48)) then +c +c 2-note trem on dotted note +c + notexq = notexq(1:lnote)//'p' + lnote = lnote+1 + end if +c +c Check for dot +c + isdotm = .false. + if (.not.vxtup(ivx)) then + nd = nodur(ivx,ipo(jn)) + if (nd.ne.0) then + if (2**log2(nd).ne.nd) then + if (.not.btest(iornq(ivx,ip1),13)) then + if (.not.btest(islur(ivx,ip1),3)) then + notexq = notexq(1:lnote)//'p' + else +c +c Double dot +c + notexq = notexq(1:lnote)//'pp' + lnote = lnote+1 + end if + else + notexq = notexq(1:lnote)//'m' + isdotm = .true. + end if + lnote = lnote+1 + end if + end if + else if (btest(nacc(ivx,ip1),19) .or. + * btest(nacc(ivx,ip1),27)) then +c +c In an xtup with special 2:1 notation with a dot on 1st note, or normal dot +c + notexq = notexq(1:lnote)//'p' + lnote = lnote+1 + end if +c +c Do the number; 0 if 12 +c 5/25/08 allow >12 +c + if (.not.btest(irest(ivx,ip1),24)) then + call istring(mod(ivx,24),numq,len) + else +c +c 1st note of staff-jumping beam +c + call istring(mod(ivbj1,24),numq,len) + end if + notexq = notexq(1:lnote)//numq(1:len) + lnote = lnote+len + if (.not.gotnote) then + call notefq(noteq,lnoten,nole,ncmid(iv,ip1)) + end if + notexq = notexq(1:lnote)//noteq(1:lnoten) + lnote = lnote+lnoten + if (isdotm) then + if (lnoten .eq. 1) then + notexq = notexq(1:lnote)//'{'//noteq(1:1)//'}' + lnote = lnote+3 + else + notexq = notexq(1:lnote)//noteq(lnoten-1:lnoten-1) + lnote = lnote+1 + end if + end if + return + end + subroutine beamstrt(notexq,lnote,nornb,ihornb,space,squez,ib) + parameter (nm=24) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + character*1 ulq,sepsymq,sq + character*40 restq + character*79 inameq + logical beamon,firstgulp,figbass,figchk,btest, + * isfig,vxtup,bar1syst,addbrack,flipend,xto,drawbm + common /comeskz2/ eskz2(nm,200) + common /comoct/ noctup + common /strtmid/ ihnum3,flipend(nm),ixrest(nm) + common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), + * mtupv(nm,9),nxtinbm(nm), + * islope(nm),xelsk(24),eloff(nm,9), + * nssb(nm),issb(nm),lev1ssb(nm,20) + common /comdraw/ drawbm(nm) + common /comas1/ naskb,task(40),wask(40),elask(40) + common /comask/ bar1syst,fixednew,scaldold, + * wheadpt,fbar,poenom + common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, + * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, + * lnam(nm),inameq(nm) + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 +c +c The following is just to save the outputs from SetupB for the case of +c xtups starting with a rest, where beamstrt is called twice. +c + common /comipb/ nnb,sumx,sumy,ipb(24),smed + character*1 chax + character*8 noteq + character*79 notexq,tempq + integer nornb(nm),ihornb(nm,24) + real*4 space(80),squez(80) + logical novshrinktop,cstuplet,usexnumt,writebrests + common /comnvst/ novshrinktop,cstuplet + common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), + * fullsize(nm),ivxfig2,ivvfig(2,74) + character*10 figq + common /xjbeambrests/ nbrests + writebrests = .true. + ibc = ibmcnt(ivx) + ipb1 = ibm1(ivx,ibc) + multb = iand(15,mult(ivx,ipb1))-8 + ip = ipo(jn) + lnote = 0 + nvtrem = 0 ! Vertical adjustment beams for tremolo +c +c Compute slopes and note offsets from start of beam. Inside SetupB, for each +c xtup in the beam, set eloff,mtupv (in comxtup) for printed number. Also +c gets islope(ivx), transferred in common. +c + if (ixrest(ivx).eq.0 .and. .not.btest(nacc(ivx,ip),21)) + * call SetupB(xelsk,nnb,sumx,sumy,ipb,smed,ixrest(ivx)) +c +c Will always come past here after entering beamstrt for 2-note tremolo, and +c slope will have been computed, even for unbeamed. So start the indented +c beams here. The indented tremolo bars will be added to the notexq output +c string, under the tacet assumption that there is no horizontal shift +c enacted by the action just before and after the call to beamstrt. +c + if (btest(irest(ivx,ipb1),2) .and. + * igetbits(irest(ivx,ipb1),2,5) .gt. 0) then + nindent = igetbits(irest(ivx,ipb1),2,5) + tempq = sq//'roffset{.7}{'//sq//'ib' + ltemp = 16 + if (nindent .eq. 2) then + tempq = tempq(1:16)//'b' + ltemp = 17 + else if (nindent .eq. 3) then + tempq = tempq(1:16)//'bb' + ltemp = 18 + end if +c +c Use beam # 0 for indented beams +c + tempq = tempq(1:ltemp)//ulq(ivx,ibc)//'0' + ltemp = ltemp+2 +c +c Get adjustment to nolev1 for main beam based on nindent +c + if (ulq(ivx,ibc) .eq. 'u') then + nvtrem = nindent-1 + else + nvtrem = 1-nindent + end if +c +c Get numerical position of initiation for main beam. Will adjust height at +c closing to account for nindent +c + numinit = nolev1(ivx)-ncmid(iv,ipb1)+4 +c +c Get forced beam height tweak, apply here for indented beams +c + iadj = igetbits(ipl(ivx,ipb1),6,11)-30 + if (iadj .ne. -30) numinit = numinit+iadj + if (numinit.ge.0 .and. numinit.le.9) then + write(noteq,'(i1)') numinit + lnoten = 1 + else + write(noteq,'(a1,i2,a1)')'{',numinit,'}' + lnoten = 4 + end if + tempq = tempq(1:ltemp)//noteq(1:lnoten) + ltemp = ltemp+lnoten +c +c Now do the slope. +c 170408 Baseline is in islope(ivx). Apply slope tweak if present. +c + numinit = islope(ivx) + iadj = igetbits(ipl(ivx,ipb1),6,17)-30 + if (iadj .ne. -30) numinit = numinit+iadj + if (numinit.ge.0 .and. numinit.le.9) then + write(noteq,'(i1,a1)') numinit,'}' + lnoten = 2 + else + write(noteq,'(a1,i2,a2)')'{',numinit,'}}' + lnoten = 5 + end if + tempq = tempq(1:ltemp)//noteq(1:lnoten) + ltemp = ltemp+lnoten + notexq = tempq + lnote = ltemp + end if + if (btest(nacc(ivx,ip),21)) then +c +c This is start of later segment of single-slope beam group so use slope and +c height from prior beam. Slope is already OK. +c + issb(ivx) = issb(ivx)+1 + nolev1(ivx) = lev1ssb(ivx,issb(ivx)) + end if +c +c Move this up to before indented beams for tremolo +c lnote = 0 + drawbm(ivx) = .true. + if (btest(irest(ivx,ipb1),28) .and. ixrest(ivx).ne.2) then + vxtup(ivx) = .true. + nxtinbm(ivx) = nxtinbm(ivx)+1 +c +c irest(28)=>Xtup starts on this note. Set up for xtuplet. +c Number goes on notehead side at middle note (or gap) of xtup, unless that +c puts it in staff, then it flops to stem (or beam) side. +c __ __ +c | | | O | | +c O | | O +c |___| O |__| | +c +c iud -1 -1 1 1 ...stem direction +c iflop 0 1 -1 0 ...direction of flop +c iup -1 1 -1 1 ...direction of number and bracket +c + iud = 1 + if (ulq(ivx,ibc) .eq. 'u') iud = -1 +c +c Get ip#, note level of middle note (or gap) in xtup +c + ipmid = ipb1+ntupv(ivx,nxtinbm(ivx))/2 +c +c 130129 If middle note is a rest, go to next note. Note last note cannot +c be a rest +c +14 continue + if (btest(irest(ivx,ipmid),0)) then + ipmid = ipmid+1 + go to 14 + end if + xnlmid = levrn(nolev(ivx,ipmid),irest(ivx,ipmid),iud, + * ncmid(iv,ipmid),iand(15,mult(ivx,ipmid))-8) + if (mod(ntupv(ivx,nxtinbm(ivx)),2) .eq. 0) xnlmid = (xnlmid+ + * levrn(nolev(ivx,ipmid-1),irest(ivx,ipmid-1),iud, + * ncmid(iv,ipmid-1),iand(15,mult(ivx,ipmid-1))-8))/2 + iflop = 0 + if (abs(xnlmid-ncmid(iv,ipb1)).lt.3.) iflop = -iud + iup = iud+2*iflop + if (btest(irest(ivx,ipb1),14)) then +c +c Alter iud, iflop, iup to flip number/bracket. (Stare at above pic) +c + iup = -iup + iflop = 0 + if (iud*iup .lt. 0) iflop = iup + end if +c +c Determine if a beam is to be drawn. +c Had problem w/ half-note 2-note xtups always F, so add a test +c + if (igetbits(irest(ivx,ipb1),2,3) .ne. 0) then + drawbm(ivx) = .true. + go to 6 + end if + do 5 ipp = ibm1(ivx,ibc),ibm2(ivx,ibc) + if (iand(15,mult(ivx,ipp))-8 .le. 0) then + drawbm(ivx) = .false. + go to 6 + end if +5 continue + drawbm(ivx) = .not.btest(islur(ivx,ibm1(ivx,ibc)),18) +6 continue +c +c Are we using tuplet.tex? +c + usexnumt = cstuplet .and. .not.drawbm(ivx) +c +c Check for single note xtup 171217 +c + if (btest(irest(ivx,ipb1),28) .and. nnb.eq.1) then + drawbm(ivx) = .false. + end if +c +c Place xtup number if needed +c + if (.not.btest(islur(ivx,ipb1),31) .or. multb.le.0) then + mprint = igetbits(nacc(ivx,ip),5,22) + if (mprint.eq.0) mprint=mtupv(ivx,nxtinbm(ivx)) +c Stab in the dark! Note: tried setting unbeam flag islur18 but no go. + if (nnb .eq. 1) then + xnlmid = nolev1(ivx) + islope(ivx) = 0 +c +c Move up, outside number check block, so all 1-note xtups ar unbeamed +c drawbm(ivx) = .false. +c + end if + call putxtn(mprint,iflop,multb,iud,wheadpt, + * poenom,nolev1(ivx),islope(ivx),slfac,xnlmid,islur(ivx,ipb1), + * lnote,notexq,ncmid(iv,ipb1),nlnum,eloff(ivx,nxtinbm(ivx)), + * iup,irest(ivx,ipb1),mult(ivx,ipb1),usexnumt) + end if + if (.not.drawbm(ivx)) then +c +c Xtuplet with no beam +c + if (.not.btest(islur(ivx,ipb1),31)) then +c +c Number printing has not been suppressed, so put in the bracket. +c scale = stretch factor for bracket if there are asx's +c xnsk = length of the bracket in \noteskips = (\elemskips)/(eon) +c + xnsk = (eskz2(ivx,ipb1+ntupv(ivx,nxtinbm(ivx))-1) + * -eskz2(ivx,ipb1))/squez(ib)/feon(space(ib)/squez(ib)) + if (iup .eq. 1) then + if (lnote .gt. 0) then + notexq = notexq(1:lnote)//sq//'ovbkt' + else + notexq = sq//'ovbkt' + end if + else + if (lnote .gt. 0) then + notexq = notexq(1:lnote)//sq//'unbkt' + else +c +c Introduced 12/5/98, req'd due to possible presence of in-line TeX +c + notexq = sq//'unbkt' + end if + end if + lnote = lnote+6 + if (iline.eq.1) then + smed = smed/(1.-fracindent) + end if + xslope = 1.8*smed*slfac + islope(ivx) = nint(xslope) + nolev1(ivx) = nlnum - nint(smed*eloff(ivx,1)) + if (islope(ivx) .eq. 0) nolev1(ivx) = nolev1(ivx)-1 + if (iup .eq. 1) nolev1(ivx) = nolev1(ivx)+4 + levbracket = nolev1(ivx) + if (iup.eq.1 .and. cstuplet) levbracket = levbracket-1 + call notefq(noteq,lnoten,levbracket,ncmid(iv,ipb1)) + if (lnoten .eq. 1) call addblank(noteq,lnoten) + notexq = notexq(1:lnote)//noteq(1:lnoten)//'{' + lnote = lnote+lnoten+1 + if (xnsk .lt. 0.995) then + write(notexq(lnote+1:lnote+4),'(i1,f3.2)')0,xnsk + lnote = lnote+4 + else if (xnsk .lt. 9.995) then + write(notexq(lnote+1:lnote+4),'(f4.2)')xnsk + lnote = lnote+4 + else + write(notexq(lnote+1:lnote+5),'(f5.2)')xnsk + lnote = lnote+5 + end if + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + if (btest(mult(ivx,ipb1),4)) then +c +c Tweak slope of bracket +c + islope(ivx) = islope(ivx)+igetbits(mult(ivx,ipb1),5,5)-16 + end if + if (islope(ivx).lt.0 .or. islope(ivx).ge.10) then + notexq = notexq(1:lnote)//'{' + lnote = lnote+1 + if (islope(ivx) .lt. -9) then + write(notexq(lnote+1:lnote+3),'(i3)')islope(ivx) + lnote = lnote+3 + else + write(notexq(lnote+1:lnote+2),'(i2)')islope(ivx) + lnote = lnote+2 + end if + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + else + write(notexq(lnote+1:lnote+1),'(i1)')islope(ivx) + lnote = lnote+1 + end if +c +c Done with bracket +c + end if + if (ixrest(ivx) .eq. 1) then +c +c Put in the rest. Possible problem: Rest is a spacing char, but between +c beamstrt and beamn1 some non-spacing chars. are inserted. +c +c 130126 Deal with vertical shifts of rest starting xtuplet +c + lrest = 3 + if (btest(islur(ivx,ip),29)) then + restq = sq//'sk' +c if (multb .eq. 0) then + else if (multb .eq. 0) then + restq = sq//'qp' + else if (.not.drawbm(ivx).and.multb.eq.1) then + restq = sq//'ds' + else if (.not.drawbm(ivx).and.multb.eq.2) then + restq = sq//'qs' + else if (.not.drawbm(ivx).and.multb.eq.3) then + restq = sq//'hs' + else + restq = sq//'hpause' + lrest = 7 + end if + if (btest(nacc(ivx,ipb1),18) .and. + * btest(nacc(ivx,ipb1),19)) then +c +c VERY special case of rest at start of F-tuplet, needs dot +c + restq = sq//'pt4'//restq(1:lrest) + lrest = lrest+4 + end if + + nole = mod(nolev(ivx,ip)+20,100)-20 +c if (nole .eq. 0) then + if (nole.eq.0 .or. btest(islur(ivx,ip),29)) then +c +c Rest blank or is not raised +c + notexq = notexq(1:lnote)//restq + lnote = lnote+lrest + else + if (abs(nole) .lt. 10) then + tempq = chax(48+abs(nole)) + ltemp = 1 + else + write(tempq(1:2),'(i2)')abs(nole) + ltemp = 2 + end if + if (nole .gt. 0) then + tempq = sq//'raise'//tempq(1:ltemp)//sq//'internote' + else + tempq = sq//'lower'//tempq(1:ltemp)//sq//'internote' + end if + ltemp = 16+ltemp + notexq = notexq(1:lnote)//tempq(1:ltemp)//restq(1:lrest) + lnote = lnote+ltemp+lrest + end if +c +c No need to come back through this subroutine (as would if rest starts bar +c & multb>0), so do not advance ibm1. But must check in beamn1 and do nothing. +c + ixrest(ivx) = 0 + end if + return + end if +c +c End if block for non-beamed xtup start...note we returned +c + if (ixrest(ivx) .eq. 1) then +c +c Insert rest at start of beamed xtup. See above note for possible problem. +c But first check if blank rest and if in forced beam (assuming xtuplet), +c and if so, count rest from beginning, add \sk's AFTER starting beam '\ib*' +c + if (btest(islur(ivx,ip),29) .and. btest(ipl(ivx,ip),30)) then + nbrests = nbrests+1 + writebrests = .false. + else + nodur(ivx,ipb1) = 2**(4-multb) + call notex(tempq,ltemp) + if (lnote .gt. 0) then + notexq = notexq(1:lnote)//tempq(1:ltemp) + else + notexq = tempq(1:ltemp) + end if + lnote = lnote+ltemp + end if +c +c Re-zero just in case! +c + nodur(ivx,ipb1) = 0 + ibm1(ivx,ibc) = ibm1(ivx,ibc)+1 +c +c See if next note is a non-rest +c + if (.not.btest(irest(ivx,ipb1+1),0)) then + ixrest(ivx) = 2 + else +c +c Suppress reprinting xtup number next time through beamstrt +c + islur(ivx,ipb1+1) = ibset(islur(ivx,ipb1+1),31) +c +c Set new xtup start flag +c + irest(ivx,ipb1+1) = ibset(irest(ivx,ipb1+1),28) + end if + return + end if + end if +c +c Just ended if block for xtups +c + if (vxtup(ivx) .and. ipb1.eq.ibm2(ivx,ibc)) then +c +c Move actual note writing to beamend +c + ixrest(ivx) = 4 + return + end if + if (issb(ivx) .eq. 0) then +c +c 1st bmstrt in single-slope bm grp, Adjust start level(s) and slope if needed +c + iadj = igetbits(ipl(ivx,ipb1),6,11)-30 + if (iadj .ne. -30) then + nolev1(ivx) = nolev1(ivx)+iadj + do 2 isssb = 1 , nssb(ivx) + lev1ssb(ivx,isssb) = lev1ssb(ivx,isssb)+iadj +2 continue + end if + iadj = igetbits(ipl(ivx,ipb1),6,17)-30 + if (iadj .ne. -30) then + islope(ivx) = islope(ivx)+iadj + if (abs(islope(ivx)) .gt. 9) islope(ivx) = sign(9,islope(ivx)) + if (nssb(ivx) .gt. 0) then +c +c Cycle thru non-rest notes in SSBG, looking for bmstrts. +c + isssb = 0 + do 4 inb = 2, nnb + if (btest(nacc(ivx,ipb(inb)),21)) then +c +c Beam segment start. New start level + isssb = isssb+1 + lev1ssb(ivx,isssb) = + * lev1ssb(ivx,isssb)+islope(ivx)*xelsk(inb)/slfac + end if +4 continue + end if + end if + end if + iadj = igetbits(islur(ivx,ipb1),2,27) + addbrack = .false. + if (btest(ipl(ivx,ipb1),30)) then +c +c Check for altered starting polarity. Only in forced beams. Nominal start +c level is nolev1. So beam level is nolev1 +/- 6, to be compared w/ nolev(.,.). +c + if (ulq(ivx,ibc).eq.'u' .and. + * nolev1(ivx)+6.lt.nolev(ivx,ipb1)) then + if (lnote .eq. 0) then + notexq = sq//'loff{' + else + notexq = notexq(1:lnote)//sq//'loff{' + end if + lnote = lnote+6 + addbrack = .true. + else if (ulq(ivx,ibc).eq.'l' .and. + * nolev1(ivx)-6.gt.nolev(ivx,ipb1)) then + if (lnote .eq. 0) then + notexq = sq//'roff{' + else + notexq = notexq(1:lnote)//sq//'roff{' + end if + lnote = lnote+6 + addbrack = .true. + end if +c +c Check end level for possible flipping in forced beam. Have to do it +c here since with multiple voices, xelsk will not be preserved. +c + if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') then + bmlev = nolev1(ivx)+6+islope(ivx)*xelsk(nnb)/slfac + flipend(ivx) = bmlev.lt.nolev(ivx,ibm2(ivx,ibc)) + else if (ulq(ivx,ibmcnt(ivx)) .eq. 'l') then + bmlev = nolev1(ivx)-6+islope(ivx)*xelsk(nnb)/slfac + flipend(ivx) = bmlev.gt.nolev(ivx,ibm2(ivx,ibc)) + end if + end if + multbb = multb+iadj +c +c Tremolo starting? +c + if (btest(irest(ivx,ipb1),2)) multbb = + * igetbits(irest(ivx,ipb1),2,3) + call ntrbbb(multbb,'i',ulq(ivx,ibc),ivx,notexq,lnote) +c +c Put in name of start level and slope, after correcting nolev1 if xtup +c started with a rest. +c + if (ixrest(ivx).eq.2) nolev1(ivx) = + * nint(nolev1(ivx)+xelsk(1)*islope(ivx)/slfac) +c +c Add adjustment nvtrem to main beam to account for tremolo indented beams +c + call notefq(noteq,lnoten,nolev1(ivx)+nvtrem,ncmid(iv,ipb1)) + if (islope(ivx) .lt. 0) then + notexq = notexq(1:lnote)//noteq(1:lnoten)//'{' + lnote = lnote+4+lnoten + write(notexq(lnote-2:lnote),'(i2,a1)')islope(ivx),'}' + else + notexq = notexq(1:lnote)//noteq(1:lnoten) + lnote = lnote+1+lnoten + write(notexq(lnote:lnote),'(i1)')islope(ivx) + end if +c +c Check for beam-thk fine-tuning +c + if (iadj .gt. 0) then + do 1 imp = multb+iadj , multb+1 , -1 + call ntrbbb(imp,'t',ulq(ivx,ibc),ivx,notexq,lnote) +1 continue + end if +c +c If we shifted, must close with right bracket +c + if (addbrack) then + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + end if +c +c Add in \sk's for very special case of staff-crossing xtup chords +c Assumes we are in lower (first) voice of up-to-both beamed xtup +c that starts with blank rests (notes in upper voice here). +c + if (nbrests.gt.0 .and. writebrests) then + do 7 isk = 1 , nbrests + notexq = notexq(1:lnote)//chax(92)//'sk' + lnote = lnote+3 +7 continue + nbrests = 0 + end if +c +c Get 'floor' zmin for figures +c Note: Will not come thru here on 1st note of unbeamed xtup, so figure height +c won't be adjusted. If anyone ever needs that, need to duplicate this +c functionality up above, before exiting. +c + if (figbass .and. (ivx.eq.1 .or. ivx.eq.ivxfig2)) then + if (ivx .eq. 1) then + ivf = 1 + else + ivf = ivxfig2 + end if + zmult = 1.2*(multb-1) + ymin = 100. + do 3 inb = 1, nnb + if (isfig(ivf,ipb(inb))) then + if (ulq(iv,ibc) .eq. 'u') then + ybot = nolev(iv,ipb(inb)) + else + ybot = islope(ivx)/slfac*xelsk(inb)+nolev1(ivx) + * -stemlen-zmult + end if + ymin = min(ymin,ybot) + end if +3 continue + maxdrop = ncmid(iv,ipb1)-4-ymin+5.01 + ifigdr(ivf,iline) = max(ifigdr(ivf,iline),maxdrop) + end if +c +c Compute ornament levels if needed +c + NomOrnLev = ncmid(iv,ipb1)+5 + iorn = 0 + do 8 inb = 1 , nnb + ip = ipb(inb) + if (.not.btest(iornq(ivx,ip),23)) go to 8 + if (btest(irest(ivx,ip),26) .and. ulq(ivx,ibc).eq.'l') then +c +c letter-dynamic or hairpin ending under down-beamed +c + iorn = iorn+1 + ybeam = nolev1(ivx)-stemlen+islope(ivx)*xelsk(inb)/slfac+1 + * -1.2*(multb-1) + ihornb(ivx,iorn) = min(nint(ybeam-3.),NomOrnLev-10) + else if (.not.btest(ipl(ivx,ip),10)) then +c +c Bits 0-13: (stmgx+Tupf._) , 14: Down fermata, was F +c 15: Trill w/o "tr", was U , 16-18 Editorial s,f,n , 19-21 TBD +c +c Non-chord. There IS an ornament. Need ihornb only if upbeam, and if +c ornament is 1,2,3,5,6,7,8,9,10,15-21 (up- but not domn ferm.) +c + if (ulq(ivx,ibc).eq.'u' .and. + * iand(iornq(ivx,ipb(inb)),4163566).gt.0) then + iorn = iorn+1 + iornq(ivx,ip) = ibset(iornq(ivx,ip),22) + ybeam = nolev1(ivx)+stemlen+islope(ivx)*xelsk(inb)/slfac-1 + * +1.2*(multb-1) + ihornb(ivx,iorn) = max(nint(ybeam+3.),NomOrnLev) + end if + else +c +c In a chord. Orn may be on main note or non-main or both. Set ihornb if +c upbeam and highest note has orn, or down beam and lowest. Find 1st chord note +c + do 10 icrd1 = 1 , ncrd + if (iand(255,icrdat(icrd1)) .eq. ip .and. + * iand(15,ishft(icrdat(icrd1),-8)) .eq. ivx) go to 11 +10 continue +11 continue +c +c Find outermost note, min or max depending on beam direction ulq. xto is true +c if there's an ornament on that note. Expand orn list to include ._, since if +c on extreme chord note in beam, will move. +c So ornaments are all except 0,4,13 (,g,) +c + levx = nolev(ivx,ip) + xto = iand(iornq(ivx,ipb(inb)),4186094).gt.0 + icrdx = 0 + do 12 icrd = icrd1 , ncrd + if (iand(255,icrdat(icrd)) .ne. ip .or. + * iand(15,ishft(icrdat(icrd),-8)) .ne. ivx) go to 13 + levc = iand(127,ishft(icrdat(icrd),-12)) + if ((ulq(ivx,ibc).eq.'u'.and.levc.gt.levx) .or. + * (ulq(ivx,ibc).eq.'l'.and.levc.lt.levx)) then + levx = levc + icrdx = icrd + xto = iand(icrdorn(icrd),4186094).gt.0 + end if +12 continue +13 continue +c +c If there's orn on extreme note, do stuff +c + if (xto) then + iorn = iorn+1 + if (ulq(ivx,ibc) .eq. 'u') then + ybeam = nolev1(ivx)+stemlen+islope(ivx)*xelsk(inb)/slfac-1 + * +1.2*(multb-1) + ihornb(ivx,iorn) = max(nint(ybeam+3.),NomOrnLev) + else + ybeam = nolev1(ivx)-stemlen+islope(ivx)*xelsk(inb)/slfac+1 + * -1.2*(multb-1) + ihornb(ivx,iorn) = min(nint(ybeam-3.),NomOrnLev-10) + end if + if (icrdx .eq. 0) then +c +c Affected ornament is on main note +c + iornq(ivx,ip) = ibset(iornq(ivx,ip),22) + else + icrdorn(icrdx) = ibset(icrdorn(icrdx),22) + end if + end if + end if +8 continue +c +c Henceforth nornb will be a counter. +c + if (iorn .gt. 0) nornb(ivx)=1 + if (ixrest(ivx) .eq. 2) ixrest(ivx) = 0 + return + end + block data + parameter (nm=24) + common /comtol/ tol + common /comtrans/ cheadq + common /compage/ widthpt,ptheight,hoffpt,voffpt, + * nsyst,nflb,ibarflb(0:40), + * isysflb(0:40),npages,nfpb,ipagfpb(0:18),isysfpb(0:18), + * usefig,fintstf,gintstf,fracsys(30),nmovbrk,isysmb(0:30), + * nistaff(0:40) + common /cblock/ + * etatop,etabot,etait,etatc,etacs1,hgtin,hgtti,hgtco, + * xilbn,xilbtc,xilhdr,xilfig,a,b,inhnoh + common /cominbot/ inbothd + logical usefig + common /comstart/ facmtr + character*60 cheadq + character*120 instrq,titleq,compoq + logical headlog + common /comtitl/ instrq,titleq,compoq,headlog,inskip,ncskip, + * inhead + common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, + * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, + * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, + * rtshfac + common /combmh/ bmhgt,clefend + common /comdyn/ ndyn,idyndat(99),levdsav(nm),ivowg(12),hoh1(12), + * hoh2(12),hoh2h1(2),ntxtdyn,ivxiptxt(41),txtdynq(41), + * idynda2(99),levhssav(nm),listcresc,listdecresc + character*128 txtdynq + logical kbdrests + common /comkbdrests/ levbotr(8),levtopr(8),kbdrests + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans + common /comsize/ isize(nm) +c + data tol /.001/ + data cheadq + * /' '/ + data gslfac /9./ + data instrq,titleq,compoq,headlog /3*' ',.false./ +c +c meter space (pts) = xb4mbr = musicsize*facmtr +c + data facmtr /0.55/ + data grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, + * flagfac,dotfac,bacfac,agc1fac,clefend,bmhgt + * / 1.3333,.4 , .7 , .3 , 0.2 , 2.0 , 1.0 , + * .7,.7 ,.9 ,.5 ,2.3 ,1.1 / + data rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac,arpfac + * / 1.32 , 2.25 , 0.47 , 0.83 , 0.17 , 0.5 , 1.7 / + data rtshfac / 1.0 / + data isize /nm*0/ +c +c From other +c + data ptheight,widthpt,hoffpt,voffpt, + * etatop,etabot,etait,etatc,etacs1,hgtin,hgtti,hgtco, + * xilbn,xilbtc,xilhdr,xilfig,a,b,inbothd,inhnoh + * / 740. , 524. , 0., 0., + * .50 , .25 , 0.4 , 0.4 , 0.2 , 12. ,21. , 12., + * 4 , 1.6 ,5.,5.7,1.071,2.714,16 ,16 / + data fracsys /30*0./ + data ivowg,hoh1,hoh2,hoh2h1 /0,0,0,0,0,1,1,1,1,1,1,1, +c * 2.0,1.5,1.0,0.5,1.3,1.3,0.4,0.8,1.2,0.8,1.2,1.6, + * 2.2,1.7,1.2,0.7,1.3,1.3,0.4,0.8,1.2,0.8,1.2,1.6, + * -2.7,-2.2,-1.7,-1.2,-2.3,-2.1,-1.0,-1.7,-2.1,-1.6,-1.9,-2.3, + * -0.3,0.3 / + data kbdrests /.false./, + * levtopr /9,7,5,5,7,5,6,6/, levbotr /0,0,0,2,1,4,5,4/ + data EarlyTransOn, LaterInstTrans /2*.false./ + data iInstTrans /nm*0/ + data iTransAmt /nm*0/ + end + subroutine catspace(space,squez,nnsk) + parameter (nkb=3999,maxblks=9600) + common /c1omnotes/ nnodur,wminnh(nkb),nnpd(maxblks),durb(maxblks), + * iddot,nptr(nkb),ibarcnt,mbrest,ibarmbr, +c * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) + * ibaroff,udsp(nkb),wheadpt,sqzb(maxblks) + common /comtol/ tol +c logical gotclef + do 16 iptr = nptr(ibarcnt) , nptr(ibarcnt+1)-1 + if (abs(space-durb(iptr)) .lt. tol) then + if (abs(squez-sqzb(iptr)) .lt. tol) then +c +c Increment pre-existing entry +c + nnpd(iptr) = nnpd(iptr)+nnsk + return + end if + end if +16 continue +c +c Didn't find current duration & squez, so add a new entry. +c No particular reason to keep in order, so add at the end. +c + nnpd(nptr(ibarcnt+1)) = nnsk + durb(nptr(ibarcnt+1)) = space + sqzb(nptr(ibarcnt+1)) = squez + nptr(ibarcnt+1) = nptr(ibarcnt+1)+1 + return + end + character*1 function chax(n) +c +c The only reason for this seemingly do-nothing function is to get around an +c apparent bug in the Visual Fortran Standard Edition 5.0.A compiler! +c + chax = char(n) + return + end + subroutine checkdyn(lineq,iccount,ibar) + character*128 lineq + character*1 durq,chax + character*4 dynsymq + logical txtdyn + txtdyn = .false. +c +c On entry, iccount is on "D" +c + if (lineq(iccount+1:iccount+1) .eq. '"') then +c +c Dynamic text +c + + istart = iccount+2 ! 1 past 1st quote +3 continue + iend = index(lineq(istart:128),'"') + if (lineq(istart+iend-2:istart+iend-2) .eq. '\') then + istart = iccount+iend+2 + go to 3 + end if + if (iend .eq. 0) then + call errmsg(lineq,iccount+1,ibar, + * 'Dynamic text must be terminated with double quote!') + call stop1() + end if +c +c Set iccount to character after 2nd ", and set ipm +c +c iccount = iccount+iend+2 + iccount = istart+iend + ipm = index('- +',lineq(iccount:iccount)) + if (ipm .eq. 0) then + call errmsg(lineq,iccount,ibar, + * 'Expected "-", "+", or blank here!') + call stop1() + end if + else +c +c Expect ordinary dynamic +c + do 1 iend = iccount+2 , 128 + ipm = index('- +',lineq(iend:iend)) + if (ipm .gt. 0) go to 2 +1 continue +2 continue + if (iend-iccount.gt.5 .or. iend-iccount.lt.2) then + call errmsg(lineq,iend-1,ibar, + * 'Wrong length for dynamic mark!') + call stop1() + end if + read(lineq(iccount+1:iend-1),'(a'//chax(47+iend-iccount)//')') + * dynsymq + idno = (index( + * 'ppppppp pp p mp mf f fp sfz ff fff ffff< > ', + * dynsymq)+3)/4 + if (idno .eq. 0) then + call errmsg(lineq,iccount+1,ibar,'Illegal dynamic mark!') + call stop1() + end if + iccount = iend + end if + if (ipm .ne. 2) then +c +c There is a vertical shift, have "+" or "-" +c + iccount = iccount+1 + if (index('0123456789',lineq(iccount:iccount)) .eq. 0) then + call errmsg(lineq,iccount,ibar, + * 'Expected integer here for vertical offset!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + idno = nint(fnum) + if (idno .gt. 63) then + call errmsg(lineq,iccount-1,ibar, + * 'Vertical offset for dynamic mark must be (-63,63)!') + call stop1() + end if + ipm = index('- +',durq) + if (ipm .eq. 0) then + call errmsg(lineq,iccount,ibar, + * 'Expected "+", "-", or blank here!') + call stop1() + end if + if (ipm .ne. 2) then +c +c There is a horizontal shift +c + iccount = iccount+1 + if (index('.0123456789',lineq(iccount:iccount)) .eq. 0) then + call errmsg(lineq,iccount,ibar, + * 'Expected number here for horizontal offset!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + idno = nint(10*fnum) + if (idno .gt. 255) then + call errmsg(lineq,iccount-1,ibar, + * 'Horizontal offset for dynamic mark must be (-25.5,25.5)!') + call stop1() + else if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibar, + * 'There should be a blank here!') + call stop1() + end if + end if +c +c iccount should be on the blank at the end of the entire symbol +c + end if + return + end + subroutine chkarp(ncrd,icrdat,ivx,ip,iscacc,isarp) +c subroutine chkarp(found1,ncrd,icrdat,icrdot,ivx,ip,isacc,isarp, +c * icashft) + logical found1,iscacc,isarp,btest + integer icrdat(193) + found1 = .false. +c +c icashft will be max left shift of accid's in chord notes. +c Used only for spacing checks. +c Will include left shift of chord note itself. +c Rezero after use. +c + do 18 icrd = 1 , ncrd +c +c This if block cycles thru all chord notes on ivx,ip; then returns. +c + if (iand(255,icrdat(icrd)) .eq. ip .and. + * iand(15,ishft(icrdat(icrd),-8)) .eq. ivx) then + found1 = .true. + iscacc = iscacc .or. + * (btest(icrdat(icrd),19).and..not.btest(icrdat(icrd),27)) +c +c Accid on this chord note, and it's not midi-only. +c +c irshft = igetbits(icrdot(icrd),7,20) +cc +cc Include increment for notehead shift +cc +c if (btest(icrdat(icrd),23)) then +c if (irshft .eq. 0) then +c irshft = 44 +c else +c irshft=irshft-20 +c end if +c end if +c if (irshft .ne. 0) then +cc +cc Accid on chord note is shifted. Include only left shift, in 20ths. +cc +c if (irshft .lt. 64) icashft = max(icashft,64-irshft) +c end if +c end if + isarp = isarp .or. btest(icrdat(icrd),25) + else if (found1) then + return + end if +18 continue + return + end + subroutine chkimidi(icm) + parameter (nm=24,mv=24576) + integer*2 mmidi + logical restpend,relacc,notmain,twoline,ismidi,crdacc + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + if (imidi(icm) .ge. mv) then + print* + print*,'Midi file is too long! It will be corrupted or worse' + write(*,'(a6,2x,4i8)') + * 'imidi:',imidi(0),imidi(1),imidi(2),imidi(3) + end if + return + end + subroutine chkkbdrests(ip,iv,ivx,nn,islur,irest,nolev,ivmx, +c * nib,nv,ibar,tnow,tol,nodur,mode,levtopr,levbotr,mult) + * nib,nv,ibar,tnow,tol,nodur,mode,levtopr,levbotr,mult,ipl) + parameter (nm=24) + integer*4 nn(nm),islur(nm,200),irest(nm,200), + * nolev(nm,200),nib(nm,15),nodur(nm,200),levbotr(8),levtopr(8), + * ivmx(nm,2),mult(nm,200),ipl(nm,200) +c +c On 130127 put this code, formerly in make2bar right before calling notex for +c a single note/rest, into this subroutine, so the same logic could also be +c with the calls to beamstrt/mid/end to adjust height of rests in xtups if the +c keyboard rest option is selected +c +c mode=1 if called as before, 2 if for an xtup. Only affects check for +c quarter rests, which will fix later. +c +c Get reference level: next following note if no intervening blank rests, +c otherwise next prior note. Relative to bottom line. +c +c if (ip.ne.nn(ivx).and..not.btest(iornq(ivx,ip),30)) then + if (ip.ne.nn(ivx).and..not.btest(ipl(ivx,ip),1)) then +c +c Not the last note and not "look-left" for level +c + do 8 kkp = ip+1 , nn(ivx) + if (btest(islur(ivx,kkp),29)) go to 4 + if (.not.btest(irest(ivx,kkp),0)) then + levnext = nolev(ivx,kkp)-ncmid(iv,kkp)+4 ! Relative to bottom line + go to 9 + end if +8 continue + end if +4 continue +c +c If here, there were no following notes or came to a blank rest, or +c "look-left" option set. So look before +c +c if (ip .eq. 1) go to 2 ! Get out if this is the first note. + if (ip .eq. 1) return ! Get out if this is the first note. + do 3 kkp = ip-1, 1, -1 + if (.not.btest(irest(ivx,kkp),0)) then + levnext = nolev(ivx,kkp)-ncmid(iv,kkp)+4 ! Relative to bottom line + go to 9 + end if +3 continue +c go to 2 ! Pretty odd, should never be here, but get out if so. + return ! Pretty odd, should never be here, but get out if so. +9 continue +c +c Find note in other voice at same time +c + iupdown = sign(1,ivx-nv-1) + ivother = ivmx(iv,(3-iupdown)/2) + tother = 0. + do 5 kkp = 1 , nib(ivother,ibar) + if (abs(tother-tnow) .lt. tol) go to 6 + tother = tother+nodur(ivother,kkp) +5 continue +c +c If here, then no note starts in other voice at same time, so set default +c + levother = -iupdown*50 + go to 7 +6 continue +c +c If here, have just identified a simultaneous note or rest in other voice +c + if (.not.btest(irest(ivother,kkp),0)) then ! Not a rest, use it + levother = nolev(ivother,kkp)-ncmid(iv,ip)+4 + else + if (nodur(ivother,kkp) .eq. nodur(ivx,ip)) then +c +c Rest in other voice has same duration, get out (so defualt spacing is used) +c +c go to 2 + return + end if + levother = -iupdown*50 + end if +7 continue + if (mode.eq.1) then + indxr = log2(nodur(ivx,ip))+1 + else +c nodu = 2**(4-(iand(mult(ivx,ip),15)-8)) + indxr = 4-(iand(mult(ivx,ip),15)-8)+1 + end if + if (iupdown .lt. 0) then + levtop = levtopr(indxr) + iraise1 = levother-levtop-3 ! Based on other note + iraise2 = levnext-levtop ! Based on following note + if (indxr.eq.5 .and. levnext.lt.1) iraise2=iraise2+2 + iraise = min(iraise1,iraise2) + if (mod(iraise+50,2).eq.1 .and. + * iraise+levtop.gt.-1) iraise = iraise-1 + else + levbot = levbotr(indxr) + iraise1 = levother-levbot+3 + iraise2 = levnext-levbot + if (indxr.eq.5 .and. levnext.gt.8) iraise2=iraise2-1 + iraise = max(iraise1,iraise2) + if (mod(iraise+50,2).eq.1 .and. + * iraise+levbot.le.9) iraise = iraise-1 + end if + nolev(ivx,ip) = 100+iraise + return + end + subroutine chklit(lineq,iccount,literr) + character*128 lineq + character*1 charq,chax + literr = 0 + itype = 1 +17 call g1etchar(lineq,iccount,charq) + if (charq .eq. chax(92)) then + itype = itype+1 + if (itype .gt. 3) then + literr = 1 + return + end if + go to 17 + end if + lenlit = itype +18 call g1etchar(lineq,iccount,charq) + if (charq.eq.chax(92)) then + call g1etchar(lineq,iccount,charq) + if (charq .ne. ' ') then +c +c Starting a new tex command withing the string +c + lenlit = lenlit+2 + if (lenlit .gt. 128) then + literr = 2 + return + end if + go to 18 + end if + else + lenlit = lenlit+1 + if (lenlit .gt. 128) then + literr = 2 + return + end if + go to 18 + end if + return + end + subroutine chkpm4ac(lineq,iccount,nacc,moved) +c +c Called after getting +/-/ in a note (not rest). iccount is on the +-<>. +c Sets moved=.true. and sets move parameters in nacc if necc: horiz only (bits +c 10-16) if < or >, horiz and vert (bits 4-9) if two consecutive signed +c numbers. If moved=.true., iccount on exit is on end of last number. +c If moved=.false., iccount still on +/- +c + logical moved,ishorz + character*128 lineq + character*1 durq + if (index('sfnA',lineq(iccount-1:iccount-1)).gt.0 .and. + * index('0123456789.',lineq(iccount+1:iccount+1)).gt.0) then +c +c Prior char was accid & next is #; this may be start of accidental shift. +c Must test for "." above in case we get "<" or ">" +c + ipm = index('- +< >',lineq(iccount:iccount))-2 + if (lineq(iccount+1:iccount+1).eq.'.' .and. + * index('0123456789',lineq(iccount+2:iccount+2)).eq.0) then +c +c Rare case of [accid][+/-].[letter]. Bail out +c + moved = .false. + return + end if + ishorz = ipm .gt. 1 +c +c Save iccount in case it's not accid shift and we have to reset. +c + icsav = iccount + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + if (ishorz .or. index('+-',durq).gt.0) then +c +c This has to be accidental shift. Set vert. shift. +c + if (.not.ishorz) then +c +c +/- syntax, both shifts set, vertical first +c + call setbits(nacc,6,4,int(ipm*fnum+32.5)) + ipm = index('- +',durq)-2 + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + else +c +c syntax, only horiz set +c + ipm = ipm-3 + end if +c +c Set horiz. shift +c + call setbits(nacc,7,10,nint(20*(ipm*fnum+5.35))) + iccount = iccount-1 + moved = .true. + else +c +c False alarm. Reset everything and flow onward +c + moved = .false. + iccount = icsav + end if + else +c +c Either prior char was not 'sfn' or next was not digit, so take no action +c + moved = .false. + end if + return + end + subroutine clefsym(isl,notexq,lnote,nclef) +c +c Returns string calling Don's TeX macro \pmxclef, for drawing small clefs. +c + character*(*) notexq + character*1 chax + nclef = iand(ishft(isl,-12),7) + if (nclef .eq. 0) then +c +c treble +c + nlev = 2 + else if (nclef .gt. 6) then +c +c French violin +c + nlev = 0 + else if (nclef .lt. 5) then +c +c C-clef +c + nlev = 2*nclef-2 + else +c +c F-clef +c + nlev = 2*nclef-6 + end if + notexq = chax(92)//'pmxclef'//chax(48+min(nclef,7)) + * //chax(48+nlev) + lnote = 10 + return + end + subroutine crdacc(nacc,naccid,micrd,nolevm,rmsshift,lasttime, + * levmaxacc,icrdot0,segrb0,ksegrb0,nsegrb0,twooftwo,icashft) +c +c nacc = accidental bitmap for main note +c naccid = # of accid's in chord +c micrd = array with icrd #'s for notes w/ acc's, 0=>main note +c nolevm = level of main note +c segrb(1|2,.) x|y-coord of right-bdry segment +c ksegrb(.) internal use; tells what defined this segment +c -2: Left-shifted notehead +c -1: Original right boundary +c 0: Main note accidental +c icrd: Chord-note accidental +c isetshft(i),i=1,naccid: what set shift for this accid, same codes +c icrdot0 = top-down level-rank of main note among accid-notes +c icrdot(icrd)(27-29) = level rank of chord-note among accid-notes +c twooftwo will be true 2nd time thru; signal to store shifts w/ notes +c + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + real*4 segar(5,2,6),segal(5,2,6),segrb(2,50),segrb0(2,50) + integer*4 nsegar(5),nsegal(5),micrd(10),iacctbl(6),ksegrb(50), + * isetshft(10),ksegrb0(50) + logical lasttime,mainnote,twooftwo + data nsegar / 3,4,3,3,2 /, nsegal / 2,4,3,3,2 / + data segar / +c +c Fancy sharp boundary. fl,sh,na,dfl,dsh +c + * -0.05,-0.38,-0.34,-.05, -.15,-1.4,-2.9,-3.0, -1.4, -1.2, +c * -0.75,-0.20,-0.80, 0. , 0. , .96,-1.04,1.6, 0. , 0. , +c meas value for y, natural is 1.6 + * -0.75,-0.20,-0.80,-.75, 0. , .96,-1.04,1.48, .96, 1.2, + * 0.00,-0.38, 0.00, 0. , 0. ,3.15, 1.64,3.0, 3.15, 0. , + * 0. , 0.00, 0. , 0. , 0. , 0. , 2.90, 0. , 0. , 0. , + * 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , + * 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. / + data segal / +c * 0.00, 0.00,-1.04, 0. , 0. ,3.15, 2.9,-1.6, 0. , 0. , +cc (meas. value is 3.08) ^^^^ +cc Raise top of flat so it interferes with bottom of sharp + * -1.00,-1.02,-0.60,-1.65, -1.2,-1.4,-2.9, -3.0, -1.4, -1.2, + * 0.00,-1.20,-1.04, 0. , 0. ,3.15,-1.64,-1.48,3.15, 1.2, + * 0. ,-1.02, 0.00, 0. , 0. , 0. , 1.04, 3.0, 0. , 0. , + * 0. , 0.00, 0. , 0. , 0. , 0. , 2.9 , 0. , 0. , 0. , + * 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , + * 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. / +c +c iacctbl(i) = internal accid # (1-5) when i=extern accid # (1,2,3,5,6) +c + data iacctbl / 1 , 2 , 3 , 0 , 4 , 5 / +c +c Set up barrier segrb(iseg,ipoint) to define coords of corner points +c on stem+notes +c + do 11 iseg = 1 , nsegrb0 + segrb(1,iseg) = segrb0(1,iseg) + segrb(2,iseg) = segrb0(2,iseg) + ksegrb(iseg) = ksegrb0(iseg) +11 continue + nsegrb = nsegrb0 + rmsshift = 0. + shiftmin = 1000. + do 1 iwa = 1 , naccid +c +c Initialize shift for this note +c + shift = 0. + mainnote = micrd(iwa).eq.0 + isetshft(iwa) = -1 +c +c Get note level and accidental type +c + if (mainnote) then + nolev = nolevm + iacctype = iacctbl(igetbits(nacc,3,0)) + else + nolev = igetbits(icrdat(micrd(iwa)),7,12) + iacctype = iacctbl(igetbits(icrdat(micrd(iwa)),3,20)) + end if +c +c Cycle thru segments on right edge of this accidental +c + do 2 isega = 1 , nsegar(iacctype)-1 + ybotaseg = nolev+segar(iacctype,2,isega) + ytopaseg = nolev+segar(iacctype,2,isega+1) +c +c Cycle thru segments of right-hand barrier +c + do 3 isegrb = 1 , nsegrb-1 +c +c Must find all barrier segments that start below ytopseg & end above ybotseg +c + if (segrb(2,isegrb) .lt. ytopaseg) then +c +c Barrier seg starts below top of accid +c Check if barrier seg ends above bottom of accid +c + if (segrb(2,isegrb+1) .gt. ybotaseg) then + if (shift .gt. + * segrb(1,isegrb)-segar(iacctype,1,isega)) then + shift = segrb(1,isegrb)-segar(iacctype,1,isega) +c +c Record the cause of the shift +c + isetshft(iwa) = ksegrb(isegrb) + end if + end if +c +c Does barrier segment end above top of accid seg? +c + if (segrb(2,isegrb+1) .gt. ytopaseg) go to 4 + end if +3 continue +4 continue +2 continue + if (.not.btest(nacc,28) .and. abs(shift).gt.0.0001 + * .and. .not.lasttime) then +c if (nolev .eq. levmaxacc) then + if (nolev.eq.levmaxacc .and. isetshft(iwa).eq.-1) then + rmsshift = 1000. + return + end if +c +c Does the following properly account for left-shifted noteheads? +c +c Top-down rank of this note we just shifted +c + if (mainnote) then + irank = icrdot0 + else + irank = igetbits(icrdot(micrd(iwa)),3,27) + end if +c +c Compare level-rank of this note vs. that of note that caused the shift. +c This has effect of checking for basic interferences from top down. +c +c ksegrb(.) internal use; tells what defined this segment +c -2: Left-shifted notehead +c -1: Original right boundary +c 0: Main note accidental +c icrd: Chord-note accidental +c isetshft(i),i=1,naccid: what set shift for this accid, same codes +c + if (isetshft(iwa) .lt. 0) then + iranksetter = 0 + else if (isetshft(iwa) .eq. 0) then + iranksetter = icrdot0 + else + iranksetter = igetbits(icrdot(isetshft(iwa)),3,27) + end if + if (iranksetter.ne.0 .and. irank.ne.iranksetter+1) then + rmsshift = 1000. + return + end if + end if + rmsshift = rmsshift+shift**2 + if (lasttime .and. abs(shift).gt..0001) then + if (mainnote) then + if (.not.btest(nacc,29)) go to 10 + else + if (.not.btest(icrdat(micrd(iwa)),29)) go to 10 + end if +c +c If here, "A" was set on a manual shift, so must cumulate the shift. Note that if there +c was a manual shift but auto-shift was zero, will not come thru here, but shift value +c will be left intact. +c + if (mainnote) then + shift = shift+.05*(igetbits(nacc,7,10)-107) + else + shift = shift+.05*(igetbits(icrdot(micrd(iwa)),7,20)-107) + end if +10 continue + if (twooftwo) then +c +c Record the shift for this accidental +c + if (shift .lt. -5.35) then + call printl(' ') + call printl('WARNING: auto-generated accidental '// + * 'shift too big for PMX, ignoring') + else + ishift = nint(20*(shift+5.35)) + if (mainnote) then + call setbits(nacc,7,10,ishift) + else + call setbits(icrdot(micrd(iwa)),7,20,ishift) + end if + end if + else +c +c This is the earlier call to precrd, so need minimum shift +c + shiftmin = min(shiftmin,shift) + end if + end if +c +c Bail out if this is the last accidental to check +c + if (iwa .eq. naccid) go to 1 +c +c Add this accidental to the right barrier! Count down from highest barrier segment, +c find 1st one starting below top of accid, and first one starting below bot. +c + do 5 ibelowtop = nsegrb , 1 , -1 + if (segrb(2,ibelowtop) .lt. + * nolev+segal(iacctype,2,nsegal(iacctype))) then + do 9 ibelowbot = ibelowtop , 1 , -1 + if (segrb(2,ibelowbot) .lt. + * nolev+segal(iacctype,2,1)) go to 6 +9 continue + print*,'Oops2!' + call stop1() + end if +5 continue + print*,'Ugh0! in crdaccs' + call stop1() +6 continue + netgain = nsegal(iacctype)-ibelowtop+ibelowbot +c +c Shift high segments up +c + if (netgain .ge. 0) then + do 7 isegrb = nsegrb , ibelowtop+1 , -1 + segrb(1,isegrb+netgain) = segrb(1,isegrb) + segrb(2,isegrb+netgain) = segrb(2,isegrb) + ksegrb(isegrb+netgain) = ksegrb(isegrb) +7 continue +c +c Set up 1st segment above accid +c + segrb(1,ibelowtop+netgain) = segrb(1,ibelowtop) + segrb(2,ibelowtop+netgain) = + * nolev+segal(iacctype,2,nsegal(iacctype)) + ksegrb(ibelowtop+netgain) = ksegrb(ibelowtop) + else +c +c netgain<0, must remove segments. Use same coding but reverse order, +c work from bottom up +c + segrb(1,ibelowtop+netgain) = segrb(1,ibelowtop) + segrb(2,ibelowtop+netgain) = + * nolev+segal(iacctype,2,nsegal(iacctype)) + ksegrb(ibelowtop+netgain) = ksegrb(ibelowtop) + do 12 isegrb = ibelowtop+1 , nsegrb + segrb(1,isegrb+netgain) = segrb(1,isegrb) + segrb(2,isegrb+netgain) = segrb(2,isegrb) + ksegrb(isegrb+netgain) = ksegrb(isegrb) +12 continue + end if +c +c Insert new segments +c + do 8 isega = 1 , nsegal(iacctype)-1 + segrb(1,ibelowbot+isega) = shift+segal(iacctype,1,isega) + segrb(2,ibelowbot+isega) = nolev+segal(iacctype,2,isega) + if (mainnote) then + ksegrb(ibelowbot+isega) = 0 + else + ksegrb(ibelowbot+isega) = micrd(iwa) + end if +8 continue +c +c Update number of barrier segments +c + nsegrb = nsegrb+netgain +cc +cc Temporary printout for boundary segments as built up +cc +c write(15,'()') +c write(15,'(a/(2f8.2,i5))')' y x kseg', +c * (segrb(2,iseg),segrb(1,iseg),ksegrb(iseg),iseg=1,nsegrb) +c write(15,'(a/(2i5))')' micrd isetshft', +c * (micrd(iwa1),isetshft(iwa1),iwa1=1,iwa) +cc +1 continue ! next accidental + if (lasttime .and. .not.twooftwo) then +c +c This is the final call on the pre-ask pass, so compute left-shift rqmt. +c + icashft = nint(-20*shiftmin) + end if +cc +cc Temporary printout for boundary segments +cc +c if (twooftwo) then +c write(15,'()') +c write(15,'(a/(2f8.2,i5))')' y x kseg', +c * (segrb(2,iseg),segrb(1,iseg),ksegrb(iseg),iseg=1,nsegrb) +c write(15,'(a/(2i5))')' micrd isetshft', +c * (micrd(iwa),isetshft(iwa),iwa=1,naccid) +c end if +cc + return + end + subroutine crdaccs(nacc,ipl,irest,naccid,kicrd,nolevm, + * levmaxacc,levminacc,icrdot0,twooftwo,icashft) +c +c nacc = accidental bitmap for main note +c naccid = # of accid's in chord +c kicrd = array with icrd #'s for notes w/ acc's, 0=>main note +c nolevm = level of main note +c +c This is called once per multi-accidental chord. In here, loop over all +c permutations of the order of accidental as stored in kicrd. Each time thru +c loop, call crdacc once, get rms shift. Only save permutation and rms value +c if it is less than old value. +c + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 +c +c Make consistent? 120106 +c integer*4 kicrd(7),iperm(7),micrd(10),ipermsav(7),ksegrb0(50) + integer*4 kicrd(10),iperm(7),micrd(10),ipermsav(7),ksegrb0(50) + real*4 segrb0(2,50) + logical btest,tagged,manual,lshift,twooftwo +cc +cc Temporary printout of level-rankings +cc +c write(15,'()') +c do 98 iacc = 1 , naccid +c if (kicrd(iacc) .eq. 0) then +c write(15,'(3i5)')nolevm,icrdot0 +c else +c write(15,'(2i5)')igetbits(icrdat(kicrd(iacc)),7,12), +c * igetbits(icrdot(kicrd(iacc)),3,27) +c end if +c98 continue +cc +c +c Initialize right-barrier +c + segrb0(1,1) = 0. + segrb0(2,1) = -1000. + segrb0(1,2) = 0. + segrb0(2,2) = 1000. + nsegrb0 = 2 + ksegrb0(1) = -1 + ksegrb0(2) = -1 +c +c Search for left-shifted notes, Make up the initial right-barrier, which +c will be good for all permutations. +c irest()(27) is set if any notes are left-shifted +c Must use ALL chord notes, not just ones w/ accid's. +c + if (btest(irest,27)) then + do 15 icrd = icrd1-1, icrd2 + if (icrd .eq. icrd1-1) then +c +c Main note +c +c lshift = btest(ipl,8) + lshift = btest(ipl,8) .or. btest(nacc,31) + if (lshift) nolev = nolevm + else +c +c Chord note +c + lshift = btest(icrdat(icrd),23) +c if (lshift) nolev = igetbits(icrdat(icrd),7,12) + if (lshift) then + nolev = igetbits(icrdat(icrd),7,12) + if (btest(nacc,31) .and. nolev.eq.nolevm+1) then +c +c This note is not really shifted, It is the upper of a 2nd with the main +c note on an upstem, and Main note must be shifted. +c nacc(31) signals the real truth. +c + lshift = .false. + end if + end if + end if + if (lshift) then + do 16 isegrb = 1 , nsegrb0-1 + if (segrb0(2,isegrb+1) .gt. nolev-1) then +c +c Add this notehead to the right boundary here. Move all higher segs up 2. +c + do 17 iiseg = nsegrb0 , isegrb+1 , -1 + segrb0(1,iiseg+2) = segrb0(1,iiseg) + segrb0(2,iiseg+2) = segrb0(2,iiseg) + ksegrb0(iiseg+2) = ksegrb0(iiseg) +17 continue + go to 18 + end if +16 continue +18 continue +c +c Insert notehead into list. Set kseg=-2 to signal notehead shift. +c + iiseg = isegrb+1 + segrb0(1,iiseg) = -1.2 + segrb0(2,iiseg) = nolev-1. + ksegrb0(iiseg) = -2 + segrb0(1,iiseg+1) = 0. + segrb0(2,iiseg+1) = nolev+1. + ksegrb0(iiseg+1) = -1 + nsegrb0 = nsegrb0+2 + end if +15 continue + end if +c +c Done setting right barrier for left-shifted noteheads +c + tagged = .false. + manual = .false. +c +c Preprocess to check for manual shifts. +c If are manual main [nacc(10-16)] or chord note [icrdot(20-26)]shifts, then +c If any manual shift is preceded by "A" [nacc(29), icrdat(29)] then +c 1. Auto-shifting proceeds +c 2. "A"-shifts add to autoshifts +c 3. non-"A" shifts are ignored! +c Else (>0 man shifts, none has "A") +c No auto-ordering, No autoshifts, Observe all manual shifts. +c End if +c End if +c + maxmanshft = 0 + do 13 i = 1 , naccid + if (kicrd(i) .eq. 0) then +c +c Main note +c + manshft = igetbits(nacc,7,10) + if (manshft .ne. 0) then + manual = .true. + if (btest(nacc,29)) then + tagged = .true. + else +c maxmanshft = max(maxmanshft,64-manshft) + maxmanshft = max(maxmanshft,107-manshft) + end if + end if + else +c +c Chord note +c + manshft = igetbits(icrdot(kicrd(i)),7,20) + if (manshft .ne. 0) then + manual = .true. + if (btest(icrdat(kicrd(i)),29)) then + tagged = .true. + else +c maxmanshft = max(maxmanshft,64-manshft) + maxmanshft = max(maxmanshft,107-manshft) + end if + end if + end if +13 continue + if (manual) then + if (tagged) then +c +c zero out all untagged shifts +c + do 14 i = 1 , naccid + if (kicrd(i) .eq. 0) then + if (.not.btest(nacc,29)) call setbits (nacc,7,10,0) + else + if (.not.btest(icrdat(kicrd(i)),29)) + * call setbits (icrdot(kicrd(i)),7,20,0) + end if +14 continue + else +c +c There are manual shifts but none tagged. Only proceed if "Ao" was entered +c + if (.not.btest(nacc,28)) then + icashft = maxmanshft + return + end if + end if + end if + if (btest(nacc,28)) then +c +c Take the accidentals in order as originally input, then exit. +c + call crdacc(nacc,naccid,kicrd,nolevm,rmsshift,.true., + * idummy,idummy,segrb0,ksegrb0,nsegrb0,twooftwo,icashft) + return +c end if + else if (naccid .eq. 3) then +c +c Special treatment if 3 accidentals in chord. If there aren't accids on a 2nd +c then place in order top, bottom, middle. +c + do 20 i = 1 , 3 + if (kicrd(i) .eq. 0) then + irank = icrdot0 + nolev = nolevm + else + irank = igetbits(icrdot(kicrd(i)),3,27) + nolev = igetbits(icrdat(kicrd(i)),7,12) + end if + if (irank .eq. 1 ) then + micrd(1) = kicrd(i) + else + micrd(5-irank) = kicrd(i) + end if + if (irank .eq. 2) then + levmidacc = nolev + end if +20 continue + if (levmaxacc.ne.levmidacc+1 .and. + * levmidacc.ne.levminacc+1) then + call crdacc(nacc,naccid,micrd,nolevm,rmsshift,.true., + * idummy,idummy,segrb0,ksegrb0,nsegrb0,twooftwo,icashft) + return + end if + end if + rmsmin = 100000. +c +c Initialize permutation array +c + do 7 i = 1 , naccid + iperm(i) = i +7 continue +c +c Start looping over permutations +c + do 8 ip = 1 , 5041 + if (ip .ne. 1) then +c +c Work the magic algorithm to get the next permutation +c + do 1 k = naccid-1 , 1 , -1 + if (iperm(k) .le. iperm(k+1)) go to 2 +1 continue +c +c If here, we just got the last permutation, so exit the loop over permutations +c + go to 10 +2 continue + do 3 j = naccid , 1 , -1 + if (iperm(k) .le. iperm(j)) go to 4 +3 continue +4 continue + it = iperm(j) + iperm(j) = iperm(k) + iperm(k) = it + is = k+1 + do 5 ir = naccid , 1 , -1 + if (ir .le. is) go to 6 + it = iperm(ir) + iperm(ir) = iperm(is) + iperm(is) = it + is = is+1 +5 continue +6 continue + end if +c +c New we have a permutation. Take icrd values out of kicrd and put them into +c micrd in the order of the permutation +c + do 9 i = 1 , naccid + micrd(i) = kicrd(iperm(i)) +9 continue +cc +cc Temporary printout +cc +c write(15,'(/a6,10i3)')'perm:',(iperm(i),i=1,naccid) +cc + call crdacc(nacc,naccid,micrd,nolevm,rmsshift,.false., + * levmaxacc,icrdot0,segrb0,ksegrb0,nsegrb0,twooftwo,icashft) +cc +cc Temporary printout +cc +c write(15,*)'perm done, rmsshift:',rmsshift +cc + if (rmsshift .lt. rmsmin) then +c +c Save this permutation, reset minrms +c + do 11 i = 1 , naccid + ipermsav(i) = iperm(i) + rmsmin = rmsshift +11 continue + end if +8 continue + print*,'Should not BEEEEEE here!' + call stop1() +10 continue +c +c Done looping, get info for the final choice +c + do 12 i = 1 , naccid + micrd(i) = kicrd(ipermsav(i)) +12 continue +cc +cc Temporary printout +cc +c write(15,'(/a6,10i3)')'Final perm:',(ipermsav(i),i=1,naccid) +cc + call crdacc(nacc,naccid,micrd,nolevm,rmsshift,.true., + * idummy,idummy,segrb0,ksegrb0,nsegrb0,twooftwo,icashft) + return + end + subroutine doacc(ihshft,ivshft,notexq,lnote,nacc,nolev,ncm,caut) + character*1 sq,chax + character*3 acsymq + character*8 noteq + character*79 notexq + logical btest,caut + sq = chax(92) + if (ihshft .eq. -107) ihshft=0 +cc +cc If main note shifted left, so shift accid. Terminate below, when acc. is done. +cc + if (ihshft .ne. 0) then +c +c Accid must be shifted horizontally +c + if (ihshft .lt. 0) then + notexq = sq//'loffset{' + ihshft = -ihshft + else + notexq = sq//'roffset{' + end if + hshft = .05*ihshft + if (hshft .lt. 1.) then + write(notexq(10:12),'(f3.2)')hshft + lnote = 12 + else + write(notexq(10:13),'(f4.2)')hshft + lnote = 13 + end if + notexq = notexq(1:lnote)//'}{'//sq + lnote = lnote+3 + else + notexq = sq + lnote = 1 + end if + if (btest(nacc,3)) then + notexq = notexq(1:lnote)//'big' + lnote = lnote+3 + end if + if (caut) then +c +c Cautionary accidental. Need to define bigcna,... in pmx.tex +c + notexq = notexq(1:lnote)//'c' + lnote = lnote+1 + end if + call accsym(nacc,acsymq,lacc) + notexq = notexq(1:lnote)//acsymq(1:lacc) + lnote = lnote+lacc + noleva = nolev + if (ivshft .ne. 0) noleva = noleva+ivshft-32 + call notefq(noteq,lnoten,noleva,ncm) + if (lnoten .eq. 1) call addblank(noteq,lnoten) + notexq = notexq(1:lnote)//noteq(1:lnoten) + lnote = lnote+lnoten + if (ihshft .ne. 0) then +c +c Terminate horizontal shift +c + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + end if + return + end + subroutine docrd(ivx,ip,nodu,ncm,iv,tnow,soutq,lsout,ulq,ibmcnt, + * islur,nvmx,nv,beamon,nolevm,ihornb,nornb,stemlen, + * dotxtup,nacc,irest) + parameter (nm=24,mv=24576) + integer*4 irest(nm,24) + common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), + * xinsnow,lowdot + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, + * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, + * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, + * rtshfac + integer*2 mmidi,iinsiv + logical restpend,relacc,notmain,twoline,ismidi,crdacc + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + logical lowdot,dotxtup + integer*4 ihornb(nm,24),nornb(nm) + character*1 ulq(nm,9),chax + character*7 nosymq + character*8 noteq + character*79 notexq,outq + character*80 soutq + logical btest,isleft,isright,beamon + character*79 inameq + common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, + * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, + * lnam(nm),inameq(nm) + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans + common /commidisig/ midisig + common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) + * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) + common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), + * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) +c +c This subr. once produced notexq for entire chord. 10/18/97 altered to write +c chord notes as we go. 10/22/97 find range of icrd first. +c 2/25/98 moved rangefinding to precrd so done before slurs, so now +c on entry, icrd1, icrd2 define range of icrd for this chord. +c +c Set counter (for this note) for chord notes present. Set notmain=T. +c Will test for notmain=.true. in addmidi to tell whether to save pitch. +c + nmidcrd = 0 + notmain = .true. + crdacc = .false. + do 5 icrd = icrd1 , icrd2 + lnote = 0 + nolev = igetbits(icrdat(icrd),7,12) +c +c 3/8/03 save original pitch to use in midi, in case 2nds alter things. +c + nolevo = nolev +c +c Check for special situations with 2nds (see precrd). +c + if (btest(nacc,30) .and. nolev.eq.nolevm-1) then +c +c Upstem, 2nd with upper as main, interchange pitches, +c rt-shift upper (now chord note). Lower (orig chord, now main) +c if dotted, probably had shifted dot, dot parameters must be moved +c from chord to main +c + nolev = nolevm + if (btest(icrdat(icrd),26)) then +c +c Orig. chord note dot shift, must transfer to main. +c + icrdotsav = icrdot(icrd) + icrdatsav = icrdat(icrd) + if (btest(irest(ivx,ip),19)) then +c +c Main note (upper) had a dot shift, must move it to chord +c + call setbits(icrdat(icrd),1,26,1) + call setbits(icrdot(icrd),7,0, + * nint(updot(ivx,ndotmv(ivx)+1)*10)+64) + call setbits(icrdot(icrd),7,7, + * nint(rtdot(ivx,ndotmv(ivx)+1)*10)+64) +c +c May need to worry about other chord params (accid shefts etc) later +c + else + icrdat(icrd) = ibclr(icrdat(icrd),26) + end if +c +c We are adding a main note dot shift, so push any later ones back +c + + if (.not.btest(irest(ivx,ip),19)) then + maxdotmv(ivx) = maxdotmv(ivx)+1 + do 1 indm = maxdotmv(ivx) , ndotmv(ivx)+2 , -1 + updot(ivx,indm) = updot(ivx,indm-1) + rtdot(ivx,indm) = rtdot(ivx,indm-1) +1 continue + end if + irest(ivx,ip) = ibset(irest(ivx,ip),19) + updot(ivx,ndotmv(ivx)+1) = 0.1*(iand(127,icrdotsav)-64) + rtdot(ivx,ndotmv(ivx)+1) = + * 0.1*(iand(127,ishft(icrdotsav,-7))-64) + end if + else if (btest(nacc,31) .and. nolev.eq.nolevm+1) then +c +c Downstem, 2nd with lower as main, interchange pitches, +c left-shift lower (now chord note). Lower (orig main, now chord) +c probably had shifted dot, dot parameters must be moved from +c main to chord +c + nolev = nolevm + if (btest(irest(ivx,ip),19)) then + icrdotsav = icrdot(icrd) + icrdatsav = icrdat(icrd) + icrdat(icrd) = ibset(icrdat(icrd),26) +c bits in icrdot +c 0-6 10*abs(vertical dot shift in \internote) + 64 +c 7-13 10*abs(horizontal dot shift in \internote) + 64 +c Assuming >0 for now! + call setbits(icrdot(icrd),7,0, + * nint(updot(ivx,ndotmv(ivx)+1)*10)+64) + call setbits(icrdot(icrd),7,7, + * nint(rtdot(ivx,ndotmv(ivx)+1)*10)+64) +c +c Must also set dot shift for (now) main note (orig. chord note). +c + if (btest(icrdatsav,26)) then + updot(ivx,ndotmv(ivx)+1) = 0.1*(iand(127,icrdotsav)-64) + rtdot(ivx,ndotmv(ivx)+1) = + * 0.1*(iand(127,ishft(icrdotsav,-7))-64) + else +c +c No dot move on original chord (now main) note, +c + updot(ivx,ndotmv(ivx)+1) = 0. + rtdot(ivx,ndotmv(ivx)+1) = 0. + end if + end if + end if +c +c Lower dot for lower-voice notes?. Conditions are: +c 1. Dotted time value +c 2. Lower voice of two +c 3. Note is on a line +c 4. Not a rest (cannot be a rest in a chord!) +c. 5. Flag (lowdot) is set to true +c + if (lowdot .and. nvmx.eq.2 .and. ivx.le.nv) then + if (2**log2(nodu).ne.nodu .and. mod(nolev-ncm,2).eq.0) then + if (btest(icrdat(icrd),26)) then +c +c Note already in movdot list. Drop by 2. +c + call setbits(icrdot(icrd),7,0, + * igetbits(icrdot(icrd),7,0)-20) + else +c +c Not in list so just move it right now +c + call dotmov(-2.,0.,soutq,lsout,igetbits(islur,1,3)) + end if + end if + end if + if (btest(icrdat(icrd),26)) then +c +c Move the dot. Basic call for chord notes, not main note. +c + updotc = 0.1*(iand(127,icrdot(icrd))-64) + rtdotc = 0.1*(iand(127,ishft(icrdot(icrd),-7))-64) + call dotmov(updotc,rtdotc,soutq,lsout,igetbits(islur,1,3)) + end if + isleft = btest(icrdat(icrd),23) + isright = btest(icrdat(icrd),24) +c +c Check for ornament in chord. +c + if (icrdorn(icrd) .gt. 0) then + call putorn(icrdorn(icrd),nolev,nolevm,nodu,nornb,ulq, + * ibmcnt,ivx,ncm,islur,nvmx,nv,ihornb,stemlen,outq,lout, + * ip,0,beamon,.true.) + call addstr(outq,lout,soutq,lsout) + end if +c +c Chord-note symbol. First check for breve +c + if (nodu .eq. 128) then + nosymq = chax(92)//'zbreve' + lsym = 7 + else +c +c Not a breve chord. Get first letters in chord-note symbol +c + if (isleft) then + nosymq = chax(92)//'l' + else if (isright) then + nosymq = chax(92)//'r' + else + nosymq = chax(92)//'z' + end if + if (nodu .ge. 64) then + nosymq = nosymq(1:2)//'w' + else if (nodu .ge. 32) then + nosymq = nosymq(1:2)//'h' + else + nosymq = nosymq(1:2)//'q' + end if + if (2**log2(nodu).eq.nodu .and. .not.dotxtup) then + lsym = 3 + else if (.not.btest(islur,3) .or. dotxtup) then +c +c Single dot +c + nosymq = nosymq(1:3)//'p' + lsym = 4 + else +c +c Double dot +c + nosymq = nosymq(1:3)//'pp' + lsym = 5 + end if + end if + if (btest(icrdat(icrd),19).and..not.btest(icrdat(icrd),27)) then +c +c Accidental and not MIDI-only. Build up bits 0-3 of nacc +c + nactmp = igetbits(icrdat(icrd),3,20) +c +c Kluge for bigness. Only means 'As' has not been issued +c + if (bacfac .ne. 1.e6) nactmp = nactmp+8 + call doacc(igetbits(icrdot(icrd),7,20)-107, + * igetbits(icrdot(icrd),6,14), +c * notexq,lnote,nactmp,nolev,ncmid(iv,ip)) +c Get original nolev, not altered to deal with 2nds + * notexq,lnote,nactmp,igetbits(icrdat(icrd),7,12), +c * ncmid(iv,ip)) + * ncmid(iv,ip),btest(icrdat(icrd),31)) + notexq = notexq(1:lnote)//nosymq + crdacc = .true. + else + notexq = nosymq + end if + lnote = lnote+lsym +c +c Get note name (again if accid, due to possible octave jump) +c + call notefq(noteq,lnoten,nolev,ncm) + if (lnoten.eq.1) call addblank(noteq,lnoten) +c +c Put in note name +c + notexq = notexq(1:lnote)//noteq + lnote = lnote+lnoten + if (btest(icrdat(icrd),25)) then +c +c Arpeggio signal +c + call putarp(tnow,ivx,ip,nolev,ncm,soutq,lsout) + end if + call addstr(notexq,lnote,soutq,lsout) + if (ismidi) then +c +c Here is where we collect MIDI pitch info for the chord note. By checking +c notmain, addmidi(...) knows to just compute the +c pitch number and store it in mcpitch(nmidcrd). Then on call to addmidi() +c for MAIN note, will put in note codes for all chord notes + main note. +c + kv = 1 + if (ivx .gt. iv) kv=2 + nmidcrd = nmidcrd+1 + if (nmidcrd .gt. 20) then + print* + print*,'21 chord notes is too many for midi processor' + call stop1() + end if +c +c Use original saved pitch level, unaltered by 2nds logic. +c + call addmidi(midchan(iv,kv),nolevo+miditran(instno(iv)), + * igetbits(icrdat(icrd),3,20),midisig,1., + * .false.,.false.) + end if +5 continue + notmain = .false. + return + end + subroutine dodyn(ivx,ip,nolev,ncm,ipl,islur,irest,nvmx,nv, + * beamon,ihornb,nornb,ulq,ibmcnt,nostem,soutq,lsout) + parameter (nm=24) +c +c Inputs are array *elements* except ihornb,nornb,ulq +c + common /commus/ musize,whead20 + common /comdyn/ ndyn,idyndat(99),levdsav(nm),ivowg(12),hoh1(12), + * hoh2(12),hoh2h1(2),ntxtdyn,ivxiptxt(41),txtdynq(41), + * idynda2(99),levhssav(nm),listcresc,listdecresc + character*128 txtdynq + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + logical btest,beamon,upstem,nostem + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + logical fontslur,upslur,WrotePsslurDefaults + character*1 udqq,chax,ulq(nm,9) + character*4 dynstrq + character*5 numpq + character*48 dyntablq,tempq + character*79 notexq + character*80 soutq + integer*4 ihornb(nm,24),nornb(nm),idynn(10) + common /comhair/ ihairuse,idhair(nm) + data dyntablq /'ppppppp pp p mp mf f fp sfz ff fff ffff'/ + numdyn = 0 +c +c Find dynamics for (ivx,ip) in list. May be as many as 4. Store idyn values +c in idynn(1...4) +c + do 1 idyn = 1 , ndyn + ivxtent = iand(idyndat(idyn),15) + * +16*igetbits(idynda2(idyn),1,10) + if (ivxtent .eq. ivx) then + iptent = igetbits(idyndat(idyn),8,4) + if (iptent .eq. ip) then + numdyn = numdyn+1 + idynn(numdyn) = idyn + else if (iptent .gt. ip) then +c +c I don't think there are any more possible for this ivx,ip, so exit loop +c + go to 2 + end if + end if +1 continue +2 continue +c +c At this point there is a list of idyn's in idynn(1...numdyn) +c Compute level, and stem-dir'n-based horizontal tweaks +c + hoffsd = 0. +c +c Set upstem to false as default +c + upstem = .false. + if (btest(irest,0)) then +c +c It's a rest. Assume it doesn't go below the staff +c + lbot = ncm-4 + else if (.not.beamon) then + if (udqq(nolev,ncm,islur,nvmx,ivx,nv).eq.'u' .or. nostem) then + upstem = .true. + if (.not.btest(ipl,10)) then + lbot = min(nolev-1,ncm-4) + else + lbot = min(minlev-1,ncm-4) + end if + else + hoffsd = -.5 + if (.not.btest(ipl,10)) then + lbot = min(nolev-7,ncm-4) + else + lbot = min(minlev-7,ncm-4) + end if + end if + else + if (ulq(ivx,ibmcnt) .eq. 'u') then + upstem = .true. + if (.not.btest(ipl,10)) then + lbot = min(nolev-1,ncm-4) + else + lbot = min(minlev-1,ncm-4) + end if + else + hoffsd = -.5 +c +c 171230 Desperation +c lbot = ihornb(ivx,nornb(ivx))+1 + if (nornb(ivx).eq.0) then + lbot = 1 + else + lbot = ihornb(ivx,nornb(ivx))+1 + end if + if (lbot .eq. 1) then +c +c Kluge for non-beamed, down xtup, for which ihorb was never set. +c Assumes stem is shortened. +c + lbot = nolev-5 + end if + nornb(ivx) = nornb(ivx)+1 + end if + end if + lbot = lbot-5 + jtxtdyn1 = 1 +c +c Now ready to loop over current dyn's +c + do 3 icntdyn = 1 , numdyn + idynd = idyndat(idynn(icntdyn)) + idynd2 = idynda2(idynn(icntdyn)) + idno = igetbits(idynd,4,12) +c ivx = iand(15,idynd) + ivx = iand(15,idynd)+16*igetbits(idynd2,1,10) +c +c Build the command into notex in stages. Insert name & rq'd args in order: +c +c Command name +c hpstrt, hpcend, hpdend, pmxdyn +c ivx +c X X X +c level +c X X X +c hoff +c X X X X +c d-mark +c X +c + if (idno .eq. 0) then +c +c Text-dynamic +c + notexq = chax(92)//'txtdyn' + lnote = 7 + else if (idno .le. 12) then +c +c Letter-group +c + notexq = chax(92)//'pmxdyn' + lnote = 7 + else if (fontslur) then + lnote = 7 + if (idno .eq. 13) then +c +c Start a font-based hairpin +c + notexq = chax(92)//'hpstrt' + else if (idno .eq. 14) then +c +c End crescendo +c + notexq = chax(92)//'hpcend' + else +c +c End decrescendo +c + notexq = chax(92)//'hpdend' + end if +c +c Put in voice number as ID for font-based hairpin +c + if (ivx .le. 9) then + notexq = notexq(1:lnote)//char(48+ivx) + lnote = lnote+1 + else if (ivx .le. 19) then + notexq = notexq(1:lnote)//'{1'//char(38+ivx)//'}' + lnote = lnote+4 + else + notexq = notexq(1:lnote)//'{2'//char(28+ivx)//'}' + lnote = lnote+4 + end if + else +c +c Postscript hairpins +c + lnote = 7 + if (idno .eq. 13) then + notexq = chax(92)//'Icresc' + else if (idno .eq.14) then + notexq = chax(92)//'Idecresc' + lnote = 9 + else + notexq = chax(92)//'Tcresc' + end if + if (idno .le. 14) then +c +c Get and record ID no for start of ps hairpin +c Find first unused ID +c + do 8 idh = 1 , 24 + if (.not.btest(ihairuse,idh)) go to 9 +8 continue + call printl('Bad place in putdyn, call Dr. Don') + call stop1() +9 continue + ihairuse = ibset(ihairuse,idh) + idhair(ivx) = idh + else +c +c Unrecord ID no for end of ps hairpin +c + call setbits(ihairuse,1,idhair(ivx),0) + end if +c +c Write ID # for start or end of ps hairpin +c + idh = idhair(ivx) + if (idh .le. 9) then + notexq = notexq(1:lnote)//char(48+idh) + lnote = lnote+1 + else if (idh .le. 19) then + notexq = notexq(1:lnote)//'{1'//char(38+idh)//'}' + lnote = lnote+4 + else + notexq = notexq(1:lnote)//'{2'//char(28+idh)//'}' + lnote = lnote+4 + end if + end if +c +c Begin setting level +c + lbot1 = lbot + if (idno.gt.0 .and. idno.le.5) then +c +c All letters are short so raise a bit. +c + lbot1 = lbot1+1 + else if (idno .ge. 13) then + lbot1 = lbot1+2 + end if +c +c Convert so reference is bottom line +c + lbot1 = lbot1-ncm+4 + if ((fontslur.and.idno.eq.13) .or. + * ((.not.fontslur).and.(idno.eq.13.or.idno.eq.14))) then +c +c Hairpin start. Save level and user-tweak before applying user tweak. +c + levdsav(ivx) = lbot1 + levhssav(ivx) = 0 + if (btest(idynd,16)) levhssav(ivx) = -64+igetbits(idynd,7,17) + else if ((fontslur.and.idno.ge.14) .or. idno.eq.15) then +c +c Hairpin end; Compare level with saved start level before user-tweaks +c + lbot1 = min(lbot1,levdsav(ivx)) +c +c Save pre-tweak level +c + lpretweak = lbot1 + end if +c +c Check for user-defined vertical tweak +c + if (btest(idynd,16)) lbot1 = lbot1-64+igetbits(idynd,7,17) +c +c Now horizontal stuff +c + hoff = hoffsd +c +c Some special horizontal tweaks +c + if (upstem .and. idno.gt.0 .and. + * (idno.le.4 .or. idno.eq.8 .or. idno.eq.9)) hoff = hoff+.4 +c +c User-defined tweaks +c + if (btest(idynd2,0)) + * hoff = hoff+(igetbits(idynd2,9,1)-256)*.1 + if (numdyn .gt. 1) then +c +c Horizontal-interaction-based tweaks. +c +c Cases: +c numdyn type1 type2 type3 data used +c 2 wrd-grp hrpnstrt - ivowg(1...12),hoh1(1...12) +c 2 hrpnend wrd-grp - ivowg,hoh2 +c 2 hrpnend hrpnstrt - hoh2h1(1...2) +c 3 hrpnend wrd-grp hrpnstrt ivowg,hoh2,hoh1 +c + if (idno.gt.0 .and. idno.le.12) then +c +c Word-group, may need vertical tweak to line up. +c + lbot1 = lbot1+ivowg(idno) +c +c Protecting against hp start-stop on same note +c + else if (((fontslur.and.idno.ge.14).or.idno.eq.15) + * .and. icntdyn.lt.numdyn) then +c +c Hairpin ending, check next type +c + if ((fontslur .and. + * igetbits(idyndat(idynn(icntdyn+1)),4,12).eq.13) + * .or. (.not.fontslur .and. + * ((igetbits(idyndat(idynn(icntdyn+1)),4,12).eq.13) + * .or. + * (igetbits(idyndat(idynn(icntdyn+1)),4,12).eq.14)))) + * then +c +c Hairpin end then hairpin start, no words, (remember dealing with end now) +c + hoff = hoff+hoh2h1(1) + else +c +c Hairpin end then word-group, need idno for w-g to set hp offset +c + hoff = hoff + + * hoh2(igetbits(idyndat(idynn(icntdyn+1)),4,12)) + end if +c +c Protecting against hp start-stop on same note +c + else if (icntdyn.gt.1 .and. idno.gt.0 .and. + * ((fontslur.and.idno.lt.14).or. + * (.not.fontslur.and.idno.lt.15))) then +c +c Hairpin start, check prior type +c + if ((fontslur.and. + * igetbits(idyndat(idynn(icntdyn-1)),4,12).ge.14) + * .or. + * (.not.fontslur.and. + * igetbits(idyndat(idynn(icntdyn-1)),4,12).eq.15)) + * then +c +c Hairpin end then hairpin start, (remember dealing with start now) +c + hoff = hoff+hoh2h1(2) + else +c +c Hairpin start after word-group, need idno for w-g to set hp offset +c + hoff = hoff+ + * hoh1(igetbits(idyndat(idynn(icntdyn-1)),4,12)) + end if + end if + end if +c +c End of if-block for 2- or 3-way interactions. +c + if ((.not.fontslur) .and. idno.ge.13) +c +c Slur font and hairpin. Add hoff, and change from \interneote to \qn@width +c + * hoff = (hoff+.5)*6./2.5 +c +c Position corrections all done now. Put in the level. +c + if ((fontslur.and.idno.eq.13) .or. + * ((.not.fontslur).and.(idno.eq.13.or.idno.eq.14))) then +c +c Hairpin start. +c + if (.not.fontslur) then +c +c Postscript hairpin start...inset placeholder for start level. + + notexq = notexq(1:lnote)//'{ }' + lnote = lnote+5 + end if + else +c +c Insert actual level in all cases except hairpin start +c Create string with level in it +c + if (lbot1 .gt. 9) then + numpq = '{' + write(numpq(2:3),'(i2)')lbot1 + numpq = numpq(1:3)//'}' + lnumpq = 4 + else if (lbot1 .gt. -1) then + numpq = char(48+lbot1) + lnumpq = 1 + else if (lbot1 .gt. -10) then + numpq = '{' + write(numpq(2:3),'(i2)')lbot1 + numpq = numpq(1:3)//'}' + lnumpq = 4 + else + numpq = '{' + write(numpq(2:4),'(i3)')lbot1 + numpq = numpq(1:4)//'}' + lnumpq = 5 + end if +c +c Level has now been computed and stored in numpq +c Append the level +c + notexq = notexq(1:lnote)//numpq(1:lnumpq) + lnote = lnote+lnumpq + end if + if (abs(hoff) .lt. .001) then +c +c No horiz offset +c + notexq = notexq(1:lnote)//'0' + lnote = lnote+1 + else +c +c Horizontal tweak +c + lform = lfmt1(hoff) + notexq = notexq(1:lnote)//'{' + lnote = lnote+1 + write(notexq(lnote+1:lnote+lform), + * '(f'//chax(48+lform)//'.1)')hoff + lnote = lnote+lform + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + end if + if (idno .eq. 0) then +c +c text-dynamic. Find the string and append it +c + do 4 jtxtdyn = jtxtdyn1 , ntxtdyn +c ivxip = ivx+16*ip + ivxip = ivx+32*ip + if (ivxip .eq. ivxiptxt(jtxtdyn)) go to 5 +4 continue + call printl('Abnormal stop in putdyn') + call stop1() +5 continue + ltxtdyn = lenstr(txtdynq(jtxtdyn),128) +c +c Font size based on musicsize +c +c if (musize .eq. 20) then +c notexq = notexq(1:lnote)//'{'//char(92)//'medtype' +c * //char(92)//'it ' +c lnote = lnote+13 +c else if (musize .eq. 16) then +c notexq = notexq(1:lnote)//'{'//char(92)//'normtype' +c * //char(92)//'it ' +c lnote = lnote+14 +c else if (musize .eq. 24) then +c notexq = notexq(1:lnote)//'{'//char(92)//'bigtype' +c * //char(92)//'it ' +c lnote = lnote+13 +c else if (musize .eq. 29) then +c notexq = notexq(1:lnote)//'{'//char(92)//'Bigtype' +c * //char(92)//'it ' +c lnote = lnote+13 +c end if +c +c Do this to insert 1st 2 args of \txtdyn, allow 3rd to be longer (on next line) +c + call addstr(notexq(1:lnote),lnote,soutq,lsout) + if (musize .eq. 20) then + notexq = '{'//char(92)//'medtype'//char(92)//'it ' + lnote = 13 + else if (musize .eq. 16) then + notexq = '{'//char(92)//'normtype'//char(92)//'it ' + lnote = 14 + else if (musize .eq. 24) then + notexq = '{'//char(92)//'bigtype'//char(92)//'it ' + lnote = 13 + else if (musize .eq. 29) then + notexq = '{'//char(92)//'Bigtype'//char(92)//'it ' + lnote = 13 + end if +c + notexq = notexq(1:lnote)//txtdynq(jtxtdyn)(1:ltxtdyn)//'}' + lnote = lnote+ltxtdyn+1 +c +c Reset jtxtdyn1 just in case >1 txtdyn on same note. +c + jtxtdyn1 = jtxtdyn+1 + else if (idno .le. 12) then +c +c Letter-group dynamic. Append the letter-group command +c + id = 4*idno + dynstrq = dyntablq(id-3:id) + id = lenstr(dynstrq,4) + notexq = notexq(1:lnote)//chax(92)//dynstrq(1:id) + lnote = lnote+1+id + end if + call addstr(notexq(1:lnote),lnote,soutq,lsout) + if ((.not.fontslur).and.idno.eq.15) then +c +c PS slurs on, hairpin is ending. Go back and set height at beginning. +c Add user-defined tweak to default level +c + lbot1 = lpretweak+levhssav(ivx) + if (lbot1 .gt. 9) then + numpq = '{' + write(numpq(2:3),'(i2)')lbot1 + numpq = numpq(1:3)//'}' + lnumpq = 4 + else if (lbot1 .gt. -1) then + numpq = char(48+lbot1) + lnumpq = 1 + else if (lbot1 .gt. -10) then + numpq = '{' + write(numpq(2:3),'(i2)')lbot1 + numpq = numpq(1:3)//'}' + lnumpq = 4 + else + numpq = '{' + write(numpq(2:4),'(i3)')lbot1 + numpq = numpq(1:4)//'}' + lnumpq = 5 + end if +c +c Construct string to search backwards for placeholder +c + if (idh .le. 9) then + tempq = 'cresc'//char(48+idh)//'{ }' + ltemp = 11 + else if (idh .le. 19) then + tempq = 'cresc'//'{1'//char(38+idh)//'}{ }' + ltemp = 14 + else + tempq = 'cresc'//'{2'//char(28+idh)//'}{ }' + ltemp = 14 + end if + write(11,'(a)')soutq(1:lsout)//'%' + lsout = 0 + call backfill(11,tempq,ltemp, + * tempq(1:ltemp-5)//numpq(1:lnumpq),ltemp-5+lnumpq) + end if +3 continue +c +c Shrink arrays, decrease ndyn 111109 +c + do 6 icntdyn = numdyn, 1 , -1 + do 7 jdyn = idynn(icntdyn) , ndyn-1 + idyndat(jdyn) = idyndat(jdyn+1) + idynda2(jdyn) = idynda2(jdyn+1) +7 continue + ndyn = ndyn-1 +6 continue + end + subroutine dograce(ivx,ip,ptgr,soutq,lsout,ncm,nacc,ig,ipl, + * farend, + * beamon,nolev,ncmidx,islur,nvmx,nv,ibmcnt,tnote,ulq,instno) +c +c ip will be one LESS than current note, for way-after's before bar-end, +c It is only used to find ig. +c ig is returned to makeabar in case there's a slur that needs to be ended +c + parameter (nm=24) + logical beamon,stemup + common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, + * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, + * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, + * graspace(37), + * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), + * naccg(74),voltxtq(6),litq(83) + common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, + * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, + * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, + * rtshfac + common /comask/ bar1syst,fixednew,scaldold, + * wheadpt,fbar,poenom + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + common /comoct/ noctup + logical upg,slurg,slashg,bar1syst,upslur,btest,isgaft,iswaft, + * normsp,farend,fontslur,WrotePsslurDefaults + real*4 ptgr(37) + character*80 soutq + character*128 litq + character*79 notexq + character*20 voltxtq + character*10 figq + character*8 noteq,noteqGA + character*3 acsymq + character*1 sq,chax,udqq,ulq(nm,9) + common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), + * fullsize(nm),ivxfig2,ivvfig(2,74) + sq = chax(92) + isgaft = btest(ipl,29) + iswaft = btest(ipl,31) + normsp = .not. isgaft +c +c Find ig. +c + do 120 ig = 1 , ngrace + if (ipg(ig).eq.ip .and. ivg(ig).eq.ivx) go to 121 +120 continue + print*,'Problem finding grace index in dograce' + stop +121 continue + ngs = ngstrt(ig) + mg = multg(ig) +c wheadpt1 = wheadpt*fullsize(ivx) + wheadpt1 = wheadpt*fullsize(instno) +c +c For way-after-graces at end of bar, must set the octave. +c + if (farend) then + noctup = 0 + if (ncm .eq.23) noctup = -2 + end if + if (slurg(ig) .and. .not.iswaft .and..not.isgaft) then + if (listslur .eq. 16777215) then + print* + print*,'You defined the twentyfifth slur, one too many!' + write(15,'(/,a)') + * 'You defined the twentyfifth slur, one too many!' + call stop1() + end if +c +c Slur on fore-grace. Get index of next slur not in use, from 23 down. +c + ndxslur = log2(16777215-listslur) + + end if + if (nng(ig) .eq. 1) then +c +c Single grace. +c + if (normsp) then +c +c Anything but GA +c + call addstr(sq//'shlft',6,soutq,lsout) + niptgr = nint(ptgr(ig)) +c +c Empirical tweak for postscript. +c +C if (.not.fontslur) niptgr = niptgr+nint(wheadpt*.3) +c++ + if (niptgr .lt. 10) then + call addstr(chax(48+niptgr)//'{',2,soutq,lsout) + else if (niptgr .lt. 100) then + write(notexq(1:2),'(i2)')niptgr + call addstr('{'//notexq(1:2)//'}{',5,soutq,lsout) + else + print*, + * 'Call Dr. Don if you really want grace note group > 99 pt' + stop + end if + else + call addstr(sq//'gaft{1.5}{',11,soutq,lsout) +c +c GA. Compute aftshft, for later use. +c + aftshft = grafac + if (naccg(ngstrt(ig)).gt.0) aftshft = aftshft+agc1fac + aftshft = aftshft*wheadpt + end if + if (slurg(ig) .and. .not.isgaft .and..not.iswaft) then +c +c Start slur on pre-grace. No accounting needed since will be ended very soon. +c + call notefq(noteq,lnoten,nolevg(ngs),ncm) + if (fontslur) then + if (upg(ig)) then + call addstr(sq//'islurd',7,soutq,lsout) + else + call addstr(sq//'isluru',7,soutq,lsout) + end if + else +c +c Start Postscript slur. +c + if (upg(ig)) then + call addstr(sq//'isd',4,soutq,lsout) + else + call addstr(sq//'isu',4,soutq,lsout) + end if + end if +c +c Print slur number, 23-ndxslur +c + lnote = 0 + if (23-ndxslur .lt. 10) then +c notexq = notexq(1:lnote)//chax(59-ndxslur) + notexq = chax(71-ndxslur) + lnote = 1 + else if (23-ndxslur .lt. 20) then +c notexq = notexq(1:lnote)//'{1'//chax(49-ndxslur)//'}' + notexq = '{1'//chax(61-ndxslur)//'}' + lnote = 4 + else + notexq = notexq(1:lnote)//'{2'//chax(51-ndxslur)//'}' + lnote = 4 + end if + call addstr(notexq(1:lnote)//noteq(1:lnoten), + * lnote+lnoten,soutq,lsout) + if (.not.fontslur) then +c +c Horizontal tweaks for postscript slur on single grace +c + stemup = .true. + if (upg(ig)) then +c +c Check for up-grace + down stem. Get stem direction +c + if (.not.beamon) then +c +c Separate note. Get stem direction. +c + stemup = udqq(nolev,ncmidx, + * islur,nvmx,ivx,nv) .eq. 'u' + else +c +c In a beam +c + stemup = ulq(ivx,ibmcnt) .eq. 'u' + end if +c +c Stop the shift if whole note +c + stemup = stemup .or. tnote.gt.63 + end if + if (stemup) then + call addstr('{-.3}',5,soutq,lsout) + else + call addstr('{-.8}',5,soutq,lsout) + end if + end if + end if + if (naccg(ngs) .gt. 0) then + call notefq(noteq,lnoten,nolevg(ngs),ncm) +c +c Save for checking octave shifts in GA +c + if (isgaft) then + lnotenGA = lnoten + noteqGA = noteq + end if +c + if (lnoten .eq. 1) call addblank(noteq,lnoten) + call accsym(naccg(ngs),acsymq,lacc) + call addstr(sq//'big'//acsymq(1:lacc)// + * noteq(1:lnoten),4+lacc+lnoten,soutq,lsout) + end if + if (slashg(ig)) then + notexq = sq//'grc' + lnote = 4 + else if (mg .eq. 0) then + notexq = sq//'zq' + lnote = 3 + else + notexq = sq//'zc' + do 61 i = 2 , mg + notexq = notexq(1:i+1)//'c' +61 continue + lnote = mg+2 + end if + if (upg(ig)) then + notexq = notexq(1:lnote)//'u' + else + notexq = notexq(1:lnote)//'l' + end if + call addstr(notexq,lnote+1,soutq,lsout) + call notefq(noteq,lnoten,nolevg(ngs),ncm) +c + if (isgaft .and. naccg(ngs).eq.0) then + lnotenGA = lnoten + noteqGA = noteq + end if +c + if (lnoten .eq. 1) call addblank(noteq,lnoten) + call addstr(noteq,lnoten,soutq,lsout) + if (slashg(ig)) call addstr(sq//'off{-'//sq// + * 'noteskip}',16,soutq,lsout) +c +c Above code needed since slashg causes spacing +c + if (slurg(ig) .and. (iswaft.or.isgaft)) then +c +c Terminate slur on single after-grace +c + ndxslur = igetbits(ipl,5,23) + call notefq(noteq,lnoten,nolevg(ngs),ncm) + call addstr(sq//'tslur',6,soutq,lsout) +c +c Print 24-ndxslur +c +c if (11-ndxslur .lt. 10) then + if (23-ndxslur .lt. 10) then +c call addstr(chax(59-ndxslur)//noteq(1:lnoten), + call addstr(chax(71-ndxslur)//noteq(1:lnoten), + * 1+lnoten,soutq,lsout) + else if (23-ndxslur .lt. 20) then + call addstr('{2'//chax(61-ndxslur)//'}'//noteq(1:lnoten), + * 4+lnoten,soutq,lsout) + else +c call addstr('{1'//chax(49-ndxslur)//'}'//noteq(1:lnoten), + call addstr('{1'//chax(51-ndxslur)//'}'//noteq(1:lnoten), + * 4+lnoten,soutq,lsout) + end if + slurg(ig) = .false. + listslur = ibclr(listslur,ndxslur) + end if + call addstr('}',1,soutq,lsout) +c +c+++ Try to fix loss of octave with single gaft +c + if (isgaft) then + itrans = 0 + do 1 i = 1 , lnotenGA + if (noteqGA(i:i) .eq. chax(39)) then + itrans = itrans+7 + else if (noteqGA(i:i) .eq. chax(96)) then + itrans = itrans-7 + end if +1 continue + if (itrans. eq. -14) then + call addstr(sq//'advance'//sq//'transpose-14',21, + * soutq,lsout) + else if (itrans .eq. -7) then + call addstr(sq//'advance'//sq//'transpose-7',20, + * soutq,lsout) + else if (itrans .eq. 7) then + call addstr(sq//'advance'//sq//'transpose7',19, + * soutq,lsout) + else if (itrans .eq. 14) then + call addstr(sq//'advance'//sq//'transpose14',20, + * soutq,lsout) + end if + end if + else +c +c Multiple grace. Put in literally. Compute beam stuff +c + sumx = 0. + sumy = 0. + sumxy = 0. + sumxx = 0. + sumyy = 0. + x = 0. + do 118 ing = ngs , ngs+nng(ig)-1 + if (ing.gt.ngs .and. naccg(ing).gt.0) x = x+acgfac + y = nolevg(ing) + sumx = sumx + x + sumy = sumy + y + sumxy = sumxy + x*y + sumxx = sumxx + x*x + sumyy = sumyy + y*y + x = x+emgfac +118 continue + delta = nng(ig)*sumxx-sumx*sumx + em = (nng(ig)*sumxy-sumx*sumy)/delta + islope = nint(0.5*em*gslfac) + if (iabs(islope) .gt. 9) islope = isign(9,islope) + beta = (sumy-islope/gslfac*sumx)/nng(ig) + nolev1 = nint(beta) +c +c Back up +c + notexq = sq//'settiny'//sq//'off{' + if (normsp) then + write(notexq(14:18),'(a1,f4.1)')'-',ptgr(ig) + call addstr(notexq(1:18)//'pt}',21,soutq,lsout) + finalshift = ptgr(ig) + else + aftshft = wheadpt*1.33 + if (naccg(ngstrt(ig)).gt.0) aftshft = aftshft+wheadpt*0.5 + write(notexq(14:17),'(f4.1)')aftshft + call addstr(notexq(1:17)//'pt}'//sq//'bsk',24,soutq,lsout) + end if +c +c Start the beam +c + notexq = sq//'ib' + do 119 ing = 2 , mg + notexq = notexq(1:ing+1)//'b' +119 continue + if (upg(ig)) then + notexq = notexq(1:mg+2)//'u' + else + notexq = notexq(1:mg+2)//'l' + end if + notexq = notexq(1:mg+3)//'0' +c +c Get starting note for beam +c + call notefq(noteq,lnoten,nolev1,ncm) + call addstr(notexq(1:mg+4)//noteq(1:lnoten), + * mg+4+lnoten,soutq,lsout) +c +c Put in the slope +c + if (islope .ge. 0) then + call addstr(chax(48+islope),1,soutq,lsout) + else + call addstr('{-'//chax(48-islope)//'}',4,soutq,lsout) + end if +c +c Start a slur on multiple fore-grace +c + if (slurg(ig) .and. .not.isgaft .and. .not.iswaft) then + call notefq(noteq,lnoten,nolevg(ngs),ncm) + if (fontslur) then + if (upg(ig)) then + call addstr(sq//'islurd',7,soutq,lsout) + else + call addstr(sq//'isluru',7,soutq,lsout) + end if + else +c +c Need a tweak for postscript slur +c + if (upg(ig)) then + call addstr(sq//'isd',4,soutq,lsout) + else + call addstr(sq//'isu',4,soutq,lsout) + end if + end if +c +c Print 23-ndxslur +c + if (23-ndxslur .lt. 10) then + call addstr(chax(71-ndxslur)//noteq(1:lnoten),1+lnoten, + * soutq,lsout) + else if (23-ndxslur .lt. 2) then + call addstr('{1'//chax(61-ndxslur)//'}'//noteq(1:lnoten), + * 4+lnoten,soutq,lsout) + else + call addstr('{1'//chax(51-ndxslur)//'}'//noteq(1:lnoten), + * 4+lnoten,soutq,lsout) + end if +c +c Put in tweak for postscript slur +c + if (.not.fontslur) call addstr('{-.3}',5,soutq,lsout) + end if +c +c Put in first note. Call notefq again in case octave changed +c + call notefq(noteq,lnoten,nolevg(ngs),ncm) + if (naccg(ngs) .eq. 0) then + notexq = sq//'zqb0'//noteq(1:lnoten) + lnote = 5+lnoten + else + if (lnoten .eq. 1) call addblank(noteq,lnoten) + call accsym(naccg(ngs),acsymq,lacc) + notexq = sq//'big'//acsymq(1:lacc)//noteq(1:lnoten) + lnote = 4+lacc+lnoten + call notefq(noteq,lnoten,nolevg(ngs),ncm) + notexq =notexq(1:lnote)//sq//'zqb0'//noteq(1:lnoten) + lnote = lnote+5+lnoten + end if + call addstr(notexq,lnote,soutq,lsout) + do 127 ing = ngs+1 , ngs+nng(ig)-1 +c +c Skip +c + ptoff = wheadpt1*emgfac + if (naccg(ing).gt.0) ptoff = ptoff+wheadpt1*acgfac + if (isgaft .and. .not.iswaft) aftshft = aftshft+ptoff + notexq = sq//'off{' + write(notexq(6:8),'(f3.1)')ptoff + if (normsp) finalshift = finalshift-ptoff + call addstr(notexq(1:8)//'pt}',11,soutq,lsout) + if (ing .eq. ngs+nng(ig)-1) then +c +c Terminate beam if needed +c + if (upg(ig)) then + call addstr(sq//'tbu0',5,soutq,lsout) + else + call addstr(sq//'tbl0',5,soutq,lsout) + end if +c +c Terminate after slur if needed +c + if ((isgaft.or.iswaft) .and. slurg(ig)) then +c if (iswaft) ndxslur = igetbits(ipl,4,23) + if (iswaft) ndxslur = igetbits(ipl,5,23) + call notefq(noteq,lnoten,nolevg(ing),ncm) + call addstr(sq//'tslur',6,soutq,lsout) +c +c Print 11-ndxslur +cc Print 23-ndxslur +c + if (23-ndxslur .lt. 10) then + call addstr(chax(71-ndxslur)//noteq(1:lnoten), + * 1+lnoten,soutq,lsout) + else if (23-ndxslur .lt. 20) then + call addstr('{2'//chax(61-ndxslur)//'}' + * //noteq(1:lnoten),4+lnoten,soutq,lsout) + else + call addstr('{1'//chax(51-ndxslur)//'}' + * //noteq(1:lnoten),4+lnoten,soutq,lsout) + end if +c +c Stop slur terminator after exit from this subroutine +c + listslur = ibclr(listslur,ndxslur) + slurg(ig) = .false. + end if + end if +c +c Accidental if needed +c + if (naccg(ing).gt.0) then + call notefq(noteq,lnoten,nolevg(ing),ncm) + if (lnoten .eq. 1) call addblank(noteq,lnoten) + call accsym(naccg(ing),acsymq,lacc) + call addstr(sq//'big'//acsymq(1:lacc) + * //noteq(1:lnoten),4+lacc+lnoten,soutq,lsout) + end if +c +c Put in the (beamed) grace note +c + call notefq(noteq,lnoten,nolevg(ing),ncm) + call addstr(sq//'zqb0'//noteq(1:lnoten),5+lnoten, + * soutq,lsout) +127 continue +c +c Terminate the grace +c +c notexq = sq//'normalnotesize'//sq//'off{' +c lnote = 20 +c notexq = '}'//sq//'off{' +c lnote = 6 + notexq = sq//'off{' + lnote = 5 + ptoff = wheadpt*emgfac + if (iand(nacc,3).gt.0 .and. .not.btest(nacc,17)) + * ptoff = ptoff+wheadpt*accfac + if (isgaft .and. .not.iswaft) then + notexq = notexq(1:5)//'-' + lnote = 6 + ptoff = aftshft + end if + if (normsp) ptoff = finalshift + if (ptoff .lt. 9.95) then + write(notexq(lnote+1:lnote+3),'(f3.1)')ptoff + lnote = lnote+3 + else if (ptoff .lt. 99.95) then + write(notexq(lnote+1:lnote+4),'(f4.1)')ptoff + lnote = lnote+4 + else + write(notexq(lnote+1:lnote+5),'(f5.1)')ptoff + lnote = lnote+5 + end if + call addstr(notexq(1:lnote)//'pt}',lnote+3,soutq,lsout) + if (isgaft.and..not.iswaft) call addstr(sq//'sk',3,soutq,lsout) + call addstr(sq//'resetsize',10,soutq,lsout) + end if + return + end + subroutine dopsslur(nolev,isdat1,isdat2,isdat3,isdat4,nsdat,ip, + * iv,kv,nv,beamon,ncm,soutq,lsout,ulq,islur, + * ipl,iornq,islhgt,tno,nacc) +c +c Called once per main note. +c 12 May 2002 Create this subroutine to isolate postscript slurs/ties. +c Always set \Nosluradjust\Notieadjust +c + parameter (nm=24,mv=24576) + integer*4 isdat1(202),isdat2(202),isdat3(202),isdat4(202) + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + common /comsln/ is1n1,is2n1,irzbnd,isnx + character*1 ulq,slurudq,udfq,udqq,chax + character*79 notexq + character*8 noteq + character*80 soutq + logical upslur,beamon,btest,stemup,iscrd, + * settie,fontslur,pstie,WrotePsslurDefaults + logical slmon,dbltie + common /comslm/ levson(0:nm),levsoff(0:nm),imidso(0:nm), + * naccbl(0:nm),laccbl(0:nm,10),jaccbl(0:nm,10),nusebl, + * slmon(0:nm),dbltie + integer*2 mmidi,iinsiv + logical restpend,relacc,notmain,twoline,ismidi,crdacc + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans +c 130316 + common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) + * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) +c +c Bits in isdat1: +c 13-17 iv +c 3-10 ip +c 11 start/stop switch +c 12 kv-1 +c 19-25 ichar(code$) +c 26 force direction? + +c 27 forced dir'n = up if on, set in sslur; also +c final direction, set in doslur when beam is started, used on term. +c 28-31 mod(ndxslur,16), set in doslur when slur is started, used on term. +c 18 int(ndxslur/16), ditto. So this allows ndxslur>15. +c 2 stem slur flag +c 1 flag for "x" slur (voice-independent) +c +c Bits in isdat2 +c 0 Chord switch. Not set on main note. +c 1-2 left/right notehead shift. Set only for chord note. +c 3 tie positioning +c 4 dotted flag +c 6-11 voff1 1-63 => -31...+31 +c 12-18 hoff1 1-127 => -6.3...+6.3 +c 19-25 nolev +c 26 \sluradjust (p+s) +c 27 \nosluradjust (p-s) +c 28 \tieadjust (p+t) +c 29 \notieadjust (p-t) +c +c Bits in isdat3: Only used for slur endings +c 0 set if midslur (at least one argument) +c 1 set if curve (2 more args) +c 2-7 32+first arg (height correction) (1st arg may be negative) +c 8-10 second arg (initial slope) +c 11-13 third arg (closing slope) +c 14-21 tie level for use in LineBreakTies +c 22-29 ncm for use in LineBreakTies +c +c Bits in isdat4 Only used for linebreak slurs +c 0-5 Linebreak seg 1 voff 1-63 => -31...+31 +c 6-12 Linebreak seg 1 hoff 1-127 => -6.3...+6.3 +c 16-21 Linebreak seg 2 voff 1-63 => -31...+31 +c 22-28 Linebreak seg 2 hoff 1-127 => -6.3...+6.3 +c +c In listslur bit ib is on if slur index ib is in use, ib=0-13. +c ndxslur = slur index +c Height of slur is nole+ivoff+iupdn. iupdn is +/-1 if t&s slurs on same note, +c s-slur is blank (idcode=32), t-slur is idcode=1. +c ivoff is user-defined shift or shift due to . or _ , or chord adjustment. +c Ivoff will be set for ./_ only if no user-defined shift is specified. +c If highest note has upslur, save slur height in islhgt in case +c ornament must be moved. +c + islhgt = 0 + if (beamon) then + stemup = ulq .eq. 'u' + else if (nvmx(iv) .eq. 2) then + if (.not.btest(islur,30)) then +c +c Single note, 2 lines of music, stem direction not forced +c + stemup = ivx .gt. nv + else + stemup = btest(islur,17) + end if + else + stemup = udqq(nolev,ncm,islur,nvmx(iv),ivx,nv) .eq. 'u' + end if + iscrd = btest(ipl,10) + if (ismidi) then + settie = .false. + dbltie = .false. + end if + do 1 isdat = 1 , nsdat + isdata = isdat1(isdat) + if (iv .eq. igetbits(isdata,5,13) .and. + * ip .eq. igetbits(isdata,8,3) .and. +c * kv .eq. igetbits(isdata,1,12)+1) then + * (kv .eq. igetbits(isdata,1,12)+1 .or. + * btest(isdata,1))) then +c +c Since iv and kv match, ivx will be correct +c + idcode = igetbits(isdata,7,19) + ivoff = igetbits(isdat2(isdat),6,6)-32 + ihoff = igetbits(isdat2(isdat),7,12)-64 + iupdn = 0 + slurudq = 'd' + nolevs = igetbits(isdat2(isdat),7,19) + pstie = btest(isdat2(isdat),3) .or. idcode.eq.1 + if (btest(isdata,11)) then +c +c Turnon +c Get slur direction +c + if (btest(isdata,26)) then +c +c Force slur direction +c + if (btest(isdata,27)) slurudq = 'u' + else if (nvmx(iv) .eq. 1) then +c +c Only one voice per line +c + if (.not.beamon) then +c +c Separate note. +c + slurudq = udfq(nolev,ncm) + else +c +c In a beam +c + if (ulq .ne. 'u') slurudq = 'u' + end if + if (iscrd) then + if (nolevs .gt. ncm) then + slurudq = 'u' + else + slurudq = 'd' + end if + end if + else +c +c Two voices per line. Get default +c + if (ivx .gt. nv) slurudq = 'u' +c +c Upper voice of the two, so up slur +c + end if + if (btest(isdata,2)) then +c +c ADjust for stem slur. ASSUME this is the ONLY pos'n adjustment. +c + if (stemup) then + slurudq = 'u' + ivoff = ivoff+4 + else + slurudq = 'd' + ivoff = ivoff-4 + end if + end if +c +c Set level for slur starting on rest +c + if (nolevs.eq.0 .or. nolevs.gt.60) then + if (slurudq .eq. 'u') then + nolevs = ncm+2 + else + nolevs = ncm-2 + end if + end if +c +c Save up/down-ness for use at termination +c + if (slurudq .eq. 'u') isdata = ibset(isdata,27) +c +c End of section for setting slur direction, still in "Turnon" if-block. +c + if (btest(iornq,11).or.btest(iornq,12)) then +c +c Raise or lower slur by one unit provided . or _ is on same side as slur +c + ivoffinc = 0 + if ((stemup .and. slurudq.eq.'d') .or. + * (.not.stemup .and. slurudq.eq.'u')) then +c +c Must move the slur for _ or . +c + if (stemup) then + ivoffinc = -1 + else + ivoffinc = 1 + end if + if (((stemup .and. nolev.ge.ncm-2) .or. + * (.not.stemup .and. nolev.le.ncm+2)) .and. + * mod(abs(ncm-nolev),2).eq.0) ivoffinc = 2*ivoffinc + ivoff = ivoff+ivoffinc + end if + end if + if (listslur .eq. 16777215) then + print* + print*,'You1 defined the twentyfifth slur, one too many!' + write(15,'(/,a)') + * 'You defined the twentyfifth slur, one too many!' + call stop1() + end if +c +c Get index of next slur not in use, starting from 12 down +c + ndxslur = log2(16777215-listslur) +c +c Record slur index +c + listslur = ibset(listslur,ndxslur) +c +c Save for use on termination +c +c call setbits(isdata,4,28,ndxslur) +c 080531 Allow >16 slurs + call setbits(isdata,4,28,mod(ndxslur,16)) + call setbits(isdata,1,18,ndxslur/16) +c +c Shift for stem? +c + if (stemup .and. slurudq.eq.'u' .and. tno.lt.63.) then + if (.not.pstie) then + ihoff = ihoff+8 + else + ihoff = ihoff+2 + end if + end if + if (iscrd) then +c +c Additional horiz shifts for h-shifted noteheads? +c + if (btest(isdat2(isdat),1)) then +c +c Slur start on left-shifted chord notehead. ASSUME downstem. +c + if (nolevs.eq.minlev .and. slurudq.eq.'d') then + ihoff = ihoff-2 + else + ihoff = ihoff-10 + end if + else if (btest(isdat2(isdat),2)) then +c +c Right shifted chord notehead. ASSUME upstem. +c + if (nolevs.eq.maxlev .and. slurudq.eq.'u') then + ihoff = ihoff+2 + else + ihoff = ihoff+10 + end if + end if + end if + notexq = chax(92) + lnote = 1 +c +c Check for local adjustment default changes +c + if (btest(isdat2(isdat),26)) then + notexq = chax(92)//'sluradjust'//chax(92) + lnote = 12 + else if (btest(isdat2(isdat),27)) then + notexq = chax(92)//'nosluradjust'//chax(92) + lnote = 14 + else if (btest(isdat2(isdat),28)) then + notexq = chax(92)//'tieadjust'//chax(92) + lnote = 11 + else if (btest(isdat2(isdat),29)) then + notexq = chax(92)//'notieadjust'//chax(92) + lnote = 13 + end if + if (ihoff .eq. 0) then +c +c Write stuff for non-shifted start +c + notexq = notexq(1:lnote)//'islur'//slurudq + lnote = lnote+6 + else + notexq = notexq(1:lnote)//'is'//slurudq + lnote = lnote+3 + end if +c +c Prepend postscript tie switch +c + if (pstie) then + notexq = chax(92)//'tieforis'//slurudq//notexq(1:lnote) + lnote = lnote+10 + end if + if (btest(isdat2(isdat),4)) then +c +c Dotted slur +c +c noteq = notexq +c notexq = chax(92)//'dotted'//noteq + notexq = chax(92)//'dotted'//notexq(1:lnote) + lnote = lnote+7 + end if +c +c Add slur index to string +c Print 23-ndxslur +c + if (23-ndxslur .lt. 10) then +c +c 5/25/08 Allow 24 slurs +c + notexq = notexq(1:lnote)//chax(71-ndxslur) + lnote = lnote+1 + else if (23-ndxslur .lt. 20) then + notexq = notexq(1:lnote)//'{1'//chax(61-ndxslur)//'}' + lnote = lnote+4 + else + notexq = notexq(1:lnote)//'{2'//chax(51-ndxslur)//'}' + lnote = lnote+4 + end if +c +c Add note name to string +c + islhgt = nolevs+iupdn+ivoff + call notefq(noteq,lnoten,islhgt,ncm) + notexq = notexq(1:lnote)//noteq(1:lnoten) + lnote = lnote+lnoten +c +c Store height and staff mid level for use with LineBreakTies +c + call setbits(isdat3(isdat),8,14,islhgt) + call setbits(isdat3(isdat),8,22,ncm) +c +c Save height (for ornament and barnobox interference) if topmost slur is up +c + if (slurudq.eq.'u' .and. + * (.not.btest(isdat2(isdat),0).or.nolevs.eq.maxlev)) then + islhgt = nolevs+iupdn+ivoff +c +c Save height & idcode if top voice and slur start +c + if (ivx.eq.ivmx(nv,nvmx(nv)) .and. islhgt.gt.is1n1) then + is1n1 = islhgt + is2n1 = idcode + end if + end if + if (ihoff .ne. 0.) then + shift = ihoff*0.1 + notexq = notexq(1:lnote)//'{' + lnote = lnote+1 + lform = lfmt1(shift) + write(notexq(lnote+1:lnote+lform),'(f'// + * chax(48+lform)//'.1)') shift + lnote = lnote+lform + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + end if + call addstr(notexq,lnote,soutq,lsout) +c +c Zero out ip1 to avoid problems if slur goes to next input blk. +c + call setbits(isdata,8,3,0) +c +c Set slur-on data for midi. Only treat null-index slurs and ps ties for now. +c + if (ismidi .and. (idcode.eq.32 .or. idcode.eq.1)) then +c levson(midchan(iv,kv)) = nolevs +c 130316 + levson(midchan(iv,kv)) = nolevs+miditran(instno(iv)) + if (settie) dbltie = .true. +c +c Only way settie=T is if we just set a tie ending. So there's also a slur +c start here, so set a flag telling addmidi not to zero out levson +c + end if + else +c +c Slur is ending. Back thru list to find starting slur +c + do 3 j = isdat-1 , 1 , -1 + if (iv.eq.igetbits(isdat1(j),5,13) .and. +c * kv.eq.igetbits(isdat1(j),1,12)+1) then + * (kv.eq.igetbits(isdat1(j),1,12)+1 + * .or. btest(isdat1(j),1))) then + if (idcode .eq. igetbits(isdat1(j),7,19)) then + ndxslur = igetbits(isdat1(j),4,28) +c +c 080531 Allow >16 slurs +c + * +16*igetbits(isdat1(j),1,18) + if (btest(isdat1(j),27)) slurudq = 'u' + go to 4 + end if + end if +3 continue + print*,'Bad place in doslur' + call stop1() +4 continue +c +c Bugfix 070901 for slur ending on rest in 2-voice staff +c + if (nolevs.le.2 .or. nolevs.gt.60) then +c +c Ending is on a rest, reset nolevs to default starting height +c + nolevs = igetbits(isdat2(j),7,19) + end if + if (btest(isdat3(isdat),0) .or. btest(isdat3(j),0)) then +c +c Deal with \curve or \midslur. isdat is ending, j is start. +c + if (btest(isdat3(isdat),0)) then + imid = igetbits(isdat3(isdat),6,2)-32 + else + imid = igetbits(isdat3(j),6,2)-32 + end if +c +c Postscript slurs, and \midslur adjustment is needed. Invoke macro +c (from pmx.tex) that redefines \tslur as r'qd. Tentative mapping: +c Abs(imid) Postscript slur type +c 1 f +c 2-3 default +c 4 h +c 5 H +c 6+ HH +c + call addstr(chax(92)//'psforts'// + * chax(48+min(abs(imid),6)),9,soutq,lsout) + end if + if (btest(isdata,2)) then +c +c ADjust for stem slur. +c + if (stemup) then + slurudq = 'u' + ivoff = ivoff+4 + else + slurudq = 'd' + ivoff = ivoff-4 + end if + end if +c +c Shift slur ending for stem on any note? +c + if (.not.stemup .and. slurudq.eq.'d' .and. tno.lt.63.) then + if (.not.pstie) then + ihoff = ihoff-8 + else + ihoff = ihoff-3 + end if + end if + if (iscrd) then +c +c Shift termination for shifted notehead? +c + if (btest(isdat2(isdat),1)) then +c +c Left-shifted chord notehead. ASSUME downstem. +c + if (nolevs.eq.minlev .and. slurudq.eq.'d') then + ihoff = ihoff-2 + else + ihoff = ihoff-10 + end if + else if (btest(isdat2(isdat),2)) then +c +c Right shifted chord notehead. ASSUME upstem. +c + if (nolevs.eq.maxlev .and. slurudq.eq.'u') then + ihoff = ihoff+2 + else + ihoff = ihoff+10 + end if + end if + end if + if (ihoff .eq. 0) then + notexq = chax(92)//'tslur' + lnote = 6 + else +c +c Shift needed +c + notexq = chax(92)//'ts' + lnote = 3 + end if +c +c Switch to postscript tie +c + if (pstie) then + notexq = chax(92)//'tieforts'//notexq(1:lnote) + lnote = lnote+9 + end if +c +c Print 13-ndxslur +c 5/25/08 Allow 14 slurs +c + if (23-ndxslur .lt. 10) then + notexq = notexq(1:lnote)//chax(71-ndxslur) + lnote = lnote+1 + else if (23-ndxslur .lt. 20) then + notexq = notexq(1:lnote)//'{1'//chax(61-ndxslur)//'}' + lnote = lnote+4 + else + notexq = notexq(1:lnote)//'{2'//chax(51-ndxslur)//'}' + lnote = lnote+4 + end if + if (btest(iornq,11).or.btest(iornq,12)) then +c +c Raise or lower slur by one unit provided . or _ is on same side as slur +c + ivoffinc = 0 + if ((stemup .and. slurudq.eq.'d') .or. + * (.not.stemup .and. slurudq.eq.'u')) then + if (stemup) then + ivoffinc = -1 + else + ivoffinc = 1 + end if + if (((stemup .and. nolev.ge.ncm-2) .or. + * (.not.stemup .and. nolev.le.ncm+2)) .and. + * mod(abs(ncm-nolev),2).eq.0) ivoffinc = 2*ivoffinc + end if + ivoff = ivoff+ivoffinc + end if + call notefq(noteq,lnoten,nolevs+iupdn+ivoff,ncm) + if (slurudq.eq.'u' .and. + * (.not.btest(isdat2(isdat),0).or.nolevs.eq.maxlev)) then + islhgt = nolevs+iupdn+ivoff +c +c If topvoice, upslur, and idcode checks, no more need to keep hgt for barno. +c + if (ivx.eq.ivmx(nv,nvmx(nv)) .and. is1n1.gt.0) then + if (idcode .eq. is2n1) is1n1=0 + end if + end if + notexq = notexq(1:lnote)//noteq(1:lnoten) + lnote = lnote+lnoten + if (ihoff .ne. 0) then + shift = ihoff*0.1 + notexq = notexq(1:lnote)//'{' + lnote = lnote+1 + lform = lfmt1(shift) + write(notexq(lnote+1:lnote+lform), + * '(f'//chax(48+lform)//'.1)')shift + lnote = lnote+lform + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + end if + call addstr(notexq,lnote,soutq,lsout) +c +c Clear the bit from list of slurs in use +c + listslur = ibclr(listslur,ndxslur) +c +c Zero out the entire strings for start and stop +c + isdata = 0 + isdat2(isdat) = 0 + isdat3(isdat) = 0 + isdat4(isdat) = 0 + isdat1(j) = 0 + isdat2(j) = 0 + isdat3(j) = 0 + isdat4(j) = 0 +c +c Set midi info for slur ending +c + if (ismidi .and. (idcode.eq.32 .or. idcode.eq.1)) then + icm = midchan(iv,kv) + if (slmon(icm)) then + if (nolevs+miditran(instno(iv)).eq.levson(icm) .and. + * iand(7,nacc).eq.0) then +c +c There is a tie here. NB!!! assumed no accidental on 2nd member of tie. +c + levsoff(icm) = nolevs+miditran(instno(iv)) + settie = .true. + else + levsoff(icm) = 0 + levson(icm) = 0 + slmon(icm) = .false. + end if + end if + end if + end if + isdat1(isdat) = isdata + end if +1 continue +c +c Clear and collapse the slur data list +c + numdrop = 0 + do 2 isdat = 1 , nsdat + if (isdat1(isdat) .eq. 0) then + numdrop = numdrop+1 + else if (numdrop .gt. 0) then + isdat1(isdat-numdrop) = isdat1(isdat) + isdat2(isdat-numdrop) = isdat2(isdat) + isdat3(isdat-numdrop) = isdat3(isdat) + isdat4(isdat-numdrop) = isdat4(isdat) + isdat1(isdat) = 0 + isdat2(isdat) = 0 + isdat3(isdat) = 0 + isdat4(isdat) = 0 + end if +2 continue + nsdat = nsdat-numdrop +c call report(nsdat,isdat1,isdat2) + return + end + subroutine doslur(nolev,isdat1,isdat2,isdat3,nsdat,ip,iv,kv,nv, + * beamon,ncm,soutq,lsout,ulq,islur,ipl,iornq,islhgt,tno,nacc) +c +c Called once per main note. (5/26/02) for non-ps slurs only +c + parameter (nm=24,mv=24576) + integer*4 isdat1(202),isdat2(202),isdat3(202) + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + common /comsln/ is1n1,is2n1,irzbnd,isnx + character*1 ulq,slurudq,udfq,udqq,chax + character*79 notexq + character*8 noteq + character*80 soutq + logical upslur,beamon,btest,stemup,iscrd,sfound,tfound,tmove, + * settie,fontslur,WrotePsslurDefaults + logical slmon,dbltie + common /comslm/ levson(0:nm),levsoff(0:nm),imidso(0:nm), + * naccbl(0:nm),laccbl(0:nm,10),jaccbl(0:nm,10),nusebl, + * slmon(0:nm),dbltie + integer*2 mmidi,iinsiv + logical restpend,relacc,notmain,twoline,ismidi,crdacc + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans +c 130316 + common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) + * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) +c +c Bits in isdat1: +c 13-17 iv +c 3-10 ip +c 11 start/stop switch +c 12 kv-1 +c 19-25 ichar(code$) +c 26 force direction? +c 27 forced dir'n = up if on, set in sslur; also +c final direction, set in doslur when beam is started, used on term. +c 28-31 ndxslur, set in doslur when beam is started, used on term. +c +c Bits in isdat2 +c 0 Chord switch. Not set on main note. +c 1-2 left/right notehead shift. Set only for chord note. +c 3 tie positioning +c 4 dotted flag +c 6-11 voff1 1-63 => -31...+31 +c 12-18 hoff1 1-127 => -6.3...+6.3 +c 19-25 nolev +c +c Bits in isdat3: Only used for slur endings +c 0 set if midslur (at least one argument) +c 1 set if curve (2 more args) +c 2-7 32+first arg (height correction) (1st arg may be negative) +c 8-10 second arg (initial slope) +c 11-13 third arg (closing slope) +c +c In listslur bit ib is on if slur index ib is in use, ib=0-23. +c ndxslur = slur index +c Height of slur is nole+ivoff+iupdn. iupdn is +/-1 if t&s slurs on same note, +c s-slur is blank (idcode=32), t-slur is idcode=1. +c ivoff is user-defined shift or shift due to . or _ , or chord adjustment. +c Ivoff will be set for ./_ only if no user-defined shift is specified. +c If highest note has upslur, save slur height in islhgt in case +c ornament must be moved. +c + islhgt = 0 + if (beamon) then + stemup = ulq .eq. 'u' + else if (nvmx(iv) .eq. 2) then + if (.not.btest(islur,30)) then +c +c Single note, 2 lines of music, stem direction not forced +c + stemup = ivx .gt. nv + else + stemup = btest(islur,17) + end if + else + stemup = udqq(nolev,ncm,islur,nvmx(iv),ivx,nv) .eq. 'u' + end if + iscrd = btest(ipl,10) + if (btest(islur,1)) then +c +c 't'-slur (idcode=1) somewhere on this note. Find it, check height against +c 's'-slur (idcode=32) +c + sfound = .false. + tfound = .false. + tmove = .false. + do 5 isdat = 1 , nsdat + if (iv .eq. igetbits(isdat1(isdat),5,13) .and. + * ip .eq. igetbits(isdat1(isdat),8,3) .and. + * kv .eq. igetbits(isdat1(isdat),1,12)+1) then + if (.not.tfound) then + tfound = igetbits(isdat1(isdat),7,19).eq.1 + if (tfound) then + nolevt = igetbits(isdat2(isdat),7,19) + isdatt = isdat + if (sfound) go to 6 + end if + end if + if (.not.sfound) then + sfound = igetbits(isdat1(isdat),7,19).eq.32 + if (sfound) then + nolevs = igetbits(isdat2(isdat),7,19) + isdats = isdat + if (tfound) go to 6 + end if + end if + end if +5 continue +c +c Will come thru here if there is a t with no s, so comment out the following +c print*,'Did not find s+t-slurs in doslur' +c +6 continue + if (sfound .and. tfound) + * tmove = nolevs.eq.nolevt .and. +c +c Check if 2 starts or two stops +c + * ((btest(isdat1(isdats),11).and.btest(isdat1(isdatt),11)) .or. + * (.not.btest(isdat1(isdats),11).and. + * .not.btest(isdat1(isdatt),11)) ) +c +c This is a flag for later changing slur level, after we know slur dir'n. +c + end if + if (ismidi) then + settie = .false. + dbltie = .false. + end if + do 1 isdat = 1 , nsdat + isdata = isdat1(isdat) + if (iv .eq. igetbits(isdata,5,13) .and. + * ip .eq. igetbits(isdata,8,3) .and. + * kv .eq. igetbits(isdata,1,12)+1) then +c +c Since iv and kv match, ivx will be correct +c + idcode = igetbits(isdata,7,19) + ivoff = igetbits(isdat2(isdat),6,6)-32 + ihoff = igetbits(isdat2(isdat),7,12)-64 + iupdn = 0 + slurudq = 'd' + nolevs = igetbits(isdat2(isdat),7,19) + if (btest(isdata,11)) then +c +c Turnon, +c + if (nolevs.eq.0 .or. nolevs.gt.60) then +c +c Note was a rest, cannot start slur on rest. +c + print* + call printl('Cannot start slur on a rest') + call stop1() + end if +c +c Get slur direction +c + if (btest(isdata,26)) then +c +c Force slur direction +c + if (btest(isdata,27)) slurudq = 'u' + else if (nvmx(iv) .eq. 1) then +c +c Only one voice per line +c + if (.not.beamon) then +c +c Separate note. +c + slurudq = udfq(nolev,ncm) + else +c +c In a beam +c + if (ulq .ne. 'u') slurudq = 'u' + end if + if (iscrd) then + if (nolevs .gt. ncm) then + slurudq = 'u' + else + slurudq = 'd' + end if + end if + else +c +c Two voices per line. Get default +c + if (ivx .gt. nv) slurudq = 'u' +c +c Upper voice of the two, so up slur +c + end if +c +c Save up/down-ness for use at termination +c + if (slurudq .eq. 'u') isdata = ibset(isdata,27) +c +c End of section for setting slur direction, still in "Turnon" if-block. +c + if (idcode.eq.1 .and. tmove) then + iupdn = 1 + if (slurudq .eq. 'd') iupdn = -1 + end if + if (btest(iornq,11).or.btest(iornq,12)) then +c +c Raise or lower slur by one unit provided . or _ is on same side as slur +c + ivoffinc = 0 + if ((stemup .and. slurudq.eq.'d') .or. + * (.not.stemup .and. slurudq.eq.'u')) then +c +c Must move the slur for _ or . +c + if (stemup) then + ivoffinc = -1 + else + ivoffinc = 1 + end if + if (((stemup .and. nolev.ge.ncm-2) .or. + * (.not.stemup .and. nolev.le.ncm+2)) .and. + * mod(abs(ncm-nolev),2).eq.0) ivoffinc = 2*ivoffinc + ivoff = ivoff+ivoffinc + end if + end if + if (listslur .eq. 16777215) then + print* + print*,'You1 defined the twenty-fifth slur, one too many!' + write(15,'(/,a)') + * 'You2 defined the twenty-fifth slur, one too many!' + call stop1() + end if +c +c Get index of next slur not in use, starting from ? down +c + ndxslur = log2(16777215-listslur) +c +c Record slur index +c + listslur = ibset(listslur,ndxslur) +c +c Save for use on termination +c +c call setbits(isdata,4,28,ndxslur) +c 080531 Allow >16 slurs + call setbits(isdata,4,28,mod(ndxslur,16)) + call setbits(isdata,1,18,ndxslur/16) +c +c Shift for stem? +c + if (stemup .and. slurudq.eq.'u' .and. tno.lt.63.) + * ihoff = ihoff+8 + if (btest(isdat2(isdat),3)) then +c +c Tie spacing, (slur start) +c + if (slurudq.eq.'d') then + ivoff = ivoff+1 + ihoff = ihoff+8 + else if (slurudq.eq.'u') then + ivoff = ivoff-1 + if (.not.(stemup.and.tno.lt.63.)) ihoff = ihoff+8 +c +c (already shifted if (stemup.and.tno.gt.63.) and slurudq='u') +c + end if + end if + if (iscrd) then +c +c Additional horiz shifts for h-shifted noteheads? +c + if (btest(isdat2(isdat),1)) then +c +c Slur start on left-shifted chord notehead. ASSUME downstem. +c + if (nolevs.eq.minlev .and. slurudq.eq.'d') then + ihoff = ihoff-2 + else + ihoff = ihoff-10 + end if + else if (btest(isdat2(isdat),2)) then +c +c Right shifted chord notehead. ASSUME upstem. +c + if (nolevs.eq.maxlev .and. slurudq.eq.'u') then + ihoff = ihoff+2 + else + ihoff = ihoff+10 + end if + end if + end if + if (ihoff .eq. 0) then +c +c Write stuff for non-shifted start +c + notexq = chax(92)//'islur'//slurudq + lnote = 7 + else + notexq = chax(92)//'is'//slurudq + lnote = 4 + end if + if (btest(isdat2(isdat),4)) then +c +c Dotted slur +c + noteq(1:8) = notexq + notexq = chax(92)//'dotted'//noteq + lnote = lnote+7 + end if +c +c Add slur index to string +cc Print 11-ndxslur +c Print 23-ndxslur +c +c if (11-ndxslur .lt. 10) then + if (23-ndxslur .lt. 10) then +c +c 5/25/08 Allow 24 slurs +c +c notexq = notexq(1:lnote)//chax(59-ndxslur) + notexq = notexq(1:lnote)//chax(71-ndxslur) + lnote = lnote+1 + else if (23-ndxslur .lt. 20) then +c notexq = notexq(1:lnote)//'{1'//chax(49-ndxslur)//'}' + notexq = notexq(1:lnote)//'{1'//chax(61-ndxslur)//'}' + lnote = lnote+4 + else + notexq = notexq(1:lnote)//'{2'//chax(51-ndxslur)//'}' + lnote = lnote+4 + end if +c +c Add note name to string +c + call notefq(noteq,lnoten,nolevs+iupdn+ivoff,ncm) + notexq = notexq(1:lnote)//noteq(1:lnoten) + lnote = lnote+lnoten +c +c Save height (for ornament and barnobox interference) if topmost slur is up +c + if (slurudq.eq.'u' .and. + * (.not.btest(isdat2(isdat),0).or.nolevs.eq.maxlev)) then + islhgt = nolevs+iupdn+ivoff +c +c Save height & idcode if top voice and slur start +c + if (ivx.eq.ivmx(nv,nvmx(nv)) .and. islhgt.gt.is1n1) then + is1n1 = islhgt + is2n1 = idcode + end if + end if + if (ihoff .ne. 0.) then + shift = ihoff*0.1 + notexq = notexq(1:lnote)//'{' + lnote = lnote+1 + lform = lfmt1(shift) + write(notexq(lnote+1:lnote+lform),'(f'// + * chax(48+lform)//'.1)') shift + lnote = lnote+lform + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + end if + call addstr(notexq,lnote,soutq,lsout) +c +c Zero out ip1 to avoid problems if slur goes to next input blk. +c + call setbits(isdata,8,3,0) +c +c Set slur-on data for midi. Only treat null-index slurs and ps ties for now. +c + if (ismidi .and. idcode.eq.32) then + levson(midchan(iv,kv)) = nolevs+miditran(instno(iv)) + if (settie) dbltie = .true. +c +c Only way settie=T is if we just set a tie ending. So there's also a slur +c start here, so set a flag telling addmidi not to zero out levson +c + end if + else +c +c Slur is ending. Back thru list to find starting slur +c + do 3 j = isdat-1 , 1 , -1 + if (iv.eq.igetbits(isdat1(j),5,13) .and. + * kv.eq.igetbits(isdat1(j),1,12)+1) then + if (idcode .eq. igetbits(isdat1(j),7,19)) then + ndxslur = igetbits(isdat1(j),4,28) +c +c 080531 Allow >16 slurs +c + * +16*igetbits(isdat1(j),1,18) + if (btest(isdat1(j),27)) slurudq = 'u' + go to 4 + end if + end if +3 continue + print*,'Bad place in doslur' + call stop1() +4 continue + if (nolevs.eq.0 .or. nolevs.gt.60) then +c +c Ending is on a rest, reset nolevs to default starting height +c + nolevs = igetbits(isdat2(j),7,19) + end if + if (btest(isdat3(isdat),0)) then +c +c Deal with \curve or \midslur +c + imid = igetbits(isdat3(isdat),6,2)-32 +c +c Remember, only dealing with non-ps slurs +c +c Who knows where the following line came from. Removed it 6/30/02 to +c restore behavior of non-ps slurs to old way +c if (slurudq .eq. 'd') imid = -imid +c 3/8/03 added the following +c + if (slurudq .eq. 'd') imid = -abs(imid) +c + if (btest(isdat3(isdat),1)) then + notexq = chax(92)//'curve' + lnote = 6 + else + notexq = chax(92)//'midslur' + lnote = 8 + end if + if (imid.lt.0 .or. imid.gt.9) then +c +c Need brackets +c + notexq = notexq(1:lnote)//'{' + lnote = lnote+1 + if (imid .lt. -9) then + write(notexq(lnote+1:lnote+3),'(i3)')imid + lnote = lnote+3 + else if (imid.lt.0 .or. imid.gt.9) then + write(notexq(lnote+1:lnote+2),'(i2)')imid + lnote = lnote+2 + else + write(notexq(lnote+1:lnote+1),'(i1)')imid + lnote = lnote+1 + end if + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + else +c +c 1= 0 . +c Xtups are irrelevant here since they are already all in forced beams. +c Will update itnow by nodur at the END of this loop +c + ip = ip+1 + go to 11 + end if + nreal = nreal+1 + nodue(nreal) = nodur(ivx,ip) + short(nreal) = nodue(nreal).lt.16 .and. + * .not.btest(irest(ivx,ip),0) +c +c Rule out notes that have 'alone'-flag set +c + * .and..not.btest(islur(ivx,ip),18) + ipr(nreal) = ip + itr(nreal) = itnow + if (nodue(nreal) .eq. 1) then +c +c 64th gap +c + if (mod(itnow,2) .eq. 0) then +c +c Start of 32nd gap, lump with following note +c + ip = ip+1 + nodue(nreal) = 1+nodur(ivx,ip) + itnow = itnow+nodue(nreal) + else +c +c End of 32nd gap, lump with preceeding note +c + nreal = nreal-1 + nodue(nreal) = 1+nodue(nreal) + itnow = itnow+1 + end if + else + itnow = itnow+nodur(ivx,ip) + end if + go to 1 +9 continue + ir1 = 1 + itseg = lenbar/ibmrep + do 13 irep = 1 , ibmrep +c +c Set bitmaps for all shorts neighbored by a short. Each bit represents a +c span of 32nd note. maps, mapm, mape record start, full duration, and end +c of consecutive span of beamable (<1/4) notes. +c + maps = 0 + mapm = 0 + mape = 0 + itend = itseg*irep + itoff = itend-itseg + do 2 ir = ir1 , nreal + it2 = itr(ir)+nodue(ir)-2 + if (it2 .ge. itend) then + ir1 = ir + go to 14 + end if +c if (short(ir).and.((ir.gt.1.and.short(ir-1)).or.(ir.lt.nreal + if (short(ir).and.((ir.gt.1.and.short(max(ir-1,1))).or. + * (ir.lt.nreal.and.short(ir+1)))) then + ib1 = (itr(ir)-itoff)/2 + ib2 = (it2-itoff)/2 + if (max(ib1,ib2).gt.47 .or. ir.gt.48 .or. + * min(ib1,ib2).lt.0) return +c +c Must have an odd number obe beats in a long bar. Auto-beam won't work +c + nip1(ib1) = ipr(ir) + nip2(ib2) = ipr(ir) +c +c nip1,2(ib) = 0 unless a real note starts,ends on bit ib; then = ip +c + maps = ibset(maps,ib1) + mape = ibset(mape,ib2) + do 3 ib = ib1 , ib2 + mapm = ibset(mapm,ib) +3 continue + end if +2 continue +14 continue + if (mapm .eq. 0) go to 13 +c +c Zero out bits from forced beams +c + maps = iand(maps,not(mapfb(irep))) + mapm = iand(mapm,not(mapfb(irep))) + mape = iand(mape,not(mapfb(irep))) +c +c Compare map with template. +c + do 4 it = 1 , nummask(ibmtyp) + masknow = mask(it,ibmtyp) + if (iand(masknow,mapm) .eq. masknow) then +c +c Find least significant bit in the mask to check start time +c + mtemp = masknow + maskm = masknow + do 5 is1 = 0 , 47 + if (iand(1,mtemp) .eq. 1) go to 6 + mtemp = ishft(mtemp,-1) +5 continue +6 continue + if (iand(ishft(1,is1),maps) .eq. 0) go to 4 +c +c is1 is the bit where the beam starts. Continue shifting to +c find most significant bit in the mask to check ending time +c + do 7 is2 = is1 , 47 + mtemp = ishft(mtemp,-1) + if (iand(1,not(mtemp)) .eq. 1) go to 8 +7 continue +8 continue +c +c is2 is now the bit on which the beam ends. +c + if (iand(ishft(1,is2),mape) .eq. 0) go to 4 +c +c Did we pick out a single note from the middle of a longer sequence? +c + if (nip1(is1) .eq. nip2(is2)) go to 4 +c +c We almost have a beam. Check equality of notes if needed. +c + if (eqonly(it,ibmtyp)) then + do 10 ip = nip1(is1) , nip2(is2) + if (nodur(ivx,ip) .ne. 8) then +c +c There is a non-1/8th note in this beam. Exit if not 2 quarters +c + if (is2-is1 .ne. 15) go to 4 +c +c Beam is 2 quarters long. Check if can split in half. +c + ithalf = 0 + do 20 iip = nip1(is1) , nip2(is2) + ithalf = ithalf+nodur(ivx,iip) + if (ithalf .gt. 16) go to 4 + if (ithalf .eq. 16) go to 21 +20 continue + print*,'Problem in findbeam, please call Dr. Don' + go to 4 +21 continue +c +c Otherwise, split in half by keeping only the first half. Other half will +c be picked up later, assuming masks are listed longest first. +c + is2 = is1+7 +c +c Reset maskm (since only used part of mask), used later to zero out +c bits that contain beams +c + maskm = 0 + do 15 is = is1 , is2 + maskm = ibset(maskm,is) +15 continue + go to 16 + end if +10 continue + end if +16 continue +c +c This is a beam. If last "effective" ends on odd 64th, add 1 more +c +c if (abs(mod(to(iand(255,ipl(ivx,nip2(is2)))) +c * +nodur(ivx,nip2(is2)),2.)) .gt. tol) then + if (abs(amod(to(ipl2(ivx,nip2(is2))) + * +nodur(ivx,nip2(is2))+.5*tol,2.)) .gt. tol) then + nip2(is2) = nip2(is2)+1 + end if + numbms(ivx) = numbms(ivx)+1 + numnew = numbms(ivx) + call logbeam(numnew,nip1(is1),nip2(is2)) +c +c Zero out the appropriate bits so these notes don't get used again +c + mapm = iand(mapm,not(maskm)) + if (mapm.eq.0) go to 13 + maps = iand(maps,not(maskm)) + mape = iand(mape,not(maskm)) + end if +4 continue +13 continue + return + end + subroutine findeonk(nptr1,nptr2,wovera,xelsk,dtmin,dtmax,eonk0) + parameter (nkb=3999,maxblks=9600) +c +c Compute an exponent eonk for use in the "flattened" formula for elemskips +c vs time. We must solve the eqution f = 0. Initial quess is eonk0. +c +c logical gotclef + common /c1omnotes/ nnodur,wminnh(nkb),nnpd(maxblks),durb(maxblks), + * iddot,nptr(nkb),ibarcnt,mbrest,ibarmbr, +c * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) + * ibaroff,udsp(nkb),wheadpt,sqzb(maxblks) + common /comtol/ tol + common /comeon/ eonk,ewmxk + eonk = eonk0 + niter = 0 +1 continue + ewmxk = f1eon(dtmax)**eonk + niter = niter+1 + esum = 0. + desum = 0. + do 2 iptr = nptr1 , nptr2 + targ = durb(iptr)/sqzb(iptr) + esum = esum+nnpd(iptr)*sqzb(iptr)*feon(targ) + detarg = sqrt(targ/2*(dtmax/targ)**eonk)*alog(dtmax/targ) + desum = desum+nnpd(iptr)*sqzb(iptr)*detarg +2 continue + f = wovera*feon(dtmin)-xelsk-esum + fp = wovera*sqrt(dtmin/2*(dtmax/dtmin)**eonk)*alog(dtmax/dtmin) + * -desum + if (abs(fp).lt.tol .or. abs(eonk-.5).gt..5 .or. niter.gt.100) then + call printl( + * 'Error in findeonk. Please send source to Dr. Don') + eonk = 0. + ewmxk = 1. + return + end if + dsoln = -f/fp + if (abs(dsoln) .lt. .1*tol) return +c +c Not converged yet, try again +c + eonk = eonk+dsoln + go to 1 + end + function fnote(nodur,ivx,ip,nacc) +c +c This return the real duration of a note +c + parameter (nm=24) + integer*4 nodur(nm,200),nacc(nm,200) + logical btest + ipback = ip + if (nodur(ivx,ip) .gt. 0) then + if (ip .gt. 1) then +c +c Check if this is last note of xtup +c + if (nodur(ivx,ip-1).eq.0) then + ipback = ip-1 + go to 2 + end if + end if + fnote = nodur(ivx,ip) + return + end if +2 continue +c +c Count back to prior non zero note. Start at ip to avoid neg index if ip=1. +c Count how many doubled xtups notes there are from ip-1 to first note. +c + ndoub = 0 + do 1 ip1m1 = ipback , 1 , -1 + if (nodur(ivx,ip1m1) .gt. 0) go to 4 + if (ip1m1.lt.ip .and. btest(nacc(ivx,ip1m1),18)) ndoub=ndoub+1 +1 continue +4 continue +c +c count forward to next non-0 nodur. Start at ip in case last note of xtup. +c + do 3 iip = ip , 200 +c +c Count doubled xtup notes from ip to end. +c + if (btest(nacc(ivx,iip),18)) ndoub = ndoub+1 + if (nodur(ivx,iip) .gt. 0) then +c fnote = nodur(ivx,iip)/float(iip-ip1m1) + fnote = nodur(ivx,iip)/float(iip-ip1m1+ndoub) + if (btest(nacc(ivx,ip),18)) then + fnote = 2*fnote + else if (btest(nacc(ivx,ip),27)) then + fnote = 1.5*fnote + else if (ip .gt. 1) then + if (btest(nacc(ivx,ip-1),27)) fnote = .5*fnote + end if + return + end if +3 continue + print*,' ' + call printl + * ('Probable misplaced barline or incorrect meter, stopping') + print*,'ivx,ip:',ivx,ip + call stop1() + end + subroutine g1etchar(lineq,iccount,charq) + parameter(nm=24) + common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, + * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 + logical lastchar,issegno,isheadr,isvolt,fbon + common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac + logical mrecord,mplay,endmac + character*1 charq + character*128 lineq,lnholdq +c +c Gets the next character out of lineq*128. If pointer iccount=128 on entry, +c then reads in a new line. Resets iccount. Ends program if no more input. +c + if (iccount .eq. 128) then + call read10(lineq,lastchar) + if (lastchar) return + if (.not.endmac) then + iccount = 0 + if (.not.mplay) nline = nline+1 + else + endmac = .false. + iccount = icchold + lineq = lnholdq + end if + if (mrecord) then + call m1rec1(lineq,iccount,ibarcnt,ibaroff,nbars,ndxm) + end if + end if + iccount = iccount+1 + charq = lineq(iccount:iccount) + return + end + subroutine g1etnote(loop,ifig,optimize,fulltrans) + parameter (nm=24,nkb=3999,mv=24576,maxblks=9600) + character*1 chax + logical twotrem + common /a1ll/ iv,ivxo(600),ipo(600),to(600),tno(600),nnl(nm), + * nv,ibar,mtrnuml,nodur(nm,200),lenbar,iccount, + * nbars,itsofar(nm),nib(nm,15),nn(nm), + * rest(nm,200),lenbr0,lenbr1,firstline,newmeter + common /c1omnotes/ nnodur,wminnh(nkb),nnpd(maxblks),durb(maxblks), + * iddot,nptr(nkb),ibarcnt,mbrest,ibarmbr, +c * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) + * ibaroff,udsp(nkb),wheadpt,sqzb(maxblks) + common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, + * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 + common /compage/ widthpt,ptheight,hoffpt,voffpt, + * nsyst,nflb,ibarflb(0:40), + * isysflb(0:40),npages,nfpb,ipagfpb(0:18),isysfpb(0:18), + * usefig,fintstf,gintstf,fracsys(30),nmovbrk,isysmb(0:30), + * nistaff(0:40) + common /c1ommvl/ nvmx(nm),ivmx(nm,2),ivx,fbar,nacc(nm,200) + common /comkeys/ nkeys,ibrkch(18),newkey(18),iskchb,idsig,isig1, + * mbrestsav,kchmid(18),ornrpt,shifton,barend,noinst,stickyS + logical lastchar,firstline,rest,loop,newmeter,fbon,issegno,barend, + * isheadr,fulbrp,usefig,isvolt,iskchb,kchmid,plusmin,ornrpt, + * stickyS + common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac + common /commus/ musize,whead20 + logical mrecord,mplay,endmac,shifton,gotclef,optimize + character*128 lineq,lnholdq + character*1 charq,dotq,dumq,durq,charlq + integer*2 mmidi + logical restpend,relacc,notmain,twoline,ismidi,crdacc,cdot + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + character*131072 bufq + integer*2 lbuf(maxblks) + common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq + logical novshrinktop,upslur,fontslur,ztrans, + * WrotePsslurDefaults,cstuplet + common /comnvst/ novshrinktop,cstuplet + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + character*51 literq(3),lyrerq(5) + common /comligfont/ isligfont + logical isligfont + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans + logical fulltrans + common /comsize/ isize(nm) + common /commidisig/ midisig + common /comis4bignv/ is4bignv,AIset + logical is4bignv,AIset + common /comshort/ shortfrac,codafrac,ishort,mbrsum,nmbr,nocodabn, + * poefa + real*4 poefa(125) + logical nocodabn + data literq + * /'Literal TeX string cannot start with 4 backslashes!', + * 'TeX string must have <129 char, end with backslash!', + * 'Type 2 or 3 TeX string can only start in column 1!'/ + data lyrerq + * /'pmxlyr string must end with " followed by blank!', + * 'pmxlyr string cannot extend past position 120!', + * 'There must be "a" or "b" here!', + * 'There must be "+" or "-" here!', + * 'There must be an integer here!'/ + cdot = .false. + twotrem = .false. +1 call g1etchar(lineq,iccount,charq) + if (charq .ne. ' ') charlq = charq + if (lastchar) then + if (index('/%',charlq) .eq. 0) then + print* + print*,'WARNING:' + print*,'Last non-blank character is "',charlq,'", not "/,%"' + print*,'ASCII code:',ichar(charlq) + write(15,'(/a)')'Last non-blank character is "'//charlq// + * '", not "/,%"' + write(15,'(a11,2x,i3)')'ASCII code:',ichar(charlq) +c +c Append " /" to last line. NB lastchar=.true. => ilbuf=nlbuf+1. +c + ilbuf = ilbuf-1 + lbuf(ilbuf) = lbuf(ilbuf)+2 + bufq = bufq(1:ipbuf)//' /' + write(15,*)'appending /' + print*,'appending /' + lineq = lineq(1:iccount)//' /' + lastchar = .false. + go to 1 + end if + return + end if + if (charq .eq. ' ') then + go to 1 + else if (charq.eq.'%' .and. iccount.eq.1) then + iccount = 128 + go to 1 +c +c Replacement 1/22/12 since gfortran 4.7 with -O was choking here! +c +c else if ((ichar(charq).ge.97.and.ichar(charq).le.103) .or. + else if (index('abcdefg',charq).gt.0 .or. + * charq.eq.'r') then +c +c This is a note/rest. gotclef is only used for checking for clef before "/" +c + if (cdot) go to 28 +c if (gotclef) gotclef=.false. + idotform = 0 + numnum = 0 + plusmin = .false. +28 nnl(ivx) = nnl(ivx)+1 + if (nnl(ivx) .gt. 200) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '>200 notes in line of music. Use smaller blocks!') + call stop1() + end if + dotq = 'x' +c +c Check if this is 'r ' and previous note was full-bar-pause +c + fulbrp = charq.eq.'r' .and. lineq(iccount+1:iccount+1) .eq.' ' + * .and. nnl(ivx).gt.1 .and. rest(ivx,max(1,nnl(ivx)-1)) .and. + * nodur(ivx,max(1,nnl(ivx)-1)) .eq. lenbar +2 call g1etchar(lineq,iccount,durq) + ic = ichar(durq) + if (ic.le.57 .and. ic.ge.48) then +c +c Digit +c + if (numnum .eq. 0) then + nnodur = ic-48 + numnum = 1 + go to 2 + else if (numnum .eq. 1) then + if (charq .eq. 'r') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only one digit allowed after rest symbol "r"!') + call stop1() + end if + numnum = 2 + if (plusmin) then + print* + print*,'*********WARNING*********' + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Before version 1.2, +/- was ignored if octave was!') + print*, + * 'explicitly specified. May need to edit old editions' + end if + go to 2 + else + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '>2 digits in note symbol!') + call stop1() + end if + else if (durq.eq.'d') then + dotq = durq + if (lineq(iccount+1:iccount+1) .eq. 'd') then + iddot = 1 + iccount = iccount+1 +c +c Since we flow out, double dots won't work with other dot options +c + end if + if (index('+-',lineq(iccount+1:iccount+1)) .gt. 0) then +c +c move a dot, provided a number follows. +c + call g1etchar(lineq,iccount,durq) + call g1etchar(lineq,iccount,durq) + if (index('0123456789-.',durq) .eq. 0) then +c +c Backup, exit the loop normally +c + iccount = iccount-2 + go to 2 + end if + call readnum(lineq,iccount,dumq,fnum) + if (index('+-',dumq) .gt. 0) then +c +c Vertical shift also +c + call g1etchar(lineq,iccount,durq) + if (index('0123456789-.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected number after 2nd +/- (shift dot)!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + end if + iccount = iccount-1 + end if + go to 2 + else if (index('<>',durq) .gt. 0) then +c +c Accidental shift +c +c if (index('fsn',lineq(iccount-1:iccount-1)) .eq. 0) then + if (index('fsnA',lineq(iccount-1:iccount-1)) .eq. 0) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, +c * 'Expected "f", "s", or "n" before "<" or ">"!') + * 'Expected "f", "s", "n" or "A" before "<" or ">"!') + call stop1() + end if + ipm = 1 + if (durq .eq. '<') ipm=-1 + call g1etchar(lineq,iccount,durq) + if (index('123456789.0',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected number after (accidental shift)!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + fnum = ipm*fnum + if (fnum.lt.-5.35 .or. fnum.gt.1.0) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Horizontal accidental shift must be >-5.35 and <1.0!') + call stop1() + end if + iccount = iccount-1 + go to 2 + else if (index('+-',durq) .gt. 0) then + if (charq .ne. 'r') then + if (index('fsnA',lineq(iccount-1:iccount-1)) .gt. 0) then + ipm = 1 + if (durq .eq. '-') ipm=-1 + if (index('0123456789',lineq(iccount+1:iccount+1)) + * .gt.0) then +c +c This may be start of accidental shift, but may be octave jump; then duration +c + icsav = iccount + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + if (index('+-',durq) .gt. 0) then +c +c This is an accid shift since there's a 2nd consecutive signed number. +c Check size of 1st number. +c + if (fnum .gt. 30.5) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Vertical accidental shift must be less than 31!') + call stop1() + end if + ipm = 1 + if (durq .eq. '-') ipm = -1 + call g1etchar(lineq,iccount,durq) + if (index('1234567890.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected 2nd number of accidental shift)!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + fnum = ipm*fnum + if (fnum.lt.-5.35 .or. fnum.gt.1.0) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Horiz. accidental shift must be >-5.35 and <1.0!') + call stop1() + end if + iccount = iccount-1 + go to 2 + else +c +c Not accid shift, reset, then flow out +c + iccount = icsav + end if + end if + end if + plusmin = .true. + if (numnum .eq. 2) then + print* + print*,'*********WARNING*********' + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Before version 1.2, +/- was ignored if octave was!') + print*, + * 'explicitly specified. May need to edit old editions' + end if + go to 2 +c +c It's a rest containing +|- . Must refer to a vertical shift. Read past. +c + else + call g1etchar(lineq,iccount,durq) + call readnum(lineq,iccount,durq,dum) + if (lineq(iccount-1:iccount-1).eq.'.') iccount=iccount-1 + iccount = iccount-1 + go to 2 + end if +c else if (index('ulare',durq) .gt. 0) then + else if (index('ularec',durq) .gt. 0) then + go to 2 + else if (index('LS',durq) .gt. 0) then +c +c Stemlength change +c + call g1etchar(lineq,iccount,durq) + if (index('.0123456789:',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'There must be a number or colon here!') + call stop1() + end if + if (durq .eq. ':') then + if (.not.stickyS) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Turned off sticky stemlegth changes without turning on!') + call stop1() + end if + stickyS = .false. + go to 2 + end if + call readnum(lineq,iccount,durq,dum) +c if (dum.lt..5 .or. dum.gt.4.) then + if ((durq.eq.'L'.and.dum.gt.20.).or. + * (durq.eq.'S'.and.dum.gt.4.)) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Stemlength change amount too big!') + call stop1() + end if + if (durq .ne. ':') then + iccount = iccount-1 + else + if (stickyS) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Turned on sticky stemshrinks when already on!') + call stop1() + end if + stickyS = .true. + end if + go to 2 + else if (index('fsn',durq) .gt. 0) then +c +c Check for midi-only accid. CANNOT coesist with accidental position tweaks, so +c MUST come right after "f,s,n" +c + if (lineq(iccount+1:iccount+1) .eq. 'i') iccount=iccount+1 + go to 2 + else if (durq .eq. 'p') then + fulbrp = charq.eq.'r' + if (.not. fulbrp) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'The option "p" only works with "r" (rest)!') + call stop1() + end if + go to 2 + else if (durq .eq. 'b') then + if (charq .ne. 'r') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'You entered "b"; I expected "rb"!') + call stop1() + else if (numnum .eq. 2) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'You entered "r" & "b" with two numbers!') + end if + go to 2 + else if (durq .eq. 'x') then +c +c Xtuplet. Count number of doubled notes (for unequal xtups) +c + if (btest(nacc(ivx,nnl(ivx)),18)) then + ndoub = 1 + else + ndoub = 0 + end if +c +c Will set all durations to 0 except last one. +c + call g1etchar(lineq,iccount,durq) + if (index('123456789T',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'First char after "x" in xtuplet must be "1"-"9" or "T"!') + call stop1() + end if + if (durq .eq. 'T') then +c +c Set a flag for checking 2nd note inputs if dot is moved +c + twotrem = .true. +c +c Check all x-tremolo inputs here; set fnum=2 +c + fnum = 2 + call getchar(lineq,iccount,durq) + if (index('0123 ',durq).eq.0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'First char after "T" in xtuplet must be "0"-"3" or blank!') + call stop1() + else if (durq .ne. ' ') then + call getchar(lineq,iccount,durq) + if (index('0123 ',durq).eq.0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'This char must be "0"-"3" or blank!') + call stop1() + else if (durq .ne. ' ') then + call getchar(lineq,iccount,durq) +c +c Probably blank unles other options entered +c + end if + end if + else +c +c durq is digit, normal xtup +c + call readnum(lineq,iccount,durq,fnum) +c +c Leaves durq at next char after number +c + if (fnum .gt. 99) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Xtuplet cannot have more than 99 notes!') + call stop1() + else if (index(' DFnd',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only legal characters here are " ","D","F","n"!') + call stop1() + end if + end if +c +c End of mandatory xtup inputs. Check for options. Note D,F,d must precede n. +c + if (index('DF',durq) .gt. 0) then +c +c Double xtup note to make an un= xtup. Here, number already set, but may also +c have used this before number was set. +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) + ndoub = 1 + call g1etchar(lineq,iccount,durq) + else if (durq .eq. 'd') then + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),27) + call g1etchar(lineq,iccount,durq) + end if + if (durq .eq. 'n') then +c +c Number alteration stuff. After 'n', require '+-123456789fs ', no more 'DF'. +c + numshft = 0 +30 call g1etchar(lineq,iccount,durq) + if (durq .eq. 'f') then + go to 30 + else if (index('+-',durq) .gt. 0) then + numshft = numshft+1 + if (numshft .eq. 3) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only 2 shifts are allowed after "n" in xtup!') + call stop1() + end if + call g1etchar(lineq,iccount,durq) + if (index('0123456789.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'This character should be a digit or "."!') + call stop1() + end if + call readnum(lineq,iccount,durq,snum) + iccount = iccount-1 +c if ((numshft.eq.1 .and. snum.gt.15.1) .or. + if ((numshft.eq.1 .and. snum.gt.64.) .or. + * (numshft.eq.2 .and. snum.gt.1.51)) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Shift number after "n" in xtup is out of range!') + call stop1() + end if + go to 30 + else if (durq .eq. 's') then +c +c Slope alteration for bracket +c + call getchar(lineq,iccount,durq) + if (index('+-',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'For slope adjustment, this character must be "+" or "-"!') + call stop1() + end if + call g1etchar(lineq,iccount,durq) + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'This character should be a digit!') + call stop1() + end if + call readnum(lineq,iccount,durq,snum) + iccount = iccount-1 + if (nint(snum) .gt. 15) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Slope adjustment cannot exceed 15!') + call stop1() + end if + go to 30 + else if (index('123456789',durq) .gt. 0) then +c +c Unsigned integer => alternate printed number +c + call readnum(lineq,iccount,durq,snum) + if (snum .gt. 15.1) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Alternate xtup number after "n" must be <16!') + call stop1() + end if + iccount = iccount-1 + go to 30 + else if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after "n" in xtup!') + call stop1() + end if + end if + ntup = nint(fnum) + do 6 itup = 2 , ntup + nodur(ivx,nnl(ivx)) = 0 + nnl(ivx) = nnl(ivx)+1 +110 call g1etchar(lineq,iccount,durq) + if (durq.eq.' ') then + go to 110 + else if (durq .eq. 'o') then +c +c Ornament in xtup. "o" symbol must come AFTER the affected note +c + call g1etchar(lineq,iccount,dumq) + if (index('(stmx+Tup._)e:>^bc',dumq) .eq. 0 ) then + if (index('fg',dumq) .gt. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Fermata or segno not allowed in xtuplet!') + else + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal ornament!') + end if + call stop1() + end if + if (dumq .eq. 'T') then +c +c Trill. may be followed by 't' and/or number. read 'til blank +c +29 call g1etchar(lineq,iccount,dumq) + if (dumq .ne. ' ') go to 29 + else if (dumq .eq. 'e') then + call g1etchar(lineq,iccount,dumq) + if (index('sfn?',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after "e" in edit. accid. symbol!') + call stop1() + end if + call g1etchar(lineq,iccount,dumq) + if (dumq .eq. '?') call g1etchar(lineq,iccount,dumq) + else if (dumq .eq. ':') then + if (lineq(iccount+1:iccount+1) .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '":" must be followed by blank in "o: "!') + call stop1() + else if (.not.ornrpt) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Turned off repeated ornaments before they were on!') + call stop1() + end if + ornrpt = .false. + else + call g1etchar(lineq,iccount,dumq) + end if + if (index('+- :',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in ornament symbol!') + call stop1() + end if + if (dumq .eq. ':') then + if (lineq(iccount+1:iccount+1) .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '":" must be followed by blank in "o: "!') + call stop1() + else if (ornrpt) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Turned on repeated ornaments but already on!') + call stop1() + end if + ornrpt = .true. + end if + if (index('+-',dumq) .gt. 0) then + if (index('0123456789',lineq(iccount+1:iccount+1)) + * .eq. 0) then + call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, + * 'There should be an integer here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + if (durq .eq. ':') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Cannot shift AND repeat an ornament!') + call stop1() + end if +c +c 12/7/03 Allow horizontal shift on any ornament, not just breath and ceas. +c + if (index('+-',durq) .gt. 0) then + if (index('.0123456789',lineq(iccount+1:iccount+1)) + * .eq. 0) then + call errmsg(lineq,iccount+1, + * ibarcnt-ibaroff+nbars+1, + * 'There should be a number here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + end if + end if + go to 110 + else if (index('st(){}',durq) .gt. 0) then +c +c Slur in xtup +c + iposn = 0 + numint = 0 +15 call g1etchar(lineq,iccount,dumq) + iposn = iposn+1 + if (index('udlbfnhtv',dumq) .gt. 0) then + if (dumq.eq.'t' .and. durq.eq.'t') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Cannot use "t" as an option on a tie!') + call stop1() + end if + go to 15 + else if (index('+-',dumq) .gt. 0) then + numint = numint+1 + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + if (numint .eq. 1) then + if (nint(fnum) .gt. 30) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Magnitude of slur height adjustment cannot exceed 30!') + call stop1() + end if + else if (numint .eq. 2) then + if (abs(fnum).gt.6.3) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Slur horiz shift must be in the range (-6.3,6.3)!') + call stop1() + end if + else +c +c Third signed integer, must be a midslur or curve spec. +c + if (abs(fnum).gt.31) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Slur midheight must be in the range (-31,31)!') + call stop1() + end if + if (durq .eq. ':') then +c +c Expecting curve parameters. Get two numbers +c + do 40 i = 1 , 2 + iccount = iccount+1 + fnum = ichar(lineq(iccount:iccount))-48 + if (abs(fnum-3.5) .gt. 3.6) then + call errmsg(lineq,iccount, + * ibarcnt-ibaroff+nbars+1, + * 'Slur curve parameter must be in range (0,7)!') + call stop1() + end if +40 continue + iccount = iccount+1 + end if + end if + iccount = iccount-1 + go to 15 + + else if (dumq .eq. 's') then +c +c What follows should be one or two signed numbers for adjustment of line break +c slur, end of 1st segment or start of second. +c + if (fontslur) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'May not use linebreak slur options with font-based slurs!') + call stop1() + end if + call g1etchar(lineq,iccount,dumq) + if (index('+-',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'This character must be "+" or "-"!') + call stop1() + end if + iccount = iccount+1 + call readnum(lineq,iccount,dumq,fnum) + if (nint(fnum) .gt. 30) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Magnitude of slur height adjustment cannot exceed 30!') + call stop1() + end if + if (index('+-',dumq) .gt. 0) then + iccount = iccount+1 + call readnum(lineq,iccount,dumq,fnum) + if (abs(fnum) .gt. 6.3) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Slur horiz shift must be in range (-6.3,6.3)!') + call stop1() + end if + end if + iccount = iccount-1 + go to 15 + else if (dumq .eq. 'H' .and. iposn.gt.1) then + if (lineq(iccount+1:iccount+1) .eq. 'H') + * iccount=iccount+1 + go to 15 + else if (dumq .eq. 'p') then +c +c local change in postscript slur/tie adjustment default +c + if (fontslur) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must use postscript slurs ("Ap") to use this option!') + call stop1() + end if + call g1etchar(lineq,iccount,dumq) + if (index('+-',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected "+" or "-" here!') + call stop1() + end if + call g1etchar(lineq,iccount,dumq) + if (index('st',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected "s" or "t" here!') + call stop1() + end if + go to 15 + else if (dumq .ne. ' ') then + ic = ichar(dumq) + if ((ic.ge.48.and.ic.le.57) .or. + * (ic.ge.65.and.ic.le.90)) then + if (iposn .eq. 1) then + if (durq.eq.'t' .and. fontslur) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Slur ID not allowed on non-postscript tie!') + call stop1() + end if + if (lineq(iccount+1:iccount+1).eq.'x') + * iccount = iccount+1 + go to 15 + end if + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Slur ID must be 2nd character in slur symbol!') + call stop1() + end if + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in slur symbol!') + call stop1() + end if + go to 110 + else if (index('0123456789#-nx_',durq) .gt. 0) then +c +c We have a figure. Only allow on 1st note of xtup +c + if (itup .ne. 2) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Figure in xtup only allowed on 1st note!') + call stop1() + else if (durq.eq.'x') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'No floating figures in xtuplets!') + call stop1() + end if + if (usefig .and. ivx.eq.1) ifig = 1 +26 call g1etchar(lineq,iccount,durq) +c if (index('0123456789#-n_.:',durq) .gt. 0) then + if (index('0123456789#-n_.:v',durq) .gt. 0) then + go to 26 + else if (durq .eq. 's') then + isligfont = .true. + go to 26 + else if (durq .eq. '+') then +c +c vertical offset, must be integer then blank +c + call g1etchar(lineq,iccount,durq) + if (index('123456789',durq) .ne. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Integer for vertical offset expected here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Vertical offset must terminate figure!') + call stop1() + end if + iccount = iccount-1 + go to 26 + else if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in figure in xtuplet!') + call stop1() + end if + go to 110 + else if (durq .eq. 'G') then + ngr = 1 +79 call g1etchar(lineq,iccount,charq) + if (index('123456789',charq) .gt. 0) then + call readnum(lineq,iccount,durq,fnum) + ngr = nint(fnum) + iccount = iccount-1 + go to 79 + else if (index('AWulxs',charq) .gt. 0) then + go to 79 + else if (charq .eq. 'm') then + call g1etchar(lineq,iccount,charq) + if (index('01234',charq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'A digit less than 5 must follow "m" in a grace note!') + call stop1() + end if + go to 79 + else if (charq .eq. 'X') then +c +c Space before main note +c + call g1etchar(lineq,iccount,charq) + if (index('0123456789.',charq) .gt. 0) then + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + go to 79 + else + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'A number must follow "X" in a grace note!') + call stop1() + end if + end if +c +c At this point, charq is first note name in rest (grace?) +c + do 71 igr = 1 , ngr + numnum = 0 + if (igr .gt. 1) then +75 call g1etchar(lineq,iccount,charq) + if (charq .eq. ' ') go to 75 + end if + if (index('abcdefg',charq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'In grace, expected "a"-"g"!') + call stop1() + end if +78 call g1etchar(lineq,iccount,charq) + if (charq .ne. ' ') then + if (index('1234567',charq) .gt. 0) then + if (numnum .eq. 1) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only one of "+-1234567" allowed here in grace!') + call stop1() + end if + numnum = 1 + go to 78 + else if (index('+-nfs',charq) .gt. 0) then + go to 78 + end if +c +c Digits are possible octave numbers +c + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after note name in grace!') + call stop1() + end if +71 continue + go to 110 + else if (durq .eq. chax(92)) then + call chklit(lineq,iccount,literr) + if (literr .gt. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * literq(literr)) + call stop1() + end if + go to 110 + else if (durq .eq. '"') then +c +c pmx lyric +c + call chkpmxlyr(lineq,iccount,lyrerr) + if (lyrerr .gt. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * lyrerq(lyrerr)) + call stop1() + end if + go to 110 + else if (durq .eq. 'M') then +c +c Temporary trap until I get around putting this in pmxb +c + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Macros not yet allowed in xtuplets!') + call stop1() + else if (durq .eq. 'X') then + call g1etx(lineq,iccount,shifton, + * ibarcnt-ibaroff+nbars+1,udsp(ibarcnt+nbars+1),wheadpt) + go to 110 + else if (durq .eq. 'z') then +c +c Chord note in xtup. Read past for now. +c +33 call g1etchar(lineq,iccount,durq) + if (durq .ne. ' ') go to 33 + go to 110 + else if (durq .eq. 'D') then +c +c Dynamic mark +c + call checkdyn(lineq,iccount,ibarcnt-ibaroff+nbars+1) + go to 110 + else if (durq .eq. '%') then + if (iccount .ne. 1) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Comment must have "%" in column 1!') + call stop1() + end if + iccount = 128 + go to 110 + else if (durq .eq. '?') then + call getchar(lineq,iccount,durq) + if (durq .eq. ' ') then + iccount = iccount-1 + go to 110 + end if + if (durq .ne. '-') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expecting "-"') + call stop1() + end if + call getchar(lineq,iccount,durq) + if (index('0123456789.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expecting number') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + go to 110 +c +c 140215 Allow clef change inside xtup +c + else if (durq .eq. 'C') then + call g1etchar(lineq,iccount,durq) + if (.not.(index('tsmanrbf',durq).gt.0 .or. +c * (ichar(durq).ge.48 .and. ichar(durq).le.55))) then + * (ichar(durq).ge.48 .and. ichar(durq).le.56))) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must have t,s,m,a,n,r,b,f or 0-8 after C!') + call stop1() + end if +c gotclef = .true. + go to 110 +c+++ + else if (durq.eq.']' .and. lineq(iccount+1:iccount+1).eq.'[' + * .and. lineq(iccount+2:iccount+2).eq.' ') then + iccount = iccount+2 + go to 110 +c+++ +c +c Added 200118 to allow dot to be moved on 2nd note of 2-note tremolo +c + end if +c +c End of xtup options. At this point symbol can only be note or rest +c + if (index('abcdefgr',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'In xtup, this character is not allowed!') + call stop1() + end if +7 call g1etchar(lineq,iccount,durq) + if (index('12345678ulcb',durq) .gt. 0) then + go to 7 + else if (index('sfn',durq) .gt. 0) then +c +c Check for MIDI-only accidental. Cannot coexist with accid. pos'n shift. +c + if (lineq(iccount+1:iccount+1) .eq. 'i') iccount=iccount+1 + go to 7 + else if (index('+-<>',durq) .gt. 0) then +c +c May have either octave jump or shifted accid. on main xtup note +c + if (index('+-',durq).gt.0 .and. + * index('01234567890',lineq(iccount+1:iccount+1)).eq.0) + * go to 7 + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + go to 7 + else if (index('DF',durq) .gt. 0) then +c +c Double an xtup note to make an unequal xtup +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) + ndoub = ndoub+1 + go to 7 + else if (durq .eq. 'd') then + if (twotrem) then +c +c 2-note trem, get shift +c + call g1etchar(lineq,iccount,durq) + if (index('+-',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected +/- for shifted dot on end of 2-note trem!') + call stop1() + end if + call g1etchar(lineq,iccount,durq) + if (index('0123456789.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected number here!') + call stop1() + end if + call readnum(lineq,iccount,dumq,fnum) + if (index('+-',dumq) .gt. 0) then +c +c Vertical shift also +c + call g1etchar(lineq,iccount,durq) + if (index('0123456789-.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected number after 2nd +/- (shift dot)!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + end if + iccount = iccount-1 + go to 7 + else + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),27) + end if + go to 7 + else if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal option on xtuplet note!') + call stop1() + end if + if (itup .eq. ntup-ndoub) go to 3 +6 continue +3 continue +c +c 6==End of loop for xtuplet input +c + else if (durq .eq. 'm') then +c +c Multi-bar rest: next 1 or two digits are # of bars. +c + if (mod(itsofar(iv),lenbar) .ne. 0) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Multibar rest must start at beginning of bar!') + call stop1() + else if (iv.eq.1.and.ibarmbr.gt.0) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Multibar rest only OK at one time per block!') + call stop1() + end if +c +c For some purposes, pretend its one bar only +c + nodur(iv,nnl(iv)) = lenbar + ibarmbr = nbars+1 + mbrest = 0 +c20 call g1etchar(lineq,iccount,durq) + call g1etchar(lineq,iccount,durq) + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected an integer after "rm"!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + mbrest = nint(fnum) +c iccount = iccount-1 + if (nv .gt. 1) then + if (iv .eq. 1) then + mbrestsav = mbrest + else + if (mbrest .ne. mbrestsav) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must enter same multi-bar rest in every voice!') + call stop1() + end if + end if +c +c Zero out mbrestsav so can check at end of input block whether +c all voices have one +c + if (iv .eq. nv) mbrestsav=0 + end if + if (durq .eq. 'n') then +c +c Get new height +c + call g1etchar(lineq,iccount,durq) + if (index('+-123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected an integer after "rm[x]n"!') + call stop1() + end if + if (index('+-',durq).ne.0) iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + end if + if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after "rm"!') + call stop1() + end if + else if (durq .eq. '.') then +c +c Dotted pattern. Close out note. Mult time by 3/4. +c Set time for next note to 1/4. Start the note. +c + idotform = 1 + else if (durq .eq. ',') then + idotform = 3 +c +c Now flow to duration setting, as if durq=' ' +c + else if (index('oL',durq) .gt. 0) then +c +c Suppress full bar rest, or look left for height +c + if (charq .ne. 'r') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"o","L" options only legal for rest, not note!') + call stop1() + end if + go to 2 + else if (index('DF',durq) .gt. 0) then +c +c Double note for xtup. Must check here in case "D" or "F" came before "x" or on +c last note of xtup. Need to flag it in pmxa since affects horiz. spacing. +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) + go to 2 + else if (durq .eq. 'A') then +c +c Main note accidental option +c + call getchar(lineq,iccount,durq) + if (index('o+-<>',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"o",+","-","<",">" are the only legal options here!') + call stop1() + end if +c +c Need more stuff here +c + if (durq .ne. "o") then +c +c Back up 1, flow out, will get +|-|<|> next loop preceded by "A", and will +c proceed to number input checking +c + iccount = iccount-1 + end if + go to 2 + else if (durq .eq. 'T') then +c +c Single stem tremolo. Only option (optional) is 1,2,3, or 4. +c + call getchar(lineq,iccount,durq) + if (index('1234',durq) .eq. 0) iccount = iccount-1 + go to 2 + else if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character!') + print*,'ASCII code:',ichar(durq) + call stop1() + end if +c +c End of block for note options. +c +c Set the duration +c + if (idotform .gt. 0) then + if (idotform .eq. 1) then + nodur(ivx,nnl(ivx)) = i1fnodur(nnodur,dotq)*3/2 + else if (idotform .eq. 2) then + nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx)-1)/3 + else if (idotform .eq. 3) then + nodur(ivx,nnl(ivx)) = i1fnodur(nnodur,dotq) + else if (idotform .eq. 4) then + nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx)-1)/2 + end if + else if (ibarmbr.ne.nbars+1 .and. .not.fulbrp) then + nodur(ivx,nnl(ivx)) = i1fnodur(nnodur,dotq) +c +c Check for double dot +c + if (iddot .eq. 1) then + nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx))*7/6 + iddot = 0 + end if + else if (fulbrp) then + nodur(ivx,nnl(ivx)) = lenbar +c +c Use a one-line function to set nnodur. It gives inverse of ifnodur. +c + nnodur = index('62514x0x37', + * chax(48+int(log(.1+lenbar)/.69315)))-1 + fulbrp = .false. + end if + rest(ivx,nnl(ivx)) = charq.eq.'r' +c +c If inside forced beam, check if note is beamable +c + if (fbon) then + if (nodur(ivx,nnl(ivx)) .lt. 16) go to 120 + if (nnl(ivx) .gt. 1) then + if (nodur(ivx,nnl(ivx)-1) .eq. 0) go to 120 + end if + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Unbeamable thing in forced beam!') + call stop1() + end if +120 continue +c +c Get number of prior bars for later check on whether note spans bar line +c + nbb4 = itsofar(ivx)/lenbar + itsofar(ivx) = itsofar(ivx)+nodur(ivx,nnl(ivx)) + if (mod(itsofar(ivx),lenbar) .eq. 0) then + nbars = nbars+1 + if (shifton) barend = .true. +c +c Will check barend when 1st note of next bar is entered. +c + if (nbars .gt. 15) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Cannot have more than 15 bars in an input block!') + call stop1() + end if + nib(ivx,nbars) = nnl(ivx) + if (firstline .and. lenbar.ne.lenbr1) then +c +c Just finished the pickup bar for this voice. +c + if (itsofar(ivx) .ne. lenbr0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Pickup bar length disagrees with mtrnum0!') + call stop1() + end if + lenbar = lenbr1 + itsofar(ivx) = 0 + end if + else if (barend) then + if (shifton) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Bar ended with user-defined shift still on!') + call stop1() + end if + barend = .false. + else if (itsofar(ivx)/lenbar .gt. nbb4) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'This note spans a bar line!') + call stop1() + end if + if (idotform.eq.1 .or. idotform.eq.3) then + call g1etchar(lineq,iccount,charq) + if (index('abcedfgr',charq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected note name or "r" here!') + call stop1() + end if + idotform = idotform+1 + numnum = 1 + go to 28 + end if +c +c End of sub block for note-rest +c + else if (charq .eq. 'z') then + call g1etchar(lineq,iccount,charq) + if (index('abcdefg',charq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected chord note name here!') + call stop1() + end if +25 call g1etchar(lineq,iccount,durq) +c if (index('dre12345678',durq) .gt. 0) then + if (index('dre12345678c',durq) .gt. 0) then + go to 25 + else if (index('fsn',durq) .gt. 0) then +c +c Check for midi-only accid. CANNOT coesist with accidental position tweaks, so +c MUST come right after "f,s,n" +c + if (lineq(iccount+1:iccount+1) .eq. 'i') iccount=iccount+1 + go to 25 + else if (durq .eq. 'A') then + if (index('fsn',lineq(iccount-1:iccount-1)) .eq. 0) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Must have "f,s,n" before "A" in chord note!') + call stop1() + end if + go to 25 + else if (index('<>',durq) .gt. 0) then + if (index('fsnA',lineq(iccount-1:iccount-1)) .eq. 0) then +c if (index('fsncA',lineq(iccount-1:iccount-1)) .eq. 0) then ! Causes problems + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Must have "f,s,n,A" before "<" or ">"!') + call stop1() + end if + call g1etchar(lineq,iccount,durq) + if (index('1234567890.',durq) .eq. 0) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Expected a number to start here for accidental shift!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + go to 25 + else if (index('+-',durq) .gt. 0) then + if (index('1234567890.',lineq(iccount+1:iccount+1)) .eq. 0) + * go to 25 +c +c Number or '.' (durq) follows +/- . Get it. +c + call g1etchar(lineq,iccount,durq) + if (durq .eq. '.' .and. index('1234567890', + * lineq(iccount+1:iccount+1)) .eq. 0) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * '"." here must be followed by a digit!') + call stop1() + else if (index('sfndA',lineq(iccount-2:iccount-2)).eq.0) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Number after +/- must follow "d,s,f,n,A"!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + if (index('+-',durq) .eq. 0) then + iccount = iccount-1 + go to 25 + end if +c +c 2nd +/- +c + call g1etchar(lineq,iccount,durq) + if (durq .eq. '.') call g1etchar(lineq,iccount,durq) + if (index('1234567890',durq) .eq. 0) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Expected a number here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + go to 25 + else if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in chord note!') + call stop1() + end if + else if (charq .eq. 'G') then + ngr = 1 +9 call g1etchar(lineq,iccount,charq) + if (index('123456789',charq) .gt. 0) then + call readnum(lineq,iccount,durq,fnum) + ngr = nint(fnum) + iccount = iccount-1 + go to 9 + else if (index('AWulxs',charq) .gt. 0) then + go to 9 + else if (charq .eq. 'm') then + call g1etchar(lineq,iccount,charq) + if (index('01234',charq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'A digit less than 5 must follow "m" in a grace note!') + call stop1() + end if + go to 9 + else if (charq .eq. 'X') then +c +c Space before main note +c + call g1etchar(lineq,iccount,charq) + if (index('0123456789.',charq) .gt. 0) then + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + go to 9 + else + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'A number must follow "X" in a grace note!') + call stop1() + end if + end if +c +c At this point, charq is first note name in rest (grace?) +c + do 19 igr = 1 , ngr + numnum = 0 + if (igr .gt. 1) then +55 call g1etchar(lineq,iccount,charq) + if (charq .eq. ' ') go to 55 + end if + if (index('abcdefg',charq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'In grace, expected "a"-"g"!') + call stop1() + end if +18 call g1etchar(lineq,iccount,charq) + if (charq .ne. ' ') then + if (index('1234567',charq) .gt. 0) then + if (numnum .eq. 1) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only one of "+-1234567" allowed here in grace!') + call stop1() + end if + numnum = 1 + go to 18 +c else if (index('nfs',charq) .gt. 0) then + else if (index('+-nfs',charq) .gt. 0) then + go to 18 + end if +c +c Digits are possible octave numbers +c + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after note name in grace!') + call stop1() + end if +19 continue + else if (charq .eq. chax(92)) then + call chklit(lineq,iccount,literr) + if (literr .gt. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * literq(literr)) + call stop1() + end if + else if (charq .eq. '"') then +c +c pmx lyric +c + call chkpmxlyr(lineq,iccount,lyrerr) + if (lyrerr .gt. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * lyrerq(lyrerr)) + call stop1() + end if + else if (charq .eq. 'o') then +c +c Ornament on non-xtup note. "o" symbol must come AFTER the affected note +c + if (nnl(ivx) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"o" must be in same input block, after affected note!') + call stop1() + end if + call g1etchar(lineq,iccount,dumq) +c if (index('(stmgx+Tupf._)e:>^bc',dumq) .eq. 0 ) then + if (index('(stmgx+Tupf._)e:>^bcCG',dumq) .eq. 0 ) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal ornament!') + call stop1() + end if + if (dumq .eq. ':') then + call g1etchar(lineq,iccount,dumq) + if (dumq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected blank after "o:"!') + call stop1() + else if (.not.ornrpt) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Turned off repeated ornaments before they were on!') + call stop1() + end if + ornrpt = .false. + else if (dumq .eq. 'g') then + if (issegno) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Sorry, only one "segno" per input block!') + call stop1() + else if (ivx .ne. 1) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'segno can only be in voice 1!') + call stop1() + end if + issegno = .true. +12 call g1etchar(lineq,iccount,dumq) + if (dumq.eq.'-' .or. + * (ichar(dumq).ge.48.and.ichar(dumq).le.58)) go to 12 + if (dumq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in segno ornament symbol!') + call stop1() + end if + else if (dumq .eq. 'T') then +c +c Trill. may be followed by 't' and/or number. read 'til blank +c +22 call g1etchar(lineq,iccount,dumq) + if (dumq .eq. ':') then + if (lineq(iccount+1:iccount+1) .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected blank after ":"!') + call stop1() + end if + go to 32 + else if (dumq .ne. ' ') then + go to 22 + end if + else if (dumq .eq. 'f') then + call g1etchar(lineq,iccount,dumq) + if (index(' d+-:',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after "f" in fermata ornament symbol!') + call stop1() + end if + if (dumq .eq. 'd') call g1etchar(lineq,iccount,dumq) + if (dumq .eq. ':') go to 32 + else if (dumq .eq. 'e') then + call g1etchar(lineq,iccount,dumq) + if (index('sfn?',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after "e" in edit. accid. symbol!') + call stop1() + end if + call g1etchar(lineq,iccount,dumq) + if (dumq .eq. '?') call g1etchar(lineq,iccount,dumq) + else + call g1etchar(lineq,iccount,dumq) + end if + if (index('+- :',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in ornament symbol!') + call stop1() + end if + if (index('+-',dumq) .gt. 0) then + if (index('0123456789',lineq(iccount+1:iccount+1)).eq.0) then + call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, + * 'There should be an integer here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + if (durq .eq. ':') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Cannot shift AND repeat an ornament!') + call stop1() + end if +c +c 12/7/03 Allow horizontal shift on any ornament, not just breath and caes. +c + if (index('+-',durq) .gt. 0) then + if (index('.0123456789',lineq(iccount+1:iccount+1)) + * .eq. 0) then + call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, + * 'There should be a number here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + end if + end if +32 continue + if (dumq .eq. ':') then + if (lineq(iccount+1:iccount+1) .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '":" must be followed by blank in "o: "!') + call stop1() + else if (ornrpt) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Turned on repeated ornaments but already on!') + call stop1() + end if + ornrpt = .true. + end if + else if (index('st(){}',charq) .gt. 0) then + numint = 0 + iposn = 0 +8 call g1etchar(lineq,iccount,dumq) + iposn = iposn+1 + if (charq.eq.'t' .and. dumq.eq.'t') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Cannot use "t" as an option on a tie!') + call stop1() + end if + if (index('udltb+-fnhHpsv ',dumq) .eq. 0) then +c +c Check for explicit ID code. +c + ic = ichar(dumq) + if (ic.lt.48 .or. (ic.gt.57.and.ic.lt.65) .or. + * ic.gt.90) then +c +c Not 0-9 or A-Z, so exit +c + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in slur symbol!') + call stop1() + else +c +c It is a possible ID code. Right place? +c + if (iposn .ne. 1) then +c +c Slur ID is not 2nd! +c + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Slur ID must be second character in slur symbol!') + call stop1() + else if (charq.eq.'t' .and. fontslur) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Slur ID not allowed on non-postscript tie!') + call stop1() + else if (lineq(iccount+1:iccount+1).eq.'x') then + iccount = iccount+1 + end if + end if +c +c Slur ID is OK. Note it cannot be "H" at this point.. +c + go to 8 + else if (dumq .eq. 'H') then + if (iposn .eq. 1) go to 8 +c +c "H" is NOT an ID code. +c + if (.not.fontslur .and. charq.eq.'t') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Cannot reshape postscript ties this way!') + call stop1() + end if + if (lineq(iccount+1:iccount+1) .eq. 'H') then + iccount=iccount+1 + iposn = iposn+1 + end if + go to 8 + else if (index('fh',dumq).gt.0 .and. .not.fontslur + * .and. charq.eq.'t') then +c +c 3/9/03 Can't reshape postscript tie. +c + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Cannot reshape postscript ties this way!') + call stop1() + else if (dumq .eq. 'p') then +c +c local change in postscript slur/tie adjustment default +c + if (fontslur) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must use postscript slurs ("Ap") to use this option!') + call stop1() + end if + call g1etchar(lineq,iccount,dumq) + if (index('+-',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected "+" or "-" here!') + call stop1() + end if + call g1etchar(lineq,iccount,dumq) + if (index('st',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected "s" or "t" here!') + call stop1() + end if + iposn = iposn+2 + go to 8 + end if + if (index('udltbfnh',dumq) .gt. 0) then + go to 8 + else if (index('+-',dumq) .gt. 0) then + numint = numint+1 + if (fontslur .and. charq.eq.'t') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"+|-" for slur height only allowed in "s"-slurs!') + call stop1() + end if + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + if (numint .eq. 1) then + if (nint(fnum) .gt. 30) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Magnitude of slur height adjustment cannot exceed 30!') + call stop1() + end if + else if (numint .eq. 2) then + if (abs(fnum) .gt. 6.3) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Slur horiz shift must be in range (-6.3,6.3)!') + call stop1() + end if + else +c +c Third signed integer, must be a midslur or curve spec. +c + if (abs(fnum).gt.31) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Slur midheight must be in the range (-31,31)!') + call stop1() + end if + if (durq .eq. ':') then +c +c Expecting curve parameters. Get two numbers +c + do 41 i = 1 , 2 + iccount = iccount+1 + fnum = ichar(lineq(iccount:iccount))-48 + if (abs(fnum-3.5) .gt. 3.6) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Slur curve parameter must be in range (0,7)!') + call stop1() + end if +41 continue + iccount = iccount+1 + end if + end if + iccount = iccount-1 + go to 8 + else if (dumq .eq. 's') then +c +c What follows should be one or two signed numbers for adjustment of line break +c slur, end of 1st segment or start of second. +c + if (fontslur) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'May not use linebreak slur options with font-based slurs!') + call stop1() + end if + call g1etchar(lineq,iccount,dumq) + if (index('+-',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'This character must be "+" or "-"!') + call stop1() + end if + iccount = iccount+1 + call readnum(lineq,iccount,dumq,fnum) + if (nint(fnum) .gt. 30) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Magnitude of slur height adjustment cannot exceed 30!') + call stop1() + end if + if (index('+-',dumq) .gt. 0) then + iccount = iccount+1 + call readnum(lineq,iccount,dumq,fnum) + if (abs(fnum) .gt. 6.3) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Slur horiz shift must be in range (-6.3,6.3)!') + call stop1() + end if + end if + iccount = iccount-1 + go to 8 + else if (dumq .eq. 'H' .and. iposn.gt.1) then + if (lineq(iccount+1:iccount+1) .eq. 'H') iccount=iccount+1 + go to 8 + end if + else if (charq .eq. '?') then + call getchar(lineq,iccount,durq) + if (durq .eq. ' ') then + iccount = iccount-1 + else + if (durq .ne. '-') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expecting "-"!') + call stop1() + end if + call getchar(lineq,iccount,durq) + if (index('0123456789.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expecting number!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + end if + else if ((ichar(charq).ge.48.and.ichar(charq).le.57) .or. + * index('#-nx_',charq) .gt. 0) then +c +c We have a figure. Must come AFTER the note it goes under +c + if (itsofar(ivx).eq.0 .and. + * (.not.firstline.or.lenbr0.eq.0.or.lenbar.eq.lenbr0)) then +c +c Figure before first note in block +c + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Cannot put figure before first note in block!') + call stop1() + end if + if (charq.eq.'x') then + indxb = index(lineq(iccount:128),' ') + if (indxb .lt. 5) then + call errmsg(lineq,iccount+indxb-1,ibarcnt-ibaroff+nbars+1, + * 'Cannot have a blank here in floating figure!') + call stop1() + end if + end if + if (usefig) ifig = 1 +5 call g1etchar(lineq,iccount,charq) + if (index(' 0123456789#-nx_.:+sv',charq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in figure!') + call stop1() + else if (charq .eq. '+') then +c +c vertical offset, must be integer, then blank +c + call g1etchar(lineq,iccount,charq) + if (index('123456789',charq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Integer for vertical offset expected here!') + call stop1() + end if + call readnum(lineq,iccount,charq,fnum) + if (charq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Vertical offset must terminate figure!') + call stop1() + end if + iccount = iccount-1 + go to 5 + else if (charq .eq. 's') then + isligfont = .true. + end if + if (charq .ne. ' ') go to 5 + else if (charq .eq. '[') then + if (fbon) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Started forced beam while another was open!') + call stop1() + end if + fbon = .true. +17 call g1etchar(lineq,iccount,charq) + if (index('uljhf:',charq) .gt. 0) then + go to 17 + else if (index('+-',charq) .gt. 0) then + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + go to 17 + else if (charq .eq. 'm') then +c +c Forced multiplicity, next char should be 1-4 +c + call g1etchar(lineq,iccount,charq) + if (index('1234',charq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Forced multiplicity for a beam must be 1, 2, 3, or 4!') + call stop1() + end if + go to 17 + else if (charq .ne. ' ') then + if (index('0123456789',charq) .gt. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'After "[", digits must now be preceeded by "+" or "-"!') + print*,'You will have to edit older sources to meet this rqmt,' + print*,'but it was needed to allow 2-digit height adjustments.' + print*,'Sorry for the inconvenience. --The Management' + else + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after [!') + end if + call stop1() + end if + else if (charq .eq. ']') then + if (.not.fbon) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Forced beam stop with no corresponding start!') + call stop1() + end if + call g1etchar(lineq,iccount,charq) + if (charq .eq. '-') then + if (lineq(iccount+1:iccount+2) .ne. '[ ') then + call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, + * 'Only sequence allowed here is "[ "!') + call stop1() + else + iccount = iccount+2 + end if + else if (charq .eq. '[') then + if (lineq(iccount+1:iccount+1) .ne. ' ') then + call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, + * 'This character must be a blank!') + call stop1() + end if + else +c +c Forced beam is really ending +c + fbon = .false. + if (charq .eq. 'j') then + if (lineq(iccount+1:iccount+1) .ne. ' ') then + call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, + * 'This character must be a blank!') + call stop1() + end if + else if (charq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"]" must be followed by blank, "j", "-", or "["!') + call stop1() + end if + end if + else if (charq .eq. 'D') then +c +c Dynamic mark +c + if (nnl(ivx) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"D" must not come before any notes have been entered!') + call stop1() + end if + call checkdyn(lineq,iccount,ibarcnt-ibaroff+nbars+1) + else if (index('lhw',charq) .gt. 0) then +c +c Save position for later check +c + icclhw = iccount + call g1etchar(lineq,iccount,durq) + if (index('0123456789.+- ',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after "l", "w", or "h"!') + call stop1() + end if + isheadr = isheadr .or. charq .eq. 'h' + if (index(' +-',durq) .gt. 0) then +c +c There is a header (or lower string?) +c + if (index('+-',durq) .gt. 0) then +c +c User-defined vert offset (\internote). +c + if (charq .ne. 'h') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"+" or "-" not permitted here!') + call stop1() + end if +c +c Have "h" followed by +/- . Check for digit. +c Can blow durq since not using fnum for now, but... +c + call g1etchar(lineq,iccount,durq) + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'There must be a digit here!') + call stop1() + end if +c +c Have "h" followed by +/- followed by a digit. No need to get the number. +c +c call readnum(lineq,iccount,durq,fnum) + end if + if (charq .ne. 'w') then +c +c Header or lower string. +c + if (icclhw .ne. 1) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * '"h" or "l" must be first character in line!') + call stop1() + end if +c +c Read past the next line, which has the string. +c + call read10(charq,lastchar) + nline = nline+1 + iccount = 128 + else + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Symbol "w" (width) must be followed by a digit!') + call stop1() + end if + else +c +c Height or width change spec. Check if at start of piece. +c + if (ibarcnt .gt. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Symbol must go at top of first input block!') + call stop1() + end if + call readnum(lineq,iccount,durq,dimen) +c +c Check units. Convert to points +c + if (durq .eq. ' ' .or. durq .eq. 'p') then + dimen = dimen+.5 + else if (durq .eq. 'i') then + dimen = dimen*72+.5 + else if (durq .eq. 'm') then + dimen = dimen/25.4*72+.5 + else + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal unit; must be "p","i",or"m"!') + call stop1() + end if +c +c 151211 fix. May have extra character. +c + if (index('pim',durq) .gt. 0) then +c +c Get another character, see if it's blank +c + if (lineq(iccount+1:iccount+1) .ne. ' ') then + call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, + * 'This character should be a blank!') + call stop1() + end if + end if + if (charq .eq. 'h') then + ptheight = int(dimen) + else + widthpt = int(dimen) + end if + end if + else if (charq .eq. 'm') then +c +c Time signature change. Only allow at beginning of block. +c mtrnuml, mtrdenl (logical) and p (printable) will be input. +c mtrnuml=0 initially. (In common) +c +c Check whether at beginning of a block +c + if (ivx.ne.1 .or. nnl(1).ne.0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Meter change only OK in voice 1, at start of block!') + print*,'voice number is',ivx + call stop1() + end if + newmeter = .true. + if (index('o0123456789',lineq(iccount+1:iccount+1)).eq.0) then + call errmsg(lineq,iccount+1,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in "m" command for meter change!') + call stop1() + end if + call readmeter(lineq,iccount,mtrnuml,mtrdenl) + if (mtrnuml .eq. 0) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Digit 0 not allowed here!') + call stop1() + end if + call readmeter(lineq,iccount,mtrnmp,mtrdnp) +c +c Read past printed time signature; not used in pmxa. +c + lenbeat = i1fnodur(mtrdenl,'x') + lenmult = 1 + if (mtrdenl .eq. 2) then + lenbeat = 16 + lenmult = 2 + end if + lenbar = lenmult*mtrnuml*lenbeat + mtrnuml = 0 + else if (charq .eq. 'C') then + call g1etchar(lineq,iccount,durq) + if (.not.(index('tsmanrbf',durq).gt.0 .or. + * (ichar(durq).ge.48 .and. ichar(durq).le.56))) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must have t,s,m,a,n,r,b,f or 0-8 after C!') + call stop1() + end if + else if (charq .eq. 'R') then + if (ivx .ne. 1) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Repeats can only go in voice 1!') + call stop1() + end if +c10 call g1etchar(lineq,iccount,durq) +c if (index('lrdDbz',durq) .gt. 0) go to 10 +c if (durq .ne. ' ') then +c call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, +c * 'Illegal character after "R" (repeat/double bar)!') +c call stop1() +c end if + call g1etchar(lineq,iccount,durq) + call g1etchar(lineq,iccount,dumq) + if (index('l Xr Xd XD Xb Xz XlrXdlX',durq//dumq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after "R*" (repeat/double bar)!') + call stop1() + end if + if (dumq .ne. ' ') then + call g1etchar(lineq,iccount,durq) + if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must have blank after "R**" (repeat/double bar)!') + call stop1() + end if + end if + else if (charq .eq. 'V') then +c +c Ending +c + if (iv .ne. 1) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Voltas are only allowed in voice #1!') + call stop1() + else if (isvolt) then + print* + print*,'*******WARNING********' + write(15,'(/,a)')'*******WARNING********' + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'There is more than one volta in this input block.!') + print*,'This may work in a score, but WILL NOT work in parts.' + print*, + *'Safest to have only 1 volta per block, at the start of the block' + write(15,'(a)') + * 'This may work in a score, but WILL NOT work in parts.' + write(15,'(a)') + *'Safest to have only 1 volta per block, at the start of the block' + end if + isvolt = .true. + lvoltxt = 0 +11 call g1etchar(lineq,iccount,durq) + if (durq .ne.' ') then + go to 11 + end if + else if (charq .eq. 'B') then + continue + else if (charq .eq. 'P') then + if (ivx.ne.1 .or. nnl(1).ne.0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only allowed at beginning of block!') + call stop1() + end if +16 call g1etchar(lineq,iccount,durq) + if (durq.eq.'l'.or.durq.eq.'r'.or.(ichar(durq).ge.48 .and. + * ichar(durq).le.57)) go to 16 + if (durq .eq. 'c') then +c +c Expect a centered name, and it has to be last option +c + call g1etchar(lineq,iccount,durq) + if (durq .eq. '"') then +c +c Quoted name, go to next quote mark +c + do 35 iccount = iccount+1 , 127 + if (lineq(iccount:iccount).eq.'"' .and. + * lineq(iccount-1:iccount-1).ne.'\') go to 36 +35 continue + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Missing close quote after page number command (P)!') + call stop1() +36 continue + else if (durq .ne. ' ') then +c +c Space-delimited name, look for next blank +c + do 37 iccount = iccount+1 , 127 + if (lineq(iccount:iccount) .eq. ' ') go to 38 +37 continue +38 continue + end if + else if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only "l","r","c" or digit allowed after "P"!') + call stop1() + end if + else if (charq .eq. 'W') then + call g1etchar(lineq,iccount,durq) + if (index('.0123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected a number to start here!') + call stop1() + end if + call readnum(lineq,iccount,durq,wminnh(ibarcnt+nbars+1)) + else if (charq .eq. 'T') then +c +c Titles +c + call g1etchar(lineq,iccount,durq) + if (index('itc',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must put "i", "t", or "c" after "T"!') + call stop1() + end if + ihead = ihead+2**(index('itc',durq)-1) +c +c Maybe a number after 'Tt', but ignore here. Read past string on next line. +c + call read10(charq,lastchar) + nline = nline+1 + iccount = 128 + else if (charq .eq. 'A') then +27 call g1etchar(lineq,iccount,durq) +c if (index('rbsdeK',durq) .gt. 0) then + if (index('rbsdK',durq) .gt. 0) then + go to 27 + else if (durq .eq. 'e') then +c +c Check for is4bignv. Must do here to catch first \internote, written in topfile +c before ever calling getnote. Initialize as .false. in pmxa. Make it true only +c if nv>7, AI not set, Ai not set. +c + is4bignv = nv.gt.7 .and. .not.AIset + go to 27 + else if (durq .eq. 'v') then + if (ibarcnt .eq. 0) novshrinktop = .true. + go to 27 + else if (durq .eq. 'a') then + call g1etchar(lineq,iccount,durq) + if (index('0123456789.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'After "Aa", need decimal number!') + call stop1() + end if + call readnum(lineq,iccount,durq,fbar) + iccount = iccount-1 + go to 27 + else if (durq .eq. 'i') then + is4bignv = .false. + AIset = .true. + call g1etchar(lineq,iccount,durq) +c +c Local interstaff correction. Set to -1. if not specifiec, or after use, +c or anytime except at top, since pmxb handles all times except at top. +c + call readnum(lineq,iccount,durq,tintstf) + if (ibarcnt .eq. 0) fintstf = tintstf + iccount = iccount-1 + go to 27 + else if (durq .eq. 'I') then +c +c Global interstaff correction. Use in place of fintstf if fintstf<0 +c + is4bignv = .false. + AIset = .true. + call g1etchar(lineq,iccount,durq) + call readnum(lineq,iccount,durq,gintstf) + iccount = iccount-1 + go to 27 + else if (durq .eq. 'o') then + optimize = .true. + go to 27 + else if (durq .eq. 'S') then + do 50 iiv = 1 , noinst + call g1etchar(lineq,iccount,durq) + if (index('-0st',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'After "AS", need nv instances of "s,t,-,0"!') + call stop1() + end if + if (durq.eq.'-'.or.durq.eq.'s') then + isize(iiv) = 1 + else if (durq.eq.'t') then + isize(iiv) = 2 + end if +50 continue + go to 27 + else if (durq .eq. 'p') then + fontslur = .false. +42 continue + call g1etchar(lineq,iccount,durq) + if (index('+-',durq) .gt. 0) then +c +c Characters to change defaults for ps slurs +c + call g1etchar(lineq,iccount,durq) + if (index('shtc',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only letters allowed here are "s","h","t","c"!') + call stop1() + end if +c +c Now check for another default modifier +c + go to 42 + else if (index('lh',durq) .gt. 0) then +c +c Flags for optional linebreak ties or header specials +c + go to 42 + else + iccount = iccount-1 + end if + go to 27 + else if (durq .eq. 'N') then +c +c Override default name for a part file. Must have part number, then +c partname in quotes. Must be on line by itself, and start in column 1. +c Will only be passed thru to scor2prt. +c + if (iccount .ne. 2) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"AN" must start in column 1!') + call stop1() + end if + ndxquote = index(lineq,'"') + if (ndxquote.lt.4 .or. ndxquote.gt.5 .or. + * index('123456789',lineq(3:3)).eq.0 .or. + * (ndxquote.eq.5.and.index('012',lineq(4:4)).eq.0)) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"AN" must be followed by inst. #, then quote!') + call stop1() + end if + ndxquote = index(lineq(ndxquote+1:128),'"') + if (ndxquote .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'In "AN", file name must be in quotes!') + call stop1() + end if + iccount = 128 + else if (durq .eq. 'T') then + cstuplet = .true. + else if (durq .eq. 'R') then +c +c Get full name of normal include file; must occupy remainder of line +c + call getpmxmod(.false.,lineq(iccount+1:128)) + iccount = 128 + else if (durq .eq. 'c') then + call g1etchar(lineq,iccount,durq) + if (index('l4',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only "l" or "4" is allowed here!') + call stop1() + end if + if (durq .eq. 'l' ) then + hoffpt = -25 + voffpt = -45 + else if (durq .eq. '4') then + ptheight = 745 + widthpt = 499 + hoffpt = -24 + voffpt = -24 + end if + go to 27 + else if (durq .eq. 'V') then + call g1etchar(lineq,iccount,durq) + if (index('+-',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only "+" or "-" is allowed here!') + call stop1() + end if + call g1etchar(lineq,iccount,durq) + if (index('0123456789.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'A number for vert shift before \eject must start here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + if (index('+-',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only "+" or "-" is allowed here!') + call stop1() + end if + call g1etchar(lineq,iccount,durq) + if (index('0123456789.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'A number for vert shift after \eject must start here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + go to 27 + else if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, +c * 'After "A" must follow one of the letters abcdeiINprRsST!') + * 'After "A" must follow one of abcdeiILNprRsSTvV!') + print*,'For AS, since ver. 2.7, must only have noinst args.' + write(15,'(a)') + * 'For AS, since ver. 2.7, must only have noinst args.' + call stop1() + end if + else if (charq .eq. 'K') then +c +c Rules and function of K command +c +c Only 1 K +/-n +/-m allowed per block if n.ne.0 (transposition). isig1 is +c initial sig, and must be passed to pmxb because it is needed when topfile +c is called, which is before the K+n+m command is read in pmxb. Also, we +c compute and save ibrkch and newkey for each syst, accounting for key changes, +c then adjust fbar to make poenom much more accurate. +c Jan 02: Now K-0+[n] is used to transpose e.g. from f to f#. +c +77 continue + call g1etchar(lineq,iccount,durq) +c if (index('+-i',durq) .eq. 0) then + if (index('+-in',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"K" (transpose or key change) must be followed by "+,-,i,n"!') + call stop1() + end if + if (durq .eq. 'n') go to 77 + if (durq .ne. 'i') then +c +c Normal key change and/or transposition) +c +c iccount = iccount+1 + num1 = 44-ichar(durq) +c +c num1= +1 or -1 +c + ztrans = num1.eq.-1 + call g1etchar(lineq,iccount,durq) + if (index('0123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '1st +/- must be followed by a number!') + call stop1() + end if +c iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + num1 = nint(fnum)*num1 + ztrans = ztrans .and. num1.eq.0 + if (index('+-',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '1st number after "K" must be followed by "+,-"!') + call stop1() + end if + iccount = iccount+1 + num2 = 44-ichar(durq) + call readnum(lineq,iccount,durq,fnum) + num2 = num2*int(fnum+.1) + if (num1.eq.0 .and. .not.ztrans) then +c +c Key change, only one per block allowed +c + if (iskchb) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Only one key change allowed per input block!') + call stop1() + end if + iskchb = .true. + nkeys = nkeys+1 + kchmid(nkeys) = mod(itsofar(ivx),lenbar).ne.0 +c +c Make ibrkch = barnum-1 if at start of bar, so fsyst advances ok at linebreak. +c + ibrkch(nkeys) = ibarcnt+nbars + if (kchmid(nkeys)) ibrkch(nkeys) = ibrkch(nkeys)+1 + newkey(nkeys) = num2+idsig +c 130316 +c do 43 iinst = 1 , noinst + midisig = newkey(nkeys) +c43 continue + else +c +c Transposition +c + fulltrans = .true. + if (ibarcnt .gt. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Transposition must be at top of first input block!') + call stop1() + end if + isig1 = num2 + idsig = isig1-newkey(1) +c +c idsig is the difference between sig after transposition, and sig in setup. +c It may alter # of accid's in key changes if there is transposition. +c + end if + else ! durq='i' +c +c 110522/110529 +c Instrument-wise transposition Ki[iInstTrans][+/-][iTransAmt][+/-][iTransKey] +c and repeat i[...] for multiple instruments. Store info here if ibarcnt=0 +c so can pass to topfile (via comInstTrans), which is called before getnote. +c Otherwise, will store info from getnote. Initialize EarlyTransOn and +c LaterInstTrans to .false. in blockdata. Set EarlyTransOn from here; +c LaterInstTrans from g1etnote. Zero both out after use. nInstTrans really +c only needed for instrument-signatures, not transpositions. iTransAmt is +c ALWAYS active per instrument. Set up instno(iv) so can fetch iTransAmt for +c each staff. +c + call GetiTransInfo(.true.,ibarcnt,lineq,iccount, + * ibaroff,nbars,noinst) + end if + else if (charq .eq. '|') then +c +c Optional bar symbol +c + if (mod(itsofar(ivx),lenbar).ne.0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Bar line marker out of place!') + call stop1() + else if (shifton) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Bar ended with user-defined shift still on!') + call stop1() + end if + else if (charq .eq. '/') then + if (ornrpt) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'WARNING: Block ended with repeated ornament still on!') + ornrpt = .false. + end if + if (stickyS) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'WARNING: Block ended with sticky stemshrink still on!') + stickyS = .false. + end if + if (fbon) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Block ended with forced beam open!') + call stop1() + else if (shifton) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Bar ended with user-defined shift still on!') + call stop1() +c +c 140215 Temporary to allow clef change in stup +c +c else if (gotclef) then +c call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, +c * 'May not enter clef at end of input block!') +c call stop1() + end if + barend = .false. +c +c Perform time checks +c + if (mod(itsofar(ivx),lenbar).ne.0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Block duration not divisible by lenbar!') + print*,'lenbar, timesofar are ',lenbar,itsofar(ivx) + call stop1() + else if (ivx.gt.1 .and. itsofar(ivx).ne.itsofar(1)) then + print* + print*,'No of bars in voice 1, current voice:', + * itsofar(1)/lenbar,itsofar(ivx)/lenbar + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Block duration not equal to voice 1!') + call stop1() + end if + call g1etchar(lineq,iccount,durq) + if (durq .eq. ' ' .and. iv.eq.nv) then +c +c End of input block +c + loop = .false. + else +c +c Start a new voice +c + if (lenbr0.ne.0 .and. firstline) lenbar = lenbr0 + nbars = 0 + if (durq .eq. ' ') then +c +c New voice is on next staff +c + iv = iv+1 + ivx = iv + else +c +c New voice is on same staff. Set up for it +c + ivx = nv+1 + do 23 iiv = 1 , nv + if (nvmx(iiv) .eq. 2) ivx = ivx+1 +23 continue + if (ivx .gt. nm) then + write(*,'(1x,a21,i3,a23)')'Cannot have more than',nm, + * ' lines of music at once' + call stop1() + end if + nvmx(iv) = 2 + ivmx(iv,2) = ivx + itsofar(ivx) = 0 + nnl(ivx) = 0 + do 24 j = 1 , 200 + rest(ivx,j) = .false. + nacc(ivx,j) = 0 +24 continue +c +c For midi stuff, record that there is a 2nd line of music in this voice +c + if (ismidi) twoline(iv) = .true. + end if + end if + iccount = 128 + else if (charq .eq. 'S') then +c +c New nsyst: for use with partmaker scor2prt, for parts w/ diff # of systs. +c + if (ibarcnt .gt. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"S" can only be in first input block!') + call stop1() + end if + call g1etchar(lineq,iccount,durq) + if (index('123456789 ',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'A digit must follow "S"!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnsyst) + nsyst = nint(fnsyst) +14 continue + if (durq .eq. 'P') then +c +c New npages for parts. +c + call g1etchar(lineq,iccount,durq) + if (index('123456789 ',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must have a number here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnsyst) + npages = nint(fnsyst) + go to 14 + else if (durq .eq. 'm') then +c +c Reset musize (musicsize). +c + call g1etchar(lineq,iccount,durq) + if (index('123456789 ',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must have a number here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnsyst) + musize = nint(fnsyst) + wheadpt = whead20*musize + go to 14 + else if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in "S" symbol!') + call stop1() + end if + else if (charq .eq. 'L') then +c +c Force line break +c + call g1etchar(lineq,iccount,durq) + if (durq .eq. 'C') then +c +c Coda, no real line break, just get coda length +c + if (ishort .ne. 1) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Cannot use "LC" without first using "L[n]S"!') + call stop1() + end if + ishort = 0 + call g1etchar(lineq,iccount,durq) + if (index('1234567890.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Need number to define coda length!') + call stop1() + end if + call readnum(lineq,iccount,durq,codafrac) + poefa(isysflb(nflb)) = poefa(isysflb(nflb))+codafrac + if (index(' n',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Need blank or "n" here!') + call stop1() + end if + return + end if + nflb = nflb+1 + ibarflb(nflb) = ibarcnt+nbars+1 + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Need integer to define forced line break!') + call stop1() + end if + call readnum(lineq,iccount,durq,sysflb) + isysflb(nflb) = nint(sysflb) + if (isysflb(nflb) .eq. 1) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'For now, "L1" not allowed!') + call stop1() + end if + if (nflb .gt. 1) then +c +c Check if new number is > prior one +c + if (isysflb(nflb) .le. isysflb(nflb-1)) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'You already forced a line break at a later line!') + call stop1() + end if + end if + if (npages .eq. 0) then + print* + print*,'WARNING! You forced a line break at line ', + * isysflb(nflb),' but npage = 0. Continue?' + read(*,'(a)') charq + if (index('yY',charq) .eq. 0) call stop1() + else if (isysflb(nflb) .gt. nsyst) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Forced line break at line num > nsyst!') + call stop1() + else if (index(' PMS',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must have " ", "P", "M", or "S" here!') + call stop1() + end if +49 continue ! Transfer up from below to allow S after M + if (durq .eq. 'S') then +c +c Shortened line, get shortening fraction +c + ishort = 1 + call g1etchar(lineq,iccount,durq) + if (index('1234567890.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Need number to define line shortening fraction!') + call stop1() + end if + call readnum(lineq,iccount,durq,shortfrac) + poefa(isysflb(nflb)) = shortfrac + if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Need blank here!') + end if + end if + if (durq .eq. 'P') then +c +c Forced page break here, get page number. +c + call g1etchar(lineq,iccount,durq) + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Need integer to define forced page break!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + nfpb = nfpb+1 + ipagfpb(nfpb) = nint(fnum) + isysfpb(nfpb) = isysflb(nflb) + if (ipagfpb(nfpb) .gt. npages) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Forced page break at page num > npages!') + call stop1() + else if (nfpb .gt. 1) then + if (ipagfpb(nfpb) .le. (ipagfpb(nfpb-1))) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Forced page break numbers must increase!') + call stop1() + end if + end if + end if + if (index(' M',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in linebreak symbol!') + call stop1() + else if (durq .eq. 'M') then + nmovbrk = nmovbrk+1 + isysmb(nmovbrk) = isysflb(nflb) + call g1etchar(lineq,iccount,durq) +31 if (durq .eq. '+') then +c +c Vertical spacing, read past number. +c + call g1etchar(lineq,iccount,durq) + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Integer required here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + go to 31 + else if (durq .eq. 'i') then +c +c Change indentation, +c + call g1etchar(lineq,iccount,durq) + if (index('.123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Decimal number required here!') + call stop1() + end if +c +c fracsys was initialized in block data to all 0.'s +c + call readnum(lineq,iccount,durq,fracsys(nmovbrk)) + go to 31 + else if (durq .eq. 'c') then + call g1etchar(lineq,iccount,durq) + go to 31 + else if (durq .eq. 'r') then + call g1etchar(lineq,iccount,durq) + if (index('+-',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must have "+" or "-" after "r" as movement break option!') + call stop1() + end if + call g1etchar(lineq,iccount,durq) + go to 31 + else if (durq .eq. 'n') then +c +c Change # of voices. Input ninow, iorig(1...ninow). Will use names, +c staves per inst. and clefs corr. to iorig in original list of instruments. +c + nv = 0 + call g1etchar(lineq,iccount,durq) + if (durq .eq. ':') then +c +c Signals a 2-digit number, get next two characters +c + call g1etchar(lineq,iccount,durq) + call g1etchar(lineq,iccount,dumq) + if (index('12',durq).eq.0 + * .or.index('0123456789',dumq).eq.0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal new number of instruments '//durq//dumq// + * ' at movement break!') + call stop1() + end if + read(lineq(iccount-1:iccount),'(i2)')ninow + else +c +c durq is a single digit number for noinow +c + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal new number of instruments '//durq// + * ' at movement break!') + call stop1() + end if + ninow = ichar(durq)-48 + end if + if (ninow.gt.noinst) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'New number of instruments must be <= original!') + call stop1() + end if + do 63 iinow = 1 , ninow + call g1etchar(lineq,iccount,durq) + if (durq .eq. ':') then +c +c Signals a 2-digit number +c + call g1etchar(lineq,iccount,durq) + call g1etchar(lineq,iccount,dumq) + if (index('12',durq).eq.0 + * .or.index('0123456789',dumq).eq.0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal 2-digit instrument number '//durq//dumq// + * ' at movement break!') + call stop1() + end if + read(lineq(iccount-1:iccount),'(i2)')iorig + else +c +c durq is a single digit number for iorig +c + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal instrument number '//durq// + * ' at movement break!') + call stop1() + end if + iorig = ichar(durq)-48 + end if + if (iorig .gt. noinst) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'New instrument number must be <= original noinst!') + call stop1() + end if + nv = nv+nsperi(iorig) +63 continue + do 61 iiv = 1 , nv +c +c Get clef names +c + call g1etchar(lineq,iccount,durq) + if (.not.(index('tsmanrbf',durq).gt.0 .or. +c * (ichar(durq).ge.48 .and. ichar(durq).le.55))) then + * (ichar(durq).ge.48 .and. ichar(durq).le.56))) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must have t,s,m,a,n,r,b,f or 1-7 as clef symbol here!') + call stop1() + end if +c +c Initialize new voices +c + nvmx(iiv) = 1 + ivmx(iiv,1) = iiv + itsofar(iiv) = 0 + nnl(iiv) = 0 + do 62 j = 1 , 200 + rest(iiv,j) = .false. +62 continue +61 continue +c +c Loop back up, this might not be last option in M +c + call g1etchar(lineq,iccount,durq) + go to 31 + else if (durq .eq. 'S') then + go to 49 + else if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after Movement break symbol!') + call stop1() + end if + if (fracsys(nmovbrk) .lt. 0.001) then +c +c Since fracsys was not explicitly set, set it to prior value. +c + if (nmovbrk .eq. 1) then + fracsys(nmovbrk) = fracindent + else + fracsys(nmovbrk) = fracsys(nmovbrk-1) + end if + end if + end if +c +c Just before exiting if-block for forced line breaks, set counter to use when +c dealing with vertical space calcs +c + nistaff(nflb) = nv-1 + else if (charq .eq. 'F') then + usefig = .false. + else if (charq .eq. 'X') then + call g1etx(lineq,iccount,shifton,ibarcnt-ibaroff+nbars+1, + * udsp(ibarcnt+nbars+1),wheadpt) + else if (charq .eq. 'I') then +c +c MIDI settings. +c + if (ivx.ne.1 .or. nnl(1).ne.0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'MIDI stuff only allowed at start of block!') + call stop1() + end if + if (nv .gt. 15) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Sorry but MIDI does not work with more than 15 voices!') + call stop1() + end if + ismidi = .true. + call getmidi(noinst,lineq,iccount,ibarcnt,ibaroff,nbars,lenbar, + * mtrdenl,nv,.true.) + else if (charq .eq. 'M') then + call setmac(lineq,iccount,ibarcnt,ibaroff,nbars,charq,durq,ivx, + * nline) + else if (index(',.',charq) .gt. 0) then +c +c Continued rhythmic shortcut +c + idotform = index('. ,',charq) + if (idotform .eq. 1) then +c +c Change duration of prior note +c + itsofar(ivx) = itsofar(ivx)-nodur(ivx,nnl(ivx)) + nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx))*3/2 + itsofar(ivx) = itsofar(ivx)+nodur(ivx,nnl(ivx)) + end if + idotform = idotform+1 + numnum = 1 + cdot = .true. + go to 1 + else + print*,'ASCII code:',ichar(charq) + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'This character is not allowed here!') + print*,'ASCII code:',ichar(charq) + call stop1() + end if + return + end + subroutine g1etset(nv,noinst,mtrnuml,mtrdenl,mtrnmp,mtrdnp, + * xmtrnum0,newkey,npages,nsyst,musize,bottreb) + parameter(nm=24,maxblks=9600) + character*131072 bufq + character*1 chax + integer*2 lbuf(maxblks) + common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq + character*128 lineq + logical lastchar,issegno,isheadr,isvolt,fbon,bottreb, + * newway + common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, + * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 + common /commidisig/ midisig +c +c Get the first line +c + iccount = 0 + nline = 1 +9 call getbuf(lineq) + if (lineq(1:1) .eq. '%') then + nline = nline+1 + go to 9 + end if + if (lineq(1:3) .eq. '---') then +c +c Have TeX input until next line that starts with '---' +c +3 nline = nline+1 + call getbuf(lineq) + if (ilbuf .gt. nlbuf) go to 1 + go to 2 +1 print*,'You did not terminate type 0 TeX input with "---"' + call stop1() +2 continue + if (lineq(1:3) .ne. '---') go to 3 +c +c Force a new line read on first call to readin +c + iccount = 128 + end if +c +c Here, lineq and nline are first non-TeX lines. +c + nv = nint(readin(lineq,iccount,nline)) + if (nv .gt. nm) then + write(*,'(1x,a46,i3)') + * 'In setup data, number of voices cannot exceed',nm + call stop1() + end if + noinst = nint(readin(lineq,iccount,nline)) + if (noinst .gt. nv) then + write(*,'(a)') + * 'In setup data, cannot have more instruments than staves' + call stop1() + end if + newway = noinst.le.0 + if (newway) noinst = -noinst + do 10 iinst = 1 , noinst +c +c Seve # of staves per inst in case later drop some inst's. +c + if (newway) then + nsperi(iinst) = nint(readin(lineq,iccount,nline)) + else if (iinst .gt. 1 ) then + nsperi(iinst) = 1 + else + nsperi(iinst) = nv-noinst+1 + end if +10 continue + mtrnuml = nint(readin(lineq,iccount,nline)) + mtrdenl = nint(readin(lineq,iccount,nline)) +cc +cc Kluge!!! +cc +c if (mtrdenl .eq. 1) then +c mtrdenl = 2 +c mtrnuml = mtrnuml*2 +c end if + mtrnmp = nint(readin(lineq,iccount,nline)) + mtrdnp = nint(readin(lineq,iccount,nline)) + if (mtrnmp.eq.0 .and. mtrdnp .ge. 8) then + write(*,'(a)')'In setup data, with mtrnmp=0, mtrdnp must be <8' + call stop1() + end if + xmtrnum0 = readin(lineq,iccount,nline) + newkey = nint(readin(lineq,iccount,nline)) +c 130316 +c do 11 iinst = 1 , noinst + midisig = newkey +c11 continue + npages = nint(readin(lineq,iccount,nline)) + nsyst = nint(readin(lineq,iccount,nline)) + musize = nint(readin(lineq,iccount,nline)) + fracindent = readin(lineq,iccount,nline) + if (fracindent .ge. 1.) then + write(*,'(a)')'In setup data, fracindent must be <1' + call stop1() + end if + if (npages .gt. nsyst) then + print*,'Error in input file: npages > nsyst' + call stop1() + else if((musize-16)*(musize-20)*(musize-24)*(musize-29).ne.0) then + call printl('Musicsize must be 16, 20, 24, or 29') + call stop1() + end if +c +c Next noinst non-comment lines are names of instruments. +c + do 4 i = 1 , abs(noinst) +5 call getbuf(lineq) + nline = nline+1 + if (lineq(1:1) .eq. '%') go to 5 +4 continue +c +c Mext non-comment line has nv clef names +c +6 call getbuf(lineq) + nline = nline+1 + if (lineq(1:1) .eq. '%') go to 6 + do 7 iv = 1 , nv +c if (index('brnamstf01234567',lineq(iv:iv)) .eq. 0) then + if (index('brnamstf012345678',lineq(iv:iv)) .eq. 0) then + call errmsg(lineq,iv,0, + * 'There should be a clef symbol here!') + call stop1() + end if +7 continue + if (lineq(nv+1:nv+1) .ne. ' ') then + call errmsg(lineq,nv+1,0, + * 'There should be a blank here!') + call stop1() + end if +c +c Set flag if voice 1 is treble, since it affects vertical spacing +c +c bottreb = lineq(1:1).eq.'t' + bottreb = index('t08',lineq(1:1)).gt.0 +c +c Next non-comment line has path name +c +8 call getbuf(lineq) + nline = nline+1 + if (lineq(1:1) .eq. '%') go to 8 + lpath = index(lineq,' ')-1 + if (index('/:'//chax(92),lineq(lpath:lpath)) .eq. 0) then + call errmsg(lineq,lpath,0, + * 'Last character of pathname is not "/",":", or "' + * //chax(92)//'"!') + call stop1() + end if + return + end + subroutine g1etx(lineq,iccount,shifton,ibar,udsp,wheadpt) +c +c Parse "X" commands. Ignore all "B"; "P" means to ignore whole symbol. +c In scor2prt, must strip out "P", copy only "B" and "P"-type "X"-symbols. +c + logical shifton,number,btest + character*128 lineq + character*1 charq,dumq + number = .false. + nPBSc = 0 +1 call g1etchar(lineq,iccount,charq) + if (index('PBS:',charq) .gt. 0) then +c +c Continue checking here even if "P". +c + ipbsc = index('PBS:',charq) + if (btest(nPBSc,ipbsc)) then + call errmsg(lineq,iccount,ibar,'Only one allowed per symbol!') + call stop1() + end if + nPBSc = ibset(nPBSc,ipbsc) + go to 1 + else if (index('+-.0123456789',charq) .gt. 0) then + number = .true. + if (index('+-',charq) .gt. 0) then + call g1etchar(lineq,iccount,dumq) + if (index('.0123456789',dumq) .eq. 0) then + call errmsg(lineq,iccount,ibar,'Expected a number here!') + call stop1() + end if + end if + call readnum(lineq,iccount,dumq,fnum) + if (charq.eq.'-') fnum = -fnum + if (dumq .ne. 'p') then + iccount = iccount-1 + fnum = fnum*wheadpt + end if + go to 1 + else if (charq .ne. ' ') then + call errmsg(lineq,iccount,ibar,'Not allowed in "X" symbol!') + call stop1() + end if +c +c Done with parsing. Other checks +c + if (iand(6,nPBSc).eq.6 .or. iand(24,nPBSc).eq.24) then + call errmsg(lineq,iccount-1,ibar, + * 'Cannot have both "P" and "B" or "S" and ":"!') + call stop1() + end if + if (btest(nPBSc,4)) then + if (number) then + if (shifton) then + call errmsg(lineq,iccount-1,ibar, + * 'Started a group shift without stopping prior one!') + call stop1() + else + shifton = .true. + end if + else + if (.not. shifton) then + call errmsg(lineq,iccount-1,ibar, + * 'Ended a group shift without starting one!') + call stop1() + else + shifton = .false. + end if + end if + end if +c +c P off, S off, c off => normal user-defined space. Add to udsp (later fsyst) +c + if (iand(nPBSc,26).eq.0) udsp = udsp+fnum + if (.not.number .and. .not.btest(nPBSc,4)) then + call errmsg(lineq,iccount-1,ibar, + * 'Must have either a number or a colon in "X" symbol!') + call stop1() + end if + return + end +c integer*4 function mytime() +c CHARACTER(10) tq +c CALL DATE_AND_TIME(TIME=tq) +c read(tq,'(2i2,f6.3)')ih,im,ts +c mytime = 1000*(ts+60*(im+60*ih)) +c return +c end + subroutine getbuf(lineq) + parameter (maxblks=9600) + character*(*) lineq + character*131072 bufq + integer*2 lbuf(maxblks) + common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq + lineq = bufq(ipbuf+1:ipbuf+lbuf(ilbuf)) + ipbuf = ipbuf+lbuf(ilbuf) + ilbuf = ilbuf+1 + return + end + subroutine getchar(lineq,iccount,charq) + parameter (nm=24) +c +c Gets the next character out of lineq*128. If pointer iccount=128 on entry, +c then reads in a new line. Resets iccount. Ends program if no more input. +c + common /comget/ lastchar,rptnd1,sluron(nm,2),fbon,ornrpt,stickyS, + * movbrk,movnmp,movdnp,movgap,parmov,fintstf,gintstf, + * rptprev,equalize,rptfq1,rptfq2 + logical lastchar,rptnd1,sluron,fbon,rptprev,ornrpt + common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac + logical mrecord,mplay,endmac,equalize,stickyS + character*1 charq,rptfq1,rptfq2 + character*128 lineq,lnholdq + if (iccount .eq. 128) then + call read10(lineq,lastchar) + if (lastchar) return + if (.not. endmac) then + iccount = 0 + else + endmac = .false. + iccount = icchold + lineq = lnholdq + end if + if (mrecord) then + call mrec1(lineq,iccount,ndxm) + end if + end if + iccount = iccount+1 + charq = lineq(iccount:iccount) + return + end + subroutine getdyn(ivx,ip,irest,iornq,lineq,iccount) + parameter (nm=24) + common /comdyn/ ndyn,idyndat(99),levdsav(nm),ivowg(12),hoh1(12), + * hoh2(12),hoh2h1(2),ntxtdyn,ivxiptxt(41),txtdynq(41), + * idynda2(99),levhssav(nm),listcresc,listdecresc + character*128 txtdynq + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + logical fontslur,upslur,WrotePsslurDefaults + character*1 durq,chax + character*4 dynsymq + character*128 lineq +c +c Get info for dynamic mark. Enter after getting "D", iccount sits on "D" +c Bits in idyndat are as follows +c 00-03 ivx +c 04-11 ip +c 12-15 code for type of mark +c 0 => arbitrary text +c 1-12 => pppp,ppp,pp,p,mp,mf,f,fp,sfz,ff,fff,ffff +c If (.not. fontslur) +c 13 => hairpin start, 14,15 => <,> (ending) +c else +c 13 < start, 14 > start, 15 ending +c end if +c 16 flag for vertical offset +c 17-23 vertical offset + 64 , \internote +c 31 Hairpin start (0), stop (1) +c +c idynda2 +c +c 00 flag for horizontal offset +c 01-09 (horizontal offset)/10 + 25.6 notehead widths +c 10 5th bit for ivx (5/15/10) +c + irest = ibset(irest,26) + ndyn = ndyn+1 + idyn = ivx + idynda2(ndyn) = 0 + if (ivx .ge. 16) call setbits(idynda2(ndyn),1,10,1) + call setbits(idyn,8,4,ip) + if (lineq(iccount+1:iccount+1) .eq. '"') then +c +c text-dynamic +c + ntxtdyn = ntxtdyn+1 + iccountt = iccount +3 continue + iend = iccountt+index(lineq(iccountt+2:128),'"')+2 + if (lineq(iend-2:iend-2) .eq. '\') then + iccountt = iend-2 + go to 3 + end if + txtdynq(ntxtdyn) = lineq(iccount+2:iend-2) +c +c Store ivx, ip in bits 0-12 +c + ivxiptxt(ntxtdyn) = ivx+32*ip + ipm = index('- +',lineq(iend:iend)) + idno = 0 + else +c +c Word-group or hairpin +c + do 1 iend = iccount+2 , 128 + ipm = index('- +',lineq(iend:iend)) +c +c Exit the loop at first blank, "+", or "-" +c + if (ipm .gt. 0) go to 2 +1 continue +2 continue + read(lineq(iccount+1:iend-1),'(a'//chax(47+iend-iccount)//')') + * dynsymq + idno = (index( + * 'ppppppp pp p mp mf f fp sfz ff fff ffff < > ', + * dynsymq)+3)/4 +c +c Save for later down +c + idno1 = idno + end if +c +c Set flag to check level later if in beam +c + iornq = ibset(iornq,23) + if (idno.ge.14) then +c +c Hairpin here. Check if opposite type from one that's already on +c + if (idno.eq.14.and.btest(listdecresc,ivx) .or. + * idno.eq.15.and.btest(listcresc,ivx)) then + call printl(' ') + call printl('Started one kind of hairpin while other is on') + call stop1() + end if +c +c Start or stop? +c + if (btest(listcresc,ivx) .or. btest(listdecresc,ivx)) then +c +c Cresc/decresc is on, this is an ending. If fontslur, leave idno as is. +c + if (.not.fontslur) idno = 15 + else if (fontslur) then +c +c Start of font slur +c + idno = 13 + else +c +c Start of postscript slur +c + idno = idno-1 + end if + end if +c +c Now that we used list[de]cresc, update +c + if (idno .ge.13) then + if (idno.eq.15 .or. (fontslur.and.idno.eq.14)) then +c +c Something's ending +c + if (btest(listcresc,ivx)) then +c +c It's a cresc! +c + listcresc = ibclr(listcresc,ivx) + else + listdecresc = ibclr(listdecresc,ivx) + end if + else +c +c Something's starting +c + if (idno1 .eq. 14) then +c +c It's a cresc! +c + listcresc = ibset(listcresc,ivx) + else + listdecresc = ibset(listdecresc,ivx) + end if + end if + end if + call setbits(idyn,4,12,idno) + iccount = iend + if (ipm .ne. 2) then +c +c There is a vertical shift +c + idyn = ibset(idyn,16) + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + idno = nint(fnum) + call setbits(idyn,7,17,(ipm-2)*idno+64) + ipm = index('- +',durq) + if (ipm .ne. 2) then +c +c There is a horizontal shift +c +c idynda2(ndyn) = ibset(idyn,23) + idynda2(ndyn) = ibset(idynda2(ndyn),0) + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + idno = nint(10*fnum) + call setbits(idynda2(ndyn),9,1,(ipm-2)*idno+256) + end if +c +c iccount should be on the blank at the end of the entire symbol +c + end if + idyndat(ndyn) = idyn + return + end + subroutine getfig(itoff,charq,lineq,iccount,isfig,itfig, +c * itsofar,nodur,figq,ivupfig,nfigs) + * itsofar,nodur,figq,ivupfig,ivvfig,nfigs) + logical isfig + character*1 charq + character*10 figq + character*128 lineq + nfigs = nfigs+1 + ivupfig = 0 + ivvfig = 0 + itoff = 0 + if (charq .eq. 'x') then +c +c Floating figure. +c + call getchar(lineq,iccount,charq) + read(charq,'(i1)')noff + call getchar(lineq,iccount,charq) + read(charq,'(i1)')loff + itoff = noff*ifnodur(loff,'x') + call getchar(lineq,iccount,charq) + else +c +c Figure on a note +c + isfig = .true. + end if + itfig = itsofar+itoff-nodur + lfig = 1 + figq = charq +5 call getchar(lineq,iccount,charq) +c if (index(' +',charq) .eq. 0) then + if (index(' +v',charq) .eq. 0) then + figq = figq(1:lfig)//charq + lfig = lfig+1 + go to 5 + else if (charq .eq. '+') then +c +c Get vertical offset for figure. Next character after number has to be blank. +c + iccount = iccount+1 + call readnum(lineq,iccount,charq,fnum) + ivupfig = nint(fnum) + else if (charq .eq. 'v') then +c +c Get vertical change in figdrop. Must be last item in figure word. +c + isign = 1 + call getchar(lineq,iccount,charq) + if (charq .eq. '-') then + isign=-1 + call getchar(lineq,iccount,charq) + end if + ivvfig = isign*(ichar(charq)-48) + end if + return + end + subroutine getgrace(ivx,nnl,lineq,iccount,islur,iornq,ipl,ndlev, + * lastlev,iv,nv) + parameter (nm=24) + common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, + * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, + * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, + * graspace(37), + * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), + * naccg(74),voltxtq(6),litq(83) + logical upg,slurg,slashg + character*1 charq,durq + character*20 voltxtq + character*128 lineq,litq + integer*4 islur(nm,200),iornq(nm,0:200),ipl(nm,200),nnl(nm), + * ndlev(nm,2) + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans +c +c Grace, comes *before* main note: +c UNLESS there's an 'A' or 'W' after the 'G' +c ngrace = # of grace note groups so far in block +c ivg(ngrace), ipg(ngrace) +c nng(ngrace) = # of notes in this group: default = 1 +c ngstrt(ngrace) = starting position in nolevg of levels for this grace +c multg(ngrace) = multiplicity: default = 1; input as 'm(digit)' +c upg(ngrace) = logical for beam or stem dirn: default T, input'u,l' +c slurg(ngrace) = logical for slur; default F, input 's' +c slashg(ngrace) = T if slash; default is F, input 'x' +c These data MUST precede note name of first note +c nolevg, naccg: lists of levels and accid's, indexed as described above. +c + ngrace = ngrace+1 + ivg(ngrace) = ivx + ipg(ngrace) = nnl(ivx)+1 + if (ngrace .eq. 1) then + ngstrt(ngrace) = 1 + else + ngstrt(ngrace) = ngstrt(ngrace-1)+nng(ngrace-1) + end if + islur(ivx,nnl(ivx)+1) = ibset(islur(ivx,nnl(ivx)+1),4) + nng(ngrace) = 1 + multg(ngrace) = 1 + upg(ngrace) = .true. + slurg(ngrace) = .false. + slashg(ngrace) = .false. +18 call getchar(lineq,iccount,charq) + if (index('WA',charq) .gt. 0) then +c +c Grace is on note that was already done, so shift flags forward one note. +c This puts flag on actual note with grace; later for W will go ahead one more. +c + ipg(ngrace) = nnl(ivx) + islur(ivx,nnl(ivx)+1) = ibclr(islur(ivx,nnl(ivx)+1),4) + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),4) + if (slurg(ngrace)) + * iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),24) + if (charq .eq. 'A') then +c +c close After, clear way-after bit, to ensure priority of most recent A/W +c + ipl(ivx,nnl(ivx)) = ibset(ibclr(ipl(ivx,nnl(ivx)),31),29) + else +c +c Way after; later assign to following note, and position like normal grace. +c + ipl(ivx,nnl(ivx)) = ibset(ibclr(ipl(ivx,nnl(ivx)),29),31) + end if + else if (charq .eq. 'm') then + call getchar(lineq,iccount,charq) + multg(ngrace) = ichar(charq)-48 + else if (index('123456789',charq) .gt. 0) then + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + nng(ngrace) = nint(fnum) + else if (charq .eq. 'l') then + upg(ngrace) = .false. + else if (charq .eq. 's') then + slurg(ngrace) = .true. + if (nnl(ivx) .gt. 0) then +c +c If A- or W-grace, set signal to start slur on main note. +c + if(btest(ipl(ivx,nnl(ivx)),31) .or. + * btest(ipl(ivx,nnl(ivx)),29)) + * iornq(ivx,nnl(ivx))=ibset(iornq(ivx,nnl(ivx)),24) + end if + else if (charq .eq. 'x') then + slashg(ngrace) = .true. + else if (charq .eq. 'u') then + else if (charq .eq. 'X') then +c +c Space before main note of grace. Number will come next. +c + iccount = iccount+1 + call readnum(lineq,iccount,durq,graspace(ngrace)) + iccount = iccount-1 + end if + if (index('abcdefg',charq) .eq. 0) go to 18 +c +c At this point, charq is first note name in grace +c + do 19 ing = ngstrt(ngrace), ngstrt(ngrace)+nng(ngrace)-1 + naccg(ing) = 0 + ioct = 0 + if (ing .gt. ngstrt(ngrace)) then +55 call getchar(lineq,iccount,charq) + if (charq .eq. ' ') go to 55 + endif + iclastlev = 0 +9 call getchar(lineq,iccount,durq) + if (durq .ne. ' ') then + if (durq.eq.'+') then + lastlev = lastlev+7 + iclastlev = iclastlev+7 + else if (durq.eq.'-') then + lastlev = lastlev-7 + iclastlev = iclastlev-7 + else if (index('fsn',durq) .gt. 0) then + if (naccg(ing) .eq. 0) then + naccg(ing) = index('fsn',durq) + else +c +c Double accidental +c + naccg(ing) = ibset(naccg(ing),2) + end if + else + ioct = ichar(durq)-48 + end if + go to 9 + end if + if (ioct .gt. 0) then + lastlev = ifnolev(charq,ioct,iTransAmt(instno(iv))) + else + if (nnl(ivx).eq.0 .and. ing.eq.ngstrt(ngrace)) then + if (ivx .le. nv) then + kv = 1 + else + kv = 2 + end if + lastlev = ndlev(iv,kv)+iclastlev + end if + lastlev = lastlev-3 + * +mod(ifnolev(charq,10,iTransAmt(instno(iv)))-lastlev+3,7) + end if + nolevg(ing) = lastlev +19 continue +c +c Grace could come before first note of block, so reset end level. +c + if (nnl(ivx).eq.0) then + if (ivx .le. nv) then + kv = 1 + else + kv = 2 + end if + ndlev(iv,kv) = lastlev + end if + return + end + subroutine GetiTransInfo(From1,ibarcnt,lineq,iccount, + * ibaroff,nbars,noinst) +cccccccccccccccccccccccc +cc +cc GetiTransInfo.for +cc +cccccccccccccccccccccccc +c +c Called from both g1etnote and getnote, after first 'i' in Ki[...] +c On entry, iccount points to last char retrieved, which is 'i' +c +c From1: locgical, true if called from g1etnote +c ibarcnt: tells whether to set EarlyTransOn to true. +c EarlyTransOn set false in blkdata, true here, back to false in topfile. +c +c 110522/110529 +c Instrument-wise transposition Ki[iInstTrans][+/-][iTransAmt][+/-][iTransKey] +c and repeat i[...] for multiple instruments. Store info in g1etnot if ibarcnt=0 +c so can pass to topfile (via comInstTrans), which is called before getnote. +c Otherwise, will store info from getnote. Initialize EarlyTransOn and +c LaterInstTrans to .false. in blockdata. Set EarlyTransOn from g1etnote; +c LaterInstTrans from getnote. Zero both out after use. nInstTrans really +c only needed for instrument-signatures, not transpositions. iTransAmt is +c ALWAYS active per instrument. Set up instno(iv) so can fetch iTransAmt for +c each staff. +c +c iTransAmt stored as fn of instrument #, not like iTransKey which is +c fn. of nm, just a counter, where corr. inst num is iInstTrans(nm). This +c simplifies use of iTransAmt for all calls to ifnolev. +c + parameter (nm=24) + logical From1 + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans,store + character*128 lineq + character*1 durq + durq = 'x' ! Can't initialize in declaration stmt, only works once. + if(.not.EarlyTransOn) EarlyTransOn = From1 .and. ibarcnt.eq.0 + store = (EarlyTransOn.and.ibarcnt.eq.0) .or. + * (ibarcnt.gt.0.and..not.From1) + LaterInstTrans = .not.From1 .and. ibarcnt.gt.0 + if (store) nInstTrans = 0 +1 continue + if (durq .eq. ' ') return + call g1etchar(lineq,iccount,durq) + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'There must be an instrument number here!') + call stop1() + end if + if (store) nInstTrans = nInstTrans+1 + call readnum(lineq,iccount,durq,fnum) + instn = nint(fnum) + if (instn.gt.noinst) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Instrument number out of range!') + call stop1() + end if + if (store) iInstTrans(nInstTrans) = instn +c +c durq is +/- following inst # (for iTransAmt), iccount is on it. +c + if (index('+-',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '1st character after instrument number must be "+,-"!') + call stop1() + end if + itramt = 44-ichar(durq) ! +1/-1 for itramt + call g1etchar(lineq,iccount,durq) + if (index('0123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'There must be a transposition amount here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + if (store) iTransAmt(instn) = nint(fnum)*itramt +c +c durq is +/- following iTransAmt (for iTransKey), iccount is on it. +c + if (index('+-',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '1st character after transposition amount must be "+,-"!') + call stop1() + end if + ikey = 44-ichar(durq) ! +1/-1 + call g1etchar(lineq,iccount,durq) + if (index('0123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'There must be a key indicator here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + if (store) iTransKey(nInstTrans) = nint(fnum)*ikey +c +c durq is now 1st character after iTransKey, should be either 'i' or ' ' +c + if (durq.ne.'i'.and.durq.ne.' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'There must be blank or "i" here!') + call stop1() + end if + go to 1 + end + subroutine getmidi(noinstarg,lineq,iccount,ibarcnt,ibaroff,nbars, + * lenbar,mtrdenl,nv,first) +c +c Use this from both pmxa and pmxb to input and check midi data. "first" tells +c whether pmxa or pmxb. If .not.first, then tempo and pause commands cause +c things to be written immediately into the midi storage buffers. +c + parameter (nm=24,mv=24576) + common /comevent/ miditime,lasttime + logical mmacrec,gottempo + common /commmac/ mmacstrt(0:nm,20),mmacend(0:nm,20),immac, + * mmactime(20),nmidsec,msecstrt(0:nm,60),msecend(0:nm,60), + * mmacrec,gottempo +c +c immac(i) is the index of i-th macro, i=1,nmac. Also make a list containing +c nmidsec section starts and stops based on PLAYING macros (not recording). +c + integer*2 mmidi,midinum(26) + logical restpend,relacc,notmain,twoline,ismidi,crdacc + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) + * ,miditran(nm),midtc(0:nm),noinstdum,iinsiv(nm) + integer*2 iinsiv + character*1 durq + character*2 instq + character*128 lineq + logical first + common /comdiag/ n69(0:nm),n34(0:nm) +c +c Instrument codes +c + data midinum + * / 1, 5, 7, 13,20,25,33,41,42,43,44,57,58,59,61,65,66,67, +c XXpiXrhXhaXmaXorXguXabXvlXvaXvcXcbXtrXtbXtuXfrXsoXalXteX +c + * 68,69,71,72,74,75, 8,55 / +c bsXobXbaXclXflXreXctXvo +c +1 call getchar(lineq,iccount,durq) + if (durq .eq. 't') then +c +c Tempo in beats ber minute +c + call getchar(lineq,iccount,durq) + if (index('0123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected an integer here for the pause!') + call stop1() + end if + call readnum(lineq,iccount,durq,qpm) + iccount = iccount-1 + if (.not.first) then + call midievent('t',nint(qpm),0) + gottempo = .true. + end if + go to 1 + else if (durq .eq. 'p') then +c +c Insert a pause. pausemid = pause in 1/4's +c + call getchar(lineq,iccount,durq) + if (index('0123456789.',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected a number here for the pause!') + call stop1() + end if + call readnum(lineq,iccount,durq,pausemid) + iccount = iccount-1 + if (.not.first) then +c +c Compute a meter for the pause. This is only to keep MidiNotate on track. +c Round pause to nearest 16th. Let denominator always be 16. +c + numb16 = nint(pausemid*4) + call midievent('m',numb16,16) +c +c Put in pausemid beats of rest +c + do 3 icm = 0 , numchan-1 + call addmidi(icm,0,0,0,4.*numb16,.true.,.false.) +3 continue + miditime = miditime+nint(240*pausemid) +c +c Restore meter +c + call midievent('m',mtrdenl*lenbar/64,mtrdenl) + end if + go to 1 + else if (durq .eq. 'i') then +c +c Instrument numbers or letters. Expect noinst of them. +c + do 2 ivx = 1 , noinstarg + call getchar(lineq,iccount,durq) + if (ichar(durq) .gt. 96) then +c +c It's a lowercase letter. Get another, find corr. instrument #. +c + instq(1:1) = durq + call getchar(lineq,iccount,durq) + instq = instq(1:1)//durq + iname = index('XXpiXrhXhaXmaXorXguXabXvlXvaXvcXcbXtrXtbX'// + * 'tuXfrXsoXalXteXbsXobXbaXclXflXreXctXvo',instq)/3 + if (iname .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Unrecognized 2-letter midi instrument name!') + call stop1() + end if + midinst(ivx) = midinum(iname)-1 + else +c +c Expect a number, followed by ":" if that is followed by another number. +c I.e., if after call to readnum, durq is not ":", it must be either blank +c or next instrument letter. +c + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected a midi instrument number here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + midinst(ivx) = nint(fnum)-1 + if (midinst(ivx).lt.0 .or. midinst(ivx).gt.255) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Midi instrument number must be in range 1-128!') + call stop1() + end if + if (durq .ne. ':') iccount = iccount-1 + end if +2 continue + go to 1 + else if (durq .eq. 'v') then +c +c Get volumes for each instrument. Expect noinst of them. +c Follow same pattern as for insttrument numbers above. +c + do 7 ivx = 1 , noinstarg + call getchar(lineq,iccount,durq) + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected a midi velocity number here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + midivel(ivx) = nint(fnum)-1 + if (midivel(ivx).lt.0 .or. midivel(ivx).gt.127) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Midi velocity must be in range 1-128!') + call stop1() + end if + if (durq .ne. ':') iccount = iccount-1 +7 continue + if (.not. first) then + call inst2chan(midvelc,midivel,midchan,nv,iinsiv,twoline) + end if + go to 1 + else if (durq .eq. 'b') then +c +c Get balance for each instrument. Expect noinst of them. +c Follow same pattern as for instrument numbers above. +c + do 8 ivx = 1 , noinstarg + call getchar(lineq,iccount,durq) + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected a balance number here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + midibal(ivx) = nint(fnum)-1 + if (midibal(ivx).lt.0 .or. midibal(ivx).gt.127) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Midi balance must be in range 1-128!') + call stop1() + end if + if (durq .ne. ':') iccount = iccount-1 +8 continue + if (.not. first) then + call inst2chan(midbc,midibal,midchan,nv,iinsiv,twoline) + end if + go to 1 + else if (durq .eq. 'T') then +c +c Get transposition for each instrument. Expect noinst of them. +c Follow similar pattern as above, but separator is +|-. +c + do 9 ivx = 1 , noinstarg + call getchar(lineq,iccount,durq) + ipm = index('-+',durq) + if (ipm .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected "+" or "-" for midi transposition here!') + call stop1() + end if + ipm = 2*ipm-3 + call getchar(lineq,iccount,durq) + if (index('0123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected a number here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + miditran(ivx) = ipm*nint(fnum) +c if (mod(miditran(ivx),12).ne. 0) then +c call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, +c * 'Midi transposition limited to multiples of 12!') +c call stop1() +c end if + iccount = iccount-1 +9 continue + if (.not. first) then + call inst2chan(midtc,miditran,midchan,nv,iinsiv,twoline) + end if + go to 1 + else if (durq .eq. 'g') then + call getchar(lineq,iccount,durq) + if (index('0123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected an integer here for the midi gap!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + mgap = nint(fnum) + iccount = iccount-1 + go to 1 + else if (durq .eq. 'M') then +c +c MidiMacros +c + call getchar(lineq,iccount,durq) + if (durq .eq. 'R') then +c +c Start recording +c + if (mmacrec) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'You tried to record a MidiMacro while already recording!') + call stop1() + end if + mmacrec = .true. + call getchar(lineq,iccount,durq) + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected MidiMacro ID number here!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + if (.not.first) then + immac = nint(fnum) + if (immac .gt. 20) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'MidiMacro ID cannot exceed 20!') + call stop1() + end if +c +c Save the start time +c + mmactime(immac) = miditime + do 4 icm = 0 , numchan + if (icm .lt. numchan) then + if (restpend(icm)) then +c +c Adjust if there's a rest at end of prior section. Insert dummy turnoff. +c (This causes two turn-offs in a row, which testmidi sees as an error). +c +c Before: section1 ------rest------- section2(to be recorded) +c After: section1 rest1 now rest2 section2(recorded) +c + call addmidi(icm,30,0,0,trest(icm),.false.,.true.) + trest(icm) = 0 + restpend(icm) = .false. + end if + else + if (miditime .gt. lasttime) then +c +c Insert a dummy turnoff in conductor track +c + call addmidi(icm,30,0,0,(miditime-lasttime)/15., + * .false.,.true.) + lasttime = miditime + end if + end if + mmacstrt(icm,immac) = imidi(icm)+1 +4 continue + end if + go to 1 + else if (index('123456789P',durq) .eq. 0) then +c +c End recording; close the open macro. Get immac from common. +c + if (.not.mmacrec) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'You tried to end a MidiMacro before starting one!') + call stop1() + end if + mmacrec = .false. + iccount = iccount-1 + if (.not.first) then +c +c Save the macro duration +c + mmactime(immac) = miditime-mmactime(immac) + do 5 icm = 0 , numchan + if (icm .lt. numchan) then + if (restpend(icm)) then + call addmidi(icm,30,0,0,trest(icm),.false.,.true.) + trest(icm) = 0 + restpend(icm) = .false. + end if + else + if (miditime .gt. lasttime) then +c +c Insert a dummy turnoff in conductor track if needed. +c + call addmidi(icm,30,0,0,(miditime-lasttime)/15., + * .false.,.true.) + lasttime = miditime + end if + end if + mmacend(icm,immac) = imidi(icm) +5 continue + end if + if (durq .ne. ' ')go to 1 + else if (durq .eq. 'P') then +c +c Play Back a Macro +c + call getchar(lineq,iccount,durq) + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Expected MidiMacro ID number here!') + call stop1() + end if + if (mmacrec) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'You tried to play a MidiMacro before ending recording!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + if (.not.first) then + immac = nint(fnum) + if (mmactime(immac) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Cannot play a MIDI macro before recording it!') + call stop1() + end if + do 6 icm = 0 , numchan + if (icm .lt. numchan) then + if (restpend(icm)) then + call addmidi(icm,30,0,0,trest(icm),.false.,.true.) + trest(icm) = 0. + restpend(icm) = .false. + end if + else + if (miditime .gt. lasttime) then +c +c Insert a dummy turnoff in conductor track +c + call addmidi(icm,30,0,0,(miditime-lasttime)/15., + * .false.,.true.) + end if + end if + msecend(icm,nmidsec) = imidi(icm) + msecstrt(icm,nmidsec+1) = mmacstrt(icm,immac) + msecend(icm,nmidsec+1) = mmacend(icm,immac) + msecstrt(icm,nmidsec+2) = imidi(icm)+1 +6 continue + nmidsec = nmidsec+2 +c +c Update running time +c + miditime = miditime+mmactime(immac) + lasttime = miditime + end if + go to 1 + else + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in MidiMacro sub-command!') + call stop1() + end if + else if (durq .eq. 'd') then + debugmidi = .true. + go to 1 + else if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character in MIDI input data!') + write(*,'(a)') + * 'May be too many args to i,v,b, or T. As of Ver. 2.7, '// + * 'should be noinst, not nv' + write(15,'(a)') + * 'May be too many args to i,v,b, or T. As of Ver. 2.7, '// + * 'should be noinst, not nv' + call stop1() + end if + if (.not.gottempo .and. .not.first) then +c +c If no tempo is set on first call on the pmxb pass, then set it +c + call midievent('t',96,0) + gottempo = .true. + end if + return + end + subroutine getnote(loop) + parameter (nm=24,mv=24576) + common /comlast/ islast,usevshrink + logical islast,usevshrink,ignorenats,newmbrhgt + common /comignorenats/ mbrhgt,newmbrhgt,ignorenats + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + character*10 figq + character*1 ulq,sepsymq,sq,rptfq1,rptfq2,clefq,chax + logical beamon,firstgulp,figbass,figchk,isfig + character*60 cheadq + character*120 instrq,titleq,compoq + integer*2 mmidi + logical restpend,relacc,notmain,twoline,ismidi,crdacc,autofbon + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 + common /comtitl/ instrq,titleq,compoq,headlog,inskip,ncskip, + * inhead + common /cominbot/ inbothd + common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), + * fullsize(nm),ivxfig2,ivvfig(2,74) + common /comnotes/ nnodur,lastlev,ndlev(nm,2),shifton,setis,notcrd, + * npreslur,was2(nm),ninow,nobar1,nsystp(75),ipage, + * OptLineBreakTies,HeaderSpecial + common /comget/ lastchar,rptnd1,sluron(nm,2),fbon,ornrpt,stickyS, + * movbrk,movnmp,movdnp,movgap,parmov,fintstf,gintstf, + * rptprev,equalize,rptfq1,rptfq2 + common /comhead/ ihdht,lower,headrq,lowerq,ihdvrt + common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, + * tautofb,autofbon,t1autofb + common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, + * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, + * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, + * graspace(37), + * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), + * naccg(74),voltxtq(6),litq(83) + logical upg,slurg,slashg,fbon,ornrpt,shifton,setis,notcrd,isbjmp, + * was2,nobar1,quoted,isbj2,stickyS, + * OptLineBreakTies,HeaderSpecial + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + character*128 litq + common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), + * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) + common /combc/ bcspec + common /comas3/ ask(2500),iask,topmods +c +c nvmx is either 1 or 2. ivmx(iv,1)=iv, ; ivmx(iv,2)>nv if defined +c ivx is current ivmx, and is the index for all notes, acc's etc. +c + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, + * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, + * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, + * rtshfac + common /comtrans/ cheadq + common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, + * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, + * lnam(nm),inameq(nm) + common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac + common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) + common /comask/ bar1syst,fixednew,scaldold, + * wheadpt,fbar,poenom + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), + * xinsnow,lowdot + common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) + common /c1ommac/ ip1mac(20),il1mac(20),ip2mac(20),il2mac(20), + * ic1mac(20),ilmac,iplmac + common /comdyn/ ndyn,idyndat(99),levdsav(nm),ivowg(12),hoh1(12), + * hoh2(12),hoh2h1(2),ntxtdyn,ivxiptxt(41),txtdynq(41), + * idynda2(99),levhssav(nm),listcresc,listdecresc + common /comclefq/ clefq(nm) + common /comtol/ tol + common /comArpShift/NumArpShift,IvArpShift(20),IpArpShift(20), + * ArpShift(20) + character*128 txtdynq + logical mrecord,mplay,endmac,lowdot,rename,bar1syst,upslur, + * fontslur,WrotePsslurDefaults + character*128 lineq,lnholdq,lineqt + character*80 headrq, lowerq + character*79 inameq + character*59 hdlndq + character*20 voltxtq + character*1 charq,dotq,durq,ulfbq,dumq + logical loop,lastchar,lower,rptnd1,rptprev,bcspec,moved, + * topmods,headlog,btest,sluron,cdot,equalize + character*24 tempq + logical novshrinktop,cstuplet + common /comnvst/ novshrinktop,cstuplet + logical kbdrests + common /comkbdrests/ levbotr(8),levtopr(8),kbdrests + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans + common /comkeys/ nkeys,ibrkch(18),newkey(18),iskchb,idumm1,isig1, + * mbrestsav,kchmid(18),logdumm1,logdumm2,barend,noinst,logdumm3 + logical barend,iskchb,kchmid,logdumm1,logdumm2,logdumm3 + common /combibarcnt/ ibarcnt + common /commidisig/ midisig + common /comlyr/ inputmlyr + logical inputmlyr + common /combottop/ botamt,topamt,bottopgap + logical bottopgap + logical inxtup + common /comshort/ shortfrac,codafrac,ishort,mbrsum,nmbr,nocodabn, + * poefa + real*4 poefa(125) + logical nocodabn + cdot = .false. + inxtup = .false. +1 call getchar(lineq,iccount,charq) + if (lastchar) return + if (charq .eq. ' ') go to 1 + if (charq .eq. '%') then +c +c Check for a bar number format: +c + if (iccount.eq.1 .and. lineq(2:2).eq.' ' .and. + * index('bB1234567890',lineq(3:3)).gt.0) then + if (islast) write(11,'(a)')lineq(1:lenstr(lineq,128)) + end if + iccount = 128 + go to 1 + end if +c +c Closing repeat iff charq='/' and the prev. char was 'R' with 'd' or 'r' +c + if (rptprev) then + rptnd1 = charq .eq. '/' + rptprev = .false. + end if +c +c Repeat at end of a piece +c + if ((ichar(charq).ge.97.and.ichar(charq).le.103) .or. + * charq.eq.'r') then + if (cdot) go to 28 +c +c This is a note/rest. +c + idotform = 0 + numnum = 0 +c +c If start of line of music, set pitch from previous +c + if (ivx .le. nv) then + kv = 1 + else + kv = 2 + end if + if (nnl(ivx).eq.0) lastlev = ndlev(iv,kv) +c +c notcrd is used to tell if orn. goes on main note or chord note +c +c notcrd = .true. !Move dow. Was not observed if dotted shortcut. +c +c Increase note count, then loop 'til blank. Label 28 is for dotted shortcuts. +c +28 continue +c +c Moved this from just above, 2 Feb 02 +c + notcrd = .true. + nnl(ivx) = nnl(ivx)+1 + if (ornrpt) then +c +c Replicate ornament bits, also bit 23 for beam handling if chord. +c + iornq(ivx,nnl(ivx)) = ior(iornq(ivx,nnl(ivx)),iornq(ivx,0)) + if (iand(iornq(ivx,nnl(ivx)),32896) .gt. 0) then +c +c This is a trill (bit 7 or 15) so must dup the parameters +c + ntrill = ntrill + 1 + ivtrill(ntrill) = ivx + iptrill(ntrill) = nnl(ivx) + xnsktr(ntrill) = xnsktr(ntrill-1) + end if + end if + if (stickyS) then +c +c Grab stemlength shortening parameters from prior note +c + mult(ivx,nnl(ivx)) = ibset(mult(ivx,nnl(ivx)),27) +c call setbits (mult(ivx,nnl(ivx)),3,28, +c * igetbits(mult(ivx,nnl(ivx)-1),3,28)) + call setbits (mult(ivx,nnl(ivx)),6,10, + * igetbits(mult(ivx,nnl(ivx)-1),6,10)) + end if + if (autofbon .and. tautofb.gt.tol .and. .not.fbon) then +c +c Doing auto forced beams, and period has been set, so check if this note +c starts a period. +c +c if (mod(1.*itsofar(ivx),tautofb) .lt. tol) then + if (mod(itsofar(ivx)-t1autofb,tautofb) .lt. tol) then +c +c Start a forced beam here +c + nfb(ivx) = nfb(ivx)+1 + fbon = .true. + ulfbq(ivx,nfb(ivx)) = 'x' + t1fb(ivx,nfb(ivx)) = itsofar(ivx) + end if + end if + if (fbon) ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),30) + dotq = 'x' + if (charq.eq.'r') + * irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),0) + if (btest(irest(ivx,nnl(ivx)),0)) then +c +c Rest stuff. First check if previous note was full-bar-pause +c + if (lineq(iccount+1:iccount+1) .eq.' ' + * .and. nnl(ivx).gt.1) then + if (btest(islur(ivx,nnl(ivx)-1),19)) + * islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),19) + end if +c +c Set default rest level at 0 unless 2 voices/staff in which case it's -4 or 2 +c for voice a or b. Set a-types at 0 as encountered and adjust later +c after '//'. (Override heights will be set to 100+offset) +c + if (ivx .le. nv) then + nolev(ivx,nnl(ivx)) = 0 + else + nolev(ivx,nnl(ivx)) = 2 + end if + end if +2 call getchar(lineq,iccount,durq) + ic = ichar(durq) + if (ic.le.57 .and. ic.ge.48) then +c +c Digit +c + if (numnum .eq. 0) then + nnodur = ic-48 + numnum = 1 + go to 2 + else if (numnum .eq. 1) then + ioct = ic-48 + numnum = 2 + go to 2 + else + print*,'>2 digits in note sym., ivx,nn:',ivx,nnl(ivx) + call stop1() + end if + else if (durq .eq. 'd') then + dotq = durq + if (lineq(iccount+1:iccount+1) .eq. 'd') then +c +c Double dot. +c + iccount = iccount+1 + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),3) + end if + if (index('+-',lineq(iccount+1:iccount+1)) .gt. 0) then +c +c move a dot, unless next char is not part of a number +c + if (index('0123456789.',lineq(iccount+2:iccount+2)) .eq. 0) + * go to 2 + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),19) + call getchar(lineq,iccount,durq) + ndotmv(ivx) = ndotmv(ivx)+1 + iccount=iccount+1 + call readnum(lineq,iccount,dumq,updot(ivx,ndotmv(ivx))) + if (durq .eq. '-') + * updot(ivx,ndotmv(ivx)) = -updot(ivx,ndotmv(ivx)) + if (index('+-',dumq) .gt. 0) then +c +c Vertical shift also +c + iccount=iccount+1 + call readnum(lineq,iccount,durq,rtdot(ivx,ndotmv(ivx))) + if (dumq .eq. '-') + * rtdot(ivx,ndotmv(ivx)) = -rtdot(ivx,ndotmv(ivx)) + else + rtdot(ivx,ndotmv(ivx)) = 0. + end if + iccount = iccount-1 + end if + go to 2 + else if (durq .eq. 'p') then +c +c Full-bar rest as pause +c + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),19) + go to 2 + else if (durq .eq. 'b') then +c +c Blank rest +c + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),29) + go to 2 + else if (index('fsn',durq) .gt. 0) then +c +c Accidental +c +c if (nacc(ivx,nnl(ivx)) .eq. 0) then +c 171209 May have set bit 18 earlier if D or F preceded accidental + if (igetbits(nacc(ivx,nnl(ivx)),2,0) .eq. 0) then +c +c No accidental has been set yet +c +c nacc(ivx,nnl(ivx)) = index('fsn',durq) + nacc(ivx,nnl(ivx)) = + * ior(nacc(ivx,nnl(ivx)),index('fsn',durq)) + else +c +c Repeated accid, so must be double +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),2) + end if + go to 2 + else if (durq .eq. 'i') then +c +c Set flag for MIDI-only accidental. +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),17) + go to 2 + else if (durq .eq. 'c') then +c +c Set flags for cautionary accidental +c + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),31) + iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),31) + go to 2 + else if (index('+-<>',durq) .gt. 0) then + ipm = index('- +',durq)-2 + if (.not.btest(irest(ivx,nnl(ivx)),0)) then +c +c A note, not a rest. +c + call chkpm4ac(lineq,iccount,nacc(ivx,nnl(ivx)),moved) + if (moved) go to 2 +c +c Octave jump with a note +c + if (numnum .lt. 2) then + lastlev = lastlev+ipm*7 + else + ioct = ioct+ipm*1 + end if + go to 2 + else +c +c Override default height of a rest +c + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + if (lineq(iccount-1:iccount-1) .eq. '.') then +c +c Kluge in case there is a shortcut ".". It will have been sucked up by +c readnum. (Same doesn't hold for ",") +c + iccount = iccount-1 +c go to 2 + end if + nolev(ivx,nnl(ivx)) = 100+ipm*nint(fnum) +c +c There may be more characters for this rest +c + iccount = iccount-1 + go to 2 + end if + else if (durq .eq. 'x') then +c +c Xtuplet. Count number of doubled notes (for unequal xtups) +c + if (btest(nacc(ivx,nnl(ivx)),18)) then + ndoub = 1 + else + ndoub = 0 + end if +c +c Initialize counter for # of non-rests, so can later unbeam if = 1. +c + inxtup = .true. + note1xtup = nnl(ivx) + nnb = 0 + if (.not.btest(irest(ivx,nnl(ivx)),0)) nnb = 1 +c +c Will set all durations to 0 except last one. Set flag on this note. +c + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),28) +c +c Next input will be digit unless its a "T" +c + iccount = iccount+1 + if (lineq(iccount:iccount) .eq. 'T') then +c +c Set up tremolo +c + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),2) + ntup = 2 +c +c Set default beaming, based on Wikipedia article +c May be a problem here is nnodur is inherited +c + if (nnodur .eq. 4) then + nsolid = 0 + nindent = 3 + else if (nnodur .eq. 2) then + nsolid = 3 + nindent = 0 + else if (nnodur .eq. 8) then + nsolid = 1 + nindent = 2 + end if + call getchar(lineq,iccount,durq) + if (index('0123456789',durq) .gt. 0) then + nsolid = index('0123456789',durq)-1 + if (nsolid.eq.0 .and. nnodur.eq.2) then + print*,'' + print*,'Unbeamed half-note 2-note tremolo forbidden.' + call stop1() + end if + call getchar(lineq,iccount,durq) + if (index('0123456789',durq) .gt. 0) then + nindent = index('0123456789',durq)-1 + end if + end if + call setbits(irest(ivx,nnl(ivx)),2,3,nsolid) + call setbits(irest(ivx,nnl(ivx)),2,5,nindent) + if (nsolid .eq. 0) then + islur(ivx,nnl(ivx)) = + * ibset(islur(ivx,nnl(ivx)),18) + end if + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),31) + islur(ivx,nnl(ivx)+1) = ibset(islur(ivx,nnl(ivx)+1),21) + call setbits(islur(ivx,nnl(ivx)+1),3,22,nsolid) +c +c Set some force-beam parameters for the tremolo +c +c Need to check if there's already a forced beam explicitly set here. +c If there was, shouldn't do any harm resetting parameters. +c + if (nfb(ivx).eq.0 .or. t1fb(ivx,nfb(ivx)).ne.itsofar(ivx)) + * nfb(ivx) = nfb(ivx)+1 + fbon = .true. + ulfbq(ivx,nfb(ivx)) = 'x' + t1fb(ivx,nfb(ivx)) = itsofar(ivx) + t2fb(ivx,nfb(ivx)) = itsofar(ivx) + ifnodur(nnodur,dotq) + nadj = 0 +c +c Set open beamed notehead flag for half-note tremolo +c Just gave 2 quarters with or without flag set. Need to fix +c + else + call readnum(lineq,iccount,durq,fnum) + ntup = nint(fnum) + end if + if (index('DF',durq) .gt. 0) then +c +c +c Double xtup note to make an un= xtup. Here xtup number already set but may also +c have this command before. +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) + if (durq .eq. 'F') nacc(ivx,nnl(ivx)) = + * ibset(nacc(ivx,nnl(ivx)),19) + ndoub = 1 + call getchar(lineq,iccount,durq) + else if (durq .eq. 'd') then + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),27) + call getchar(lineq,iccount,durq) + end if +c +c Only other possibilities here are ' ' or 'n' +c + if (durq .eq. 'n') then +c +c Alter xtup number +c + if (lineq(iccount+1:iccount+1) .eq. ' ') then +c +c If the only modifier is 'n', cancel the number +c + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),31) + else + numshft = 0 +30 call getchar(lineq,iccount,durq) + if (durq .eq. 'f') then +c +c Flip up-down-ness +c + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),14) + go to 30 + else if (index('+-',durq) .gt. 0) then +c +c Vertical or horiz shift +c + numshft = numshft+1 + iofforn = 1 + if (durq .eq. '-') iofforn = -1 + iccount = iccount+1 + call readnum(lineq,iccount,durq,xofforn) + iccount = iccount-1 + if (numshft .eq. 1) then +c +c Vertical shift +c 160214 Allow (-64,64) +c iofforn = iofforn*nint(xofforn) + 16 + iofforn = iofforn*nint(xofforn) + 64 +c +cc Turn on bit 1; set bits 2-6 to iofforn +c Turn on bit 1 of irest; set bits 16-22 of mult to iofforn +c +c irest(ivx,nnl(ivx)) = +c * ior(irest(ivx,nnl(ivx)),2+4*iofforn) + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),1) + call setbits(mult(ivx,nnl(ivx)),8,16,iofforn) + else +c +c Horizontal shift +c + iofforn = iofforn*nint(xofforn*10)+16 + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),7) + call setbits(irest(ivx,nnl(ivx)),5,9,iofforn) + end if + go to 30 + else if (durq .eq. 's') then +c +c Slope adjustment for bracket +c + mult(ivx,nnl(ivx)) = ibset(mult(ivx,nnl(ivx)),4) + call getchar(lineq,iccount,durq) + iofforn = index('- +',durq)-2 + iccount = iccount+1 + call readnum(lineq,iccount,durq,xofforn) + iccount = iccount-1 + iofforn = nint(iofforn*xofforn+16) + call setbits(mult(ivx,nnl(ivx)),5,5,iofforn) + else if (index('123456789',durq) .gt. 0) then +c +c Replacement printed number +c + call readnum(lineq,iccount,durq,xofforn) + call setbits(nacc(ivx,nnl(ivx)),5,22,nint(xofforn)) + iccount = iccount-1 + go to 30 + end if + end if + end if +c +c Set note level of 1st note of xtup, provided not a rest +c + if (.not.btest(irest(ivx,nnl(ivx)),0)) then + if (numnum .eq. 2) then + lastlev = ifnolev(charq,ioct,iTransAmt(instno(iv))) + nolev(ivx,nnl(ivx)) = lastlev + else + lastlev = lastlev-3 + * +mod(ifnolev(charq,10,iTransAmt(instno(iv)))-lastlev+3,7) + nolev(ivx,nnl(ivx)) = lastlev + end if + end if + do 40 npreslur = npreslur , 1 , -1 +c +c Set note level for preslur on starting note of xtuplet +c + call setbits(isdat2(nsdat-npreslur+1),7,19,lastlev) +40 continue + numnum = 0 + nodur(ivx,nnl(ivx)) = 0 + do 6 itup = 2 , ntup + if (ornrpt) then + iornq(ivx,nnl(ivx)) = ior(iornq(ivx,nnl(ivx)), + * iand(iornq(ivx,nnl(ivx)-1),10026991)) + if (iand(iornq(ivx,nnl(ivx)),32896) .gt. 0) then +c +c This is a trill (bit 7 or 15) so must dup the parameters +c + ntrill = ntrill + 1 + ivtrill(ntrill) = ivx + iptrill(ntrill) = nnl(ivx) + xnsktr(ntrill) = xnsktr(ntrill-1) + end if + end if + nnl(ivx) = nnl(ivx)+1 + if (fbon) ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),30) +7 call getchar(lineq,iccount,charq) + if (charq .eq. ' ') then + go to 7 + else if (charq .eq. '%') then + iccount = 128 + go to 7 + else if (charq .eq. 'o') then +c +c Ornament in xtuplet. "o" symbol must come AFTER the affected note +c + if (notcrd) then + nole = nolev(ivx,nnl(ivx)-1) + else + nole = iand(127,ishft(icrdat(ncrd),-12)) + end if + call getorn(lineq,iccount,iornq(ivx,nnl(ivx)-1), + * iornq(ivx,0),ornrpt,noffseg, + * nnl(ivx)-1,ivx,.false.,notcrd,nole) + go to 7 + else if (index('st(){}',charq) .gt. 0) then + nnlivx = nnl(ivx)-1 + if (charq.eq.'(' .or. charq.eq.'{') then +c +c Detected preslur in xtuplet loop, non-chord note +c + nnlivx = nnlivx+1 + npreslur = npreslur+1 + end if + islur(ivx,nnlivx) = ibset(islur(ivx,nnlivx),0) + if (charq.eq.'t') islur(ivx,nnlivx) = + * ibset(islur(ivx,nnlivx),1) + if (ivx .le. nv) then + kv = 1 + else + kv = 2 + end if + if (fontslur) then + call sslur(lineq,iccount,iv,kv,nnlivx,isdat1,isdat2, + * isdat3,nsdat,notcrd,nolev(ivx,nnlivx),charq) + else + call spsslur(lineq,iccount,iv,kv,nnlivx,isdat1,isdat2, + * isdat3,isdat4,nsdat,notcrd,nolev(ivx,nnlivx),charq) + end if + go to 7 + else if (charq .eq. 'G') then +c +c Kluge to get grace in xtup at right location +c + nnl(ivx) = nnl(ivx)-1 + call getgrace(ivx,nnl,lineq,iccount,islur,iornq,ipl,ndlev, + * lastlev,iv,nv) + nnl(ivx) = nnl(ivx)+1 + go to 7 + else if (charq .eq. sq) then + call littex(islur,nnl(ivx),ivx,topmods,lineq,iccount) + go to 7 + else if (charq .eq. '"') then +c +c pmxlyr string in xtup. Expand "..." to \pmxlyr{...}\ +c + if (.not. inputmlyr) then + ictemp = 0 + lineqt = sq//sq//sq//'input musixlyr '//sq + call littex(islur,nnl(ivx)+1,ivx,topmods,lineqt,ictemp) + inputmlyr = .true. + end if + call dopmxlyr(lineq,iccount) + charq = sq + call littex(islur,nnl(ivx),ivx,topmods,lineq,iccount) + go to 7 + else if (index('0123456789#-nx_',charq) .gt. 0) then +c +c Figure. Must come AFTER the first note of xtup +c + ivf = 1 + if (ivx .gt. 1) then + if (ivxfig2 .eq. 0) then + ivxfig2 = ivx + else if (ivx .ne. ivxfig2) then + print* + print*,'Figures not allowed in >1 voice above first' + stop + end if + ivf = 2 + end if + nfig1 = nfigs(ivf)+1 + call getfig(itoff(ivf,nfig1),charq,lineq,iccount, + * isfig(ivf,nnl(ivx)-1),itfig(ivf,nfig1),itsofar(ivx), +c * 0,figq(ivf,nfig1),ivupfig(ivf,nfig1),nfigs(ivf)) + * 0,figq(ivf,nfig1),ivupfig(ivf,nfig1),ivvfig(ivf,nfig1), + * nfigs(ivf)) + go to 7 + else if (charq .eq. 'X') then + call getx(lineq,iccount,irest(ivx,max(1,nnl(ivx)-1)), + * shifton,wheadpt,iornq(ivx,nnl(ivx)),ivx, + * irest(ivx,nnl(ivx)),itsofar(ivx),ntup,itup,nnodur, + * dotq,ndoub) + go to 7 + else if (charq .eq. 'z') then +c +c Chord note in xtup. Goes with *prior* note. +c + notcrd = .false. + ncrd = ncrd+1 + ipl(ivx,nnl(ivx)-1) = ibset(ipl(ivx,nnl(ivx)-1),10) + numnum = 0 +c icrdat(ncrd) = ior(nnl(ivx)-1,ishft(ivx,8)) + icrdat(ncrd) = nnl(ivx)-1 + call setbits(icrdat(ncrd),4,8,mod(ivx,16)) + if (ivx .ge. 16) icrdat(ncrd) = ibset(icrdat(ncrd),28) + icrdorn(ncrd) = 0 +c +c Get note name +c + call getchar(lineq,iccount,charq) +c +c Get optional inputs +c +34 call getchar(lineq,iccount,durq) +c +c When chord note is done, will get ' ', making ndx=0, so go past this block +c + ndx = index('fsn+-<>12345678reicd',durq) + if (ndx .gt. 0) then + if (ndx .le. 3) then + if (.not.btest(icrdat(ncrd),19)) then + icrdat(ncrd) = ibset(icrdat(ncrd),19) + icrdat(ncrd) = ior(icrdat(ncrd),ishft(ndx,20)) + else + icrdat(ncrd) = ibset(icrdat(ncrd),22) + end if + else if (durq .eq. 'd') then +c +c Get dot on chord note in xtup. Assume +n+n +c + icrdat(ncrd) = ibset(icrdat(ncrd),26) + call getchar(lineq,iccount,durq) + iccount=iccount+1 + call readnum(lineq,iccount,dumq,fnum) + if (durq .eq. '+') then + icrdot(ncrd) = ior(icrdot(ncrd),nint(fnum*10)+64) + else + icrdot(ncrd) = ior(icrdot(ncrd),-nint(fnum*10)+64) + end if + if (index('+-',dumq) .gt. 0) then +c +c Vertical shift specified also +c + iccount=iccount+1 + call readnum(lineq,iccount,durq,fnum) + if (dumq .eq. '+') then + ifnum = nint(fnum*10)+64 + else + ifnum = -nint(fnum*10)+64 + end if + else + ifnum = 64 + end if + icrdot(ncrd) = ior(icrdot(ncrd),ishft(ifnum,7)) + iccount = iccount-1 +c iccount = iccount+4 +c +c +c + else if (ndx .eq. 19) then +c +c Set flags for cautionary accidental +c + icrdat(ncrd) = ibset(icrdat(ncrd),31) + iornq(ivx,nnl(ivx)-1) = + * ibset(iornq(ivx,nnl(ivx)-1),31) + else if (ndx .le. 7) then +c +c +/-/ Check whether octave or accidental shift +c + nactmp = 0 + call chkpm4ac(lineq,iccount,nactmp,moved) + if (moved) then +c +c Transfer accidental shift values +c + call setbits(icrdot(ncrd),6,14, + * igetbits(nactmp,6,4)) + call setbits(icrdot(ncrd),7,20, + * igetbits(nactmp,7,10)) + else + if (durq .eq. '+') then + lastlev = lastlev+7 + else if (durq .eq. '-') then + lastlev = lastlev-7 + end if + end if + else if (durq .eq. 'e') then + icrdat(ncrd) = ibset(icrdat(ncrd),23) + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),27) + else if (durq .eq. 'r') then + icrdat(ncrd) = ibset(icrdat(ncrd),24) + irest(ivx,nnl(ivx)-1) = + * ibset(irest(ivx,nnl(ivx)-1),20) + else if (durq .eq. 'i') then +c +c Midi-only accidental +c + icrdat(ncrd) = ibset(icrdat(ncrd),27) + else +c +c must be a number, save it in ioct +c + numnum = 1 + ioct = ndx-7 + end if + go to 34 + end if + if (numnum .eq. 1) then + lastlev = ifnolev(charq,ioct,iTransAmt(instno(iv))) + else + lastlev = lastlev-3 + * +mod(ifnolev(charq,10,iTransAmt(instno(iv)))-lastlev+3,7) + end if + icrdat(ncrd) = ior(icrdat(ncrd),ishft(lastlev,12)) + do 41 npreslur = npreslur , 1 , -1 +c +c Set note level for preslur on chord note in xtup +c + call setbits (isdat2(nsdat-npreslur+1),7,19,lastlev) +c +c Following lines copied from loop for non-xtup, chord note, preslur +c Initially I assigned the slur(s) to next note, so fix. +c + islur(ivx,nnl(ivx)) = ibclr(islur(ivx,nnl(ivx)),0) + islur(ivx,nnl(ivx)-1) = ibset(islur(ivx,nnl(ivx)-1),0) + isdat2(nsdat-npreslur+1) = + * ibset(isdat2(nsdat-npreslur+1),0) + call setbits(isdat1(nsdat-npreslur+1),8,3, + * igetbits(isdat1(nsdat-npreslur+1),8,3)-1) +41 continue + go to 7 + else if (charq .eq. '?') then +c +c Arpeggio +c + if (btest(ipl(ivx,nnl(ivx)-1),10)) then +c +c This is a chordal note. Set a bit in icrdat. But if *main* (spacing) note +c of chord, will not set icrdat(25), but iornq(27) +c + icrdat(ncrd) = ibset(icrdat(ncrd),25) + else + iornq(ivx,nnl(ivx)-1) = ibset(iornq(ivx,nnl(ivx)-1),27) + end if +c +c Check for shift +c + call getchar(lineq,iccount,durq) + if (durq .eq. ' ') then + iccount = iccount-1 + else +c +c durq must be "-" +c + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 +c +c record the shift +c + NumArpShift = NumArpShift+1 + IvArpShift(NumArpShift) = ivx + IpArpShift(NumArpShift) = nnl(ivx)-1 + ArpShift(NumArpShift) = fnum + end if + go to 7 + else if (charq .eq. 'D') then + call getdyn(ivx,nnl(ivx)-1,irest(ivx,nnl(ivx)-1), + * iornq(ivx,nnl(ivx)-1),lineq,iccount) + go to 7 +c +c 140215 Allow clef change inside xtuplet. With normal code, came out one +c note too late, so try making it come earlier. +c + else if (charq .eq. 'C') then +c +c Clef change on next note. Set bits 11-15. Won't allow in 2nd line of music. +c + if (nnl(iv)-1 .gt. 0) ncc(iv) = ncc(iv)+1 +c +c 140218 Need to get time differently inside xtup, since itsofar doesn't get +c updated until after xtup is done +c + nodurt = ifnodur(nnodur,dotq) + tcc(iv,ncc(iv)) = itsofar(iv)+int(1.*nodurt/ntup*(itup-1)) + isl = ibset(islur(iv,nnl(iv)),11) + call getchar(lineq,iccount,durq) +c +c Store clef number, or 7 if clef number = 9 (French violin clef) +c + isl = ior(isl,ishft(min(numclef(durq),7),12)) + ncmidcc(iv,ncc(iv)) = ncmidf(durq) + if (durq .eq. '8') then + ipl(iv,nnl(iv))=ibset(ipl(iv,nnl(iv)),2) + iTransAmt(instno(iv)) = 7+iTransAmt(instno(iv)) + end if +c +c Set marker on note with lowest voice # starting at same time. +c + if (iv .eq. 1) then + isl = ibset(isl,15) + else + do 70 iiv = 1 , iv +c nnliiv = nnl(iiv) + nnliiv = nnl(iiv)-1 + if (iiv .eq. iv) nnliiv = nnliiv+1 + itother = 0 + do 71 iip = 1 , nnliiv + if (itother .lt. itsofar(iv)) then + itother = itother+nodur(iiv,iip) + go to 71 + else if (itother .eq. itsofar(iv)) then + islur(iiv,iip) = ibset(islur(iiv,iip),15) + go to 72 + end if +71 continue +70 continue +72 continue + end if +c +c Need 'or' since may have set bit 15 in the above loop +c +c islur(iv,nnl(iv)+1) = ior(isl,islur(iv,nnl(iv)+1)) + islur(iv,nnl(iv)) = ior(isl,islur(iv,nnl(iv))) + go to 7 +c+++ + else if (charq .eq. ']') then +c +c Multiplicity up-down, must have '][ ' +c + islur(ivx,nnl(ivx)-1) = ibset(islur(ivx,nnl(ivx)-1),20) + iccount = iccount+2 + go to 7 +cc+++ + end if +c +c End of loop for xtup options. If here, charq must be a (non-crd) note name. +c or rest +c + if (charq .eq. 'r') then +c +c Rest in xtup +c + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),0) + if (index('+-b',lineq(iccount+1:iccount+1)) .gt. 0) then + call getchar(lineq,iccount,durq) + if (durq .eq. 'b') then +c +c Blank rest in middle of xtup +c + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),29) + else +c +c Override height of embedded xtup rest +c + ipm = index('- +',durq)-2 + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + nolev(ivx,nnl(ivx)) = 100+ipm*nint(fnum) + iccount = iccount-1 + end if + else if (ivx .le. nv) then + nolev(ivx,nnl(ivx)) = 0 + else + nolev(ivx,nnl(ivx)) = 2 + end if + else +c +c Counter for non-rests +c + nnb = nnb+1 + end if + notcrd = .true. +8 call getchar(lineq,iccount,durq) + if (durq .ne. ' ') then + if (index('+-<>',durq) .gt. 0) then +c +c Accidental horizontal shift +c + call chkpm4ac(lineq,iccount,nacc(ivx,nnl(ivx)),moved) + if (.not.moved) then + if (durq.eq.'+') then + lastlev = lastlev+7 + else if (durq.eq.'-') then + lastlev = lastlev-7 + end if + end if + else if (index('fsn',durq) .gt. 0) then +c +c if (nacc(ivx,nnl(ivx)) .eq. 0) then +c May have set other bits earlier + if (igetbits(nacc(ivx,nnl(ivx)),2,0) .eq. 0) then +c +c No accid set yet +c +c nacc(ivx,nnl(ivx)) = index('fsn',durq) + nacc(ivx,nnl(ivx)) = + * ior(nacc(ivx,nnl(ivx)),index('fsn',durq)) + else +c +c Symbol must be repeated, so it's a double +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),2) + end if + else if (durq .eq. 'i') then +c +c Set flag for midi-only accidental +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),17) + + else if (durq .eq. 'c') then +c +c Set flags for cautionary accidental +c + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),31) + iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),31) + else if (index('ul',durq) .gt. 0) then +c +c Force stem direction for non-beamed xtup note +c + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),30) + if (durq .eq. 'u') islur(ivx,nnl(ivx)) = + * ibset(islur(ivx,nnl(ivx)),17) + else if (durq .eq. 'e') then +c +c Left-shift main xtup note +c + ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),8) + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),27) + else if (durq .eq. 'r') then +c +c Right-shift main xtup note +c + ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),9) + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),20) + else if (index('DF',durq) .gt. 0) then +c +c Double an xtup note to make an unequal xtup +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) + if (durq .eq. 'F') nacc(ivx,nnl(ivx)) = + * ibset(nacc(ivx,nnl(ivx)),19) + ndoub = ndoub+1 + else if (durq .eq. 'd') then +c +c Dotted xtup note +c +c if (btest(irest(ivx,nnl(ivx))-1,2)) then + if (btest(irest(ivx,nnl(ivx)-1),2)) then +c +c Move dot on 2nd note of 2-note tremolo +c + ndotmv(ivx) = ndotmv(ivx)+1 + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),19) + call g1etchar(lineq,iccount,durq) ! Will be + or - + iccount = iccount+1 + call readnum(lineq,iccount,dumq, + * updot(ivx,ndotmv(ivx))) + if (durq .eq. '-') updot(ivx,ndotmv(ivx)) = + * -updot(ivx,ndotmv(ivx)) + if (index('+-',dumq) .gt. 0) then +c +c Vertical shift also +c + call readnum(lineq,iccount,durq, + * rtdot(ivx,ndotmv(ivx))) + if (durq .eq. '-') rtdot(ivx,ndotmv(ivx)) + * = -rtdot(ivx,ndotmv(ivx)) + end if + iccount = iccount-1 + else +c +c Dot for 3:1 pair of xtup notes +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),27) + end if + else +c +c Must be an octave number +c + lastlev = ifnolev(charq,ichar(durq)-48 + * ,iTransAmt(instno(iv))) + end if + go to 8 + end if + if (itup .lt. ntup) then +c +c Last note is handled *after* flowing out of the xtup if block, but still +c within block for a note-rest. Set note level now (rest already done). +c Could have problem here if rests & doubled notes are combined in xtup, +c since might exit the loop at the wrong place. Worry about it later. +c + if (.not.btest(irest(ivx,nnl(ivx)),0)) then + lastlev = lastlev-3+mod(ifnolev(charq,10, + * iTransAmt(instno(iv)))-lastlev+3,7) + nolev(ivx,nnl(ivx)) = lastlev + end if + nodur(ivx,nnl(ivx)) = 0 + do 42 npreslur = npreslur , 1 , -1 +c +c Set note level for preslur on internal xtup note +c + call setbits (isdat2(nsdat-npreslur+1),7,19,lastlev) +42 continue + end if + if (itup .eq. ntup-ndoub) go to 12 +6 continue +12 continue + if (ornrpt) then + iornq(ivx,nnl(ivx)) = ior(iornq(ivx,nnl(ivx)), + * iand(iornq(ivx,nnl(ivx)-1),10026991)) + if (iand(iornq(ivx,nnl(ivx)),32896) .gt. 0) then +c +c This is a trill (bit 7 or 15) so must dup the parameters +c + ntrill = ntrill + 1 + ivtrill(ntrill) = ivx + iptrill(ntrill) = nnl(ivx) + xnsktr(ntrill) = xnsktr(ntrill-1) + end if + end if +c +c End of if-block for xtuplet input +c + else if (durq .eq. 'm') then +c +c Multi-bar rest: next 1 or two digits are # of bars. +c For some purposes, pretend its one bar only +c + nodur(ivx,nnl(ivx)) = lenbar + ibarmbr = nbars+1 + mbrest = 0 + xb4mbr = 0. +20 call getchar(lineq,iccount,durq) + if (ichar(durq).ge.48.and.ichar(durq).le.57) then + mbrest = 10*mbrest+ichar(durq)-48 + go to 20 + end if +c +c durq will either be blank or 'n' + if (durq .eq. 'n') then +c +c Get new height +c + iplmi = 1 + call g1etchar(lineq,iccount,durq) + if (durq .eq. '-') then + iplmi = -1 + iccount = iccount+1 + end if + call readnum(lineq,iccount,durq,hgt) + mbrhgt = nint(iplmi*hgt) + newmbrhgt = .true. + end if + else if (index('ul',durq) .gt. 0) then +c +c Set stem flipper +c + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),30) + if (durq .eq. 'u') islur(ivx,nnl(ivx)) = + * ibset(islur(ivx,nnl(ivx)),17) + go to 2 + else if (durq .eq. 'a') then +c +c "Alone", i.e., prohibit beam +c + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),18) + go to 2 + else if (durq .eq. 'r') then +c +c Right offset by one notehead +c + ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),9) + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),20) + go to 2 + else if (durq .eq. 'e') then +c +c Left offset by one notehead +c + ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),8) + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),27) + go to 2 + else if (index('LS',durq) .gt. 0) then +c +c Stemlength change. Get dstemlen in \internotes. Allowable values are -4 to 27.5 +c Set mult(27). Map value to 0 to 63, store in mult(10-15). Later convert to +c interbeams = internotes*2/3. +c +c + isign = 1 + if (durq .eq. 'S') isign = -1 + mult(ivx,nnl(ivx)) = ibset(mult(ivx,nnl(ivx)),27) + call getchar(lineq,iccount,durq) + if (durq .eq. ':') then +c +c End stickyS. Grab data now from prior note, since we have to shut off stickyS. +c + call setbits (mult(ivx,nnl(ivx)),6,10, + * igetbits(mult(ivx,nnl(ivx)-1),6,10)) + stickyS = .false. + go to 2 + end if +c +c If durq .ne. ':' then iccount is now on the start of the number +c + call readnum(lineq,iccount,durq,dum) + dum = isign*dum + call setbits (mult(ivx,nnl(ivx)),6,10,nint((dum+4.)*2)) + if (durq .eq. ':') then + stickyS = .true. + else + iccount = iccount-1 + end if + go to 2 + else if (durq .eq. ',') then +c +c 2:1 pattern +c + idotform = 3 +c +c Now flow to duration setting, as if durq=' ' +c + else if (durq .eq. '.') then +c +c Dotted pattern. Close out note. Mult time by 3/4. +c Set time for next note to 1/4. Start the note. +c + idotform = 1 + else if (durq .eq. 'o') then +c +c Suppress rest centering +c + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),25) + go to 2 + else if (durq .eq.'L') then +c +c With keyboard rest option, look left +c +c iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),30) + ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),1) + go to 2 + else if (index('DF',durq) .gt. 0) then +c +c Double note for xtup. Must check here in case "D" came before "x" or on +c last note of xtup. Need to flag it in pmxa since affects horiz. spacing. +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),18) + if (durq .eq. 'F') nacc(ivx,nnl(ivx)) = + * ibset(nacc(ivx,nnl(ivx)),19) + go to 2 + else if (durq .eq. 'A') then +c +c Accidental option +c + call getchar(lineq,iccount,durq) +c + if (durq .eq. 'o') then +c +c Ordered accidentals in a chord. Mark the main note. +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),28) + else +c +c Only other possibility is +-<> . Set tag, reduce iccount and loop to get #'s +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),29) + iccount = iccount-1 + end if + go to 2 + else if (durq .eq. 'T') then + call getchar(lineq,iccount,durq) + multtrem = index('1234',durq) + if (multtrem .eq. 0) then + iccount = iccount-1 + multtrem = 1 + end if + ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),4) + call setbits(ipl(ivx,nnl(ivx)),2,5,multtrem-1) + go to 2 + else if (durq .ne. ' ') then + print*,'Illegal character in note: ',durq,', ivx,nn:', + * ivx,nnl(ivx) + call stop1() + end if +c +c Done with note/rest options. Set level and duration. +c + if (.not.btest(irest(ivx,nnl(ivx)),0)) then + if (numnum .eq. 2) then + lastlev = ifnolev(charq,ioct,iTransAmt(instno(iv))) + nolev(ivx,nnl(ivx)) = lastlev + else + lastlev = lastlev-3 + * +mod(ifnolev(charq,10,iTransAmt(instno(iv)))-lastlev+3,7) + nolev(ivx,nnl(ivx)) = lastlev + end if + do 43 npreslur = npreslur , 1 , -1 +c +c Set level for preslur on normal note, non-chord +c + call setbits(isdat2(nsdat-npreslur+1),7,19,lastlev) +43 continue +c +c Only matters if last note, non-rest of xtuplet +c + nnb = nnb+1 + end if +c +c Set flag for unbeamed xtup if it just has 1 note +c + if (inxtup .and. nnb.eq.1) then + islur(ivx,note1xtup) = ibset(islur(ivx,note1xtup),18) + end if + if (idotform .gt. 0) then + if (idotform .eq. 1) then + nodur(ivx,nnl(ivx)) = ifnodur(nnodur,dotq)*3/2 + else if (idotform .eq. 2) then + nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx)-1)/3 + else if (idotform .eq. 3) then + nodur(ivx,nnl(ivx)) = ifnodur(nnodur,dotq) + else if (idotform .eq. 4) then + nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx)-1)/2 + end if + else if (btest(islur(ivx,nnl(ivx)),19)) then +c +c Set duration of full-bar rest as pause +c + nodur(ivx,nnl(ivx)) = lenbar +c +c Use a one-line function to set nnodur. It gives inverse of ifnodur. +c + nnodur = index('62514x0x37', + * chax(48+int(log(.1+lenbar)/.69315)))-1 + else if (ibarmbr.ne.nbars+1) then + nodur(ivx,nnl(ivx)) = ifnodur(nnodur,dotq) + if (btest(islur(ivx,nnl(ivx)),3)) + * nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx))*7/6 + end if + if (shifton .and. .not.btest(irest(ivx,nnl(ivx)),16)) then +c +c Shift is on, and this is not first shifted note. Check for duration change +c + if (nodur(ivx,nnl(ivx)) .ne. nodur(ivx,nnl(ivx)-1)) then +c +c Must stop and restart the offset. +c + irest(ivx,nnl(ivx)-1) = ibset(irest(ivx,nnl(ivx)-1),17) + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),16) + nudoff(ivx) = nudoff(ivx)+1 + udoff(ivx,nudoff(ivx)) = udoff(ivx,nudoff(ivx)-1) + end if + end if + itsofar(ivx) = itsofar(ivx)+nodur(ivx,nnl(ivx)) + if (autofbon .and. tautofb.gt.tol .and. fbon) then +c +c Check to see if need to terminate auto forced beam +c + if (mod(itsofar(ivx)-t1autofb,tautofb) .lt. tol) then +c +c Terminate autofb +c + t2fb(ivx,nfb(ivx)) = itsofar(ivx) + fbon = .false. + end if + end if + if (mod(itsofar(ivx)-lenb0,lenbar) .eq. 0) then +c +c Finished a bar +c + nbars = nbars+1 + nib(ivx,nbars) = nnl(ivx) + if (firstgulp.and.lenb0.ne.0.and.nbars.eq.1) then +c +c Just finished the pickup bar for this voice. +c + lenbar = lenb1 + end if + end if + if (idotform .eq. 1) then + call getchar(lineq,iccount,charq) + idotform = 2 + numnum = 1 + go to 28 + else if (idotform .eq. 3) then + call getchar(lineq,iccount,charq) + idotform = 4 + numnum = 1 + go to 28 + end if +c +c End of sub block for note-rest +c + else if (charq .eq. 'z') then +c +c Chord note. Must have note name, may have octave#,+,-,s,f,n,d +c Actually the 'd' is not used, since time value comes from +c basic note. Unless dot is to be shifted! +c Doesn't increase # of notes, so must handle separately +c ncrd: index of crd +c Set bit 10 of ipl on main note as flag +c Bits in icrdat: +c 0-7 ip within voice +c 8-11 ivx +c 12-18 note level +c 19 accidental? +c 20-22 accidental value (1=natural, 2=flat, 3=sharp, 6=dflat, 7=dsharp) +c 23 shift left +c 24 shift right +c 25 arpeggio start or stop +c 26 flag for moved dot (here, not icrdot, since this is always reset!) +c 27 Midi-only accidental +c 29 Tag for accidental shift...means add to autoshifts. +c 31 Cautionary accidental +c +c Bits in icrdot: +c 0-6 10*abs(vertical dot shift in \internote) + 64 +c 7-13 10*abs(horizontal dot shift in \internote) + 64 +c 14-19 vert accidental shift-32 +c 20-26 20*(horiz accidental shift+3.2) +c 27-29 top-down level rank of chord note w/accid. Set in crdaccs. +c +c Bits in icrdorn are same as in iornq, even tho most orns won't go in crds. +c + ncrd = ncrd+1 + ipl(ivx,nnl(ivx)) = ibset(ipl(ivx,nnl(ivx)),10) + numnum = 0 +c icrdat(ncrd) = ior(nnl(ivx)-1,ishft(ivx,8)) + icrdat(ncrd) = nnl(ivx) + call setbits(icrdat(ncrd),4,8,mod(ivx,16)) + if (ivx .ge. 16) icrdat(ncrd) = ibset(icrdat(ncrd),28) + icrdot(ncrd) = 0 + icrdorn(ncrd) = 0 +c +c Get note name +c + call getchar(lineq,iccount,charq) +c +c Get optional inputs +c +25 call getchar(lineq,iccount,durq) +c ndx = index('fsn+-<>12345678rediA',durq) + ndx = index('fsn+-<>12345678rediAc',durq) + if (ndx .eq. 20) then +c +c Expect +|-|<|> , set tag, loop +c + icrdat(ncrd) = ibset(icrdat(ncrd),29) + go to 25 + else if (ndx .gt. 0) then + if (ndx .le. 3) then + if (.not.btest(icrdat(ncrd),19)) then + icrdat(ncrd) = ibset(icrdat(ncrd),19) + icrdat(ncrd) = ior(icrdat(ncrd),ishft(ndx,20)) + else + icrdat(ncrd) = ibset(icrdat(ncrd),22) + end if + else if (ndx .eq. 21) then +c +c Set flags for cautionary accidental +c + icrdat(ncrd) = ibset(icrdat(ncrd),31) + iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),31) + else if (ndx .le. 7) then +c +c +/-/ Check whether octave or accidental shift +c + nactmp = 0 + call chkpm4ac(lineq,iccount,nactmp,moved) + if (moved) then +c +c Transfer accidental shift values +c + call setbits(icrdot(ncrd),6,14,igetbits(nactmp,6,4)) + call setbits(icrdot(ncrd),7,20,igetbits(nactmp,7,10)) + else + if (durq .eq. '+') then + lastlev = lastlev+7 + else if (durq .eq. '-') then + lastlev = lastlev-7 + end if + end if + else if (durq .eq. 'e') then + icrdat(ncrd) = ibset(icrdat(ncrd),23) + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),27) + else if (durq .eq. 'r') then + icrdat(ncrd) = ibset(icrdat(ncrd),24) + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),20) + else if (durq .eq. 'i') then +c +c Midi-only accidental on chord note +c + icrdat(ncrd) = ibset(icrdat(ncrd),27) + else if (durq .eq. 'd') then +c +c Must keep 'd' optional (backward compatibility), unless it is moved! +c + if (index('+-',lineq(iccount+1:iccount+1)) .gt. 0) then +c +c move a dot, unless next char is not part of a number +c + if (index('0123456789.',lineq(iccount+2:iccount+2)) + * .eq. 0) go to 25 + icrdat(ncrd) = ibset(icrdat(ncrd),26) + call getchar(lineq,iccount,durq) + iccount=iccount+1 + call readnum(lineq,iccount,dumq,fnum) + if (durq .eq. '+') then + icrdot(ncrd) = ior(icrdot(ncrd),nint(fnum*10)+64) + else + icrdot(ncrd) = ior(icrdot(ncrd),-nint(fnum*10)+64) + end if + if (index('+-',dumq) .gt. 0) then +c +c Vertical shift specified also +c + iccount=iccount+1 + call readnum(lineq,iccount,durq,fnum) + if (dumq .eq. '+') then + ifnum = nint(fnum*10)+64 + else + ifnum = -nint(fnum*10)+64 + end if + else + ifnum = 64 + end if + icrdot(ncrd) = ior(icrdot(ncrd),ishft(ifnum,7)) + iccount = iccount-1 + end if + else +c +c must be a single digit, save it in ioct +c + numnum = 1 + ioct = ndx-7 + end if + go to 25 + end if + if (numnum .eq. 1) then + lastlev = ifnolev(charq,ioct,iTransAmt(instno(iv))) + else + lastlev = lastlev-3 + * +mod(ifnolev(charq,10,iTransAmt(instno(iv)))-lastlev+3,7) + end if + icrdat(ncrd) = ior(icrdat(ncrd),ishft(lastlev,12)) + do 44 npreslur = npreslur , 1 , -1 + call setbits (isdat2(nsdat-npreslur+1),7,19,lastlev) +c +c Set level for chord note. +c Initially I assigned the slur(s) to next note, so fix. +c + islur(ivx,nnl(ivx)+1) = ibclr(islur(ivx,nnl(ivx)+1),0) + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),0) + isdat2(nsdat-npreslur+1) = ibset(isdat2(nsdat-npreslur+1),0) + call setbits(isdat1(nsdat-npreslur+1),8,3, + * igetbits(isdat1(nsdat-npreslur+1),8,3)-1) +44 continue + if (notcrd) then +c +c This is the first chord note in this chord. +c + minlev = min(nolev(ivx,nnl(ivx)),lastlev) + maxlev = max(nolev(ivx,nnl(ivx)),lastlev) + else + minlev = min(minlev,lastlev) + maxlev = max(maxlev,lastlev) + end if + notcrd = .false. + else if (charq .eq. 'G') then + call getgrace(ivx,nnl,lineq,iccount,islur,iornq,ipl,ndlev, + * lastlev,iv,nv) +c +c Grace, comes *before* main note: +c UNLESS there's an 'A' or 'W' after the 'G' +c ngrace = # of grace note groups so far in block +c ivg(ngrace), ipg(ngrace) +c nng(ngrace) = # of notes in this group: default = 1 +c ngstrt(ngrace) = starting position in nolevg of levels for this grace +c multg(ngrace) = multiplicity: default = 1; input as 'm(digit)' +c upg(ngrace) = logical for beam or stem dirn: default T, input'u,l' +c slurg(ngrace) = logical for slur; default F, input 's' +c slashg(ngrace) = T if slash; default is F, input 'x' +c These data MUST precede note name of first note +c nolevg, naccg: lists of levels and accid's, indexed as described above. +c + else if (charq .eq. sq) then +c +c Literal TeX string +c + call littex(islur,nnl(ivx)+1,ivx,topmods,lineq,iccount) + else if (charq .eq. '"') then +c +c pmxlyr string. Expand "..." to \pmxlyr{...}\ +c + if (.not. inputmlyr) then + ictemp = 0 + lineqt = sq//sq//sq//'input musixlyr '//sq + call littex(islur,nnl(ivx)+1,ivx,topmods,lineqt,ictemp) + inputmlyr = .true. + end if + call dopmxlyr(lineq,iccount) + charq = sq + call littex(islur,nnl(ivx)+1,ivx,topmods,lineq,iccount) + else if (charq .eq. 'o') then +c +c Ornament on non-xtup note. Symbol must come AFTER the affected note +c + if (notcrd) then + nole = nolev(ivx,nnl(ivx)) + else + nole = iand(127,ishft(icrdat(ncrd),-12)) + end if + call getorn(lineq,iccount,iornq(ivx,nnl(ivx)), + * iornq(ivx,0),ornrpt,noffseg,nnl(ivx),ivx, + * .true.,notcrd,nole) + else if (index('st(){}',charq) .gt. 0) then + nnlivx = nnl(ivx) + if (charq.eq.'(' .or. charq.eq.'{') then +c +c Detect preslur on normal non-chord note +c + nnlivx = nnlivx+1 + npreslur = npreslur+1 + end if + islur(ivx,nnlivx) = ibset(islur(ivx,nnlivx),0) + if (charq.eq.'t') + * islur(ivx,nnlivx) = ibset(islur(ivx,nnlivx),1) + if (ivx .le. nv) then + kv = 1 + else + kv = 2 + end if + if (fontslur) then + call sslur(lineq,iccount,iv,kv,nnlivx,isdat1,isdat2,isdat3, + * nsdat,notcrd,nolev(ivx,nnlivx),charq) + else + call spsslur(lineq,iccount,iv,kv,nnlivx,isdat1,isdat2,isdat3, + * isdat4,nsdat,notcrd,nolev(ivx,nnlivx),charq) + end if + else if (charq .eq. '?') then +c +c Arpeggio +c + if (btest(ipl(ivx,nnl(ivx)),10)) then +c +c This is a chordal note. Set a bit in icrdat. But if *main* (spacing) note +c of chord, will not set icrdat(25), but iornq(27) +c + icrdat(ncrd) = ibset(icrdat(ncrd),25) + else + iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),27) + end if +c +c Check for shift +c + call getchar(lineq,iccount,durq) + if (durq .eq. ' ') then + iccount = iccount-1 + else +c +c durq must be "-" +c + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 +c +c record the shift +c + NumArpShift = NumArpShift+1 + IvArpShift(NumArpShift) = ivx + IpArpShift(NumArpShift) = nnl(ivx) + ArpShift(NumArpShift) = fnum + end if + else if (index('0123456789#-nx_',charq) .gt. 0) then +c +c We have a figure. Must come AFTER the note it goes under +c + + ivf = 1 + if (ivx .gt. 1) then + if (ivxfig2 .eq. 0) then + ivxfig2 = ivx + else if (ivx .ne. ivxfig2) then + print* + print*,'Figures not allowed in >1 voice above first' + stop + end if + ivf = 2 + end if + nfig1 = nfigs(ivf)+1 + call getfig(itoff(ivf,nfig1),charq,lineq,iccount, + * isfig(ivf,nnl(ivx)),itfig(ivf,nfig1),itsofar(ivx), + * nodur(ivx,nnl(ivx)),figq(ivf,nfig1), +c * ivupfig(ivf,nfig1),nfigs(ivf)) + * ivupfig(ivf,nfig1),ivvfig(ivf,nfig1),nfigs(ivf)) + else if (charq .eq. '[') then +c +c Start forced beam. Record barno & time since start of inp. blk. Set signal +c + nfb(ivx) = nfb(ivx)+1 + fbon = .true. + ulfbq(ivx,nfb(ivx)) = 'x' + t1fb(ivx,nfb(ivx)) = itsofar(ivx) + nadj = 0 + if (autofbon) then + autofbon = .false. + end if +17 call getchar(lineq,iccount,charq) + if (index('ulf',charq) .gt. 0) then + ulfbq(ivx,nfb(ivx)) = charq + go to 17 + else if (charq .eq. 'j') then +c +c Continuing a jumped beam here +c + irest(ivx,nnl(ivx)+1) = ibset(irest(ivx,nnl(ivx)+1),24) +c +c Set flag to watch for END of this forced beam, so can set flag rest(30) on +c NEXT note as signal to start a new notes group there. +c + isbj2 = .true. + go to 17 + else if (charq .eq. 'h') then + islur(ivx,nnl(ivx)+1) = ibset(islur(ivx,nnl(ivx)+1),2) + go to 17 + else if (charq .eq. 'm') then +c +c Force multiplicity. Next input is digit +c + call getchar(lineq,iccount,charq) + islur(ivx,nnl(ivx)+1) = ibset(islur(ivx,nnl(ivx)+1),21) + call setbits(islur(ivx,nnl(ivx)+1),3,22,ichar(charq)-48) + go to 17 + else if (charq .eq. ':') then +c +c Start auto forced beam pattern +c + autofbon = .true. +c +c When forced later beam ends, check whether tautofv <=0; if so set it. +c + tautofb = -itsofar(ivx) + t1autofb = itsofar(ivx) + go to 17 + else if (charq .ne. ' ') then +c +c Must be '+/-' for height or slope shift +c + nadj = nadj+1 +c +c nadj = 1,2, or 3 for normal start level, slope, or beam-thk start level. +c + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + iadj = nint(fnum) + if (charq .eq. '-') iadj = -iadj + if (nadj .eq. 1) then +c +c This is a level shift. Note if 0 was entered, iadj = 30 +c + call setbits(ipl(ivx,nnl(ivx)+1),6,11,iadj+30) + else if (nadj .eq. 2) then +c +c Must be a slope shift +c + call setbits(ipl(ivx,nnl(ivx)+1),6,17,iadj+30) + else +c +c Beam-thk fine tune +c + call setbits(islur(ivx,nnl(ivx)+1),2,27,iadj) + end if + go to 17 + end if + else if (charq .eq. ']') then + if (autofbon .and. tautofb.lt.tol) then + tautofb=itsofar(ivx)+tautofb + end if + call getchar(lineq,iccount,charq) + if (index('j ',charq) .gt. 0) then +c +c Since ']' comes AFTER note, itsofar has been updated. Set ending signal. +c + t2fb(ivx,nfb(ivx)) = itsofar(ivx) + fbon = .false. + if (charq .eq. 'j') then + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),23) + end if + if (isbj2) then +c +c This is the end of a fb segment of a jump beam. Set flag on NEXT note to +c force start of new notes group, provided this is not last note in bar. +c + if (mod(itsofar(ivx),lenbar) .ne. 0) + * irest(ivx,nnl(ivx)+1) = ibset(irest(ivx,nnl(ivx)+1),30) + isbj2 = .false. + end if + else if (charq .eq. '[') then +c +c Multiplicity down-up signal +c + islur(ivx,nnl(ivx)) = ibset(islur(ivx,nnl(ivx)),20) + else if (charq .eq. '-') then +c +c Set signals for gap in single-slope beam [...]-[...] +c + nacc(ivx,nnl(ivx)) = ibset(nacc(ivx,nnl(ivx)),20) + nacc(ivx,nnl(ivx)+1) = ibset(nacc(ivx,nnl(ivx)+1),21) +c +c Next two characters must be "[ ". Skip over them. +c + iccount = iccount+2 + end if + else if (charq .eq. 'D') then + call getdyn(ivx,nnl(ivx),irest(ivx,nnl(ivx)), + * iornq(ivx,nnl(ivx)),lineq,iccount) + else if (charq .eq. 'h') then +c +c Heading or height. For heading, only OK if at start of block +c Check whether at beginning of a block +c + if (iv.ne.1 .or. nnl(1).ne.0) then + print*,'You entered "h" not at beginning of block' + call stop1() + end if + call getchar(lineq,iccount,durq) + ihdvrt = 0 + if (index('+-',durq) .gt. 0) then +c +c Vertical offset +c + iccount = iccount+1 + call readnum(lineq,iccount,charq,fnum) + ihdvrt = fnum+.1 + if (durq .eq. '-') ihdvrt = -ihdvrt + durq = charq + end if + if (durq .ne. ' ') then +c +c Height symbol. Read past (until next blank) +c +3 call getchar(lineq,iccount,durq) + if (durq .ne. ' ') go to 3 + else +c +c Set flag for header & read it in +c + ihdht = 16 + call getbuf(headrq) + iccount = 128 + end if + else if (charq .eq. 'L') then +c +c Linebreak, already handled some in pmxa, but need to get data for +c shortened line or coda lengths +c + iccount = iccount+1 + if (lineq(iccount:iccount) .eq. 'C') then +c +c Coda, get length +c + iccount = iccount+1 + call readnum(lineq,iccount,durq,codafrac) + ishort = 3 + if (durq .eq. 'n') nocodabn = .true. + return + end if +c +c Get line number +c + call readnum(lineq,iccount,durq,fmovbrk) +48 continue ! Allow transfer up from below if S follows M + if (durq .eq. 'S') then +c +c Shortened line, get shortening fraction +c + iccount = iccount+1 + call readnum(lineq,iccount,durq,shortfrac) + ishort = 1 + codafrac = 0. + end if +c +c Begin check for movement break +c + if (durq .eq. 'P') then + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + end if + if (durq .eq. 'M') then + movbrk = nint(fmovbrk) + movgap = 0 + parmov = -1. + call getchar(lineq,iccount,durq) +31 if (durq .eq. '+') then +c +c Get vertical space (\internotes) +c + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + movgap = nint(fnum) + go to 31 + else if (durq .eq. 'i') then + iccount = iccount+1 + call readnum(lineq,iccount,durq,parmov) + go to 31 + else if (durq .eq. 'c') then + nobar1 = .true. + call getchar(lineq,iccount,durq) + go to 31 + else if (durq .eq. 'r') then +c +c "rename" can be set on or off. +c + call getchar(lineq,iccount,durq) + rename = durq.eq.'+' + call getchar(lineq,iccount,durq) + go to 31 + else if (durq .eq. 'n') then +c +c Change # of voices. Input ninow, iiorig(1...ninow). Will use names, +c staves per inst. and clefs corr. to iiorig in original list of instruments. +c + nvold = nv + nv = 0 + rename = .true. + call getchar(lineq,iccount,durq) + if (durq .eq. ':') then + iccount = iccount+2 + read(lineq(iccount-1:iccount),'(i2)')ninow + else + ninow = ichar(durq)-48 + end if + iiv = 0 + do 63 iinow = 1 , ninow + call getchar(lineq,iccount,durq) + if (durq .eq. ':') then + iccount = iccount+2 + read(lineq(iccount-1:iccount),'(i2)')iiorig(iinow) + else + iiorig(iinow) = ichar(durq)-48 + end if + nspern(iinow) = nsperi(iiorig(iinow)) + nv = nv+nspern(iinow) + sepsymq(iiv+nspern(iinow)) = '&' + if (nspern(iinow) .gt. 1) then + do 64 iis = 1 , nspern(iinow)-1 + sepsymq(iiv+iis) = '|' +64 continue + end if + iiv = iiv+nspern(iinow) +63 continue +c +c 120818 Per Rainer's suggestion, defer changing \nbinstruments until issuing \newmovement +c +c if (islast) then +c if (ninow .lt. 10) then +c write(11,'(a)')sq//'newnoi{'//chax(ninow+48)//'}%' +c else +c write(11,'(a8,i2,a2)')sq//'newnoi{',ninow,'}%' +c end if +c end if + if (nv.eq.1 .and. nvold.gt.1) then + if (islast) write(11,'(a)')sq//'nostartrule' + else if (nv.gt.1 .and. nvold.eq.1) then + if (islast) write(11,'(a)')sq//'startrule' + end if + iiv = 0 + do 60 iinow = 1 , ninow + do 61 iis = 1 , nspern(iinow) + iiv = iiv+1 +c +c May not really need to re-enter clefs, but it's easier to program since +c clef names are not saved but are needed in newvoice to set ncmidcc. +c + call getchar(lineq,iccount,clefq(iiv)) + call newvoice(iiv,clefq(iiv),.true.) + if (nspern(iinow) .eq. 1) then + hdlndq = chax(48+numclef(clefq(iiv))) + lclf = 1 + else if (iis .eq. 1) then + hdlndq = '{'//chax(48+numclef(clefq(iiv))) + lclf = 2 + else if (iis .lt. nspern(iinow)) then + hdlndq = hdlndq(1:lclf)//chax(48+numclef(clefq(iiv))) + lclf = lclf+1 + else + hdlndq = + * hdlndq(1:lclf)//chax(48+numclef(clefq(iiv)))//'}' + lclf = lclf+2 + end if +61 continue +c +c setstaffs & setclef go by instrument, not voice +c + if (islast) then + if (iinow .lt. 10) then + write(11,'(a)')sq//'setstaffs' + * //chax(48+iinow)//chax(48+nspern(iinow))//'%' + write(11,'(a)')sq//'setclef'//chax(48+iinow) + * //hdlndq(1:lclf)//'%' + if (fullsize(iiorig(iinow)).gt.0.9) then + write(11,'(a)')sq//'setsize'//chax(48+iinow) + * //sq//'normalvalue%' +c +c 140526 Account for staff size specs when noinst changes. May be confusion +c here if more than one staff per instrument +c + else if (fullsize(iiorig(iinow)).gt..7) then + write(11,'(a)')sq//'setsize'//chax(48+iinow) + * //sq//'smallvalue%' + else + write(11,'(a)')sq//'setsize'//chax(48+iinow) + * //sq//'tinyvalue%' + end if + else + write(11,'(a11,i2,a)')sq//'setstaffs{',iinow, + * '}'//chax(48+nspern(iinow))//'%' + write(11,'(a9,i2,a)')sq//'setclef{',iinow, + * '}'//hdlndq(1:lclf)//'%' + end if + end if +60 continue +c +c Loop back up, this may not be last option in M. Note flow out if durq=' ' +c + call getchar(lineq,iccount,durq) + go to 31 + else if (durq .eq. 'S') then + go to 48 + end if +c +c Write instrument names +c + if (.not.rename) then + do 62 iinst = 1 , ninow + if (islast) then + if (iinst .lt. 10) then + write(11,'(a8,i1,a3)')sq//'setname',iinst,'{}%' + else + write(11,'(a9,i2,a4)')sq//'setname{',iinst,'}{}%' + end if + end if +62 continue + else + do 65 iinst = 1 , ninow + if (islast) then + if (iinst .lt. 10) then + write(11,'(a8,i1,a)')sq//'setname',iinst,'{'// + * inameq(iiorig(iinst))(1:lnam(iiorig(iinst)))//'}%' + else + write(11,'(a9,i2,a)')sq//'setname{',iinst,'}{'// + * inameq(iiorig(iinst))(1:lnam(iiorig(iinst)))//'}%' + end if + end if +65 continue + if (ishort.ne.4.and.ishort.ne.2) rename = .false. +c +c Reset later and rewrite setname{} in shortening case mcm, since if +c written here it will be inside {{...}} and will be ignored +c + end if + end if + else if (charq .eq.'|' ) then +c +c End of bar symbol. Check about end of bar hardspace. +c + if (btest(iornq(ivx,nnl(ivx)+1),26)) then +c +c There was a hardspace followed by a bar line. Remove it from the hardspace +c list, store with shifts instead, set special bit. Need to repeat this code +c at '/'. +c + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),18) + nudoff(ivx) = nudoff(ivx)+1 + udoff(ivx,nudoff(ivx)) = udsp(nudsp) + nudsp = nudsp-1 + iornq(ivx,nnl(ivx)+1) = ibclr(iornq(ivx,nnl(ivx)+1),26) + end if + else if (index('wS',charq) .gt. 0) then +c +c Width symbol or new nsyst. Read past (until blank) +c +4 call getchar(lineq,iccount,durq) + if (durq .ne. ' ') go to 4 + else if (charq .eq. 'l') then +c +c Lower string. Only OK if at start of block +c Check whether at beginning of a block +c + if (iv.ne.1 .or. nnl(1).ne.0) then + print*,'You entered "l" not at beginning of block' + call stop1() + end if +c +c Set flag for lower string & read it in +c + lower = .true. + call getbuf(lowerq) + iccount = 128 + else if (charq .eq. 'm') then +c +c Meter change. Only allow at beginning of block. +c mtrnuml, mtrdenl (logical) and p (printable) will be input. +c mtrnuml=0 initially. (In common) +c +c Check whether at beginning of a block +c + if (iv.ne.1 .or. nnl(1).ne.0) then + print*,'You entered "m" not at beginning of block' + call stop1() + end if + call readmeter(lineq,iccount,mtrnuml,mtrdenl) + call readmeter(lineq,iccount,mtrnmp,mtrdnp) + lenbeat = ifnodur(mtrdenl,'x') + if (mtrdenl .eq. 2) lenbeat = 16 + lenbar = mtrnuml*lenbeat + if (mtrdenl .eq. 2) lenbar = lenbar*2 + lenb1 = lenbar + lenb0 = 0 + if (ismidi) call midievent('m',mtrnuml,mtrdenl) + else if (charq .eq. 'C') then +c +c Clef change on next note. Set bits 11-15. Won't allow in 2nd line of music. +c + if (nnl(iv) .gt. 0) ncc(iv) = ncc(iv)+1 + tcc(iv,ncc(iv)) = itsofar(iv) + isl = ibset(islur(iv,nnl(iv)+1),11) + call getchar(lineq,iccount,durq) +c +c Store clef number, or 7 if clef number = 9 (French violin clef) +c + isl = ior(isl,ishft(min(numclef(durq),7),12)) + ncmidcc(iv,ncc(iv)) = ncmidf(durq) + if (durq .eq. '8') then + ipl(iv,nnl(iv)+1)=ibset(ipl(iv,nnl(iv)+1),2) + iTransAmt(instno(iv)) = 7+iTransAmt(instno(iv)) + lastlev = lastlev+7 + if (nnl(iv).eq.0) then + ndlev(iv,1) = ndlev(iv,1)+7 + ndlev(iv,2) = ndlev(iv,2)+7 + end if + else +c +c This won't work if you really had an octave transposition with some +c other clef. Need a check on whether prior clef was an octave clef. +c + if (iTransAmt(instno(iv)).eq.7) then + iTransAmt(instno(iv))=iTransAmt(instno(iv))-7 + lastlev = lastlev-7 + if (nnl(iv).eq.0) then + ndlev(iv,1) = ndlev(iv,1)-7 + ndlev(iv,2) = ndlev(iv,2)-7 + end if + end if + end if +c +c Set marker on note with lowest voice # starting at same time. +c + if (iv .eq. 1) then + isl = ibset(isl,15) + else + do 13 iiv = 1 , iv + nnliiv = nnl(iiv) + if (iiv .eq. iv) nnliiv = nnliiv+1 + itother = 0 + do 14 iip = 1 , nnliiv + if (itother .lt. itsofar(iv)) then + itother = itother+nodur(iiv,iip) + go to 14 + else if (itother .eq. itsofar(iv)) then + islur(iiv,iip) = ibset(islur(iiv,iip),15) + go to 15 + end if +14 continue +13 continue +15 continue + end if +c +c Need 'or' since may have set bit 15 in the above loop +c + islur(iv,nnl(iv)+1) = ior(isl,islur(iv,nnl(iv)+1)) + else if (charq .eq. 'R') then +c +c Repeats. set bits 5, 6, and/or 8 of islur(1,ip+1) +c +10 call getchar(lineq,iccount,durq) +c +c Save designator in case it's a terminal Rr or Rd +c + if (durq .eq. 'l') then + islur(1,nnl(1)+1) = ibset(islur(1,nnl(1)+1),5) + go to 10 + else if (index('rdDbz',durq) .gt. 0) then + if (durq .eq. 'r') then + islur(1,nnl(1)+1) = ibset(islur(1,nnl(1)+1),6) + else if (durq .eq. 'd') then + islur(1,nnl(1)+1) = ibset(islur(1,nnl(1)+1),8) + else if (durq .eq. 'D') then + islur(1,nnl(1)+1) = ibset(islur(1,nnl(1)+1),26) + else if (durq .eq. 'b') then + islur(1,nnl(1)+1) = ibset(islur(1,nnl(1)+1),25) + else if (durq .eq. 'z') then +c iornq(1,nnl(1)+1) = ibset(iornq(1,nnl(1)+1),29) + ipl(1,nnl(1)+1) = ibset(ipl(1,nnl(1)+1),0) + end if + rptprev = .true. + rptfq1 = durq + go to 10 + end if + else if (charq .eq. 'V') then +c +c Ending +c + nnnl = nnl(1)+1 + lvoltxt = 0 +11 call getchar(lineq,iccount,durq) + if (durq.eq.'b' .or. durq .eq.'x') then +c +c End Volta, set bit9, and bit10 on if 'b' (end w/ box) +c + islur(1,nnnl) = ibset(islur(1,nnnl),9) + if (durq .eq. 'b') islur(1,nnnl) = ibset(islur(1,nnnl),10) + go to 11 + else if (durq .ne. ' ') then +c +c Start volta; Get text +c + if (lvoltxt .eq. 0) then +c +c First character for text +c + lvoltxt = 1 + islur(1,nnnl) = ibset(islur(1,nnnl),7) + nvolt = nvolt+1 + voltxtq(nvolt) = durq + else + voltxtq(nvolt) = voltxtq(nvolt)(1:lvoltxt)//durq + lvoltxt = lvoltxt+1 + end if + go to 11 + end if + else if (charq .eq. 'B') then + bcspec = .not.bcspec + else if (charq .eq. 'P') then +c +c Page numbers. Print stuff right now. +c + npg1 = 0 +c +c Will use ltopnam to signal whether there's a centered heading +c + ltopnam = 0 + ipg1r = 0 +16 call getchar(lineq,iccount,durq) + if (ichar(durq).ge.48 .and. ichar(durq).le.57) then + npg1 = npg1*10+ichar(durq)-48 + go to 16 + else if (durq .eq. 'l') then + if (npg1.eq.0 .or. mod(npg1,2).eq.1) ipg1r = 1 + go to 16 + else if (durq .eq. 'r') then + if (npg1.gt.0 .and. mod(npg1,2).eq.0) ipg1r = 1 + go to 16 + else if (durq .eq. 'c') then +c +c Top-centered name. Assume this is last option. Read the name. +c May surround name in double quotes (to allow blanks). +c + call getchar(lineq,iccount,durq) + if (durq .eq. ' ') then + ltopnam = lenstr(cheadq,60) + else + namstrt = iccount + if (durq .eq. '"') then +c +c Using quote delimiters. +c + quoted = .true. + namstrt = namstrt+1 + else + quoted = .false. + end if + do 35 iccount = namstrt+1, 128 +c if ((quoted .and. lineq(iccount:iccount) .eq. '"') .or. + if ((quoted .and. lineq(iccount:iccount).eq.'"' .and. + * lineq(iccount-1:iccount-1).ne.'\') .or. + * (.not.quoted .and. lineq(iccount:iccount) .eq. ' ')) + * go to 36 +c +c On exit, iccount is OK, and name is in (namstrt:iccount-1) +c +35 continue + print*,'Awww, cmon, should not be here.' + call stop1() +36 continue + ltopnam = iccount-namstrt + cheadq = lineq(namstrt:iccount-1) + end if + end if +c +c Done getting data, now assemble the command +c + if (npg1.eq.0) npg1=1 +c +c 2/23/03 Don't use \atnextline if on first page and only one system +c +c if (ipage.gt.1 .or. nsystp(1).gt.1) then + hdlndq = sq//'def'//sq//'atnextline{'//sq//'toppageno{' + lhead = 27 +c else +c hdlndq = sq//'toppageno{' +c lhead = 11 +c end if + if (npg1 .lt. 10) then +c +c Note we are overwriting the last "{" +c + write(hdlndq(lhead:lhead),'(i1)')npg1 + else if (npg1 .lt. 100) then + lhead = lhead+3 + write(hdlndq(lhead-2:lhead),'(i2,a1)')npg1,'}' + else + lhead = lhead+4 + write(hdlndq(lhead-3:lhead),'(i3,a1)')npg1,'}' + end if + hdlndq = hdlndq(1:lhead)//chax(ipg1r+48)//'{' + lhead = lhead+2 +c if (ipage.gt.1 .or. nsystp(1).gt.1) then + if (ltopnam .eq. 0) then + if (islast) write(11,'(a)')hdlndq(1:lhead)//'}}%' + else + if (islast) + * write(11,'(a)')hdlndq(1:lhead)//cheadq(1:ltopnam)//'}}%' + end if +c else +c if (ltopnam .eq. 0) then +c if (islast) write(11,'(a)')hdlndq(1:lhead)//'}%' +c else +c if (islast) +c * write(11,'(a)')hdlndq(1:lhead)//cheadq(1:ltopnam)//'}%' +c end if +c end if + else if (charq .eq. 'W') then +c +c Just eat the number that must follow, it was used in pmxa +c + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + else if (charq .eq. 'T') then + headlog = .true. + inhead = 0 + call getchar(lineq,iccount,durq) + if (durq .eq. 'i') then + call getbuf(instrq) +c +c A kluge for parts from separate score file for later movements. +c + if (instrq(1:1) .eq. ' ') headlog = .false. + cheadq = instrq(1:60) + else if (durq .eq. 't') then + call getchar(lineq,iccount,durq) +c +c Optionally can include extra vertical \internotes above inbothd +c + if (index('-+0123456789',durq) .gt. 0) then + ipm = 1 + if (index('+-',durq) .gt. 0) then +c +c Don't trust readnum to round this negative integer properly +c + iccount = iccount+1 + if (durq .eq. '-') ipm = -1 + end if + call readnum(lineq,iccount,durq,fnum) + inhead = ipm*nint(fnum) + end if + call getbuf(titleq) + else + call getbuf(compoq) + end if + inhead = inhead+inbothd + iccount = 128 + else if (charq .eq. 'A') then +c +c Accidental handling etc. +c +27 call getchar(lineq,iccount,durq) + if (durq .eq. 'r') then + if (islast) then + relacc = .true. + write(11,'(a)')sq//'relativeaccid%' + end if + else if (durq .eq. 's') then + bacfac = 1.e6 + else if (durq .eq. 'b') then + if (islast) write(11,'(a)')sq//'bigaccid%' + accfac = bacfac + else if (durq .eq. 'a') then + call getchar(lineq,iccount,durq) + call readnum(lineq,iccount,durq,fnum) + iccount = iccount-1 + else if (durq .eq. 'i') then + call getchar(lineq,iccount,durq) + call readnum(lineq,iccount,durq,tintstf) + if (.not.firstgulp) fintstf = tintstf +c +c Local corrections for first page were handled by pmxa +c + iccount = iccount-1 + else if (durq .eq. 'I') then + call getchar(lineq,iccount,durq) + call readnum(lineq,iccount,durq,gintstf) + iccount = iccount-1 + else if (durq .eq. 'd') then + lowdot = .true. + else if (durq .eq. 'o') then + continue + else if (durq .eq. 'S') then + do 50 iiv = 1 , noinst + call getchar(lineq,iccount,durq) + if (index('-s',durq) .gt. 0) then + fullsize(iiv) = 0.8 + else if (durq .eq. 't') then + fullsize(iiv) = 0.64 + else +c fullsize(ivx) = 1.0 + fullsize(iiv) = 1.0 + end if +50 continue + else if (durq .eq. 'e') then +c +c Line-spacing equalization +c + equalize = .true. +c +c The following redefinition of \parskip was put into pmx.tex in version 2.25 or so. +c But it causes problems with some older scores and when excerpts are combined +c with LaTeX. So as of 2.352 we write it here. +c + write(11,'(a)')sq//'global'//sq//'parskip 0pt plus 12'//sq + * //'Interligne minus 99'//sq//'Interligne%' + tempq = sepsymq(1) + lentemp = 1 + do 51 iiv = 2 , nv-1 + tempq = tempq(1:lentemp)//sepsymq(iiv) + lentemp = lentemp+1 +51 continue + write(11,'(a)')sq//'def'//sq//'upstrut{'//sq//'znotes' + * //tempq(1:lentemp)//sq//'zcharnote{'//sq//'upamt}{~}' + * //sq//'en}%' + else if (durq .eq. 'v') then +c +c Toggle usevshrink +c + usevshrink = .not.usevshrink + else if (durq .eq.'p') then +c +c Postscript slurs. fontslur is already false (set in g1etnote) +c + if (.not.WrotePsslurDefaults) then +c +c Set postscrirpt slur adjustment defaults +c + write(11,'(a)')sq//'Nosluradjust'//sq//'Notieadjust' + * //sq//'nohalfties' + WrotePsslurDefaults = .true. + end if +52 continue + call g1etchar(lineq,iccount,durq) ! might be "+", "-", "h" or "l" + if (index('+-',durq) .gt. 0) then +c +c Characters to change defaults for ps slurs +c + call g1etchar(lineq,iccount,charq) ! charq will be "s,t,h,c" + if (durq .eq. '+') then + if (charq .eq. 's') then + write(11,'(a)')sq//'Sluradjust' + else if (charq .eq. 't') then + write(11,'(a)')sq//'Tieadjust' + else if (charq .eq. 'h') then + write(11,'(a)')sq//'halfties' + else + SlurCurve = SlurCurve + 1 + if (SlurCurve .gt. 3.1) then + call printl('WARNING!') + call printl + * ('Default slur curvature advanced past HH, resetting') + SlurCurve = 3 + end if + end if + else + if (charq .eq. 's') then + write(11,'(a)')sq//'Nosluradjust' + else if (charq .eq. 't') then + write(11,'(a)')sq//'Notieadjust' + else if (charq .eq. 'h') then + write(11,'(a)')sq//'nohalfties' + else + SlurCurve = SlurCurve - 1 + if (SlurCurve .lt. -1.1) then + call printl('WARNING!') + call printl( + * 'Default slur curvature decremented below f, resetting') + SlurCurve = -1 + end if + end if + end if + go to 52 ! Check for another set of default changes + else if (durq .eq. 'l') then +c +c Set optional linebreak ties +c + OptLineBreakTies = .true. + go to 52 + else if (durq .eq. 'h') then +c +c Set flag to write header special on every page +c + HeaderSpecial = .true. + go to 52 + else + iccount = iccount-1 + end if + else if (durq .eq. 'K') then +c +c Toggle keyboard rest placement flag +c + kbdrests = .not.kbdrests + else if (durq .eq. 'c') then + call g1etchar(lineq,iccount,durq) +c +c Just eat the input; it was used in pmxa +c + go to 27 + else if (durq .eq. 'V') then + bottopgap = .true. + topamt = 0. + call getchar(lineq,iccount,durq) + pmfac = index('- +',durq)-2 + call g1etchar(lineq,iccount,durq) + call readnum(lineq,iccount,durq,botamt) + botamt = botamt*pmfac + pmfac = index('- +',durq)-2 + call g1etchar(lineq,iccount,durq) + call readnum(lineq,iccount,durq,topamt) + topamt = topamt*pmfac + iccount = iccount-1 + go to 27 + end if + if (index('NR',durq) .gt. 0) then +c +c Override default part names for scor2prt, or normal include file. +c Just bypass rest of input line +c + iccount = 128 + else if (durq .ne. ' ') then + go to 27 + end if + else if (charq .eq. 'K') then +77 continue + call getchar(lineq,iccount,durq) + if (durq .eq. 'n') then + ignorenats = .true. + go to 77 + end if + if (durq .ne. 'i') then +c +c Normal, full-score key change and/or transposition +c + num1 = 44-ichar(durq) + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + num1 = num1*nint(fnum) +c +c On exit, durq='+','-'. But only need isig if after start, else done in pmxa +c + iccount = iccount+1 + call readnum(lineq,iccount,charq,fnum) + if (ismidi) then + midisig = nint(fnum) + if (durq.eq.'-') midisig = -midisig +c 130317 + midisig = midisig+idsig + call midievent('k',midisig,0) + + end if +c70 continue + if (num1 .eq. 0) then +c +c Key change, not transposition. +c + ipl(ivx,nnl(ivx)+1) = ibset(ipl(ivx,nnl(ivx)+1),28) + lastisig = isig + isig = nint(fnum) + if (durq .eq. '-') isig = -isig + isig = isig+idsig + if (ismidi) call midievent('k',isig,0) + else +c +c num1 .ne. 0, so transposition, so must be at beginning. isig came with K... +c but was passed to pmxb through pmxtex.dat. isig0 comes from setup data +c (signature before transposition). idsig must be added to future key changes. +c + jv = 0 + do while (jv .lt. nm) + jv = jv+1 + iTransAmt(jv) = num1 + end do + idsig = isig-isig0 + end if + else +c +c Instrument specific transposition. +c + call GetiTransInfo(.false.,ibarcnt,lineq,iccount, + * ibaroff,nbars,noinst) +c +c The sig parameters will have been set 1st time but that's OK +c + end if + else if (charq .eq. '/') then + if (btest(iornq(ivx,nnl(ivx)+1),26)) then +c +c There was a hardspace followed by end of block. Remove it from the hardspace +c list, store with shifts instead, set special bit. This code also at '|' +c + irest(ivx,nnl(ivx)) = ibset(irest(ivx,nnl(ivx)),18) + nudoff(ivx) = nudoff(ivx)+1 + udoff(ivx,nudoff(ivx)) = udsp(nudsp) + nudsp = nudsp-1 + iornq(ivx,nnl(ivx)+1) = ibclr(iornq(ivx,nnl(ivx)+1),26) + end if + call getchar(lineq,iccount,durq) +c +c Save ending note level: +c + if (ivx .le. nv) then +c +c This is the first line of music on this staff. If previous block had only 1 +c voice, save last pitch from line 1 of prev. block to line 2, in case a +c 2nd line is started just below +c + if (.not.was2(iv)) ndlev(iv,2) = ndlev(iv,1) + was2(iv) = .false. + ndlev(iv,1) = lastlev + else +c +c This is the 2nd line of music on this staff. +c + was2(iv) = .true. + ndlev(iv,2) = lastlev + end if + if (durq .eq. ' ' .and. iv.eq.nv) then +c +c End of input block +c + loop = .false. + else +c +c Start a new line of music +c + if (lenb0.ne.0 .and. firstgulp) lenbar = lenb0 + nbars = 0 + if (durq .eq. ' ') then +c +c New line of music is on next staff +c + iv = iv+1 + ivx = iv + else +c +c durq must be 2nd '/'. New line of music is on same staff. Set up for it +c + ivx = nv+1 + do 23 iiv = 1 , nv + if (nvmx(iiv) .eq. 2) ivx = ivx+1 +23 continue + nvmx(iv) = 2 + ivmx(iv,2) = ivx + itsofar(ivx) = 0 + nnl(ivx) = 0 + nfb(ivx) = 0 + nudoff(ivx) = 0 + ndotmv(ivx) = 0 + do 24 j = 1 , 200 + irest(ivx,j) = 0 + islur(ivx,j) = 0 + nacc(ivx,j) = 0 + iornq(ivx,j) = 0 + ipl(ivx,j) = 0 + mult(ivx,j) = 0 +24 continue +c +c Go back and lower the rests in voice "a" that don't have over-ridden heights +c + do 26 j = 1 , nnl(iv) + if (btest(irest(iv,j),0) .and. nolev(iv,j).eq.0) + * nolev(iv,j) = -4 +26 continue + end if + end if + iccount = 128 + else if (charq .eq. 'X') then +c +c 3rd arg is only for termination of group shifts. Use "max" to avoid zero index, +c which only happens for normal X at block start, and we took special measures to +c keep group shifts for crossing block boundaries. +c + call getx(lineq,iccount,irest(ivx,max(1,nnl(ivx))), + * shifton,wheadpt,iornq(ivx,nnl(ivx)+1),ivx, + * irest(ivx,nnl(ivx)+1),itsofar(ivx),0,0,0,' ',ndoub) + else if (charq .eq. 'I') then +c +c Midi controls. +c + call getmidi(noinst,lineq,iccount,ibarcnt,ibaroff,nbars,lenbar, + * mtrdenl,nv,.false.) + else if (charq .eq. 'M') then +c +c Macro action +c + call getchar(lineq,iccount,charq) + if (index('RS',charq) .gt. 0) then +c +c Record or save a macro. Get the number of the macro. +c + call getchar(lineq,iccount,durq) + call readnum(lineq,iccount,durq,fnum) + macnum = nint(fnum) + macuse = ibset(macuse,macnum) + if (charq .eq. 'R') then + call mrec1(lineq,iccount,ndxm) + else +c +c Save (Record but don't activate) +c +5 call mrec1(lineq,iccount,ndxm) + if (mrecord) then + call getbuf(lineq) + iccount = 0 + go to 5 + end if + iccount = iccount+ndxm+1 + end if + else if (charq .eq. 'P') then +c +c Playback the macro +c + call getchar(lineq,iccount,charq) + call readnum(lineq,iccount,durq,fnum) + macnum = nint(fnum) + icchold = iccount + lnholdq = lineq + iccount = 128 + ilmac = il1mac(macnum) + mplay = .true. + end if + else if (index(',.',charq) .gt. 0) then +c +c Continued rhythmic shortcut +c + idotform = index('. ,',charq) + if (idotform .eq. 1) then +c +c Check for start of forced beam on 2nd member of dotform=1 shortcut +c + if (fbon) then + if (t1fb(ivx,nfb(ivx)).eq.itsofar(ivx)) + * t1fb(ivx,nfb(ivx)) = + * t1fb(ivx,nfb(ivx))+nodur(ivx,nnl(ivx))/2 + end if +c +c Change duration of prior note +c + itsofar(ivx) = itsofar(ivx)-nodur(ivx,nnl(ivx)) + nodur(ivx,nnl(ivx)) = nodur(ivx,nnl(ivx))*3/2 + itsofar(ivx) = itsofar(ivx)+nodur(ivx,nnl(ivx)) + end if + idotform = idotform+1 + numnum = 1 + cdot = .true. + go to 1 + end if + return + end + subroutine getorn(lineq,iccount,iornq,iornq0,ornrpt,noffseg, + * ip,ivx,noxtup,notcrd,nole) +c +c iornq: Main note. Do not alter if chord note, except turn on bit 23 +c iornq0: Store iorni + bit 23, in case of repeated ornaments +c iorni: Internal use, 1st 21 bits of iornq or icrdorn, dep. on notcrd. +c noffseg: horiz. offset for segno +c nole: level of note w/ orn, used to ID the note/orn if there's a level shift. +c + + common /comivxudorn/ivxudorn(63) + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + common /comcb/ nbc,ibcdata(36) + character*1 charq,durq + character*128 lineq + logical ornrpt,negseg,noxtup,notcrd +c +c Bits 0-13: (stmgx+Tupf._), 14: Down fermata, was F, 15: Trill w/o "tr", was U +c 16-18 Editorial sharp, flat, natural "oes,f,n"; 19-20: >^, 21 ? for ed. accid. +c + call getchar(lineq,iccount,charq) + if (index('bc',charq) .gt. 0) then +c +c caesura or breath, handle specially and exit. Set up data in ibcdata(1...nbc) +c ivx(0-3,28), ip(4-12), +c vshift (vshift+32 in bits 13-18), +c hshift (nint(10*vshift)+128 in bits 19-26) +c bit 27 = 0 if caesura, 1 if breath +c bit 28: 5th bit of ivx +c + iornq = ibset(iornq,28) + nbc = nbc+1 +c ibcdata(nbc) = ivx+16*ip + ibcdata(nbc) = mod(ivx,16)+16*ip + if (ivx.ge.16) ibcdata(nbc) = ibset(ibcdata(nbc),28) + if (charq .eq. 'b') ibcdata(nbc) = ibset(ibcdata(nbc),27) + call getchar(lineq,iccount,durq) + if (index('+-',durq) .gt. 0) then +c +c We have a vertical shift, get it +c + iccount = iccount+1 + call readnum(lineq,iccount,charq,fnum) + if (durq .eq. '-') fnum=-fnum + call setbits(ibcdata(nbc),6,13,nint(32+fnum)) + if (index('+-',charq) .gt. 0) then +c +c Horizontal shift, get it +c + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + if (charq .eq. '-') fnum=-fnum + call setbits(ibcdata(nbc),8,19,nint(10*fnum)+128) + end if + end if + return + end if +c +c Set signal on main note that some note at this time has ornament. ONLY used +c in beamstrt to activate further tests for whether ihornb is needed. +c + iornq = ibset(iornq,23) +c +c Isolate 21 bits defining exisiting ornaments +c + if (notcrd) then +c iorni = iand(4194303,iornq) +c iorni = iand(541065215,iornq) + iorni = iand(1614807039,iornq) + else + iorni = iand(4194303,icrdorn(ncrd)) + end if +c korn = index('stmgx+Tupf._)e:XXX>^',charq) + korn = index('stmgx+Tupf._)e:XXX>^XXXXXXXXCG',charq) + if (korn .ne. 15) iorni = ibset(iorni,korn) +c +c Note that korn=0 => charq='(', and we set bit 0. if "e" (14), alter later +c as follows: korn=16-18 for sfn, and or 21 for bare ?. +c When this if-block is done, korn will = bit# of actual ornament (unless "?"). +c + if (korn .eq. 15) then +c +cc Turn off repeated ornament ('o:'), Replicate bits 0-3,5-15,19-20 prev iornq +cc Turn off repeated ornament ('o:'), Replicate bits 0-3,5-15,19-21 prev iornq +c Turn off repeated ornament ('o:'), Replicate bits 0-3,5-15,19-21,29 prev iornq +c +c iorni = ior(iorni,iand(iornq0,1638383)) +c iorni = ior(iorni,iand(iornq0,3735535)) +c iorni = ior(iorni,iand(iornq0,540606447)) + iorni = ior(iorni,iand(iornq0,1614348271)) + ornrpt = .false. + call getchar(lineq,iccount,durq) +c +c durq will be ' ' +c + else if (korn .eq. 14) then +c +c Editorial accidental +c + call getchar(lineq,iccount,durq) +c korn = 15+index('sfn',durq) + korn = 15+index('sfn?',durq) + if (korn .eq. 19) korn=21 + iorni = ibset(ibclr(iorni,14),korn) + call getchar(lineq,iccount,durq) + if (durq .eq. '?') then +c +c This is "oe[s|f|n]?". Set 21st bit also. +c + iorni = ibset(iorni,21) + korn = korn+6 + call getchar(lineq,iccount,durq) + end if +c iorni = ibset(ibclr(iorni,14),korn) + else if (korn.eq.4 .and. noxtup) then +c +c segno. Check in pmxa for just 1/block & notcrd. Get horiz. offset in points +c + noffseg = 0 + negseg = .false. + call getchar(lineq,iccount,durq) + if (durq .ne. ' ') then +c +c Segno shift is specified +c + if (durq .eq. '-') then + negseg = .true. + call getchar(lineq,iccount,durq) + end if + call readnum(lineq,iccount,durq,fnum) + noffseg = int(fnum) + if (negseg) noffseg = -noffseg + end if + else if (korn .eq. 7) then +c +c Trill. Check in pmxa for notcrd. Default is 1 noteskip long, with "tr" +c + ntrill = ntrill + 1 + ivtrill(ntrill) = ivx + iptrill(ntrill) = ip + xnsktr(ntrill) = 1. + call getchar(lineq,iccount,durq) + if (durq .eq. 't') then +c +c Convert to new internal symbol for non-'"tr" trill +c + korn = 15 + iorni = ibset(ibclr(iorni,7),15) + call getchar(lineq,iccount,durq) + end if + if (index('0123456789.',durq) .gt. 0) then +c +c We have a number for the length +c + call readnum(lineq,iccount,durq,xnsktr(ntrill)) + end if + else if (korn.eq.10 .and. noxtup) then +c +c Fermata +c + call getchar(lineq,iccount,durq) + if (durq .eq. 'd') then + korn = 14 + iorni = ibset(ibclr(iorni,10),14) + call getchar(lineq,iccount,durq) + end if + else + call getchar(lineq,iccount,durq) + end if + if (index('+- :',durq) .eq. 0) then + print*,'Unexpected character at end of ornament: ',durq + call stop1() + end if + if (index('+-',durq) .gt. 0) then +c +c Shift ornament up or down +c + nudorn = nudorn+1 +c +c Set bit 25 in iorni as a signal. This may not really be necessary. +c + iorni = ibset(iorni,25) +c +c Assemble info to put in kudorn(nudorn) Bits 0-7:ip, 8-11:ivx, 12-18:nolev, +c 19-24: type of ornament to be shifted, 25-30: shift+32, 31:h-shft present +c + xofforn = 44-ichar(durq) + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + iofforn = nint(xofforn*fnum) + kudorn(nudorn) = ip+ishft(mod(ivx,16),8)+ishft(nole,12) + * +ishft(korn,19)+ishft(iofforn+32,25) + ivxudorn(nudorn) = ivx + if (index('+-',durq) .gt. 0) then +c +c Horizontal shift +c + kudorn(nudorn) = ibset(kudorn(nudorn),31) + xofforn = 44-ichar(durq) + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) +c 141226 ornhshft(nudorn) = nint(xofforn*fnum) + ornhshft(nudorn) = xofforn*fnum + end if + else if (durq .eq. ':') then +c +c Turn on repeated ornaments +c + ornrpt = .true. +c +c Save the ornament value just set +c + iornq0 = iorni + end if + if (notcrd) then + iornq = ior(iornq,iorni) + else + icrdorn(ncrd) = ior(icrdorn(ncrd),iorni) + end if + return + end + subroutine getpmxmod(global,includeq) +c +c If global=.true., checks for environment variable with path to pmx.mod. +c Then, if variable exists and points to pmx.mod, insert lines from +c pmx.mod into buffer +c If global=.false., checks for existence of includeq and uses it. +c +c lenbuf0 = total length of bufq on entry +c lbuf(i) = length of line (i) +c nlbuf = number of lines stored in bufq +c ilbuf = index of first line after setup stuff (on entry). In general, index of +c next line to be sucked from buffer. +c ilbufmod = counter for lines in pmx.mod as they are grabbed. +c Starts at ilbuf. Points to position of next line after +c pmx.mod stuff in bufq on exiting loop 1 +c ilbuff = transient counter for shifting operations +c ipbuf = on entry, points to last character in setup stuff. In general, points +c to last character of most recent line sucked from buffer. +c ipbufmod = points to last character of most recent inserted line +c from pmx.mod +c + parameter (maxblks=9600,nm=24) + common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, + * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 + logical lastchar,fbon,issegno,isheadr,isvolt + character*(*)includeq + character*80 pmxmoddirq + character*128 lnholdq + character*131072 bufq + integer*2 lbuf(maxblks) + common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq + logical fexist,global + line1pmxmod = ilbuf + if (.not.global) then + inquire(file=includeq,EXIST=fexist) +c +c Transfer includeq to temporary char variable with known length +c + pmxmoddirq = includeq + lpmxmoddirq = lenstr(pmxmoddirq,80) + print* + write(15,'()') + if (.not.fexist) then + call printl('Could not find '//pmxmoddirq(1:lpmxmoddirq) + * //', checking further.') +c +c File named includeq doesn't not exist. Get directory from PMXMODDIR and +c see if it's there +c + call getenv('PMXMODDIR',pmxmoddirq) + lpmxmoddirq = lenstr(pmxmoddirq,80) + if (lpmxmoddirq. gt. 0) then + pmxmoddirq = pmxmoddirq(1:lpmxmoddirq)//includeq + lpmxmoddirq = lenstr(pmxmoddirq,80) + else + call printl( + * 'No other directory defined by PMXMODDIR, stopping') + call stop1() + end if + inquire(file=pmxmoddirq,EXIST=fexist) + if (.not.fexist) then + call printl('Could not find '//pmxmoddirq(1:lpmxmoddirq) + * //', stopping.') + call stop1() + end if + end if + call printl('Opening normal include file ' + * //pmxmoddirq(1:lpmxmoddirq)) + open(18,file=pmxmoddirq) + else +c +c Check for existence of pmx.mod +c + call getenv('PMXMODDIR',pmxmoddirq) + lpmxmoddirq = lenstr(pmxmoddirq,80) + if (lpmxmoddirq .eq. 0) return + pmxmoddirq = pmxmoddirq(1:lpmxmoddirq)//'pmx.mod' + lpmxmoddirq = lpmxmoddirq+7 + inquire(file=pmxmoddirq,EXIST=fexist) + if (.not.fexist) return + call printl('Opening global include file ' + * //pmxmoddirq(1:lpmxmoddirq)) + open(18,file=pmxmoddirq(1:lpmxmoddirq)) + end if + call printl('Adding include data') +c +c Read lines in from pmx.mod one at a time +c + ipbufmod = ipbuf + lenbufmod = lenbuf0 + do 1 ilbufmod = ilbuf , maxblks + read(18,'(a)',end=3)lnholdq +c +c A line was read. Slide all existing lengths from here forward ahead by 1 +c + do 2 ilbuff = nlbuf , ilbufmod , -1 + lbuf(ilbuff+1) = lbuf(ilbuff) +2 continue +c +c Get length of line from include file +c + lenmodline = lenstr(lnholdq,128) + if (lenmodline .eq. 0) then +c +c Blank line. Make it a single blank with length 1 +c + lenmodline = 1 + lnholdq = ' ' + end if + lbuf(ilbufmod) = lenmodline + call printl(lnholdq(1:lenmodline)) +c +c Insert new stuff into bufq +c + bufq = bufq(1:ipbufmod)//lnholdq(1:lenmodline)// + * bufq(ipbufmod+1:lenbufmod) +c +c Update internal parameters +c + ipbufmod = ipbufmod+lbuf(ilbufmod) + lenbufmod = lenbufmod+lbuf(ilbufmod) + nlbuf = nlbuf+1 +1 continue +3 continue + call printl('Closing '//pmxmoddirq(1:lpmxmoddirq)) + close(18) + linesinpmxmod = linesinpmxmod+ilbufmod-ilbuf + lenbuf0 = lenbufmod +c +c Fix Andre's error reporting problem 101211 leading to log(neg#) due +c to nline being 2 bigger than it should be +c + nline=nline-2 +c + return + end + subroutine getset(nv,noinst,mtrnuml,mtrdenl,mtrnmp,mtrdnp, + * xmtrnum0,npages,nsyst,musicsize,fracindent,istype0, + * inameq,clefq,sepsymq,pathnameq,lpath,isig0) + parameter (nm=24) + common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) + character*1 clefq(nm),sepsymq(nm) + character*40 pathnameq + character*79 inameq(nm) + character*128 lineq + logical istype0,newway,rename + common /commidisig/ midisig +c +c Get the first line +c + iccount = 0 +9 call getbuf(lineq) + if (lineq(1:1) .eq. '%') go to 9 + istype0 = lineq(1:3).eq.'---' + if (istype0) then +c +c Have TeX input until next line that starts with '---'. Save in scratch. +c + open(17,status='SCRATCH') +3 call getbuf(lineq) + if (lineq(1:3) .ne. '---') then + write(17,'(a)')lineq + go to 3 + end if +c +c Force a new line read on first call to readin +c + iccount = 128 + end if +c +c Here, lineq is first line w/ numerical setup data. +c + nv = nint(readin(lineq,iccount,nline)) + noinst = nint(readin(lineq,iccount,nline)) + newway = noinst.le.0 + if (newway) noinst = -noinst + do 2 iinst = 1 , noinst +c +c Seve # of staves per inst in case later drop some inst's. +c + if (newway) then +c +c Read in nvi for each instrument +c + nsperi(iinst) = nint(readin(lineq,iccount,nline)) + else if (iinst .gt. 1 ) then + nsperi(iinst) = 1 + else + nsperi(iinst) = nv-noinst+1 + end if + iiorig(iinst) = iinst + nspern(iinst) = nsperi(iinst) +2 continue + mtrnuml = nint(readin(lineq,iccount,nline)) + mtrdenl = nint(readin(lineq,iccount,nline)) +cc +cc Kluge to make mtrdenl work +cc +c if (mtrdenl .eq. 1) then +c mtrdenl = 2 +c mtrnuml = mtrnuml*2 +c end if + mtrnmp = nint(readin(lineq,iccount,nline)) + mtrdnp = nint(readin(lineq,iccount,nline)) + xmtrnum0 = readin(lineq,iccount,nline) +c +c Original key sig (before any trnasposition) in next position. Transposed +c sig for topfile was transferred thru pmxtex.dat. Need isig0 for key +c changes if transposed. +c + isig0 = nint(readin(lineq,iccount,nline)) +c 130316 +c do 11 iinst = 1 , noinst +c midisig(iinst) = isig0 + midisig = isig0 +c11 continue + npages = nint(readin(lineq,iccount,nline)) + nsyst = nint(readin(lineq,iccount,nline)) + musicsize = nint(readin(lineq,iccount,nline)) + fracindent = readin(lineq,iccount,nline) +c +c Next noinst non-comment lines are names of instruments. +c + do 4 i = 1 , noinst +5 call getbuf(inameq(i)) + if (inameq(i)(1:1) .eq. '%') go to 5 +4 continue +c +c Next non-comment line has nv clef names +c +6 call getbuf(lineq) + if (lineq(1:1) .eq. '%') go to 6 + iv = 0 + nvsofar = 0 + do 1 jinst = 1 , noinst + nvsofar = nvsofar+nsperi(jinst) + do 10 ivi = 1 , nsperi(jinst) + iv = iv+1 + clefq(iv) = lineq(iv:iv) + if (iv .eq. nvsofar) then + sepsymq(iv) = '&' + else + sepsymq(iv) = '|' + end if +10 continue +1 continue +c +c Mext non-comment line has path name +c +8 call getbuf(pathnameq) + if (pathnameq(1:1) .eq. '%') go to 8 + lpath = index(pathnameq,' ')-1 +c +c 160130 Replace '\' by '/' +c +12 ipos = index(pathnameq,'\') + if (ipos .gt. 0) then + pathnameq(ipos:ipos)='/' +c print*,'Changed pathname to ',pathnameq(1:lpath) + go to 12 + end if + return + end + function getsquez(n,ntot,space,tnote,to) + real*4 tnote(600),to(600) + common /comtol/ tol +c +c Get the squez factor by checking space against tgovern=minimum duration +c of all notes sounding at time of n-th note in the list. +c The starting time of base increment is to(n) and ending time is to(n)+space +c Sounding notes are those that start at or before to(n) .and. end at or +c after tend=to(n)+space +c Since notes are ordered by increasing start times, as soon as we find one +c that starts too late, we are done checking. +c + tgovern = 1000. + tend = to(n)+space + do 1 in = 1 , ntot +c +c Since to() is ordered by start times, exit loop after first note that +c starts later than note of interest. +c + if (to(in) .gt. to(n)+tol) go to 2 + if (to(in)+tnote(in) .gt. tend-tol) then +c +c If here, this note overlaps and must be tested. +c + tgovern = min(tgovern,tnote(in)) + end if +1 continue +2 continue + getsquez = space/tgovern + return + end + subroutine getx(lineq,iccount,irest,shifton,wheadpt,iornq1,ivx, + * irest1,itsofar,ntup,itup,nnodur,dotq,ndoub) + parameter(nm=24) +c +c Parse "X" commands. Ignore all "B"; "P" means to ignore whole symbol. +c In scor2prt, must strip out "P", copy only "B" and "P"-type "X"-symbols. +c Since during getnote phase time is integer itsofar, which is not updated +c during xtups, we use itup and ntup to get actual time. On entry, ntup=0 if +c not in xtup. +c + common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) + logical shifton,colon,ess,number + character*128 lineq + character*1 charq,durq,dotq + colon = .false. + ess = .false. + number = .false. + nextbl = iccount+index(lineq(iccount:128),' ')-1 + if (index(lineq(iccount:nextbl),'P') .gt. 0) then +c +c "Parts only", ignore entire symbol +c + iccount = nextbl + return + end if +1 call getchar(lineq,iccount,charq) + if (charq.eq.'B') then +c +c "Both parts and score," ignore character +c + go to 1 + else if (charq .eq. ':') then + colon = .true. + go to 1 + else if (charq .eq. 'S') then + ess = .true. + go to 1 + else if (index('+-.0123456789',charq) .gt. 0) then + number = .true. + if (charq.eq.'-') iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + if (charq .eq. '-') fnum = -fnum + if (durq .ne. 'p') then + fnum = fnum*wheadpt + iccount = iccount-1 + end if + go to 1 + end if +c +c charq must be blank, so done parsing +c + if (.not.ess .and. .not.colon) then +c +c Ordinary hardspace. Goes before next note. +c (Later, at "|" or "/", check for presence and switch to udoff if there!) +c + nudsp = nudsp+1 + iornq1 = ibset(iornq1,26) + udsp(nudsp) = fnum + tudsp(nudsp) = itsofar + if (ntup .gt. 0) tudsp(nudsp) = tudsp(nudsp) +c * +float(itup-1)/ntup*ifnodur(nnodur,dotq) + * +float(itup-1+ndoub)/ntup*ifnodur(nnodur,dotq) + else if (.not.number) then +c +c Must be "X:" End a group offset. +c + irest = ibset(irest,17) + shifton = .false. + return + else +c +c Only other possibility is start offset, "S" for single, ':' for multiple +c + nudoff(ivx) = nudoff(ivx)+1 + udoff(ivx,nudoff(ivx)) = fnum + if (ess) then + irest1 = ibset(irest1,15) + else + irest1 = ibset(irest1,16) + shifton = .true. + end if + end if + return + end + function i1fnodur(idur,dotq) + character*1 dotq + if (idur .eq. 6) then + i1fnodur=1 + else if (idur .eq. 3) then + i1fnodur=2 + else if (idur .eq. 1) then + i1fnodur=4 + else if (idur .eq. 8) then + i1fnodur=8 + else if (idur .eq. 4) then + i1fnodur=16 + else if (idur .eq. 2) then + i1fnodur=32 + else if (idur .eq. 0) then + i1fnodur=64 + else if (idur .eq. 16) then +c +c Only used for denominator of time signatures, not for notes +c + i1fnodur=4 + else if (idur .eq. 9) then + i1fnodur = 128 + else + print* + print*,'You entered an invalid note-length value:',idur + call stop1() + end if + if (dotq .eq. 'd') i1fnodur = i1fnodur*3/2 + return + end +c integer*4 function longi(ishort) +c integer*2 ishort +c longi = ishort +c return +c end + function iashft(nacc) + integer*4 ias(6) + data ias /-1,1,0,0,-2,2/ + iashft = ias(nacc) + return + end + function ifnodur(idur,dotq) + character*1 dotq + if (idur .eq. 6) then + ifnodur=1 + else if (idur .eq. 3)then + ifnodur=2 + else if(idur .eq. 1) then + ifnodur=4 + else if(idur .eq. 8) then + ifnodur=8 + else if(idur .eq. 4) then + ifnodur=16 + else if(idur .eq. 2) then + ifnodur=32 + else if(idur .eq. 0) then + ifnodur=64 + else if(idur .eq. 9) then + ifnodur=128 + else if (idur .eq. 16) then +c +c Only used for denominator of time signatures, not for notes +c + ifnodur=4 + else + print*,'You entered an invalid note value' + stop + end if + if (dotq .eq. 'd') ifnodur = ifnodur*3/2 + return + end + function ifnolev(noq,oct,ntrans) + character*1 noq + integer oct + ifnolev = 7*oct+mod(ichar(noq)-92,7)+1+ntrans + return + end +c subroutine report(nsdat,isdat1,isdat2) +c integer*4 isdat1(202),isdat2(202) +c write(*,'(a)') +c * ' isd on? iv kv ip id ud1 ud2 ndx ivo iho lev crd lhd rhd' +c do 1 isdat = 1 , nsdat +c isdata = isdat1(isdat) +c ionoff = igetbits(isdata,1,11) +cc iv = iand(7,isdata) +c iv = igetbits(isdata,5,13) +c kv = igetbits(isdata,1,12)+1 +c ip = igetbits(isdata,8,3) +c idcode = igetbits(isdata,7,19) +c iud1 = igetbits(isdata,1,26) +c iud2 = igetbits(isdata,1,27) +c ndxslur = igetbits(isdata,4,28) +c isdatb = isdat2(isdat) +c ivo = igetbits(isdatb,6,6)-32 +c iho = igetbits(isdatb,7,12)-64 +c lev = igetbits(isdatb,7,19) +c icrd = igetbits(isdatb,1,0) +c lhd = igetbits(isdatb,1,1) +c irhd = igetbits(isdatb,7,2) +c write(*,'(17i4)')isdat,ionoff,iv,kv,ip,idcode,iud1,iud2,ndxslur, +c * ivo,iho,lev,icrd,lhd,irhd +c1 continue +c print* +c return +c end + function igetbits(isdata,iwidbit,ishift) +c +c Extracts integer given by iwidbit bits of isdata, shifted by ishift, and +c then added to ioff +c + igetbits = iand(2**iwidbit-1,ishft(isdata,-ishift)) + return + end + function igetvarlen(mmidi,icm,imidi,nbytes) +c +c Gets variable-length integer starting in mmidi at imidi+1. Returns nbytes. +c + parameter (nm=24,mv=24576) + integer*2 mmidi(0:nm,mv) + igetvarlen = 0 + do 1 nbytes = 1 , 4 + igetvarlen = 128*igetvarlen + * +iand(127,mmidi(icm,imidi+nbytes)) + if (.not.btest(mmidi(icm,imidi+nbytes),7)) return +1 continue + print*,'Messup in igetvarlen' + call stop1() + end + logical function isdotted(nodur,ivx,ip) + parameter (nm=24) +c +c Function returns true if note is dotted or double-dotted. +c Return false for any xtuplet. +c + common /comtol/ tol + integer*4 nodur(nm,200) + if (nodur(ivx,ip) .eq. 0) then + isdotted = .false. + return + else if (ip .gt. 1) then + if (nodur(ivx,ip-1) .eq. 0) then + isdotted = .false. + return + end if + end if +c +c Ruled out all xtups, so is dotted or double-dotted if not a power of 2. +c + isdotted = + * mod(alog(float(nodur(ivx,ip)))/.69314718+.5*tol,1.) .gt. tol + return + end + function isetvarlen(idur,nbytes) + isetvarlen = 0 + itemp = idur + do 1 nbytes = 1 , 4 + isetvarlen = isetvarlen + iand(itemp,127)*256**(nbytes-1) + itemp = ishft(itemp,-7) + if (itemp .gt. 0) then + isetvarlen = isetvarlen+2**(8*nbytes+7) + else + return + end if +1 continue + print*,'Problem in fn. isetvarlen' + call stop1() + end + subroutine istring(i,string,len) +c +c Returns string with integer only if length is 1, otherwise enclosed in +c brackets. +c + character*(*) string + if (i .ne. 0) then + len = alog10(abs(i)*1.0001)+1 + if (i .lt. 0) len = len+1 + else + string = '0' + len = 1 + return + end if + if (len .eq. 1) then + string = char(48+i) + else + string = '{' + write(string(2:1+len),'(i'//char(48+len)//')')i + string = string(1:len+1)//'}' + len = len+2 + end if + return + end + function lenstr(string,n) + character*(*) string + do 1 lenstr = n , 1 , -1 + if (string(lenstr:lenstr) .ne. ' ') return +1 continue + lenstr = 0 + return + end + function levrn(nolev,irest,iud,ncm,mult) +c +c Used for placing numbers in xtups. Returns note level if not a rest, +c else level of top or bottom of rest symbol opposite beam. iud=-1 for upstm. +c + logical btest + if (.not.btest(irest,0)) then + levrn = nolev + else +c +c Restlevel is -4, 0, 2 or 100+offset. First get offset from 1-voice default. +c + if (mult .gt. 0) then + if (mult .eq. 2) then + ioff = -1+2*iud + else if (mult .ne. 4) then + ioff = iud*mult + else + ioff = 1+4*iud + end if + else +c +c May need to futz with this later for non-beamed xtups (quarter, half rests) +c + ioff = iud*2 + end if + levrn = mod(nolev+20,100)-20+ncm+ioff + endif + return + end + function lfmt1(x) +c +c Computes total length of an "f" format with one decimal place. +c First round to nearest 0.1 +c + if (abs(x) .lt. .001) then + lfmt1 = 2 + else + y = sign(.1*int(10*abs(x)+.5),x) + lfmt1 = int(log10(1000*abs(y)+.001)) + if (y .lt. 0) lfmt1 = lfmt1+1 + end if + return + end + subroutine LineBreakTies(isdat1,isdat2,isdat3,isdat4,nsdat, + * ispstie,sepsymq) + parameter (nm=24) + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + common /comoct/ noctup + integer*4 isdat1(202),isdat2(202),isdat3(202),isdat4(202) + logical fontslur,WrotePsslurDefaults,btest,upslur,ispstie,tie + character*1 udq,chax,sepsymq(nm) + character*8 noteq + character*128 notexq +c +c This is called twice from pmxb after having input an entire block, before +c making a bar that starts a new system. So nsdat reflects all slur starts +c and stops in new block, while listslur, which is only set when bars are +c made, reflects only open slurs from the old block. So we must check +c listslur to find open ties, not all nsdat. +c First of two calls (ispstie=.false. on entry) terminates tie at end of line. +c Second (ispstie=.true. on entry) restarts tie at start of new line. Only +c need data from original tie-start for both of these. Tie/slur data from +c closing of full tie are not used except for shape alterations. +c +c do 1 ndx = 0 , 11 + do 1 ndx = 0 , 23 + if (btest(listslur,ndx)) then +c +c Slur or tie with index ndx is open. Find the one with right ndxb, see if tie +c + do 2 isdat = 1 , nsdat +c if (igetbits(isdat1(isdat),4,28) .ne. ndx) go to 2 ! Wrong index + if (igetbits(isdat1(isdat),4,28) + * +16*igetbits(isdat1(isdat),1,18) .ne. ndx) go to 2 ! Wrong index + if (.not.btest(isdat1(isdat),11)) go to 2 ! Bypass if stop + if (btest(isdat2(isdat),3)) go to 3 ! "st" + idcode = igetbits(isdat1(isdat),7,19) + if (idcode.eq.1) go to 3 ! "t" + tie = .false. + go to 5 +2 continue + end if + go to 1 +3 continue + tie = .true. +5 continue +c +c A slur or tie is open, with index ndx +c + iv = igetbits(isdat1(isdat),5,13) + kv = igetbits(isdat1(isdat),1,12)+1 + udq = 'd' + if (btest(isdat1(isdat),27)) udq='u' + notexq = chax(92)//'znotes' + lnote = 7 + do 4 iiv = 1 , iv-1 + notexq = notexq(1:lnote)//sepsymq(iiv) + lnote = lnote+1 +4 continue + if (kv .eq. 2) then + notexq = notexq(1:lnote)//chax(92)//'nextvoice' + lnote = lnote+10 + end if +c +c Compute horiz and vert offsets +c +c nolev = igetbits(isdat2(isdat),7,19) + islhgt = igetbits(isdat3(isdat),8,14) + ilb12 = 0 + if (ispstie) ilb12 = 1 + ivoff = igetbits(isdat4(isdat),6,ilb12*16)-32 + if (ivoff .eq. -32) ivoff = 0 +C nolev = nolev+ivoff + islhgt = islhgt+ivoff + ihoff = (igetbits(isdat4(isdat),7,ilb12*16+6)-64) ! This is 10X hoff + if (ihoff .eq. -64) ihoff = 0 +c +c Add starting stuff for command +c + if (.not.ispstie) then ! End 1st segment + notexq = notexq(1:lnote)//chax(92)//'roffset{' + lnote = lnote+9 +c hoff = ihoff*.1-.5 +c hoff = ihoff*.1-.8 + hoff = ihoff*.1-.4 + if (hoff .lt. 0) then + hoff = -hoff + notexq = notexq(1:lnote)//'-' + lnote = lnote+1 + end if + call writflot(hoff,notexq,lnote) + notexq = notexq(1:lnote)//'}{' + lnote = lnote+2 + else + notexq = notexq(1:lnote)//chax(92)//'off{-' + * //chax(92)//'afterruleskip}' + lnote = lnote+21 +c +c 091025 add dotting for 2nd segment if needed +c + if (btest(isdat2(isdat),4)) then + notexq = chax(92)//'dotted'//notexq(1:lnote) + lnote = lnote+7 + end if + end if + if (ispstie .and. tie) then + notexq = notexq(1:lnote)//chax(92)//'tieforis'//udq + lnote = lnote+10 + end if + if (btest(isdat3(isdat),0)) then +c +c Curvature tweak on termination of 1st seg +c + imid = igetbits(isdat3(isdat),6,2)-32 +c +c Invoke macro (from pmx.tex) that redefines \tslur as r'qd. mapping: +c Abs(imid) Postscript slur type +c 1 f +c 4 h +c 5 H +c 6 HH +c + notexq = notexq(1:lnote)//chax(92)//'psforts'//chax(48+imid) + lnote = lnote+9 +c +c Zero out the flag in case there's a different curv on term of 2nd, +c + isdat3(isdat) = ibclr(isdat3(isdat),0) + end if +c +c Add the command name +c + if (ispstie) then + notexq = notexq(1:lnote)//chax(92)//'is'//udq + lnote = lnote+4 + else if (tie) then + notexq = notexq(1:lnote)//chax(92)//'ttie' + lnote = lnote+5 + else + notexq = notexq(1:lnote)//chax(92)//'tslur' + lnote = lnote+6 + end if +c +c Add index +c +c if (11-ndx .lt. 10) then +c notexq = notexq(1:lnote)//chax(59-ndx) +c lnote = lnote+1 +c else +c notexq = notexq(1:lnote)//'{1'//chax(49-ndx)//'}' +c lnote = lnote+4 +c end if + if (23-ndx .lt. 10) then + notexq = notexq(1:lnote)//chax(71-ndx) + lnote = lnote+1 + else if (23-ndx .lt. 20) then + notexq = notexq(1:lnote)//'{1'//chax(61-ndx)//'}' + lnote = lnote+4 + else + notexq = notexq(1:lnote)//'{2'//chax(51-ndx)//'}' + lnote = lnote+4 + end if + if (ispstie .or. .not.tie) then +c +c Add note name for slur height +c + noctup = 0 + ncm = igetbits(isdat3(isdat),8,22) + if (ncm .eq. 23) noctup = -2 +c call notefq(noteq,lnoten,nolev,ncm) + call notefq(noteq,lnoten,islhgt,ncm) + notexq = notexq(1:lnote)//'{'//noteq(1:lnoten)//'}' + lnote = lnote+1+lnoten+1 + end if + if (ispstie) then +c +c Horizontal shift start of new thing +c + notexq = notexq(1:lnote)//'{' + lnote = lnote+1 +c ihoff = ihoff-13 + if (tie) then + ihoff = ihoff-12 + else + ihoff = ihoff-7 + end if + if (ihoff .lt. 0) then + ihoff = -ihoff + notexq = notexq(1:lnote)//'-' + lnote = lnote+1 + end if + call writflot(ihoff*.1,notexq,lnote) + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + end if +c +c Add closing stuff +c + if (ispstie) then + notexq = notexq(1:lnote)//chax(92)//'off{' + * //chax(92)//'afterruleskip}' + lnote = lnote+20 + else + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + end if + notexq = notexq(1:lnote)//chax(92)//'en%' + lnote = lnote+4 + write(11,'(a)')notexq(1:lnote) +1 continue + ispstie = .not.ispstie + return + end + subroutine littex(islur,nnl,iv,topmods,lineq,iccount) + parameter (nm=24) + common /comlast/ islast,usevshrink + logical islast,usevshrink + integer islur(nm,200) + logical topmods + common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, + * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, + * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, + * graspace(37), + * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), + * naccg(74),voltxtq(6),litq(83) + logical upg,slurg,slashg,merge + character*128 lineq,litq + character*20 voltxtq + character*1 durq,chax + merge = .false. + if (nlit .gt. 0) then + merge = iv.eq.ivlit(nlit) .and. nnl.eq.iplit(nlit) + end if + nlit = nlit+1 + ivlit(nlit) = iv + iplit(nlit) = nnl + itype = 1 +17 call getchar(lineq,iccount,durq) + if (durq .eq. chax(92)) then + itype=itype+1 + go to 17 + end if + litq(nlit) = chax(92)//durq + lenlit(nlit) = 2 +18 call getchar(lineq,iccount,durq) + if (durq.eq.chax(92)) then + call getchar(lineq,iccount,durq) + if (durq .ne. ' ') then +c +c Starting a new tex command within the string +c + litq(nlit) = litq(nlit)(1:lenlit(nlit))//chax(92)//durq + lenlit(nlit) = lenlit(nlit)+2 + go to 18 + end if + else + litq(nlit) = litq(nlit)(1:lenlit(nlit))//durq + lenlit(nlit) = lenlit(nlit)+1 + go to 18 + end if +c +c If here, just read backslash-blank so string is done +c + if (itype .eq. 1) then + islur(iv,nnl) = ibset(islur(iv,nnl),16) + if (merge) then +c +c There are 2 separate strings on the same note, so merge them. +c + nlit = nlit-1 + litq(nlit) = litq(nlit)(1:lenlit(nlit)) + * //litq(nlit+1)(1:lenlit(nlit+1)) + lenlit(nlit) = lenlit(nlit)+lenlit(nlit+1) + if (lenlit(nlit) .gt. 128) then + print* + print*, + * 'Merged type-1 TeX strings longer than 128 characters' + write(15,'(/,a)') + * 'Merged type-1 TeX strings longer than 128 characters' + call stop1() + end if + end if + else +c +c Type 2 or 3. +c + if (itype .eq. 3) then +c +c Write the string NOW +c + if (islast) + * write(11,'(a)')litq(nlit)(1:lenlit(nlit))//'%' + else +c +c Must go at top +c + if (.not.topmods) then + topmods = .true. + open(16,status='SCRATCH') + end if +c +c Must write '%' here rather than later, in case string ends with blank. +c + write(16,'(a)')litq(nlit)(1:lenlit(nlit))//'%' + end if + nlit = nlit-1 + end if + return + end + function llen(strq,n) + character*129 strq + do 1 llen = n , 0 , -1 + if (strq(llen:llen) .ne. ' ') return +1 continue + end + function log2(n) +c +c 5/25/08 Modify to allow more slurs +c +c log2 = alog(1.*n)/0.6931472+.0001 +c log2 = dlog(1.d0*n)/0.693147181d0+.00000001d0 + log2 = dlog(1.d0*n)/0.693147181d0+.00000002d0 + return + end + subroutine logbeam(numnew,nip1,nip2) + parameter (nm=24) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, + * tautofb,autofbon,t1autofb + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + character*1 ulq,sepsymq,sq,ulfq,ulfbq + logical beamon,firstgulp,figbass,figchk,isfig,isxtup,btest, + * autofbon + ibm1(ivx,numnew) = nip1 + ibm2(ivx,numnew) = nip2 + numnow = numnew + if (numnew .gt. 1) then +c +c If it starts before any others, must put it in order +c + do 11 ib = numnew-1 , 1 , -1 + if (ibm1(ivx,ib) .lt. nip1) go to 12 + ibm1(ivx,ib+1) = ibm1(ivx,ib) + ibm2(ivx,ib+1) = ibm2(ivx,ib) + ulq(ivx,ib+1) = ulq(ivx,ib) + ibm1(ivx,ib) = nip1 + ibm2(ivx,ib) = nip2 + numnow = ib +11 continue +12 continue + end if + sum = 0. +c +c Beam has non-xtup within +c + nrests = 0 + isxtup = .false. + do 9 iip = nip1 , nip2 + if (btest(islur(ivx,nip1),21)) then +c +c Forced multiplicity +c + call setbits(mult(ivx,iip),4,0, + * igetbits(islur(ivx,nip1),3,22)+8) + else if (.not.isxtup) then + if (nodur(ivx,iip) .gt. 0) then + call setbits(mult(ivx,iip),4,0,4-log2(nodur(ivx,iip))+8) + else +c +c Start xtup within forced beam +c + isxtup = .true. + iip1 = iip + end if + else if (isxtup .and. nodur(ivx,iip).gt.0) then +c +c End of xtup within forced beam. Must count doubled notes +c + ndoub = 0 + do 1 iiip = iip1 , iip + if (btest(nacc(ivx,iiip),18)) ndoub = ndoub+1 +1 continue + multx = int(10.5+2.929+(0.952*alog(1.+iip-iip1+ndoub)- + * alog(nodur(ivx,iip)/2.))/0.69315)-10 + do 74 iiip = iip1 , iip + call setbits(mult(ivx,iiip),4,0,multx+8) +c +c Note the following still works after making mult only the 1st 4 bits. +c + if (btest(nacc(ivx,iiip),18)) + * mult(ivx,iiip) = mult(ivx,iiip)-1 + if (btest(nacc(ivx,iiip),19)) then + mult(ivx,iiip) = mult(ivx,iiip)+1 + else if (iiip .gt. 1) then + if (btest(nacc(ivx,iiip-1),19)) + * mult(ivx,iiip) = mult(ivx,iiip)+1 + end if +74 continue + isxtup = .false. + end if + if (btest(irest(ivx,iip),0)) then + nrests = nrests+1 + else + sum = sum+nolev(ivx,iip) + end if +9 continue +c +c Set beam up-down-ness +c + if (ifb.gt.0 .and. ulfbq(ivx,max(1,ifb)).ne.'x') then + if (ulfbq(ivx,ifb) .eq. 'f') then +c +c Get default, then trade "l" and "u" +c + ulq(ivx,numnow) = char(225-ichar( + * ulfq(sum/(nip2-nip1+1-nrests),ncmid(iv,nip1)))) + else + ulq(ivx,ifb) = ulfbq(ivx,ifb) + end if +c +c This probably works only because forced beams are done first, so they +c don't have to be re-sorted within each voice. ???? +c + else if (nvmx(iv) .eq. 2) then +c +c Multi-voice per staff +c + if (ivx .le. nv) then + ulq(ivx,numnow) = 'l' + else + ulq(ivx,numnow) = 'u' + end if + else +c +c Defaults +c + ulq(ivx,numnow) = + * ulfq(sum/(nip2-nip1+1-nrests),ncmid(iv,nip1)) + end if + return + end + subroutine m1rec1(lineq,iccount,ibarcnt,ibaroff,nbars,ndxm) +c +c This is called when (a) macro recording is just starting and +c (b) at the start of a new line, if recording is on +c + parameter (maxblks=9600) + character*128 lineq,lnholdq + common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac + common /c1ommac/ ip1mac(20),il1mac(20),ip2mac(20),il2mac(20), + * ic1mac(20),ilmac,iplmac + logical mrecord,mplay,endmac + character*131072 bufq + integer*2 lbuf(maxblks) + common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq + lbuf(1) = lbuf(1) + if (.not.mrecord) then +c +c Starting the macro +c + ip1mac(macnum) = ipbuf-lbuf(ilbuf-1)+iccount + il1mac(macnum) = ilbuf-1 + ic1mac(macnum) = iccount + mrecord = .true. + end if + if (iccount .lt. 128) then + ndxm = index(lineq(iccount+1:128),'M') + if (ndxm .gt. 0) ndxm = ntindex(lineq(iccount+1:128),'M', + * 128-iccount) + if (ndxm .gt. 0) then +c +c This line ends the macro. +c + if (lineq(iccount+ndxm+1:iccount+ndxm+1) .ne. ' ') then + call errmsg(lineq,iccount+ndxm+1,ibarcnt-ibaroff+nbars+1, + * 'Improper macro termination!') + call stop1() + end if + ip2mac(macnum) = ipbuf-lbuf(ilbuf-1)+iccount+ndxm + il2mac(macnum) = ilbuf-1 + mrecord = .false. + end if + end if + return + end + subroutine make1bar(ibmrep,tglp1,tstart,cwrest,squez, + * istop,numbms,istart) + parameter (nm=24,mv=24576) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + common /comipl2/ ipl2(nm,200) + character*10 figq + character*1 ulq,sepsymq,sq + logical beamon,firstgulp,figbass,figchk,isfig,bar1syst + common /comeskz2/ eskz2(nm,200) + common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), + * fullsize(nm),ivxfig2,ivvfig(2,74) + common /combeam/ ibmtyp + common /comask/ bar1syst,fixednew,scaldold, + * wheadpt,fbar,poenom + common /comas1/ naskb,task(40),wask(40),elask(40) + common /comas2/ nasksys,wasksys(800),elasksys(800) + common /comhead/ ihdht,lower,headrq,lowerq,ihdvrt + common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, + * tautofb,autofbon,t1autofb + common /comsln/ is1n1,is2n1,irzbnd,isnx + common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, + * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, + * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, + * graspace(37), + * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), + * naccg(74),voltxtq(6),litq(83) + logical upg,slurg,slashg,autofbon + character*128 litq + common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), + * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) + integer cnn(nm),istart(80),istop(80),nxtnow(nm),ifbnow(nm), + * numbms(nm),mapfb(16) + real*4 xit(nm),t1xtup(20),tstart(80),squez(80) + character*1 ulfbq + character*79 inameq + character*20 voltxtq + common /comoct/ noctup + character*80 headrq,lowerq + logical cwrferm + common /comcwrf/ cwrferm(nm) + common /comnsp/ space(80),nb,prevtn(nm), + * flgndv(nm),flgndb,eskgnd,ptsgnd,ivmxsav(nm,2),nvmxsav(nm) + logical lower,cwrest(nm),vxtup,flgndb,btest,upslur, + * infbmx(nm),lowdot,inxtup(nm),drawbm + common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), + * mtupv(nm,9),nxtinbm(nm), + * islope(nm),xelsk(24),eloff(nm,9), + * nssb(nm),issb(nm),lev1ssb(nm,20) + common /comdraw/ drawbm(nm) + common /comstart/ facmtr + common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, + * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, + * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, + * rtshfac +c +c Above are factors for grace note, clef spacing. (fraction of wheadpt) +c In 1.04, moved to block data subprogram +c + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, + * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, + * lnam(nm),inameq(nm) + common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) + common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), + * xinsnow,lowdot + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + common /comtol/ tol + integer*2 mmidi + logical restpend,relacc,notmain,twoline,ismidi,crdacc,fontslur, + * WrotePsslurDefaults + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + common /comntot/ ntot + if (ismidi) then +c +c Initialize for this bar the accidental counter for the midi file. +c naccim(icm) = # of accidentals from earlier in the bar +c + do 45 iv = 1 , nv + do 45 kv = 1 , nvmx(iv) + naccim(midchan(iv,kv)) = 0 +45 continue + end if +c +c Time from start of gulp to end of bar, used with forced beams +c + tglp2 = lenb0+ibar*lenb1 + if (lenb0 .gt. 0) tglp2 = tglp2-lenb1 + tglp1 = tglp2-lenbar +c +c infbmx will only be true if in xtup that is NOT in explicit forced beam. +c + do 1 iv = 1 , nv + do 1 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + cwrest(ivx) = .false. + infbmx(ivx) = .false. + inxtup(ivx) = .false. + if (ibar .gt. 1) then + nn(ivx) = nib(ivx,ibar)-nib(ivx,ibar-1) + else + nn(ivx) = nib(ivx,ibar) + end if +1 continue +c +c initialize list note counter, time(iv), curr. note(iv). The loop to 4 +c ONLY initializes each voice. +c + in = 1 + nxtup = 0 + narp = 0 + do 4 iv = 1 , nv + do 4 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + cwrferm(ivx) = .false. + cnn(ivx) = 1 + ivxo(in) = ivx + ipo(in) = cnn(ivx) + tnote(in) = fnote(nodur,ivx,1,nacc) + to(in) = 0. + xit(ivx) = tnote(in) +c +c Note that xit(ivx) is to END of note in voice, but it1xtup is start time. +c + if (nodur(ivx,ipo(in)) .eq. 0) then +c +c First note of xtuplet at start of bar in voice ivx. +c + nxtup = nxtup+1 + nxtnow(ivx) = nxtup + inxtup(ivx) = .true. + t1xtup(nxtup) = 0. +c +c Xtup at start of bar. If no explicit forced beam, start one, set +c signal infbmx, and save number ifbnow for use at termination. +c + if (nfb(ivx) .gt. 0) then + do 60 ifb = 1 , nfb(ivx) + if (t1fb(ivx,ifb) .gt. tglp1+xit(ivx)+tol) then +c +c No explicit fb here; so exit loop and insert one. +c + go to 61 + else if (t1fb(ivx,ifb) .lt. tglp1+xit(ivx)+tol .and. + * t2fb(ivx,ifb) .gt. tglp1+xit(ivx)+tol) then +c +c IS explicit fb here; must NOT insert one +c + go to 62 + end if +60 continue + end if +61 continue +c +c If here, xtup isn't in explicit fb, so must insert one +c + infbmx(ivx) = .true. + call addfb(nfb,ivx,t1xtup(nxtup)+ + * tglp1,t1fb,t2fb,ulfbq,ifbadd) + ifbnow(ivx) = ifbadd + end if +62 continue + if (abs(xit(ivx)-lenbar) .lt. tol) xit(ivx) = 1000. + in = in+1 +4 continue +c +c Build the list: This is a manual loop starting at 5 +c +5 continue +c +c Determine which voice comes next from end of notes done so far. +c tmin is the earliest ending time of notes done so far +c + tmin = 1000. + do 6 iiv = 1 , nv + do 6 kv = 1 , nvmx(iiv) + iivx = ivmx(iiv,kv) + tminn = min(tmin,xit(iivx)) + if(tminn .lt. tmin-tol) then + tmin = tminn + ivx = iivx + end if +6 continue + if (abs(tmin-1000.) .lt. tol) go to 7 + ivxo(in) = ivx + cnn(ivx) = cnn(ivx)+1 + ipo(in) = cnn(ivx) + to(in) = tmin +c +c Check if this voice is done +c + tnote(in) = fnote(nodur,ivx,cnn(ivx),nacc) + if (cnn(ivx) .eq. nn(ivx)) then + xit(ivx) = 1000. + else + xit(ivx) = xit(ivx)+tnote(in) + end if +c +c Flag xtups +c + if (nodur(ivx,cnn(ivx)) .eq. 0) then + if (.not.inxtup(ivx)) then +c +c First note of xtup, not at start of bar. +c + nxtup = nxtup+1 + nxtnow(ivx) = nxtup + inxtup(ivx) = .true. + t1xtup(nxtup) = xit(ivx)-tnote(in) +c +c (Note: can't be on last note in voice, so xit(ivx) <> 1000) +c Put xtuplet in a forced beam if not already in forced beam +c + if (nfb(ivx) .gt. 0) then + do 70 ifb = 1 , nfb(ivx) + if (t1fb(ivx,ifb) .gt. tglp1+xit(ivx)+tol) then +c +c NO explicit bm; put one in +c + go to 71 + else if (t1fb(ivx,ifb) .lt. tglp1+xit(ivx)+tol .and. + * t2fb(ivx,ifb) .gt. tglp1+xit(ivx)+tol) then +c +c IS explicit bm. Don't put one +c + go to 72 + end if +70 continue + end if +71 continue +c +c If here, no explicit bm, so put one in +c + infbmx(ivx) = .true. + call addfb(nfb,ivx,t1xtup(nxtup)+tglp1, + * t1fb,t2fb,ulfbq,ifbadd) + ifbnow(ivx) = ifbadd + end if +72 continue + else if (inxtup(ivx)) then +c +c This test is sufficient because already know nodur>0 +c + inxtup(ivx) = .false. + if (infbmx(ivx)) then +c +c Xtup is in auto-forced beam, so end it +c + t2fb(ivx,ifbnow(ivx)) = + * t1xtup(nxtnow(ivx))+nodur(ivx,cnn(ivx))+tglp1 + infbmx(ivx) = .false. + end if + end if + if (btest(irest(ivxo(in),ipo(in)),24) .or. + * btest(irest(ivxo(in),ipo(in)),30)) then +c +c For staff jumped beam, flag the first note (lowest voice) at same time. +c Later will start new notes group here. +c + inj = in + if (ivxo(in) .gt. 1) then + do 40 iin = in-1 , 1 , -1 + if (to(iin)+tol .lt. to(in)) go to 41 + if (abs(to(iin)-to(in)) .lt. tol) then + inj = iin + go to 40 + end if +40 continue + end if +41 continue + irest(ivxo(inj),ipo(inj)) = ibset(irest(ivxo(inj),ipo(inj)),29) + end if + in = in+1 + go to 5 +7 continue + ntot = in-1 + do 8 in = 1 , ntot-1 + tno(in) = to(in+1)-to(in) +8 continue + tno(ntot) = tnote(ntot) +c +c Debug writes +c +c write(*,'()') +c write(*,'(a)')' Greetings from PMXB' +c write(*,'(16i5)')(ivxo(in),in=1,ntot) +c write(*,'(16i5)')(ipo(in),in=1,ntot) +c write(*,'(16f5.1)')(to(in),in=1,ntot) +c write(*,'(16f5.1)')(tno(in),in=1,ntot) +c write(*,'(16i5)')(nodur(ivxo(in),ipo(in)),in=1,ntot) +c write(*,'(16f5.1)')(fnote(nodur,ivxo(in),ipo(in),nacc),in=1,ntot) +c +c Done w/ list. Loop for parsing into note blocks: +c + ib = 1 + istart(1) = 1 + space(1) = 0. + in = 1 +c +c A manual loop to set space(ib) and istop(ib) +c +9 continue + + ivx = ivxo(min(in+1,ntot)) + ip = ipo(min(in+1,ntot)) + isl = islur(ivx,ip) + if (in.eq.ntot .or. ((ivx.eq.1 .and. + * (iand(isl,67109216).gt.0 .or. btest(ipl(1,ip),28) +c * .or. ornq(1,ip).eq.'g')) .or. btest(isl,15) )) then +c Bits 1-13: stmgx+Tupf._) +c 14: Down fermata, was F +c 15: Trill w/o "tr", was U + * .or. btest(iornq(1,ip),4))) .or. btest(isl,15) ) +c +c Checking for start of 2nd part of jumped beam +c + * .or. btest(irest(ivx,ip),29) ) then +c +c Bar end, segno, int. rpt or sig change, clef,end of 1st part of jumped beam; +c flow out of if-loop and into block-wrapup +c +c 10/18/97: Problem with clef alignment. Got isl{15} set on lowest-numbered +c voice, but it wasn't first in the list at the same time. So check if +c prior notes in list have same time +c 5/25/98: This stuff causes trouble with just "c2 Ct c", maybe when clef +c changes on last note in the list? +c + if (btest(isl,15) .and. in.lt.ntot) then + do 50 iin = in , 1 , -1 + if (tno(iin) .gt. tol) then + in = iin + islur(ivx,ip) = ibclr(islur(ivx,ip),15) + islur(ivxo(in+1),ipo(in+1)) = + * ibset(islur(ivxo(in+1),ipo(in+1)),15) + go to 51 + end if +50 continue +51 continue + end if + if (space(ib) .lt. tol) then + space(ib) = tno(in) + squez(ib) = 1. + end if + istop(ib) = in + else if (space(ib) .lt. tol) then +c +c space hasn't been set yet, so tentatively set: +c + space(ib) = tno(in) + if (space(ib) .lt. tol) then + in=in+1 + else + squez(ib) = getsquez(in,ntot,space(ib),tnote,to) + istop(ib) = in + end if + go to 9 + else if (tno(in+1) .lt. tol) then +c +c This is not the last note in the group, so +c + in = in+1 + go to 9 + else if (abs(tno(in+1)-space(ib)) .lt. tol) then + xsquez = getsquez(in+1,ntot,space(ib),tnote,to) + if (abs(xsquez-squez(ib)) .lt. tol) then +c +c Keep spacing the same, update tentative stop point +c + in = in+1 + istop(ib) = in + go to 9 + end if + end if +c +c At this point istart and istop are good, so finalize block +c + tstart(ib) = to(istart(ib)) + if (istop(ib) .eq. ntot) go to 15 + ib = ib+1 + istart(ib) = istop(ib-1)+1 + in = istart(ib) +c +c Set tentative block space and squeeze-factor for upcoming block +c + space(ib) = tno(in) + if (space(ib).gt.tol) + * squez(ib)= getsquez(in,ntot,space(ib),tnote,to) + istop(ib) = in + go to 9 +15 continue + nb = ib +c +c Invert the list of places into ipl(0-7), making it easier to analyze a voice +c + do 13 in = 1 , ntot +c +c ??? This may fix extra \loff's (bit 8 of ipl) in measures with >255 notes. +c +c ipl(ivxo(in),ipo(in)) = ior(ipl(ivxo(in),ipo(in)),in) + ipl2(ivxo(in),ipo(in)) = in +13 continue +c +c Compute elemskips from start of bar to each note in the bar, for beam slopes +c + eskzb = 0. + ib = 1 + do 30 in = 1 , ntot + if (in .eq. istart(ib)) then + deskb = squez(ib)*feon(space(ib)/squez(ib)) + else if (tno(in-1) .gt. tol) then + eskzb = eskzb+deskb + end if + eskz(ivxo(in),ipo(in)) = eskzb + eskz2(ivxo(in),ipo(in)) = eskzb + if (in .eq. istop(ib)) then + eskzb = eskzb+deskb + ib = ib+1 + end if +30 continue +c +c Analyze for beams. +c + do 20 iv = 1 , nv + do 20 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + numbms(ivx) = 0 + mapfb(1) = 0 + mapfb(2) = 0 + mapfb(3) = 0 + mapfb(4) = 0 +c +c First forced beams. +c + if (nfb(ivx) .gt. 0) then +c +c tglp2 is time from start of gulp to end of current bar. +c + nfbbar = 0 + do 80 ifb = 1 , nfb(ivx) + if (t1fb(ivx,ifb).gt.tglp2-tol) go to 81 + nfbbar = nfbbar+1 + numbms(ivx) = numbms(ivx)+1 + numnew = numbms(ivx) +c +c Times from beginning of bar +c + itbb1 = int(t1fb(ivx,ifb)-tglp1+tol) + itbb2 = int(t2fb(ivx,ifb)-tglp1+tol) + do 83 ip = 1 , nn(ivx) + if (int(to(ipl2(ivx,ip))+tol) .eq. itbb1) then + nip1fb = ip + do 84 ip1 = ip , nn(ivx) + inip1 = ipl2(ivx,ip1) + if (abs(to(inip1)+tnote(inip1)-itbb2) .lt. tol) then + nip2fb = ip1 + itbb3 = itbb2-2 + go to 85 + end if +84 continue + end if +83 continue + print* + print*,'Timing problem w/ forced beams' + write(15,'(/a)')'Timing problem w/ forced beams' +85 continue + call logbeam(numnew,nip1fb,nip2fb) +c +c Set up mapfb for forced beam just logged: +c + ib1 = itbb1/2 + ib2 = itbb3/2 + ibrep = lenbar/ibmrep/2 + do 86 irep = 1 , ibmrep + ib1now = max(0,ib1-(irep-1)*ibrep) + ib2now = min(irep*ibrep-1,ib2-(irep-1)*ibrep) + mapnow = 0 + do 87 ib = ib1now , ib2now + mapnow = ibset(mapnow,ib) +87 continue + mapfb(irep) = ior(mapfb(irep),mapnow) +86 continue +c +c Since we are cycling thru forced beams, for those that start with a rest and +c have height & slope adjustments, move adjustments to next note. +c 060924: Copy to ALL later notes in fb, in case there's more than 1 rest at +c start of beam +c + if (btest(irest(ivx,nip1fb),0)) then + do 88 kp = nip1fb+1 , nip2fb + call setbits(ipl(ivx,kp),6,11, + * igetbits(ipl(ivx,nip1fb),6,11)) + call setbits(ipl(ivx,kp),6,17, + * igetbits(ipl(ivx,nip1fb),6,17)) + call setbits(islur(ivx,kp),2,27, + * igetbits(islur(ivx,nip1fb),2,27)) +88 continue + end if +80 continue +81 continue +c +c Slide down, reduce nfb(ivx). This lets us count up from 1 for each new bar. +c Remember, makeabar is called 1/bar, and it calls findbeam once per voice. +c + if (nfbbar .gt. 0) then + nfb(ivx) = nfb(ivx)-nfbbar + do 82 ifb = 1 , nfb(ivx) + t1fb(ivx,ifb) = t1fb(ivx,ifb+nfbbar) + t2fb(ivx,ifb) = t2fb(ivx,ifb+nfbbar) + ulfbq(ivx,ifb) = ulfbq(ivx,ifb+nfbbar) +82 continue + end if + end if + ifb = 0 +c +c Done with forced beam masks for this bar and voice. Now get normal beams. +c + call findbeam(ibmrep,numbms,mapfb) +20 continue + return + end + subroutine make2bar(ninow,tglp1,tstart,cwrest,squez, + * istop,numbms,istart,clefq) + parameter (nm=24,mv=24576) + common /comlast/ islast,usevshrink + logical islast,usevshrink + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + common /comipl2/ ipl2(nm,200) + character*10 figq + character*1 ulq,sepsymq,sq,chax + logical beamon,firstgulp,figbass,figchk,isfig,bar1syst,isbjmp, + * isbj2 + common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 + common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), + * fullsize(nm),ivxfig2,ivvfig(2,74) + common /combeam/ ibmtyp + common /comask/ bar1syst,fixednew,scaldold, + * wheadpt,fbar,poenom + common /comas1/ naskb,task(40),wask(40),elask(40) + common /comas2/ nasksys,wasksys(800),elasksys(800) + common /comhead/ ihdht,lower,headrq,lowerq,ihdvrt + common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, + * tautofb,autofbon,t1autofb + common /comsln/ is1n1,is2n1,irzbnd,isnx + common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, + * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, + * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, + * graspace(37), + * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), + * naccg(74),voltxtq(6),litq(83) + logical upg,slurg,slashg,issig,rpndot,autofbon + character*128 litq + common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), + * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) + integer istart(80),istop(80),iaskb(nm),numbms(nm), + * nornb(nm),ihornb(nm,24),lcwr(nm),ibmcnt1(nm),ifig(2) + character*1 ulfbq,udqq,clefq(nm),slurudq,udq + character*8 noteq + character*79 cwrq(nm),notexq,inameq + character*20 voltxtq + common /comoct/ noctup + character*80 soutq,headrq,lowerq + common /comnsp/ space(80),nb,prevtn(nm), + * flgndv(nm),flgndb,eskgnd,ptsgnd,ivmxsav(nm,2),nvmxsav(nm) + logical bspend,lower,cwrest(nm),vxtup, + * isgrace,isclef,nofirst,iscln,isdot,isflag, + * isacc,isfirst,flgndb,btest,stemup,upslur, + * isgaft,isarp,isrshft,isaccs,iscacc, + * lowdot,flipend,iscwr,isdotted,beamon1(nm) + real*4 ptgr(37),ptclef(nm),ptsndg(nm),eskndg(nm),tstart(80), + * squez(80) + logical cwrferm,drawbm + common /comcwrf/ cwrferm(nm) + common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), + * mtupv(nm,9),nxtinbm(nm), + * islope(nm),xelsk(24),eloff(nm,9), + * nssb(nm),issb(nm),lev1ssb(nm,20) + common /comdraw/ drawbm(nm) + common /comstart/ facmtr + common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, + * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, + * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, + * rtshfac +c +c Factors for grace note, clef spacing. (fraction of wheadpt) +c In 1.04, moved to block data subprogram +c + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, + * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, + * lnam(nm),inameq(nm) + common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) + common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), + * xinsnow,lowdot + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + common /strtmid/ ihnum3,flipend(nm),ixrest(nm) + common /comtol/ tol + common /comignorenats/ mbrhgt,newmbrhgt,ignorenats + logical ignorenats,newmbrhgt + integer*2 mmidi,iinsiv + logical restpend,relacc,notmain,twoline,ismidi,crdacc,fontslur + * ,WrotePsslurDefaults + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + logical slmon,dbltie + common /comslm/ levson(0:nm),levsoff(0:nm),imidso(0:nm), + * naccbl(0:nm),laccbl(0:nm,10),jaccbl(0:nm,10),nusebl, + * slmon(0:nm),dbltie + common /comevent/ miditime,lasttime + logical kbdrests + common /comkbdrests/ levbotr(8),levtopr(8),kbdrests + logical secondgrace + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans + common /commidisig/ midisig +c 130316 + common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) + * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) + common /comclefrests/ centrests + logical centrests + common /xjbeambrests/ nbrests + common /comc8flag/ c8flag(nm) + logical c8flag + common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) + character*4 ivxq + logical rename + common /comshort/ shortfrac,codafrac,ishort,mbrsum,nmbr,nocodabn, + * poefa + real*4 poefa(125) + logical nocodabn + nbrests = 0 +c +c Set up main ib loop within which a block (notes group) is written +c + do 25 iv = 1 , nv + do 25 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + ibmcnt(ivx) = 1 + ibmcnt1(ivx) = 1 + beamon(ivx) = .false. + beamon1(ivx) = .false. + nornb(ivx) = 0 + iaskb(ivx) = 1 + vxtup(ivx) = .false. + drawbm(ivx) = .true. +25 continue + naskb = 0 + ifig(1) = 1 + ifig(2) = 1 + ixtup = 0 + bspend = .false. + iscwr = .false. + rpndot = .false. + do 16 ib = 1 , nb +c +c Check for segno +c + if (btest(iornq(1,ipo(istart(ib))),4) .and. + * ivxo(istart(ib)).eq.1) then + if (noffseg.le.-10) then + write(noteq(1:5),'(1H{,i3,1H})')noffseg + lnoten = 5 + else if (noffseg.lt.0 .or. noffseg.ge.10) then + write(noteq(1:4),'(1H{,i2,1H})')noffseg + lnoten = 4 + else + write(noteq(1:1),'(i1)')noffseg + lnoten = 1 + end if + notexq = sq//'znotes'//sq//'segnoo'//noteq(1:lnoten)//'9' + lnote = 15+lnoten + do 130 iv = 2 , nv + if (lnote .gt. 60) then + if (islast) write(11,'(a)')notexq(1:lnote)//'%' + notexq = sepsymq(iv-1)//sq//'segnoo' + * //noteq(1:lnoten)//'9' + lnote = lnoten+9 + else + notexq = notexq(1:lnote)//sepsymq(iv-1)//sq//'segnoo' + * //noteq(1:lnoten)//'9' + lnote = lnote+lnoten+9 + end if +130 continue + if (islast) write(11,'(a)')notexq(1:lnote)//sq//'en' + lnote = 0 + end if +c +c Check for new clefs +c + isclef = .false. + if (btest(islur(ivxo(istart(ib)),ipo(istart(ib))),15)) + * then +c +c In preceding line, fl32 gave wrong result for ... .gt.0 !!! +c + do 140 in = istart(ib) , istop(ib) + if (btest(islur(ivxo(in),ipo(in)),11)) then + call wsclef(ivxo(in),ninow, + * iand(ishft(islur(ivxo(in),ipo(in)),-12),7)) +c +c If clefq = '8', must add eg \settrebleclefsymbol3\treblelowoct% +c +c if (clefq(ivxo(in)) .eq. '8') then + if (btest(ipl(ivxo(in),ipo(in)),2)) then +c +c Find instrument number for voice ivso(in) +c + iv1 = 1 + do 1111 iinst = 1 , ninow + if (ivxo(in) .lt. iv1+nspern(iinst)) go to 2222 + iv1 = iv1+nspern(iinst) +1111 continue + print* + print*,'Should not be here in make2bar!' + call stop1() +2222 continue + if (iinst .le. 9) then + write(11,'(a20,i1,a)')sq//'settrebleclefsymbol', + * iinst,sq//'treblelowoct%' + else + write(11,'(a20,i2,a)')sq//'settrebleclefsymbol', + * iinst,sq//'treblelowoct%' + end if + c8flag(ivxo(in)) = .true. + end if + end if +140 continue + if (islast) write(11,'(a)')sq//'pmxnewclefs' + isclef = .true. + end if +c +c Start a notes group. We're just gonna define every one using pnotes{n}, +c where \def\pnotes#1{\vnotes#1\elemskip} +c + soutq = sq//'pnotes{' + eonsqz = squez(ib)*feon(space(ib)/squez(ib)) + if (eonsqz .gt. 9.995) then + write(soutq(9:12),'(f4.1)')eonsqz + else if (eonsqz .gt. 0.995) then + write(soutq(9:12),'(f4.2)')eonsqz + else if (eonsqz .gt. 0.095) then + soutq = soutq(1:8)//'0.' + write(soutq(11:12),'(i2)')nint(100*eonsqz) + else + soutq = soutq(1:8)//'0.0' + write(soutq(12:12),'(i1)')nint(100*eonsqz) + end if + soutq = soutq(1:12)//'}' + lsout = 13 +c +c Check whole block, flag accidentals etc that are too close, one per *time*. +c Note about bar starts and after rpt's/boublebars: There is an afterruleskip +c (fbar*wheadpt) following, but rpts seem to occupy some of that gap, so +c (dotsfac*wheadpt) is presumed to be filled up. +c + in = istart(ib)-1 + itrpt = -1 + itsig = -1 +c +c Begin big manual loop over notes in this block; ends at 112 +c +111 in = in+1 + if (in .gt. istop(ib)) go to 112 + ip = ipo(in) + ivx = ivxo(in) + if (ivx .le. nv) then + iv = ivx + else + do 128 iv = 1 , nv + if (nvmx(iv) .eq. 2 .and. ivmx(iv,2).eq. ivx) go to 129 +128 continue + print*,'Trouble finding iv!, ivx,nvmx,ivmx:',ivx,nvmx(1),nvmx(2) + print*,ivmx(1,1),ivmx(1,2),ivmx(2,1),ivmx(2,2) + stop + end if +129 continue +c +c Call precrd here so we know how much space to add for accid's in chords +c After calling precrd, icashft>0 means there is a shifted chordal accid (incl. +c main note. +c +c To call precrd, need up-downness, so must track if in beam. +c +c Deal w/ staff-jumping beams later +c if ((numbms(ivx).gt.0 .and. ibmcnt(ivx).le.numbms(ivx) +c * .and. ibm1(ivx,ibmcnt(ivx)) .eq. ip) .or. +c * btest(nacc(ivx,ip),21)) then +c if (.not.btest(irest(ivx,ip),24)) then + if ((numbms(ivx).gt.0 .and. ibmcnt1(ivx).le.numbms(ivx) + * .and. ibm1(ivx,ibmcnt1(ivx)) .eq. ip)) then + beamon1(ivx)=.true. + end if + icashft = 0 + if (btest(ipl(ivx,ip),10)) then +c +c There is a chord on this note. Need up-down-ness in precrd to auto shift for 2nds. +c + if (beamon1(ivx)) then + call precrd(ivx,ip,nolev(ivx,ip),nacc(ivx,ip), + * ipl(ivx,ip),irest(ivx,ip),ulq(ivx,ibmcnt1(ivx)), + * .false.,icashft) + else + call precrd(ivx,ip,nolev(ivx,ip),nacc(ivx,ip), + * ipl(ivx,ip),irest(ivx,ip),udqq(nolev(ivx,ip), + * ncmid(iv,ip),islur(ivx,ip),nvmx(iv),ivx,nv), + * .false.,icashft) + end if + end if +c +c Turn beam off? +c + if (beamon1(ivx) .and. ibm2(ivx,ibmcnt1(ivx)).eq.ip) then + beamon1(ivx) = .false. + ibmcnt1(ivx) = ibmcnt1(ivx)+1 + end if +c +c Remember, rpts & internal sigs can only come at start of (internal) block +c + isacc = iand(nacc(ivx,ip),3).gt.0 + * .and. .not.btest(nacc(ivx,ip),17) + * .and. .not.btest(ipl(ivx,ip),10) +c +c i.e., do not set for chord. Now check for "(" as ornament on main note, +c +c!!! Need to do this for chord notes too. Maybe in chkarp? +c + isaccs = isacc .or. btest(iornq(ivx,ip),0) +c +c 5/15/02 Add check for ) ornament of prior note. +c 5/16 Nope...fails when grace intervenes. +c if (ip .gt. 1) then +c isaccs = isaccs .or. btest(iornq(ivx,ip-1),13) +c end if + isarp = btest(iornq(ivx,ip),27) + iscacc = .false. + if (btest(ipl(ivx,ip),10)) then +c +c There is a chord here; check for arpeggios and accidentals. Note accid shifts are +c not of concern here, only whether there's an accid, whick causes iscacc=.true. +c + iscacc = igetbits(nacc(ivx,ip),3,0).gt.0 .and. + * .not.btest(nacc(ivx,ip),17) + call chkarp(ncrd,icrdat,ivx,ip,iscacc,isarp) + end if +c +c When we get motivated, will do spacing for arpeggios here. +c + if (ivx.eq.1 .and. iand(islur(ivx,ip),96).gt.0) + * itrpt = nint(to(in)) + issig = btest(ipl(ivx,ip),28) + if (ivx.eq.1 .and. issig) itsig = nint(to(in)) + isgrace = btest(islur(ivx,ip),4) .and. + * .not.btest(ipl(ivx,ip),29) .and. .not.btest(ipl(ivx,ip),31) + isgaft = .false. + if (ip .gt. 1) then + xnd = tnote(ipl2(ivx,ip-1)) + isgaft = btest(ipl(ivx,ip-1),29) .or. btest(ipl(ivx,ip-1),31) + isgrace = isgrace .or. isgaft + end if + iscln = isclef .and. btest(islur(ivx,ip),11) +c +c Is prev. note non-beamed, up-stemmed, & flagged? Recall if ip>1, have nd +c + isflag = ip.gt.1 .and. xnd.gt.tol .and. xnd.lt.16.-tol + if (isflag) + * isflag = .not.btest(irest(ivx,ip-1),0) + * .and. udqq(nolev(ivx,ip-1), + * ncmid(iv,ip-1),islur(ivx,ip-1),nvmx(iv),ivx,nv).eq.'u' + if (isflag) then + do 116 ibmchk = 1 , numbms(ivx) + if (ip-1 .lt. ibm1(ivx,ibmchk)) then + go to 117 +c +c Add check for non-beamed xtuplets. May be problem with stem direction. +c + else if (ip-1.le.ibm2(ivx,ibmchk) .and. + * .not.btest(islur(ivx,ibm1(ivx,ibmchk)),18)) then + isflag = .false. + go to 117 + end if +116 continue + end if +117 continue +c +c If isflag, then won't need to check for dot on prev. note. +c +c 5/16/02 ??? Try using this for ) ornament. +c + isflag = isflag .or. btest(iornq(ivx,ip-1),13) + isdot = ip.gt.1 + if (isdot) isdot = isdotted(nodur,ivx,ip-1) + isrshft = ip .gt. 1 + if (isrshft) isrshft = btest(irest(ivx,ip-1),20) + if (.not.(isaccs.or.isgrace.or.iscln.or.isflag.or.isrshft.or. + * isdot.or.btest(iornq(ivx,ip),26).or. + * btest(irest(ivx,ip),21).or.isarp.or. + * btest(irest(ivx,ip),27).or.iscacc)) go to 111 +c +c Here is an accid,grace,clef,flag,rtshft,dot,udsp,arpeg,left-shift. +c Compute pts, the total occupied space including prior notehead. +c +c 130324 +c wheadpt1 = wheadpt*fullsize(iv) + wheadpt1 = wheadpt*fullsize(instno(iv)) + pts = wheadpt1 +c +c Set up for possible cautionary accidental here +c + if (isaccs .or. iscacc) then + if (.not.btest(iornq(ivx,ip),31)) then + taccfac = accfac + else + taccfac = 1.4*accfac ! cautionary accidental + end if + end if + if (isgrace) then + secondgrace = .false. + do 122 ig = 1 , ngrace + if (.not. isgaft) then + if (ipg(ig).eq.ip .and. ivg(ig).eq.ivx) go to 123 + else if (ip .gt. 1) then + if (ipg(ig).eq.ip-1 .and. ivg(ig).eq.ivx) go to 123 + end if +122 continue + print*,'Problem finding grace index in makeabar' + stop +123 continue +c +c wgr = distance to backspace (in headwidths), less main acc. +c ptgr = same in pts,+ main acc. Not used for after-grace. Distance to backspace. +c spgr = total space needed (w/o main acc). +c Also, spgr is same for b4 or after, but xb4fac-space will be in diff. place. +c + if (nng(ig) .eq. 1) then + wgr = grafac + if (multg(ig) .eq. 0) wgr = wgr-.4 + else + wgr = nng(ig)*emgfac + do 126 ing = 2 , nng(ig) + if (naccg(ngstrt(ig)-1+ing) .gt. 0) wgr = wgr+acgfac +126 continue + end if + if (graspace(ig) .gt. 0.) then +c +c User-defined space before grace +c + wgr = wgr+graspace(ig) + end if + ptgr(ig) = wgr*wheadpt1 + spgr = ptgr(ig)+xb4fac*wheadpt1 +c +c!!! May need to mod for chord accid's +c + if (isaccs .or. iscacc) ptgr(ig) = ptgr(ig) + taccfac*wheadpt1 + if (naccg(ngstrt(ig)) .gt. 0) spgr = spgr+wheadpt1*agc1fac + pts = pts+spgr +c +c Special check for after-grace on ip-1 and normal on ip. Must go back thru +c loop again for the normal grace. +c + if (isgaft .and. ig.lt.ngrace .and. .not.secondgrace) then + if (ipg(ig+1).eq.ip) then + secondgrace = .true. + ig = ig+1 + go to 123 + end if + end if + end if + if (iscln) then + pts = pts+clefac*wheadpt1 +c +c How far to backspace when printing the clef +c + ptclef(ivx) = 0. +c +c!!! May need to mod for chord accid's +c + if (isaccs .or. iscacc) + * ptclef(ivx) = ptclef(ivx)+taccfac*wheadpt1 + if (isgrace) ptclef(ivx) = ptclef(ivx)+spgr + end if + if (isrshft) then + pts = pts+rtshfac*wheadpt1 + else if (isflag) then + pts = pts+flagfac*wheadpt1 + else if (isdot) then + pts = pts+dotfac*wheadpt1 + end if + if (abs(to(in)-itrpt) .lt. tol) then +c +c Repeat, need a little extra space +c + pts = pts+dotsfac*wheadpt1 + end if + if (isarp) then + pts = pts+arpfac*wheadpt1 + end if +c +c Add in padding space +c + pts = pts+xspfac*wheadpt1 +c +c Now done with all items needing space except accidentals, +c accidental shifts, and left-notehead-shifts, and will later +c subtract a notehead if at start of bar. +c +c Get available space in elemskips (esk) +c + isfirst = ip.eq.1 .or. abs(to(in)-itrpt).lt.tol .or. + * abs(to(in)-itsig).lt.tol + if (isfirst) then +c +c At start of bar or after repeat sign or new signature +c + if (abs(to(in)-itsig).lt.tol) then + esk = 0. + else + esk = fbar + end if + else +c +c Not 1st note of bar +c + esk = eskz(ivx,ip)-eskz(ivx,ip-1) + end if + if (isgrace) then +c +c Since graces can be very long, cannot assume no interference if prior +c note uses >1 noteskip. So must get elsk's back to prior note, whether or +c not it used only one noteskip. +c <>???? +c +c 10/8/05 Kluge to not zero out esk if in xtup +c + esksav = esk + if ((ip.le.2 .or. nodur(ivx,max(1,ip-2)).gt.0) .and. +c * to(in).ne.itsig) + * abs(to(in)-itsig).gt.tol) + * call eskb4(ip,ivx,in,ib,space,tstart,fbar,itrpt,esk) + if (abs(esk) .lt. tol) esk = esksav + end if +c +c Done getting available elemskips. Remove headwidth if first. Must do here +c rather than earlier since check uses isfirst +c + if (isfirst) pts = pts-wheadpt1 +c +c Deal with accidental shifts and left-notehead shifts +c + if (btest(ipl(ivx,ip),10)) then +c +c In a chord +c + ptsl = 0. + if (btest(irest(ivx,ip),27)) ptsl = wheadpt1 + ptsadd = max(ptsl,icashft*.05*wheadpt1) +c +c Note: may have icashft=-20000 (if shftmin=-1000 in crdacc) but that's OK +c + else +c +c Not in a chord +c + ihshft = 0 + if (isaccs) then + ihshft = igetbits(nacc(ivx,ip),7,10) +c if (ihshft .ne. 0) ihshft = max(0,64-ihshft) + if (ihshft .ne. 0) ihshft = max(0,107-ihshft) + end if +c +c Check for left-shifted main note +c + if (btest(ipl(ivx,ip),8)) ihshft = max(20,ihshft) + ptsadd = ihshft*.05*wheadpt1 + end if + pts = pts+ptsadd + if (isgrace) ptgr(ig) = ptgr(ig)+ptsadd + if (iscln) ptclef(ivx) = ptclef(ivx)+ptsadd +c +c Left-shifted, non-chord note before? +c + if (ip .gt. 1) then + if (.not.btest(ipl(ivx,ip-1),10) .and. + * btest(irest(ivx,ip-1),27)) pts = pts-wheadpt1 + end if +c +c Try big accidentals first +c + ptbneed = pts + if (isaccs .or. iscacc) then + ptbneed = ptbneed+wheadpt1*bacfac + end if + if (poefa(iline)*poenom*esk .gt. ptbneed) then +c +c Set flag for big accidental +c + if (isacc) nacc(ivx,ip) = ibset(nacc(ivx,ip),3) + go to 99 + end if +c +c Cannot use big, so try small +c + ptsneed = pts + if (isaccs .or. iscacc) then + ptsneed = ptsneed+taccfac*wheadpt1 + end if + if (poefa(iline)*poenom*esk .lt. ptsneed) then + call addask(to(in),ptsneed,poefa(iline)*esk, + * fixednew,scaldold,0.,poefa(iline),.false.) + end if +99 continue + if (btest(iornq(ivx,ip),26)) then +c +c User-defined space. Warning, "zero" may change value in addask! +c + zero = 0. + call addask(to(in),ptsneed,zero, + * fixednew,scaldold,tglp1,1.,.true.) + end if +c +c End of big manual loop over "in" for accidental checking +c + go to 111 +112 continue +c +c End of ask analysis for this block. +c +c Adjust eskz if there are added spaces. Corrects length of xtup brackets. +c + if (naskb.gt.0) call adjusteskz(ib,istart,poenom) +c +c Check for internal repeat or sig change. +c + if (ib.gt.1 .and. ivxo(istart(ib)).eq.1) then + iirpt = iand(islur(1,ipo(istart(ib))),67109216) + if (iirpt .gt. 0) then +c +c Internal repeat +c + if (islast) write(11,'(a)')sq//'advance'//sq//'barno-1%' + if (iirpt .eq. 96) then + if (islast) write(11,'(a)')sq//'leftrightrepeat' + fixednew = fixednew+lrrptfac*wheadpt + else if (btest(iirpt,5)) then + if (islast) write(11,'(a)')sq//'leftrepeat' + fixednew = fixednew+rptfac*wheadpt + else if (btest(iirpt,6)) then + if (islast) write(11,'(a)')sq//'rightrepeat' + fixednew = fixednew+rptfac*wheadpt + else if (btest(iirpt,8)) then + if (islast) write(11,'(a)')sq//'doublebar' + else + print*,'Unexpected mid-bar repeat command R*' + call stop1() + end if + scaldold = scaldold-fbar + end if + if (btest(ipl(1,ipo(istart(ib))),28)) then +c +c Internal signature change. +c + notexq = sq//'generalsignature{' + lnote = 18 + if (isig .lt. 0) then + notexq = notexq(1:lnote)//'-' + lnote = lnote+1 + end if + if (islast) write(11,'(a)')notexq(1:lnote) + * //chax(48+abs(isig))//'}%' + if (islast .and. ignorenats) + * write(11,'(a)')sq//'ignorenats%' + if (islast) write(11,'(a)')sq//'zchangecontext'//sq + * //'addspace{-.5'//sq//'afterruleskip}%' + lnote = 0 + end if + end if + flgndb = .false. +c +c Done with start-of-block stuff. Begin main loop over voices. +c + do 11 iv = 1 , nv + do 11 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + icm = midchan(iv,kv) +c +c A rather klugey way to set flag for figure in this voice +c Must always check figbass before figchk. +c + if (figbass) then + ivf = 0 + if (ivx .eq. 1) then + ivf = 1 + else if (ivx .eq. ivxfig2) then + ivf = 2 + end if + if (ivf.gt.0) figchk(ivf) = nfigs(ivf).gt.0 + end if + if (ivx .gt. 1) then + if (ivx .le. nv) then + call addstr(sepsymq(iv-1),1,soutq,lsout) + else + call addstr(sq//'nextvoice',10,soutq,lsout) + end if + end if + if (ihdht.gt.0 .and. ivx.eq.nv) then +c +c Write header. First adjust height if needed to miss barno. +c + if (bar1syst .and. iline.ne.1) then + ihdht = 15+irzbnd+isnx + end if +c +c Add user-defined vertical shift +c + ihdht = ihdht+ihdvrt + lchead = lenstr(headrq,80) + notexq = sq//'zcharnote{' + write(notexq(12:13),'(i2)')ihdht + notexq = notexq(1:13)//'}{'//sq//'bigfont'//sq//'kern-30pt ' + call addstr(notexq,34,soutq,lsout) + call addstr(headrq(1:lchead)//'}',1+lchead,soutq,lsout) + ihdht = 0 + end if + if (lower .and. ivx.eq.nv) then + lclow = lenstr(lowerq,80) + call addstr(sq//'zcharnote{-6}{'// + * sq//'tempo'//sq//'kern-10pt '// + * lowerq(1:lclow)//'}',33+lclow,soutq,lsout) + lower=.false. + end if + tnow = tstart(ib) + nofirst = .true. +c +c Done setting up voice ivx for start of block ib. Loop over notes in voice. +c + do 10 jn = istart(ib), istop(ib) + if (ivxo(jn) .ne. ivx) go to 10 + ip = ipo(jn) +c +c May have problem with not initializing islhgt, so do it here +c + islhgt = 0 +c + if (nofirst) then + noctup = 0 + if (ncmid(iv,ip) .eq. 23) noctup = -2 + nofirst = .false. + end if +c +c Check for internal floating figure (before last note of group). +c +12 if (figbass) then + if (ivx.eq.1 .or. ivx.eq.ivxfig2) then + ivf = 1 + if (ivx .gt. 1) ivf = 2 + if (figchk(ivf) .and. itfig(ivf,ifig(ivf)).lt.tnow-tol) + * then +c +c Bypassed figure location. Backup, place fig, return. +c + offnsk = (tnow-itfig(ivf,ifig(ivf)))/space(ib) + call putfig(ivf,ifig(ivf),offnsk,figchk(ivf),soutq, + * lsout) + go to 12 + end if + end if + end if +c +c Put in \sk if needed +c + if (to(jn) .gt. tnow+tol) then + call addstr(sq//'sk',3,soutq,lsout) + tnow = tnow+space(ib) + go to 12 + end if +c +c Check for user-defined shifts +c + if (btest(irest(ivx,ip),15).or.btest(irest(ivx,ip),16)) + * call putshft(ivx,.true.,soutq,lsout) +21 if (iaskb(ivx).le.naskb .and. + * tnow.gt.task(iaskb(ivx))-tol) then + if (task(iaskb(ivx)) .gt. tstart(ib)-tol) then +c +c Insert placeholder for accidental skip +c + call addstr(sq//'ask ',9,soutq,lsout) + nasksys = nasksys+1 + wasksys(nasksys) = wask(iaskb(ivx)) + if (wask(iaskb(ivx)) .gt. 0.) then + elasksys(nasksys) = elask(iaskb(ivx)) + else +c +c This is a signal to permit negative ask's. Should really have elask>=0. +c + elasksys(nasksys) = -elask(iaskb(ivx)) + end if + end if +c +c May have skipped some task's in earlier blocks (due to void voice) +c + iaskb(ivx) = iaskb(ivx)+1 + go to 21 + end if + if (figbass) then + if (ivx.eq.1 .or. ivx.eq.ivxfig2) then + ivf = 1 + if (ivx .gt. 1) ivf = 2 + if (figchk(ivf) .and. + * abs(itfig(ivf,ifig(ivf))-tnow).lt.tol) then +c +c Figure on a note. NB: later special check for late figs. +c + call putfig(ivf,ifig(ivf),0.,figchk(ivf),soutq,lsout) + end if + end if + end if +c +c Check for new clef here. +c + if (isclef .and. btest(islur(ivx,ip),11)) then + if (ptclef(iv) .gt. 0.) then + notexq = sq//'off{-' + if (ptclef(iv) .lt. 9.95) then + write(notexq(7:9),'(f3.1)')ptclef(iv) + lnote = 9 + else + write(notexq(7:10),'(f4.1)')ptclef(iv) + lnote = 10 + end if + notexq = notexq(1:lnote)//'pt}' + lnote = lnote+3 + call addstr(notexq,lnote,soutq,lsout) + end if + call clefsym(islur(iv,ip),notexq,lnote,nclef) +c +c 151220 If clef is treblelowoct, change '0' in pos'n 9 to '8' +c + if (btest(ipl(ivx,ip),2)) notexq = + * notexq(1:8)//'8'//notexq(10:10) + call addstr(notexq,lnote,soutq,lsout) + if (ptclef(iv) .gt. 0.) then + notexq = sq//'off{' + if (ptclef(iv) .lt. 9.95) then + write(notexq(6:8),'(f3.1)')ptclef(iv) + lnote = 8 + else + write(notexq(6:9),'(f4.1)')ptclef(iv) + lnote = 9 + end if + notexq = notexq(1:lnote)//'pt}' + lnote = lnote+3 + call addstr(notexq,lnote,soutq,lsout) + end if + end if +c +c Checking for literal TeX string BEFORE starting beams!! +c + if (btest(islur(ivx,ip),16)) then + do 124 il = 1 , nlit + if (iplit(il).eq.ip .and. ivlit(il).eq.ivx) go to 125 +124 continue + print*,'Problem finding index for literal string' + call stop1() +125 continue +c +c Write a type 1 tex string. +c + if (lenlit(il) .lt. 71) then +c +c Add normally +c + call addstr(litq(il),lenlit(il),soutq,lsout) + else +c +c Longer than 71. Write souq, Write string, start new soutq. +c + if (islast) write(11,'(a)')soutq(1:lsout)//'%' + if (islast) write(11,'(a)')litq(il)(1:lenlit(il))//'%' + lsout = 0 + end if + end if +c +c Arpeggio on a main (non-chordal) note? +c + if (btest(iornq(ivx,ip),27)) then +c call putarp(tnow,iv,ip,nolev(ivx,ip),ncmid(iv,ip), + call putarp(tnow,ivx,ip,nolev(ivx,ip),ncmid(iv,ip), + * soutq,lsout) + end if +c +c See if a beam starts here +c + if ((numbms(ivx).gt.0 .and. ibmcnt(ivx).le.numbms(ivx) + * .and. ibm1(ivx,ibmcnt(ivx)) .eq. ip) .or. + * btest(nacc(ivx,ip),21)) then + if (.not.btest(irest(ivx,ip),24)) then +c +c Not a jump start +c + if (kbdrests .and. btest(irest(ivx,ip),0) .and. + * .not.btest(islur(ivx,ip),29).and. nvmx(iv).eq.2 .and. + * nolev(ivx,ip).le.50) + * call chkkbdrests(ip,iv,ivx,nn,islur,irest,nolev, + * ivmx,nib,nv,ibar,tnow,tol,nodur,2,levtopr,levbotr, + * mult,ipl) + call beamstrt(notexq,lnote,nornb,ihornb,space,squez,ib) +c +c Shift beam start if notehead was shifted +c + if (btest(ipl(ivx,ip),8)) then + call addstr(sq//'loff{',6,soutq,lsout) + else if (btest(ipl(ivx,ip),9)) then + call addstr(sq//'roff{',6,soutq,lsout) + end if + if (lnote .gt. 0) call addstr(notexq,lnote,soutq,lsout) + if (btest(ipl(ivx,ip),8) .or. + * btest(ipl(ivx,ip),9)) call addstr('}',1,soutq,lsout) + else +c +c Jump start. Set marker for second part of a jump beam. Note ivbj2 was set +c to 0 at end of first part of jump beam +c + ivbj2 = ivx +c +c Check for xtup since we bypassed beamstrt wherein vxtup is normally set +c + if (btest(irest(ivx,ip),28) .and. ixrest(ivx).ne.2) + * vxtup(ivx) = .true. +c +c Since beamstrt is not called, and drawbm is normally set there, need to set +c it here. This could cause problems if someone tries a staff-jumping, +c unbarred beam, which I'll deal with when it comes up. +c + drawbm(ivx) = .true. + end if + if (ixrest(ivx) .eq. 0) then + beamon(ivx) = .true. + bspend = .true. + if (.not.btest(irest(ivx,ip),24))bspend = .true. + end if + end if +c +c Setup for chords and possible slurs in chords +c + if (btest(ipl(ivx,ip),10)) then +c +c There is a chord on this note. Just rerun precrd. Klunky, but saves +c me from tracking down errors instroduced when I moved 1st call +c forward for accidental spacing analysis. +c + if (beamon(ivx)) then + call precrd(ivx,ip,nolev(ivx,ip),nacc(ivx,ip), + * ipl(ivx,ip),irest(ivx,ip),ulq(ivx,ibmcnt(ivx)), + * .true.,icashft) + else + call precrd(ivx,ip,nolev(ivx,ip),nacc(ivx,ip), + * ipl(ivx,ip),irest(ivx,ip),udqq(nolev(ivx,ip), + * ncmid(iv,ip),islur(ivx,ip),nvmx(iv),ivx,nv), + * .true.,icashft) + end if + end if +c +c Is there slur or grace activity? +c + isgrace = btest(islur(ivx,ip),4) + if (ip .gt. 1) isgrace = isgrace.or.btest(ipl(ivx,ip-1),31) +c +c isgrace if not 1st note in bar and previous note has Way-after grace. +c + if (btest(islur(ivx,ip),0) .or. isgrace) then + if (btest(islur(ivx,ip),0)) then + if (fontslur) then +c +c Call routine for non-postscript slurs +c + call doslur(nolev(ivx,ip),isdat1,isdat2,isdat3,nsdat, + * ip,iv,kv,nv,beamon(ivx),ncmid(iv,ip),soutq,lsout, + * ulq(ivx,ibmcnt(ivx)),islur(ivx,ip),ipl(ivx,ip), + * iornq(ivx,ip),islhgt,tnote(ipl2(ivx,ip)), + * nacc(ivx,ip)) + else +c +c Postscript slurs +c + call dopsslur(nolev(ivx,ip),isdat1,isdat2,isdat3, + * isdat4,nsdat, + * ip,iv,kv,nv,beamon(ivx),ncmid(iv,ip),soutq,lsout, + * ulq(ivx,ibmcnt(ivx)),islur(ivx,ip),ipl(ivx,ip), + * iornq(ivx,ip),islhgt,tnote(ipl2(ivx,ip)), + * nacc(ivx,ip)) + end if + end if + if (isgrace) then +c +c Grace note. +c + iphold = ip + isgrace = .false. + if (ip .gt. 1) isgrace = btest(ipl(ivx,ip-1),31) + if (isgrace) iphold = iphold-1 + isgrace = isgrace .or. (.not.btest(ipl(ivx,ip),31) + * .and..not.btest(ipl(ivx,ip),29)) +c +c Place grace now if (a) Way-after from prev note and ip>1 or (b) Pre-grace +c on current note. Do A-grace on current note, and W-grace at barend, later. +c + if (isgrace) then + call dograce(ivx,iphold,ptgr,soutq,lsout,ncmid(iv,ip), + * nacc(ivx,ip),ig,ipl(ivx,iphold),.false., + * beamon(ivx),nolev(ivx,ip),ncmid(iv,ip), + * islur(ivx,ip),nvmx(iv),nv,ibmcnt(ivx), +c 130324 +c * tnote(ipl2(ivx,ip)),ulq) + * tnote(ipl2(ivx,ip)),ulq,instno(iv)) + if (slurg(ig)) then +c +c Terminate slur started in dograce. Get direction of main note stem +c + if (.not.beamon(ivx)) then +c +c Separate note. Get stem direction. +c + stemup = udqq(nolev(ivx,ip),ncmid(iv,ip), + * islur(ivx,ip),nvmx(iv),ivx,nv) .eq. 'u' + else +c +c In a beam +c + stemup = ulq(ivx,ibmcnt(ivx)) .eq. 'u' + end if +c +c Stop the shift if whole note +c + stemup = stemup .or. + * tnote(ipl2(ivx,ip)).gt.63 + call endslur(stemup,.not.upg(ig),nolev(ivx,ip),0, + * ndxslur,0,ncmid(iv,ip),soutq,lsout,fontslur) + end if + end if + end if + if (btest(iornq(ivx,ip),24)) then +c +c Start slur on main note for After- or Way-after-grace. +c +c???? ndxslur = log2(33554431-listslur) + ndxslur = log2(16777215-listslur) +c +c Get note name +c + call notefq(noteq,lnoten,nolev(ivx,ip),ncmid(iv,ip)) +c +c Get slur direction +c + slurudq = 'u' + if (.not.beamon(ivx)) then + if (udqq(nolev(ivx,ip),ncmid(iv,ip),islur(ivx,ip), + * nvmx(iv),ivx,nv) .eq. 'u') slurudq = 'd' + else + if (ulq(ivx,ibmcnt(ivx)) .eq. 'u') slurudq = 'd' + end if +c +cc Replace ndxslur by 11-ndxslur when printing only. +c Replace ndxslur by 23-ndxslur when printing only. +c +c if (11-ndxslur .lt. 10) then + if (23-ndxslur .lt. 10) then +c notexq = sq//'islur'//slurudq//chax(59-ndxslur) + notexq = sq//'islur'//slurudq//chax(71-ndxslur) + * //noteq(1:lnoten) + call addstr(notexq,8+lnoten,soutq,lsout) + else if (23-ndxslur .lt. 20) then + notexq = sq//'islur'//slurudq//'{1'//chax(61-ndxslur) + * //'}'//noteq(1:lnoten) + call addstr(notexq,11+lnoten,soutq,lsout) + else + notexq = sq//'islur'//slurudq//'{2'//chax(51-ndxslur) + * //'}'//noteq(1:lnoten) + call addstr(notexq,11+lnoten,soutq,lsout) + end if +c call setbits(ipl(ivx,ip),4,23,ndxslur) + call setbits(ipl(ivx,ip),5,23,ndxslur) + if (btest(ipl(ivx,ip),31)) +c +c Starting slur on W-grace on THIS note. Record ndxslur. +c + * listslur = ibset(listslur,ndxslur) + end if + end if +c +c Process dynamic marks +c + if (btest(irest(ivx,ip),26)) then + call dodyn(ivx,ip, + * nolev(ivx,ip),ncmid(iv,ip),ipl(ivx,ip),islur(ivx,ip), + * irest(ivx,ip),nvmx(iv),nv,beamon(ivx),ihornb,nornb,ulq, + * ibmcnt(ivx),nodur(ivx,ip).ge.64,soutq,lsout) + end if +c +c Check for chord notes. Moved up from below, 10/27/96 so chord orns done 1st. +c + if (btest(ipl(ivx,ip),10)) then +c +c Need a duration to set type of note head +c +c Clumsy test, but vxtup is not set until main note is processed. +c + if (.not.(vxtup(ivx).or.btest(irest(ivx,ip),28))) then + nodu = nodur(ivx,ip) + else if (btest(irest(ivx,ip),2) .or. + * (ip.gt.1.and.btest(irest(ivx,ip-1),2))) then +c +c In a 2-note tremolo +c + if (btest(irest(ivx,ip),2)) then +c +c First note of tremolo, duration is on next note +c + nodu = nodur(ivx,ip+1) + else + nodu = nodur(ivx,ip) + end if + else if (iand(mult(ivx,ip),15)-8 .lt. 0) then + nodu = 32 + else + nodu = 16 + end if + call docrd(ivx,ip,nodu,ncmid(iv,ip),iv,tnow,soutq,lsout, + * ulq,ibmcnt(ivx),islur(ivx,ip),nvmx(iv),nv, + * beamon(ivx),nolev(ivx,ip),ihornb,nornb,stemlen, + * btest(nacc(ivx,ip),27),nacc(ivx,ip), + * irest) + end if +c +c Now that chords are done, add stuff to midi file +c + if (ismidi) call addmidi(icm, +c 130316 + * nolev(ivx,ip)+miditran(instno(iv)), + * iand(nacc(ivx,ip),7),midisig, + * tnote(ipl2(ivx,ip)), + * btest(irest(ivx,ip),0),.false.) +c +c Check for breath or caesura +c + if (btest(iornq(ivx,ip),28)) then + call putcb(ivx,ip,notexq,lnote) + call addstr(notexq,lnote,soutq,lsout) + end if +c +c Check for main-note ornaments. ')' on dotted notes go in with note, not here. +c Bits 0-13: (stmgx+Tupf._) ; 14: Down fermata, was F +c 15: Trill w/o "tr", was U , 16-18 edit. accid., 19-21 TBD +c +c isacc = iand(iornq(ivx,ip),4194287) .gt. 0 +c isacc = iand(iornq(ivx,ip),541065199) .gt. 0 + isacc = iand(iornq(ivx,ip),1614807023) .gt. 0 +c +c isacc=.true. if any ornament except segno +c + if (btest(iornq(ivx,ip),13) .and. nodur(ivx,ip).gt.0) then +c +c If ). is only ornament, bypass. If with others, temporarirly zero the bit. +c + if (2**log2(nodur(ivx,ip)) .ne. nodur(ivx,ip)) then + if (iand(iornq(ivx,ip),516079) .eq. 0) then +c +c ). is the only non-segno ornament +c + isacc = .false. + else +c +c There are other ornaments in addition +c + rpndot = .true. + iornq(ivx,ip) = ibclr(iornq(ivx,ip),13) + end if + end if + end if + if (isacc .and. .not.cwrferm(ivx)) then +c +c Check for centered whole-bar rest with fermata (bits 10 or 14). +c + if (iand(iornq(ivx,ip),17408).gt.0 + * .and. btest(irest(ivx,ip),0) .and. + * nodur(ivx,ip).eq.lenbar .and. + * .not.(firstgulp.and.ibar.eq.1.and.lenb0.gt.0)) then + cwrferm(ivx) = .true. + go to 30 + end if + call putorn(iornq(ivx,ip),nolev(ivx,ip),nolev(ivx,ip), + * nodur(ivx,ip),nornb,ulq,ibmcnt(ivx),ivx,ncmid(iv,ip), + * islur(ivx,ip),nvmx(iv),nv,ihornb,stemlen, + * notexq,lnote,ip,islhgt,beamon(ivx), + * btest(ipl(ivx,ip),10)) + call addstr(notexq,lnote,soutq,lsout) + end if + if (rpndot) then + iornq(ivx,ip) = ibset(iornq(ivx,ip),13) + rpndot = .false. + end if +30 continue +c +c Check for main note accidental +c + if (iand(nacc(ivx,ip),3).gt.0 .and. + * .not.btest(nacc(ivx,ip),17)) then + ihshft = igetbits(nacc(ivx,ip),7,10) + if (ihshft .ne. 0) ihshft=ihshft-107 + if (.not.btest(ipl(ivx,ip),10) .and. btest(ipl(ivx,ip),8)) +c +c Not a chord, and left-shifted main note, so left-shift accid +c + * ihshft = ihshft-20 + call doacc(ihshft,igetbits(nacc(ivx,ip),6,4), + * notexq,lnote,nacc(ivx,ip),nolev(ivx,ip),ncmid(iv,ip), + * btest(irest(ivx,ip),31)) + call addstr(notexq,lnote,soutq,lsout) + end if +c +c Lower dot for lower-voice notes. Conditions are: +c 1. Dotted time value +c 2. Lower voice of two +c 3. Note is on a line +c 4. Not a rest +c. 5. Flag (lowdot) is set to true +c 6. Not in an xtuplet +c + if (lowdot .and. nvmx(iv).eq.2 .and. ivx.le.nv + * .and. nodur(ivx,ip).ne.0) then + if (.not.btest(irest(ivx,ip),0) .and. + * 2**log2(nodur(ivx,ip)).ne.nodur(ivx,ip) .and. + * mod(nolev(ivx,ip)-ncmid(ivx,ip),2).eq.0) then + if (btest(irest(ivx,ip),19)) then +c +c Note already in movdot list. Drop by 2. +c + updot(ivx,ndotmv(ivx)+1) = + * updot(ivx,ndotmv(ivx)+1)-2. + else +c +c Not in list so just move it right now +c + call dotmov(-2.,0.,soutq,lsout, + * igetbits(islur(ivx,ip),1,3)) + end if + end if + end if +c +c Check for dotted main notes with moved dots. Chord notes done elsewhere. +c Added check rules out special chordal 2nds, but later must check +c substituted chord note for dot shift that now applies to main note. +c + if (btest(irest(ivx,ip),19)) then + ndotmv(ivx) = ndotmv(ivx)+1 + call dotmov(updot(ivx,ndotmv(ivx)),rtdot(ivx,ndotmv(ivx)), + * soutq,lsout,igetbits(islur(ivx,ip),1,3)) + end if +c +c Stemlength changes +c + if (btest(mult(ivx,ip),27)) then + dstemlen = igetbits(mult(ivx,ip),6,10)*.5-4. + call addstr(sq//'stdstemfalse',13,soutq,lsout) + stemshort = 4.66+.667*dstemlen + call addstr(sq//'stemlength{',12,soutq,lsout) + write(notexq,'(f4.1)')stemshort + call addstr(notexq(1:4)//'}',5,soutq,lsout) + else if (ip .gt. 1) then + if (btest(mult(ivx,ip-1),27)) +c +c Cancel shortening. Looks like it gets automatically restored if new inst. or +c new line, so no need to worry about affecting other lines +c + * call addstr(sq//'stemlength{4.66}',17,soutq,lsout) + end if +c +c Zero out slur-height marker for raising ornaments +c + islhgt = 0 +c +c Now start with spacing notes. Is a beam start pending? +c + if (bspend .and. + * ibm2(ivx,ibmcnt(ivx)).gt.ibm1(ivx,ibmcnt(ivx))) then + if (ixrest(ivx) .eq. 4) then +c +c Special path for single note at end of otherwise beamed xtup +c + ixrest(ivx) = 0 + else + if (kbdrests .and. btest(irest(ivx,ip),0) .and. + * .not.btest(islur(ivx,ip),29).and. nvmx(iv).eq.2 .and. + * nolev(ivx,ip).le.50) + * call chkkbdrests(ip,iv,ivx,nn,islur,irest,nolev, + * ivmx,nib,nv,ibar,tnow,tol,nodur,2,levtopr,levbotr, + * mult,ipl) + if (btest(islur(ivx,ip),29) + * .and.btest(irest(ivx,ip),24)) then + notexq = chax(92)//'sk' + lnote = 3 + else + call beamn1(notexq,lnote) +c if (isbjmp .and. + if (isbjmp .and. ivbj2.ne.0 .and. + * iand(mult(ivx,ip),15)-8 .gt. multbj1) then +c +c Need to increase multiplicity at the beam jump +c +c ibmcnt was increased by 1 at the end of first seg of jump beam!? +c Try adding e.g. \nbbu1 if needed to increase multiplicity. Add +c character in reverse order to start of notexq. +c + if (ivbj1 .lt. 9) then + notexq = char(48+ivbj1)//notexq(1:lnote) + lnote = lnote+1 + else + notexq = '{1'//char(38+ivbj1)//'}' + * //notexq(1:lnote) + lnote = lnote+4 + end if + notexq = 'bb'//ulq(ivbj1,ibmcnt(ivbj1)-1) + * //notexq(1:lnote) + lnote = lnote+3 + if (iand(15,mult(ivx,ip))-8 .eq. 3) then + notexq = 'b'//notexq(1:lnote) + lnote = lnote+1 + end if + notexq = sq//'n'//notexq(1:lnote) + lnote = lnote+2 + end if + end if + end if + bspend = .false. +c +c Is a beam ending? +c + else if (numbms(ivx).gt.0 .and. ibmcnt(ivx).le.numbms(ivx) + * .and. (ibm2(ivx,ibmcnt(ivx)).eq.ip .or. + * btest(nacc(ivx,ip),20))) then + if (bspend) then +c +c Must be a single-note ending of a jump-beam +c + bspend = .false. + end if + call beamend(notexq,lnote) + if (isbjmp .and. ivx.eq.ivbj1) then +c +c Jump beam segment is ending, check if multiplicity DECREASES +c + if (space(ib+1) .gt. space(ib)) then +c +c Decrease multiplicity 3-1, 3-2, or 2-1. Spaces are 2,4, or 8. +c + if (ivx .lt. 10) then + ivxq = char(ivx+48) + livx = 1 + else + ivxq = '{1'//char(ivx-10)//'}' + livx = 4 + end if +c Changes to get staffcrossall.pmx to work. Not clear how. +c if (nint(space(ib+1)-space(ib)) .eq. 6) then + if (space(ib+1).eq.8..and.space(ib).eq.2.) then + notexq = sq//'tbbb'//ulq(ivx,ibmcnt(ivx))// + * ivxq(1:livx)//sq//'tbb'// + * ulq(ivx,ibmcnt(ivx))//ivxq(1:livx)//notexq(1:lnote) + lnote = lnote+11+2*livx +c else if (nint(space(ib+1)-space(ib)) .eq. 4) then + else if (space(ib+1).eq.8..and.space(ib).eq.4.) then + notexq = sq//'tbb'//ulq(ivx,ibmcnt(ivx))// + * ivxq(1:livx)//notexq(1:lnote) + lnote = lnote+5+livx +c else + else if (space(ib+1).eq.4..and.space(ib).eq.2.) then + notexq = sq//'tbbb'//ulq(ivx,ibmcnt(ivx))// + * ivxq(1:livx)//notexq(1:lnote) + lnote = lnote+6+livx + end if + end if + end if + if (.not.btest(nacc(ivx,ip),20)) then + vxtup(ivx) = .false. + nornb(ivx) = 0 + ibmcnt(ivx) = ibmcnt(ivx)+1 + beamon(ivx) = .false. + end if +c +c Or if we're in the middle of a beam +c + else if (numbms(ivx).gt.0 .and. beamon(ivx)) then +c +c Added 130127 +c + if (kbdrests .and. btest(irest(ivx,ip),0) .and. + * .not.btest(islur(ivx,ip),29).and. nvmx(iv).eq.2 .and. + * nolev(ivx,ip).le.50) + * call chkkbdrests(ip,iv,ivx,nn,islur,irest,nolev, + * ivmx,nib,nv,ibar,tnow,tol,nodur,2,levtopr,levbotr, + * mult,ipl) + call beamid(notexq,lnote) +c +c Or whole-bar rest +c + else if (btest(irest(ivx,ip),0) + * .and. nodur(ivx,ip).eq.lenbar + * .and..not.(firstgulp.and.ibar.eq.1.and.lenb0.gt.0) + * .and..not.btest(irest(ivx,ip),25) + * .and..not.btest(islur(ivx,ip),29)) then +c +c Rule out pickup bar, blank rests, non-centered. Remember islur b19=> rp +c + cwrest(ivx) = .true. + iscwr = .true. + call notex(cwrq(ivx),lcwr(ivx)) + tnow = tnow+lenbar + go to 10 + else if (ixrest(ivx) .eq. 0) then +c +c Before writing note or rest, check for keyboard rest height adjustment. +c Conditions are 0. This is a non-blank rest +c 1. kbdrests = .true. +c 2. There are two voices on the staff +c 3. No user-def height adjustments have been applied (nolev<50) +c + if (kbdrests .and. btest(irest(ivx,ip),0) .and. + * .not.btest(islur(ivx,ip),29).and. nvmx(iv).eq.2 .and. + * nolev(ivx,ip).le.50) then + call chkkbdrests(ip,iv,ivx,nn,islur,irest,nolev, + * ivmx,nib,nv,ibar,tnow,tol,nodur,1,levtopr,levbotr, + * mult,ipl) + end if + if (btest(ipl(ivx,ip),4)) then +c +c Deal with single stem tremolo +c Get up-downness, borrowed from notex +c + if (udqq(nolev(ivx,ip),ncmid(iv,ip),islur(ivx,ip), + * nvmx(iv),ivx,nv).eq.'u') then + udq = 'u' + else + udq = 'l' + end if + multtrem = igetbits(ipl(ivx,ip),2,5)+1 + if (nodur(ivx,ip) .lt. 64) then + notexq = sq//'tr' + else + notexq = sq//'Tr' + end if + lnote = 3 + if (multtrem .eq. 2) then + notexq = notexq(1:3)//'r' + lnote = 4 + else if (multtrem .eq.3) then + notexq = notexq(1:3)//'rr' + lnote = 5 + end if +c +c Get a numerical pitch argument +c + lineno = nolev(ivx,ip)-ncmid(iv,ip)+4 + if (lineno .lt.0 .or. lineno .gt.9) then + write(noteq,'(a1,i2,a1)')'{',lineno,'}' + lnoten = 4 + else + noteq = char(lineno+48) + lnoten = 1 + end if + notexq = notexq(1:lnote)//'m'//udq//noteq(1:lnoten) + lnote = lnote+2+lnoten + call addstr(notexq,lnote,soutq,lsout) + end if +c +c Get code for a separate note or rest +c If nacc(ivx,ip)(30-31)=1 (dotted chordal 2nd including main note), +c pitch will be shifted +/-1 inside notex. +c + call notex(notexq,lnote) + end if +c +c Right offset? This may cause trouble +c + if (btest(ipl(ivx,ip),8)) then + call addstr(sq//'loff{',6,soutq,lsout) + else if (btest(ipl(ivx,ip),9)) then + call addstr(sq//'roff{',6,soutq,lsout) + end if + if (ixrest(ivx).eq.0 .and. lnote.gt. 0) then + call addstr(notexq,lnote,soutq,lsout) + end if + if (btest(ipl(ivx,ip),8) .or. + * btest(ipl(ivx,ip),9)) call addstr('}',1,soutq,lsout) +c +c Terminate user-defined offsets. Fix format +c + if (btest(irest(ivx,ip),15) .or. btest(irest(ivx,ip),17)) + * call putshft(ivx,.false.,soutq,lsout) +c +c Deal with After- and Way-after-graces. First, if end of bar, compute space +c needed since it wasn't done during general ask-checks. If extra space is +c rq'd, convert GW to GA. Therefore GW at end of bar never needs extra sp. +c But will still need to add extra space as hardspace. +c + if (ip.eq.nn(ivx) .and. (btest(ipl(ivx,ip),31).or. + * btest(ipl(ivx,ip),29))) then + do 77 ig = 1 , ngrace + if (ipg(ig).eq.ip .and. ivg(ig).eq.ivx) go to 78 +77 continue + print*,'Problem finding grace index at "do 77"' + call stop1() +78 continue +c +c Get elemskip to end of bar. WON'T WORK IF XTUPS !! +c + esk = 0. + do 40 iib = ib , nb + if (iib .eq. ib) then + itleft = nint(to(ipl2(ivx,ip))) + else + itleft = nint(tstart(ib)) + end if + if (iib .lt. nb) then + itright = nint(tstart(iib+1)) + else + itright = lenbar + end if + esk = esk+feon(space(ib))* + * (itright-itleft)/space(ib) +40 continue + ptsavail = poenom*esk-wheadpt + if (nng(ig) .eq. 1) then + wgr = grafac + else + wgr = nng(ig)*emgfac + do 41 ing = 1 , nng(ig) + if (naccg(ngstrt(ig)-1+ing) .gt. 0) wgr = wgr+acgfac +41 continue + end if + ptgr(ig) = wgr*wheadpt + ptsneed = (wgr+0.5)*wheadpt + ptsndg(ivx) = 0. + if (ptsavail .lt. ptsneed) then + ptsndg(ivx) = ptsneed + eskndg(ivx) = esk + if (btest(ipl(ivx,ip),31)) then +c +c Convert GW to GA +c + ipl(ivx,ip) = ibset(ibclr(ipl(ivx,ip),31),29) + end if + end if + end if +c +c Check for GA +c + if (btest(ipl(ivx,ip),29)) + * call dograce(ivx,ip,ptgr,soutq,lsout,ncmid(iv,ip), + * nacc(ivx,ip),ig,ipl(ivx,ip),.false., +c 130324 +c * .false.,0,0,0,0,0,0,0.,ulq) + * .false.,0,0,0,0,0,0,0.,ulq,instno(iv)) +c +c Update running time +c + tnow = tnow+space(ib) +10 continue +c +c Have finished last note in this voice and block +c + itendb = nint(to(istop(ib))+space(ib)) + if (figbass .and. ivx.eq.1 .or. ivx.eq.ivxfig2) then + ivf = 1 + if (ivx .gt. 1) ivf = 2 +17 if (figchk(ivf) .and. itfig(ivf,ifig(ivf)).lt.itendb) then +c +c There's at least one figure left. offnsk could be <0 +c + offnsk = (tnow-itfig(ivf,ifig(ivf)))/space(ib) + call putfig(ivf,ifig(ivf),offnsk,figchk(ivf),soutq,lsout) + go to 17 + end if + end if +c +c Check for flag, dot, or upstem on last note of bar. +c + if (ib .eq. nb) then + ip = ipo(ipl2(ivx,nn(ivx))) + flgndv(ivx) = 0. + if (abs(tnote(ipl2(ivx,ip))-space(ib)).lt.tol) then + if (space(ib) .lt. 16.-tol) then +c +c Note in last space, smaller than a quarter note. +c + if ((.not.btest(irest(ivx,ip),0) .and. + * udqq(nolev(ivx,ip),ncmid(iv,ip),islur(ivx,ip), + * nvmx(iv),ivx,nv).eq.'u') + * .or. isdotted(nodur,ivx,ip)) then +c +c Upstem non-rest, or dotted +c + if (numbms(ivx).gt.0 + * .and. ip.eq.ibm2(ivx,max(1,numbms(ivx))) + * .and. .not.isdotted(nodur,ivx,ip)) + * then +c +c In beam and not dotted, so use smaller space +c + flgndv(ivx) = upstmfac + else + flgndv(ivx) = flagfac + end if + end if + else +c +c Last space, nonflagged (no beam) only worry dot or up +c + if (isdotted(nodur,ivx,ip)) then + flgndv(ivx) = flagfac + else if (tnote(ipl2(ivx,ip)).lt.64 .and. + * udqq(nolev(ivx,ip),ncmid(iv,ip),islur(ivx,ip), + * nvmx(iv),ivx,nv).eq.'u') then +c +c Upstem on last note , non-flagged +c + flgndv(ivx) = upstmfac + end if + end if + end if +c +c Check for right-shifted chordal note +c + if (btest(irest(ivx,ip),20)) flgndv(ivx) = rtshfac + flgndb = flgndb .or. flgndv(ivx).gt.0. + if (ismidi) then +c +c For midi, set flags for accidentals on last note of bar. Assume they affect +c first note of next bar whether or not tied. +c Note has already been done, so next entry into addmidi is 1st in new bar. +c First do main note, then chord notes +c +c Gyrations needed to account for multi-bar tied full-bar notes? +cc Old old lbacc(icm) = iand(nacc(ivx,ip),7) +c New old if (lbacc(icm).eq.0) lbacc(icm) = iand(nacc(ivx,ip),7) +c + if (iand(nacc(ivx,ip),7) .gt. 0) then +c +c Explicit accidental on last main note in bar +c + do 55 kacc = 1 , naccbl(icm) + if (laccbl(icm,kacc) .eq. nolev(ivx,ip)) go to 56 +55 continue + naccbl(icm) = naccbl(icm)+1 + laccbl(icm,naccbl(icm)) = nolev(ivx,ip) + jaccbl(icm,naccbl(icm)) = iashft(iand(nacc(ivx,ip),7)) + end if +56 continue + if (btest(ipl(ivx,ip),10) .and. crdacc) then + do 57 icrd = icrd1 , icrd2 + iacc = igetbits(icrdat(icrd),3,20) + if (iacc .gt. 0) then +c +c Explicit accidental on chord note at end of bar +c + nolevc = igetbits(icrdat(icrd),7,12) + do 58 kacc = 1 , naccbl(icm) + if (laccbl(icm,kacc) .eq. nolevc) go to 59 +58 continue + naccbl(icm) = naccbl(icm)+1 + laccbl(icm,naccbl(icm)) = nolevc + jaccbl(icm,naccbl(icm)) = iashft(iacc) + end if +59 continue +57 continue + end if +c if (lbacc(icm).eq.0 .and. accb4(icm)) then + do 65 kacc = 1 , naccim(icm) +c +c If naccim(icm)>0, +c possible implicit accidental from earlier in the bar. Check for prior accid +c in this bar at relevant note levels, main and chord notes. Only act if no +c explicit action from just above. Assuming any accid on last note in bar, +c either explicit or implicit, has same effect on 1st note of next bar. +c + if (nolev(ivx,ip) .eq. laccim(icm,kacc)) go to 66 + if (btest(ipl(ivx,ip),10)) then + do 67 icrd = icrd1 , icrd2 + if (iand(ishft(icrdat(icrd),-12),127) .eq. + * laccim(icm,kacc)) go to 66 +67 continue + end if + go to 65 +66 continue +c +c So far we know there is a main or chord note at level laccim(icm,kacc). So +c it will get a bl-accid if it didn't just already get one. +c + do 68 macc = 1 , naccbl(icm) + if (laccbl(icm,macc) .eq. laccim(icm,kacc)) go to 65 +68 continue + naccbl(icm) = naccbl(icm)+1 + laccbl(icm,naccbl(icm)) = laccim(icm,kacc) + jaccbl(icm,naccbl(icm)) = jaccim(icm,kacc) +65 continue + end if + end if +11 continue +c +c Close out the notes group +c + call addstr(sq//'en',3,soutq,lsout) + if (islast.and.lsout .gt. 0) write(11,'(a)')soutq(1:lsout)//'%' +16 continue +c +c Check for way-after graces at end of bar. We could not link these to notes +c as in midbar since there is no note following grace! Also, set flag if +c hardspace is needed. Also, save nvmx, ivmx for use in space checks on reloop. +c + isgrace = .false. + do 75 iv = 1 , nv + nvmxsav(iv) = nvmx(iv) + do 75 kv = 1 , nvmx(iv) + ivmxsav(iv,kv) = ivmx(iv,kv) + ivx = ivmx(iv,kv) + ptsgnd = 0. + if ((btest(ipl(ivx,nn(ivx)),29).or.btest(ipl(ivx,nn(ivx)),31)) + * .and. ptsndg(ivx).gt.0.) then + flgndb = .true. + if (ptsndg(ivx) .gt. ptsgnd) then + ptsgnd = ptsndg(ivx) + eskgnd = eskndg(ivx) + end if + end if + if (btest(ipl(ivx,nn(ivx)),31)) then +c +c This voice has a way-after grace here at end of bar +c + if (.not.isgrace) then +c +c This is the first one, so set up the string +c + isgrace = .true. + ivlast = 1 + soutq = sq//'znotes' + lsout = 7 + end if + do 76 iiv = ivlast , iv-1 + call addstr(sepsymq(iiv),1,soutq,lsout) +76 continue + ivlast = iv +c +c No need to put in 'nextvoice', even if 2 lines/staff +c + call dograce(ivx,nn(ivx),ptgr,soutq,lsout,ncmid(iv,nn(ivx)), + * nacc(ivx,nn(ivx)),ig,ipl(ivx,nn(ivx)),.true., +c 130324 +c * .false.,0,0,0,0,0,0,0.,ulq) + * .false.,0,0,0,0,0,0,0.,ulq,instno(iv)) + end if +75 continue + if (isgrace) then + call addstr(sq//'en%',4,soutq,lsout) + if (islast .and. lsout .gt. 0) write(11,'(a)')soutq(1:lsout) + end if + lsout = 0 +c +c Write multibar rest. Assuming nv = 1 and do not worry about cwbrest +c This has to be the only use of atnextbar +c + if (ibar.eq.ibarmbr .and. islast) then + if (newmbrhgt) then + soutq = sq//'def'//sq//'mbrhgt{' + if (mbrhgt .le. -10) then + write(soutq(13:15),'(i3)')mbrhgt + lsout = 15 + else if (mbrhgt.ge.10.or.mbrhgt.le.-1) then + write(soutq(13:14),'(i2)')mbrhgt + lsout = 14 + else + soutq = soutq(1:12)//char(48+mbrhgt) + lsout = 13 + end if + soutq = soutq(1:lsout)//'}%' + write(11,'(a)')soutq(1:lsout+2) + newmbrhgt = .false. + end if + soutq = sq//'def'//sq//'atnextbar{'//sq//'znotes' + lsout = 22 + notexq = sq//'mbrest' + lnote = 7 + call istring(mbrest,noteq,len) + notexq = notexq(1:lnote)//noteq(1:len) + lnote = lnote+len + mtrspc = nint(xb4mbr) + xb4mbr = 0. + call istring(mtrspc,noteq,len) + notexq = notexq(1:lnote)//noteq(1:len)//'0' + lnote = lnote+len+1 + do 62 iv = 1 , nv + call addstr(notexq,lnote,soutq,lsout) + if (iv .lt. nv) call addstr(sepsymq(iv),1,soutq,lsout) +62 continue + call addstr(sq//'en}%',5,soutq,lsout) + write(11,'(a)')soutq(1:lsout) + lsout = 0 + if (ishort .gt. 0) then + mbrsum = mbrsum+mbrest + nmbr = nmbr+1 + end if + if (mbrest .gt. 1) then + ndig = int(alog10(mbrest-1+.01))+1 + write(11,'(a14,i'//chax(48+ndig)//',a1)') + * sq//'advance'//sq//'barno',mbrest-1,'%' + end if + else if (iscwr) then +c +c Centered whole-bar rests. Set flag to pass to pmxb at start of NEXT bar +c to check for new clef and add space by redefining \CenterBar +c + centrests = .true. + call addstr(sq//'def'//sq//'value{0}',13,soutq,lsout) + call addstr(sq//'def'//sq//'atnextbar{'//sq//'znotes',22, + * soutq,lsout) + do 60 iv = 1 , nv +c added + lnote = 0 +c + do 61 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + if (cwrest(ivx)) then + call addstr(sq//'CenterBar{',11,soutq,lsout) + if (.not.cwrferm(ivx)) then + if (lcwr(ivx).ge.11 .and. cwrq(ivx)(11:11).ne.'p') then +c +c Kluge to use new definitions for centered, stacked rests +c + if (cwrq(ivx)(2:10).eq.'liftpause' .or. + * cwrq(ivx)(2:10).eq.'liftPAuse') + * cwrq(ivx)(10:10) = 'c' + end if + call addstr(cwrq(ivx)(1:lcwr(ivx)),lcwr(ivx),soutq, + * lsout) + call addstr('}{-2}{'//sq//'value}',13,soutq,lsout) + else +c +c Fermata on centered rest. Will need to fix up level. +c 12/6/07 shift it left so it's centered over rest +c + notexq = notexq(1:lnote)//sq//'loffset{.33}{' + * //sq//'fermataup7}'//cwrq(ivx)(1:lcwr(ivx)) + * //'}{-2}{'//sq//'value}' + lnote = lnote+26+lcwr(ivx)+13 + call addstr(notexq,lnote,soutq,lsout) + cwrferm(ivx) = .false. + end if + end if +61 continue + if (iv .ne. nv) call addstr(sepsymq(iv),1,soutq,lsout) +60 continue + if (islast) then + call addstr(sq//'en}%',5,soutq,lsout) + if (lsout.gt.0)write(11,'(a)')soutq(1:lsout) + end if + end if +c +c End of block for centered whole-bar rests and multi-bar rests +c +c If at end of block, save durations of last notes in bar, for possible use +c if clef changes at start of next bar +c + if (ibar .eq. nbars) then + do 63 iv = 1 , nv + do 63 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + prevtn(ivx) = tnote(ipl2(ivx,nn(ivx))) +63 continue + end if +c +c Update time for midi. This is only used for the event track +c + if (ismidi) then + miditime = miditime+15*lenbar +c +c If pickup, write the real time signature to the event track. Cannot use +c mtrnuml since it was reset to 0, have to recompute it +c + if (lenb0 .eq. lenbar) + * call midievent('m',mtrdenl*lenb1/64,mtrdenl) + end if + return + end + subroutine makeabar() +c +c On input, have pseudo-durations in nodur(ivx,ip). Not real durations for +c xtups, since only last note of xtup gets non-zero nodur, which +c corresponds to single note of full length of xtup. +c In this subroutine we make an ordered list of all notes in all voices. +c ilnc = list note counter +c ivxo(ilnc), ipo(ilnc) = voice# and position in voice of ilnc-th note. +c to(ilnc) = real start time of note in PMX-units (64=whole note) +c tno(ilnc) = time to next event in the bar. +c tnote(ilnc) = actual duration of note +c Then run thru list, grouping consecutive notes into \notes groups ib. +c space(ib) = real time unit for the \notes group +c squez(ib) = factor on space to get effective space. This will be 1 if +c there is a note exactly spanning each interval of space, and +c <1 if not. +c Details: let eon = elemskips per noteskip (like length). Basic formula is +c eon = sqrt(space/2.) +c If tgovern >= space, then +c eon = sqrt(tgovern/2)*(space/tgovern) = space/sqrt(2*tgovern). +c Time needed to give this eon using basic formula is +c teq = space**2/tgovern +c Factor on space to get teq is +c squez(ib) = space/tgovern +c The eon for each ib can then be computed based on time of space*squez. +c Iff squez = 1, there is a note spanning every increment in the \notes group. +c +c tnminb = minimum time span in the bar for increments spanned by notes, +c i.e., with squez=1. Use after parsing into line to decide if +c spacing needs to be "flattened" among notes groups. +c + common /comtol/ tol + parameter (nm=24,nkb=3999,maxblks=9600) + common /a1ll/ iv,ivxo(600),ipo(600),to(600),tno(600),nnl(nm), + * nv,ibar,mtrnuml,nodur(nm,200),lenbar,iccount, + * nbars,itsofar(nm),nib(nm,15),nn(nm), + * rest(nm,200),lenbr0,lenbr1,firstline,newmeter + common /linecom/ elskb,tnminb(nkb) + common /c1omnotes/ nnodur,wminnh(nkb),nnpd(maxblks),durb(maxblks), + * iddot,nptr(nkb),ibarcnt,mbrest,ibarmbr, +c * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) + * ibaroff,udsp(nkb),wheadpt,sqzb(maxblks) + common /c1ommvl/ nvmx(nm),ivmx(nm,2),ivx,fbar,nacc(nm,200) +c logical rest,firstline,newmeter,gotclef + logical rest,firstline,newmeter + integer cnn(nm),istart(80),istop(80) + real*4 xit(nm),space(80),tstart(80),squez(80),tnote(600) + elskb = 0. + tnminb(ibarcnt) = 1000. + do 1 iv = 1 , nv + do 1 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + if (ibar .gt. 1) then + nn(ivx) = nib(ivx,ibar)-nib(ivx,ibar-1) + else + nn(ivx) = nib(ivx,ibar) + end if +1 continue +c +c initialize list note counter, time(iv), curr. note(iv) +c + ilnc = 1 + do 4 iv = 1 , nv + do 4 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + cnn(ivx) = 1 + ivxo(ilnc) = ivx + ipo(ilnc) = 1 + to(ilnc) = 0. + tnote(ilnc) = fnote(nodur,ivx,1,nacc) + xit(ivx) = tnote(ilnc) + if (abs(xit(ivx)-lenbar).lt.tol) xit(ivx) = 1000. + ilnc = ilnc+1 +4 continue +c +c Build the list +c +5 continue +c +c Determine which voice comes next from end of notes done so far. +c tmin is the earliest ending time of notes done so far +c + tmin = 1000. + do 6 iv = 1 , nv + do 6 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + tminn = min(tmin,xit(ivx)) + if(tminn .lt. tmin) then + tmin = tminn + ivnext = ivx + end if +6 continue + if (tmin .gt. 999.) go to 7 + ivxo(ilnc) = ivnext + cnn(ivnext) = cnn(ivnext)+1 + ipo(ilnc) = cnn(ivnext) + to(ilnc) = tmin +c +c Check if this voice is done +c + tnote(ilnc) = fnote(nodur,ivnext,cnn(ivnext),nacc) + if (cnn(ivnext) .eq. nn(ivnext)) then + xit(ivnext) = 1000. + else + xit(ivnext) = xit(ivnext)+tnote(ilnc) + end if + ilnc = ilnc+1 + go to 5 +7 continue + ntot = ilnc-1 + if (ntot .gt. 600) then + call printl(' ') + call printl('Cannot have more than 600 notes per bar, stopping') + call stop1() + end if + do 8 in = 1 , ntot-1 + tno(in) = to(in+1)-to(in) +8 continue + tno(ntot) = fnote(nodur,ivxo(ntot),ipo(ntot),nacc) + tnote(ntot) = tno(ntot) +c +c Debug writes +c +c write(*,'()') +c write(*,'(16i5)')(ivxo(in),in=1,ntot) +c write(*,'(16i5)')(ipo(in),in=1,ntot) +c write(*,'(16f5.1)')(to(in),in=1,ntot) +c write(*,'(16f5.1)')(tno(in),in=1,ntot) +c write(*,'(16i5)')(nodur(ivxo(in),ipo(in)),in=1,ntot) +c write(*,'(16f5.1)')(tnote(in),in=1,ntot) +c +c Done w/ list. Initialize loop for building note blocks: +c + ib = 1 + istart(1) = 1 + space(1) = 0. + in = 1 +c +c Start the loop +c +9 continue + if (in .eq. ntot) then + if (space(ib) .lt. tol) then + space(ib) = tno(in) +c +c Last gap in bar is spanned by a note, so cannot need a squeeze. +c + squez(ib) = 1. + end if + istop(ib) = ntot +c +c From here flow out of this if block and into block-setup +c + else if (space(ib) .lt. tol) then +c +c space hasn't been set yet, so tentatively set: +c + space(ib) = tno(in) + if (space(ib) .lt. tol) then + in=in+1 + else +c +c Tentative space tno(in) is non-zero. Set squez, which will be kept (since +c it is a unique property of the particular increment starting here) : +c + squez(ib) = getsquez(in,ntot,space(ib),tnote,to) + istop(ib) = in + end if + go to 9 + else if (tno(in+1) .lt. tol) then +c +c This is not the last note in the space, so +c + in = in+1 + go to 9 + else if (abs(tno(in+1)-space(ib)) .lt. tol) then +c +c Next increment has same space. Does it have same squez? +c + xsquez = getsquez(in+1,ntot,space(ib),tnote,to) +c +c If it does have the same squez, loop, otherwise flow out +c + if (abs(xsquez-squez(ib)) .lt. tol) then +c +c Keep spacing the same, update tentative stop point +c + in = in+1 + istop(ib) = in + go to 9 + end if + end if +c +c At this point istart, istop, space, and squez are good, so close out block +c + tstart(ib) = to(istart(ib)) +c +c Compute elemskips assuming no flattening to increase min space. The formula +c is only correct if f1eon(t) = sqrt(t/2); more generally (after possible +c flattening in pmxb), elsperns = squez*feon(space/squez) +c + elsperns = f1eon(space(ib)*squez(ib)) + if (istop(ib) .eq. ntot) then + nnsk = nint((lenbar-tstart(ib))/space(ib)) + else + nnsk = nint((to(istop(ib)+1)-tstart(ib))/space(ib)) + end if + elskb = elskb+elsperns*nnsk + if (nptr(ibarcnt+1) .gt. nptr(ibarcnt)) then + call catspace(space(ib),squez(ib),nnsk) + else +c +c This is the first entry for this bar +c + nnpd(nptr(ibarcnt)) = nnsk + durb(nptr(ibarcnt)) = space(ib) + sqzb(nptr(ibarcnt)) = squez(ib) + nptr(ibarcnt+1) = nptr(ibarcnt+1)+1 + end if +c +c Update minimum space spanned by a note +c + if (abs(squez(ib)-1) .lt. tol) + * tnminb(ibarcnt) = min(tnminb(ibarcnt),space(ib)) + if (istop(ib) .eq. ntot) go to 15 +c +c End of spatial accounting for now +c + ib = ib+1 + istart(ib) = istop(ib-1)+1 + in = istart(ib) +c +c Set tentative block space for new block +c + space(ib) = tno(in) + if (space(ib).gt.tol) + * squez(ib)= getsquez(in,ntot,space(ib),tnote,to) + istop(ib) = in + go to 9 +15 continue +c nb = ib +c +c Debug writes +c +c write(*,'(16i5)')(istart(ib),ib=1,nb) +c write(*,'(16i5)')(istop(ib),ib=1,nb) +c write(*,'(16f5.1)')(space(ib),ib=1,nb) +c write(*,'(16f5.1)')(squez(ib),ib=1,nb) +c + return + end + subroutine midievent(typeq,in1,in2) +c +c We now store "conductor" events in mmidi(numchan,.), and count bytes +c with imidi(numchan) +c + parameter (nm=24,mv=24576) + integer*2 mmidi + logical restpend,relacc,notmain,twoline,ismidi,crdacc + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + common /comevent/ miditime,lasttime + character*1 typeq + idur = isetvarlen(miditime-lasttime,nbytes) + imidi(numchan) = imidi(numchan)+nbytes+1 + do 1 i = 1 , nbytes + mmidi(numchan,imidi(numchan)-i) = mod(idur,256) + idur = ishft(idur,-8) +1 continue + mmidi(numchan,imidi(numchan)) = 255 + if (typeq .eq. 't') then +c +c Tempo event. in1 = quarters per minute (integer) +c + mmidi(numchan,imidi(numchan)+1) = 5*16+1 + mmidi(numchan,imidi(numchan)+2) = 3 + misperq = nint(60000000./in1) + do 2 i = 1 , 3 + mmidi(numchan,imidi(numchan)+6-i) = mod(misperq,256) + misperq = ishft(misperq,-8) +2 continue + imidi(numchan) = imidi(numchan)+5 + else if (typeq .eq. 'm') then +c +c Meter event. in1=numerator, in2=denom (power of 2) +c + mmidi(numchan,imidi(numchan)+1) = 5*16+8 + mmidi(numchan,imidi(numchan)+2) = 4 + mmidi(numchan,imidi(numchan)+3) = in1 + if (in2 .gt. 0) then + mmidi(numchan,imidi(numchan)+4) = log2(in2) + else + mmidi(numchan,imidi(numchan)+4) = 0 + end if + mmidi(numchan,imidi(numchan)+5) = 24 + mmidi(numchan,imidi(numchan)+6) = 8 + imidi(numchan) = imidi(numchan)+6 + else if (typeq .eq. 'k') then +c +c Keychange event. in1 = isig +c + mmidi(numchan,imidi(numchan)+1) = 5*16+9 + mmidi(numchan,imidi(numchan)+2) = 2 + mmidi(numchan,imidi(numchan)+3) = mod(256+in1,256) + mmidi(numchan,imidi(numchan)+4) = 0 + imidi(numchan) = imidi(numchan)+4 + else + print*,'Program flameout in midievent' + call stop1() + end if + lasttime = miditime + return + end + subroutine moveln(iuin,iuout,done) + logical done + character*129 outq + done = .false. + read(iuin,'(a)',end=1) outq + lenout = llen(outq,129) + write(iuout,'(a)') outq(1:lenout) + return +1 done = .true. + return + end + subroutine mrec1(lineq,iccount,ndxm) +c +c This is called when (a) macro recording is just starting and +c (b) at the start of a new line, if recording is on +c + parameter (maxblks=9600) + character*128 lineq,lnholdq + common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac + logical mrecord,mplay,endmac + common /c1ommac/ ip1mac(20),il1mac(20),ip2mac(20),il2mac(20), + * ic1mac(20),ilmac,iplmac + character*131072 bufq + integer*2 lbuf(maxblks) + common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq + if (.not.mrecord) then +c +c Starting the macro +c + ip1mac(macnum) = ipbuf-lbuf(ilbuf-1)+iccount + il1mac(macnum) = ilbuf-1 + ic1mac(macnum) = iccount + mrecord = .true. + end if + if (iccount .lt. 128) then + ndxm = index(lineq(iccount+1:128),'M') + if (ndxm .gt. 0) ndxm = ntindex(lineq(iccount+1:128),'M', + * 128-iccount) + if (ndxm .gt. 0) then +c +c This line ends the macro. +c + ip2mac(macnum) = ipbuf-lbuf(ilbuf-1)+iccount+ndxm + il2mac(macnum) = ilbuf-1 + mrecord = .false. + end if + end if + return + end + function ncmid(iv,ip) + parameter (nm=24) + common /all/ mult(nm,200),jv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + common /comipl2/ ipl2(nm,200) + character*1 ulq,sepsymq,sq + logical beamon,firstgulp,figbass,figchk,isfig + common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), + * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /comtol/ tol + if (ncc(iv) .eq. 1) then + ncmid = ncmidcc(iv,1) + else + xtime = to(ipl2(ivx,ip)) + do 1 icc = ncc(iv) , 1 , -1 + if (xtime .gt. tcc(iv,icc)-tol) then + ncmid = ncmidcc(iv,icc) + return + end if +1 continue + print*,'Problem in ncmid()' + stop + end if + end + function ncmidf(clefq) +c +c Return middle line of a clef +c + character*1 clefq + if (clefq .eq. '8') then +c +c treblelowoct; will treat as treble for this purpose +c + ncmidf = 35 + else + ncmidf = 21+index(' b6r5n4a3m2s1t0f7',clefq)/2*2 + end if + return + end + subroutine newvoice(jv,clefq,change) + parameter (nm=24) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + character*1 ulq,sepsymq,sq + logical beamon,firstgulp,figbass,figchk,isfig + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, + * tautofb,autofbon,t1autofb + character*1 ulfbq,clefq + common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), + * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) + common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) + logical change,autofbon + nvmx(jv) = 1 + ivmx(jv,1) = jv + itsofar(jv) = 0 + nnl(jv) = 0 + nfb(jv) = 0 + if (firstgulp .or. change) then + ncmidcc(jv,1) = ncmidf(clefq) + else + ncmidcc(jv,1) = ncmidcc(jv,ncc(jv)) + end if + tcc(jv,1) = 0. + ncc(jv) = 1 + nudoff(jv) = 0 + ndotmv(jv) = 0 + do 5 j = 1 , 200 + irest(jv,j) = 0 + islur(jv,j) = 0 + ipl(jv,j) = 0 + nacc(jv,j) = 0 + iornq(jv,j) = 0 + mult(jv,j) = 0 + if (jv.le.2) isfig(jv,j) = .false. +5 continue + return + end + subroutine notefq(noteq,lnote,nolev,ncmid) +c +c Returns name of note level with octave transpositions, updates noctup. +c + common /comoct/ noctup + character*8 noteq + character*1 upcaseq,noteqt,chax + nupfroma = mod(nolev+1,7) + iname = 97+nupfroma + ioctup = (nolev+1)/7-4 + noteqt = chax(iname) + if (ncmid .eq. 23) noteqt = upcaseq(noteqt) + if (ioctup .eq. noctup) then + noteq = noteqt + lnote = 1 +c +c Must ALWAYS check if lnote=1 for use with functions requiring a blank +c + else if (ioctup .gt. noctup) then +c +c Raise octave. Encase in {} +c + write(noteq,'(8a1)')'{',(chax(39),i=noctup,ioctup-1), + * noteqt,'}' + lnote = 3+ioctup-noctup + noctup = ioctup + else +c +c Lower octave +c + write(noteq,'(8a1)')'{',(chax(96),i=ioctup,noctup-1), + * noteqt,'}' + lnote = 3+noctup-ioctup + noctup = ioctup + end if + return + end + subroutine notex(notexq,lnote) +c +c Returns non-beamed full note name +c + parameter (nm=24) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + character*1 ulq,sepsymq,sq + logical beamon,firstgulp,figbass,figchk, + * isfig,ispoi,btest,even + character*1 udq,udqq,chax + character*4 dotq + character*2 numq + character*79 notexq + character*8 noteq + character*40 restq + common /compoi/ ispoi + common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), + * fullsize(nm),ivxfig2,ivvfig(2,74) + character*10 figq + ip = ipo(jn) + nole = nolev(ivx,ip) +c +c Check for special situations with 2nds (see precrd) +c + if (btest(nacc(ivx,ip),30)) then + nole = nole - 1 + else if (btest(nacc(ivx,ip),31)) then + nole = nole + 1 + end if + nodu = nodur(ivx,ip) + if (.not.btest(irest(ivx,ip),0)) then + udq = udqq(nole,ncmid(iv,ip), + * islur(ivx,ip),nvmx(iv),ivx,nv) + end if +c +c Check figure level +c +c if (figbass .and. isfig(ivx,ip) +c * .and. .not.btest(irest(ivx,ip),0)) then + if (figbass .and. .not.btest(irest(ivx,ip),0) .and. + * ((ivx.eq.1.and.isfig(1,ip)) + * .or.(ivx.eq.ivxfig2.and.isfig(2,ip)))) then + if (udq .eq. 'u' .or. nodu.ge.64) then +c +c Upper or no stem, fnole (in noleunits) set by notehead +c + fnole = nole + else +c +c Lower stem, fnole set by bottom of stem +c + fnole = nole-stemlen + end if + zmin = fnole-ncmid(ivx,ip)+4 + if (ivx .eq. 1) then + ifigdr(1,iline) = max(ifigdr(1,iline),nint(4-zmin)) + else + ifigdr(2,iline) = max(ifigdr(2,iline),nint(4-zmin)) + end if + end if + if (.not.btest(irest(ivx,ip),0)) then + call notefq(noteq,lnoten,nole,ncmid(iv,ip)) + if (lnoten .eq. 1) call addblank(noteq,lnoten) + if (nodu .eq. 1) then + notexq =sq//'cccc'//udq//noteq(1:lnoten) + lnote = lnoten+6 + else if (nodu .eq. 2) then + notexq =sq//'ccc'//udq//noteq(1:lnoten) + lnote = lnoten+5 + else if (nodu .eq. 4) then + notexq =sq//'cc'//udq//noteq(1:lnoten) + lnote = lnoten+4 + else if (nodu .eq. 8) then + notexq =sq//'c'//udq//noteq(1:lnoten) + lnote = lnoten+3 + else if (nodu .eq. 16) then + notexq =sq//'q'//udq//noteq(1:lnoten) + lnote = lnoten+3 + else if (nodu .eq. 32) then + notexq =sq//'h'//udq//noteq(1:lnoten) + lnote = lnoten+3 + else if (nodu .eq. 64) then + notexq =sq//'wh'//noteq(1:lnoten) + lnote = lnoten+3 + else if (nodu .eq. 128) then +c notexq =sq//'zbreve'//noteq(1:lnoten)//sq//'sk' +c lnote = lnoten+10 + notexq =sq//'breve'//noteq(1:lnoten) + lnote = lnoten+6 + else + dotq = 'p' + ldot = 1 + if (btest(iornq(ivx,ip),13)) then +c +c Dotted note with ')' ornament +c + dotq='m' + else if (btest(islur(ivx,ip),3)) then +c +c Double dot +c + dotq = 'pp' + ldot = 2 + end if + if (nodu .ge. 192) then + notexq =sq//'breve'//dotq(1:ldot)//noteq(1:lnoten) + lnote = lnoten+6+ldot + else if (nodu .ge. 96) then + notexq =sq//'wh'//dotq(1:ldot)//noteq(1:lnoten) + lnote = lnoten+3+ldot + else if (nodu .ge. 48) then + notexq =sq//'h'//udq//dotq(1:ldot)//noteq(1:lnoten) + lnote = lnoten+3+ldot + else if (nodu .ge. 24) then + notexq =sq//'q'//udq//dotq(1:ldot)//noteq(1:lnoten) + lnote = lnoten+3+ldot + else if (nodu .ge. 12) then + notexq =sq//'c'//udq//dotq(1:ldot)//noteq(1:lnoten) + lnote = lnoten+3+ldot + else if (nodu .ge. 6) then + notexq =sq//'cc'//udq//dotq(1:ldot)//noteq(1:lnoten) + lnote = lnoten+4+ldot + ispoi = .true. + else + notexq =sq//'ccc'//udq//dotq(1:ldot)//noteq(1:lnoten) + lnote = lnoten+5+ldot + ispoi = .true. + end if + if (dotq(1:1) .eq. 'm') then +c +c Need another call to the note, in case the first one has octave shifts +c + if (lnoten .eq. 2) then + notexq = notexq(1:lnote)//'{'//noteq(2:2)//'}' + lnote = lnote+3 + else + notexq = notexq(1:lnote)//noteq(lnoten-1:lnoten-1) + lnote = lnote+1 + end if + end if + end if + else if (btest(islur(ivx,ip),29)) then +c +c Blank rest +c + notexq = sq//'sk' + lnote = 3 + else +c +c Non-blank rest +c + lnote = 0 + nole = mod(nole+20,100)-20 +c +c Kluge to get pause symbol for rp: +c + if (btest(islur(ivx,ip),19)) nodu = 64 + if (nodu .le. 28) then +c +c Normal rest < or = double-dotted quarter +c + lrest = 3 + if (nodu .gt. 14) then + restq =sq//'qp' + else if (nodu .gt. 7) then + restq =sq//'ds' + else if (nodu .gt. 3) then + restq =sq//'qs' + else if (nodu .gt. 1) then + restq =sq//'hs' + else + restq =sq//'qqs' + lrest = 4 + end if +c +c Special case for rest at start of F-tuplet inside a forced beam +c + if (btest(nacc(ivx,ip),18) .and. + * btest(nacc(ivx,ip),19)) then + restq = sq//'pt4'//restq(1:lrest) + lrest = lrest+4 + end if + notexq = restq + lnote = lrest +c +c At this point notexq=restq,lnote=lrest are name of rest. Now raise if necc. +c + if (nole .ne. 0) then + if (abs(nole) .lt. 10) then + noteq = chax(48+abs(nole)) + lnoten = 1 + else + write(noteq(1:2),'(i2)')abs(nole) + lnoten = 2 + end if + if (nole .gt. 0) then + notexq = sq//'raise'//noteq(1:lnoten)//sq//'internote' + else + notexq = sq//'lower'//noteq(1:lnoten)//sq//'internote' + end if + lnote = 16+lnoten + notexq = notexq(1:lnote)//restq(1:lrest) + lnote = lnote+lrest + end if + if (2**log2(nodu) .ne. nodu) then +c +c Deal with dots (on rests shorter than half rest) +c + restq = sq//'pt' + lrest = 3 + if (2*nodu .gt. 3*2**log2(nodu)) then + restq = sq//'ppt' + lrest = 4 + end if + nole = nole+4 + raisedot = 0 +c +c Tweak dot positions for special cases +c + even = (mod(100+nole,2).eq.0) +c if (.not.even.and.nodu.gt.8.and. +c * (nole.lt.0.or.nole.gt.8)) then + if (.not.even .and. (nole.lt.0.or.nole.gt.8)) then + raisedot = 1 + end if + if (nole.ge.10 .or. nole.le.-1) then + write(numq,'(i2)')nole + restq = restq(1:lrest)//'{'//numq//'}' + lrest = lrest+4 + else + restq = restq(1:lrest)//chax(nole+48) + lrest = lrest+1 + end if + if (raisedot.gt.0) then + restq = sq//'raise'//sq//'internote'// + * sq//'hbox{'//restq(1:lrest)//'}' + lrest = lrest+23 + end if + notexq = restq(1:lrest)//notexq(1:lnote) + lnote = lnote+lrest + end if + else +c +c Half rest or longer +c + if (nole .eq. 0) then +c +c Half or longer rest is not raised or lowered +c + if (nodu .le. 56) then + notexq =sq//'hpause' + lnote = 7 + else if (nodu .le. 112) then + if (.not.btest(islur(ivx,ip),19) .or. + * btest(irest(ivx,ip),25)) then + notexq = sq//'pause' + else + notexq = sq//'pausc' + end if + lnote = 6 + else + notexq =sq//'PAuse' + lnote = 6 + end if + if (2**log2(nodu) .ne. nodu) then +c +c Dotted rest, hpause or longer +c + notexq = notexq(1:lnote)//'p' + lnote = lnote+1 + if (2*nodu .gt. 3*2**log2(nodu)) then +c +c Double dotted long rest +c + notexq = notexq(1:lnote)//'p' + lnote = lnote+1 + end if + end if + else +c +c Raised or lowered half or whole rest +c + if (nodu .eq. 32) then + notexq = sq//'lifthpause' + lnote = 11 + else if (nodu .eq. 48) then + notexq = sq//'lifthpausep' + lnote = 12 + else if (nodu .eq. 56) then + notexq = sq//'lifthpausepp' + lnote = 13 + else if (nodu .eq. 64) then + notexq = sq//'liftpause' + lnote = 10 + else if (nodu .eq. 96) then + notexq = sq//'liftpausep' + lnote = 11 + else if (nodu .eq. 112) then + notexq = sq//'liftpausepp' + lnote = 12 + else if (nodu .eq. 128) then + notexq = sq//'liftPAuse' + lnote = 10 + else +c +c Assume dotted double whole rest +c + notexq = sq//'liftPAusep' + lnote = 11 + end if +c +c Set up height spec +c + nole = sign(abs(nole)/2,nole) + if (nole.le.9 .and. nole.ge.0) then + noteq = chax(48+nole) + lnoten = 1 + else + noteq = '{' + if (nole .ge. -9) then + write(noteq(2:3),'(i2)')nole + lnoten = 3 + else + write(noteq(2:4),'(i3)')nole + lnoten = 4 + end if + noteq = noteq(1:lnoten)//'}' + lnoten = lnoten+1 + end if + notexq = notexq(1:lnote)//noteq(1:lnoten) + lnote = lnote+lnoten + end if + end if + end if + return + end + function ntindex(line,s2q,lenline) +c +c Returns index(line,s2q) if NOT in TeX string, 0 otherwise +c + character*(*) s2q,line + character*1 chax + logical intex + ndxs2 = index(line,s2q) + ndxbs = index(line,chax(92)) + if (ndxbs.eq.0 .or. ndxs2.lt.ndxbs) then + ntindex = ndxs2 + else +c +c There are both bs and s2q, and bs is to the left of sq2. So check bs's to +c right of first: End is '\ ', start is ' \' +c + len = lenstr(line,lenline) + intex = .true. + do 1 ic = ndxbs+1 , len + if (ic .eq. ndxs2) then + if (intex) then + ntindex = 0 + ndxs2 = index(line(ic+1:len),s2q)+ic + else + ntindex = ndxs2 + return + end if + else if (intex .and. line(ic+1:ic+2).eq.chax(92)//' ') then + intex = .false. + else if (.not.intex .and. line(ic+1:ic+2).eq.' '//chax(92)) + * then + intex = .true. + end if +1 continue + end if + return + end + subroutine ntrbbb(n,char1q,ulqq,iv,notexq,lnote) +c +c This appends to notexq e.g. '\ibbbu1' +c + common /combbm/ isbbm + logical isbbm + character*79 notexq + character*1 char1q,ulqq,chax + character*4 tempq + if (n .ge. 5) isbbm = .true. + if (lnote .gt. 0) then + notexq = notexq(1:lnote)//chax(92)//char1q + else + notexq = chax(92)//char1q + end if + lnote = lnote+2 + do 3 im = 1 , n + notexq = notexq(1:lnote)//'b' + lnote = lnote+1 +3 continue +c +c add the number, 0 if 12 +c +c 5/25/08 Allow >12 +c +c call istring(mod(iv,12),tempq,len) + if (iv .lt. 24) then + call istring(iv,tempq,len) + else if (iv .eq. 24) then + tempq(1:1) = '0' + len = 1 + else + call printl('Sorry, too man open beams') + call stop1() + end if + notexq = notexq(1:lnote)//ulqq//tempq(1:len) + lnote = lnote+1+len + return + end + function numclef(clefq) +c +c Returns the number to be used as argument of \setclef for MusiXTeX +c For input 0-6 or tsmanrb return 0-7 +c 7 f 9 +c 8 0 +c + character*1 clefq + if (ichar(clefq) .lt. 55) then +c if (ichar(clefq) .le. 55) then + numclef = ichar(clefq)-48 +c if (numclef .eq. 7) numclef = 9 + else if (clefq .eq. '7') then + numclef = 9 + else if (clefq .eq. '8') then + numclef = 0 + else + numclef = index('tsmanrbxxf',clefq)-1 + end if + return + end + subroutine outbar(i,jlast) + character*1 chax + nfmt = log10(i+.5)+2 + if (jlast+5+nfmt .lt. 80) then + write(*,'(a5,i'//chax(48+nfmt)//',$)')' Bar',i + write(15,'(a5,i'//chax(48+nfmt)//',$)')' Bar',i + jlast = jlast+5+nfmt + else + write(*,'(/,a5,i'//chax(48+nfmt)//',$)')' Bar',i + write(15,'(/,a5,i'//chax(48+nfmt)//',$)')' Bar',i + jlast = 5+nfmt + end if + return + end + subroutine pmxa(basenameq,lbase,isfirst,nsyout,nbarss,optimize) +cccccccccccccccccccccccccccccccccccccccccccccccc +cc cc +cc Subroutine, combine with pmxb.for +cc +cccccccccccccccccccccccccccccccccccccccccccccccc +cc +cc Need to consider X spaces in xtuplets when getting poenom, and +cc maybe fbar? +cc mx06a +cc ID numbers for voices when number of voices is reduced. +cc +cc mx03a +cc account for new fracindent for new movements. +cc +cc Known changes since pmxa. Version 1.1b (see pmxb for longer list) +cc +cc Check ID codes for slurs. +cc Version 1.24 still does not have details for spacing/positioning +cc arpeggios if there are accidentals or shifted notes or crowded scores. +cc Fix problem in 1.22 with arpeggios across multi-line staves +cc Fix problem in 1.22 with flat key signatures +cc Read setup data as strings +cc Warning for octave designation plus +/- +cc Don't pause for volta warning, +cc Macros +cc Correct fsyst to account for transposition and key changes. +cc Check for nbars > nsyst +cc +ccccccccccccccccccccccccccccccccccc + parameter (nm=24,nkb=3999,nks=125,maxblks=9600) + logical loop,usefig,isfirst,optimize + character*131072 bufq + integer*2 lbuf(maxblks) + common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq + integer nn(nm),nodur(nm,200),ivxo(600),ipo(600), + * nnl(nm),itsofar(nm),nib(nm,15),lastbar(0:nks),nbarss(nks) + common /c1omnotes/ nnodur,wminnh(nkb),nnpd(maxblks),durb(maxblks), + * iddot,nptr(nkb),ibarcnt,mbrest,ibarmbr, +c * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) + * ibaroff,udsp(nkb),wheadpt,sqzb(maxblks) + common /compage/ widthpt,ptheight,hoffpt,voffpt, + * nsyst,nflb,ibarflb(0:40), + * isysflb(0:40),npages,nfpb,ipagfpb(0:18),isysfpb(0:18), + * usefig,fintstf,gintstf,fracsys(30),nmovbrk,isysmb(0:30), + * nistaff(0:40) + common /comkeys/ nkeys,ibrkch(18),newkey(18),iskchb,idsig,isig1, + * mbrestsav,kchmid(18),ornrpt,shifton,barend,noinst,stickyS + real*4 elsk(nkb),celsk(0:nkb),elss(nks),to(600),tno(600) + character*128 lnholdq + character*44 basenameq + logical rest(nm,200),firstline,fbon,isvolt,iskchb,kchmid,ornrpt, + * stickyS + common /c1omget/ lastchar,fbon,issegno,ihead,isheadr,nline,isvolt, + * fracindent,nsperi(nm),linesinpmxmod,line1pmxmod,lenbuf0 + logical lastchar,newmeter,newmb(nkb),issegno,bottreb,isheadr, + * shifton,barend + common /a1ll/ iv,ivxo,ipo,to,tno,nnl,nv,ibar,mtrnuml, + * nodur,lenbar,iccount,nbars,itsofar,nib,nn, + * rest,lenbr0,lenbr1,firstline,newmeter + common /linecom/ elskb,tnminb(nkb) + common /cblock/ + * etatop,etabot,etait,etatc,etacs1,hgtin,hgtti,hgtco, + * xilbn,xilbtc,xilhdr,xilfig,a,b,inhnoh + common /cominbot/ inbothd + common /c1ommvl/ nvmx(nm),ivmx(nm,2),ivx,fbar,nacc(nm,200) + common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac + common /commus/ musize,whead20 + common /comeon/ eonk,ewmxk +c logical mrecord,mplay,endmac,gotclef,cstuplet + logical mrecord,mplay,endmac,cstuplet + logical novshrinktop,upslur,fontslur,WrotePsslurDefaults + common /comnvst/ novshrinktop,cstuplte + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + common /comligfont/ isligfont + logical isligfont + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans + logical fulltrans + common /comis4bignv/ is4bignv,AIset + logical is4bignv,AIset + common /comshort/ shortfrac,codafrac,ishort,mbrsum,nmbr,nocodabn, + * poefa + real*4 poefa(125) + logical nocodabn + data wtimesig,wclef,wkeysig + * / 0.72 , 0.8 , 0.28 / +c data poefa /125*1./ +c This corrected a problem in Bob Tennent's compilation of pmx2.94 +c + do 97 i = 1 , 125 + poefa(i) = 1. +97 continue + is4bignv = .false. + AIset = .false. + whead20 = 0.3 + ishort = 0 + if (.not.optimize) then + print* + print*,'Starting first PMX pass' + write(15,'(a)') ' Starting first PMX pass' + end if + if (isfirst) then + open(19,file='pmxaerr.dat') + write(19,'(i6)') 0 + close(19) + end if + if (.not.optimize) jprntb = 81 + macuse = 0 + ornrpt = .false. + stickyS = .false. + mrecord = .false. + mplay = .false. + lastchar = .false. + novshrinktop = .false. + cstuplet = .false. + fontslur = .true. + isligfont = .false. + fulltrans = .false. + do 42 ibarcnt = 1 , nkb + udsp(ibarcnt) = 0. + wminnh(ibarcnt) = -1. +42 continue +c +c Initialize input buffer +c + lenbuf0 = ipbuf + ipbuf = 0 + ilbuf = 1 + call g1etset(nv,noinst,mtrnuml,mtrdenl,mtrnmp,mtrdnp, + * xmtrnum0,newkey(1),npages,nsyst,musize,bottreb) +c +c Set up list of instrument numbers (iv) +c + ivnow = 0 + do 13 instnow = 1 , noinst + do 14 iscount = 1 , nsperi(instnow) + ivnow = ivnow+1 + instno(ivnow) = instnow +14 continue +13 continue +c +c Save initial meter for midi +c + if (.not.isfirst .and. npages.eq.0) then + print*,'Sorry, must have npages>0 for optimization.' + call stop1() + end if + nsyout = nsyst +c +c isig1 will be changed in getnote if there is a transposition +c + isig1 = newkey(1) + if (npages .gt. nsyst) then + call printl('npages > nsyst in input. Please fix the input.') + call stop1() + end if +c +c fbar = afterruleskip/elemskip +c apt = width of small accidental + space in points (= 6 at 20pt) =wheadpt +c + fbar = 1. + wheadpt = whead20*musize + ifig = 0 + usefig = .true. + lenbeat = i1fnodur(mtrdenl,'x') + lenmult = 1 + if (mtrdenl .eq. 2) then + lenbeat = 16 + lenmult = 2 + end if + lenbr1 = lenmult*mtrnuml*lenbeat + lenbr0 = nint(lenmult*xmtrnum0*lenbeat) + mtrnuml = 0 + if (lenbr0 .ne. 0) then + ibaroff = 1 + lenbar = lenbr0 + else + ibaroff = 0 + lenbar = lenbr1 + end if + ibarcnt = 0 + nptr(1) = 1 + iccount = 128 + nmovbrk = 0 + nflb = 0 + nfpb = 0 + ipagfpb(0) = 1 + isysfpb(0) = 1 + ibarflb(0) = 1 + isysflb(0) = 1 + nistaff(0) = nv-1 +c +c Check for pmx.mod +c + linesinpmxmod = 0 +c line1pmxmod = ilbuf + call getpmxmod(.true.,' ') + if (.not.isfirst .and. linesinpmxmod .gt. 0) then + print*,'Sorry, cannot optimize if there is a pmx.mod file' + call stop1() + end if +c +c Initialize for loop over lines +c + nkeys = 1 + ibrkch(1) = 1 + mbrestsav = 0 + shifton = .false. + firstline = .true. + newmeter = .false. + ihead = 0 + isheadr = .false. +c gotclef = .false. + idsig = 0 + iddot = 0 + fintstf = -1. + gintstf = 1.0 + listcresc = 0 + listdecresc = 0 +30 loop = .true. + iskchb = .false. + issegno = .false. + nbars = 0 + ibarmbr = 0 + do 4 iv = 1 , nv + nvmx(iv) = 1 + ivmx(iv,1) = iv + itsofar(iv) = 0 + nnl(iv) = 0 + do 5 j = 1 , 200 + rest(iv,j) = .false. + nacc(iv,j) = 0. +5 continue +4 continue + iv = 1 + ivx = 1 + fbon = .false. + barend = .false. + isvolt = .false. +2 if (loop) then +c +c Within this short loop, nv voices are filled up for the duration of a block. +c On exit (loop=.false.) the following are set: nnl(nv),itsofar(nv) +c nodur(..),rest(..). nnl will later be +c increased and things slid around as accidental skips are added. +c + call g1etnote(loop,ifig,optimize,fulltrans) + if (lastchar) go to 20 + go to 2 + end if + if (mbrestsav .gt. 0) then + call printl(' ') + call printl( + * 'You must enter the same multibar rest in ALL parts') + call stop1() + end if + do 10 ibar = 1 , nbars + ibarcnt = ibarcnt+1 +c +c The following is just a signal to start a new bar when cataloging spaces +c for catspace(...) +c + nptr(ibarcnt+1) = nptr(ibarcnt) + newmb(ibarcnt) = .false. + if (newmeter.and.ibar.eq.1) newmb(ibarcnt) = .true. +c +c Above is only for spacing calcs later on. Remember new meter can only occur +c at START of a new input line (ibar = 1) +c + if (ibar .ne. ibarmbr) then + if (.not.optimize) call outbar(ibarcnt-ibaroff,jprntb) + else + if (.not.optimize) then + write(15,'(/,a20,i4,a1,i4)')' Multibar rest, bars', + * ibarcnt-ibaroff,'-',ibarcnt-ibaroff+mbrest-1 + write(*,'(/,a20,i4,a1,i4)')' Multibar rest, bars', + * ibarcnt-ibaroff,'-',ibarcnt-ibaroff+mbrest-1 + jprntb = 0 + end if + ibaroff = ibaroff-mbrest+1 + end if + if (firstline .and. lenbr0.ne.0) then + if (ibar .eq. 1) then + lenbar = lenbr0 + else + lenbar = lenbr1 + end if + end if + if (ibar .gt. 1) then +c +c For bars after first, slide all stuff down to beginning of arrays +c + do 11 iv = 1 , nv + do 11 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + ioff = nib(ivx,ibar-1) + do 12 ip = 1 , nib(ivx,ibar)-ioff + nodur(ivx,ip) = nodur(ivx,ip+ioff) + rest(ivx,ip) = rest(ivx,ip+ioff) + nacc(ivx,ip) = nacc(ivx,ip+ioff) +12 continue +11 continue + end if + do 67 iv = 1 , nv + do 67 kv = 1 , nvmx(iv) + ioff= 0 + if(ibar.gt.1)ioff = nib(ivmx(iv,kv),ibar-1) +67 continue + call makeabar() + elsk(ibarcnt) = elskb+fbar +10 continue + newmeter = .false. + firstline = .false. + go to 30 +20 continue +c +c Vertical analysis. +c + if (npages .eq. 0) then + if (nsyst .eq. 0) then + print*,'When npages=0, must set nsyst=bars/syst, not 0' + call stop1() + end if + nsyst = (ibarcnt-1)/nsyst+1 + if (nv .eq. 1) then + nsystpp = 12 + else if (nv .eq. 2) then + nsystpp = 7 + else if (nv .eq. 3) then + nsystpp = 5 + else if (nv .eq. 4) then + nsystpp = 3 + else if (nv .le. 7) then + nsystpp = 2 + else + nsystpp = 1 + end if + npages = (nsyst-1)/nsystpp+1 + end if +c +c Check nsyst vs ibarcnt +c + if (nsyst .gt. ibarcnt) then + print* + print*,'nsyst,ibarcnt:',nsyst,ibarcnt + print*,'There are more systems than bars.' + write(15,'(a,2i5)')' nsyst,ibarcnt:',nsyst,ibarcnt + write(15,'(a)')' There are more systems than bars.' + call stop1() + end if +c +c Set up dummy forced line & page breaks after last real one +c + nflb = nflb+1 + ibarflb(nflb) = ibarcnt+1 + isysflb(nflb) = nsyst+1 + nfpb = nfpb+1 + ipagfpb(nfpb) = npages+1 + isysfpb(nfpb) = nsyst+1 + heightil = ptheight*4./musize + open(12,status='SCRATCH') + write(12,'(a)')basenameq(1:lbase) + write(12,*)lbase +c +c Pass to pmxb the initial signature, including effect of transposition. +c + write(12,'(6f10.5/f10.5,3i5)')fbar,wheadpt,etait, + * etatc,etacs1,etatop,etabot,inbothd,inhnoh,isig1 + write(12,*)npages,widthpt,ptheight,hoffpt,voffpt,nsyst + iflbnow = -1 + isysb4 = 0 + do 8 ifpb = 1 , nfpb +c +c Each time thru this loop is like a single score with several pages +c + npages = ipagfpb(ifpb)-ipagfpb(ifpb-1) + nsyst = isysfpb(ifpb)-isysfpb(ifpb-1) + nomnsystp = (nsyst-1)/npages+1 + nshort = nomnsystp*npages-nsyst + do 7 ipage = 1 , npages + nsystp = nomnsystp + if (ipage .le. nshort) nsystp = nsystp-1 +c +c Last system number on this page: + isysendpg = isysb4+nsystp + nintpg = 0 + do 15 isy = isysb4+1, isysendpg + if (isysflb(iflbnow+1) .eq. isy) iflbnow = iflbnow+1 + nintpg = nintpg+nistaff(iflbnow) +15 continue + xilfrac = 0. + xiltxt = 0. + if (ipage.eq.1 .and. ihead.gt.0) then +c +c Needn't zero out ihead after printing titles if we only allow titles at top? +c + if (iand(ihead,1) .eq. 1) then + xiltxt = xiltxt+hgtin*4/musize + xilfrac = xilfrac+etait + end if + if (iand(ihead,2) .eq. 2) then + xiltxt = xiltxt+hgtti*4/musize + xilfrac = xilfrac+etatc + end if + if (iand(ihead,4) .eq. 4) then + xiltxt = xiltxt+hgtco*4/musize + xilfrac = xilfrac+etacs1 + else +c +c Use double the title-composer space if there is no composer +c + xilfrac = xilfrac+etatc + end if + end if + D = xilfrac+nsystp-1+etatop+etabot +c C = nsystp*(nv-1) + C = nintpg +c xN = heightil - xiltxt - 4*nsystp*nv - (nsystp-1)*xilbn + xN = heightil - xiltxt - 4*(nintpg+nsystp) - (nsystp-1)*xilbn + if (bottreb) xN = xN-(nsystp-1)*xilbtc + if (ihead.eq.0 .and. isheadr) xN = xN - xilhdr + if (ifig .eq. 1) then + xN = xN - nsystp*xilfig + end if + glueil = (xN-b*C)/(D+a*C) + omegaG = (b*D+a*xN)/(D+a*C) +c +c G = \interlines between systems +c omega*G = \interlines between staves of the same system +c \interstaff = 4+omega*G +c C = total number of interstaff spaces in the page +c D = omega-indep factors for scalable height = nsy-1 (intersystem glue) +c + etatop + etabot + etatxt + +c N = scaleable height (\interlignes) = height - htext - staff heights - xil +c xil = extra interliges = (nsy-1)*xilbn + 10 if header and no titles +c + (nsy-1)*xiltcb for treble clef bottoms +c + nsy*xilfig for figures +c G = N/(D + omega * C) = glueil, (1) +c But (empirically) omega*G = a*G + b (2) +c with a=1.071 and b=2.714 +c Solving (1) and (2) gives +c G = (N-b*C)/(D+a*C) , omega*G = (b*D+a*N)/(D+a*C) +c Pass to pmxb omega*G (=\interstaff-4) +c (etatop,bot,it,tc,cx)*G as inputs to \titles +c +c glueil = (heightil-xiltxt-nsystp*(xil+4*nv)) +c * /(nsystp*(1+gfact*(nv-1))-1+etatop+etabot+xilfrac) +c xnsttop = glueil*etatop +c xintstaff = 4+gfact*glueil +c +c Only the first page will get local adjustment now if needed, others in pmxb +c + if (ifpb.eq.1 .and. ipage.eq.1 .and. fintstf.gt.0.) then + facins = fintstf + fintstf = -1. + else +c +c gintstf = 1.0 by default, but may be changed with AI +c + facins = gintstf + end if + write(12,*)nsystp,max(0.,etatop*glueil),facins*(omegaG+4) + ihead = 0 + isheadr = .false. + isysb4 = isysendpg +7 continue +8 continue +c +c Done with vertical, now do horizontals +c + celsk(1) = elsk(1) + do 21 ibar = 2 , ibarcnt + celsk(ibar) = celsk(ibar-1)+elsk(ibar) +21 continue + lastbar(0) = 0 + ibar1 = 1 + wmins = -1. + iflb = 1 + imovbrk = 0 + ikey = 1 +c +c Return nsyst to its *total* value +c + nsyst = isysfpb(nfpb)-1 + do 22 isyst = 1 , nsyst + if (isyst .eq. isysflb(iflb)) iflb = iflb+1 + if (nmovbrk.gt.0 .and. imovbrk.lt.nmovbrk) then + if (isyst .eq. isysmb(imovbrk+1)) imovbrk = imovbrk+1 + end if + ibarb4 = lastbar(isyst-1) + if (isyst .eq. 1) then + if (isfirst) elsstarg = celsk(ibarflb(1)-1)/ + * (isysflb(1)-1-fracindent)*(1-fracindent) + celskb4 = 0. + else + celskb4 = celsk(ibarb4) +c +c Must dimension isysmb(0:*) just so I can execute this test! +c + if (isfirst) then + if (nmovbrk.gt.0 .and. isyst.eq.isysmb(imovbrk)) then +c +c First syst after forced line break. There may be indentation. +c + elsstarg = (celsk(ibarflb(iflb)-1)-celskb4) + * /(isysflb(iflb)-isyst-fracsys(imovbrk)) + * *(1-fracsys(imovbrk)) + else +c +c There is no indentation to deal with +c + elsstarg = (celsk(ibarflb(iflb)-1)-celskb4) + * /(isysflb(iflb)-isyst) + end if + end if + end if + if (isfirst) then + diff1 = abs(elsstarg-elsk(ibarb4+1)) + do 23 ibar = ibarb4+2 , ibarcnt + diff = elsstarg-(celsk(ibar)-celskb4) + if (abs(diff) .ge. diff1) go to 24 + diff1 = abs(diff) +23 continue +24 ibar = ibar-1 + lastbar(isyst) = ibar + nbarss(isyst) = ibar-ibarb4 + else +c +c nbarss is given as an input, must compute lastbar and ibar +c + lastbar(isyst) = nbarss(isyst)+ibarb4 + ibar = lastbar(isyst) + end if +c +c elss is # of elemskip in the syst. from notes & ars's, not ruleskips, ask's. +c + elss(isyst) = celsk(ibar)-celskb4 + write(12,'(i5)')lastbar(isyst-1)+1 +c +c Transposed sigs are isig1, newkey(2,3,...). +c + if (ikey .eq. 1) then + key1 = isig1 + else + key1 = newkey(ikey) + end if + fsyst = wclef+abs(key1)*wkeysig+2./musize + xelsk = 0. +1 if (ikey.lt.nkeys) then + if (ibrkch(ikey+1).le.lastbar(isyst)) then +c +c Add space for all key changes +c + ikey = ikey+1 + key2 = newkey(ikey) + naccs = max(abs(key2-key1),max(abs(key1),abs(key2))) + fsyst = fsyst+naccs*wkeysig +c +c Account for afterruleskips (fbar) +c + xelsk = xelsk+fbar/2 + if (ibrkch(ikey).lt.lastbar(isyst) .and. .not.kchmid(ikey)) + * xelsk = xelsk-1. + key1 = key2 + go to 1 + end if + end if +c +c Add extra fixed space for double bar +c + if (isyst .eq. nsyst) then + fsyst = fsyst+4.5/musize + end if +c +c Add extra fixed space for initial time signature +c + if (isyst .eq. 1) then + fsyst = fsyst+wtimesig + end if +c +c Add extra fixed space for time signature changes & user-defined spaces +c + do 26 ibars = ibarb4+1 , lastbar(isyst) + if (newmb(ibars)) fsyst = fsyst+wtimesig + fsyst = fsyst+udsp(ibars)/musize +26 continue + if (isyst .eq. 1) then + wdpt = widthpt*(1-fracindent) + else + if (nmovbrk.gt.0 .and. imovbrk.gt.0 .and. + * isyst.eq.isysmb(imovbrk)) then + wdpt = widthpt*(1-fracsys(imovbrk)) + else + wdpt = widthpt + end if + end if + wsyspt = wdpt-fsyst*musize-0.4*nbarss(isyst) +c +c Checks for min spacing +c Get min allowable space +c + dtmin = 1000. + do 45 ibar = ibar1 , ibar1+nbarss(isyst)-1 + dtmin = min(dtmin,tnminb(ibar)) + if (wminnh(ibar).ge.0.) wmins = wminnh(ibar) +45 continue + if (wmins .lt. 0) wmins = 0.3 + wminpt = (1+wmins)*0.3*musize +c +c Find max duration & # of notes for this system +c + dtmax = 0. + nns = 0 + do 43 iptr = nptr(ibar1) , nptr(ibar1+nbarss(isyst))-1 + dtmax = max(dtmax,durb(iptr)) + nns = nns + nnpd(iptr) +43 continue + elmin0 = wsyspt*f1eon(dtmin)/(elss(isyst)+xelsk) + if (elmin0 .ge. wminpt) then +c +c Subtract out fbar stuff to keep old way of passing sumelsk to pmxb; +c there is no need to "flatten" +c + sumelsk = elss(isyst)-fbar*nbarss(isyst) + eonk = 0. + ewmxk = 1. + else + elmin1 = wsyspt/((fbar*nbarss(isyst)+xelsk)/f1eon(dtmax)+nns) + if (elmin1 .le. wminpt) then +c print* +c print*,'In system #',isyst,' cannot meet min. space rqmt' +c write(15,'(/a,i5,a)') +c * 'In system #',isyst,' cannot meet min. space rqmt' + eonk = 0.9 + else +c +c Find eonk by Newton method +c + call findeonk(nptr(ibar1),nptr(ibar1+nbarss(isyst))-1, + * wsyspt/wminpt,fbar*nbarss(isyst)+xelsk,dtmin,dtmax, + * (wminpt-elmin0)/(elmin1-elmin0)) + eonk = min(.9,eonk) + end if + ewmxk = f1eon(dtmax)**eonk +c +c Recompute poenom! +c + sumelsk = 0 + do 44 iptr = nptr(ibar1) , nptr(ibar1+nbarss(isyst))-1 + sumelsk = sumelsk + * + nnpd(iptr)*sqzb(iptr)*feon(durb(iptr)/sqzb(iptr)) +44 continue + end if + poenom = wsyspt/(sumelsk+fbar*nbarss(isyst)+xelsk) +c +c Set fracindent for output: orig if isyst=1, fracsys(imovbrk) if movbrk, else 0 +c + if (isyst .gt. 0) then + if (nmovbrk.gt.0 .and. imovbrk.gt.0 .and. + * isyst.eq.isysmb(imovbrk)) then + fracindent = fracsys(imovbrk) + else + fracindent = 0. + end if + end if + write(12,'(1pe12.5/i5,5e12.3)') poenom,nbarss(isyst), + * sumelsk,fsyst,fracindent,eonk,ewmxk + ibar1 = ibar1+nbarss(isyst) +22 continue + rewind(12) + open(13,status='SCRATCH') + write(13,'(i5)')ifig + rewind(13) + ilbuf = 1 + ipbuf = 0 + if (.not.optimize) then + write(*,'(/,a)')' Done with first pass' + print* + write(15,'(/,a)')' Done with first pass' + write(15,'()') + end if +c +c Following syntax is needed since pmxa is called with literal argument .false. +c + if (isfirst) isfirst = .false. + return + end + subroutine pmxb(inlast,poevec,ncalls,optimize) +cccccccccccccccccccccccccc +cc +cc To Do +cc +cc Resolve disagreement in final poe for 1st system, compared with *.mx2 +cc Shift slurs on right- or left-shifted main notes (2/7/99) +cc Various end-of-input-block repeat problems (ick142.pmx). +cc Force multiplicity for un-beamed xtups. +cc Clef change at end of piece +cc Global "A" option to maximize "X" at a given time tick. +cc Tighten test for end-of-bar hardspace, flgndv(ivx) due to right-shifted +cc note. See trubl18.pmx +cc Tab character as space. +cc Clef interference with second line of music. +cc Add space for interferences between *different* lines of music? +cc Shift arpeggios, both automatic and manual. +cc Different musicsize for different instruments. +cc Spacing checks for accid's on left-shifted chord notes +cc Spacing checks for double dots +cc Allow forced line breaks w/o setting nsyst. +cc Cresc-Decresc. (Enhance MusiXTeX first?) +cc Dynamic Marks. +cc Bug with Voltas at line end (MusiXTeX problem?). +cc Subtle bug w/ slur hgt over line brk, see trubl15.pmx +cc Stem-end slurs. +cc Allow units in indentation. +cc Make inline TeX more context sensitive. +cc Werner's 4/2/98 problem with "o?" +cc Scor2prt converts e.g. "r0+0" into "r0 0", which seems to be wrong. +cc converts e.g. "r2db" into "r2d", which might be wrong. +cc Werner's generalsignature problem with Key change and new transposition. +cc (wibug8.pmx) +cc Unequal xtuplets +cc Print both sets of bar #'s in tex file. +cc Make barlines invisible \def\xbar{\empty} , fix fbar. +cc Auto-tie slurs 'At' +cc Forced line break anywhere (e.g. at a mid-bar repeat). +cc Clef change at very start of file. +cc Tighten test for M as macro terminator. +cc Fix title so not separate limit on author length + composer length. +cc Arpeggios in xtups. +cc +cc mx10b +cc Option for instrument name at top center. Last item in P command: +cc P[n]c text is instrument name (use in parts) +cc P[n]cstuff text is stuff (up to 1st blank) +cc P[n]c"stuff with spaces" text is stuff with spaces +cc +cc Post version 1.43 +cc Reduced space rqmt for multiplicity-0 graces (no flag) +cc Removed last sepsym in centered whole-bar rests, fixes volta height bug. +cc +cc Version 1.43 +cc Fix spacing for end-of-line signature change. +cc Adjust left-shift of grace group for shifted accidentals. +cc Put in extra space for left-shifted accidentals. +cc Fix bug with dot-shift before accid-shift on chord note. +cc Space-check for right-shifted main notes. +cc Enable forcing stem direction of single notes in non-beamed xtups. +cc Disallow clef change after last note before end of input block (pmxa) +cc Print meter change before page break +cc increase length of strings for \titles macro +cc version 1.42 +cc Loosen up input syntax for "X" commands. Subroutine getx() +cc "B" and "P" in "X" commands +cc mx09b +cc Allow multiple rests at start of xtup +cc Add 64th rest +cc Fix xtup numbers over rests. (subroutine levrn) +cc Initialize notcrd=.false. every gulp. Avoids undefined state with e.g. +cc c za / ( c a ... +cc Allow double dots to be shifted. +cc Fix spacing with double dotted notes; permit splitting small note. +cc Fix \dotted printout so it works with old compiler +cc mx08b +cc Automatic spaces if needed for shifted accidentals. +cc Some Dynamics +cc Increase accid. horiz. shift resolution to .o5 (use one more bit in nacc) +cc version 1.41 +cc Allow ":" as last char of path name +cc Dotted slurs "sb" +cc Continue bar numbering at movement break "L[integer]Mc" +cc mx07b +cc Whole-bar rests with double lines of music. Fixed all options ? +cc Shift accidentals, either [+|-][integer][+|-][number] or [<|>][number]. +cc Option to suppress centering full-bar rests. "o" +cc mx06b +cc Shift accid on left-shifted chord note. +cc Rest as first note of xtup. +cc Wrong slopes with small widths. Scale slfac1 by widthpt_default/widthpt +cc Allow Rb for single bar at movemnet break or end of piece. (islur(25)) +cc Change # of inst at a movement break. noinst is total # and must be used +cc in 1st movement. ninow is current. nspern(1,...,ninow) is current +cc staves/inst, nsperi(1,...,noinst) is original. rename tells whether to +cc reprint names in parindent at a movement break. Default is .false. +cc unless ninow changes, then .true. But can force either with r+/- as +cc option in 'M' +cc mx04b +cc Double-dotted notes, separate+beamed, main+chord, still no extra space. +cc ??? Don't shift slur ends on whole notes. +cc (pmxa) Write line number of error in pmxaerr.dat +cc mx02b +cc Admit "RD" before "/" (search for "rptfq2:" ) +cc In doslur, for multi-line staves, single notes, check forced stem dir'n +cc before setting stemup (used to set horiz offset). +ccccccccccccccccccccccccccccccc + parameter (nm=24,nks=125,mv=24576,maxblks=9600) +c +c FYI /all/ differs in appearance in function ncmid +c + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + common /comipl2/ ipl2(nm,200) +ccccccccccccc +cc islur cc +ccccccccccccc +c bit meaning +c 0 slur activity on this note +c 1 t-slur here. +c 2 force 0-slope beam starting on this note +c 3 Double dotted note! +c 4 grace before main note +c 5 left repeat +c 6 right repeat +c 7 start Volta +c 8 doublebar +c 9 end Volta +c 10 on=>endvoltabox +c 11 on=>clefchange +c 12-14 0=>treble, ... , 6=>bass +c 15 on=> start new block for clef change (maybe diff. voice) +c 16 literal TeX string +c 17 1=up, 0=down stem for single note (override) See bit 30! +c 18 if on, prohibit beaming +c 19 if on, full bar rest as pause +c 20 Beam multiplicity down-up +c 21 Forced multiplicity for any beam including xtups +c 22-24 Value of forced multiplicity +c 25 single barline at movement break +c 26 doubleBAR (see bits 5,6,8) +c 27-28 Forced beam fine-tune height (1 to 3) +c 29 Blank rest +c 30 If on, get stem dir'n from bit 17 +c 31 If on, suppress printing number with xtuplet starting here +ccccccccccccc +cc ipl cc +ccccccccccccc +c 0 blank barline (must be iv=1) (would have used islur but no room) +c 1 look left for K rests, moved here from iornq(30) +c 2 treblelowoct +c 3 Open notehead in forced beam xtup +c 4 Set if single stem tremolo +c 5-6 termulo multiplicity - 1 +c 7 unused +c 8 left offset main note one headwidth +c 9 right offset main note one headwidth +c 10 chord present? +c 11-16 Forced beam height adjustment (-30 to +30) +c 17-22 Forced beam slope adjustment (-30 to +30) +c 23-26 Slur index for Way-after grace. Inserted when slur is started. +c 27 5th bit for slur index for Way-after grace (100712) +c 28 key change: only in voice 1 +c 29 Grace after main note. (Type A) +c 30 In forced beam. Signals need to check beam heights +c 31 Grace way after main note. (stretch to next note, type W) +ccccccccccccc +cc iornq cc +ccccccccccccc +c 0 Ornament "(". Was user-defined horizontal slur shift on this note +c until 9/24/97; changed that to irest(21) +c 1-13 stmgx+Tupf._) +c 14 Down fermata, was F +c 15 Trill w/o "tr", was U +c 16-18 Editorial s,f,n +c 19-20 >^ +c 21 "?" for editorial accid, w/ or w/o s,f,n +c 22 Set if ihornb governs ornament height. Same in icrdorn. +c 23 Set in getorn if ANY note at time of this main note has ornament. +c This is ONLY used in beamstrt to signal whether to do more +c tests for whether ihornb is needed. (ihornb is only needed +c if nonchord+upbm, chord+upbm+top_note, chord+dnbm+bot_note) +c (7/1/00)Also set if any dynamic, as ihornb will be needed when dnbm. +c 24 Slur on after or way-after grace. Use as signal to START slur. +c 25 Tweak orn ht. Same in icrdorn for chord note +c 26 Insert user-defined space before this note (was 22) +c 27 Arpeggio stop or start (if 2 at same time), or all-in-this-chord +c 28 caesura or breath +cc 29 blank barline (must be iv=1) (would have used islur but no room) +c 29 coda +cc 30 "Look-left" option for keyboard rest +c 30 Part-by-part segno oG +c 31 Set if any note (main or chord) has cautionary accid, for space checks +ccccccccccccc +cc irest cc +ccccccccccccc +c 0 rest=1, no rest = 0 +c 1 There will be a vertical shift for number of this xtup +c 2 Set if 2-note tremolo starts here +c 3-4 nsolid, # of solid beams in 2-note tremolo +c 5-6 nindent, # of indented beams in 2-note tremolo +c 7 There is a horizontal shift for xtup number +c 9-13 Horiz shift, 1=>-1.5, ... , 31=>+1.5 +c 14 Flip up/down-ness of xtup number +c 15 Single-voice, single note shift X(...)[p]S +c 16 Start single-voice, multinote shift with this note X(...)[p]: +c 17 End single-voice, multinote shift after this note. Enter symbol +c after note. X: +c 18 User-defined hardspace after last note of bar, *after* this note. +c Value still stored in udoff(ivx,nudoff(ivx)), not with other +c hardspaces in udsp, to avoid confusion with time checks. +c 19 Move the dot. Data stored in ndotmv,updot,rtdot +c 20 Set if right-shifted main or chord note here. Use for space checks. +c 21 User-defined hardspace in xtup +c 22 User-defined slur shift horizontal slur shift. +c 23 Set on last note before staff-jumping a beam. +c 24 Set on first note after staff-jumping a beam +c 25 Suppress rest centering. "ro" +c 26 Dynamic on this note +c 27 Set if left-shifted main or chord note here. Use for space checks. +c 28 Set if xtup starts on this note. +c 29 Set on lowest-voice note at same time as 1st note after jump-beam. +c 30 Set on note after end of jump-beam segment, to force new note group +c 31 Flag for cautionary accidental +ccccccccccccc +cc nacc cc +ccccccccccccc +c 0-1 0=no accid, 1=fl, 2=sh, 3=na +c 2 double +c 3 big +c 4-9 vertshift-32 +c 10-16 20*(horiz. shift + 5.35) (Recentered ver 2.32) +c 17 Midi-only accidental +c 18 2:1 xtup +c 19 Together with nacc(18), increase multiplicity by 1 and dot 1st note. +c 20 Set on last note of each seg except last seg of single-slope beam. +c 21 Set on 1st note of each seg except 1st seg of single-slope beam. +c 22-26 If .ne.0, printed xtup number for xtup starting on this note. +c 27 Set for dotted xtup note. Mult dur by 1.5, mult next by .5 & increase +c multiplicity by 1 +c 28 Set on main note of chord if accidentals are ordered. +c 29 Tag for chordal accidental shift...means add to autoshifts. +c 30-31 Set 30|31 if main note in a chord is part of a 2nd and needs to be shifted. +c If upstem|downstem, main is upper|lower member of 2nd +c Action is to interchange pitches only when notes are placed. +ccccccccccccc +cc mult cc +ccccccccccccc +c 0-3 Multiplicity+8 (mult= # of flags) +c 4 Set if slope adjustment for xtup bracket +c 5-9 16+slope adjustment +c 10-15 New stem length, [0-63] => (-4,0,+27.5) +c 16-22 64+Vertical offset of xtup # +c 27 Stemlength override +cc 28-30 New stem length. +ccccccccccccc +cc isdat1 cc +ccccccccccccc +c 13-17 iv +c 3-10 ip +c 11 start/stop switch +c 12 kv-1 +c 19-25 ichar(code$) +c 26 force direction? +c 27 forced dir'n = up if on, set in sslur; also +c final direction, set in doslur when beam is started, used on term. +c 28-31 ndxslur, set in doslur when beam is started, used on term. +ccccccccccccc +cc isdat2 cc +ccccccccccccc +c 0 Chord switch. Not set on main note. +c 1-2 left/right notehead shift. Set only for chord note. +c 3 tie positioning +c 4 dotted slur +c 6-11 voff1 1-63 => -31...+31 +c 12-18 hoff1 1-127 => -6.3...+6.3 +c 19-25 nolev +c 26 \sluradjust (p+s) +c 27 \nosluradjust (p-s) +c 28 \tieadjust (p+t) +c 29 \notieadjust (p-t) +ccccccccccccc +cc isdat3 cc +ccccccccccccc +c 0 set if midslur (at least one argument) +c 1 set if curve (2 more args) +c 2-7 32+first arg (height correction) (1st arg may be negative) +c 8-10 second arg (initial slope) +c 11-13 third arg (closing slope) +c 14-21 tie level for use in LineBreakTies +c 22-29 ncm for use in LineBreakTies +ccccccccccccc +cc isdat4 cc Set these all at turn-on using s option +ccccccccccccc +c 0-5 Linebreak seg 1 voff 1-63 => -31...+31 +c 6-12 Linebreak seg 1 hoff 1-127 => -6.3...+6.3 +c 16-21 Linebreak seg 2 voff 1-63 => -31...+31 +c 22-28 Linebreak seg 2 hoff 1-127 => -6.3...+6.3 +ccccccccccccc +c icrdat c +ccccccccccccc +c 0-7 ip within voice +c 8-11 ivx (together with 28th bit) +c 12-18 note level +c 19 accidental? +c 20-22 accidental value (1=natural, 2=flat, 3=sharp, 6=dflat, 7=dsharp) +c 23 shift left +c 24 shift right +c 25 arpeggio start or stop +c 26 flag for moved dot (here, not icrdot, since this is always reset!) +c 27 Midi-only accidental +c 28 (6/27/10) 5th bit for ivx, to allow up to 24 voices +c 29 Tag for accidental shift...means add to autoshifts. +c 31 Flag for cautionary accidental on chord note +ccccccccccccc +c icrdot c: +ccccccccccccc +c 0-6 10*abs(vertical dot shift in \internote) + 64 +c 7-13 10*abs(horizontal dot shift in \internote) + 64 +c 14-19 vert accidental shift-32 +c 20-26 20*(horiz accidental shift+3.2) +c 27-29 top-down level rank of chord note w/accid. Set in crdaccs. +c +c Bits in icrdorn are same as in iornq, even tho most orns won't go in crds. +c +cccccccccccccccccccccccccccccccc + character*131072 bufq + integer*2 lbuf(maxblks) + common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq + character*10 figq + common /comignorenats/ mbrhgt,newmbrhgt,ignorenats + logical ignorenats,newmbrhgt + character*1 ulq,sepsymq,sq,chax + logical beamon,firstgulp,figbass,figchk, + * isfig,rptnd1,rptprev + logical loop,lastchar,slint,svolta,evolta,onvolt, + * cwrest(nm),islast,inlast,optimize + integer istop(80),numbms(nm),istart(80) + real*4 xnsttop(75),xintstaff(75),hesk(23),hpts(23),poevec(nks), + * tstart(80),squez(80) + character*1 clefq(nm),ulfbq,rptfq1,rptfq2,charq + character*79 notexq,inameq + character*40 pathnameq + character*44 basenameq + character*24 fmtq + character*20 voltxtq + character*120 instrq,titleq,compoq + common /comlast/ islast,usevshrink + logical usevshrink,stickyS,OptLineBreakTies,autofbon + common /combjmp/ ivbj1,ivbj2,isbjmp,isbj2,multbj1 + common /comtitl/ instrq,titleq,compoq,headlog,inskip,ncskip, + * inhead + common /cominbot/ inbothd + common /comfig/ itfig(2,74),figq(2,74),ivupfig(2,74),nfigs(2), + * fullsize(nm),ivxfig2,ivvfig(2,74) + common /comnsp/ space(80),nb,prevtn(nm), + * flgndv(nm),flgndb,eskgnd,ptsgnd,ivmxsav(nm,2),nvmxsav(nm) + common /comstart/ facmtr + common /comfb/ nfb(nm),t1fb(nm,40),t2fb(nm,40),ulfbq(nm,40),ifb, + * tautofb,autofbon,t1autofb + common /comget/ lastchar,rptnd1,sluron(nm,2),fbon,ornrpt,stickyS, + * movbrk,movnmp,movdnp,movgap,parmov,fintstf,gintstf, + * rptprev,equalize,rptfq1,rptfq2 + common /combeam/ ibmtyp + common /comnotes/ nnodur,lastlev,ndlev(nm,2),shifton,setis,notcrd, + * npreslur,was2(nm),ninow,nobar1,nsystp(75),ipage, + * OptLineBreakTies,HeaderSpecial + common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, + * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, + * lnam(nm),inameq(nm) + common /comas1/ naskb,task(40),wask(40),elask(40) + common /comas2/ nasksys,wasksys(800),elasksys(800) + common /comas3/ ask(2500),iask,topmods + common /comask/ bar1syst,fixednew,scaldold, + * wheadpt,fbar,poenom + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + common /comsln/ is1n1,is2n1,irzbnd,isnx + common /comgrace/ ivg(37),ipg(37),nolevg(74),itoff(2,74),aftshft, + * nng(37),ngstrt(37),ibarmbr,mbrest,xb4mbr, + * noffseg,ngrace,nvolt,ivlit(83),iplit(83),nlit, + * graspace(37), + * lenlit(83),multg(37),upg(37),slurg(37),slashg(37), + * naccg(74),voltxtq(6),litq(83) + logical upg,slurg,slashg,fbon,ornrpt,shifton,isbjmp,notcrd,was2, + * isbj2,fontslur,WrotePsslurDefaults,HeaderSpecial + common /comivxudorn/ivxudorn(63) + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + character*128 litq,lnholdq + logical upslur,bar1syst,vshrink,lrpt,rrpt,lrptpend, + * ispoi,bcspec,topmods,headlog,clchb,clchv(nm),flgndb, + * btest,sluron,setis,nobar1 + common /comcc/ ncc(nm),tcc(nm,10),ncmidcc(nm,10), + * maxdotmv(nm),ndotmv(nm),updot(nm,20),rtdot(nm,20) + common /compoi/ ispoi + common /combc/ bcspec + common /comeon/ eonk,ewmxk + common /spfacs/ grafac,acgfac,accfac,xspfac,xb4fac,clefac,emgfac, + * flagfac,dotfac,bacfac,agc1fac,gslfac,arpfac, + * rptfac,lrrptfac,dbarfac,ddbarfac,dotsfac,upstmfac, + * rtshfac + common /comhsp/ hpttot(176) + common /combmh/ bmhgt,clefend + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac + common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) + common /strtmid/ ihnum3,flipend(nm),ixrest(nm) + common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), + * xinsnow,lowdot + common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) + common /commus/ musize,whead20 + common /comtol/ tol + common /comdyn/ ndyn,idyndat(99),levdsav(nm),ivowg(12),hoh1(12), + * hoh2(12),hoh2h1(2),ntxtdyn,ivxiptxt(41),txtdynq(41), + * idynda2(99),levhssav(nm),listcresc,listdecresc + character*128 txtdynq + logical mrecord,mplay,endmac,flipend,istype0,lowdot,rename,ispstie + integer*2 mmidi + logical restpend,relacc,notmain,twoline,ismidi,crdacc,equalize, + * ismbr,putmbr + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + common /comcb/ nbc,ibcdata(36) + common /comclefq/ clefq + common /comArpShift/NumArpShift,IvArpShift(20),IpArpShift(20), + * ArpShift(20) + common /comligfont/ isligfont + logical isligfont + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans + common /combibarcnt/ ibarcnt + character*40 nmq + common /commidisig/ midisig + common /comclefrests/ centrests + logical newclef, centrests + common /comlyr/ inputmlyr + logical inputmlyr + common /combottop/ botamt,topamt,bottopgap + logical bottopgap + common /comis4bignv/ is4bignv,AIset + logical is4bignv,AIset + common /comhair/ idhairuse,idhair(nm) + common /comc8flag/ c8flag(nm) + logical c8flag + common /comshort/ shortfrac,codafrac,ishort,mbrsum,nmbr,nocodabn, + * poefa + real*4 poefa(125) + logical nocodabn + character*3 shortfraq,rendq + bottopgap = .false. + inputmlyr = .false. + idhairuse = 0 + if (.not.optimize) then + print* + print*,'Starting second PMX pass' + print* + write(15,'(a)')'Starting second PMX pass' + end if + newclef = .false. + centrests = .false. + ncalls = ncalls+1 + islast = inlast + macuse = 0 + isyscnt = 0 + stemmax = 8.2 + stemmin = 3.9 + stemlen = 6.0 + sq = chax(92) + ignorenats = .false. + newmbrhgt = .false. + bcspec = .true. + topmods = .false. + ismbr = .false. + read(12,'(a)')basenameq + read(12,*)lbase + read(12,*)fbar,wheadpt,etait,etatc,etacs1,etatop, + * etabot,inbothd,inhnoh,isig + ilbuf = 1 + ipbuf = 0 + call getset(nv,noinst,mtrnuml,mtrdenl,mtrnmp,mtrdnp,xmtrnum0, + * npages,nsyst,musicsize,fracindent,istype0,inameq, + * clefq,sepsymq,pathnameq,lpath,isig0) + if (ismidi) then +c +c Initial key signature and meter for pickup bar +c 130313 Unless explicit miditranspose for all parts (to be dealt with later), +c want concert sig (isig0) here. K+n+m will have changed sig to isig +c call midievent('k',isig,0) +c 130316 +c call midievent('k',isig0,0) +c call midievent('k',midisig,0) +c +c Above is probably cosmetic +c call midievent('k',midisig,0) + if (xmtrnum0 .gt. tol) then +c +c We have a pickup. Some tricky stuff to get a meter: +c + xntrial = xmtrnum0 + do 5 ip2 = 0 , 5 + if (abs(mod(xntrial,1.)) .lt. tol) go to 6 + xntrial = xntrial*2 +5 continue + print*,'Problem finding meter for pickup bar' + xntrial = 1. + ip2 = 0 +6 continue + call midievent('m',nint(xntrial),2**ip2*mtrdenl) + else +c +c No pickup, enter the starting meter +c + call midievent('m',mtrnuml,mtrdenl) + end if + end if +c +c Set musicsize from value passed in common, due to possible reset by S[n]m16 +c + musicsize = musize + read(12,*)npages,widthpt,height,hoffpt,voffpt,nsyst, + * (nsystp(ipa),xnsttop(ipa),xintstaff(ipa),ipa=1,npages),iauto +c +c If default width ever changes, must adjust this stmt. +c + slfac1 = 0.00569*524./widthpt + figbass = .false. + read(13,*)ifig + if (ifig .eq. 1) then + figbass = .true. + open(14,status='SCRATCH') + write(14,'(a)')sq//'def'//sq//'fixdrop{'//sq//'advance'//sq// + * 'sysno by 1'//sq//'ifcase'//sq//'sysno%' + end if + lastchar = .false. + ibcoff = 0 + if (xmtrnum0 .gt. 0.) ibcoff = -1 + open(11,status='SCRATCH') +c +c vshrink for the first page is calculated in topfile, +c and if true set interstaff=10. vshrink affects Titles. +c Must also save vshrink for page ending. +c + call topfile(basenameq,lbase,nv,clefq,noinst,musicsize, + * xintstaff(1),mtrnmp,mtrdnp,vshrink,fbar,fontslur) +c +c ninow is working value of # of instruments. noinst is max #, and # at start. +c + ninow = noinst +c +c Save original printed meter in case movement breaks +c + movnmp = mtrnmp + movdnp = mtrdnp +c + if (islast .and. figbass .and. musicsize.eq.16) + * write(11,'(a)')sq//'def'//sq//'figfont{'//sq//'eightrm}%' +c + if (islast .and. isligfont) then + if (musicsize .eq. 16) then + write(11,'(a)')sq//'font'//sq//'ligfont=cmrj at 8pt%' + else + write(11,'(a)')sq//'font'//sq//'ligfont=cmrj at 10pt%' + end if + end if + lenbeat = ifnodur(mtrdenl,'x') + if (mtrdenl .eq. 2) lenbeat = 16 + lenb1 = mtrnuml*lenbeat + if (mtrdenl .eq. 2) lenb1 = lenb1*2 + call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) + lenb0 = nint(xmtrnum0*lenbeat) + if (mtrdenl .eq. 2) lenb0 = lenb0*2 + if (lenb0 .ne. 0) then + if (islast) write(11,'(a)')sq//'advance'//sq//'barno by -1' + lenbar = lenb0 + else + lenbar = lenb1 + end if +c +c Initialize full-program variables +c + fixednew = 0. + scaldold = 0. + fintstf = -1. + gintstf = 1. + nasksys = 0 + ibarcnt = 0 + iline = 0 + movbrk = 0 + isystpg = 0 + ipage = 1 + iccount = 128 + iask = 0 + nhstot = 0 + nb = 1 + if (.not.optimize) jprntb = 81 + idsig = 0 + iflagbot = 0 +c +c Next 5 are raise-barno parameters. irzbnd is integer part of default level. +c + irzbnd = 3 + if (isig.eq.3 .and. clefq(nv).eq.'t') irzbnd = 4 + is1n1 = 0 + isnx = 0 + SlurCurve = 0. + ishort = 0 + nocodabn = .false. + mbrsum = 0 + nmbr = 0 +c +c 111109 Made global rather than per gulp +c + ndyn = 0 + ispoi = .false. + slint = .false. + lrptpend = .false. + rptnd1 = .false. + rptfq2 = 'E' + rptprev = .false. + onvolt = .false. + flgndb = .false. + fbon = .false. + shifton = .false. + ornrpt = .false. + setis = .false. + lowdot = .false. + rename = .false. + nobar1 = .false. + equalize = .false. + usevshrink = .true. + WrotePsslurDefaults = .false. + OptLineBreakTies = .false. + HeaderSpecial = .false. +c +c vshrink is initialized in topfile +c + stickyS = .false. +c +c ixrest = 1 or 2 if xtup has started with a rest +c + do 1 ivx = 1 , nm + ixrest(ivx) = 0 + fullsize(ivx) = 1. +c +c Set legacy note level to middle c as default +c + ndlev(ivx,1) = 29 + ndlev(ivx,2) = 29 +1 continue + npreslur = 0 + nhssys = 0 + listslur = 0 + do 31 i = 1 , 202 + isdat1(i) = 0 + isdat2(i) = 0 +31 continue + nsdat = 0 +c +c Initialize flag for figures in any other voice than 1 +c + ivxfig2 = 0 +c +c Initialize for loop over gulps +c + firstgulp = .true. +c +c Start a gulp +c +30 loop = .true. + notcrd = .true. + isbjmp = .false. + isbj2 = .false. + autofbon = .false. + tautofb = 0. + nbars = 0 + nfigs(1) = 0 + nfigs(2) = 0 + ngrace = 0 + ntrill = 0 + ncrd = 0 + nudorn = 0 + nlit = 0 + nvolt = 0 + ibarmbr = 0 + nudsp = 0 +c ndyn = 0 ! 111109 + ntxtdyn = 0 + nbc = 0 + NumArpShift = 0 + do 3 i = 1 , 37 + graspace(i) = 0. +3 continue +c +c Now initialize up to nv. Do it in getnote as r'qd for 2nd voices per syst. +c and also if nv increases in an 'M' directive. +c + do 4 iv = 1 , nv + call newvoice(iv,clefq(iv),.false.) +4 continue +c +c Check if endsymbol was set earlier +c + if (rptnd1) then + rptnd1 = .false. + rptfq2 = rptfq1 + else +c +c Only use if movbrk>0, to signal default ('RD') +c + rptfq2 = 'E' + end if + iv = 1 + ivx = 1 +2 if (loop) then +c +c Within this loop, nv voices are filled up for the duration of the block. +c On exit (loop=.false.) the following are set: nnl(nv),itsofar(nv) +c nolev(nv,nnl(nv)),nodur(..),accq(..),irest(..). +c nbars is for this input block. +c Only at the beginning of an input block will there be a possible mtr change, +c signalled by a nonzero mtrnuml. (which will be re-zeroed right after change) +c + call getnote(loop) + if (lastchar) go to 40 + go to 2 + end if +c +c Finished an input block (gulp). +c + if (ismidi) then +c +c Put rests into midi array for 2nd lines that were not used in this gulp. +c + do 60 iv = 1 , nv + if (twoline(iv) .and. nvmx(iv).eq.1) then + if (firstgulp .and. lenb0.ne.0) then + call addmidi(midchan(iv,2),0,0,0, + * (nbars-1.)*lenbar+lenb0,.true.,.false.) + else + call addmidi(midchan(iv,2),0,0,0,1.*nbars*lenbar,.true., + * .false.) + end if + end if +60 continue + end if + nvolt = 0 + do 28 iv = 1 , nm + nudoff(iv) = 0 + maxdotmv(iv) = ndotmv(iv) + ndotmv(iv) = 0 +28 continue +c +c Put stuff at top of p.1. Must wait until now to have read title info. +c + if (ibarcnt .eq. 0) then + call puttitle(inhnoh,xnsttop(ipage), + * etatop,sq,etait,etatc,etacs1,nv,vshrink,sepsymq) + if (HeaderSpecial) +c +c Write special header for first page +c + * write(11,'(a)')chax(92)//'special{header=psslurs.pro}%' + end if + do 10 ibar = 1 , nbars + ibarcnt = ibarcnt+1 + bar1syst = ibarcnt .eq. iauto + ndig = max(0,int(log10(.001+ibarcnt+ibcoff))) + if (islast) + * write(11,'(a11,i'//chax(50+ndig)//')') + * '% Bar count',ibarcnt+ibcoff + if (ibar .ne. ibarmbr) then + if (.not.optimize) call outbar(ibarcnt+ibcoff,jprntb) + else + if (.not.optimize) then + write(*,'(/,a20,i4,a1,i4)')' Multibar rest, bars', + * ibarcnt+ibcoff,'-',ibarcnt+ibcoff+mbrest-1 + write(15,'(/,a20,i4,a1,i4)')' Multibar rest, bars', + * ibarcnt+ibcoff,'-',ibarcnt+ibcoff+mbrest-1 + jprntb = 0 + end if + ibcoff = ibcoff+mbrest-1 +c if (ibar.eq.1 .and. firstgulp .and. +c * .not.btest(islur(1,1),5)) xb4mbr = facmtr*musicsize + if (ibar.eq.1 .and. firstgulp .and. + * .not.btest(islur(1,1),5)) xb4mbr = -.2*musicsize + end if +c +c Move the read to after end-of-bar hardspace checks, so we get right poenom +c at end of a line. +c if (bar1syst) read(12,*) poenom +c +c Check for clef at start of bar. No slide yet. Also flags at end of prev. +c bar. This block is run at the start of every bar. May fail for flag at +c end of last bar. To account for necc. hardspaces, compute and store +c nhssys = # of hard spaces for this system +c hesk(nhssys) = elemskips avialable +c hpts(nhssys) = hard points needed, including notehead +c Here, merely insert placeholder into output. Later, when poe is computed, +c compute additional pts and store them in hpttot(1...nhstot). Finally in +c subroutine askfig, write true pts where placeholders are. +c + ioff = 0 + if (ibar .gt. 1) ioff = nib(1,ibar-1) + clchb = btest(islur(1,ioff+1),15) + putmbr = .false. + if (ismbr) then + if (clchb) then +ccc +ccc Clef change and multi-bar rest coming up. Kluge to get space at end of rest. +ccc + write(11,'(a)')sq//'let'//sq//'mbrt'//sq//'mbrest' + * //sq//'def'//sq//'mbrest#1#2#3{%' + write(11,'(a14,f4.1,a)')sq//'mbrt{#1}{#2}{',musicsize*.55, + * '}'//sq//'global'//sq//'let'//sq//'mbrest'//sq//'mbrt}%' +cc +cc RDT suggestion is inset blank barline - 160103 Abandoned +cc +c write(11,'(a)')sq//'setemptybar'//sq//'bar'//sq//'qspace' +c * //sq//'advance'//sq//'barno-1' + end if + ismbr = .false. + putmbr = .true. + end if + if (ibar .eq. ibarmbr) ismbr = .true. +c +c Set flag here so at start of next bar, if there's a clef change, can add space +c after the mbr with the above kluge +c + if (.not.(clchb .or. flgndb)) go to 23 +c +c Must check available space +c + ptsndb = 0. +c +c Zero out block signal +c + if (clchb) islur(1,ioff+1) = ibclr(islur(1,ioff+1),15) +c +c In this loop, we determine how much hardspace is needed (if any) +c 9/7/97 Note that for last bar in input block, if number of lines of +c music decreases in new block, highest numbered ones won't be checked +c since the loop below covers the new nvmx(iv), not necessarily the old +c one. +c 4/18/98 Apparently nmxsav was a solution to the above problem +c + do 16 iv = 1 , nv + do 16 kv = 1 , nvmxsav(iv) + ivx = ivmxsav(iv,kv) + ptsndv = flgndv(ivx)*wheadpt + ioff = 0 + if (ibar .gt. 1) then + ioff = nib(ivx,ibar-1) + ip = ioff + if (ibar.gt.2) ip = ioff-nib(ivx,ibar-2) +c prevtn(ivx) = tnote(iand(ipl(ivx,ip),255)) + prevtn(ivx) = tnote(ipl2(ivx,ip)) +c +c If ibar=1 (1st bar in input block), prevtn(ivx) was set at end of makeabar. +c + end if +c +c Only allow clef changes when ivx <= nv +c + if (ivx .le. nv) then + clchv(iv) = clchb .and. btest(islur(iv,ioff+1),11) + if (clchv(iv)) then +c +c Clef change in this voice. Turn off signal. Get space avail. +c + islur(iv,ioff+1) = ibclr(islur(iv,ioff+1),11) + if (abs(prevtn(iv)-space(nb)).lt.tol) ptsndv = + * ptsndv+clefend*wheadpt + end if + end if + ptsndb = max(ptsndb,ptsndv+wheadpt*xspfac) +16 continue +c +c ???? where is nb set??? nb probably in left over from makeabar +c + esk = feon(space(nb)*squez(nb)) + ptsdflt = esk*poenom-wheadpt +c if ((ptsndb.gt.ptsdflt.or.ptsgnd.gt.0.) .and. movbrk.eq.0) then + if ((ptsndb.gt.ptsdflt.or.ptsgnd.gt.0.) .and. movbrk.eq.0 + * .and. .not.putmbr) then +c +c Must ADD hardspace! So put in a placeholder, and store params for later. +c + if (islast) write(11,'(a)')sq//'xardspace{ pt}%' + nhssys = nhssys+1 + if (ptsndb-ptsdflt .gt. ptsgnd-poenom*eskgnd) then + hesk(nhssys) = esk + hpts(nhssys) = ptsndb+wheadpt + else + hesk(nhssys) = eskgnd + hpts(nhssys) = ptsgnd+wheadpt + end if + fixednew = fixednew+hpts(nhssys) + scaldold = scaldold+hesk(nhssys) + end if + if (clchb) then + do 17 iv = 1 , nv + if (clchv(iv)) then + notexq = sq//'znotes' + lnote = 7 + do 24 iiv = 2 , iv + notexq = notexq(1:lnote)//sepsymq(iiv-1) + lnote = lnote+1 +24 continue +c +c Recompute ioff since it will vary from voice to voice +c + if (ibar .eq. 1) then + ioff = 0 + else + ioff = nib(iv,ibar-1) + end if +c +c Must call clefsym to get nclef, even if there is a movement break +c + call clefsym(islur(iv,ioff+1),fmtq,lclef,nclef) +c +c If clefq = '8', must change '0' in pos'n 9 to '8' +c + if (btest(ipl(iv,ioff+1),2)) fmtq = + * fmtq(1:8)//'8'//fmtq(10:10) + if (movbrk.eq.0 .and. + * islast) + * write(11,'(a)')notexq(1:lnote)//fmtq(1:lclef)//sq//'en%' + call wsclef(iv,ninow,nclef) +c +c Set new flag to be used just outside this loop, to kluge +c any calls to \CenterBar for full-bar rests, to make room for clef. +c + newclef = .true. +c +c 151220 +c wrong test: +c If clefq = '8', must add eg \settrebleclefsymbol3\treblelowoct% +c Replaced with right one. But also, clefq(iv) seems to stay at 8 here, +c and if we change from TLO to normal clef, need to resetclefsymbols +c +c if (clefq(iv) .eq. '8') then + if (btest(ipl(iv,ioff+1),2)) then +c +c Find instrument number for voice iv +c + iv1 = 1 + do 1111 iinst = 1 , ninow + if (iv .lt. iv1+nspern(iinst)) go to 2222 + iv1 = iv1+nspern(iinst) +1111 continue + print* + print*,'Should not be here in pmxb!' + call stop1() +2222 continue + if (iinst .le. 9) then + write(11,'(a20,i1,a)')sq//'settrebleclefsymbol',iinst, + * sq//'treblelowoct%' + else + write(11,'(a20,i2,a)')sq//'settrebleclefsymbol',iinst, + * sq//'treblelowoct%' + end if + c8flag(iv) = .true. + else + if (clefq(iv) .eq. '8') then + write(11,'(a20)')sq//'resetclefsymbols' + end if + end if + end if +17 continue + if (islast) write(11,'(a)')sq//'pmxnewclefs' + end if +23 continue +c +c Kluge \CenterBar for whole bar rests if necessary +c + if (newclef .and. centrests) then +c write(11,'(a)')sq//'def'//sq//'value{11}%' + nvalue = nint(.55*musicsize) + if (nvalue .gt. 10) then + write(11,'(a11,i2,a2)') + * sq//'def'//sq//'value{',nvalue,'}%' + else + write(11,'(a11,i1,a2)') + * sq//'def'//sq//'value{',nvalue,'}%' + end if + end if + newclef = .false. + centrests = .false. +c +c End of loop for end-of-bar hardspaces and non-movbrk clef symbol. +c + if (bar1syst) then + read(12,*) poenom + end if +c +c Repeat symbols. Haven't slid down yet, so use islur(1,nib(1,ibar-1)+1) +c + if (ibar .eq. 1) then + islnow = islur(1,1) +c iornqnow = iornq(1,1) + iplnow = ipl(1,1) + else + islnow = islur(1,nib(1,ibar-1)+1) +c iornqnow = iornq(1,nib(1,ibar-1)+1) + iplnow = ipl(1,nib(1,ibar-1)+1) + end if +c +c Check for R-symbols set at end of prior input block +c + if (movbrk.eq.0 .and. rptfq2.ne.'E') then + if (rptfq2 .eq. 'D') then + islnow = ibset(islnow,26) + else if (rptfq2 .eq. 'r') then + islnow = ibset(islnow,6) + else if (rptfq2 .eq. 'd') then + islnow = ibset(islnow,8) + else if (rptfq2 .eq. 'b') then + islnow = ibset(islnow,25) + else + print* + print*,'Illegal symbol with "R" at end of input block:', + * rptfq2 + call stop1() + end if + rptfq2 = 'E' + end if + if (iand(islnow,352) .ne. 0) then +c +c Bit 5(lrpt), 6(rrpt), or 8(doublebar) has been set +c + lrpt = btest(islnow,5) + rrpt = btest(islnow,6) + lrptpend = lrpt.and.bar1syst + if (lrpt .and. .not.lrptpend) then + if (rrpt) then + if (islast) write(11,'(a)')sq//'setleftrightrepeat' + fixednew = fixednew+wheadpt*lrrptfac-0.4 + else + if (islast) write(11,'(a)')sq//'setleftrepeat' + fixednew = fixednew+wheadpt*rptfac-0.4 + end if + else if (rrpt) then + if (islast) write(11,'(a)')sq//'setrightrepeat' + fixednew = fixednew+wheadpt*rptfac-0.4 + else if (btest(islnow,8)) then + if (islast) write(11,'(a)')sq//'setdoublebar' + fixednew = fixednew+wheadpt*dbarfac-0.4 + end if + else if (btest(islnow,26)) then +c +c doubleBAR +c + if (islast) write(11,'(a)')sq//'setdoubleBAR' + fixednew = fixednew+wheadpt*ddbarfac-0.4 +c else if (btest(iornqnow,29)) then + else if (btest(iplnow,0)) then +c +c no bar line +c +c-- if (islast) write(11,'(a)')sq//'setzalaligne' +c++ + if (islast) then + if (movbrk .eq. 0) then + write(11,'(a)')sq//'setzalaligne' + else +c +c Encountered "Rz" at start of input block at start of new movement, Must +c use newmovement macro with arg 4 rather than setzalaligne, since former +c already redefines stoppiece. +c + rptfq2 = 'z' + end if + end if +c++ + fixednew = fixednew-0.4 + end if +c +c 1st and 2nd endings +c + svolta = btest(islnow,7) + evolta = btest(islnow,9) + if (evolta) then + if (btest(islnow,10)) then + if (islast) write(11,'(a)')sq//'endvoltabox' + else + if (islast) write(11,'(a)')sq//'endvolta' + end if + onvolt = .false. + end if + if (svolta) then + nvolt = nvolt+1 + lvoltxt = index(voltxtq(nvolt),' ')-1 + if (lvoltxt .eq. 1) then + if (islast) write(11,'(a)')sq//'Setvolta' + * //voltxtq(nvolt)(1:1)//'%' + else + if (islast) write(11,'(a)')sq//'Setvolta'//'{'// + * voltxtq(nvolt)(1:lvoltxt)//'}%' + end if + onvolt = .true. + end if + if (ibar .gt. 1) then + ipnow = nib(1,ibar-1)+1 + else + ipnow = 1 + end if + iplnow = ipl(1,ipnow) + if (bar1syst) then +c +c If listslur>0, then there is at least one slur or tie carried over the break +c + ispstie = .false. + if (OptLineBreakTies .and. .not.fontslur .and. listslur.ne.0 + * .and. islast) + * call LineBreakTies(isdat1,isdat2,isdat3,isdat4, nsdat, + * ispstie,sepsymq) + iline = iline+1 +c +c End an old system, Start a new system +c +c Reduce space before mbrest at start of system +c Need this even if no accidentals in key signature +c + if (ibar.eq.ibarmbr) xb4mbr = -.2*musicsize +c + if (iline .ne. 1) then +c +c Not first line. +c Get corrected poe = points/elemskip for *previous* system +c + wdpt = widthpt*(1-fracindent) + poe = (wdpt-fsyst*musicsize-0.4*nbarss-fixednew)/ + * (elsktot+fbar*nbarss-scaldold) + isyscnt = isyscnt+1 + poevec(isyscnt) = poe +c +c Transfer data for system into global arrays to hold until very end +c + do 9 ia = 1 , nasksys + iask = iask+1 + ask(iask) = (wasksys(ia)/poe-abs(elasksys(ia))) + * /poefa(iline-1) +c +c Only admit negative ask if it was user-defined space, signalled by elask<=0. +c + if (elasksys(ia).gt.0) ask(iask)=dim(ask(iask),0.) +9 continue + do 25 ia = 1 , nhssys + nhstot = nhstot+1 + hpttot(nhstot) = max(hpts(ia)-hesk(ia)*poe,0.) +25 continue +c +c Reset counters for new system +c + scaldold = 0. + fixednew = 0. + nasksys = 0 + nhssys = 0 + end if +c +c End of if block for first bar of non-first system. Still 1st bar, any system +c + if (islast.and.figbass) write(11,'(a)')sq//'fixdrop%' + isystpg = isystpg+1 +c +c Try moving the next stmt way down, to fix a bug and get \eject printed at +c end of single-system page. +c if (isystpg .eq. nsystp(ipage)) isystpg = 0 + read(12,*)nbarss,elsktot,fsyst,frac,eonk,ewmxk + if (iline .gt. 1) fracindent=frac + if (figbass) then + ifigdr(1,iline) = 4 + ifigdr(2,iline) = 4 + end if + slfac = slfac1*musicsize*elsktot + if (iline .ne. 1) then +c +c For the line just _finished_, put figdrop in separate file. +c + if (figbass) write(14,'(a9,i2,a10,i2,1x,a4)') + * sq//'figdrop=',ifigdr(1,iline-1), + * ' '//sq//'figdtwo=',ifigdr(2,iline-1),sq//'or%' +c +c Check slurs in top staff for interference w/ barno. Only check when +c # if digits in barno >= |isig| But to keep on/off phasing, must ALWAYS +c keep track of ons and offs when |isig|<=3. +c + ndigbn = int(alog10(ibarcnt+ibcoff+.01))+1 + isnx = 0 + if (ndigbn.ge.iabs(isig) .and. is1n1.gt.0) then +c +c There's a slur in top voice over the line break, hgt=is1n1, idcode=is2n1 +c Look for termination in remainder of this input block. If not found, +c just use is1n1. Remember, haven't slid down yet. +c + ioff = 0 + if (ibar .gt. 1) ioff = nib(ivmx(nv,nvmx(nv)),ibar-1) + do 50 isdat = 1 , nsdat + if (igetbits(isdat1(isdat),5,13).eq.ivmx(nv,nvmx(nv)) + * .and. .not.btest(isdat1(isdat),11) + * .and. igetbits(isdat1(isdat),7,19).eq.is2n1) then +c +c Found slur ending. Just check note height, can't do fine adjustments. +c +c is1n1 = max(is1n1,igetbits(isdat2(nsdat),7,19)) + is1n1 = max(is1n1,igetbits(isdat2(isdat),7,19)) + go to 51 + end if +50 continue +c +c If exiting loop normally, did not find end of slur. c'est la vie. +c +51 continue + isnx = idim(is1n1,ncmid(nv,1)+1+irzbnd) + if (isnx .gt. 0) then +c +c AHA! Slur likely to interfere with barno. +c +c Modified 090525 to use \bnrs +c + slint = .true. + fmtq = '(a16,i1,a14)' + if (irzbnd+isnx .gt. 9) fmtq = '(a16,i2,a14)' + if (islast) write(11,fmtq)sq//'def'//sq//'raisebarno{', + * irzbnd+isnx,'.5'//sq//'internote}%' +c if (islast) then +c if (isnx .le. 9) then +c write(11,'(a5,i1,a2)')sq//'bnrs',isnx,'0%' +c else +c write(11,'(a6,i2,a3)')sq//'bnrs{',isnx,'}0%' +c end if +c end if +c + end if + end if + if (movbrk .gt. 0) then +c +c movbrk = 0 +c Move the reset down, so can use movbrk>0 to stop extra meter prints. +c +c New movement. Redefine stoppiece, contpiece. These will be called either +c explicitly or as part of alaligne. +c indsym = 0,1,2 for doubleBAR , doublebar, rightrepeat. +c This is passed to \newmovement. +c + if (rptfq2 .eq. 'E') rptfq2 = 'D' + indsym = index('Ddrbz',rptfq2)-1 + rptfq2 = 'E' +c +c Also check for Rd or Rr set the normal way +c + if (btest(islnow,8)) then + indsym = 1 + else if (btest(islnow,6)) then + indsym = 2 + end if + if (indsym .lt. 0) then + print* + print*,'Illegal end symbol before "/"' + call stop1() + end if +c +c Check for continuation (no bar number reset) +c + if (islast.and.nobar1) then + write(11,'(a)')sq//'advance'//sq//'barno1' + * //sq//'global'//sq//'startbarno'//sq//'barno%' +c +c Need above for shortening case mcm with Mc +c + end if +c +c Per Rainer's suggestion, changing \nbinstruments via 3rd arg of \newmovement +c +c if (movgap .lt. 10) then +c if (islast) write(11,'(a12,2i1,a1)') +c * sq//'newmovement',movgap,indsym,'%' +c else +c if (islast) write(11,'(a13,i2,a1,i1,a1)') +c * sq//'newmovement{',movgap,'}',indsym,'%' +c end if + if (islast) then + nmq = sq//'newmovement' + lnmq = 12 + if (movgap .lt. 10) then + lnmq = 14 + write(nmq(13:14),'(2i1)')movgap,indsym + else + lnmq = 17 + write(nmq(13:17),'(a1,i2,a1,i1)')'{',movgap,'}',indsym + end if + if (ninow .lt. 10) then + lnmq = lnmq+1 + write(nmq(lnmq:lnmq),'(i1)')ninow + else + lnmq = lnmq+4 + write(nmq(lnmq-3:lnmq),'(a1,i2,a1)')'{',ninow,'}' + end if + lnmq = lnmq+1 + write(nmq(lnmq:lnmq),'(a1)')'%' + if (ishort .eq. 4) then +c +c Ending Short-blank-coda +c + write(11,'(a)')sq//'Endpiece}}%' + end if + write(11,'(a)')nmq(1:lnmq) + if (ishort .eq. 2) then + write(11,'(a)')sq//'stoppiece}}%' + ishort = 5 + else if (ishort .eq. 4) then + write(11,'(a)')sq//'let'//sq//'stoppiece'//sq// + * 'holdstop%' +c +c Since we bypass newmovement, need to set the vertical gap. +c + if (movgap .gt. 10) then + write(11,'(a6,i2,a11)') + * sq//'vskip',movgap,sq//'internote%' + else if (movgap .gt. 0) then + write(11,'(a6,i1,a11)') + * sq//'vskip',movgap,sq//'internote%' + end if + ishort = 6 + end if + if ((ishort.eq.5.or.ishort.eq.6).and..not.rename) then + do 62 iinst = 1 , ninow + if (islast) then + if (iinst .lt. 10) then + write(11,'(a8,i1,a3)')sq//'setname',iinst,'{}%' + else + write(11,'(a9,i2,a4)')sq//'setname{',iinst, + * '}{}%' + end if + end if +62 continue + end if + rename = .false. + end if +c +c Change generalmeter if necessary +c + if (islast) then + call wgmeter(mtrnmp,mtrdnp) + end if + mtrnuml = 0 +c +c (Moved all name-writing to getnote, right when 'M' is detected) +c + if (btest(iplnow,28)) then +c +c Key signature at movement break +c + iplnow = ibclr(iplnow,28) + if (isig .gt. 0) then + if (islast) write(11,'(a18,i1,a2)') + * sq//'generalsignature{',isig,'}%' + else + if (islast) write(11,'(a18,i2,a2)') + * sq//'generalsignature{',isig,'}%' + end if + if (islast .and. LaterInstTrans) then + call Writesetsign(nInstTrans,iInstTrans,iTransKey, + * LaterInstTrans) + end if + end if + if (parmov .ge. -.1) then +c +c Resent paragraph indentation +c + ipi = parmov*widthpt+.1 + if (ipi .lt. 10) then + if (islast) write(11,'(a11,i1,a2)') + * sq//'parindent ',ipi,'pt' + else if (ipi .lt. 100) then + if (islast) + * write(11,'(a11,i2,a2)')sq//'parindent ',ipi,'pt' + else + if (islast) + * write(11,'(a11,i3,a2)')sq//'parindent ',ipi,'pt' + end if + end if + if (ishort .eq. 6) then + if (iflagbot .eq. 1) then + write(11,'(a)')sq//'vfill'//sq//'eject' +c iflagbot = 0 +c ishort = 0 + else + write(11,'(a)')sq//'contpiece' + end if +c +c Zero ishort later trying to write alaligne +c + end if + end if ! End of movement break stuff + if (isystpg .eq. 1) then +c +c First line on a page (not 1st page, still first bar). Tidy up old page +c then eject. +c +c Removed this 5/13/01 as it was causing double endvoltas. This probably +c is only needed at the end in case there is no endvolta specified. +c if (onvolt) then +cc if (islast) write(11,'(a)')sq//'endvoltabox%' +cc onvolt = .false. +c end if +c +c +c Check for meter change at start of a new PAGE +c + if (mtrnuml .gt. 0) then +c +c Meter change at start of a new page. Ugly repeated coding here. +c + mtrnms = mtrnuml + call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) + mtrnuml = mtrnms + if (movbrk .eq. 0 .and. islast) then + call wgmeter(mtrnmp,mtrdnp) + end if + end if +c +c Key signature change? +c + if (btest(iplnow,28) .and. movbrk.eq.0) then + notexq = sq//'xbar'//sq//'addspace{-'//sq// + * 'afterruleskip}'//sq//'generalsignature{' + lnote = 49 + if (isig .lt. 0) then + notexq = notexq(1:49)//'-' + lnote = 50 + end if + if (islast) write(11,'(a)') + * notexq(1:lnote)//chax(48+abs(isig))//'}%' + if (islast .and. LaterInstTrans) then + call Writesetsign(nInstTrans,iInstTrans,iTransKey, + * LaterInstTrans) + end if + if (islast .and. ignorenats) + * write(11,'(a)')sq//'ignorenats%' + if (islast) write(11,'(a)')sq//'zchangecontext'//sq + * //'addspace{-'//sq//'afterruleskip}' + * //sq//'zstoppiece'//sq//'PMXbarnotrue%' + else if (mtrnuml.gt.0 .and. movbrk.eq.0) then +c +c Meter change but no signature change +c + if (islast) + * write(11,'(a)')sq//'xchangecontext'//sq//'addspace{-'// + * sq//'afterruleskip}'//sq//'let'//sq//'bnat'//sq// + * 'barnoadd%' + if (islast) + * write(11,'(a)')sq//'def'//sq//'barnoadd{'//sq//'let'// + * sq//'barnoadd'//sq//'bnat}'//sq//'zstoppiece%' + else + if (islast) then + if ((ishort.eq.4.or.ishort.eq.2) + * .and. iflagbot.eq.1) then + ntmp = ibarcnt-ibarcnt0-nmbr+mbrsum + if (ntmp .le. 9) then + shortfraq(1:1) = char(48+ntmp) + lntmp = 1 + else + write(shortfraq(1:2),'(i2)')ntmp + lntmp = 2 + end if + write(11,'(a)')sq//'endpiece}}'//sq//'advance'//sq + * //'barno'//shortfraq(1:lntmp) +c +c Move down so can insert fil@begin +c iflagbot = 0 +c ishort = 0 +c + else if ((ishort.ne.6.and.ishort.ne.2) .or. + * iflagbot.ne.1) then + write(11,'(a)')sq//'stoppiece%' + end if + end if + end if +c +c This is the key spot when vshrink is used. Value of vshrink here comes from +c just after the prior pagebreak, i.e., it is not affected by "Av" +c that may have been entered at this pagebreak, since that only affects usevshrink. +c So choose page *ending* (with or without \vfill) depending on old vshrink. Then +c check value of usevshrink to reset vshrink if necessary for the new page, where +c we have to set \interstaff and later call puttitle. +c Top of first page needs special treatment. For this we use +c novshrinktop, which was set in g1etnote on the first pass, since on +c second pass, vshrink at top of page one is dealt with in topfile, which is called +c *before* any reading in any "Av" at the top of the first input block. +c + if (.not.vshrink) then + if (islast .and. bottopgap) then + if (abs(botamt) .gt. 1.e-6) then + if (botamt .gt. 9.95) then + fmtq = '(a,f4.1,a)' + else if (botamt .gt. 0.) then + fmtq = '(a,f3.1,a)' + else if (botamt .gt. -9.95) then + fmtq = '(a,f4.1,a)' + else + fmtq = '(a,f5.1,a)' + end if + write(11,fmtq)sq//'null'//sq//'vskip',botamt, + * sq//'Internote%' + end if + end if + xnstbot = xnsttop(ipage)*etabot/etatop + if (xnstbot .lt. 9.95) then + fmtq = '(a,f3.1,a)' + else + fmtq = '(a,f4.1,a)' + end if + if (islast) write(11,fmtq)sq//'vskip',xnstbot, + * sq//'Interligne'//sq//'eject%' + if (islast .and. bottopgap) then + if (abs(topamt) .gt. 1.e-6) then + if (topamt .gt. 9.95) then + fmtq = '(a,f4.1,a)' + else if (topamt .gt. 0.) then + fmtq = '(a,f3.1,a)' + else if (topamt .gt. -9.95) then + fmtq = '(a,f4.1,a)' + else + fmtq = '(a,f5.1,a)' + end if + write(11,fmtq)sq//'null'//sq//'vskip',topamt, + * sq//'Internote%' + end if + bottopgap = .false. + end if + else + if (islast) then + if (iflagbot.eq.1.and.ishort.eq.6)then +c +c cleanup for case bcm only +c + iflagbot = 0 + ishort = 0 + else + write(11,'(a)') sq//'vfill'//sq//'eject%' + if (iflagbot.eq.1.and.ishort.eq.2) then +c Clean up case bsl only + write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' + * //sq//'makeatother' + iflagbot = 0 + ishort = 0 + end if + end if + end if + end if + ipage = ipage+1 +c +c Now that page is ejected, compute new vshrink +c + vshrink = xintstaff(ipage).gt.20 .and. usevshrink + if (vshrink) then + xinsnow = 10 + else + xinsnow = xintstaff(ipage) + end if + if (fintstf.gt.0 .and. ipage.gt.1) then + xinsnow = xinsnow*fintstf/gintstf + fintstf = -1. + end if + if (xinsnow .lt. 9.95) then + fmtq = '(a,f3.1,a)' + else if (xinsnow .lt. 99.95) then + fmtq = '(a,f4.1,a)' + else + fmtq = '(a,f5.1,a)' + end if +c +c Vertical spacing parameters, then restart +c + if (is4bignv) xinsnow = .95*xinsnow + if (islast) then + write(11,fmtq)sq//'interstaff{',xinsnow, + * '}'//sq//'contpiece' + end if +c +c Check for meter change at start of a new PAGE +c + if (mtrnuml .gt. 0) then +c +c Meter change at start of a new page +c + call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) + if (movbrk .eq. 0) then + if (islast) then + call wgmeter(mtrnmp,mtrdnp) + end if + if (mtrdnp .gt. 0) then + if (islast) write(11,'(a)')sq//'newtimes2%' + if (ibar .eq. ibarmbr) xb4mbr = -.2*musicsize + end if + end if + end if +c +c If no real titles here, which there probably will never be, make vertical +c space at page top with \titles{...}. headlog=.false.<=>no real titles +c + if (ishort.eq.4 .and. iflagbot.eq.1) then + ishort = 0 + iflagbot = 0 + write(11,'(a)')sq//'makeatletter'//sq//'fil@begin'//sq// + * 'makeatother' + end if + call puttitle(inhnoh,xnsttop(ipage),etatop, + * sq,etait,etatc,etacs1,nv,vshrink,sepsymq) + if (HeaderSpecial) +c +c Write special header for first page +c + * write(11,'(a)')chax(92)//'special{header=psslurs.pro}%' + else +c +c First bar of system, not a new page, force line break +c + if (btest(iplnow,28)) then +c +c Signature change +c + notexq = sq//'xbar'//sq//'addspace{-'//sq// + * 'afterruleskip}'//sq//'generalsignature{' + lnote = 49 + if (isig .lt. 0) then + notexq = notexq(1:49)//'-' + lnote = 50 + end if + if (islast) write(11,'(a)')notexq(1:lnote) + * //chax(48+abs(isig))//'}%' + if (islast .and. LaterInstTrans) then + call Writesetsign(nInstTrans,iInstTrans,iTransKey, + * LaterInstTrans) + end if + if (islast) write(11,'(a)')sq//'advance'//sq//'barno-1%' + if (mtrnuml .ne. 0) then +c +c Meter+sig change, new line, may need mods if movement break here. +c + call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) + if (islast) then + call wgmeter(mtrnmp,mtrdnp) + if (ignorenats) write(11,'(a)')sq//'ignorenats%' + write(11,'(a)')sq//'xchangecontext'//sq// + * 'addspace{-'//sq//'afterruleskip}' + * //sq//'zstoppiece'//sq//'PMXbarnotrue'//sq//'contpiece%' + write(11,'(a)')sq//'addspace{-'//sq + * //'afterruleskip}%' + call wgmeter(mtrnmp,mtrdnp) + if (ignorenats) write(11,'(a)')sq//'ignorenats%' + write(11,'(a)')sq//'zchangecontext' + end if + else + if (islast .and. ignorenats) + * write(11,'(a)')sq//'ignorenats%' + if (islast) write(11,'(a)')sq//'xchangecontext'//sq// + * 'addspace{-'//sq//'afterruleskip}' + * //sq//'zstoppiece'//sq//'PMXbarnotrue'//sq//'contpiece%' + end if + else if (mtrnuml.eq.0.and.(ishort.eq.0.or.ishort.eq.6)) + * then +c +c No meter change +c + if (islast) then + if (ishort .ne. 6) then + write(11,'(a)')sq//'alaligne' + else + ishort = 0 + end if + end if + else if (ishort .ne. 0) then + if (ishort .eq. 1) then ! Start short line + write(shortfraq,'(f3.2)')shortfrac + write(11,'(a)')sq//'stoppiece'//sq//'parindent 0pt' + write(11,'(a)')sq//'vskip'//sq//'parskip' + write(11,'(a)')sq//'hbox to'//sq// + * 'hsize{'//sq//'vbox{'// + * sq//'hsize='//shortfraq//sq//'hsize%' + write(11,'(a)')sq//'contpiece' + write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' + * //sq//'makeatother' + ibarcnt0 = ibarcnt + mbrsum = 0 + ishort = 2 + nmbr = 0 + else if (ishort .eq. 2) then ! End short line, no new mvt + ntmp = ibarcnt-ibarcnt0-nmbr+mbrsum + if (ntmp .le. 9) then + shortfraq(1:1) = char(48+ntmp) + lntmp = 1 + else + write(shortfraq(1:2),'(i2)')ntmp + lntmp = 2 + end if + write(11,'(a)')sq//'stoppiece}}'//sq//'advance'//sq + * //'barno'//shortfraq(1:lntmp) +c +c Not clear why we needed this +c //sq//'startbarno'//sq//'barno%' + write(11,'(a)')sq//'contpiece' + write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' + * //sq//'makeatother' + ishort = 0 + else if (ishort .eq. 5) then ! End short line, new mvt + if (nobar1) then ! Continue bar numbering + write(11,'(a)')sq//'advance'//sq + * //'barno'//char(ibarcnt-ibarcnt0+48) + * //sq//'startbarno'//sq//'barno%' +c +c Must leave in \startbarno to get msm with LMc to work. +c + end if + write(11,'(a)')sq//'startpiece'//sq//'addspace'//sq + * //'afterruleskip%' + ishort = 0 + else if (ishort .eq. 3) then ! Mid line gap, start coda +c May never come thru here. Stuff is done later at least for mcl.pmx + write(shortfraq,'(f3.2)')codafrac + write(11,'(a)')sq//'endpiece}'//sq//'advance'//sq + * //'barno'//char(ibarcnt-ibarcnt0+48)//sq// + * 'startbarno'//sq//'barno%' + write(11,'(a)')sq//'hfill'//sq// + * 'vbox{'//sq//'hsize='//shortfraq//'%' + write(11,'(a)')sq//'contpiece' + write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' + * //sq//'makeatother' + ishort = 4 + else if (ishort .eq. 4) then ! End coda + ntmp = ibarcnt-ibarcnt0-nmbr+mbrsum + if (ntmp .le. 9) then + shortfraq(1:1) = char(48+ntmp) + lntmp = 1 + else + write(shortfraq(1:2),'(i2)')ntmp + lntmp = 2 + end if + write(11,'(a)')sq//'endpiece}}'//sq//'advance'//sq + * //'barno'//shortfraq(1:lntmp) + write(11,'(a)')sq//'contpiece' + write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' + * //sq//'makeatother' + ishort = 0 + mbrsum = 0 + nmbr = 0 + end if + else if (mtrnuml .ne. 0) then + +c +c New meter, no new sig, end of line, not new page. +c +c \generalmeter{\meterfrac{3}{4}}% +c \xchangecontext\addspace{-\afterruleskip}% +c \zalaligne\generalmeter{\meterfrac{3}{4}}\addspace{-\afterruleskip}% +c \zchangecontext +c + call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) + if (movbrk .eq. 0) then + if (islast) then + call wgmeter(mtrnmp,mtrdnp) + end if + if (mtrdnp .gt. 0) then + if (islast) then + write(11,'(a)') + * sq//'let'//sq//'bnat'//sq//'barnoadd' + * //sq//'def'//sq//'barnoadd{'//sq//'empty}%' + write(11,'(a)')sq//'xchangecontext'//sq// + * 'addspace{-'//sq//'afterruleskip}'//sq// + * 'zalaligne'//sq//'let'//sq//'barnoadd'//sq//'bnat' + call wgmeter(mtrnmp,mtrdnp) + write(11,'(a)')sq//'addspace{-'//sq// + * 'afterruleskip}'//sq//'zchangecontext' + end if + if (ibar .eq. ibarmbr) xb4mbr = -.2*musicsize + else + if (islast) write(11,'(a)')sq//'alaligne' + end if + else + if (islast) write(11,'(a)')sq//'alaligne' + end if + end if + end if +c +c Modified 090525 to use \bnrs +c + if (slint) then + slint = .false. + if (islast) write(11,'(a16,i1,a14)')sq//'def'//sq// + * 'raisebarno{',irzbnd,'.5'//sq//'internote}%' + end if + movbrk = 0 + end if +c +c Clean up if we squelched bar number reset at movement break +c + if (nobar1) then + if (islast) write(11,'(a)')sq//'startbarno1' + nobar1 = .false. + end if + read(12,*,end=14)iauto +14 continue +c +c We come thru here for the 1st bar of every system, so initialize is1n1 +c + is1n1 = 0 +c +c Brought down from above +c + if (isystpg .eq. nsystp(ipage)) then + isystpg = 0 +c +c The following is to avoid moving this reset of isystpg, but still send a signal +c down below for last system shortening events +c + if (ishort.eq.2) iflagbot = 1 + end if +c +c Check for linebreak ties +c + if (ispstie) + * call LineBreakTies(isdat1,isdat2,isdat3,isdat4,nsdat, + * ispstie,sepsymq) + else +c +c Not first bar of system +c + if (btest(iplnow,28)) then +c +c Signature change +c + if (mtrnuml .ne. 0) then +c +c Meter+signature change mid line, assume no movement break +c + call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) + if (islast) call wgmeter(mtrnmp,mtrdnp) + notexq = sq//'generalsignature{' + lnote = 18 + if (isig .lt. 0) then + notexq = notexq(1:18)//'-' + lnote = 19 + end if + if (islast) then + iptemp = 48+abs(isig) + charq = chax(iptemp) + notexq = notexq(1:lnote)//charq//'}%' + lnote = lnote+3 + write(11,'(a)')notexq(1:lnote) + if (islast .and. LaterInstTrans) then + call Writesetsign(nInstTrans,iInstTrans,iTransKey, + * LaterInstTrans) + end if + if (ignorenats) write(11,'(a)')sq//'ignorenats%' + write(11,'(a)')sq//'xchangecontext%' + end if + if (ibar .eq. ibarmbr) then +c +c Compute space for multibar rest +c + if (lastisig*isig .ge. 0) then + naccs = max(abs(lastisig),abs(isig)) + else + naccs = abs(lastisig-isig) + end if +c xb4mbr = (facmtr+naccs*.24)*musicsize + xb4mbr = -.2*musicsize + end if + else +c +c Signature change only +c + notexq = sq//'xbar'//sq//'addspace{-'//sq// + * 'afterruleskip}'//sq//'generalsignature{' + lnote = 49 + if (isig .lt. 0) then + notexq = notexq(1:49)//'-' + lnote = 50 + end if + if (islast) + * write(11,'(a)')notexq(1:lnote)//chax(48+abs(isig))//'}%' + if (islast .and. LaterInstTrans) then + call Writesetsign(nInstTrans,iInstTrans,iTransKey, + * LaterInstTrans) + end if + if (islast .and. ignorenats) + * write(11,'(a)')sq//'ignorenats%' + if (islast) write(11,'(a)')sq//'zchangecontext'//sq + * //'addspace{-.5'// sq//'afterruleskip}%' + if (ibar .eq. ibarmbr) then +c +c Compute space for multibar rest +c + if (lastisig*isig .ge. 0) then + naccs = max(abs(lastisig),abs(isig)) + else + naccs = abs(lastisig-isig) + end if +c xb4mbr = naccs*.24*musicsize + xb4mbr = -.2*musicsize + end if + end if + else if (ishort .eq. 3) then +c +c Gap before coda, assumed no signature change! +c + ntmp = ibarcnt-ibarcnt0-nmbr+mbrsum + if (ntmp .le. 9) then + shortfraq(1:1) = char(48+ntmp) + lntmp = 1 + else + write(shortfraq(1:2),'(i2)')ntmp + lntmp = 2 + end if + write(11,'(a)')sq//'endpiece}'//sq//'advance'//sq + * //'barno'//shortfraq(1:lntmp) + if (nocodabn) then + write(11,'(a)')sq//'nobarno' + nocodabn = .false. + end if + write(shortfraq,'(f3.2)')codafrac + write(11,'(a)')sq//'hfill'//sq// + * 'vbox{'//sq//'hsize='//shortfraq//sq//'hsize%' + write(11,'(a)')sq//'contpiece' + write(11,'(a)')sq//'makeatletter'//sq//'fil@begin' + * //sq//'makeatother' + ishort = 4 + else if (mtrnuml .eq. 0) then +c +c No meter change +c + if (islast) write(11,'(a)')sq//'xbar' + else +c +c Change meter midline +c + call setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) + if (movbrk .eq. 0) then + if (islast) then + call wgmeter(mtrnmp,mtrdnp) + end if + if (mtrdnp .gt. 0) then + if (islast) then + write(11,'(a,2i1,a)')sq//'newtimes0%' + end if +c if (ibar .eq. ibarmbr) xb4mbr = facmtr*musicsize + if (ibar .eq. ibarmbr) xb4mbr = -.2*musicsize + else + if (islast) write(11,'(a)')sq//'xbar' + end if + end if + end if + end if +c +c Now that xbar's are written, can put in left-repeats at line beginnings +c + if (lrptpend) then + if (islast) write(11,'(a)')sq//'advance'//sq//'barno-1' + * //sq//'leftrepeat' + lrptpend = .false. + end if + if (ibar .gt. 1) then +c +c For bars after first, slide all stuff down to beginning of arrays +c + do 11 iv = 1 , nv + do 11 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + ioff = nib(ivx,ibar-1) + do 12 ip = 1 , nib(ivx,ibar)-ioff + nolev(ivx,ip) = nolev(ivx,ip+ioff) + nodur(ivx,ip) = nodur(ivx,ip+ioff) + nacc(ivx,ip) = nacc(ivx,ip+ioff) + irest(ivx,ip) = irest(ivx,ip+ioff) + islur(ivx,ip) = islur(ivx,ip+ioff) + ipl(ivx,ip) = ipl(ivx,ip+ioff) + iornq(ivx,ip) = iornq(ivx,ip+ioff) + mult(ivx,ip) = mult(ivx,ip+ioff) + if (figbass .and. ivx.eq.1 .or. ivx.eq.ivxfig2) then + if (ivx.eq.1) then + isfig(1,ip) = isfig(1,ip+ioff) + else + isfig(2,ip) = isfig(2,ip+ioff) + end if + end if +12 continue + if (ivx.le.nv .and. ncc(iv).gt.1) then + islide = 0 + do 13 icc = 1 , ncc(iv) + if (tcc(iv,icc) .le. lenbar) then +c +c This time will drop <=0 when slid. +c + islide = icc-1 + ncmidcc(iv,1) = ncmidcc(iv,icc) + else + tcc(iv,icc-islide) = tcc(iv,icc)-lenbar + ncmidcc(iv,icc-islide) = ncmidcc(iv,icc) + end if +13 continue + ncc(iv) = ncc(iv)-islide + tcc(iv,1) = 0. + end if +11 continue + do 15 ig = 1 , ngrace + ipg(ig) = ipg(ig)-nib(ivg(ig),ibar-1) + if (ibar .gt. 2) ipg(ig) = ipg(ig)+nib(ivg(ig),ibar-2) +15 continue + do 21 il = 1 , nlit + iplit(il) = iplit(il)-nib(ivlit(il),ibar-1) + if (ibar .gt. 2) iplit(il) = iplit(il)+nib(ivlit(il),ibar-2) +21 continue + do 22 it = 1 , ntrill + iptrill(it) = iptrill(it)-nib(ivtrill(it),ibar-1) + if (ibar .gt. 2) iptrill(it) = + * iptrill(it)+nib(ivtrill(it),ibar-2) +22 continue + do 27 icrd = 1 , ncrd + ivx = iand(15,ishft(icrdat(icrd),-8)) + * +16*igetbits(icrdat(icrd),1,28) + ipnew = iand(255,icrdat(icrd))-nib(ivx,ibar-1) + if (ibar .gt. 2) ipnew = ipnew+nib(ivx,ibar-2) + icrdat(icrd) = iand(not(255),icrdat(icrd)) + icrdat(icrd) = ior(max(0,ipnew),icrdat(icrd)) +27 continue + do 29 iudorn = 1 , nudorn + ivx = ivxudorn(iudorn) + ipnew = iand(255,kudorn(iudorn))-nib(ivx,ibar-1) + if (ibar .gt. 2) ipnew = ipnew+nib(ivx,ibar-2) + kudorn(iudorn) = iand(not(255),kudorn(iudorn)) + kudorn(iudorn) = ior(max(0,ipnew),kudorn(iudorn)) +29 continue + do 42 idyn = 1 , ndyn + idynd = idyndat(idyn) + ivx = iand(15,idynd)+16*igetbits(idynda2(idyn),1,10) + ipnew = igetbits(idynd,8,4)-nib(ivx,ibar-1) +c +c The following construction avoids array bound errors in some compilers +c + if (ibar .gt. 2) then + ipnew = ipnew+nib(ivx,ibar-2) + end if + ipnew = dim(ipnew,0) + call setbits(idynd,8,4,ipnew) + idyndat(idyn) = idynd +42 continue + do 43 itxtdyn = 1 , ntxtdyn + idynd = ivxiptxt(itxtdyn) + ivx = iand(31,idynd) + ipnew = igetbits(idynd,8,5)-nib(ivx,ibar-1) + if (ibar .gt. 2) then + ipnew = ipnew+nib(ivx,ibar-2) + end if + ipnew = dim(ipnew,0) +c call setbits(idynd,8,4,ipnew) + call setbits(idynd,8,5,ipnew) + ivxiptxt(itxtdyn) = idynd +43 continue + do 41 isdat = 1 , nsdat + isdata = isdat1(isdat) + ivx = ivmx(igetbits(isdata,5,13),igetbits(isdata,1,12)+1) + ipnew = igetbits(isdata,8,3)-nib(ivx,ibar-1) + if (ibar .gt. 2) then + ipnew = ipnew+nib(ivx,ibar-2) + end if + ipnew = dim(ipnew,0) + call setbits(isdata,8,3,ipnew) + isdat1(isdat) = isdata +41 continue + do 44 ibc = 1 , nbc + ivx = iand(15,ibcdata(ibc))+16*igetbits(ibcdata(ibc),1,28) + ipnew = igetbits(ibcdata(ibc),8,4)-nib(ivx,ibar-1) + if (ibar .gt. 2) then + ipnew = ipnew+nib(ivx,ibar-2) + end if + ipnew = dim(ipnew,0) + call setbits(ibcdata(ibc),8,4,ipnew) +44 continue + do 45 iarps = 1 , NumArpShift + IpArpShift(iarps) = + * IpArpShift(iarps)-nib(IvArpShift(iarps),ibar-1) + if (ibar .gt. 2) then + IpArpShift(iarps) = + * IpArpShift(iarps)+nib(IvArpShift(iarps),ibar-2) + end if +45 continue +c +c Bookkeeping for figures. This will set nfigs = 0 if there are no figs left. +c If there are figs left, it will reset all times relative to start of +c current bar. +c + do 46 ivx = 1 , 2 + if (figbass) then + islide = 0 + do 20 jfig = 1 , nfigs(ivx) + if (itfig(ivx,jfig) .lt. lenbar) then +c +c This figure was already used +c + islide = jfig + else + itfig(ivx,jfig-islide) = itfig(ivx,jfig)-lenbar + figq(ivx,jfig-islide) = figq(ivx,jfig) + itoff(ivx,jfig-islide) = itoff(ivx,jfig) + ivupfig(ivx,jfig-islide) = ivupfig(ivx,jfig) + ivvfig(ivx,jfig-islide) = ivvfig(ivx,jfig) + end if +20 continue + nfigs(ivx) = nfigs(ivx)-islide + end if + if (nfigs(2) .eq. 0) go to 47 +46 continue +47 continue + end if +c +c End of sliding down for bars after first in gulp. +c +c The following may not be needed by makeabar, but just in case... +c + if (firstgulp .and. lenb0.ne.0) then + if (ibar .eq. 1) then + lenbar = lenb0 + else + lenbar = lenb1 + end if + end if +c +c Equal line spacing stuff +c + if (equalize .and. bar1syst) then + if (isystpg .eq. 1) then + write(11,'(a)')sq//'starteq%' + else if (isystpg .eq. nsystp(ipage)-1) then + write(11,'(a)')sq//'endeq%' + end if + end if + call make1bar(ibmrep,tglp1,tstart,cwrest,squez, + * istop,numbms,istart) + call make2bar(ninow,tglp1,tstart,cwrest,squez, + * istop,numbms,istart,clefq) +c +c Hardspace before barline? +c + hardb4 = 0. + do 35 iv = 1 , nv + do 35 kv = 1 , nvmx(iv) + ivx = ivmx(iv,kv) + if (btest(irest(ivx,nn(ivx)),18)) then + nudoff(ivx) = nudoff(ivx)+1 + hardb4 = max(hardb4,udoff(ivx,nudoff(ivx))) + end if +35 continue + if (hardb4 .gt. 0.) then + if (islast) write(11,'(a11,f5.1,a4)')sq + * //'hardspace{',hardb4,'pt}%' +c +c This was causing an incorrect poe in an example, which did not affect main +c spacing, but did cause an extra accidental space to be too small +c + fixednew = fixednew-hardb4 + end if +10 continue + firstgulp = .false. + lenb0 = 0 + go to 30 +40 close(12) + close(13) + ilbuf = 1 + ipbuf = 0 + wdpt = widthpt + if (iline .eq. 1) wdpt = widthpt*(1-fracindent) + poe = (wdpt-fsyst*musicsize-0.4*nbarss-fixednew)/ + * (elsktot+fbar*nbarss-scaldold) + poevec(nsyst) = poe + if (.not.islast) then + close(11) + close(16) + if (figbass) close(14) + return + end if + do 19 ia = 1 , nasksys + iask = iask+1 + ask(iask) = (wasksys(ia)/poe-abs(elasksys(ia)))/poefa(iline) + if (elasksys(ia).gt.0) ask(iask)=dim(ask(iask),0.) +19 continue + do 26 ia = 1 , nhssys + nhstot = nhstot+1 + hpttot(nhstot) = max(hpts(ia)-hesk(ia)*poe,0.) +26 continue + if (islast .and. + * onvolt) write(11,'(a)')sq//'endvoltabox' + rendq = '% ' + if (ishort .ne. 0) rendq = '}}%' + if (rptfq2 .ne. 'E') then +c +c Terminal repeat. Right or double? +c + if (rptfq2 .eq. 'r') then + if (islast) write(11,'(a)')sq//'setrightrepeat' + * //sq//'endpiece'//rendq + else if (rptfq2 .eq. 'd') then + if (islast) write(11,'(a)')sq//'setdoublebar'//sq//'endpiece' + * //rendq + else if (rptfq2 .eq. 'b') then + if (islast) write(11,'(a)')sq//'endpiece'//rendq + else if (rptfq2 .eq. 'z') then + if (islast) write(11,'(a)')sq//'setzalaligne'//sq//'Endpiece' + * //rendq + else + print* + print*,'R? , ? not "d","r",or"b","z"; rptfq2:',rptfq2 + write(15,*)'R? , ? not "d","r",or"b","z"; rptfq2:',rptfq2 + if (islast) write(11,'(a)')sq//'Endpiece' + end if + else + write(11,'(a)')sq//'Endpiece'//rendq + end if + if (.not.vshrink) then + if (islast .and. bottopgap) then + if (abs(botamt) .gt. 1.e-6) then + if (botamt .gt. 9.95) then + fmtq = '(a,f4.1,a)' + else if (botamt .gt. 0.) then + fmtq = '(a,f3.1,a)' + else if (botamt .gt. -9.95) then + fmtq = '(a,f4.1,a)' + else + fmtq = '(a,f5.1,a)' + end if + write(11,fmtq)sq//'null'//sq//'vskip',botamt, + * sq//'Internote%' + end if + end if + xnstbot = xnsttop(ipage)*etabot/etatop + if (xnstbot .lt. 9.95) then + fmtq = '(a,f3.1,a)' + else + fmtq = '(a,f4.1,a)' + end if + if (islast) write(11,fmtq)sq//'vskip',xnstbot, + * sq//'Interligne'//sq//'eject'//sq//'endmuflex' + if (islast) write(11,'(a)')sq//'bye' + else + if (islast) write(11,'(a)') + * sq//'vfill'//sq//'eject'//sq//'endmuflex' + if (islast) write(11,'(a)')sq//'bye' + end if + rewind(11) + if (figbass) then + write(14,'(a9,i2,a10,i2,1x,a5)') + * sq//'figdrop=',ifigdr(1,iline), + * ' '//sq//'figdtwo=',ifigdr(2,iline),sq//'fi}%' + rewind(14) + end if + call askfig(pathnameq,lpath,basenameq,lbase,figbass,istype0) + if (.not.optimize) then + print* + print*,'Writing ' + * //pathnameq(1:lpath)//basenameq(1:lbase)//'.tex' + print*,'Done with second PMX pass.' + write(15,'(/,a)')'Writing ' + * //pathnameq(1:lpath)//basenameq(1:lbase)//'.tex' + write(15,'(a)')' Done with second PMX pass. Now run TeX' + end if + return + end + subroutine poestats(nsyst,poe,poebar,devnorm) + parameter (nks=125) +c +c Compute avg. & norm. std. dev. of poe. +c + real*4 poe(nks) + sumx = 0. + sumxx = 0. + do 1 isyst = 1 , nsyst + sumx = sumx+poe(isyst) + sumxx = sumxx+poe(isyst)**2 +1 continue + devnorm = sqrt(nsyst*sumxx/sumx**2-1) + poebar = sumx/nsyst + return + end + subroutine precrd(ivx,ip,nolevm,nacc,ipl,irest,udq, + * twooftwo,icashft) +c +c Analyzes chords, data to be used with slurs on chords and plain chords. +c Check for 2nds, shift notes if neccesary. +c ipl(10) chord present +c irest(20) set if any note is right shifted +c irest(27) set if any note is left shifted +c ipl(8|9) left|right shift main note +c icrdat(23|24) ditto chord note +c udq is updown-ness, needed to analyze 2nds. +c levtabl(i)=0 if no note at this level, -1 if main note, icrd if chord note. +c icrdot(icrd)(27-29) sequence order of chord note if accid, top down +c + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + logical btest,is2nd,twooftwo + integer*4 kicrd(10),levtabl(88) + character*1 udq + do 11 i = 1 , 88 + levtabl(i) = 0 +11 continue + do 1 icrd1 = 1 , ncrd + ivx1 = iand(15,ishft(icrdat(icrd1),-8)) + * +16*igetbits(icrdat(icrd1),1,28) + ip1 = iand(255,icrdat(icrd1)) + if (ip1.eq.ip .and. ivx1.eq.ivx) go to 2 +1 continue + print* + print*, + * 'Cannot find first chord note in precrd. Send source to Dr. Don!' + call stop1() +2 continue + maxlev = nolevm + minlev = nolevm + levtabl(nolevm) = -1 + is2nd = .false. + naccid = 0 + levmaxacc = -100 + levminacc = 1000 +c +c Check 1st 3 bits of nacc for accid on main note of chord. +c + if (iand(7,nacc) .gt. 0) then + naccid = 1 +c +c Start list of notes with accid's. There will be naccid of them. kicrd=0 if main, +c otherwise icrd value for note with accidental. +c + kicrd(1) = 0 + levmaxacc = nolevm + levminacc = nolevm +c +c Start the level-ranking +c + icrdot0 = 1 + end if + do 3 icrd2 = icrd1 , ncrd + nolev = igetbits(icrdat(icrd2),7,12) + levtabl(nolev) = icrd2 + maxlev = max(maxlev,nolev) + minlev = min(minlev,nolev) +c +c Check for accidental +c + if (btest(icrdat(icrd2),19)) then + naccid = naccid+1 + levmaxacc = max(levmaxacc,nolev) + levminacc = min(levminacc,nolev) +c +c Add this icrd to list of values for notes with accid's. +c + kicrd(naccid) = icrd2 + if (.not.btest(nacc,28)) then +c +c Order not forced, so get the level-ranking, top down +c + iorder = 1 + do 12 iaccid = 1 , naccid-1 + if (kicrd(iaccid) .eq. 0) then + if (nolevm .gt. nolev) then + iorder = iorder+1 + else + icrdot0 = icrdot0+1 + end if + else + if (igetbits(icrdat(kicrd(iaccid)),7,12) + * .gt. nolev) then + iorder = iorder+1 + else + iold = igetbits(icrdot(kicrd(iaccid)),3,27) + call setbits(icrdot(kicrd(iaccid)),3,27,iold+1) + end if + end if +12 continue + call setbits(icrdot(icrd2),3,27,iorder) + end if + end if +c +c Exit loop if last note in this chord +c + if (icrd2 .eq. ncrd) go to 4 + if (igetbits(icrdat(icrd2+1),8,0) .ne. ip .or. +c * igetbits(icrdat(icrd2+1),4,8) .ne. ivx) go to 4 + * igetbits(icrdat(icrd2+1),4,8) + * +16*igetbits(icrdat(icrd2+1),1,28) .ne. ivx) go to 4 +3 continue + print* + print*,'Failed to find last chord note. Send source to Dr. Don!' + call stop1() +4 continue +c +c Now icrd1, icrd2 define range of icrd for this chord. +c +c Bypass autos-shifting if any manual shifts are present +c + if (btest(irest,20) .or. btest(irest,27)) go to 10 +c +c Check for 2nds +c + do 5 ilev = 1 , 87 + if (levtabl(ilev).ne.0 .and. levtabl(ilev+1).ne.0) then +c +c There is at least one 2nd.. +c + if (udq .eq. 'u') then +c +c Upstem. Start with 2nd just found and go up, rt-shifting upper +c member of each pair +c + ile = ilev +c +c Set main-note flag for ANY right-shift +c + irest = ibset(irest,20) +7 continue + if (levtabl(ile+1) .lt. 0) then +c +c Upstem, & upper member is main so must be rt-shifted. This would move +c stem too, so we rt-shift the OTHER note, and set flag that signals +c to interchange pitches just when these two notes are placed. +c + nacc = ibset(nacc,30) + icrdat(levtabl(ile)) = ibset(icrdat(levtabl(ile)),24) + else +c +c Upper member is chord note, must be rt-shifted +c + icrdat(levtabl(ile+1)) = ibset(icrdat(levtabl(ile+1)),24) + end if + ile = ile+1 +8 continue + ile = ile+1 + if (ile .lt. 87) then + if (levtabl(ile).ne.0 .and. levtabl(ile+1).ne.0) then + go to 7 + else + go to 8 + end if + end if + go to 10 + else +c +c Downstem. Start at top and work down, left-shifting lower member of each pair. +c We know that lowest pair is at (ilev,ilev+1). +c + ile = 88 +c +c Set main-note flag for ANY right-shift +c + irest = ibset(irest,27) +9 continue + if (levtabl(ile).ne.0 .and. levtabl(ile-1).ne.0) then + if (levtabl(ile-1) .lt. 0) then +c ipl = ibset(ipl,8) +c +c Dnstem, & lower member is main so must be left-shifted. This would move +c stem too, so we left-shift the OTHER note, and set flag that signals +c to interchange pitches just when these two notes are placed. +c + nacc = ibset(nacc,31) + icrdat(levtabl(ile)) = ibset(icrdat(levtabl(ile)),23) + else +c +c Lower member is chord note, must be shifted +c + icrdat(levtabl(ile-1)) = + * ibset(icrdat(levtabl(ile-1)),23) + end if + ile = ile-1 + end if + ile = ile-1 + if (ile .ge. ilev+1) go to 9 + go to 10 + end if + end if +5 continue +10 continue +c +c Done with 2nds, now do accid's. Call even if just one, in case left shifts. +c +c if (naccid .gt. 1) call crdaccs(nacc,ipl,irest,naccid, + if (naccid .ge. 1) call crdaccs(nacc,ipl,irest,naccid, + * kicrd,nolevm,levmaxacc,levminacc,icrdot0,twooftwo,icashft) + return + end + subroutine printl(string) + character*(*) string +c +c Send string to console and to log file +c + print*,string + write(15,'(a)')string + return + end + subroutine putarp(tnow,iv,ip,nolev,ncm,soutq,lsout) + parameter (nm=24) + common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), + * xinsnow,lowdot + common /comtol/ tol + common /comArpShift/NumArpShift,IvArpShift(20),IpArpShift(20), + * ArpShift(20) + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + logical lowdot,IsArpShift + character*80 soutq + character*79 notexq + character*8 symq(2) + character*1 chax + data symq /'raisearp','arpeggio'/ +c +c NOTE iv in arg list is really ivx, referring to voice rather than staff. +c +c Find which iarp, if any +c + do 1 iarp = 1 , narp + if (abs(tnow-tar(iarp)).lt.tol) go to 2 +1 continue +c +c If here, this is the *first* call for this arp. +c + narp = narp+1 + tar(narp) = tnow+tol*.5 + ivar1(narp) = iv + ipar1(narp) = ip + levar1(narp) = nolev + ncmar1(narp) = ncm + return +2 continue +c +c If here, this is *second* call at this time, narp points to values from 1st. +c +c Check for shift. Set IsArpShift and iarps +c + do 3 iarps = 1 , NumArpShift + if (IvArpShift(iarps) .eq. ivar1(iarp) .and. + * IpArpShift(iarps) .eq. ipar1(iarp)) then + IsArpShift = .true. + notexq = chax(92)//'loffset{' + write(notexq(10:14),'(f3.1,a2)') Arpshift(iarps),'}{' + lnote = 14 + go to 4 + end if +3 continue + IsArpShift = .false. + lnote = 0 +4 continue + if (iv .eq. ivar1(iarp)) then +c +c Arp is in a single voice. +c + levbot = min(levar1(iarp),nolev)-ncm+3 + invert = abs(levar1(iarp)-nolev)+1 + else +c +c Arp covers >1 voice. Lower voice has to be the first, upper is current and +c is where the symbol will be written. +c Check whether ivx's ivar1(iarp) & iv are in same staff +c + do 5 iiv = 1 , nm + if (ivmx(iiv,1).eq.ivar1(iarp) .or. (nvmx(iiv).eq.2.and. + * ivmx(iiv,2).eq.ivar1(iarp))) then + iivivx1 = iiv + go to 6 + end if +5 continue + print*,'Screwup#1 in putarp' + stop +6 continue + do 7 iiv = 1 , nm + if (ivmx(iiv,1).eq.iv .or. (nvmx(iiv).eq.2.and. + * ivmx(iiv,2).eq.iv)) go to 8 +c +c Found iv for both voices (iivivx1, iiv), done looking +c +7 continue + print*,'Screwup#2 in putarp' + stop +8 continue + if (iivivx1 .eq. iiv) then + nstaffshift = 0 + else + nstaffshift = -nint(2*xinsnow) + end if +c levbot = -nint(2*xinsnow)+3+levar1(iarp)-ncmar1(iarp) + levbot = nstaffshift+3+levar1(iarp)-ncmar1(iarp) + invert = -levbot+4+nolev-ncm + end if +c +c isym will be (1,2) if invert is (even,odd). If even, raise .5\internote +c + isym = mod(invert,2)+1 + ilvert = (invert+1)/2 + if (levbot .ge. 0 .and. levbot .le. 9) then +c +c Single digit +c + if (.not.IsArpShift) then + notexq = chax(92)//symq(isym)//chax(48+levbot) + else + notexq = notexq(1:lnote)// + * chax(92)//symq(isym)//chax(48+levbot) + end if + lnote = lnote+10 + else + if (.not.IsArpShift) then + notexq = chax(92)//symq(isym)//'{' + else + notexq = notexq(1:lnote)//chax(92)//symq(isym)//'{' + end if + lnote = lnote+10 + if (levbot .ge. -9) then +c +c Need two spaces for number +c + write(notexq(lnote+1:lnote+3),'(i2,a1)')levbot,'}' + lnote = lnote+3 + else + write(notexq(lnote+1:lnote+4),'(i3,a1)')levbot,'}' + lnote = lnote+4 + end if + end if +c if (ilvert .le. 9) then +c call addstr(notexq(1:lnote)//chax(48+ilvert),lnote+1, +c * soutq,lsout) +c else +c write(notexq(lnote+1:lnote+4),'(a1,i2,a1)')'{',ilvert,'}' +c call addstr(notexq(1:lnote+4),lnote+4,soutq,lsout) +c end if + + if (ilvert .gt. 9) then + write(notexq(lnote+1:lnote+4),'(a1,i2,a1)')'{',ilvert,'}' + lnote = lnote+4 + else + notexq = notexq(1:lnote)//chax(48+ilvert) + lnote = lnote+1 + end if + if (IsArpShift) then + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + end if + call addstr(notexq(1:lnote),lnote,soutq,lsout) +c +c cancel out the stored time, to permit two arps at same time! +c + tar(iarp) = -1. + return + end + subroutine putast(elask,indxask,outq) + character*129 outq,tag + character*9 fmtq + if (elask .ge. 0.) then + if (elask.lt.0.995) then + lp = 3 + else if (elask .lt. 9.995) then + lp = 4 + else + lp = 5 + end if + write(fmtq,'(a5,i1,a3)')'(a2,f',lp,'.2)' + else + lp = 5 + fmtq = '(a2,f5.1)' + end if +c +c Overwrite as follows: ...xyz*ask *lmnop... -> +c ...xyz*ast{.nn}*lmnop... +c ...xyz*ast{n.nn}*lmnop... +c ...xyz*ast{nn.nn}*lmnop... +c or for negative, ...xyz*ast{-nn.n}*lmnop... + tag = outq(indxask+9:) + write(outq(indxask+3:),fmtq)'t{',elask + outq = outq(1:indxask+4+lp)//'}'//tag + return + end + subroutine putcb(ivx,ip,notexq,lnote) + common /comcb/ nbc,ibcdata(36) + character*79 notexq + logical btest +c ivxip = ivx+16*ip + do 1 ibc = 1 , nbc +c if (ivxip .eq. iand(1023,ibcdata(ibc))) go to 2 +c if (ivx.eq.iand(15,ibcdata(ibc))+16*igetbits(ibcdata(ibc),1,28) +c * .and. ip.eq.iand(1008,ibcdata(ibc))) go to 2 + ivxbc = iand(15,ibcdata(ibc))+16*igetbits(ibcdata(ibc),1,28) + ipbc = igetbits(ibcdata(ibc),8,4) + if (ivx .eq. ivxbc .and. ip .eq.ipbc) go to 2 +1 continue + call printl('Error in putbc, Call Dr. Don') + stop +2 continue + if (btest(ibcdata(ibc),27)) then + lnote = 8 + notexq = char(92)//'pbreath' + else + lnote = 9 + notexq = char(92)//'pcaesura' + end if + ivshft = igetbits(ibcdata(ibc),6,13) +c?? ivshft = igetbits(ibcdata(ibc),6,13)-32 + if (ivshft .gt. 0) ivshft = ivshft-32 + if (ivshft.lt.0 .or. ivshft.gt.9) then + notexq = notexq(1:lnote)//'{' + lnote = lnote+1 + if (ivshft .lt. -9) then + write(notexq(lnote+1:lnote+3),'(i3)')ivshft + lnote = lnote+3 + else + write(notexq(lnote+1:lnote+2),'(i2)')ivshft + lnote = lnote+2 + end if + notexq = notexq(1:lnote)//'}' + lnote = lnote+1 + else + notexq = notexq(1:lnote)//char(48+ivshft) + lnote = lnote+1 + end if + ihshft = igetbits(ibcdata(ibc),8,19) + if (ihshft .eq. 0) then + notexq = notexq(1:lnote)//'0' + lnote = lnote+1 + else + hshft = .1*(ihshft-128) +c +c -12.81 ornament on a note, next line is top of manual loop. +c +2 continue +c +cc Bit # of last ornament (last of bits 0-21) +cc Bit # of last ornament (last of bits 0-24) +c Bit # of last ornament (last of bits 0-24,29-30) + if (btest(iornq,29)) then + ibit = 29 + else if (btest(iornq,30)) then + ibit = 30 + else + ibit = log2(iand(iornq,4194303)) +c ibit = log2(iand(iornq,33554431)) + end if + iornt = 2**ibit +c +c Begin routine to set height. Bits 0-13: (stmgx+Tupf._) +c 14: Down fermata, was F 15: Trill w/o "tr", was U, 16-18: edit. s,f,n +c 19-20: >^, 21: ? (with or w/o 16-18) +c and 29-30: C (coda), G (new segno) +c +c Do not use beam height for . or _ +c + if (btest(iornq,22) .and. iand(iornt,6144).eq.0) then +c +c Height is set by special beam stuff. +c Do not leave ihorn set, do separately for every ornament +c + ihorn = ihornb(ivx,nornb(ivx)) + if (ulpzq .eq. 'u') ihorn = ihorn-2 +c +c Following flag tells whether to increment nornb when exiting the subroutine. +c + usehornb = .true. + else if (ibit .eq. 14) then +c +c Down fermata. Don't worry about upper chord notes. +c + if (ulpzq .eq. 'l') then + ihorn = min(nolev,ncm-3) + else + ihorn = min(nolev-stemlen,ncm-3.) + end if + else if (btest(iornt,13) .or. btest(iornt,0)) then +c +c ( or ) +c + ihorn = nolev + else if (iand(iornt,6144) .gt. 0) then +c +cc Staccato . or tenuto _ , but not special beam stuff. Need up-down info +c NOTE: removed .&_ from special beam treatment. +c Staccato . or tenuto _ Need up-down info +c + if (.not.iscrd .or. (maxlev.ne.nolev.and.ulpzq.eq.'l') .or. + * (minlev.ne.nolev.and.ulpzq.eq.'u')) then + ihorn = nolev + else if (maxlev .eq. nolev) then + ulpzq = 'u' + ihorn = max(nolev+stemlen,ncm+3.) + else + ulpzq = 'l' + ihorn = min(nolev-stemlen,ncm-3.) + end if + else if (iscrd .and. nolev .eq. minlev) then + if (ulpzq .eq. 'l') then + ihorn = min(nolev-3,ncm-6) + else + ihorn = min(nolev-nint(stemlen)-3,ncm-6) + end if + else if (ibit.eq.10 .and. nolev.gt.90) then +c +c Special treatment for fermata on a shifted rest +c + ihorn = ncm+5 + else if (ulpzq.eq.'l') then +c +c (iscrd and nolev=maxlev) or (.not.iscrd) +c + ihorn = max(nolev+stemlen+2,ncm+5.) + else if (ibit.eq.29 .or. ibit.eq.30) then +c +c coda or new segno, no height tweak +c + ihorn = ncm+5 + else + ihorn = max(nolev+2,ncm+5) + end if + ioff = 0 + iclracc = 0 +c +c Begin routine to set name. Bits 0-13: (stmgx+Tupf._) +c 14: Down fermata, was F 15: Trill w/o "tr", was U, 16-18: edit. s,f,n +c + if (btest(iornt,2)) then + notexq = sq//'shake' + lnote = 6 + else if (btest(iornt,3)) then + notexq = sq//'mordent' + lnote = 8 + else if (btest(iornt,1)) then + notexq = sq//'mtr' + lnote = 4 + else if (btest(iornt,5)) then + notexq = sq//'xtr' + lnote = 4 + else if (btest(iornt,6)) then + notexq = sq//'ptr' + lnote = 4 + else if (btest(iornt,13)) then + notexq = sq//'rpn' + lnote = 4 + else if (btest(iornt,0)) then + notexq = sq//'lpn' + lnote = 4 + else if (btest(iornt,12)) then + notexq = sq//ulpzq//'st' + lnote = 4 + else if (btest(iornt,11)) then + notexq = sq//ulpzq//'pz' + lnote = 4 + else if (btest(iornt,8)) then + notexq = sq//'upz' + lnote = 4 + ioff = -2 + else if (btest(iornt,9)) then + notexq = sq//'uppz' + lnote = 5 + ioff = -2 + else if (btest(iornt,10)) then + if (nodur .lt. 48) then + notexq = sq//'fermataup' + else + notexq = sq//'Fermataup' + end if + lnote = 10 + ioff = -2 + else if (btest(iornt,14)) then + if (nodur .lt. 48) then + notexq = sq//'fermatadown' + else + notexq = sq//'Fermatadown' + end if + lnote = 12 + else if (btest(iornt,21)) then +c +c "?" in editorial ornament. Clear bit 16-18 after use, since ibit=21 +c + if (btest(iornq,16)) then + notexq = sq//'qsharp' + lnote = 7 + ioff = 2 + iornq = ibclr(iornq,16) + iclracc = 16 + else if (btest(iornq,17)) then + notexq = sq//'qflat' + lnote = 6 + ioff = 1 + iornq = ibclr(iornq,17) + iclracc = 17 + else if (btest(iornq,18)) then + notexq = sq//'qnat' + lnote = 5 + ioff = 2 + iornq = ibclr(iornq,18) + iclracc = 18 + else + notexq = sq//'qedit' + lnote = 6 + ioff = 0 + end if + else if (btest(iornt,16)) then + notexq = sq//'esharp' + lnote = 7 + ioff = 2 + else if (btest(iornt,17)) then + notexq = sq//'eflat' + lnote = 6 + ioff = 1 + else if (btest(iornt,18)) then + notexq = sq//'enat' + lnote = 5 + ioff = 2 + else if (btest(iornt,19)) then + notexq = sq//'usf' + lnote = 4 + ioff = -2 + else if (btest(iornt,20)) then + notexq = sq//'usfz' + lnote = 5 + ioff = -2 + else if (btest(iornt,29)) then + notexq = sq//'ccoda' + lnote = 6 + else if (btest(iornt,30)) then + notexq = sq//'ssegno' + lnote = 7 + end if + iudorn = 0 +c +c User-defined level shift of ornament from default? +c + if (btest(iornq,25)) then +c +c Find which (if any) element of kudorn has the shift. +c + do 3 iudorn = 1 , nudorn +c if (ibit .lt. 21) then +c if (ibit.lt.21 .or. ibit.eq.29) then + if (ibit.lt.21 .or. ibit.eq.29 .or. ibit.eq.30) then + ibitt = ibit +c +c Could have oes, but not oe? or oes? +c + else if (iclracc .gt. 0) then +c +c Earlier cleared edit. accid, meaning it was oes? +c + ibitt = iclracc+6 + else + ibitt = 21 + end if + ibitt=ip+ishft(mod(ivx,16),8)+ishft(nolev,12)+ishft(ibitt,19) +c if (ibitt .eq. iand(33554431,kudorn(iudorn))) go to 4 + if (ibitt .eq. iand(33554431,kudorn(iudorn)) + * .and. ivx.eq.ivxudorn(iudorn)) go to 4 +3 continue +c +c Nothing shifted on this note; exit this if block +c + iudorn = 0 + go to 5 +4 continue + ioffinc = iand(63,ishft(kudorn(iudorn),-25))-32 + if (ibit.eq.19 .and. ioffinc .lt. -7) then +c +c Convert usf to lsf. The reason has to do with positioning being impossile +c for some mysterious reason when you drop \usf below the staff +c + notexq = sq//'lsf' + ioffinc = ioffinc+6 + end if + ioff = ioff+ioffinc + end if +5 continue +c +c Shift level to avoid slur. Conditions are +c 1. There is a slur +c 2. No user-defined orn height shift (btest(iornq,25)) +c 3. upslur (islhgt>0) +c 4. ornament is not segno(4), ._)(11-13), down ferm(14) or "(" (0) Bin=30737 +c 5. islhgt+3 >= height already computed. +c + if (.not.btest(iornq,25) .and. + * islhgt.gt.0 .and. iand(iornt,30737).eq.0) + * ioff = ioff+dim(islhgt+3,ihorn ) + call notefq(noteq,lnoten,ihorn+ioff,ncm) + if (lnoten.eq.1) call addblank(noteq,lnoten) + if (iand(iornt,32896) .gt. 0) then +c +c T-trill or trill w/o "tr" +c + call dotrill(ivx,ip,iornt,noteq,lnoten,notexq,lnote) + else + notexq = notexq(1:lnote)//noteq(1:lnoten) + lnote = lnote+lnoten + end if + if (iudorn .gt. 0) then + if (btest(kudorn(iudorn),31)) then +c +c Horizontal shift +c + lform = lfmt1(ornhshft(iudorn)) + write(noteq(1:lform),'(f'//chax(48+lform)//'.1)') + * ornhshft(iudorn) + notexq = sq//'roffset{'//noteq(1:lform)//'}{' + * //notexq(1:lnote)//'}' + lnote = lnote+lform+12 + ornhshft(iudorn) = 0. + kudorn(iudorn) = ibclr(kudorn(iudorn),31) + end if + end if +c +c Zero out the bit for ornament just dealt with. +c + iornq = ibclr(iornq,ibit) + if (lout .eq. 0) then + outq = notexq(1:lnote) + else + outq = outq(1:lout)//notexq(1:lnote) + end if + lout = lout+lnote +c +c Check bits 0-21, go back if any are still set +c If bit 29 or 30 had been set, would have been used first time thru, +c and you wouldn't use both coda and segno on same note +c + if (iand(iornq,4194303) .gt. 0) go to 2 + if (usehornb) nornb(ivx) = nornb(ivx)+1 + return + end + subroutine putshft(ivx,onoff,soutq,lsout) + parameter (nm=24) + common /comudsp/udsp(50),tudsp(50),nudsp,udoff(nm,20),nudoff(nm) + character*80 soutq,notexq + character*1 sq,chax + logical onoff + sq = chax(92) +c +c Start user-defined offsets X(...): or X(...)S +c + if (onoff) nudoff(ivx) = nudoff(ivx)+1 +c +c Xoff is in pts. Round off to nearest .1. Will use at end of shift. +c + xoff = udoff(ivx,nudoff(ivx)) + xoff = sign(int(10.*abs(xoff)+.5)/10.,xoff) + if (.not.onoff) xoff = -xoff + if (xoff .lt. -9.95) then + ifmt = 5 + else if (xoff.lt.-.95 .or. xoff.gt.9.95) then + ifmt = 4 + else + ifmt = 3 + end if + write(notexq,'(f'//chax(48+ifmt)//'.1)')xoff + call addstr(sq//'off{'//notexq(1:ifmt)//'pt}',8+ifmt, + * soutq,lsout) + return + end + subroutine puttitle(inhnoh,xnsttop,etatop,sq,etait,etatc, + * etacs1,nv,vshrink,sepsymq) +c +c Called once per page, at top of page! If vshrink, only called for p.1. +c Actual titles only allowed on p.1. (set by headlog). +c 3/18/01: The above comment is probably bogus...can use Tt on later pages. +c + common /comlast/ islast,usevshrink + logical islast,usevshrink + common /comtitl/ instrq,titleq,compoq,headlog,inskip,ncskip, + * inhead + common /cominbot/ inbothd + character*127 notexq + character*120 instrq,titleq,compoq + parameter (nm=24) + character*1 sq,sepsymq(nm),chax + logical headlog,vshrink + notexq = sq//'znotes' + lenline = 7 + do 22 iv = 1 , nv-1 + notexq = notexq(1:lenline)//sepsymq(iv) + lenline = lenline+1 +22 continue + notexq = notexq(1:lenline)//sq//'zcharnote{' + lenline = lenline+11 + if (.not.headlog) then + inhead = inhnoh + end if + if (vshrink .and. usevshrink) then + inhead = 16 + end if + ndig = int(alog10(inhead+.01))+1 + write(notexq(lenline+1:lenline+ndig+10),'(i'//chax(48+ndig)// + * ',a10)')inhead,'}{'//sq//'titles{' + lenline = lenline+ndig+10 +c +c Vertical skip at top of page (\Il) = etatop*glueil. Needed whether +c headers are present or not. +c + glueil = xnsttop/etatop + vskil = etatop*glueil + if (vshrink .and. usevshrink) vskil = 2 + call writflot(vskil,notexq,lenline) + if (.not.headlog) then + if (islast) write(11,'(a)')notexq(1:lenline) + * //'}{}{0}{}{0}{}{0}}'//sq//'en%' + else + notexq = notexq(1:lenline)//'}{' + lenline = lenline+2 + lcq = lenstr(instrq,120) + if (lcq .gt. 0) then + xitil = etait*glueil + if (vshrink .and. usevshrink) xitil = 2 + notexq = notexq(1:lenline)//instrq(1:lcq)//'}{' +c +c Null out instrument once used +c + instrq = ' ' + lenline = lenline+lcq+2 + call writflot(xitil,notexq,lenline) + else + notexq = notexq(1:lenline)//'}{0' + lenline = lenline+3 + end if + if (islast) write(11,'(a)')notexq(1:lenline)//'}%' + notexq = '{' + lenline = 1 + lcq = lenstr(titleq,120) + if (lcq .gt. 0) then + notexq = notexq(1:lenline)//titleq(1:lcq) + lenline = lenline+lcq + else + call printl(' ') + call printl('WARNING') + call printl( + * ' In a title block, you have specified instrument and/or') + call printl( + * ' composer but no title for the piece.') + end if + notexq = notexq(1:lenline)//'}{' + lenline = lenline+2 + xtcil = etatc*glueil + lcq = lenstr(compoq,120) + if (lcq .eq. 0) xtcil = 2*xtcil + if (vshrink .and. usevshrink) xtcil = 2 + call writflot(xtcil,notexq,lenline) + notexq = notexq(1:lenline)//'}{' + lenline = lenline+2 + if (lcq .gt. 0) then + notexq = notexq(1:lenline)//compoq(1:lcq)//'}{' + lenline = lenline+2+lcq +c +c Null out compoq so it does not get written later +c + compoq = ' ' + xcsil = etacs1*glueil + if (vshrink .and. usevshrink) xcsil = 2 + call writflot(xcsil,notexq,lenline) + else + notexq = notexq(1:lenline)//'}{0' + lenline = lenline+3 + end if + if (islast) write(11,'(a)')notexq(1:lenline)//'}}'//sq//'en%' + headlog = .false. + end if + return + end + subroutine putxtn(ntupv,iflop,multb,iud,wheadpt,poenom, + * nolev1,islope,slfac,xnlmid,islur,lnote,notexq,ncmid,nlnum, +c * eloff,iup,irest,usexnumt) + * eloff,iup,irest,mult,usexnumt) +c +c Places digit for xtuplet. +c + character*1 chax + character*8 noteq + character*79 notexq + logical btest,usexnumt + if (iflop.ne.0 .and. multb.gt.0) then +c +c Number goes on beam side, move R/L by .5 wheadpt for upper/lower +c + eloff = eloff-0.5*iud*wheadpt/poenom +c +c Number goes on beam side, must use beam parameters to set pos'n +c + nlnum = nolev1+islope/slfac*eloff+iup*(multb+8) + if (multb .ge. 2) nlnum = nlnum+iup + else + nlnum = nint(xnlmid-1+3*iud+iflop*11) + end if + if (.not.btest(islur,31)) then +c +c Only print number when wanted. First check vert, horiz offset +c + if (btest(irest,1)) nlnum = nlnum+igetbits(mult,8,16)-64 + if (btest(irest,7)) eloff = eloff+ + * (.1*iand(31,ishft(irest,-9))-1.6)*wheadpt/poenom + if (.not.usexnumt) then + notexq = chax(92)//'xnum{' + lnote = 10 + istrtn = 7 + else + notexq = chax(92)//'xnumt{' + lnote = 11 + istrtn = 8 + end if + if (eloff .lt. 0.995) then + write(notexq(istrtn:istrtn+3),'(i1,f3.2)')0,eloff + else if (eloff .lt. 9.995) then + write(notexq(istrtn:istrtn+3),'(f4.2)')eloff + else + write(notexq(istrtn:istrtn+4),'(f5.2)')eloff + lnote = lnote+1 + end if + call notefq(noteq,lnoten,nlnum,ncmid) + notexq = notexq(1:lnote)//'}'//noteq(1:lnoten) + lnote = lnote+1+lnoten + if (ntupv .lt. 10) then + write(notexq(lnote+1:lnote+1),'(i1)')ntupv + lnote = lnote+1 + else + notexq = notexq(1:lnote)//'{' + write(notexq(lnote+2:lnote+3),'(i2)')ntupv + notexq = notexq(1:lnote+3)//'}' + lnote = lnote+4 + end if + end if + return + end + subroutine read10(string,lastchar) + parameter (maxblks=9600) + character*131072 bufq + integer*2 lbuf(maxblks) + common /inbuff/ ipbuf,ilbuf,nlbuf,lbuf,bufq + character*(*) string + character*128 lnholdq + logical lastchar + common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac + logical mrecord,mplay,endmac + common /c1ommac/ ip1mac(20),il1mac(20),ip2mac(20),il2mac(20), + * ic1mac(20),ilmac,iplmac + if (.not.mplay) then + if (ilbuf .gt. nlbuf) go to 999 + call getbuf(string) + return +999 lastchar = .true. + return + else +c +c Play a macro. Set pointer to first character needed in buffer +c + if (ilmac .eq. il1mac(macnum)) then +c +c Getting first line of macro +c + ip1 = ip1mac(macnum) + iplmac = ip1-ic1mac(macnum) + else if (ilmac .le. il2mac(macnum)) then +c +c Beyond first line of macro. Advance line-start pointer. +c + iplmac = iplmac+lbuf(ilmac-1) + ip1 = iplmac+1 + else +c +c Beyond last line of macro. Terminate it! +c + mplay = .false. + endmac = .true. + return + end if + if (ilmac .eq. il2mac(macnum)) then +c +c Getting last line of macro. +c + ip2 = ip2mac(macnum) + else +c +c Getting line before last line of macro. +c + ip2 = iplmac+lbuf(ilmac) + end if + if (ip2 .ge. ip1) then + string = bufq(ip1:ip2) + else +c +c Kluge for when macro start is on a line by itself +c + string = ' ' + end if + ilmac = ilmac+1 + return + end if + end + function readin(lineq,iccount,nline) +c +c Reads a piece of setup data from file lineq, gets a new lineq from +c file 10 (jobname.pmx) and increments nline if needed, passes over +c comment lines +c + character*128 lineq + character*1 durq,chax +4 if (iccount .eq. 128) then +1 call getbuf(lineq) + nline = nline+1 + if (lineq(1:1) .eq. '%') go to 1 + iccount = 0 + end if + iccount = iccount+1 +c +c Find next non-blank or end of line +c + do 2 iccount = iccount , 127 + if (lineq(iccount:iccount) .ne. ' ') go to 3 +2 continue +c +c If here, need to get a new line +c + iccount = 128 + go to 4 +3 continue +c +c iccount now points to start of number to read +c + i1 = iccount +5 call getchar(lineq,iccount,durq) +c +c Remember that getchar increments iccount, then reads a character. +c + if (index('0123456789.-',durq) .gt. 0) go to 5 + i2 = iccount-1 + if (i2 .lt. i1) then + print*,'Found "'//durq//'" instead of number' + call stop1() + end if + icf = i2-i1+49 + read(lineq(i1:i2),'(f'//chax(icf)//'.0)')readin + return + end + subroutine readmeter(lineq,iccount,mtrnum,mtrden) + character*128 lineq + character*1 durq,chax + if (index(lineq(iccount+1:iccount+3),'/') .eq. 0) then +c +c No slashes, so use old method +c + call getchar(lineq,iccount,durq) + if (durq .eq. '-') then +c +c Negative numerator is used only to printed; signals vertical slash +c + call getchar(lineq,iccount,durq) + mtrnum = -(ichar(durq)-48) + else if (durq .eq. 'o') then +c +c Numerator is EXACTLY 1 +c + mtrnum = 1 + else + mtrnum = ichar(durq)-48 + if (mtrnum .eq. 1) then +c +c Numerator is >9 +c + call getchar(lineq,iccount,durq) + mtrnum = 10+ichar(durq)-48 + end if + end if + call getchar(lineq,iccount,durq) + if (durq .eq. 'o') then + mtrden = 1 + else + mtrden = ichar(durq)-48 + if (mtrden .eq. 1) then + call getchar(lineq,iccount,durq) + mtrden = 10+ichar(durq)-48 + end if + end if + else +c +c Expect the form m[n1]/[n2]/[n3]/[n4] . Advance iccount by one from '/' or 'm' +c + iccount = iccount+1 + ns = index(lineq(iccount:128),'/') + read(lineq(iccount:iccount+ns-2),'(i'//chax(47+ns)//')')mtrnum +c +c Reset iccount to start of second integer +c + iccount = iccount+ns +c +c There must be either a slash or a blank at pos'n 2 or 3 +c + ns = index(lineq(iccount:iccount+2),'/') + if (ns .eq. 0) ns = index(lineq(iccount:iccount+2),' ') + read(lineq(iccount:iccount+ns-2),'(i'//chax(47+ns)//')')mtrden +c +c Set iccount to last character used +c + iccount = iccount+ns-1 + end if + return + end + subroutine readnum(lineq,iccount,durq,fnum) +c +c This reads a number starting at position iccount. Remember that on exit, +c getchar leaves iccount at the last character retrieved. So must only +c call this routine *after* detecting a number or decimal. +c On exit, durq is next character after end of number. +c + character*128 lineq + character*1 durq,chax + i1 = iccount +1 call getchar(lineq,iccount,durq) + if (index('0123456789.',durq) .gt. 0) go to 1 + i2 = iccount-1 + if (i2 .lt. i1) then + print*,'Found "'//durq//'" instead of number' + call stop1() + else if (lineq(i1:i1).eq.'.'.and.lineq(i2:i2).eq.'.') then + i2 = i2-1 + iccount = iccount-1 + end if + icf = i2-i1+49 + read(lineq(i1:i2),'(f'//chax(icf)//'.0)')fnum + return + end + subroutine setbits(isdata,iwidbit,ishift,ivalue) +c +c Sets iwidbits of isdata, shifted by ishift, to ivalue +c + ibase = 2**iwidbit-1 + isdata = iand(not(ishft(ibase,ishift)),isdata) + isdata = ior(isdata,ishft(ivalue,ishift)) + return + end + subroutine setbm2(xelsk,nnb,sumx,sumy,ipb,islope,nolev1) +c +c The MEAN SQUARE slope algorithm +c + parameter (nm=24) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + character*1 ulq,sepsymq,sq + logical beamon,firstgulp,figbass,figchk, + * isfig + real*4 xelsk(24) + integer ipb(24) + ibc = ibmcnt(ivx) + sumxx = 0. + sumxy = 0. + do 2 inb = 1 , nnb + sumxx = sumxx+xelsk(inb)**2 + sumxy = sumxy+xelsk(inb)*nolev(ivx,ipb(inb)) +2 continue + delta = nnb*sumxx-sumx*sumx + em = (nnb*sumxy-sumx*sumy)/delta + islope = nint(0.5*em*slfac) + if (iabs(islope) .gt. 9) islope = isign(9,islope) + beta = (sumy-islope/slfac*sumx)/nnb + nolev1 = nint(beta) +c +c Check if any stems are too short +c + smin = 100. + iul = -1 + if (ulq(ivx,ibc) .eq. 'u') iul = 1 + do 4 inb = 1 , nnb + ybeam = nolev1+iul*stemlen+islope*xelsk(inb)/slfac + ynote = nolev(ivx,ipb(inb)) + smin = min(smin,iul*(ybeam-ynote)) +4 continue + if (smin .lt. stemmin) then + deficit = stemmin-smin + nolev1 = nint(nolev1+iul*deficit) + end if + return + end + subroutine setmac(lineq,iccount,ibarcnt,ibaroff,nbars,charq,durq, + * ivx,nline) + character*1 charq,durq + common /commac/ macnum,mrecord,mplay,macuse,icchold,lnholdq,endmac + logical mrecord,mplay,endmac,btest + character*128 lnholdq,lineq + common /c1ommac/ ip1mac(20),il1mac(20),ip2mac(20),il2mac(20), + * ic1mac(20),ilmac,iplmac +c +c Macro action +c + call g1etchar(lineq,iccount,charq) + if (charq.eq.'S' .and. ivx.ne.1) then + print* + print* + print*,'*********WARNING*********' + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * '"MS..." only put in parts by scor2prt if in voice #1!') + end if + if (index('RSP ',charq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Illegal character after "M" (macro)!') + call stop1() + else if (charq .ne. ' ') then +c +c Record or playback a macro. Get the number of the macro. +c + call g1etchar(lineq,iccount,durq) + if (index('123456789',durq) .eq. 0) then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Must input number after "MR","MP", or "MS"!') + call stop1() + end if + call readnum(lineq,iccount,durq,fnum) + macnum = nint(fnum) + if (durq .ne. ' ') then + call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, + * 'Macro number must be followed by a blank!') + call stop1() + end if + if (index('RS',charq ).gt. 0) then +c +c Record or save a macro +c + if (macnum.lt.1 .or. macnum.gt.20) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Macro number not in range 1-20!') + call stop1() + end if + macuse = ibset(macuse,macnum) + if (charq .eq. 'R') then + call m1rec1(lineq,iccount,ibarcnt,ibaroff,nbars,ndxm) + else if (charq .eq. 'S') then +c +c Save (Record but don't activate) +c +1 call m1rec1(lineq,iccount,ibarcnt,ibaroff,nbars,ndxm) + if (mrecord) then + call getbuf(lineq) + nline = nline+1 + iccount = 0 + go to 1 + end if + iccount = iccount+ndxm+1 + end if + else +c +c Playback the macro +c + if (.not.btest(macuse,macnum)) then + call errmsg(lineq,iccount-1,ibarcnt-ibaroff+nbars+1, + * 'Cannot play a macro that has not been recorded!') + call stop1() + end if + icchold = iccount + lnholdq = lineq + iccount = 128 + mplay = .true. + ilmac = il1mac(macnum) + end if + end if + return + end + subroutine setmeter(mtrnuml,mtrdenl,ibmtyp,ibmrep) +c +c Sets last 2 args depending on 1st 2, (logical) num, denom. +c ibmtyp = 1, 2, or 3 defines set of masks for beam groupings. +c 1: all duple meters +c 2: triple w/ denom=4, subdivide in groups of 2 8ths +c 3: triple w/ denom=8, subdivide in groups of 3 8ths +c Note that lenbar is set at top or when 'm' symbol is read in getnote +c + if (mtrdenl .eq. 4) then + if (mod(mtrnuml,3) .eq. 0) then + ibmtyp = 2 + ibmrep = mtrnuml/3 + else + ibmtyp = 1 + ibmrep = mtrnuml/2 + end if + else if (mtrdenl .eq. 2) then + ibmtyp = 1 + if (mtrnuml .eq. 3) then + ibmrep = 3 + else + ibmrep = 2*mtrnuml/mtrdenl + end if + else if (mtrdenl.eq.8 .and. (mtrnuml.eq.8.or.mtrnuml.eq.4)) then +c +c Added 170726 +c + ibmtyp = 1 + ibmrep = mtrnuml/4 + else +c +c Assumes mtrdenl=8 and 3/8, 6/8, 9/8, or 12/8 +c + ibmtyp = 3 + ibmrep = mtrnuml/3 + end if +c +c Reset so we don't keep writing new meters +c + mtrnuml = 0 +c +c Prevent ibmrep=0. Needed for odd bars, e.g. 1/8, where beams don't matter +c + ibmrep = max(ibmrep,1) + return + end + subroutine SetupB(xelsk,nnb,sumx,sumy,ipb,smed,ixrest) +c +c The outer combo algorithm +c + parameter (nm=24) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + common /comipl2/ ipl2(nm,200) + character*1 ulq,sepsymq,sq + logical beamon,firstgulp,figbass,figchk,btest, + * isfig,vxtup,l1ng,l2ng,bar1syst,drawbm + common /comeskz2/ eskz2(nm,200) + real*4 slope(800),xelsk(24) + integer ipb(24) + common /comask/ bar1syst,fixednew,scaldold, + * wheadpt,fbar,poenom + common /comas1/ naskb,task(40),wask(40),elask(40) + common /comxtup/ ixtup,vxtup(nm),ntupv(nm,9),nolev1(nm), + * mtupv(nm,9),nxtinbm(nm), + * islope(nm),xels11(24),eloff(nm,9), + * nssb(nm),issb(nm),lev1ssb(nm,20) + common /comdraw/ drawbm(nm) + common /combmh/ bmhgt,clefend + common /commvl/ nvmx(nm),ivmx(nm,2),ivx + common /comtol/ tol + ibc = ibmcnt(ivx) + nxtinbm(ivx) = 0 + n1 = ipl2(ivx,ibm1(ivx,ibc)) +c +c Initialize counters used in this subroutine, and then later during actual +c beam drawing, to count later segments of single-slope beam groups +c + nssb(ivx) = 0 + issb(ivx) = 0 +c +c Set flag for xtup beam starting with rest (no others can start with rest) +c + if (btest(irest(ivx,ipo(n1)),0)) ixrest = 1 +c +c Figure how many elemskips to each note. Use the list, counting only non-rests. +c + eskz0 = eskz(ivx,ibm1(ivx,ibc)) + nnb = 0 + sumx = 0. + sumy = 0. + ipxt1 = 0 + iplast = ibm2(ivx,ibc) + do 2 ip = ibm1(ivx,ibc) , iplast + if (.not.btest(irest(ivx,ip),0)) then + nnb = nnb+1 + ipb(nnb) = ip + xelsk(nnb) = eskz(ivx,ip)-eskz0 + sumx = sumx+xelsk(nnb) + sumy = sumy+nolev(ivx,ipb(nnb)) + if (btest(nacc(ivx,ip),21)) then +c +c This is the starting note of later segment of single-slope beam group +c Temporarily store ip here. +c + nssb(ivx) = nssb(ivx)+1 + lev1ssb(ivx,nssb(ivx)) = nnb + end if + end if +c +c New xtup stuff here. Final object is to get distance from start of xtup +c to number. xtinbm counts xtups in this beam only. mtupv is the printed +c number. ntupv is number of notes in xtup, and is only used to get +c eloff, the distance from start of xtup to the number. +c + if (btest(nacc(ivx,ip),18)) ndoub = ndoub+1 + if (ipxt1.eq.0 .and. nodur(ivx,ip).eq.0) then +c +c Xtup is starting here +c + nxtinbm(ivx) = nxtinbm(ivx)+1 + ipxt1 = ip + if (btest(nacc(ivx,ip),18)) then + ndoub = 1 + else + ndoub = 0 + end if + else if (ipxt1.gt.0 .and. nodur(ivx,ip).gt.0) then +c +c Xtup ends here. Set total number of notes in xtup. +c + ntupv(ivx,nxtinbm(ivx)) = ip+1-ipxt1 +c +c Set printed number for embedded xtup. +c + mtupv(ivx,nxtinbm(ivx)) = ntupv(ivx,nxtinbm(ivx))+ndoub +c +c Middle note of xtup if ntupv odd, note to left of gap if even. +c + ipxtmid = (ip+ipxt1)/2 + eloff(ivx,nxtinbm(ivx)) = eskz2(ivx,ipxtmid)-eskz2(ivx,ipxt1) + if (mod(ntupv(ivx,nxtinbm(ivx)),2) .eq. 0) + * eloff(ivx,nxtinbm(ivx)) = eloff(ivx,nxtinbm(ivx))+ + * .5*(eskz2(ivx,ipxtmid+1)-eskz2(ivx,ipxtmid)) + ipxt1 = 0 + end if +2 continue +c +c Reset nxtinbm for use as counter as #'s are posted by putxtn(..) +c + nxtinbm(ivx) = 0 + smed = 0. +c if (.not.btest(islur(ivx,ipb(1)),2)) then + if (.not.btest(islur(ivx,ipb(1)),2) .and. nnb.gt.1) then +c +c No forced 0 slope +c +c if (nnb .eq. 1) go to 6 + nsc = 0 + do 5 inb = 1 , nnb-1 + do 5 jnb = inb+1 , nnb + nsc = nsc+1 + slope(nsc) = (nolev(ivx,ipb(jnb))-nolev(ivx,ipb(inb)))/ + * (xelsk(jnb)-xelsk(inb)) + if (abs(slope(nsc)) .lt. 1.e-4) then + nsc = nsc+1 + slope(nsc) = slope(nsc-1) + nsc = nsc+1 + slope(nsc) = slope(nsc-1) + end if +5 continue + if (nsc .eq. 1) then + smed = slope(1) + go to 6 + end if + nscmid = nsc/2+1 + do 7 i = 1 , nscmid + do 7 j = i+1 , nsc + if (slope(j) .lt. slope(i)) then + t = slope(j) + slope(j) = slope(i) + slope(i) = t + end if +7 continue + smed = slope(nscmid) + if (nsc .eq. 2*(nsc/2)) then +c +c Even number of slopes in the list, so median is ambiguous +c + if (abs(slope(nscmid-1)) .lt. abs(slope(nscmid))-tol) then +c +c Lower-numbered one is truly less in absolute value, so use it +c + smed=slope(nscmid-1) + else if (abs(slope(nscmid-1)+slope(nscmid)) .lt. tol) then +c +c Two slopes are effectively equal. Take the one with sign of the average +c + sum = 0. + do 1 i = 1 , nsc + sum = sum+slope(i) +1 continue + smed = sign(smed,sum) + end if + end if +6 continue + islope(ivx) = nint(0.5*smed*slfac) + if (iabs(islope(ivx)) .gt. 9) + * islope(ivx) = isign(9,islope(ivx)) + else +c +c Forced horizontal beam +c + islope(ivx) = 0 + end if + beta = (sumy-islope(ivx)/slfac*sumx)/nnb +c +c If ixrest>0, this is a virtual nolev1 at location of rest. Will first use +c as is for placing xtup number and/or bracket, then reset it for start of +c actual beam +c + nolev1(ivx) = nint(beta) +c +c Check if any stems are too short +c + smin = 100. + iul = -1 + if (ulq(ivx,ibc) .eq. 'u') iul = 1 + ssq = 0. + syb = 0. + yb1 = nolev1(ivx) + * +iul*(stemlen+bmhgt*(iand(15,mult(ivx,ipb(1)))-8-1)) + do 4 inb = 1 , nnb + ybeam = yb1+islope(ivx)*xelsk(inb)/slfac + * -iul*bmhgt*(iand(15,mult(ivx,ipb(inb)))-8-1) + syb = syb+ybeam + ynote = nolev(ivx,ipb(inb)) + off = ybeam-ynote + if (inb .eq. 1) then + off1 = off + else if (inb .eq. nnb) then + off2 = off + end if + ssq = ssq+off*off + smin = min(smin,iul*off) +4 continue + dnolev = 0. + if (smin .lt. stemmin) then + deficit = stemmin-smin + nolevo = nolev1(ivx) + nolev1(ivx) = nint(nolev1(ivx)+iul*deficit) + dnolev = nolev1(ivx)-nolevo + off1 = off1+dnolev + off2 = off2+dnolev + end if + ssq = ssq+2*dnolev*(syb-sumy)+dnolev**2 + if (.not.vxtup(ivx) .and. sqrt(ssq/nnb) .gt. stemmax .and. + * (abs(off1).lt.stemmax .or. abs(off2).lt.stemmax) +c * .and. .not.btest(islur(ivx,ipb(1)),2)) then + * .and. .not.btest(islur(ivx,ipb(1)),2) + * .and. nnb.ne.1) then +c +c The first check is to save trouble of putting xtup's in setbm2. +c The penultimate check is that first and last stems aren't both excessive. +c The last check is that a 0 slope has not been forced +c + call setbm2(xelsk,nnb,sumx,sumy,ipb,islope(ivx),nolev1(ivx)) + end if +c +c Check if beam starts or ends too high or low. +c + xboff = bmhgt*(iand(15,mult(ivx,ipb(1)))-8-1) + l1ng = iul*(nolev1(ivx)-ncmid(iv,ipb(1)))+xboff+7 .lt. 0. + xnolev2 = nolev1(ivx)+islope(ivx)/slfac*xelsk(nnb) + l2ng = iul*(xnolev2-ncmid(iv,ipb(nnb)))+xboff+7 .lt. 0 + if (l1ng .or. l2ng) then +c +c Need to correct start or stop, also slope +c + if (l1ng) then + nolev1(ivx) = nint(ncmid(iv,ipb(1))-(7.+xboff)*iul) + end if + if (l2ng) then + xnolev2 = nint(ncmid(iv,ipb(nnb))-(7.+xboff)*iul) + end if +c +c Since one or the other end has changed, need to change slope +c +c if (.not.btest(islur(ivx,ipb(1)),2)) + if (.not.btest(islur(ivx,ipb(1)),2) .and. nnb.ne.1) + * islope(ivx) = nint(slfac*(xnolev2-nolev1(ivx))/xelsk(nnb)) + end if + if (nssb(ivx) .gt. 0) then +c +c This is a single-slope beam group. Store start heights for later segs. +c + do 3 issbs = 1 , nssb(ivx) + lev1ssb(ivx,issbs) = nolev1(ivx)+islope(ivx)/slfac* + * xelsk(lev1ssb(ivx,issbs)) +3 continue + end if + return + end + subroutine sortpoe(nsyst,poe,ipoe) + parameter (nks=125) + real*4 poe(nks) + integer*4 ipoe(nks) +c +c Initialize ipoe: +c + do 3 iord = 1 , nsyst + ipoe(iord) = iord +3 continue +c +c Construct ipoe vector with pairwise interchanges. When done, ipoe(1) will +c be index of smallest poe, and ipoe(nsyst) will be index of biggest poe. +c + do 4 io1 = 1 , nsyst-1 + do 5 io2 = io1+1 , nsyst + if (poe(ipoe(io1)) .gt. poe(ipoe(io2))) then +c +c Interchange the indices +c + itemp = ipoe(io1) + ipoe(io1) = ipoe(io2) + ipoe(io2) = itemp + end if +5 continue +4 continue + return + end + subroutine spsslur(lineq,iccount,iv,kv,ip,isdat1,isdat2,isdat3, + * isdat4,nsdat,notcrd,nolev,starter) + parameter (nm=24) +c +c Reads in slur data. Record all h/v-shifts for non-chords, user-specified +c ones for chords. +c 5/26/02 This subr is called ONLY for postscript slurs. +c +c See subroutine doslur for bit values in isdat1,2,3 +c + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + integer*4 isdat1(202),isdat2(202),isdat3(202),isdat4(202) + logical notcrd,btest + character*128 lineq + character*1 durq,dumq,starter + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + logical upslur,fontslur,WrotePsslurDefaults +c +c Counter for signed integers. 1st is height, 2nd is horiz, 3rd is curve +c + numint = 0 + ivoff = 0 + ihoff = 0 + nsdat = nsdat+1 + if (starter.eq.'{' .or. starter.eq.'}') + * isdat2(nsdat)=ibset(isdat2(nsdat),3) + call setbits(isdat1(nsdat),5,13,iv) + call setbits(isdat1(nsdat),1,12,kv-1) + call setbits(isdat1(nsdat),8,3,ip) + isdat3(nsdat) = 0 + isdat4(nsdat) = 0 + ilb12 = 0 ! flag for tweaks of 1st or 2nd (0|1) seg of linebreak slur +c +c Get ID code +c + call getchar(lineq,iccount,durq) +c if (index('uldtb+-hfnHps ',durq) .gt. 0) then + if (index('uldtb+-hfnHpsv ',durq) .gt. 0) then +c +c Null id. Note for ps slurs, 'H' cannot be an ID +c + iccount = iccount-1 + if (lineq(iccount:iccount) .eq. 't') then + idcode = 1 + else + idcode = 32 + end if + else +c +c Set explicit idcode +c + idcode = ichar(durq) + if (lineq(iccount-1:iccount-1) .eq. 't') then +c +c Make t[ID] look like s[ID]t +c + isdat2(nsdat) = ibset(isdat2(nsdat),3) + end if + if (lineq(iccount+1:iccount+1).eq.'x') then +c +c Flag for 2-voice, indexed slurs +c + iccount = iccount+1 + call setbits(isdat1(nsdat),1,1,1) + end if + end if + call setbits(isdat1(nsdat),7,19,idcode) +c +c Set start/stop: look thru list from end for same idcode,iv,kv +c + do 2 isdat = nsdat-1 , 1 , -1 + if (idcode .eq. igetbits(isdat1(isdat),7,19) .and. + * iv .eq. igetbits(isdat1(isdat),5,13) .and. +c * kv-1 .eq. igetbits(isdat1(isdat),1,12)) then + * (kv-1 .eq. igetbits(isdat1(isdat),1,12) + * .or. btest(isdat1(isdat),1))) then +c +c Matched idcode & ivx. On/off?. If on, new is turnoff, leave bit 11 at 0. +c + if (btest(isdat1(isdat),11)) go to 3 +c +c Found slur is a turnoff, so new one is a turnon. Jump down to set bit +c + go to 4 + end if +2 continue +c +c If here, this is turnon. +c +4 continue + isdat1(nsdat) = ibset(isdat1(nsdat),11) +3 continue +c +c Now done with initial turnon- or turnoff-specifics. +c + if (nint(SlurCurve).ne.0 .and. btest(isdat1(nsdat),11)) then +c +c There's a default curvature tweak +c + icurv1 = nint(SlurCurve)+3 + if (icurv1 .eq. 2) icurv1 = 1 + isdat3(nsdat) = ibset(isdat3(nsdat),0) + call setbits(isdat3(nsdat),6,2,32+icurv1) + end if +c +c Loop for rest of input +c +1 call getchar(lineq,iccount,durq) + if (index('uld',durq) .gt. 0) then +c +c Force direction +c + isdat1(nsdat) = ibset(isdat1(nsdat),26) + if (durq .eq. 'u') isdat1(nsdat) = ibset(isdat1(nsdat),27) + go to 1 + else if (index('+-',durq) .gt. 0) then + numint = numint+1 + if (numint .eq. 1) then +c +c Vertical offset +c + iccount = iccount+1 + call readnum(lineq,iccount,dumq,fnum) + iccount = iccount-1 + ivoff = nint(fnum) + if (durq .eq. '-') ivoff = -ivoff + else if (numint .eq. 2) then +c +c Horizontal offset +c + iccount = iccount+1 + call readnum(lineq,iccount,dumq,fnum) + iccount = iccount-1 +c +c fnum is abs(hshift), must be 0 to 6.3 +c + ihoff = fnum*10 + .5 + if (durq .eq. '-') ihoff = -ihoff +c +c Later will set bits to 1...127 to represent -6.3,...+6.3 +c + else +c +c Must be the 3rd signed integer, so it's a curve specification +c + isdat3(nsdat) = ibset(isdat3(nsdat),0) + iccount = iccount+1 + call readnum(lineq,iccount,dumq,fnum) + icurv1 = nint(fnum) + if (durq .eq. '-') icurv1 = -icurv1 + call setbits(isdat3(nsdat),6,2,32+icurv1) + if (dumq .ne. ':') then +c +c Back up the pointer and loop for more input +c + iccount = iccount-1 + else +c +c Expect two single digits as parameters for curve +c + isdat3(nsdat) = ibset(isdat3(nsdat),1) + call setbits(isdat3(nsdat),3,8, + * ichar(lineq(iccount+1:iccount+1))-48) + call setbits(isdat3(nsdat),3,11, + * ichar(lineq(iccount+2:iccount+2))-48) + iccount = iccount+2 + end if + end if + go to 1 + else if (durq .eq. 't') then + isdat2(nsdat) = ibset(isdat2(nsdat),3) + go to 1 + else if (durq .eq. 'b') then + isdat2(nsdat) = ibset(isdat2(nsdat),4) + go to 1 + else if (durq .eq. 's') then +c +c Endpoint tweaks for linebreak slurs. +c + call getchar(lineq,iccount,durq) ! Must be +|- +c +c Next is vertical offset +c + iccount = iccount+1 + call readnum(lineq,iccount,dumq,fnum) + if (durq .eq. '-') fnum=-fnum + call setbits(isdat4(nsdat),6,ilb12*16,nint(fnum)+32) + if (index('+-',dumq) .gt. 0) then +c +c Also a horizontal offset +c + iccount = iccount+1 + call readnum(lineq,iccount,durq,fnum) + if (dumq .eq. '-') fnum=-fnum + call setbits(isdat4(nsdat),7,ilb12*16+6,nint(10*fnum)+64) + end if + iccount = iccount-1 + ilb12 = 1 + go to 1 + else if (index('fnhH',durq).gt.0) then +c +c Special ps slur curvatures. +c Translate to old \midslur args (1,4,5,6) +c + icurv1 = index('fnxhH',durq) + if (icurv1 .eq. 5) then +c +c check for 2nd H +c + if (lineq(iccount+1:iccount+1) .eq. 'H') then + iccount = iccount+1 + icurv1 = 6 + end if + end if + isdat3(nsdat) = ibset(isdat3(nsdat),0) + call setbits(isdat3(nsdat),6,2,32+icurv1) + go to 1 + else if (durq .eq. 'p') then ! Local adjustment + call getchar(lineq,iccount,durq) ! +|- + call getchar(lineq,iccount,dumq) ! s|t +c 26 \sluradjust (p+s) +c 27 \nosluradjust (p-s) +c 28 \tieadjust (p+t) +c 29 \notieadjust (p-t) + if (durq .eq. '+') then + if (dumq .eq. 's') then + isdat2(nsdat) = ibset(isdat2(nsdat),26) + else + isdat2(nsdat) = ibset(isdat2(nsdat),28) + end if + else + if (dumq .eq. 's') then + isdat2(nsdat) = ibset(isdat2(nsdat),27) + else + isdat2(nsdat) = ibset(isdat2(nsdat),29) + end if + end if + go to 1 + else if (durq .eq. 'v') then ! Stem slur + isdat1(nsdat) = ibset(isdat1(nsdat),2) + go to 1 + end if +c +c Record shifts +c + call setbits(isdat2(nsdat),6, 6,ivoff+32) + call setbits(isdat2(nsdat),7,12,ihoff+64) +c +c Record chord flag, note level, notehead shift +c + if (notcrd) then + call setbits(isdat2(nsdat),7,19,nolev) + else + nolevc = igetbits(icrdat(ncrd),7,12) + call setbits(isdat2(nsdat),7,19,nolevc) + isdat2(nsdat) = ibset(isdat2(nsdat),0) + call setbits(isdat2(nsdat),2,1,igetbits(icrdat(ncrd),2,23)) + end if + return + end + subroutine sslur(lineq,iccount,iv,kv,ip,isdat1,isdat2,isdat3, + * nsdat,notcrd,nolev,starter) + parameter (nm=24) +c +c Reads in slur data. Record all h/v-shifts for non-chords, user-specified +c ones for chords. +c 5/26/02 now only for non-postscript slurs, use spsslur() for postscript +c +c See subroutine doslur for bit values in isdat1,2,3 +c + common /comtrill/ ntrill,ivtrill(24),iptrill(24),xnsktr(24), + * ncrd,icrdat(193),icrdot(193),icrdorn(193),nudorn, + * kudorn(63),ornhshft(63),minlev,maxlev,icrd1,icrd2 + integer*4 isdat1(202),isdat2(202),isdat3(202) + logical notcrd,btest + character*128 lineq + character*1 durq,dumq,starter + common /comslur/ listslur,upslur(nm,2),ndxslur,fontslur + * ,WrotePsslurDefaults,SlurCurve + logical upslur,fontslur,WrotePsslurDefaults +c +c Counter for signed integers. 1st is height, 2nd is horiz, 3rd is curve +c + numint = 0 + ivoff = 0 + ihoff = 0 + nsdat = nsdat+1 + if (starter.eq.'{' .or. starter.eq.'}') + * isdat2(nsdat)=ibset(isdat2(nsdat),3) + call setbits(isdat1(nsdat),5,13,iv) + call setbits(isdat1(nsdat),1,12,kv-1) + call setbits(isdat1(nsdat),8,3,ip) + isdat3(nsdat) = 0 +c +c Get id letter +c + if (lineq(iccount:iccount) .eq. 't') then +c +c Old-style t-slur. Use special idcode = 1 +c + idcode = 1 + else + call getchar(lineq,iccount,durq) + if (index('uldtb+-hf ',durq) .gt. 0) then +c +c Null id +c + idcode = 32 + iccount = iccount-1 + else if (durq.eq.'H') then +c +c Postscript slur, cannot use 'H' as code, must check for 2nd 'H' +c + idcode = 32 + iccount = iccount-1 +c +c There may be another "H", but no need to deal with it yet +c + else +c +c Set explicit idcode +c + idcode = ichar(durq) + end if + end if + call setbits(isdat1(nsdat),7,19,idcode) +c +c Set start/stop: look thru list from end for same idcode,iv,kv +c + do 2 isdat = nsdat-1 , 1 , -1 + if (idcode .eq. igetbits(isdat1(isdat),7,19) .and. + * iv .eq. igetbits(isdat1(isdat),5,13) .and. + * kv-1 .eq. igetbits(isdat1(isdat),1,12)) then +c +c Matched idcode & ivx. On/off?. If on, new is turnoff, leave bit 11 at 0. +c + if (btest(isdat1(isdat),11)) go to 3 +c +c Found slur is a turnoff, so new one is a turnon. Jump down to set bit +c + go to 4 + end if +2 continue +c +c If here, this is turnon. +c +4 continue + isdat1(nsdat) = ibset(isdat1(nsdat),11) +3 continue +c +c Now done with initial turnon- or turnoff-specifics. Loop for rest of input +c +1 call getchar(lineq,iccount,durq) + if (index('uld',durq) .gt. 0) then +c +c Force direction +c + isdat1(nsdat) = ibset(isdat1(nsdat),26) + if (durq .eq. 'u') isdat1(nsdat) = ibset(isdat1(nsdat),27) + go to 1 + else if (index('+-',durq) .gt. 0) then + numint = numint+1 + if (numint .eq. 1) then +c +c Vertical offset +c + iccount = iccount+1 + call readnum(lineq,iccount,dumq,fnum) + iccount = iccount-1 + ivoff = nint(fnum) + if (durq .eq. '-') ivoff = -ivoff + else if (numint .eq. 2) then +c +c Horizontal offset +c + iccount = iccount+1 + call readnum(lineq,iccount,dumq,fnum) + iccount = iccount-1 +c +c fnum is abs(hshift), must be 0 to 6.3 +c + ihoff = fnum*10 + .5 + if (durq .eq. '-') ihoff = -ihoff +c +c Later will set bits to 1...127 to represent -6.3,...+6.3 +c + else +c +c Must be the 3rd signed integer, so it's a curve specification +c + isdat3(nsdat) = ibset(isdat3(nsdat),0) + iccount = iccount+1 + call readnum(lineq,iccount,dumq,fnum) + icurv1 = nint(fnum) + if (durq .eq. '-') icurv1 = -icurv1 + call setbits(isdat3(nsdat),6,2,32+icurv1) + if (dumq .ne. ':') then +c +c Back up the pointer and loop for more input +c + iccount = iccount-1 + else +c +c Expect two single digits as parameters for curve +c + isdat3(nsdat) = ibset(isdat3(nsdat),1) + call setbits(isdat3(nsdat),3,8, + * ichar(lineq(iccount+1:iccount+1))-48) + call setbits(isdat3(nsdat),3,11, + * ichar(lineq(iccount+2:iccount+2))-48) + iccount = iccount+2 + end if + end if + go to 1 + else if (durq .eq. 't') then + isdat2(nsdat) = ibset(isdat2(nsdat),3) + go to 1 + else if (durq .eq. 'b') then + isdat2(nsdat) = ibset(isdat2(nsdat),4) + go to 1 + else if (index('fhH',durq) .gt. 0) then +c +c Special ps slur curvatures. Translate to old \midslur args (1,4,5,6) +c + icurv1 = 2+index('fhH',durq) + if (icurv1 .eq. 3) then + icurv1 = 1 + else if (icurv1 .eq. 5) then +c +c check for 2nd H +c + if (lineq(iccount+1:iccount+1) .eq. 'H') then + iccount = iccount+1 + icurv1 = 6 + end if + end if + isdat3(nsdat) = ibset(isdat3(nsdat),0) +c +c Must change sign if downslur, but cannot do it now since we don't know +c slur direction for sure. +c + call setbits(isdat3(nsdat),6,2,32+icurv1) + go to 1 + end if +c +c Record shifts +c + call setbits(isdat2(nsdat),6, 6,ivoff+32) + call setbits(isdat2(nsdat),7,12,ihoff+64) +c +c Record chord flag, note level, notehead shift +c + if (notcrd) then + call setbits(isdat2(nsdat),7,19,nolev) + else + nolevc = igetbits(icrdat(ncrd),7,12) + call setbits(isdat2(nsdat),7,19,nolevc) + isdat2(nsdat) = ibset(isdat2(nsdat),0) + call setbits(isdat2(nsdat),2,1,igetbits(icrdat(ncrd),2,23)) + end if + return + end + subroutine stop1() + call exit(1) + end + subroutine topfile(basenameq,lbase,nv,clefq,noinst,musicsize, + * xinstf1,mtrnmp,mtrdnp,vshrink,fbar,fontslur) + parameter (nm=24) + common /comlast/ islast,usevshrink + logical islast,usevshrink,fontslur + common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, + * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, + * lnam(nm),inameq(nm) + common /comarp/ narp,tar(8),ivar1(8),ipar1(8),levar1(8),ncmar1(8), + * xinsnow,lowdot + common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) + character*79 inameq + character*44 basenameq + character*24 fmtq + character*5 fbarq + character*1 clefq(nm),sq,chax,clefqiv + common /comstart/ facmtr + logical vshrink,lowdot,rename + logical novshrinktop,cstuplet + common /comnvst/ novshrinktop,cstuplet + common /comInstTrans/ iInstTrans(nm),iTransKey(nm),iTransAmt(nm), + * instno(nm),nInstTrans,EarlyTransOn,LaterInstTrans + logical EarlyTransOn,LaterInstTrans + common /comsize/ isize(nm) + common /comis4bignv/ is4bignv,AIset + logical is4bignv,AIset + common /comc8flag/ c8flag(nm) + logical c8flag + sq = chax(92) + vshrink = xinstf1.gt.20. .and. .not.novshrinktop + if (vshrink) then + xinsnow = 10. + else + xinsnow = xinstf1 + end if + if (.not.islast) return +c +c Initialize octave treble clef tracker +c + do 6 im = 1 , nm + c8flag(im) = .false. +6 continue + write(11,'(a)')'%%%%%%%%%%%%%%%%%' + write(11,'(a)')'%' + write(11,'(a)')'% '//basenameq(1:lbase)//'.tex' + write(11,'(a)')'%' + write(11,'(a)')'%%%%%%%%%%%%%%%%' + write(11,'(a)')sq//'input musixtex' + write(11,'(a)')sq//'input pmx' + write(11,'(a)') + * sq//'setmaxslurs{24}'//sq//'setmaxinstruments{24}%' + if (.not.fontslur) write(11,'(a)')sq//'input musixps' +c +c Need to input musixmad to permit more slurs. +c + if (musicsize .eq. 20) then + write(11,'(a)')sq//'normalmusicsize%' + else if (musicsize .eq. 16) then + write(11,'(a)')sq//'smallmusicsize%' + else if (musicsize .eq. 24) then + write(11,'(a)')sq//'largemusicsize%' +c +c Eliminate, per Tennent's analysis and musixtex changes since first input +c +c write(11,'(a)')sq//'def'//sq//'meterfont{'//sq// +c * 'meterlargefont}%' + else if (musicsize .eq. 29) then + write(11,'(a)')sq//'Largemusicsize%' +c write(11,'(a)')sq//'def'//sq//'meterfont{'//sq// +c * 'meterLargefont}%' + end if +c +c Set sizes. Have sizes per staff in isize(.) and noinst per staff in +c nsperi(.) +c +c 130324 +c iiv = 1 + do 5 iinst = 1 , noinst +c if (isize(iiv) .eq. 1) then + if (isize(iinst) .eq. 1) then + if(iinst.le.9) then + write(11,'(a8,i1,a)') + * sq//'setsize',iinst,sq//'smallvalue%' + else + write(11,'(a9,i2,a)') + * sq//'setsize{',iinst,'}'//sq//'smallvalue%' + end if +c else if (isize(iiv) .eq. 2) then + else if (isize(iinst) .eq. 2) then + if(iinst.le.9) then + write(11,'(a8,i1,a)') + * sq//'setsize',iinst,sq//'tinyvalue%' + else + write(11,'(a9,i2,a)') + * sq//'setsize{',iinst,'}'//sq//'tinyvalue%' + end if + end if +c iiv = iiv+nsperi(iinst) +5 continue + write(fbarq,'(f5.3)')fbar + write(11,'(a)')sq//'nopagenumbers' + write(11,'(a)')sq//'tracingstats=2'//sq//'relax' + write(11,'(a7,i3,a2)')sq//'hsize=',nint(widthpt),'pt' + write(11,'(a6,i'//chax(49+int(log10(height+.1)))//',a2)') + * sq//'vsize',int(height+.1),'pt' + if (abs(hoffpt) .gt. 0.1) then + if (hoffpt .le. -10.) then + write(11,'(a8,i3,a2)')sq//'hoffset',nint(hoffpt),'pt' + else if (hoffpt .lt. 0.) then + write(11,'(a8,i2,a2)')sq//'hoffset',nint(hoffpt),'pt' + else if (hoffpt .lt. 10.) then + write(11,'(a8,i1,a2)')sq//'hoffset',nint(hoffpt),'pt' + else + write(11,'(a8,i2,a2)')sq//'hoffset',nint(hoffpt),'pt' + end if + end if + if (abs(voffpt) .gt. 0.1) then + if (voffpt .le. -10.) then + write(11,'(a8,i3,a2)')sq//'voffset',nint(voffpt),'pt' + else if (voffpt .lt. 0.) then + write(11,'(a8,i2,a2)')sq//'voffset',nint(voffpt),'pt' + else if (voffpt .lt. 10.) then + write(11,'(a8,i1,a2)')sq//'voffset',nint(voffpt),'pt' + else + write(11,'(a8,i2,a2)')sq//'voffset',nint(voffpt),'pt' + end if + end if +c +c The default raisebarno=3.5 internote, set in pmx.tex. Increase to 4.5 if +c 3 sharps and treble clef, to avoid vertical clash with top space g# +c + if (isig.eq.3 .and. clefq(nv).eq.'t') write(11,'(a)') + * sq//'def'//sq//'raisebarno{4.5'//sq//'internote}' + if (noinst .lt. 10) then + write(11,'(a19,i1,a1)')sq//'def'//sq//'nbinstruments{', + * noinst,'}' + else + write(11,'(a19,i2,a1)')sq//'def'//sq//'nbinstruments{', + * noinst,'}' + end if + iv = 0 + do 1 iinst = 1 , noinst + nstaves = nsperi(iinst) + if (iinst .lt. 10) then + write(11,'(a)')sq//'setstaffs'//chax(48+iinst) + * //chax(48+nstaves) + else + write(11,'(a11,i2,a)')sq//'setstaffs{',iinst,'}' + * //chax(48+nstaves) + end if + iv = iv+1 + clefqiv = clefq(iv) + if (clefqiv.eq.'8') then + clefqiv='t' + iTransAmt(instno(iv)) = 7+iTransAmt(instno(iv)) + c8flag(iv) = .true. + end if + if (nstaves .eq. 1) then + fmtq = chax(48+numclef(clefq(iv))) + lfmtq = 1 + else + fmtq = '{'//chax(48+numclef(clefq(iv))) + lfmtq = 2 + do 2 k = 2 , nstaves + iv = iv+1 + fmtq = fmtq(1:lfmtq)//chax(48+numclef(clefq(iv))) + lfmtq = lfmtq+1 +2 continue + fmtq = fmtq(1:lfmtq)//'}' + lfmtq = lfmtq+1 + end if + if (iinst .lt. 10) then + write(11,'(a)')sq//'setclef'//chax(48+iinst)//fmtq(1:lfmtq) + else + write(11,'(a9,i2,a)')sq//'setclef{',iinst,'}'//fmtq(1:lfmtq) + end if + if (clefq(iv) .eq. '8') then + if (iinst .lt. 10) then + write(11,'(a)')sq//'settrebleclefsymbol'//chax(48+iinst)// + * sq//'treblelowoct%' + else + write(11,'(a21,i2,a)')sq//'settrebleclefsymbol{',iinst,'}'// + * sq//'treblelowoct%' + end if + c8flag(iv) = .true. + end if + do 3 lname = 79 , 2 , -1 + if (inameq(iinst)(lname:lname) .ne. ' ') go to 4 +3 continue +4 continue + lnam(iinst) = lname + if (iinst .lt. 10) then + write(11,'(a8,i1,a)')sq//'setname',iinst, + * '{'//inameq(iinst)(1:lname)//'}' + else + write(11,'(a9,i2,a)')sq//'setname{',iinst, + * '}{'//inameq(iinst)(1:lname)//'}' + end if +1 continue + write(11,'(a18,i2,a2)')sq//'generalsignature{',isig,'}%' + if (EarlyTransOn) + * call Writesetsign(nInstTrans,iInstTrans,iTransKey,EarlyTransOn) + call wgmeter(mtrnmp,mtrdnp) + ipi = nint(fracindent*widthpt) + if (ipi .lt. 10) then + write(11,'(a11,i1,a2)')sq//'parindent ',ipi,'pt' + else if (ipi .lt. 100) then + write(11,'(a11,i2,a2)')sq//'parindent ',ipi,'pt' + else + write(11,'(a11,i3,a2)')sq//'parindent ',ipi,'pt' + end if + write(11,'(a)')sq//'elemskip1pt'//sq//'afterruleskip' + * //fbarq//'pt'//sq//'beforeruleskip0pt'//sq//'relax' + if (.not.vshrink) then + if (xinstf1 .lt. 9.95) then + fmtq = '(a,f3.1,a)' + else + fmtq = '(a,f4.1,a)' + end if + facis = 1. + if (is4bignv) facis = .95 + write(11,fmtq)sq//'stafftopmarg0pt'//sq//'staffbotmarg0pt' + * //sq//'interstaff{',xinstf1*facis,'}'//sq//'relax' + else + write(11,'(a)')sq//'stafftopmarg0pt'// + * sq//'staffbotmarg5'//sq//'Interligne'//sq// + * 'interstaff{10}'//sq//'relax' + end if + if (nv.eq.1) write(11,'(a)')sq//'nostartrule' + write(11,'(a)')sq//'readmod{'//basenameq(1:lbase)//'}' + if (cstuplet) then + write(11,'(a)')sq//'input tuplet' + * //sq//'def'//sq//'xnumt#1#2#3{'//sq//'zcharnote{#2}{~}' + * //sq//'def'//sq//'tuplettxt{'//sq//'smalltype'//sq//'it{#3}' + * //sq//'/'//sq//'/}}%' + write(11,'(a)')sq//'let'//sq//'ovbkt'//sq//'uptuplet' + * //sq//'let'//sq//'unbkt'//sq//'downtuplet%' + end if + write(11,'(a)')sq//'startmuflex'//sq//'startpiece'//sq// + * 'addspace'//sq//'afterruleskip%' + return + end + character*1 function udfq(nolev,ncm) +c +c Slur directions +c + common /combc/ bcspec + logical bcspec + ntest = nolev-ncm + if (ntest.lt.0 .or. + * (ntest.eq.0 .and. bcspec .and. ncm.eq.23) ) then + udfq = 'd' + else + udfq = 'u' + end if + return + end + character*1 function udqq(nole,ncm,isl,nvmx,ivx,nv) +c +c Stem direction for single notes +c + character*1 ulfq + character*1 udqqq + logical btest + if (btest(isl,30)) then +c +c Absolute override +c + if (btest(isl,17)) then + udqqq = 'u' + else + udqqq = 'l' + end if + else if (nvmx .eq. 1) then +c +c Single voice per staff, default +c + udqqq = ulfq(1.*nole,ncm) + else +c +c Multi-voice per staff, 1st is lower, 2nd upper +c + if (ivx .le. nv) then + udqqq = 'l' + else + udqqq = 'u' + end if + end if + udqq = udqqq + return + end + character*1 function ulfq(xnolev,ncm) +c +c Stem directions +c + common /combc/ bcspec + logical bcspec + test = xnolev-ncm + if (test.lt.-.001 .or. + * (test.lt..001.and.bcspec.and.ncm.eq.23) ) then + ulfq = 'u' + else + ulfq = 'l' + end if + return + end + function upcaseq(chq) + character*1 chq,upcaseq,chax + if (ichar(chq).ge.61.and.ichar(chq).lt.122) then + upcaseq = chax(ichar(chq)-32) + else + upcaseq = chq + print*,'Warning, upcaseq was called with improper argument: ' + * //chq + stop + end if + return + end + subroutine wgmeter(mtrnmp,mtrdnp) +c +c Writes meter stuff to file 11, so only called if islast=.true. +c + character*1 sq,chax + if (mtrdnp .eq. 0) return + sq=chax(92) + if (mtrnmp.gt.0 .and. mtrnmp.le.9) then + if (mtrdnp .lt. 10) then + write(11,'(a25,i1,a2,i1,a3)') + * sq//'generalmeter{'//sq//'meterfrac{', + * mtrnmp,'}{',mtrdnp,'}}%' + else + write(11,'(a25,i1,a2,i2,a3)') + * sq//'generalmeter{'//sq//'meterfrac{', + * mtrnmp,'}{',mtrdnp,'}}%' + end if + else if (mtrnmp .ge. 10) then + if (mtrdnp .lt. 10) then + write(11,'(a25,i2,a2,i1,a3)') + * sq//'generalmeter{'//sq//'meterfrac{', + * mtrnmp,'}{',mtrdnp,'}}%' + else + write(11,'(a25,i2,a2,i2,a3)') + * sq//'generalmeter{'//sq//'meterfrac{', + * mtrnmp,'}{',mtrdnp,'}}%' + end if + else if (mtrnmp .lt. 0) then + write(11,'(a26,i1,a2,i1,a3)') + * sq//'generalmeter{'//sq//'meterfracS{', + * -mtrnmp,'}{',mtrdnp,'}}%' + else if (mtrdnp .le. 4) then + write(11,'(a21,i1,a2)') + * sq//'generalmeter{'//sq//'meterN',mtrdnp,'}%' + else if (mtrdnp .eq. 5) then + write(11,'(a)')sq//'generalmeter'//sq//'allabreve%' + else if (mtrdnp .eq. 6) then + write(11,'(a)')sq//'generalmeter'//sq//'meterC%' + else if (mtrdnp .eq. 7) then + write(11,'(a)')sq//'generalmeter'//sq//'meterIIIS%' + end if + return + end + subroutine writemidi(jobname,ljob) + parameter(nm=24,mv=24576) + common /all/ mult(nm,200),iv,nnl(nm),nv,ibar, + * ivxo(600),ipo(600),to(600),tno(600),tnote(600),eskz(nm,200), + * ipl(nm,200),ibm1(nm,9),ibm2(nm,9),nolev(nm,200),ibmcnt(nm), + * nodur(nm,200),jn,lenbar,iccount,nbars,itsofar(nm),nacc(nm,200), + * nib(nm,15),nn(nm),lenb0,lenb1,slfac,musicsize,stemmax, + * stemmin,stemlen,mtrnuml,mtrdenl,mtrnmp,mtrdnp,islur(nm,200), + * ifigdr(2,125),iline,figbass,figchk(2),firstgulp,irest(nm,200), + * iornq(nm,0:200),isdat1(202),isdat2(202),nsdat,isdat3(202), + * isdat4(202),beamon(nm),isfig(2,200),sepsymq(nm),sq,ulq(nm,9) + character*1 ulq,sepsymq,sq + logical beamon,firstgulp,figbass,figchk,isfig + character*1 byteq(4),char,chax + character*10 tempoq,instq + character*44 jobname + integer*2 mmidi + logical restpend,relacc,notmain,twoline,ismidi,crdacc + common /commidi/ imidi(0:nm),trest(0:nm),mcpitch(20),mgap, + * iacclo(0:nm,6),iacchi(0:nm,6),midinst(nm), + * nmidcrd,midchan(nm,2),numchan,naccim(0:nm), + * laccim(0:nm,10),jaccim(0:nm,10),crdacc,notmain, + * restpend(0:nm),relacc,twoline(nm),ismidi,mmidi(0:nm,mv), + * debugmidi + logical debugmidi + common /commvel/ midivel(nm),midvelc(0:nm),midibal(nm),midbc(0:nm) + * ,miditran(nm),midtc(0:nm),noinst,iinsiv(nm) + common /comevent/ miditime,lasttime + logical mmacrec,gottempo + common /commmac/ mmacstrt(0:nm,20),mmacend(0:nm,20),immac, + * mmactime(20),nmidsec,msecstrt(0:nm,60),msecend(0:nm,60), + * mmacrec,gottempo + character*79 inameq + common /comtop / itopfacteur,ibotfacteur,interfacteur,isig0, + * isig,lastisig,fracindent,widthpt,height,hoffpt,voffpt,idsig, + * lnam(nm),inameq(nm) + logical rename + common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) +c +c Used to be icmm(0:nm); did midi fail when nv>16? +c + integer*2 iinsiv,icmm(0:15) + character*5 versionc + common /comver/ versionc +c +c These are not consecutive because channel 9 is reserved for percussion. +c + data icmm /0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16/ +c +c Write Header +c + write(51,'(a,$)')'MThd'//char(0)//char(0)//char(0)//char(6) + * //char(0)//char(1)//char(0)//char(numchan+1)//char(0)//char(240) + if (debugmidi) + * write(52,'(a6,10Z4)')'"MThd"',0,0,0,6, + * 0,1,0,numchan+1,0,240 +c +c Write the "conductor" track, for keys, meter, and tempos +c Get the number of bytes in the conductor event stream +c + ndata = 1+imidi(numchan)-msecstrt(numchan,nmidsec) + do 15 isec = 1 , nmidsec-1 + ndata = ndata+1+msecend(numchan,isec)-msecstrt(numchan,isec) +15 continue +c ib1 = (4+ljob+26+ndata+4)/256 +c ib0 = 4+ljob+26+ndata+4-256*ib1 + ib1 = (4+ljob+27+ndata+4)/256 + ib0 = 4+ljob+27+ndata+4-256*ib1 + write(51,'(a,$)')'MTrk'//char(0)//char(0)//char(ib1)//char(ib0) +c +c Text header +c +c * //char(0)//char(255)//char(1)//char(ljob+26) + * //char(0)//char(255)//char(1)//char(ljob+27) + if (debugmidi) + * write(52,'(a6,8z4)')'"MTrk"',0,0,ib1,ib0, + * 0,255,1,ljob+27 + write(51,'(a,$)')jobname(1:ljob) + if (debugmidi) write(52,'(a)')'"'//jobname(1:ljob)//'"' +c +c (separate writes are needed to defeat compiler BUG!!!) +c +c write(51,'(a,$)')'.mid, produced by PMX 2.30' + write(51,'(a,$)')'.mid, produced by PMX '//versionc + if (debugmidi) write(52,'(a)') + * '".mid, produced by PMX '//versionc//'"' +c +c Conductor event data: Loop over sections. +c + do 16 isec = 1 , nmidsec + if (isec .lt. nmidsec) then + mend = msecend(numchan,isec) + else + mend = imidi(numchan) + end if + do 17 i = msecstrt(numchan,isec) , mend + write(51,'(a,$)')char(mmidi(numchan,i)) + if (debugmidi) write(52,'(z4)')mmidi(numchan,i) +17 continue +16 continue +c +c And close out the time sig / tempo track. +c + write(51,'(a,$)')char(0)//char(255)//char(2*16+15)//char(0) + if (debugmidi) write(52,'(4z4)')0,255,2*16+15,0 +c +c Loop over track for each voice: The following sets up iv. +c + iv = nv + if (twoline(nv)) then + kv = 2 + else + kv = 1 + end if +c + do 5 icm = 0 , numchan-1 +c +c Get the number of bytes in the data stream +c + ndata = 1+imidi(icm)-msecstrt(icm,nmidsec) + do 11 isec = 1 , nmidsec-1 + ndata = ndata+1+msecend(icm,isec)-msecstrt(icm,isec) +11 continue +c +c Add 3 for instrum, 4 for bal, plus 4 (for closing) to byte count, +c + ndata = ndata+11 +c +c Add 4+lnam(iinsiv(iv)) if lnam>0 , +c + if (lnam(iinsiv(iv)).gt.0) ndata = ndata+4+lnam(iinsiv(iv)) +c +c Separate total byte counts into 4 bytes +c + do 2 ibyte = 1 , 4 + if (ndata .gt. 0) then + byteq(ibyte) = char(mod(ndata,256)) + ndata = ishft(ndata,-8) + else + byteq(ibyte) = char(0) + end if +2 continue +c +c Now write front stuff for this track +c + write(51,'(a,$)')'MTrk'//byteq(4)//byteq(3)//byteq(2)//byteq(1) + * //char(0)//char(12*16+icmm(icm))//char(midinst(iinsiv(iv))) + * //char(0)//char(11*16+icmm(icm))//char(10)//char(midbc(icm)) + if (debugmidi) write(52,'(a4,z2,a7,11z4)')'icm=',icm, + * ' "MTrk"',ichar(byteq(4)),ichar(byteq(3)),ichar(byteq(2)), + * ichar(byteq(1)),0,12*16+icmm(icm),midinst(iinsiv(iv)), + * 0,11*16+icmm(icm),10,midbc(icm) + if (lnam(iinsiv(iv)) .gt. 0) then +c +c Add instrument name as sequence name +c + write(51,'(a,$)')char(0)//char(255)//char(3) + * //char(lnam(iinsiv(iv))) + if (debugmidi) write(52,'(4z4)')0,255,3,lnam(iinsiv(iv)) + write(51,'(a,$)') + * inameq(iinsiv(iv))(1:lnam(iinsiv(iv))) + if (debugmidi) write(52,'(a)') + * '"'//inameq(iinsiv(iv))(1:lnam(iinsiv(iv)))//'"' + end if + write(tempoq,'(i2)')icm + write(instq,'(i3)')midinst(iinsiv(iv)) + call printl('MIDI instrument '//tempoq(1:2)//' is '//instq(1:3)) +c +c Notes: Loop over sections. +c + do 9 isec = 1 , nmidsec + if (isec .lt. nmidsec) then + mend = msecend(icm,isec) + else + mend = imidi(icm) + end if + do 10 i = msecstrt(icm,isec) , mend + write(51,'(a,$)')char(mmidi(icm,i)) + if (debugmidi) write(52,'(z4)')mmidi(icm,i) +10 continue +9 continue +c +c Closing 4 bytes +c + write(51,'(a,$)')chax(0)//char(255)//char(2*16+15)//char(0) + if (debugmidi) write(52,'(4z4)')0,255,2*16+15,0 + if (kv .eq. 2) then + kv = 1 + else if (iv .eq. 1) then + go to 5 + else + iv = iv-1 + if (twoline(iv)) kv=2 + end if +5 continue + write(*,'(1x,a12,(10i6))')'Bytes used:',(imidi(icm),icm=0,numchan) + write(15,'(1x,a12,(10i6))') + * 'Bytes used:',(imidi(icm),icm=0,numchan) + close(51) + if (debugmidi) close(52) + return + end + subroutine Writesetsign(nInstTrans,iInstTrans,iTransKey,flag) + parameter(nm=24) + integer*4 iInstTrans(nm),iTransKey(nm) + character*79 notexq + character*1 chax + logical flag +c +c Assumes notexq is blank +c + do 1 i = 1 , nInstTrans + notexq = chax(92)//'setsign' + lnote = 8 + if (iInstTrans(i) .lt. 10) then + notexq = notexq(1:lnote)//chax(48+iInstTrans(i)) + lnote = lnote+1 + else + write(notexq(lnote+1:lnote+4),'(a1,i2,a1)') + * '{',iInstTrans(i),'}' + lnote = lnote+4 + end if + if (iTransKey(i) .lt. 0) then + write(notexq(lnote+1:lnote+4),'(a1,i2,a1)') + * '{',iTransKey(i),'}' + lnote = lnote+4 + else + notexq = notexq(1:lnote)//chax(48+iTransKey(i)) + lnote = lnote+1 + end if + write(11,'(a)')notexq(1:lnote)//'%' +1 continue + flag = .false. + return + end + subroutine writflot(x,notexq,lenline) + character*(*) notexq + if (x .lt. 0.95) then + write(notexq(lenline+1:lenline+2),'(f2.1)')x + lenline = lenline+2 + else if (x .lt. 9.95) then + write(notexq(lenline+1:lenline+3),'(f3.1)')x + lenline = lenline+3 + else + write(notexq(lenline+1:lenline+4),'(f4.1)')x + lenline = lenline+4 + end if + return + end + subroutine wsclef(iv,ninow,nclef) +c subroutine wsclef(iv,ninow,clefq,nclef) +c +c Writes \setclef for instrument containing *staff* iv +c + parameter (nm=24) + common /comlast/ islast,usevshrink + logical islast,usevshrink + common /comnvi/ nsperi(nm),nspern(nm),rename,iiorig(nm) + logical rename +c +c In pmx271, had removed clefq, so with 2 or more staves in +c an instrument, had problems. So replace in 272 +c + common /comclefq/ clefq(nm) + character*1 clefq,chax + character*40 temq + common /comc8flag/ c8flag(nm) + logical c8flag + if (nclef .lt. 7) then + clefq(iv) = chax(48+nclef) + else + clefq(iv)='9' + end if + if (.not.islast) return + iv1 = 1 + do 1 iinst = 1 , ninow + if (iv .lt. iv1+nspern(iinst)) go to 2 + iv1 = iv1+nspern(iinst) +1 continue + print* + print*,'Should not be here in wsclef!' + call stop1() +2 continue +c +c Here, iinst is the instrument number with staff of clef change +c + iv2 = iv1+nspern(iinst)-1 + if (iinst .lt. 10) then + temq = chax(92)//'setclef'//chax(48+iinst) + ltem = 9 + else + write(temq,'(a9,i2,a1)') chax(92)//'setclef{',iinst,'}' + ltem = 12 + end if + if (iv1 .eq. iv2) then +c +c Only one staff (iv) in instrument with clef change +c + write(11,'(a)')temq(1:ltem)//clefq(iv)//'%' + else + temq = temq(1:ltem)//'{' + ltem = ltem+1 +c +c Loop over staves, but clefq has only changed for one of them +c + do 3 iiv = iv1 , iv2 + temq = temq(1:ltem)//chax(48+numclef(clefq(iiv))) + ltem = ltem+1 +3 continue + write(11,'(a)')temq(1:ltem)//'}%' + end if + if (c8flag(iv)) then +c +c If we change FROM octave treble clef to some other, need the following. +c + write(11,'(a)')char(92)//'settrebleclefsymbol'//chax(48+iinst) + * //char(92)//'trebleclef%' + c8flag(iv) = .false. + end if + return + end + subroutine chkpmxlyr(lineq,iccount,lyrerr) + character*128 lineq + character*1 charq + lyrerr = 0 +c +c On entry, last char was " +c +18 call g1etchar(lineq,iccount,charq) + if (iccount .eq. 121) then + lyrerr = 2 + return +c else if (charq.eq.'"') then + else if (charq.eq.'"' .and. + * .not.(lineq(iccount-1:iccount-1).eq.char(92))) then + call g1etchar(lineq,iccount,charq) +c +c Check for raise/lower command +c + if (charq .eq. '@') then +c +c @ positions lyrics vertically for current voice +c [a,b] above or below of the staff +c +/- i offset, \internotes +c + call g1etchar(lineq,iccount,charq) + if (index('ab',charq).eq.0) then + lyrerr = 3 + return + end if + call g1etchar(lineq,iccount,charq) + if (index('+-',charq).eq.0) then + lyrerr = 4 + return + end if + call g1etchar(lineq,iccount,charq) + if (index('0123456789',charq).eq.0) then + lyrerr = 5 + return + end if + else if (charq .ne. ' ') then +c +c 2nd " must be followed by ' ' +c + lyrerr = 1 + return + end if + return + end if + go to 18 + end + subroutine dopmxlyr(lineq,iccount) +c +c lineq has " at iccount. Find end of lyrics string, replace "..." +c with \pmxlyr{...}\, but also look for ~ in lyrics and replace with '\ll ', +c (unless preceded with '\'), check length +c + character*128 lineq,lineqt + character*1 sq,chax + sq = chax(92) + iend = lenstr(lineq,128) +c +c i2nd = iccount+index(lineq(iccount+1:128),'"') +c Find position of closing '"'; must bypass any \" which is used for umlaut +c + i2nd = iccount+index(lineq(iccount+1:128),'"') +2 continue + if (lineq(i2nd-1:i2nd-1).eq.char(92)) then + i2nd = i2nd+index(lineq(i2nd+1:128),'"') + go to 2 + end if + istart = iccount +1 itilde = istart+index(lineq(istart+1:i2nd-1),'~') + if (itilde.gt.istart.and.itilde.lt.i2nd) then +c +c Replace tilde if not preceded by \ +c + if (iend .ge. 117) then + print*,'Sorry, lyric string is too long, stopping' + call stop1() + else if (lineq(itilde-1:itilde-1) .eq. sq) then + istart = itilde + go to 1 + end if + lineqt = lineq(1:itilde-1)//sq//'lk ' + * //lineq(itilde+1:iend) + iend = lenstr(lineqt,128) + i2nd = i2nd+3 + lineq = lineqt + go to 1 + end if + if (iccount .eq. 1) then + lineqt = sq//'pmxlyr{'//lineq(2:i2nd-1)//'}'//sq + * //lineq(i2nd+1:128) + else + lineqt = lineq(1:iccount-1)//sq//'pmxlyr{' + * //lineq(iccount+1:i2nd-1)//'}'//sq + * //lineq(i2nd+1:128) + end if + i2nd = i2nd+8 + lineq = lineqt + if (lineq(i2nd+1:i2nd+1) .eq. '@') then + lineqt = lineq(1:i2nd)//'at{'//lineq(i2nd+2:i2nd+4)//'}'//sq + * //lineq(i2nd+5:128) + lineq = lineqt + end if + return + end + subroutine inst2chan(midc,midi,midchan,nv,iinsiv,twoline) +c propagate per-instrument quantities to per-channel ones + parameter (nm=24) + integer*4 midc(0:nm),midi(nm),midchan(nm,2) + integer*2 iinsiv(nm) + logical twoline(nm) + do iv = nv, 1, -1 + if (twoline(iv)) then + midc(midchan(iv,2)) = midi(iinsiv(iv)) + end if + midc(midchan(iv,1)) = midi(iinsiv(iv)) + end do + end + + diff --git a/Build/source/utils/pmx/pmx-src/pmxab.c b/Build/source/utils/pmx/pmx-src/pmxab.c index c88dfc664d8..2ad12053934 100644 --- a/Build/source/utils/pmx/pmx-src/pmxab.c +++ b/Build/source/utils/pmx/pmx-src/pmxab.c @@ -952,7 +952,7 @@ static integer c__47 = 47; { /* Initialized data */ - static char date[9] = "27 Jan 20"; + static char date[9] = "17 Mar 20"; static char version[5] = "2.94 "; static integer maxit = 200; static integer ncalls = 0; @@ -3040,7 +3040,7 @@ L7: } /* accsym_ */ /* Subroutine */ int addask_(real *taskn, real *waskn, real *elaskn, real * - fixednew, real *scaldold, real *tglp1, logical *isudsp) + fixednew, real *scaldold, real *tglp1, real *scfac, logical *isudsp) { /* System generated locals */ integer i__1; @@ -3054,129 +3054,131 @@ L7: static real oldelask; extern /* Subroutine */ int stop1_(void); static integer iudsp; - static real oldwask; + static real scoarg, oldwask; /* Fortran I/O blocks */ - static cilist io___77 = { 0, 6, 0, 0, 0 }; + static cilist io___78 = { 0, 6, 0, 0, 0 }; #line 1198 "" + scoarg = *scaldold * *scfac; +#line 1199 "" if (*isudsp) { /* Find which udsp we're dealing with */ -#line 1202 "" +#line 1203 "" i__1 = comudsp_1.nudsp; -#line 1202 "" - for (iudsp = 1; iudsp <= i__1; ++iudsp) { #line 1203 "" + for (iudsp = 1; iudsp <= i__1; ++iudsp) { +#line 1204 "" if ((r__1 = *taskn + *tglp1 - comudsp_1.tudsp[iudsp - 1], dabs( r__1)) < comtol_1.tol) { -#line 1203 "" - goto L2; -#line 1203 "" - } #line 1204 "" -/* L1: */ + goto L2; #line 1204 "" - } + } #line 1205 "" - s_wsle(&io___77); +/* L1: */ #line 1205 "" + } +#line 1206 "" + s_wsle(&io___78); +#line 1206 "" do_lio(&c__9, &c__1, "You should note BEEE here in addask!", (ftnlen) 36); -#line 1205 "" - e_wsle(); #line 1206 "" - stop1_(); + e_wsle(); #line 1207 "" + stop1_(); +#line 1208 "" L2: /* Fixednew and scaldold must not be changed, since udsp's are already included */ /* in fsyst from pmxa, and udsp don't involve scaled space.. */ -#line 1212 "" +#line 1213 "" if (comas1_1.naskb > 0 && (r__1 = *taskn - comas1_1.task[max(1, comas1_1.naskb) - 1], dabs(r__1)) < comtol_1.tol) { /* Must add user-defined space to what's there already. */ -#line 1216 "" - comas1_1.wask[comas1_1.naskb - 1] += comudsp_1.udsp[iudsp - 1]; #line 1217 "" + comas1_1.wask[comas1_1.naskb - 1] += comudsp_1.udsp[iudsp - 1]; +#line 1218 "" } else { /* This place has no other space. */ -#line 1221 "" - ++comas1_1.naskb; #line 1222 "" - comas1_1.task[comas1_1.naskb - 1] = *taskn; + ++comas1_1.naskb; #line 1223 "" - comas1_1.wask[comas1_1.naskb - 1] = comudsp_1.udsp[iudsp - 1]; + comas1_1.task[comas1_1.naskb - 1] = *taskn; #line 1224 "" - comas1_1.elask[comas1_1.naskb - 1] = 0.f; + comas1_1.wask[comas1_1.naskb - 1] = comudsp_1.udsp[iudsp - 1]; #line 1225 "" - } + comas1_1.elask[comas1_1.naskb - 1] = 0.f; #line 1226 "" + } +#line 1227 "" } else { /* 130330 start */ -#line 1228 "" - oldwask = 0.f; #line 1229 "" + oldwask = 0.f; +#line 1230 "" oldelask = 0.f; /* 130330 end */ /* This is a normal space, no effect if smaller than existing space */ -#line 1234 "" +#line 1235 "" if (comas1_1.naskb > 0 && (r__1 = *taskn - comas1_1.task[max(1, comas1_1.naskb) - 1], dabs(r__1)) < comtol_1.tol) { /* We already put in some space at this time */ /* Check if new one needs more space than old one at same time */ -#line 1239 "" +#line 1240 "" if (*waskn > comas1_1.wask[comas1_1.naskb - 1]) { /* 130330 We were double counting the larger space when it came 2nd */ /* Need to fix but don't see how yet. Assume times came in order and */ /* that last naskb defined spaces that need updating */ -#line 1245 "" - oldwask = comas1_1.wask[comas1_1.naskb - 1]; #line 1246 "" + oldwask = comas1_1.wask[comas1_1.naskb - 1]; +#line 1247 "" oldelask = comas1_1.elask[comas1_1.naskb - 1]; /* End of 130330 insertions */ -#line 1248 "" - --comas1_1.naskb; #line 1249 "" - } else { + --comas1_1.naskb; #line 1250 "" - return 0; + } else { #line 1251 "" - } + return 0; #line 1252 "" - } + } #line 1253 "" - ++comas1_1.naskb; + } #line 1254 "" - comas1_1.task[comas1_1.naskb - 1] = *taskn; + ++comas1_1.naskb; #line 1255 "" - comas1_1.wask[comas1_1.naskb - 1] = *waskn; + comas1_1.task[comas1_1.naskb - 1] = *taskn; #line 1256 "" + comas1_1.wask[comas1_1.naskb - 1] = *waskn; +#line 1257 "" comas1_1.elask[comas1_1.naskb - 1] = *elaskn; /* 130330 start */ /* fixednew = fixednew+waskn */ /* scaldold = scaldold+elaskn */ -#line 1260 "" - *fixednew = *fixednew + *waskn - oldwask; #line 1261 "" - *scaldold = *scaldold + *elaskn - oldelask; + *fixednew = *fixednew + *waskn - oldwask; +#line 1262 "" + *scaldold = scoarg + *elaskn - oldelask; /* 130330 end */ -#line 1263 "" - } #line 1264 "" + } +#line 1265 "" return 0; } /* addask_ */ @@ -3192,18 +3194,18 @@ L2: /* Local variables */ static char tchar[1]; -#line 1269 "" +#line 1270 "" *(unsigned char *)tchar = *(unsigned char *)noteq; /* Writing concatenation */ -#line 1270 "" +#line 1271 "" i__1[0] = 1, a__1[0] = " "; -#line 1270 "" +#line 1271 "" i__1[1] = 1, a__1[1] = tchar; -#line 1270 "" - s_cat(noteq, a__1, i__1, &c__2, (ftnlen)8); #line 1271 "" - *lnoten = 2; + s_cat(noteq, a__1, i__1, &c__2, (ftnlen)8); #line 1272 "" + *lnoten = 2; +#line 1273 "" return 0; } /* addblank_ */ @@ -3212,54 +3214,54 @@ L2: { static integer ifb; -#line 1280 "" +#line 1281 "" /* Parameter adjustments */ -#line 1280 "" +#line 1281 "" ulfbq -= 25; -#line 1280 "" +#line 1281 "" t2fb -= 25; -#line 1280 "" +#line 1281 "" t1fb -= 25; -#line 1280 "" +#line 1281 "" --nfb; -#line 1280 "" +#line 1281 "" -#line 1280 "" +#line 1281 "" /* Function Body */ -#line 1280 "" - *ifbadd = 1; #line 1281 "" - ++nfb[*iv]; + *ifbadd = 1; #line 1282 "" - for (ifb = nfb[*iv] - 1; ifb >= 1; --ifb) { + ++nfb[*iv]; #line 1283 "" - if (*tnew < t1fb[*iv + ifb * 24] - comtol_1.tol) { + for (ifb = nfb[*iv] - 1; ifb >= 1; --ifb) { #line 1284 "" - t1fb[*iv + (ifb + 1) * 24] = t1fb[*iv + ifb * 24]; + if (*tnew < t1fb[*iv + ifb * 24] - comtol_1.tol) { #line 1285 "" - t2fb[*iv + (ifb + 1) * 24] = t2fb[*iv + ifb * 24]; + t1fb[*iv + (ifb + 1) * 24] = t1fb[*iv + ifb * 24]; #line 1286 "" + t2fb[*iv + (ifb + 1) * 24] = t2fb[*iv + ifb * 24]; +#line 1287 "" *(unsigned char *)&ulfbq[*iv + (ifb + 1) * 24] = *(unsigned char * )&ulfbq[*iv + ifb * 24]; -#line 1287 "" - } else { #line 1288 "" - *ifbadd = ifb + 1; + } else { #line 1289 "" - goto L2; + *ifbadd = ifb + 1; #line 1290 "" - } + goto L2; #line 1291 "" + } +#line 1292 "" /* L1: */ -#line 1291 "" - } #line 1292 "" -L2: + } #line 1293 "" - t1fb[*iv + *ifbadd * 24] = *tnew; +L2: #line 1294 "" - *(unsigned char *)&ulfbq[*iv + *ifbadd * 24] = 'x'; + t1fb[*iv + *ifbadd * 24] = *tnew; #line 1295 "" + *(unsigned char *)&ulfbq[*iv + *ifbadd * 24] = 'x'; +#line 1296 "" return 0; } /* addfb_ */ @@ -3301,8 +3303,8 @@ L2: static integer itiesav[500] /* was [5][100] */, idurvar; /* Fortran I/O blocks */ - static cilist io___87 = { 0, 6, 0, 0, 0 }; - static cilist io___99 = { 0, 6, 0, 0, 0 }; + static cilist io___88 = { 0, 6, 0, 0, 0 }; + static cilist io___100 = { 0, 6, 0, 0, 0 }; /* subroutine addmidi(icm,nolev,iacc,isig,time,rest,endrest) */ @@ -3316,178 +3318,178 @@ L2: /* Cancel out barline accidentals if there's a rest. */ -#line 1335 "" +#line 1336 "" if (*rest) { -#line 1335 "" +#line 1336 "" comslm_1.naccbl[(300 + (0 + (*icm - 0 << 2)) - 300) / 4] = 0; -#line 1335 "" +#line 1336 "" } /* Special path to insert dummy rest at end of a section */ -#line 1339 "" +#line 1340 "" if (*endrest) { -#line 1339 "" +#line 1340 "" goto L20; -#line 1339 "" +#line 1340 "" } -#line 1341 "" +#line 1342 "" i__1 = commidi_1.nmidcrd; -#line 1341 "" +#line 1342 "" for (ion = 0; ion <= i__1; ++ion) { /* check if this is only to get pitch of a chord note */ -#line 1345 "" +#line 1346 "" if (commidi_1.notmain) { -#line 1345 "" +#line 1346 "" goto L6; -#line 1345 "" +#line 1346 "" } /* check for rest */ -#line 1349 "" +#line 1350 "" if (*rest) { /* Will not put in a note, but must update timing */ -#line 1353 "" +#line 1354 "" if (! commidi_1.restpend[*icm]) { /* First rest in sequence, save the time */ -#line 1357 "" - commidi_1.restpend[*icm] = TRUE_; #line 1358 "" - commidi_1.trest[*icm] = *time; + commidi_1.restpend[*icm] = TRUE_; #line 1359 "" - } else { + commidi_1.trest[*icm] = *time; #line 1360 "" - commidi_1.trest[*icm] += *time; + } else { #line 1361 "" + commidi_1.trest[*icm] += *time; +#line 1362 "" } /* Note: code checkers don't like the above due to calling addmidi(trest(icm)) */ /* but this only happens if rest at end of section (endrest=.true.) (called */ /* from getmidi(), in which case these above lines are bypassed. */ -#line 1367 "" - chkimidi_(icm); #line 1368 "" - return 0; + chkimidi_(icm); #line 1369 "" + return 0; +#line 1370 "" } /* time tics */ -#line 1373 "" - if (commidi_1.imidi[*icm] > 0 && ion == 0) { #line 1374 "" - idur = commidi_1.mgap; + if (commidi_1.imidi[*icm] > 0 && ion == 0) { #line 1375 "" - } else { + idur = commidi_1.mgap; #line 1376 "" - idur = 0; + } else { #line 1377 "" - } + idur = 0; #line 1378 "" - if (commidi_1.restpend[*icm]) { + } #line 1379 "" - commidi_1.restpend[*icm] = FALSE_; + if (commidi_1.restpend[*icm]) { #line 1380 "" + commidi_1.restpend[*icm] = FALSE_; +#line 1381 "" r__1 = commidi_1.trest[*icm] * 15; -#line 1380 "" - idur += i_nint(&r__1); #line 1381 "" + idur += i_nint(&r__1); +#line 1382 "" } /* time to start of note */ -#line 1385 "" - idurvar = isetvarlen_(&idur, &nby2on); #line 1386 "" - if (nby2on > 4) { -#line 1387 "" - s_wsle(&io___87); + idurvar = isetvarlen_(&idur, &nby2on); #line 1387 "" + if (nby2on > 4) { +#line 1388 "" + s_wsle(&io___88); +#line 1388 "" do_lio(&c__9, &c__1, "You got >4 bytes, something is bogus.", ( ftnlen)37); -#line 1387 "" - e_wsle(); #line 1388 "" - stop1_(); + e_wsle(); #line 1389 "" - } + stop1_(); #line 1390 "" - ++commidi_1.imidi[*icm]; + } #line 1391 "" + ++commidi_1.imidi[*icm]; +#line 1392 "" i__2 = nby2on; -#line 1391 "" +#line 1392 "" for (i__ = 1; i__ <= i__2; ++i__) { /* imidi points to cell before highest (leftmost) byte. Start with lowest byte */ /* at far right, fill in backwards */ -#line 1396 "" +#line 1397 "" commidi_1.mmidi[*icm + (commidi_1.imidi[*icm] + nby2on - i__) * 25 - 25] = (shortint) (idurvar % 256); -#line 1397 "" +#line 1398 "" if (nby2on > 1) { -#line 1397 "" +#line 1398 "" idurvar /= 256; -#line 1397 "" - } #line 1398 "" + } +#line 1399 "" /* L2: */ -#line 1398 "" - } #line 1399 "" + } +#line 1400 "" commidi_1.imidi[*icm] = commidi_1.imidi[*icm] + nby2on - 1; /* Note-on signal */ -#line 1403 "" - ++commidi_1.imidi[*icm]; #line 1404 "" + ++commidi_1.imidi[*icm]; +#line 1405 "" commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = (shortint) ( icmm[*icm] + 144); /* Entry point for chord note pitch determination */ -#line 1408 "" +#line 1409 "" L6: /* Get midi pitch. On chord iteration, only do this first time (main note), */ /* since pitch was already computed for nonmain chord notes. */ -#line 1413 "" - if (ion == 0) { #line 1414 "" - ipsav = *nolev * 12.f / 7 + 11; + if (ion == 0) { #line 1415 "" - ipsav0 = ipsav; + ipsav = *nolev * 12.f / 7 + 11; #line 1416 "" + ipsav0 = ipsav; +#line 1417 "" if (*midisig != 0) { /* Adjust for signature */ -#line 1420 "" - *(unsigned char *)notenumq = (char) (*nolev % 7 + 48); #line 1421 "" + *(unsigned char *)notenumq = (char) (*nolev % 7 + 48); +#line 1422 "" if (*midisig >= i_indx("4152630", notenumq, (ftnlen)7, ( ftnlen)1)) { -#line 1422 "" - ++ipsav; #line 1423 "" + ++ipsav; +#line 1424 "" } else if (-(*midisig) >= i_indx("0362514", notenumq, (ftnlen) 7, (ftnlen)1)) { -#line 1424 "" - --ipsav; #line 1425 "" - } + --ipsav; #line 1426 "" + } +#line 1427 "" } /* Deal with accidentals. */ @@ -3496,440 +3498,440 @@ L6: /* effect X fl sh na X dfl dsh X */ /* iashft X -1 1 0 X -2 2 X */ -#line 1434 "" - jacc = 0; #line 1435 "" - eximacc = FALSE_; + jacc = 0; #line 1436 "" + eximacc = FALSE_; +#line 1437 "" if (*iacc > 0) { /* Adjust key-sig-adjusted pitch for explicit accidental (and exit) */ -#line 1440 "" - jacc = iashft_(iacc); #line 1441 "" - eximacc = TRUE_; + jacc = iashft_(iacc); #line 1442 "" + eximacc = TRUE_; +#line 1443 "" if (! commidi_1.relacc) { -#line 1442 "" +#line 1443 "" jacc = jacc + ipsav0 - ipsav; -#line 1442 "" +#line 1443 "" } /* (Above) Shift applies to diatonic pitch but will be added to adjusted one */ -#line 1446 "" +#line 1447 "" } else if (commidi_1.naccim[*icm] > 0) { /* Possible implicit accidental from earlier in the bar */ /* Check for prior accid in this bar at this note level */ -#line 1451 "" +#line 1452 "" i__2 = commidi_1.naccim[*icm]; -#line 1451 "" - for (kacc = 1; kacc <= i__2; ++kacc) { #line 1452 "" - if (commidi_1.laccim[*icm + kacc * 25 - 25] == *nolev) { + for (kacc = 1; kacc <= i__2; ++kacc) { #line 1453 "" - jacc = commidi_1.jaccim[*icm + kacc * 25 - 25]; + if (commidi_1.laccim[*icm + kacc * 25 - 25] == *nolev) { #line 1454 "" - eximacc = TRUE_; + jacc = commidi_1.jaccim[*icm + kacc * 25 - 25]; #line 1455 "" + eximacc = TRUE_; +#line 1456 "" if (! commidi_1.relacc) { -#line 1455 "" +#line 1456 "" jacc = jacc + ipsav0 - ipsav; -#line 1455 "" - } #line 1456 "" - goto L4; + } #line 1457 "" - } + goto L4; #line 1458 "" + } +#line 1459 "" /* L3: */ -#line 1458 "" - } #line 1459 "" -L4: + } #line 1460 "" +L4: +#line 1461 "" ; -#line 1460 "" +#line 1461 "" } /* Must split off the following if block from those above because chord */ /* notes can cause naccim>0, forcing us to miss other chord note's */ /* accross-bar-line accidental */ -#line 1466 "" +#line 1467 "" if (comslm_1.naccbl[*icm] > 0 && ! eximacc) { /* Possible carryover accid from prior bar (or prior same-pitch note). */ -#line 1470 "" +#line 1471 "" i__2 = comslm_1.naccbl[*icm]; -#line 1470 "" - for (kacc = 1; kacc <= i__2; ++kacc) { #line 1471 "" - if (comslm_1.laccbl[*icm + kacc * 25 - 25] == *nolev) { + for (kacc = 1; kacc <= i__2; ++kacc) { #line 1472 "" + if (comslm_1.laccbl[*icm + kacc * 25 - 25] == *nolev) { +#line 1473 "" jacc = comslm_1.jaccbl[*icm + kacc * 25 - 25]; /* Since we are *using* the bar-line accid, must flag it to be saved for next. */ -#line 1476 "" - ++comslm_1.nusebl; #line 1477 "" + ++comslm_1.nusebl; +#line 1478 "" comips_1.jusebl[comslm_1.nusebl - 1] = (shortint) jacc; -#line 1478 "" +#line 1479 "" comips_1.lusebl[comslm_1.nusebl - 1] = (shortint) (* nolev); -#line 1479 "" +#line 1480 "" if (! commidi_1.relacc) { -#line 1479 "" +#line 1480 "" jacc = jacc + ipsav0 - ipsav; -#line 1479 "" - } #line 1480 "" - goto L22; + } #line 1481 "" - } + goto L22; #line 1482 "" + } +#line 1483 "" /* L21: */ -#line 1482 "" - } #line 1483 "" -L22: + } #line 1484 "" +L22: +#line 1485 "" ; -#line 1484 "" - } #line 1485 "" - ipsav += jacc; + } #line 1486 "" - } + ipsav += jacc; #line 1487 "" - if (commidi_1.notmain) { + } #line 1488 "" + if (commidi_1.notmain) { +#line 1489 "" commidi_1.mcpitch[commidi_1.nmidcrd - 1] = ipsav; /* Save pitch for tie checks */ -#line 1492 "" +#line 1493 "" if (comslm_1.levson[*icm] == *nolev && ! comslm_1.slmon[*icm]) { -#line 1492 "" +#line 1493 "" comips_1.ipslon[*icm] = (shortint) ipsav; -#line 1492 "" +#line 1493 "" } -#line 1494 "" - } else { #line 1495 "" - ++commidi_1.imidi[*icm]; + } else { #line 1496 "" - if (ion == 0) { + ++commidi_1.imidi[*icm]; #line 1497 "" + if (ion == 0) { +#line 1498 "" commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = ( shortint) ipsav; -#line 1498 "" +#line 1499 "" if (comslm_1.levson[*icm] == *nolev && ! comslm_1.slmon[*icm]) { -#line 1498 "" +#line 1499 "" comips_1.ipslon[*icm] = (shortint) ipsav; -#line 1498 "" +#line 1499 "" } -#line 1500 "" - } else { #line 1501 "" + } else { +#line 1502 "" commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = ( shortint) commidi_1.mcpitch[ion - 1]; -#line 1502 "" - } #line 1503 "" - } + } #line 1504 "" + } +#line 1505 "" if (ion == 0) { /* Only record accids for non-chords, main chord note during chord iteration */ /* and chordnotes on first call but not during iteration */ -#line 1509 "" +#line 1510 "" if (*iacc > 0) { /* Set marker for accidental for possible continuations later this bar */ /* but first check and clear earlier ones on same note. */ -#line 1514 "" +#line 1515 "" i__2 = commidi_1.naccim[*icm]; -#line 1514 "" - for (kacc = 1; kacc <= i__2; ++kacc) { #line 1515 "" - if (commidi_1.laccim[*icm + kacc * 25 - 25] == *nolev) { + for (kacc = 1; kacc <= i__2; ++kacc) { #line 1516 "" + if (commidi_1.laccim[*icm + kacc * 25 - 25] == *nolev) { +#line 1517 "" i__3 = commidi_1.naccim[*icm] - 1; -#line 1516 "" - for (macc = kacc; macc <= i__3; ++macc) { #line 1517 "" + for (macc = kacc; macc <= i__3; ++macc) { +#line 1518 "" commidi_1.laccim[*icm + macc * 25 - 25] = commidi_1.laccim[*icm + (macc + 1) * 25 - 25]; -#line 1518 "" +#line 1519 "" commidi_1.jaccim[*icm + macc * 25 - 25] = commidi_1.jaccim[*icm + (macc + 1) * 25 - 25]; -#line 1519 "" +#line 1520 "" /* L24: */ -#line 1519 "" - } #line 1520 "" - goto L25; + } #line 1521 "" - } + goto L25; #line 1522 "" + } +#line 1523 "" /* L23: */ -#line 1522 "" - } #line 1523 "" - goto L26; + } #line 1524 "" -L25: + goto L26; #line 1525 "" - --commidi_1.naccim[*icm]; +L25: #line 1526 "" + --commidi_1.naccim[*icm]; +#line 1527 "" L26: /* Flag new accidental */ -#line 1530 "" - ++commidi_1.naccim[*icm]; #line 1531 "" + ++commidi_1.naccim[*icm]; +#line 1532 "" commidi_1.laccim[*icm + commidi_1.naccim[*icm] * 25 - 25] = * nolev; -#line 1532 "" +#line 1533 "" commidi_1.jaccim[*icm + commidi_1.naccim[*icm] * 25 - 25] = iashft_(iacc); -#line 1533 "" +#line 1534 "" } /* Bail if this is a chord note on the first call (from docrd) */ -#line 1537 "" - if (commidi_1.notmain) { #line 1538 "" - chkimidi_(icm); + if (commidi_1.notmain) { #line 1539 "" - return 0; + chkimidi_(icm); #line 1540 "" - } + return 0; #line 1541 "" + } +#line 1542 "" } /* Vel */ -#line 1545 "" - ++commidi_1.imidi[*icm]; #line 1546 "" + ++commidi_1.imidi[*icm]; +#line 1547 "" commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = (shortint) commvel_1.midvelc[*icm]; -#line 1547 "" - chkimidi_(icm); #line 1548 "" + chkimidi_(icm); +#line 1549 "" /* L7: */ -#line 1548 "" +#line 1549 "" } /* For tie checks */ -#line 1552 "" +#line 1553 "" if (comslm_1.levson[*icm] > 0 && ! comslm_1.slmon[*icm]) { -#line 1552 "" +#line 1553 "" comslm_1.imidso[*icm] = commidi_1.imidi[*icm]; -#line 1552 "" +#line 1553 "" } /* Entry point for special rests at section ends (endrest=T) */ -#line 1556 "" +#line 1557 "" L20: /* Now insert all the ends */ -#line 1560 "" +#line 1561 "" i__1 = commidi_1.nmidcrd; -#line 1560 "" - for (ioff = 0; ioff <= i__1; ++ioff) { #line 1561 "" + for (ioff = 0; ioff <= i__1; ++ioff) { +#line 1562 "" if (ioff == 0) { /* time to end */ -#line 1565 "" +#line 1566 "" r__1 = *time * 15; -#line 1565 "" - idur1 = i_nint(&r__1); #line 1566 "" + idur1 = i_nint(&r__1); +#line 1567 "" r__1 = commidi_1.trest[*icm] * 15; -#line 1566 "" - if (! (*endrest) || comevent_1.miditime == i_nint(&r__1)) { #line 1567 "" - idur = idur1 - commidi_1.mgap; + if (! (*endrest) || comevent_1.miditime == i_nint(&r__1)) { #line 1568 "" - } else { + idur = idur1 - commidi_1.mgap; #line 1569 "" - idur = idur1; + } else { #line 1570 "" + idur = idur1; +#line 1571 "" } /* Deal with roundoff problems with 7-tuplets on half or quarters */ -#line 1574 "" - if (idur1 == 69) { #line 1575 "" + if (idur1 == 69) { +#line 1576 "" ++comdiag_1.n69[*icm]; /* if (mod(n69(icm)+6,7) .gt. 3) idur = 58 */ -#line 1577 "" +#line 1578 "" if ((comdiag_1.n69[*icm] + 6) % 7 > 3) { -#line 1577 "" +#line 1578 "" idur = idur1 - commidi_1.mgap - 1; -#line 1577 "" - } #line 1578 "" - } else if (idur1 == 34) { + } #line 1579 "" - ++comdiag_1.n34[*icm]; + } else if (idur1 == 34) { #line 1580 "" + ++comdiag_1.n34[*icm]; +#line 1581 "" if ((comdiag_1.n34[*icm] + 6) % 7 > 4) { -#line 1580 "" +#line 1581 "" idur = idur1 - commidi_1.mgap + 1; -#line 1580 "" - } #line 1581 "" - } + } #line 1582 "" - idurvar = isetvarlen_(&idur, &nby2off); + } #line 1583 "" - if (nby2off > 4) { -#line 1584 "" - s_wsle(&io___99); + idurvar = isetvarlen_(&idur, &nby2off); #line 1584 "" + if (nby2off > 4) { +#line 1585 "" + s_wsle(&io___100); +#line 1585 "" do_lio(&c__9, &c__1, "You got >4 bytes, something is bogus.", (ftnlen)37); -#line 1584 "" - e_wsle(); #line 1585 "" - stop1_(); + e_wsle(); #line 1586 "" - } + stop1_(); #line 1587 "" - ++commidi_1.imidi[*icm]; + } #line 1588 "" - chkimidi_(icm); + ++commidi_1.imidi[*icm]; #line 1589 "" + chkimidi_(icm); +#line 1590 "" i__2 = nby2off; -#line 1589 "" - for (i__ = 1; i__ <= i__2; ++i__) { #line 1590 "" + for (i__ = 1; i__ <= i__2; ++i__) { +#line 1591 "" commidi_1.mmidi[*icm + (commidi_1.imidi[*icm] + nby2off - i__) * 25 - 25] = (shortint) (idurvar % 256); -#line 1591 "" +#line 1592 "" if (nby2off > 1) { -#line 1591 "" +#line 1592 "" idurvar /= 256; -#line 1591 "" - } #line 1592 "" + } +#line 1593 "" /* L1: */ -#line 1592 "" - } #line 1593 "" - commidi_1.imidi[*icm] = commidi_1.imidi[*icm] + nby2off - 1; + } #line 1594 "" + commidi_1.imidi[*icm] = commidi_1.imidi[*icm] + nby2off - 1; +#line 1595 "" } else { /* Inserting end of chord note, delta time is 0 */ -#line 1598 "" - ++commidi_1.imidi[*icm]; #line 1599 "" - commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = 0; + ++commidi_1.imidi[*icm]; #line 1600 "" + commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = 0; +#line 1601 "" } /* Note off */ -#line 1604 "" - ++commidi_1.imidi[*icm]; #line 1605 "" + ++commidi_1.imidi[*icm]; +#line 1606 "" commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = (shortint) ( icmm[*icm] + 128); /* Pitch */ -#line 1609 "" - ++commidi_1.imidi[*icm]; #line 1610 "" - if (ioff == 0) { + ++commidi_1.imidi[*icm]; #line 1611 "" + if (ioff == 0) { +#line 1612 "" commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = ( shortint) ipsav; -#line 1612 "" - } else { #line 1613 "" + } else { +#line 1614 "" commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = ( shortint) commidi_1.mcpitch[ioff - 1]; -#line 1614 "" +#line 1615 "" } /* Vel */ -#line 1618 "" - ++commidi_1.imidi[*icm]; #line 1619 "" - commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = 0; + ++commidi_1.imidi[*icm]; #line 1620 "" - chkimidi_(icm); + commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = 0; #line 1621 "" - if (*endrest) { + chkimidi_(icm); #line 1622 "" - return 0; + if (*endrest) { #line 1623 "" - } + return 0; #line 1624 "" + } +#line 1625 "" /* L8: */ -#line 1624 "" - } #line 1625 "" - comslm_1.naccbl[*icm] = comslm_1.nusebl; + } #line 1626 "" + comslm_1.naccbl[*icm] = comslm_1.nusebl; +#line 1627 "" if (comslm_1.nusebl > 0) { /* Fix tables of "bar-line" accids that are saved due to consecutive notes. */ -#line 1630 "" +#line 1631 "" i__1 = comslm_1.nusebl; -#line 1630 "" - for (kacc = 1; kacc <= i__1; ++kacc) { #line 1631 "" + for (kacc = 1; kacc <= i__1; ++kacc) { +#line 1632 "" comslm_1.laccbl[*icm + kacc * 25 - 25] = comips_1.lusebl[kacc - 1] ; -#line 1632 "" +#line 1633 "" comslm_1.jaccbl[*icm + kacc * 25 - 25] = comips_1.jusebl[kacc - 1] ; -#line 1633 "" +#line 1634 "" /* L30: */ -#line 1633 "" - } #line 1634 "" - comslm_1.nusebl = 0; + } #line 1635 "" + comslm_1.nusebl = 0; +#line 1636 "" } /* Begin tie checks */ -#line 1639 "" +#line 1640 "" if (comslm_1.slmon[*icm]) { /* Prior note had a slur start */ -#line 1643 "" +#line 1644 "" if (comslm_1.levson[*icm] == comslm_1.levsoff[*icm] && *iacc == 0) { /* We have a tie! (Assumed there would be no accidental on tie-ending note) */ @@ -3938,198 +3940,198 @@ L20: /* comparing pitches. Save the 4 pieces of data in itiesav(1...4,nsav4tie) */ /* Store actual time in itiesav(5,nsav4tie), using itiesav(1,1) as initial */ /* time. */ -#line 1651 "" - nsav4tie = 0; #line 1652 "" - imidt = comslm_1.imidso[*icm]; + nsav4tie = 0; #line 1653 "" + imidt = comslm_1.imidso[*icm]; +#line 1654 "" L10: -#line 1653 "" - ++nsav4tie; #line 1654 "" + ++nsav4tie; +#line 1655 "" itiesav[nsav4tie * 5 - 5] = igetvarlen_(commidi_1.mmidi, icm, & imidt, &nbytes); -#line 1655 "" - imidt += nbytes; #line 1656 "" - for (j = 1; j <= 3; ++j) { + imidt += nbytes; #line 1657 "" + for (j = 1; j <= 3; ++j) { +#line 1658 "" itiesav[j + 1 + nsav4tie * 5 - 6] = commidi_1.mmidi[*icm + ( imidt + j) * 25 - 25]; -#line 1658 "" +#line 1659 "" /* L11: */ -#line 1658 "" - } #line 1659 "" - imidt += 3; + } #line 1660 "" - if (nsav4tie == 1) { + imidt += 3; #line 1661 "" - itiesav[4] = itiesav[0]; + if (nsav4tie == 1) { #line 1662 "" - } else { + itiesav[4] = itiesav[0]; #line 1663 "" + } else { +#line 1664 "" itiesav[nsav4tie * 5 - 1] = itiesav[nsav4tie * 5 - 5] + itiesav[(nsav4tie - 1) * 5 - 1]; -#line 1665 "" - } #line 1666 "" + } +#line 1667 "" if (imidt != commidi_1.imidi[*icm]) { -#line 1666 "" +#line 1667 "" goto L10; -#line 1666 "" +#line 1667 "" } /* Find which two pitches agree with saved slur pitch. */ -#line 1670 "" - it1found = FALSE_; #line 1671 "" + it1found = FALSE_; +#line 1672 "" i__1 = nsav4tie; -#line 1671 "" - for (it2 = 1; it2 <= i__1; ++it2) { #line 1672 "" - if (itiesav[it2 * 5 - 3] == comips_1.ipslon[*icm]) { + for (it2 = 1; it2 <= i__1; ++it2) { #line 1673 "" + if (itiesav[it2 * 5 - 3] == comips_1.ipslon[*icm]) { +#line 1674 "" if (it1found) { -#line 1673 "" +#line 1674 "" goto L13; -#line 1673 "" - } #line 1674 "" - it1 = it2; + } #line 1675 "" - it1found = TRUE_; + it1 = it2; #line 1676 "" - } + it1found = TRUE_; #line 1677 "" + } +#line 1678 "" /* L12: */ -#line 1677 "" - } #line 1678 "" + } +#line 1679 "" printl_("Program error, tied notes, send source to Dr. Don", ( ftnlen)49); -#line 1680 "" - it1 = nsav4tie + 1; #line 1681 "" - it2 = nsav4tie + 1; + it1 = nsav4tie + 1; #line 1682 "" + it2 = nsav4tie + 1; +#line 1683 "" L13: /* List the positions we want to keep */ -#line 1686 "" - jsav = 0; #line 1687 "" + jsav = 0; +#line 1688 "" i__1 = nsav4tie; -#line 1687 "" - for (isav = 1; isav <= i__1; ++isav) { #line 1688 "" + for (isav = 1; isav <= i__1; ++isav) { +#line 1689 "" if (isav == it1 || isav == it2) { -#line 1688 "" +#line 1689 "" goto L14; -#line 1688 "" - } #line 1689 "" - ++jsav; + } #line 1690 "" - itk[jsav - 1] = (shortint) isav; + ++jsav; #line 1691 "" + itk[jsav - 1] = (shortint) isav; +#line 1692 "" L14: -#line 1691 "" +#line 1692 "" ; -#line 1691 "" - } #line 1692 "" + } +#line 1693 "" nsav4tie += -2; /* Now dump events it1 & it2, recompute times, restack mmidi. */ -#line 1696 "" - commidi_1.imidi[*icm] = comslm_1.imidso[*icm]; #line 1697 "" + commidi_1.imidi[*icm] = comslm_1.imidso[*icm]; +#line 1698 "" i__1 = nsav4tie; -#line 1697 "" - for (isav = 1; isav <= i__1; ++isav) { #line 1698 "" - if (isav == 1) { + for (isav = 1; isav <= i__1; ++isav) { #line 1699 "" + if (isav == 1) { +#line 1700 "" idurvar = isetvarlen_(&itiesav[itk[isav - 1] * 5 - 1], & nbytes); -#line 1700 "" - } else { #line 1701 "" + } else { +#line 1702 "" i__2 = itiesav[itk[isav - 1] * 5 - 1] - itiesav[itk[isav - 2] * 5 - 1]; -#line 1701 "" +#line 1702 "" idurvar = isetvarlen_(&i__2, &nbytes); -#line 1703 "" - } #line 1704 "" - ++commidi_1.imidi[*icm]; + } #line 1705 "" + ++commidi_1.imidi[*icm]; +#line 1706 "" i__2 = nbytes; -#line 1705 "" - for (i__ = 1; i__ <= i__2; ++i__) { #line 1706 "" + for (i__ = 1; i__ <= i__2; ++i__) { +#line 1707 "" commidi_1.mmidi[*icm + (commidi_1.imidi[*icm] + nbytes - i__) * 25 - 25] = (shortint) (idurvar % 256); -#line 1707 "" +#line 1708 "" if (nbytes > 1) { -#line 1707 "" +#line 1708 "" idurvar /= 256; -#line 1707 "" - } #line 1708 "" + } +#line 1709 "" /* L16: */ -#line 1708 "" - } #line 1709 "" - commidi_1.imidi[*icm] = commidi_1.imidi[*icm] + nbytes - 1; + } #line 1710 "" - for (i__ = 2; i__ <= 4; ++i__) { + commidi_1.imidi[*icm] = commidi_1.imidi[*icm] + nbytes - 1; #line 1711 "" - ++commidi_1.imidi[*icm]; + for (i__ = 2; i__ <= 4; ++i__) { #line 1712 "" + ++commidi_1.imidi[*icm]; +#line 1713 "" commidi_1.mmidi[*icm + commidi_1.imidi[*icm] * 25 - 25] = (shortint) itiesav[i__ + itk[isav - 1] * 5 - 6]; -#line 1713 "" +#line 1714 "" /* L17: */ -#line 1713 "" - } #line 1714 "" + } +#line 1715 "" /* L15: */ -#line 1714 "" - } #line 1715 "" - } + } #line 1716 "" - comslm_1.slmon[*icm] = FALSE_; + } #line 1717 "" - comslm_1.levsoff[*icm] = 0; + comslm_1.slmon[*icm] = FALSE_; #line 1718 "" + comslm_1.levsoff[*icm] = 0; +#line 1719 "" if (! comslm_1.dbltie) { -#line 1718 "" +#line 1719 "" comslm_1.levson[*icm] = 0; -#line 1718 "" - } #line 1719 "" - } -#line 1720 "" - if (comslm_1.levson[*icm] > 0) { -#line 1720 "" - comslm_1.slmon[*icm] = TRUE_; + } #line 1720 "" } #line 1721 "" - if (commidi_1.nmidcrd > 0) { + if (comslm_1.levson[*icm] > 0) { #line 1721 "" - commidi_1.nmidcrd = 0; + comslm_1.slmon[*icm] = TRUE_; #line 1721 "" } #line 1722 "" - chkimidi_(icm); + if (commidi_1.nmidcrd > 0) { +#line 1722 "" + commidi_1.nmidcrd = 0; +#line 1722 "" + } #line 1723 "" + chkimidi_(icm); +#line 1724 "" return 0; } /* addmidi_ */ @@ -4148,50 +4150,50 @@ L14: /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen); /* Fortran I/O blocks */ - static cilist io___111 = { 0, 11, 0, "(a)", 0 }; + static cilist io___112 = { 0, 11, 0, "(a)", 0 }; -#line 1730 "" - if (*lsout + *lnote > 72) { #line 1731 "" + if (*lsout + *lnote > 72) { +#line 1732 "" if (comlast_1.islast) { -#line 1731 "" - s_wsfe(&io___111); +#line 1732 "" + s_wsfe(&io___112); /* Writing concatenation */ -#line 1731 "" +#line 1732 "" i__1[0] = *lsout, a__1[0] = soutq; -#line 1731 "" +#line 1732 "" i__1[1] = 1, a__1[1] = "%"; -#line 1731 "" +#line 1732 "" s_cat(ch__1, a__1, i__1, &c__2, (ftnlen)81); -#line 1731 "" +#line 1732 "" do_fio(&c__1, ch__1, *lsout + 1); -#line 1731 "" +#line 1732 "" e_wsfe(); -#line 1731 "" - } #line 1732 "" - *lsout = 0; + } #line 1733 "" - } + *lsout = 0; #line 1734 "" + } +#line 1735 "" if (*lsout > 0) { /* Writing concatenation */ -#line 1735 "" +#line 1736 "" i__1[0] = *lsout, a__1[0] = soutq; -#line 1735 "" +#line 1736 "" i__1[1] = *lnote, a__1[1] = notexq; -#line 1735 "" - s_cat(soutq, a__1, i__1, &c__2, (ftnlen)80); #line 1736 "" - } else { + s_cat(soutq, a__1, i__1, &c__2, (ftnlen)80); #line 1737 "" - s_copy(soutq, notexq, (ftnlen)80, (*lnote)); + } else { #line 1738 "" - } + s_copy(soutq, notexq, (ftnlen)80, (*lnote)); #line 1739 "" - *lsout += *lnote; + } #line 1740 "" + *lsout += *lnote; +#line 1741 "" return 0; } /* addstr_ */ @@ -4209,63 +4211,63 @@ L14: /* For block ib, this adds accidental spaces to eskz, for use in getting */ /* length of xtup bracket and slopes of brackets and beams. */ -#line 1766 "" +#line 1767 "" /* Parameter adjustments */ -#line 1766 "" +#line 1767 "" --istart; -#line 1766 "" +#line 1767 "" -#line 1766 "" +#line 1767 "" /* Function Body */ -#line 1766 "" - inmin = istart[*ib] + 1; #line 1767 "" + inmin = istart[*ib] + 1; +#line 1768 "" i__1 = comas1_1.naskb; -#line 1767 "" - for (iaskb = 1; iaskb <= i__1; ++iaskb) { #line 1768 "" + for (iaskb = 1; iaskb <= i__1; ++iaskb) { +#line 1769 "" if (comas1_1.task[iaskb - 1] < all_1.to[istart[*ib] - 1] - comtol_1.tol) { -#line 1768 "" +#line 1769 "" goto L10; -#line 1768 "" - } #line 1769 "" + } +#line 1770 "" eskadd = comas1_1.wask[iaskb - 1] / *poenom - comas1_1.elask[iaskb - 1]; -#line 1770 "" +#line 1771 "" i__2 = comntot_1.ntot; -#line 1770 "" - for (in = inmin; in <= i__2; ++in) { #line 1771 "" - if (all_1.to[in - 1] > comas1_1.task[iaskb - 1] - comtol_1.tol) { + for (in = inmin; in <= i__2; ++in) { #line 1772 "" + if (all_1.to[in - 1] > comas1_1.task[iaskb - 1] - comtol_1.tol) { +#line 1773 "" comeskz2_1.eskz2[all_1.ivxo[in - 1] + all_1.ipo[in - 1] * 24 - 25] += eskadd; -#line 1773 "" +#line 1774 "" if ((r__1 = all_1.to[in - 1] - comas1_1.task[iaskb - 1], dabs( r__1)) < comtol_1.tol) { -#line 1773 "" +#line 1774 "" --inmin; -#line 1773 "" - } #line 1774 "" - } else { + } #line 1775 "" - ++inmin; + } else { #line 1776 "" - } + ++inmin; #line 1777 "" + } +#line 1778 "" /* L11: */ -#line 1777 "" - } #line 1778 "" + } +#line 1779 "" L10: -#line 1778 "" +#line 1779 "" ; -#line 1778 "" - } #line 1779 "" + } +#line 1780 "" return 0; } /* adjusteskz_ */ @@ -4302,127 +4304,110 @@ L10: static integer indxask; /* Fortran I/O blocks */ - static cilist io___119 = { 0, 12, 0, "(a)", 0 }; static cilist io___120 = { 0, 12, 0, "(a)", 0 }; - static cilist io___122 = { 0, 11, 1, "(a129)", 0 }; - static icilist io___124 = { 0, outq+11, 0, "(f4.1)", 4, 1 }; - static cilist io___127 = { 0, 12, 0, "(a)", 0 }; - static cilist io___128 = { 0, 16, 1, "(a129)", 0 }; - static cilist io___129 = { 0, 12, 0, "(a)", 0 }; + static cilist io___121 = { 0, 12, 0, "(a)", 0 }; + static cilist io___123 = { 0, 11, 1, "(a129)", 0 }; + static icilist io___125 = { 0, outq+11, 0, "(f4.1)", 4, 1 }; + static cilist io___128 = { 0, 12, 0, "(a)", 0 }; + static cilist io___129 = { 0, 16, 1, "(a129)", 0 }; + static cilist io___130 = { 0, 12, 0, "(a)", 0 }; -#line 1791 "" +#line 1792 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 1791 "" - *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; #line 1792 "" + *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; +#line 1793 "" o__1.oerr = 0; -#line 1792 "" +#line 1793 "" o__1.ounit = 12; -#line 1792 "" +#line 1793 "" o__1.ofnmlen = *lpath + *lbase + 4; /* Writing concatenation */ -#line 1792 "" +#line 1793 "" i__1[0] = *lpath, a__1[0] = pathnameq; -#line 1792 "" +#line 1793 "" i__1[1] = *lbase, a__1[1] = basenameq; -#line 1792 "" +#line 1793 "" i__1[2] = 4, a__1[2] = ".tex"; -#line 1792 "" +#line 1793 "" s_cat(ch__2, a__1, i__1, &c__3, (ftnlen)88); -#line 1792 "" +#line 1793 "" o__1.ofnm = ch__2; -#line 1792 "" +#line 1793 "" o__1.orl = 0; -#line 1792 "" +#line 1793 "" o__1.osta = 0; -#line 1792 "" +#line 1793 "" o__1.oacc = 0; -#line 1792 "" +#line 1793 "" o__1.ofm = 0; -#line 1792 "" +#line 1793 "" o__1.oblnk = 0; -#line 1792 "" +#line 1793 "" f_open(&o__1); /* Transfer first 5 lines of main internal TeX file */ -#line 1796 "" - for (il = 1; il <= 5; ++il) { #line 1797 "" - moveln_(&c__11, &c__12, &done); + for (il = 1; il <= 5; ++il) { #line 1798 "" + moveln_(&c__11, &c__12, &done); +#line 1799 "" /* L11: */ -#line 1798 "" - } #line 1799 "" + } +#line 1800 "" if (*istype0) { /* Transfer literal TeX stuff from special scratch file */ -#line 1803 "" +#line 1804 "" al__1.aerr = 0; -#line 1803 "" +#line 1804 "" al__1.aunit = 17; -#line 1803 "" - f_rew(&al__1); #line 1804 "" + f_rew(&al__1); +#line 1805 "" L10: -#line 1804 "" - moveln_(&c__17, &c__12, &done); #line 1805 "" + moveln_(&c__17, &c__12, &done); +#line 1806 "" if (! done) { -#line 1805 "" +#line 1806 "" goto L10; -#line 1805 "" - } #line 1806 "" + } +#line 1807 "" cl__1.cerr = 0; -#line 1806 "" +#line 1807 "" cl__1.cunit = 17; -#line 1806 "" +#line 1807 "" cl__1.csta = 0; -#line 1806 "" - f_clos(&cl__1); #line 1807 "" + f_clos(&cl__1); +#line 1808 "" } /* Transfer next 2 lines from main scratch file */ -#line 1811 "" - for (il = 1; il <= 2; ++il) { #line 1812 "" - moveln_(&c__11, &c__12, &done); -#line 1813 "" -/* L3: */ + for (il = 1; il <= 2; ++il) { #line 1813 "" - } -#line 1814 "" - if (compoi_1.ispoi) { -#line 1814 "" - s_wsfe(&io___119); -/* Writing concatenation */ -#line 1814 "" - i__2[0] = 1, a__2[0] = sq; -#line 1814 "" - i__2[1] = 14, a__2[1] = "input musixpoi"; -#line 1814 "" - s_cat(ch__3, a__2, i__2, &c__2, (ftnlen)15); -#line 1814 "" - do_fio(&c__1, ch__3, (ftnlen)15); + moveln_(&c__11, &c__12, &done); #line 1814 "" - e_wsfe(); +/* L3: */ #line 1814 "" } #line 1815 "" - if (combbm_1.isbbm) { + if (compoi_1.ispoi) { #line 1815 "" s_wsfe(&io___120); /* Writing concatenation */ #line 1815 "" i__2[0] = 1, a__2[0] = sq; #line 1815 "" - i__2[1] = 14, a__2[1] = "input musixbbm"; + i__2[1] = 14, a__2[1] = "input musixpoi"; #line 1815 "" s_cat(ch__3, a__2, i__2, &c__2, (ftnlen)15); #line 1815 "" @@ -4432,212 +4417,229 @@ L10: #line 1815 "" } #line 1816 "" + if (combbm_1.isbbm) { +#line 1816 "" + s_wsfe(&io___121); +/* Writing concatenation */ +#line 1816 "" + i__2[0] = 1, a__2[0] = sq; +#line 1816 "" + i__2[1] = 14, a__2[1] = "input musixbbm"; +#line 1816 "" + s_cat(ch__3, a__2, i__2, &c__2, (ftnlen)15); +#line 1816 "" + do_fio(&c__1, ch__3, (ftnlen)15); +#line 1816 "" + e_wsfe(); +#line 1816 "" + } +#line 1817 "" if (*figbass) { /* Transfer .fig data from scratch (unit 14) into external .tex (unit 12) */ -#line 1820 "" +#line 1821 "" L4: -#line 1820 "" - moveln_(&c__14, &c__12, &done); #line 1821 "" + moveln_(&c__14, &c__12, &done); +#line 1822 "" if (! done) { -#line 1821 "" +#line 1822 "" goto L4; -#line 1821 "" - } #line 1822 "" + } +#line 1823 "" cl__1.cerr = 0; -#line 1822 "" +#line 1823 "" cl__1.cunit = 14; -#line 1822 "" +#line 1823 "" cl__1.csta = 0; -#line 1822 "" - f_clos(&cl__1); #line 1823 "" - } + f_clos(&cl__1); #line 1824 "" - comas3_1.iask = 0; + } #line 1825 "" - ihs = 0; + comas3_1.iask = 0; #line 1826 "" + ihs = 0; +#line 1827 "" L1: -#line 1826 "" - i__3 = s_rsfe(&io___122); -#line 1826 "" +#line 1827 "" + i__3 = s_rsfe(&io___123); +#line 1827 "" if (i__3 != 0) { -#line 1826 "" +#line 1827 "" goto L999; -#line 1826 "" +#line 1827 "" } -#line 1826 "" +#line 1827 "" i__3 = do_fio(&c__1, outq, (ftnlen)129); -#line 1826 "" +#line 1827 "" if (i__3 != 0) { -#line 1826 "" +#line 1827 "" goto L999; -#line 1826 "" +#line 1827 "" } -#line 1826 "" +#line 1827 "" i__3 = e_rsfe(); -#line 1826 "" +#line 1827 "" if (i__3 != 0) { -#line 1826 "" +#line 1827 "" goto L999; -#line 1826 "" +#line 1827 "" } /* Hardspaces. */ /* Writing concatenation */ -#line 1830 "" +#line 1831 "" i__2[0] = 1, a__2[0] = sq; -#line 1830 "" +#line 1831 "" i__2[1] = 4, a__2[1] = "xard"; -#line 1830 "" +#line 1831 "" s_cat(ch__4, a__2, i__2, &c__2, (ftnlen)5); -#line 1830 "" - if (s_cmp(outq, ch__4, (ftnlen)5, (ftnlen)5) == 0) { #line 1831 "" - ++ihs; + if (s_cmp(outq, ch__4, (ftnlen)5, (ftnlen)5) == 0) { #line 1832 "" - *(unsigned char *)&outq[1] = 'h'; -#line 1833 "" - s_wsfi(&io___124); + ++ihs; #line 1833 "" + *(unsigned char *)&outq[1] = 'h'; +#line 1834 "" + s_wsfi(&io___125); +#line 1834 "" do_fio(&c__1, (char *)&comhsp_1.hpttot[ihs - 1], (ftnlen)sizeof(real)) ; -#line 1833 "" - e_wsfi(); #line 1834 "" - lenout = 19; + e_wsfi(); #line 1835 "" - goto L9; + lenout = 19; #line 1836 "" + goto L9; +#line 1837 "" } /* This part hard-wires ask's into new .tex file as ast's */ -#line 1840 "" +#line 1841 "" L2: /* Writing concatenation */ -#line 1840 "" +#line 1841 "" i__2[0] = 1, a__2[0] = sq; -#line 1840 "" +#line 1841 "" i__2[1] = 3, a__2[1] = "ask"; -#line 1840 "" +#line 1841 "" s_cat(ch__5, a__2, i__2, &c__2, (ftnlen)4); -#line 1840 "" - indxask = i_indx(outq, ch__5, (ftnlen)129, (ftnlen)4); #line 1841 "" - if (indxask != 0) { + indxask = i_indx(outq, ch__5, (ftnlen)129, (ftnlen)4); #line 1842 "" - ++comas3_1.iask; + if (indxask != 0) { #line 1843 "" + ++comas3_1.iask; +#line 1844 "" putast_(&comas3_1.ask[comas3_1.iask - 1], &indxask, outq, (ftnlen)129) ; -#line 1844 "" - goto L2; #line 1845 "" - } + goto L2; #line 1846 "" - lenout = llen_(outq, &c__129, (ftnlen)129); + } #line 1847 "" -L9: -#line 1848 "" - s_wsfe(&io___127); + lenout = llen_(outq, &c__129, (ftnlen)129); #line 1848 "" +L9: +#line 1849 "" + s_wsfe(&io___128); +#line 1849 "" do_fio(&c__1, outq, lenout); -#line 1848 "" +#line 1849 "" e_wsfe(); /* If this is the line with "readmod", check for topmods. */ -#line 1852 "" +#line 1853 "" if (comas3_1.topmods && s_cmp(outq + 1, "readmod", (ftnlen)7, (ftnlen)7) == 0) { -#line 1853 "" - comas3_1.topmods = FALSE_; #line 1854 "" + comas3_1.topmods = FALSE_; +#line 1855 "" al__1.aerr = 0; -#line 1854 "" +#line 1855 "" al__1.aunit = 16; -#line 1854 "" - f_rew(&al__1); #line 1855 "" - for (il = 1; il <= 1000; ++il) { -#line 1856 "" - i__3 = s_rsfe(&io___128); + f_rew(&al__1); #line 1856 "" + for (il = 1; il <= 1000; ++il) { +#line 1857 "" + i__3 = s_rsfe(&io___129); +#line 1857 "" if (i__3 != 0) { -#line 1856 "" +#line 1857 "" goto L8; -#line 1856 "" +#line 1857 "" } -#line 1856 "" +#line 1857 "" i__3 = do_fio(&c__1, outq, (ftnlen)129); -#line 1856 "" +#line 1857 "" if (i__3 != 0) { -#line 1856 "" +#line 1857 "" goto L8; -#line 1856 "" +#line 1857 "" } -#line 1856 "" +#line 1857 "" i__3 = e_rsfe(); -#line 1856 "" +#line 1857 "" if (i__3 != 0) { -#line 1856 "" +#line 1857 "" goto L8; -#line 1856 "" - } #line 1857 "" + } +#line 1858 "" lenout = llen_(outq, &c__129, (ftnlen)129); /* We inserted the '%' in subroutine littex, to guarantee including blank. */ -#line 1861 "" - s_wsfe(&io___129); -#line 1861 "" +#line 1862 "" + s_wsfe(&io___130); +#line 1862 "" do_fio(&c__1, outq, lenout); -#line 1861 "" - e_wsfe(); #line 1862 "" + e_wsfe(); +#line 1863 "" /* L7: */ -#line 1862 "" - } #line 1863 "" -L8: + } #line 1864 "" +L8: +#line 1865 "" cl__1.cerr = 0; -#line 1864 "" +#line 1865 "" cl__1.cunit = 16; -#line 1864 "" +#line 1865 "" cl__1.csta = 0; -#line 1864 "" - f_clos(&cl__1); #line 1865 "" - } + f_clos(&cl__1); #line 1866 "" - goto L1; + } #line 1867 "" + goto L1; +#line 1868 "" L999: -#line 1867 "" - cl__1.cerr = 0; -#line 1867 "" - cl__1.cunit = 11; -#line 1867 "" - cl__1.csta = 0; -#line 1867 "" - f_clos(&cl__1); #line 1868 "" cl__1.cerr = 0; #line 1868 "" - cl__1.cunit = 12; + cl__1.cunit = 11; #line 1868 "" cl__1.csta = 0; #line 1868 "" f_clos(&cl__1); #line 1869 "" + cl__1.cerr = 0; +#line 1869 "" + cl__1.cunit = 12; +#line 1869 "" + cl__1.csta = 0; +#line 1869 "" + f_clos(&cl__1); +#line 1870 "" return 0; } /* askfig_ */ @@ -4661,88 +4663,88 @@ L999: static char nowq[128], lineq[128*200]; /* Fortran I/O blocks */ - static cilist io___131 = { 0, 0, 0, "(a)", 0 }; - static cilist io___136 = { 0, 0, 0, "(a128)", 0 }; + static cilist io___132 = { 0, 0, 0, "(a)", 0 }; + static cilist io___137 = { 0, 0, 0, "(a128)", 0 }; /* In iunit, looks backward for oldq, overwrites newq */ /* Safest if both are same length! */ -#line 1878 "" - linesback = 0; #line 1879 "" -L1: -#line 1880 "" - al__1.aerr = 0; -#line 1880 "" - al__1.aunit = *iunit; + linesback = 0; #line 1880 "" - f_back(&al__1); +L1: #line 1881 "" - io___131.ciunit = *iunit; + al__1.aerr = 0; #line 1881 "" - s_rsfe(&io___131); + al__1.aunit = *iunit; #line 1881 "" + f_back(&al__1); +#line 1882 "" + io___132.ciunit = *iunit; +#line 1882 "" + s_rsfe(&io___132); +#line 1882 "" do_fio(&c__1, nowq, (ftnlen)128); -#line 1881 "" - e_rsfe(); #line 1882 "" + e_rsfe(); +#line 1883 "" ndx = i_indx(nowq, oldq, (ftnlen)128, (*lenold)); /* Save the line just read */ -#line 1886 "" - ++linesback; #line 1887 "" - s_copy(lineq + (linesback - 1 << 7), nowq, (ftnlen)128, (ftnlen)128); + ++linesback; #line 1888 "" - if (ndx == 0) { + s_copy(lineq + (linesback - 1 << 7), nowq, (ftnlen)128, (ftnlen)128); #line 1889 "" + if (ndx == 0) { +#line 1890 "" al__1.aerr = 0; -#line 1889 "" +#line 1890 "" al__1.aunit = *iunit; -#line 1889 "" - f_back(&al__1); #line 1890 "" - goto L1; + f_back(&al__1); #line 1891 "" + goto L1; +#line 1892 "" } /* If here, it's replacement time. */ -#line 1895 "" +#line 1896 "" i__1 = ndx + *lenold - 1; /* Writing concatenation */ -#line 1895 "" +#line 1896 "" i__2[0] = ndx - 1, a__1[0] = nowq; -#line 1895 "" +#line 1896 "" i__2[1] = *lennew, a__1[1] = newq; -#line 1895 "" +#line 1896 "" i__2[2] = 128 - i__1, a__1[2] = nowq + i__1; -#line 1895 "" +#line 1896 "" s_cat(lineq + (linesback - 1 << 7), a__1, i__2, &c__3, (ftnlen)128); -#line 1897 "" +#line 1898 "" al__1.aerr = 0; -#line 1897 "" +#line 1898 "" al__1.aunit = *iunit; -#line 1897 "" - f_back(&al__1); #line 1898 "" - for (line = linesback; line >= 1; --line) { -#line 1899 "" - io___136.ciunit = *iunit; -#line 1899 "" - s_wsfe(&io___136); + f_back(&al__1); #line 1899 "" + for (line = linesback; line >= 1; --line) { +#line 1900 "" + io___137.ciunit = *iunit; +#line 1900 "" + s_wsfe(&io___137); +#line 1900 "" do_fio(&c__1, lineq + (line - 1 << 7), (ftnlen)128); -#line 1899 "" - e_wsfe(); #line 1900 "" + e_wsfe(); +#line 1901 "" /* L2: */ -#line 1900 "" - } #line 1901 "" + } +#line 1902 "" return 0; } /* backfill_ */ @@ -4787,404 +4789,404 @@ L1: ; /* Fortran I/O blocks */ - static icilist io___143 = { 0, tempq, 0, "(f4.1)", 4, 1 }; - static icilist io___144 = { 0, tempq, 0, "(f4.2)", 4, 1 }; - static icilist io___147 = { 0, noteq, 0, "(i2)", 2, 1 }; - static icilist io___149 = { 0, tempq, 0, "(f4.1)", 4, 1 }; - static icilist io___150 = { 0, tempq, 0, "(f4.2)", 4, 1 }; - static icilist io___152 = { 0, tempq, 0, "(f4.1)", 4, 1 }; + static icilist io___144 = { 0, tempq, 0, "(f4.1)", 4, 1 }; + static icilist io___145 = { 0, tempq, 0, "(f4.2)", 4, 1 }; + static icilist io___148 = { 0, noteq, 0, "(i2)", 2, 1 }; + static icilist io___150 = { 0, tempq, 0, "(f4.1)", 4, 1 }; + static icilist io___151 = { 0, tempq, 0, "(f4.2)", 4, 1 }; static icilist io___153 = { 0, tempq, 0, "(f4.1)", 4, 1 }; - static cilist io___154 = { 0, 6, 0, 0, 0 }; + static icilist io___154 = { 0, tempq, 0, "(f4.1)", 4, 1 }; static cilist io___155 = { 0, 6, 0, 0, 0 }; - static icilist io___159 = { 0, noteq, 0, "(i2)", 2, 1 }; + static cilist io___156 = { 0, 6, 0, 0, 0 }; + static icilist io___160 = { 0, noteq, 0, "(i2)", 2, 1 }; -#line 1929 "" - ip = all_1.ipo[all_1.jn - 1]; #line 1930 "" - multip = (all_1.mult[commvl_1.ivx + ip * 24 - 25] & 15) - 8; + ip = all_1.ipo[all_1.jn - 1]; #line 1931 "" - *lnote = 0; + multip = (all_1.mult[commvl_1.ivx + ip * 24 - 25] & 15) - 8; #line 1932 "" + *lnote = 0; +#line 1933 "" if (strtmid_1.ixrest[commvl_1.ivx - 1] == 4) { /* This is the LAST note in the xtup (i.e., all rests before). Make single. */ -#line 1936 "" +#line 1937 "" i__1 = 4 - multip; -#line 1936 "" - all_1.nodur[commvl_1.ivx + ip * 24 - 25] = pow_ii(&c__2, &i__1); #line 1937 "" - notex_(notexq, lnote, (ftnlen)79); + all_1.nodur[commvl_1.ivx + ip * 24 - 25] = pow_ii(&c__2, &i__1); #line 1938 "" - strtmid_1.ixrest[commvl_1.ivx - 1] = 0; + notex_(notexq, lnote, (ftnlen)79); #line 1939 "" - return 0; + strtmid_1.ixrest[commvl_1.ivx - 1] = 0; #line 1940 "" - } + return 0; #line 1941 "" + } +#line 1942 "" nole = all_1.nolev[commvl_1.ivx + ip * 24 - 25]; /* Check for special situations with 2nds (see precrd) */ -#line 1945 "" - if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],30)) { #line 1946 "" - --nole; + if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],30)) { #line 1947 "" - } else if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],31)) { + --nole; #line 1948 "" - ++nole; + } else if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],31)) { #line 1949 "" + ++nole; +#line 1950 "" } /* Terminate indented beams for 2-note tremolo if needed */ -#line 1953 "" +#line 1954 "" if (bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25],2) && igetbits_(&all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25], &c__2, &c__5) > 0) { -#line 1955 "" +#line 1956 "" nindent = igetbits_(&all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25], & c__2, &c__5); -#line 1956 "" +#line 1957 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25] == 'u') { -#line 1957 "" - addoff = -1 - nindent * .5f; #line 1958 "" - } else { + addoff = -1 - nindent * .5f; #line 1959 "" - addoff = nindent * .5f + 1; + } else { #line 1960 "" + addoff = nindent * .5f + 1; +#line 1961 "" } /* addoff = addoff+(.595-.065*abs(islope(ivx)))*islope(ivx) */ -#line 1962 "" - addoff += comxtup_1.islope[commvl_1.ivx - 1] * .0822f; #line 1963 "" - if (addoff < -.05f) { -#line 1964 "" - s_wsfi(&io___143); -#line 1964 "" - do_fio(&c__1, (char *)&addoff, (ftnlen)sizeof(real)); + addoff += comxtup_1.islope[commvl_1.ivx - 1] * .0822f; #line 1964 "" - e_wsfi(); + if (addoff < -.05f) { #line 1965 "" - } else { -#line 1966 "" s_wsfi(&io___144); -#line 1966 "" +#line 1965 "" do_fio(&c__1, (char *)&addoff, (ftnlen)sizeof(real)); -#line 1966 "" +#line 1965 "" e_wsfi(); +#line 1966 "" + } else { +#line 1967 "" + s_wsfi(&io___145); +#line 1967 "" + do_fio(&c__1, (char *)&addoff, (ftnlen)sizeof(real)); #line 1967 "" + e_wsfi(); +#line 1968 "" } /* Writing concatenation */ -#line 1968 "" +#line 1969 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 1968 "" +#line 1969 "" i__2[1] = 5, a__1[1] = "raise"; -#line 1968 "" +#line 1969 "" i__2[2] = 4, a__1[2] = tempq; -#line 1968 "" +#line 1969 "" i__2[3] = 1, a__1[3] = all_1.sq; -#line 1968 "" +#line 1969 "" i__2[4] = 9, a__1[4] = "internote"; -#line 1968 "" +#line 1969 "" i__2[5] = 1, a__1[5] = all_1.sq; -#line 1968 "" +#line 1969 "" i__2[6] = 5, a__1[6] = "hbox{"; -#line 1968 "" +#line 1969 "" i__2[7] = 1, a__1[7] = all_1.sq; -#line 1968 "" +#line 1969 "" i__2[8] = 12, a__1[8] = "loffset{.7}{"; -#line 1968 "" +#line 1969 "" i__2[9] = 1, a__1[9] = all_1.sq; -#line 1968 "" +#line 1969 "" i__2[10] = 2, a__1[10] = "tb"; -#line 1968 "" +#line 1969 "" i__2[11] = 1, a__1[11] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25); -#line 1968 "" +#line 1969 "" i__2[12] = 3, a__1[12] = "0}}"; -#line 1968 "" +#line 1969 "" s_cat(notexq, a__1, i__2, &c__13, (ftnlen)79); -#line 1971 "" - *lnote = 46; #line 1972 "" - } + *lnote = 46; #line 1973 "" + } +#line 1974 "" if (! comdraw_1.drawbm[commvl_1.ivx - 1]) { /* Xtuplet with no beam, just put in the right kind of note */ -#line 1977 "" +#line 1978 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { /* Rest at end of unbeamed xtup */ -#line 1981 "" - *lnote = 3; #line 1982 "" + *lnote = 3; +#line 1983 "" if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],29)) { /* Writing concatenation */ -#line 1983 "" +#line 1984 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 1983 "" +#line 1984 "" i__3[1] = 2, a__2[1] = "sk"; -#line 1983 "" +#line 1984 "" s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); /* 180106 There was a problem with nolev(ivx,ip) not being set to 0 for */ /* a blank rest ending xtup, but hopefully returning from here will handle it. */ -#line 1988 "" - return 0; #line 1989 "" + return 0; +#line 1990 "" } else if (multip == 0) { /* Writing concatenation */ -#line 1990 "" +#line 1991 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 1990 "" +#line 1991 "" i__3[1] = 2, a__2[1] = "qp"; -#line 1990 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 1991 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 1992 "" } else if (multip == -1) { /* Writing concatenation */ -#line 1992 "" +#line 1993 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 1992 "" +#line 1993 "" i__3[1] = 2, a__2[1] = "hp"; -#line 1992 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 1993 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 1994 "" } else if (multip == 1) { /* Writing concatenation */ -#line 1994 "" +#line 1995 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 1994 "" +#line 1995 "" i__3[1] = 2, a__2[1] = "ds"; -#line 1994 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 1995 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 1996 "" } else if (multip == 2) { /* Writing concatenation */ -#line 1996 "" +#line 1997 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 1996 "" +#line 1997 "" i__3[1] = 2, a__2[1] = "qs"; -#line 1996 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 1997 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 1998 "" } else { /* Writing concatenation */ -#line 1998 "" +#line 1999 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 1998 "" +#line 1999 "" i__3[1] = 2, a__2[1] = "hs"; -#line 1998 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 1999 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 2000 "" } /* 180106 Deal with possible level tweak */ -#line 2003 "" - nole = (all_1.nolev[commvl_1.ivx + ip * 24 - 25] + 50) % 100 - 50; #line 2004 "" - if (nole != 0) { + nole = (all_1.nolev[commvl_1.ivx + ip * 24 - 25] + 50) % 100 - 50; #line 2005 "" - if (abs(nole) < 10) { + if (nole != 0) { #line 2006 "" + if (abs(nole) < 10) { +#line 2007 "" i__1 = abs(nole) + 48; -#line 2006 "" +#line 2007 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 2006 "" - s_copy(noteq, ch__1, (ftnlen)8, (ftnlen)1); #line 2007 "" - lnoten = 1; + s_copy(noteq, ch__1, (ftnlen)8, (ftnlen)1); #line 2008 "" - } else { -#line 2009 "" - s_wsfi(&io___147); + lnoten = 1; #line 2009 "" + } else { +#line 2010 "" + s_wsfi(&io___148); +#line 2010 "" i__1 = abs(nole); -#line 2009 "" +#line 2010 "" do_fio(&c__1, (char *)&i__1, (ftnlen)sizeof(integer)); -#line 2009 "" - e_wsfi(); #line 2010 "" - lnoten = 2; + e_wsfi(); #line 2011 "" - } + lnoten = 2; #line 2012 "" + } +#line 2013 "" if (nole > 0) { /* Writing concatenation */ -#line 2013 "" +#line 2014 "" i__4[0] = 1, a__3[0] = all_1.sq; -#line 2013 "" +#line 2014 "" i__4[1] = 5, a__3[1] = "raise"; -#line 2013 "" +#line 2014 "" i__4[2] = lnoten, a__3[2] = noteq; -#line 2013 "" +#line 2014 "" i__4[3] = 1, a__3[3] = all_1.sq; -#line 2013 "" +#line 2014 "" i__4[4] = 9, a__3[4] = "internote"; -#line 2013 "" +#line 2014 "" i__4[5] = *lnote, a__3[5] = notexq; -#line 2013 "" +#line 2014 "" s_cat(notexq, a__3, i__4, &c__6, (ftnlen)79); -#line 2015 "" +#line 2016 "" } else { /* Writing concatenation */ -#line 2016 "" +#line 2017 "" i__4[0] = 1, a__3[0] = all_1.sq; -#line 2016 "" +#line 2017 "" i__4[1] = 5, a__3[1] = "lower"; -#line 2016 "" +#line 2017 "" i__4[2] = lnoten, a__3[2] = noteq; -#line 2016 "" +#line 2017 "" i__4[3] = 1, a__3[3] = all_1.sq; -#line 2016 "" +#line 2017 "" i__4[4] = 9, a__3[4] = "internote"; -#line 2016 "" +#line 2017 "" i__4[5] = *lnote, a__3[5] = notexq; -#line 2016 "" +#line 2017 "" s_cat(notexq, a__3, i__4, &c__6, (ftnlen)79); -#line 2018 "" - } #line 2019 "" - *lnote = lnoten + 16 + *lnote; + } #line 2020 "" - } + *lnote = lnoten + 16 + *lnote; #line 2021 "" - return 0; + } #line 2022 "" - } + return 0; #line 2023 "" + } +#line 2024 "" if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],30)) { /* Forced stem direction */ -#line 2027 "" - ndsav = all_1.nodur[commvl_1.ivx + ip * 24 - 25]; #line 2028 "" + ndsav = all_1.nodur[commvl_1.ivx + ip * 24 - 25]; +#line 2029 "" i__1 = 4 - multip; -#line 2028 "" - all_1.nodur[commvl_1.ivx + ip * 24 - 25] = pow_ii(&c__2, &i__1); #line 2029 "" + all_1.nodur[commvl_1.ivx + ip * 24 - 25] = pow_ii(&c__2, &i__1); +#line 2030 "" if (bit_test(all_1.nacc[commvl_1.ivx + (ip - 1) * 24 - 25],27)) { -#line 2029 "" +#line 2030 "" all_1.nodur[commvl_1.ivx + ip * 24 - 25] /= 2; -#line 2029 "" +#line 2030 "" } -#line 2031 "" - notex_(notexq, lnote, (ftnlen)79); #line 2032 "" - all_1.nodur[commvl_1.ivx + ip * 24 - 25] = ndsav; + notex_(notexq, lnote, (ftnlen)79); #line 2033 "" - } else { + all_1.nodur[commvl_1.ivx + ip * 24 - 25] = ndsav; #line 2034 "" + } else { +#line 2035 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 2034 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2035 "" + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); +#line 2036 "" if (lnoten == 1) { -#line 2035 "" +#line 2036 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 2035 "" +#line 2036 "" } /* To reduce confusion due to this early update of lnote, do it */ /* below, separately in each case/ */ /* lnote = lnoten+3 */ -#line 2040 "" +#line 2041 "" if (! bit_test(all_1.nacc[commvl_1.ivx + (ip - 1) * 24 - 25],27)) { /* Prior note is not regular-dotted */ -#line 2044 "" +#line 2045 "" if (bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25],2) && igetbits_(&all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25], &c__2, &c__5) > 0) { /* Unbeamed tremolo with indented beams. Put termination in right here */ -#line 2049 "" +#line 2050 "" nindent = igetbits_(&all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25], &c__2, &c__5); -#line 2050 "" +#line 2051 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25] == 'u') { -#line 2051 "" - addoff = -1 - nindent * .5f; #line 2052 "" - } else { + addoff = -1 - nindent * .5f; #line 2053 "" - addoff = nindent * .5f + 1; + } else { #line 2054 "" + addoff = nindent * .5f + 1; +#line 2055 "" } /* Is there an islope here, for unbeamed? */ -#line 2058 "" - if (addoff < -.05f) { -#line 2059 "" - s_wsfi(&io___149); -#line 2059 "" - do_fio(&c__1, (char *)&addoff, (ftnlen)sizeof(real)); #line 2059 "" - e_wsfi(); + if (addoff < -.05f) { #line 2060 "" - } else { -#line 2061 "" s_wsfi(&io___150); -#line 2061 "" +#line 2060 "" do_fio(&c__1, (char *)&addoff, (ftnlen)sizeof(real)); -#line 2061 "" +#line 2060 "" e_wsfi(); +#line 2061 "" + } else { +#line 2062 "" + s_wsfi(&io___151); +#line 2062 "" + do_fio(&c__1, (char *)&addoff, (ftnlen)sizeof(real)); #line 2062 "" + e_wsfi(); +#line 2063 "" } /* Writing concatenation */ -#line 2063 "" +#line 2064 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2063 "" +#line 2064 "" i__2[1] = 5, a__1[1] = "raise"; -#line 2063 "" +#line 2064 "" i__2[2] = 4, a__1[2] = tempq; -#line 2063 "" +#line 2064 "" i__2[3] = 1, a__1[3] = all_1.sq; -#line 2063 "" +#line 2064 "" i__2[4] = 9, a__1[4] = "internote"; -#line 2063 "" +#line 2064 "" i__2[5] = 1, a__1[5] = all_1.sq; -#line 2063 "" +#line 2064 "" i__2[6] = 5, a__1[6] = "hbox{"; -#line 2063 "" +#line 2064 "" i__2[7] = 1, a__1[7] = all_1.sq; -#line 2063 "" +#line 2064 "" i__2[8] = 12, a__1[8] = "loffset{.7}{"; -#line 2063 "" +#line 2064 "" i__2[9] = 1, a__1[9] = all_1.sq; -#line 2063 "" +#line 2064 "" i__2[10] = 2, a__1[10] = "tb"; -#line 2063 "" +#line 2064 "" i__2[11] = 1, a__1[11] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2063 "" +#line 2064 "" i__2[12] = 3, a__1[12] = "0}}"; -#line 2063 "" +#line 2064 "" s_cat(notexq, a__1, i__2, &c__13, (ftnlen)79); -#line 2067 "" - *lnote = 46; #line 2068 "" - } + *lnote = 46; #line 2069 "" - if (multip == 0) { + } #line 2070 "" + if (multip == 0) { +#line 2071 "" if (bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25],2) && all_1.nodur[commvl_1.ivx + ip * 24 - 25] > 24) { @@ -5193,45 +5195,45 @@ L1: /* But it's not clear if unbeamed half-note tremolo is Kosher, */ /* so don't worry about stem lengths here now. */ -#line 2077 "" +#line 2078 "" if (*lnote == 0) { /* Writing concatenation */ -#line 2078 "" +#line 2079 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2078 "" +#line 2079 "" i__5[1] = 1, a__4[1] = "h"; -#line 2078 "" +#line 2079 "" i__5[2] = 1, a__4[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2078 "" +#line 2079 "" i__5[3] = 8, a__4[3] = noteq; -#line 2078 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2079 "" + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); +#line 2080 "" } else { /* Writing concatenation */ -#line 2080 "" +#line 2081 "" i__6[0] = 46, a__5[0] = notexq; -#line 2080 "" +#line 2081 "" i__6[1] = 1, a__5[1] = all_1.sq; -#line 2080 "" +#line 2081 "" i__6[2] = 1, a__5[2] = "h"; -#line 2080 "" +#line 2081 "" i__6[3] = 1, a__5[3] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2080 "" +#line 2081 "" i__6[4] = 8, a__5[4] = noteq; -#line 2080 "" +#line 2081 "" s_cat(notexq, a__5, i__6, &c__5, (ftnlen)79); -#line 2082 "" - *lnote = 46; #line 2083 "" - } + *lnote = 46; #line 2084 "" - } else { + } #line 2085 "" + } else { +#line 2086 "" if (bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25],2) && all_1.nodur[commvl_1.ivx + ip * 24 - 25] == 24 || all_1.nodur[commvl_1.ivx + @@ -5239,34 +5241,34 @@ L1: /* Need a dot. */ -#line 2090 "" - *lnote = 46; #line 2091 "" + *lnote = 46; +#line 2092 "" if (lnoten == 1) { /* Writing concatenation */ -#line 2092 "" +#line 2093 "" i__3[0] = 1, a__2[0] = " "; -#line 2092 "" +#line 2093 "" i__3[1] = 1, a__2[1] = noteq; -#line 2092 "" - s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 2093 "" - lnoten = 2; + s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 2094 "" + lnoten = 2; +#line 2095 "" } /* Insert stemlength stuff here for unbeamed dotted tremolo. */ /* May later combine with below to avoid repeat. But need to */ /* return to normal stem length after note is set. */ -#line 2100 "" +#line 2101 "" nindent = igetbits_(&all_1.irest[commvl_1.ivx + ( ip - 1) * 24 - 25], &c__2, &c__5); -#line 2101 "" +#line 2102 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25] == 'u') { -#line 2102 "" +#line 2103 "" slen = (nindent + 4.5f + comxtup_1.nolev1[ commvl_1.ivx - 1] - nole + ( all_1.eskz[commvl_1.ivx + ip * 24 - @@ -5274,9 +5276,9 @@ L1: 1) * 24 - 25] - .7f) * 1.3f * comxtup_1.islope[commvl_1.ivx - 1] / all_1.slfac) * .6667f; -#line 2105 "" - } else { #line 2106 "" + } else { +#line 2107 "" slen = (nindent + 4.5f - comxtup_1.nolev1[ commvl_1.ivx - 1] + nole - ( all_1.eskz[commvl_1.ivx + ip * 24 - @@ -5284,196 +5286,196 @@ L1: 1) * 24 - 25] - .7f) * 1.3f * comxtup_1.islope[commvl_1.ivx - 1] / all_1.slfac) * .6667f; -#line 2109 "" - } -#line 2110 "" - s_wsfi(&io___152); #line 2110 "" + } +#line 2111 "" + s_wsfi(&io___153); +#line 2111 "" do_fio(&c__1, (char *)&slen, (ftnlen)sizeof(real)) ; -#line 2110 "" +#line 2111 "" e_wsfi(); /* Writing concatenation */ -#line 2111 "" +#line 2112 "" i__6[0] = 1, a__5[0] = all_1.sq; -#line 2111 "" +#line 2112 "" i__6[1] = 4, a__5[1] = "slx{"; -#line 2111 "" +#line 2112 "" i__6[2] = 4, a__5[2] = tempq; -#line 2111 "" +#line 2112 "" i__6[3] = 1, a__5[3] = "}"; -#line 2111 "" +#line 2112 "" i__6[4] = *lnote, a__5[4] = notexq; -#line 2111 "" - s_cat(notexq, a__5, i__6, &c__5, (ftnlen)79); #line 2112 "" - *lnote += 10; + s_cat(notexq, a__5, i__6, &c__5, (ftnlen)79); #line 2113 "" + *lnote += 10; +#line 2114 "" } /* Next steps are a historical kluge to distinguish dotted unbeamed 2-note trem */ /* (needs \qup) from normal xtup on dotted note (eg e44dx2 f, wants no dot) */ -#line 2118 "" +#line 2119 "" if (bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25],2)) { -#line 2119 "" +#line 2120 "" if (*lnote == 0) { /* notexq = sq//'q'//ulq(ivx,ibmcnt(ivx)) */ /* Writing concatenation */ -#line 2121 "" +#line 2122 "" i__6[0] = 1, a__5[0] = all_1.sq; -#line 2121 "" +#line 2122 "" i__6[1] = 1, a__5[1] = "q"; -#line 2121 "" +#line 2122 "" i__6[2] = 1, a__5[2] = all_1.ulq + ( commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25); -#line 2121 "" +#line 2122 "" i__6[3] = 1, a__5[3] = "p"; -#line 2121 "" +#line 2122 "" i__6[4] = lnoten, a__5[4] = noteq; -#line 2121 "" +#line 2122 "" s_cat(notexq, a__5, i__6, &c__5, (ftnlen)79); -#line 2123 "" +#line 2124 "" } else { /* Writing concatenation */ -#line 2124 "" +#line 2125 "" i__4[0] = *lnote, a__3[0] = notexq; -#line 2124 "" +#line 2125 "" i__4[1] = 1, a__3[1] = all_1.sq; -#line 2124 "" +#line 2125 "" i__4[2] = 1, a__3[2] = "q"; -#line 2124 "" +#line 2125 "" i__4[3] = 1, a__3[3] = all_1.ulq + ( commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25); -#line 2124 "" +#line 2125 "" i__4[4] = 1, a__3[4] = "p"; -#line 2124 "" +#line 2125 "" i__4[5] = lnoten, a__3[5] = noteq; -#line 2124 "" +#line 2125 "" s_cat(notexq, a__3, i__4, &c__6, (ftnlen)79); /* * //ulq(ivx,ibmcnt(ivx))//noteq(1:lnoten) */ -#line 2127 "" +#line 2128 "" } /* lnote = lnote+3+lnoten */ -#line 2129 "" - *lnote = *lnote + 4 + lnoten; #line 2130 "" - } else { + *lnote = *lnote + 4 + lnoten; #line 2131 "" + } else { +#line 2132 "" if (*lnote == 0) { /* Writing concatenation */ -#line 2132 "" +#line 2133 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2132 "" +#line 2133 "" i__5[1] = 1, a__4[1] = "q"; -#line 2132 "" +#line 2133 "" i__5[2] = 1, a__4[2] = all_1.ulq + ( commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25); -#line 2132 "" +#line 2133 "" i__5[3] = lnoten, a__4[3] = noteq; -#line 2132 "" +#line 2133 "" s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); -#line 2134 "" +#line 2135 "" } else { /* Writing concatenation */ -#line 2135 "" +#line 2136 "" i__6[0] = *lnote, a__5[0] = notexq; -#line 2135 "" +#line 2136 "" i__6[1] = 1, a__5[1] = all_1.sq; -#line 2135 "" +#line 2136 "" i__6[2] = 1, a__5[2] = "q"; -#line 2135 "" +#line 2136 "" i__6[3] = 1, a__5[3] = all_1.ulq + ( commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25); -#line 2135 "" +#line 2136 "" i__6[4] = lnoten, a__5[4] = noteq; -#line 2135 "" +#line 2136 "" s_cat(notexq, a__5, i__6, &c__5, (ftnlen)79); -#line 2137 "" - } #line 2138 "" - *lnote = *lnote + 3 + lnoten; + } #line 2139 "" - } + *lnote = *lnote + 3 + lnoten; #line 2140 "" + } +#line 2141 "" if (bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25],2) && all_1.nodur[commvl_1.ivx + ip * 24 - 25] == 24 || all_1.nodur[commvl_1.ivx + ip * 24 - 25] == 12) { /* Writing concatenation */ -#line 2142 "" +#line 2143 "" i__7[0] = *lnote, a__6[0] = notexq; -#line 2142 "" +#line 2143 "" i__7[1] = 1, a__6[1] = all_1.sq; -#line 2142 "" +#line 2143 "" i__7[2] = 3, a__6[2] = "slz"; -#line 2142 "" - s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2143 "" - *lnote += 4; + s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2144 "" - } + *lnote += 4; #line 2145 "" - } + } #line 2146 "" + } +#line 2147 "" } else if (bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25],2)) { /* 2nd note of unbeamed quarter or 8th trem; make quarter note */ /* Get stemlength change */ -#line 2151 "" - *lnote = 46; #line 2152 "" + *lnote = 46; +#line 2153 "" nindent = igetbits_(&all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25], &c__2, &c__5); -#line 2153 "" +#line 2154 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25] == 'u') { -#line 2154 "" +#line 2155 "" slen = (nindent + 4.5f + comxtup_1.nolev1[ commvl_1.ivx - 1] - nole + (all_1.eskz[ commvl_1.ivx + ip * 24 - 25] - all_1.eskz[ commvl_1.ivx + (ip - 1) * 24 - 25] - .7f) * 1.3f * comxtup_1.islope[commvl_1.ivx - 1] / all_1.slfac) * .6667f; -#line 2157 "" - } else { #line 2158 "" + } else { +#line 2159 "" slen = (nindent + 4.5f - comxtup_1.nolev1[ commvl_1.ivx - 1] + nole - (all_1.eskz[ commvl_1.ivx + ip * 24 - 25] - all_1.eskz[ commvl_1.ivx + (ip - 1) * 24 - 25] - .7f) * 1.3f * comxtup_1.islope[commvl_1.ivx - 1] / all_1.slfac) * .6667f; -#line 2161 "" - } -#line 2162 "" - s_wsfi(&io___153); #line 2162 "" + } +#line 2163 "" + s_wsfi(&io___154); +#line 2163 "" do_fio(&c__1, (char *)&slen, (ftnlen)sizeof(real)); -#line 2162 "" +#line 2163 "" e_wsfi(); /* Writing concatenation */ -#line 2163 "" +#line 2164 "" i__6[0] = 46, a__5[0] = notexq; -#line 2163 "" +#line 2164 "" i__6[1] = 1, a__5[1] = all_1.sq; -#line 2163 "" +#line 2164 "" i__6[2] = 4, a__5[2] = "slx{"; -#line 2163 "" +#line 2164 "" i__6[3] = 4, a__5[3] = tempq; -#line 2163 "" +#line 2164 "" i__6[4] = 1, a__5[4] = "}"; -#line 2163 "" - s_cat(notexq, a__5, i__6, &c__5, (ftnlen)79); #line 2164 "" + s_cat(notexq, a__5, i__6, &c__5, (ftnlen)79); +#line 2165 "" *lnote += 10; /* if (lnote .eq. 0) then */ /* notexq = sq//'h'//ulq(ivx,ibmcnt(ivx))//noteq */ @@ -5485,381 +5487,381 @@ L1: /* Check for dotted unbeamed tremolo */ -#line 2175 "" +#line 2176 "" if ((r__1 = all_1.nodur[commvl_1.ivx + ip * 24 - 25] / 12.f - all_1.nodur[commvl_1.ivx + ip * 24 - 25] / 12, dabs(r__1)) < .001f) { /* Need a dot */ -#line 2179 "" +#line 2180 "" if (lnoten == 1) { /* Writing concatenation */ -#line 2180 "" +#line 2181 "" i__3[0] = 1, a__2[0] = " "; -#line 2180 "" +#line 2181 "" i__3[1] = 1, a__2[1] = noteq; -#line 2180 "" - s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 2181 "" - lnoten = 2; + s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 2182 "" - } + lnoten = 2; #line 2183 "" + } +#line 2184 "" if (*lnote == 0) { /* Writing concatenation */ -#line 2184 "" +#line 2185 "" i__7[0] = 1, a__6[0] = all_1.sq; -#line 2184 "" +#line 2185 "" i__7[1] = 2, a__6[1] = "pt"; -#line 2184 "" +#line 2185 "" i__7[2] = lnoten, a__6[2] = noteq; -#line 2184 "" - s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2185 "" + s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); +#line 2186 "" } else { /* Writing concatenation */ -#line 2186 "" +#line 2187 "" i__5[0] = *lnote, a__4[0] = notexq; -#line 2186 "" +#line 2187 "" i__5[1] = 1, a__4[1] = all_1.sq; -#line 2186 "" +#line 2187 "" i__5[2] = 2, a__4[2] = "pt"; -#line 2186 "" +#line 2187 "" i__5[3] = lnoten, a__4[3] = noteq; -#line 2186 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2187 "" - } + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2188 "" - *lnote = *lnote + 3 + lnoten; + } #line 2189 "" + *lnote = *lnote + 3 + lnoten; +#line 2190 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 2189 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2190 "" + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); +#line 2191 "" if (lnoten == 1) { /* Writing concatenation */ -#line 2191 "" +#line 2192 "" i__3[0] = 1, a__2[0] = " "; -#line 2191 "" +#line 2192 "" i__3[1] = 1, a__2[1] = noteq; -#line 2191 "" - s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 2192 "" - lnoten = 2; + s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 2193 "" - } + lnoten = 2; #line 2194 "" + } +#line 2195 "" } /* Writing concatenation */ -#line 2195 "" +#line 2196 "" i__8[0] = *lnote, a__7[0] = notexq; -#line 2195 "" +#line 2196 "" i__8[1] = 1, a__7[1] = all_1.sq; -#line 2195 "" +#line 2196 "" i__8[2] = 1, a__7[2] = "q"; -#line 2195 "" +#line 2196 "" i__8[3] = 1, a__7[3] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2195 "" +#line 2196 "" i__8[4] = lnoten, a__7[4] = noteq; -#line 2195 "" +#line 2196 "" i__8[5] = 1, a__7[5] = all_1.sq; -#line 2195 "" +#line 2196 "" i__8[6] = 3, a__7[6] = "slz"; -#line 2195 "" +#line 2196 "" s_cat(notexq, a__7, i__8, &c__7, (ftnlen)79); /* * //sq//'stemcut' */ /* lnote=lnote+3+lnoten+8 */ -#line 2200 "" - *lnote = *lnote + 3 + lnoten + 4; #line 2201 "" + *lnote = *lnote + 3 + lnoten + 4; +#line 2202 "" } else if (multip == -1) { /* Writing concatenation */ -#line 2202 "" +#line 2203 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2202 "" +#line 2203 "" i__5[1] = 1, a__4[1] = "h"; -#line 2202 "" +#line 2203 "" i__5[2] = 1, a__4[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2202 "" +#line 2203 "" i__5[3] = lnoten, a__4[3] = noteq; -#line 2202 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2203 "" - *lnote = lnoten + 3; + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2204 "" + *lnote = lnoten + 3; +#line 2205 "" } else if (multip == 1) { /* Writing concatenation */ -#line 2205 "" +#line 2206 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2205 "" +#line 2206 "" i__5[1] = 1, a__4[1] = "c"; -#line 2205 "" +#line 2206 "" i__5[2] = 1, a__4[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2205 "" +#line 2206 "" i__5[3] = lnoten, a__4[3] = noteq; -#line 2205 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2206 "" - *lnote = lnoten + 3; + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2207 "" + *lnote = lnoten + 3; +#line 2208 "" } else if (multip == 2) { /* Writing concatenation */ -#line 2208 "" +#line 2209 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2208 "" +#line 2209 "" i__5[1] = 2, a__4[1] = "cc"; -#line 2208 "" +#line 2209 "" i__5[2] = 1, a__4[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2208 "" +#line 2209 "" i__5[3] = lnoten, a__4[3] = noteq; -#line 2208 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2209 "" - *lnote = lnoten + 4; + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2210 "" + *lnote = lnoten + 4; +#line 2211 "" } else if (multip == 3) { /* Writing concatenation */ -#line 2211 "" +#line 2212 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2211 "" +#line 2212 "" i__5[1] = 3, a__4[1] = "ccc"; -#line 2211 "" +#line 2212 "" i__5[2] = 1, a__4[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2211 "" +#line 2212 "" i__5[3] = lnoten, a__4[3] = noteq; -#line 2211 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2212 "" - *lnote = lnoten + 5; + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2213 "" + *lnote = lnoten + 5; +#line 2214 "" } else if (multip == -2) { /* Writing concatenation */ -#line 2214 "" +#line 2215 "" i__7[0] = 1, a__6[0] = all_1.sq; -#line 2214 "" +#line 2215 "" i__7[1] = 2, a__6[1] = "wh"; -#line 2214 "" +#line 2215 "" i__7[2] = lnoten, a__6[2] = noteq; -#line 2214 "" - s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2215 "" - *lnote = lnoten + 3; + s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2216 "" + *lnote = lnoten + 3; +#line 2217 "" } else if (multip == -3) { /* Writing concatenation */ -#line 2217 "" +#line 2218 "" i__7[0] = 1, a__6[0] = all_1.sq; -#line 2217 "" +#line 2218 "" i__7[1] = 5, a__6[1] = "breve"; -#line 2217 "" +#line 2218 "" i__7[2] = lnoten, a__6[2] = noteq; -#line 2217 "" - s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2218 "" - *lnote = lnoten + 6; + s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2219 "" - } else { -#line 2220 "" - s_wsle(&io___154); + *lnote = lnoten + 6; #line 2220 "" - e_wsle(); + } else { #line 2221 "" s_wsle(&io___155); #line 2221 "" + e_wsle(); +#line 2222 "" + s_wsle(&io___156); +#line 2222 "" do_lio(&c__9, &c__1, "(Error in beamend, send source to "\ "Dr. Don)", (ftnlen)42); -#line 2221 "" - e_wsle(); #line 2222 "" - stop1_(); + e_wsle(); #line 2223 "" - } + stop1_(); #line 2224 "" + } +#line 2225 "" } else { /* Prior note is regular-dotted so this one is halved */ -#line 2228 "" - *lnote = lnoten + 3; #line 2229 "" + *lnote = lnoten + 3; +#line 2230 "" if (multip == 0) { /* Writing concatenation */ -#line 2230 "" +#line 2231 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2230 "" +#line 2231 "" i__5[1] = 1, a__4[1] = "c"; -#line 2230 "" +#line 2231 "" i__5[2] = 1, a__4[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2230 "" +#line 2231 "" i__5[3] = 8, a__4[3] = noteq; -#line 2230 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2231 "" + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); +#line 2232 "" } else if (multip == -1) { /* Writing concatenation */ -#line 2232 "" +#line 2233 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2232 "" +#line 2233 "" i__5[1] = 1, a__4[1] = "q"; -#line 2232 "" +#line 2233 "" i__5[2] = 1, a__4[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2232 "" +#line 2233 "" i__5[3] = 8, a__4[3] = noteq; -#line 2232 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2233 "" + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); +#line 2234 "" } else if (multip == -2) { /* Writing concatenation */ -#line 2234 "" +#line 2235 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2234 "" +#line 2235 "" i__5[1] = 1, a__4[1] = "h"; -#line 2234 "" +#line 2235 "" i__5[2] = 1, a__4[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2234 "" +#line 2235 "" i__5[3] = 8, a__4[3] = noteq; -#line 2234 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2235 "" + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); +#line 2236 "" } else if (multip == 1) { /* Writing concatenation */ -#line 2236 "" +#line 2237 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2236 "" +#line 2237 "" i__5[1] = 2, a__4[1] = "cc"; -#line 2236 "" +#line 2237 "" i__5[2] = 1, a__4[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2236 "" +#line 2237 "" i__5[3] = 8, a__4[3] = noteq; -#line 2236 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2237 "" - *lnote = lnoten + 4; + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2238 "" + *lnote = lnoten + 4; +#line 2239 "" } else if (multip == 2) { /* Writing concatenation */ -#line 2239 "" +#line 2240 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2239 "" +#line 2240 "" i__5[1] = 3, a__4[1] = "ccc"; -#line 2239 "" +#line 2240 "" i__5[2] = 1, a__4[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2239 "" +#line 2240 "" i__5[3] = 8, a__4[3] = noteq; -#line 2239 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2240 "" - *lnote = lnoten + 5; + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2241 "" - } + *lnote = lnoten + 5; #line 2242 "" - } + } #line 2243 "" - } + } #line 2244 "" - return 0; + } #line 2245 "" + return 0; +#line 2246 "" } /* End of block for unbeamed. Problem if beamed but ends w/ rest. Try just */ /* skipping the call in that case. */ -#line 2250 "" - if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { #line 2251 "" + if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { +#line 2252 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 2251 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2252 "" + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); +#line 2253 "" } /* call notefq(noteq,lnoten,nole,ncmid(iv,ip)) */ /* lnote = 0 */ /* New way, with flipend, which was computed in beamstrt. */ -#line 2258 "" +#line 2259 "" if (strtmid_1.flipend[commvl_1.ivx - 1] && bit_test(all_1.ipl[ commvl_1.ivx + ip * 24 - 25],30)) { -#line 2259 "" +#line 2260 "" i__1 = 225 - *(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25]; -#line 2259 "" +#line 2260 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 2259 "" +#line 2260 "" *(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25] = *(unsigned char *)&ch__1[0]; -#line 2260 "" - strtmid_1.flipend[commvl_1.ivx - 1] = FALSE_; #line 2261 "" - } + strtmid_1.flipend[commvl_1.ivx - 1] = FALSE_; #line 2262 "" + } +#line 2263 "" if (ip > all_1.ibm1[commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25]) { /* This is not a one-noter from beam-jump. Check if multiplicity has increased */ -#line 2266 "" +#line 2267 "" if (bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25],0)) { /* Prior note is a rest, check one before that */ -#line 2270 "" - mp = (all_1.mult[commvl_1.ivx + (ip - 2) * 24 - 25] & 15) - 8; #line 2271 "" - } else { + mp = (all_1.mult[commvl_1.ivx + (ip - 2) * 24 - 25] & 15) - 8; #line 2272 "" - mp = (all_1.mult[commvl_1.ivx + (ip - 1) * 24 - 25] & 15) - 8; + } else { #line 2273 "" - } + mp = (all_1.mult[commvl_1.ivx + (ip - 1) * 24 - 25] & 15) - 8; #line 2274 "" + } +#line 2275 "" if (multip > mp) { /* Assume 1-3, 2-3, or 1-2 */ -#line 2278 "" +#line 2279 "" i__1 = mp + 1; -#line 2278 "" - for (imp = multip; imp >= i__1; --imp) { #line 2279 "" + for (imp = multip; imp >= i__1; --imp) { +#line 2280 "" ntrbbb_(&imp, "t", all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25), &commvl_1.ivx, notexq, lnote, (ftnlen)1, (ftnlen)1, (ftnlen)79); -#line 2280 "" +#line 2281 "" /* L2: */ -#line 2280 "" - } #line 2281 "" + } +#line 2282 "" } else if (bit_test(all_1.nacc[commvl_1.ivx + (ip - 1) * 24 - 25],27)) { /* 2nd member of dotted xtup */ -#line 2285 "" +#line 2286 "" i__1 = multip + 1; -#line 2285 "" +#line 2286 "" ntrbbb_(&i__1, "t", all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25), &commvl_1.ivx, notexq, lnote, (ftnlen)1, (ftnlen)1, (ftnlen)79); -#line 2287 "" - } #line 2288 "" + } +#line 2289 "" } /* Beam termination and direction analysis */ -#line 2292 "" +#line 2293 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],23) && ! combjmp_1.isbjmp) { @@ -5868,470 +5870,470 @@ L1: /* voice of the 2nd part of jumped beam. (May need special treatment for */ /* multi-segment jump-beams */ -#line 2299 "" - combjmp_1.isbjmp = TRUE_; #line 2300 "" - combjmp_1.ivbj1 = commvl_1.ivx; + combjmp_1.isbjmp = TRUE_; #line 2301 "" - combjmp_1.multbj1 = 15 & all_1.mult[commvl_1.ivx + ip * 24 - 25] - 8; + combjmp_1.ivbj1 = commvl_1.ivx; #line 2302 "" - combjmp_1.ivbj2 = 0; + combjmp_1.multbj1 = 15 & all_1.mult[commvl_1.ivx + ip * 24 - 25] - 8; #line 2303 "" - } + combjmp_1.ivbj2 = 0; #line 2304 "" + } +#line 2305 "" if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],23)) { /* This is either a normal beamend or end of a sequence of jump-beam segments, */ /* (170409) or rest at end of xtup */ /* so some sort of termination is required */ -#line 2310 "" +#line 2311 "" *(unsigned char *)ulqq = *(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25]; -#line 2311 "" - if (! combjmp_1.isbjmp || commvl_1.ivx != combjmp_1.ivbj2) { #line 2312 "" + if (! combjmp_1.isbjmp || commvl_1.ivx != combjmp_1.ivbj2) { +#line 2313 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { /* Xtup ends with rest */ -#line 2316 "" +#line 2317 "" if (multip == 1) { /* Writing concatenation */ -#line 2317 "" +#line 2318 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2317 "" +#line 2318 "" i__3[1] = 2, a__2[1] = "ds"; -#line 2317 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2318 "" - *lnote = 3; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2319 "" + *lnote = 3; +#line 2320 "" } else if (multip == 2) { /* Writing concatenation */ -#line 2320 "" +#line 2321 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2320 "" +#line 2321 "" i__3[1] = 2, a__2[1] = "qs"; -#line 2320 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2321 "" - *lnote = 3; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2322 "" + *lnote = 3; +#line 2323 "" } else if (multip == 3) { /* Writing concatenation */ -#line 2323 "" +#line 2324 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2323 "" +#line 2324 "" i__3[1] = 2, a__2[1] = "hs"; -#line 2323 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2324 "" - *lnote = 3; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2325 "" + *lnote = 3; +#line 2326 "" } /* 170801 Borrowed from main rest entry way down below to get level adjustment: */ /* BUT nole is like 102, not 2, so subtracted 100 for nole. Why different??? */ /* "... Now raise if necc." */ -#line 2331 "" +#line 2332 "" if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],29)) { /* Blank rest */ /* Writing concatenation */ -#line 2335 "" +#line 2336 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2335 "" +#line 2336 "" i__3[1] = 2, a__2[1] = "sk"; -#line 2335 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2336 "" - *lnote = 3; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2337 "" + *lnote = 3; +#line 2338 "" } else if (nole != 0) { /* Bandaid. Odd case with rests in xtups + 2 voices where came thru here with */ /* nolev=-4 but expected 100+/-. Try to fix. */ -#line 2342 "" +#line 2343 "" if (abs(nole) < 30) { -#line 2342 "" +#line 2343 "" nole += 100; -#line 2342 "" +#line 2343 "" } -#line 2344 "" - if ((i__1 = nole - 100, abs(i__1)) < 10) { #line 2345 "" + if ((i__1 = nole - 100, abs(i__1)) < 10) { +#line 2346 "" i__9 = (i__1 = nole - 100, abs(i__1)) + 48; -#line 2345 "" +#line 2346 "" chax_(ch__1, (ftnlen)1, &i__9); -#line 2345 "" - s_copy(noteq, ch__1, (ftnlen)8, (ftnlen)1); #line 2346 "" - lnoten = 1; + s_copy(noteq, ch__1, (ftnlen)8, (ftnlen)1); #line 2347 "" - } else { -#line 2348 "" - s_wsfi(&io___159); + lnoten = 1; #line 2348 "" + } else { +#line 2349 "" + s_wsfi(&io___160); +#line 2349 "" i__9 = (i__1 = nole - 100, abs(i__1)); -#line 2348 "" +#line 2349 "" do_fio(&c__1, (char *)&i__9, (ftnlen)sizeof(integer)); -#line 2348 "" - e_wsfi(); #line 2349 "" - lnoten = 2; + e_wsfi(); #line 2350 "" + lnoten = 2; +#line 2351 "" } /* ??? if (nole .gt. 0) then */ -#line 2352 "" +#line 2353 "" if (nole > 100) { /* Writing concatenation */ -#line 2353 "" +#line 2354 "" i__4[0] = 1, a__3[0] = all_1.sq; -#line 2353 "" +#line 2354 "" i__4[1] = 5, a__3[1] = "raise"; -#line 2353 "" +#line 2354 "" i__4[2] = lnoten, a__3[2] = noteq; -#line 2353 "" +#line 2354 "" i__4[3] = 1, a__3[3] = all_1.sq; -#line 2353 "" +#line 2354 "" i__4[4] = 9, a__3[4] = "internote"; -#line 2353 "" +#line 2354 "" i__4[5] = *lnote, a__3[5] = notexq; -#line 2353 "" +#line 2354 "" s_cat(notexq, a__3, i__4, &c__6, (ftnlen)79); -#line 2355 "" +#line 2356 "" } else { /* Writing concatenation */ -#line 2356 "" +#line 2357 "" i__4[0] = 1, a__3[0] = all_1.sq; -#line 2356 "" +#line 2357 "" i__4[1] = 5, a__3[1] = "lower"; -#line 2356 "" +#line 2357 "" i__4[2] = lnoten, a__3[2] = noteq; -#line 2356 "" +#line 2357 "" i__4[3] = 1, a__3[3] = all_1.sq; -#line 2356 "" +#line 2357 "" i__4[4] = 9, a__3[4] = "internote"; -#line 2356 "" +#line 2357 "" i__4[5] = *lnote, a__3[5] = notexq; -#line 2356 "" +#line 2357 "" s_cat(notexq, a__3, i__4, &c__6, (ftnlen)79); -#line 2358 "" - } #line 2359 "" - *lnote = lnoten + 16 + *lnote; + } #line 2360 "" - } + *lnote = lnoten + 16 + *lnote; #line 2361 "" - return 0; + } #line 2362 "" + return 0; +#line 2363 "" } else { /* Normal termination */ -#line 2366 "" +#line 2367 "" i__1 = commvl_1.ivx % 24; -#line 2366 "" +#line 2367 "" ntrbbb_(&c__1, "t", ulqq, &i__1, notexq, lnote, (ftnlen)1, ( ftnlen)1, (ftnlen)79); -#line 2367 "" - } #line 2368 "" + } +#line 2369 "" } else { /* Terminate a sequence of jump-beam segments. */ -#line 2372 "" +#line 2373 "" i__1 = 225 - *(unsigned char *)ulqq; -#line 2372 "" +#line 2373 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 2372 "" - *(unsigned char *)ulqq = *(unsigned char *)&ch__1[0]; #line 2373 "" + *(unsigned char *)ulqq = *(unsigned char *)&ch__1[0]; +#line 2374 "" i__1 = combjmp_1.ivbj1 % 24; -#line 2373 "" +#line 2374 "" ntrbbb_(&c__1, "t", ulqq, &i__1, notexq, lnote, (ftnlen)1, ( ftnlen)1, (ftnlen)79); -#line 2374 "" - } #line 2375 "" + } +#line 2376 "" } /* Check for end of 2nd seg of staff-jump xtup chord blank rest */ /* if (isbjmp.and.ivx.eq.ivbj2 */ -#line 2380 "" +#line 2381 "" if (combjmp_1.isbjmp && bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25], 29)) { /* Writing concatenation */ -#line 2382 "" +#line 2383 "" i__7[0] = *lnote, a__6[0] = notexq; -#line 2382 "" +#line 2383 "" i__7[1] = 1, a__6[1] = all_1.sq; -#line 2382 "" +#line 2383 "" i__7[2] = 2, a__6[2] = "sk"; -#line 2382 "" - s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2383 "" - return 0; + s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2384 "" + return 0; +#line 2385 "" } /* And now the note, checking for open-head beamed tremolo */ -#line 2388 "" +#line 2389 "" if (bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25],2)) { /* Check for dotted tremolo */ -#line 2392 "" +#line 2393 "" if ((r__1 = all_1.nodur[commvl_1.ivx + ip * 24 - 25] / 12.f - all_1.nodur[commvl_1.ivx + ip * 24 - 25] / 12, dabs(r__1)) < .001f) { /* Need a dot */ -#line 2396 "" +#line 2397 "" if (all_1.nodur[commvl_1.ivx + ip * 24 - 25] == 24 || all_1.nodur[ commvl_1.ivx + ip * 24 - 25] == 12) { /* Solid notehead */ /* Writing concatenation */ -#line 2400 "" +#line 2401 "" i__7[0] = *lnote, a__6[0] = notexq; -#line 2400 "" +#line 2401 "" i__7[1] = 1, a__6[1] = all_1.sq; -#line 2400 "" +#line 2401 "" i__7[2] = 3, a__6[2] = "qbp"; -#line 2400 "" - s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2401 "" + s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); +#line 2402 "" } else { /* Assuming open notehead and nodur = 48 */ /* Writing concatenation */ -#line 2405 "" +#line 2406 "" i__7[0] = *lnote, a__6[0] = notexq; -#line 2405 "" +#line 2406 "" i__7[1] = 1, a__6[1] = all_1.sq; -#line 2405 "" +#line 2406 "" i__7[2] = 3, a__6[2] = "hbp"; -#line 2405 "" - s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2406 "" - } + s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2407 "" - *lnote += 4; + } #line 2408 "" - } else { + *lnote += 4; #line 2409 "" + } else { +#line 2410 "" if (all_1.nodur[commvl_1.ivx + ip * 24 - 25] == 32 || all_1.nodur[ commvl_1.ivx + ip * 24 - 25] == 48) { -#line 2410 "" +#line 2411 "" if (*lnote > 0) { /* Writing concatenation */ -#line 2411 "" +#line 2412 "" i__7[0] = *lnote, a__6[0] = notexq; -#line 2411 "" +#line 2412 "" i__7[1] = 1, a__6[1] = all_1.sq; -#line 2411 "" +#line 2412 "" i__7[2] = 2, a__6[2] = "hb"; -#line 2411 "" - s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2412 "" + s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); +#line 2413 "" } else { /* Writing concatenation */ -#line 2413 "" +#line 2414 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2413 "" +#line 2414 "" i__3[1] = 2, a__2[1] = "hb"; -#line 2413 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2414 "" - } + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2415 "" - } else { + } #line 2416 "" + } else { +#line 2417 "" if (*lnote > 0) { /* Writing concatenation */ -#line 2417 "" +#line 2418 "" i__7[0] = *lnote, a__6[0] = notexq; -#line 2417 "" +#line 2418 "" i__7[1] = 1, a__6[1] = all_1.sq; -#line 2417 "" +#line 2418 "" i__7[2] = 2, a__6[2] = "qb"; -#line 2417 "" - s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2418 "" + s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); +#line 2419 "" } else { /* Writing concatenation */ -#line 2419 "" +#line 2420 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2419 "" +#line 2420 "" i__3[1] = 2, a__2[1] = "qb"; -#line 2419 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2420 "" - } + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2421 "" - } + } #line 2422 "" - *lnote += 3; + } #line 2423 "" - } + *lnote += 3; #line 2424 "" + } +#line 2425 "" } else { /* No tremolo */ -#line 2428 "" +#line 2429 "" if (*lnote > 0) { /* Writing concatenation */ -#line 2429 "" +#line 2430 "" i__7[0] = *lnote, a__6[0] = notexq; -#line 2429 "" +#line 2430 "" i__7[1] = 1, a__6[1] = all_1.sq; -#line 2429 "" +#line 2430 "" i__7[2] = 2, a__6[2] = "qb"; -#line 2429 "" - s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); #line 2430 "" + s_cat(notexq, a__6, i__7, &c__3, (ftnlen)79); +#line 2431 "" } else { /* Writing concatenation */ -#line 2431 "" +#line 2432 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2431 "" +#line 2432 "" i__3[1] = 2, a__2[1] = "qb"; -#line 2431 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2432 "" - } + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2433 "" - *lnote += 3; + } #line 2434 "" - } + *lnote += 3; #line 2435 "" - isdotm = FALSE_; + } #line 2436 "" - if (! comxtup_1.vxtup[commvl_1.ivx - 1]) { + isdotm = FALSE_; #line 2437 "" + if (! comxtup_1.vxtup[commvl_1.ivx - 1]) { +#line 2438 "" i__1 = log2_(&all_1.nodur[commvl_1.ivx + ip * 24 - 25]); -#line 2437 "" +#line 2438 "" if (pow_ii(&c__2, &i__1) != all_1.nodur[commvl_1.ivx + ip * 24 - 25]) { -#line 2438 "" +#line 2439 "" if (! bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],13)) { /* Writing concatenation */ -#line 2439 "" +#line 2440 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2439 "" +#line 2440 "" i__3[1] = 1, a__2[1] = "p"; -#line 2439 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2440 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 2441 "" } else { /* Writing concatenation */ -#line 2441 "" +#line 2442 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2441 "" +#line 2442 "" i__3[1] = 1, a__2[1] = "m"; -#line 2441 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2442 "" - isdotm = TRUE_; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2443 "" - } + isdotm = TRUE_; #line 2444 "" - ++(*lnote); + } #line 2445 "" - } + ++(*lnote); #line 2446 "" + } +#line 2447 "" } /* 5/25/08 Allow >12 */ /* 5/9/10 Up to 24; replace 24 with 0 */ -#line 2451 "" - if (! (combjmp_1.isbjmp && commvl_1.ivx == combjmp_1.ivbj2)) { #line 2452 "" + if (! (combjmp_1.isbjmp && commvl_1.ivx == combjmp_1.ivbj2)) { +#line 2453 "" i__1 = commvl_1.ivx % 24; -#line 2452 "" - istring_(&i__1, tempq, &len, (ftnlen)4); #line 2453 "" - } else { + istring_(&i__1, tempq, &len, (ftnlen)4); #line 2454 "" + } else { +#line 2455 "" i__1 = combjmp_1.ivbj1 % 24; -#line 2454 "" - istring_(&i__1, tempq, &len, (ftnlen)4); #line 2455 "" - } + istring_(&i__1, tempq, &len, (ftnlen)4); #line 2456 "" + } +#line 2457 "" if (combjmp_1.isbjmp && commvl_1.ivx == combjmp_1.ivbj2 && ! bit_test( all_1.irest[commvl_1.ivx + ip * 24 - 25],23)) { -#line 2456 "" +#line 2457 "" combjmp_1.isbjmp = FALSE_; -#line 2456 "" +#line 2457 "" } /* Writing concatenation */ -#line 2458 "" +#line 2459 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2458 "" +#line 2459 "" i__3[1] = len, a__2[1] = tempq; -#line 2458 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2459 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 2460 "" *lnote += len; /* Writing concatenation */ -#line 2460 "" +#line 2461 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2460 "" +#line 2461 "" i__3[1] = lnoten, a__2[1] = noteq; -#line 2460 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2461 "" - *lnote += lnoten; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2462 "" - if (isdotm) { + *lnote += lnoten; #line 2463 "" + if (isdotm) { +#line 2464 "" if (lnoten == 1) { /* Writing concatenation */ -#line 2464 "" +#line 2465 "" i__5[0] = *lnote, a__4[0] = notexq; -#line 2464 "" +#line 2465 "" i__5[1] = 1, a__4[1] = "{"; -#line 2464 "" +#line 2465 "" i__5[2] = 1, a__4[2] = noteq; -#line 2464 "" +#line 2465 "" i__5[3] = 1, a__4[3] = "}"; -#line 2464 "" - s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2465 "" - *lnote += 3; + s_cat(notexq, a__4, i__5, &c__4, (ftnlen)79); #line 2466 "" - } else { + *lnote += 3; #line 2467 "" + } else { +#line 2468 "" i__1 = lnoten - 2; /* Writing concatenation */ -#line 2467 "" +#line 2468 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2467 "" +#line 2468 "" i__3[1] = lnoten - 1 - i__1, a__2[1] = noteq + i__1; -#line 2467 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2468 "" - ++(*lnote); + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2469 "" - } + ++(*lnote); #line 2470 "" - } + } #line 2471 "" + } +#line 2472 "" return 0; } /* beamend_ */ @@ -6378,28 +6380,28 @@ L1: extern /* Subroutine */ int istring_(integer *, char *, integer *, ftnlen) ; -#line 2501 "" - *lnote = 0; #line 2502 "" - ip = all_1.ipo[all_1.jn - 1]; + *lnote = 0; #line 2503 "" + ip = all_1.ipo[all_1.jn - 1]; +#line 2504 "" nole = all_1.nolev[commvl_1.ivx + ip * 24 - 25]; /* Check for special situations with 2nds (see precrd) */ -#line 2507 "" - if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],30)) { #line 2508 "" - --nole; + if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],30)) { #line 2509 "" - } else if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],31)) { + --nole; #line 2510 "" - ++nole; + } else if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],31)) { #line 2511 "" - } + ++nole; #line 2512 "" - if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { + } #line 2513 "" + if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { +#line 2514 "" multip = (all_1.mult[commvl_1.ivx + ip * 24 - 25] & 15) - 8; /* if (btest(islur(ivx,ip-1),3)) multip = multip+1 */ @@ -6409,173 +6411,173 @@ L1: /* embedded xtup with number, due to ordering/octave feature. */ /* call notefq(noteq,lnoten,nolev(ivx,ip),ncmid(iv,ip)) */ -#line 2522 "" - } #line 2523 "" + } +#line 2524 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],28)) { -#line 2523 "" +#line 2524 "" comxtup_1.vxtup[commvl_1.ivx - 1] = TRUE_; -#line 2523 "" - } #line 2524 "" + } +#line 2525 "" if (comxtup_1.vxtup[commvl_1.ivx - 1]) { /* In an xtup */ -#line 2528 "" +#line 2529 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { /* Intermediate rest in xtup, put in the rest. Reset nodur so notex works OK */ -#line 2532 "" +#line 2533 "" i__1 = 4 - ((all_1.mult[commvl_1.ivx + ip * 24 - 25] & 15) - 8); -#line 2532 "" - all_1.nodur[commvl_1.ivx + ip * 24 - 25] = pow_ii(&c__2, &i__1); #line 2533 "" + all_1.nodur[commvl_1.ivx + ip * 24 - 25] = pow_ii(&c__2, &i__1); +#line 2534 "" notex_(notexq, lnote, (ftnlen)79); /* Re-zero so next note does not get confused */ -#line 2537 "" - all_1.nodur[commvl_1.ivx + ip * 24 - 25] = 0; #line 2538 "" - return 0; + all_1.nodur[commvl_1.ivx + ip * 24 - 25] = 0; #line 2539 "" - } + return 0; #line 2540 "" + } +#line 2541 "" if (! comdraw_1.drawbm[commvl_1.ivx - 1]) { /* Xtuplet with no beam, just put in the right kind of note */ -#line 2544 "" +#line 2545 "" if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],30)) { /* Forced stem direction */ -#line 2548 "" - ndsav = all_1.nodur[commvl_1.ivx + ip * 24 - 25]; #line 2549 "" + ndsav = all_1.nodur[commvl_1.ivx + ip * 24 - 25]; +#line 2550 "" i__1 = 4 - multip; -#line 2549 "" +#line 2550 "" all_1.nodur[commvl_1.ivx + ip * 24 - 25] = pow_ii(&c__2, & i__1); -#line 2550 "" +#line 2551 "" if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],19) || bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],27)) { -#line 2552 "" +#line 2553 "" all_1.nodur[commvl_1.ivx + ip * 24 - 25] = all_1.nodur[ commvl_1.ivx + ip * 24 - 25] * 3 / 2; -#line 2553 "" +#line 2554 "" } else if (bit_test(all_1.nacc[commvl_1.ivx + (ip - 1) * 24 - 25],27)) { -#line 2554 "" - all_1.nodur[commvl_1.ivx + ip * 24 - 25] /= 2; #line 2555 "" - } + all_1.nodur[commvl_1.ivx + ip * 24 - 25] /= 2; #line 2556 "" - notex_(notexq, lnote, (ftnlen)79); + } #line 2557 "" - all_1.nodur[commvl_1.ivx + ip * 24 - 25] = ndsav; + notex_(notexq, lnote, (ftnlen)79); #line 2558 "" + all_1.nodur[commvl_1.ivx + ip * 24 - 25] = ndsav; +#line 2559 "" } else { /* Use ulq for stem direction */ -#line 2562 "" +#line 2563 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 2562 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2563 "" + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); +#line 2564 "" if (lnoten == 1) { -#line 2563 "" +#line 2564 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 2563 "" - } #line 2564 "" - *lnote = 3; + } #line 2565 "" + *lnote = 3; +#line 2566 "" if (! bit_test(all_1.nacc[commvl_1.ivx + (ip - 1) * 24 - 25], 27)) { /* Prior note of xtup is not regular-dotted */ -#line 2569 "" +#line 2570 "" if (multip == 0) { /* Writing concatenation */ -#line 2570 "" +#line 2571 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2570 "" +#line 2571 "" i__2[1] = 1, a__1[1] = "q"; -#line 2570 "" +#line 2571 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2570 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2571 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 2572 "" } else if (multip == -1) { /* Writing concatenation */ -#line 2572 "" +#line 2573 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2572 "" +#line 2573 "" i__2[1] = 1, a__1[1] = "h"; -#line 2572 "" +#line 2573 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2572 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2573 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 2574 "" } else if (multip == 1) { /* Writing concatenation */ -#line 2574 "" +#line 2575 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2574 "" +#line 2575 "" i__2[1] = 1, a__1[1] = "c"; -#line 2574 "" +#line 2575 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2574 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2575 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 2576 "" } else if (multip == 2) { /* Writing concatenation */ -#line 2576 "" +#line 2577 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2576 "" +#line 2577 "" i__2[1] = 2, a__1[1] = "cc"; -#line 2576 "" +#line 2577 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2576 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2577 "" - *lnote = 4; + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2578 "" + *lnote = 4; +#line 2579 "" } else if (multip == 3) { /* Writing concatenation */ -#line 2579 "" +#line 2580 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2579 "" +#line 2580 "" i__2[1] = 3, a__1[1] = "ccc"; -#line 2579 "" +#line 2580 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2579 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2580 "" - *lnote = 5; + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2581 "" - } else if (multip == -2) { -/* Writing concatenation */ + *lnote = 5; #line 2582 "" + } else if (multip == -2) { +/* Writing concatenation */ +#line 2583 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2582 "" +#line 2583 "" i__3[1] = 2, a__2[1] = "wh"; -#line 2582 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2583 "" - } + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2584 "" + } +#line 2585 "" if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],27)) { @@ -6584,198 +6586,198 @@ L1: /* notexq = notexq(1:3)//'p' */ /* lnote = 4 */ /* Writing concatenation */ -#line 2590 "" +#line 2591 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2590 "" +#line 2591 "" i__3[1] = 1, a__2[1] = "p"; -#line 2590 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2591 "" - ++(*lnote); + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2592 "" - } + ++(*lnote); #line 2593 "" + } +#line 2594 "" } else { /* Prior note of xtup is regular-dotted so this one is halved */ -#line 2597 "" +#line 2598 "" if (multip == 2) { /* Writing concatenation */ -#line 2598 "" +#line 2599 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2598 "" +#line 2599 "" i__2[1] = 3, a__1[1] = "ccc"; -#line 2598 "" +#line 2599 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2598 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2599 "" - *lnote = 5; + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2600 "" + *lnote = 5; +#line 2601 "" } else if (multip == 1) { /* Writing concatenation */ -#line 2601 "" +#line 2602 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2601 "" +#line 2602 "" i__2[1] = 2, a__1[1] = "cc"; -#line 2601 "" +#line 2602 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2601 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2602 "" - *lnote = 4; + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2603 "" + *lnote = 4; +#line 2604 "" } else if (multip == 0) { /* Writing concatenation */ -#line 2604 "" +#line 2605 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2604 "" +#line 2605 "" i__2[1] = 1, a__1[1] = "c"; -#line 2604 "" +#line 2605 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2604 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2605 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 2606 "" } else if (multip == -1) { /* Writing concatenation */ -#line 2606 "" +#line 2607 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2606 "" +#line 2607 "" i__2[1] = 1, a__1[1] = "q"; -#line 2606 "" +#line 2607 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2606 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2607 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 2608 "" } else if (multip == -2) { /* Writing concatenation */ -#line 2608 "" +#line 2609 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2608 "" +#line 2609 "" i__2[1] = 1, a__1[1] = "h"; -#line 2608 "" +#line 2609 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2608 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2609 "" - } + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2610 "" + } +#line 2611 "" } /* Writing concatenation */ -#line 2611 "" +#line 2612 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2611 "" +#line 2612 "" i__3[1] = 8, a__2[1] = noteq; -#line 2611 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2612 "" - *lnote += lnoten; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2613 "" - } + *lnote += lnoten; #line 2614 "" - return 0; + } #line 2615 "" + return 0; +#line 2616 "" } else if (all_1.nodur[commvl_1.ivx + ip * 24 - 25] == 0) { /* In the beamed xtup but not the last note */ -#line 2619 "" +#line 2620 "" if (all_1.nodur[commvl_1.ivx + (ip - 1) * 24 - 25] > 0) { /* Embedded Xtup, mult>0, starts here. Put in number if needed */ -#line 2623 "" - ++comxtup_1.nxtinbm[commvl_1.ivx - 1]; #line 2624 "" - iud = 1; + ++comxtup_1.nxtinbm[commvl_1.ivx - 1]; #line 2625 "" + iud = 1; +#line 2626 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25] == 'u') { -#line 2625 "" +#line 2626 "" iud = -1; -#line 2625 "" +#line 2626 "" } /* Get ip#, notelevel of middle note (or gap) in xtup */ -#line 2629 "" +#line 2630 "" ipmid = ip + comxtup_1.ntupv[commvl_1.ivx + comxtup_1.nxtinbm[ commvl_1.ivx - 1] * 24 - 25] / 2; -#line 2630 "" +#line 2631 "" i__1 = ncmid_(&all_1.iv, &ipmid); -#line 2630 "" +#line 2631 "" i__4 = (15 & all_1.mult[commvl_1.ivx + ipmid * 24 - 25]) - 8; -#line 2630 "" +#line 2631 "" xnlmid = (real) levrn_(&all_1.nolev[commvl_1.ivx + ipmid * 24 - 25], &all_1.irest[commvl_1.ivx + ipmid * 24 - 25], & iud, &i__1, &i__4); -#line 2632 "" +#line 2633 "" if (comxtup_1.ntupv[commvl_1.ivx + comxtup_1.nxtinbm[ commvl_1.ivx - 1] * 24 - 25] % 2 == 0) { -#line 2632 "" +#line 2633 "" i__4 = ipmid - 1; -#line 2632 "" +#line 2633 "" i__1 = ncmid_(&all_1.iv, &i__4); -#line 2632 "" +#line 2633 "" i__5 = (15 & all_1.mult[commvl_1.ivx + (ipmid - 1) * 24 - 25]) - 8; -#line 2632 "" +#line 2633 "" xnlmid = (xnlmid + levrn_(&all_1.nolev[commvl_1.ivx + ( ipmid - 1) * 24 - 25], &all_1.irest[commvl_1.ivx + (ipmid - 1) * 24 - 25], &iud, &i__1, &i__5)) / 2; -#line 2632 "" +#line 2633 "" } -#line 2635 "" - iflop = 0; #line 2636 "" + iflop = 0; +#line 2637 "" if ((r__1 = xnlmid - ncmid_(&all_1.iv, &ip), dabs(r__1)) < 3.f) { -#line 2636 "" +#line 2637 "" iflop = -iud; -#line 2636 "" - } #line 2637 "" - iup = iud + (iflop << 1); + } #line 2638 "" - if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],14)) { + iup = iud + (iflop << 1); #line 2639 "" - iup = -iup; + if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],14)) { #line 2640 "" - iflop = 0; + iup = -iup; #line 2641 "" + iflop = 0; +#line 2642 "" if (iud * iup < 0) { -#line 2641 "" +#line 2642 "" iflop = iup; -#line 2641 "" - } #line 2642 "" + } +#line 2643 "" } /* Place number if needed */ -#line 2646 "" - if (! bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],31)) { #line 2647 "" + if (! bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],31)) { +#line 2648 "" mprint = igetbits_(&all_1.nacc[commvl_1.ivx + ip * 24 - 25], &c__5, &c__22); -#line 2648 "" +#line 2649 "" if (mprint == 0) { -#line 2648 "" +#line 2649 "" mprint = comxtup_1.mtupv[commvl_1.ivx + comxtup_1.nxtinbm[commvl_1.ivx - 1] * 24 - 25] ; -#line 2648 "" - } #line 2649 "" + } +#line 2650 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 2649 "" +#line 2650 "" putxtn_(&mprint, &iflop, &multip, &iud, &comask_1.wheadpt, &comask_1.poenom, &comxtup_1.nolev1[commvl_1.ivx - 1], &comxtup_1.islope[commvl_1.ivx - 1], & @@ -6786,47 +6788,47 @@ L1: commvl_1.ivx + ip * 24 - 25], &all_1.mult[ commvl_1.ivx + ip * 24 - 25], &c_false, (ftnlen) 79); -#line 2654 "" - } #line 2655 "" + } +#line 2656 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 2655 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2656 "" + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); +#line 2657 "" } else { /* Intermediate note of xtup */ -#line 2660 "" +#line 2661 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 2660 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2661 "" - } + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2662 "" + } +#line 2663 "" } else { /* Last note of xtup (but not last note of beam!) */ -#line 2666 "" +#line 2667 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 2666 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2667 "" - } + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2668 "" - } else if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { + } #line 2669 "" - notex_(notexq, lnote, (ftnlen)79); + } else if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { #line 2670 "" - return 0; + notex_(notexq, lnote, (ftnlen)79); #line 2671 "" - } else { + return 0; #line 2672 "" + } else { +#line 2673 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 2672 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2673 "" + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); +#line 2674 "" } /* Check for string of rests up to and including last note in xtup. */ @@ -6836,7 +6838,7 @@ L1: /* break some unaccounted non-chordal staff-jum xtup situations. */ /* if (vxtup(ivx) .and. btest(irest(ivx,ip+1),0) .and. */ /* * .not.btest(irest(ivx,ip),0)) then */ -#line 2682 "" +#line 2683 "" if (comxtup_1.vxtup[commvl_1.ivx - 1] && bit_test(all_1.irest[ commvl_1.ivx + (ip + 1) * 24 - 25],0) && ! bit_test(all_1.irest[ commvl_1.ivx + ip * 24 - 25],0) && ! (combjmp_1.isbjmp && @@ -6845,379 +6847,379 @@ L1: /* This note is not a rest but next is a rest. Do rests continue to */ /* end of xtup, where nodur>0 */ -#line 2689 "" +#line 2690 "" i__1 = ip + 24; -#line 2689 "" - for (ipnow = ip + 1; ipnow <= i__1; ++ipnow) { #line 2690 "" + for (ipnow = ip + 1; ipnow <= i__1; ++ipnow) { +#line 2691 "" if (all_1.nodur[commvl_1.ivx + ipnow * 24 - 25] > 0) { -#line 2690 "" +#line 2691 "" goto L4; -#line 2690 "" +#line 2691 "" } /* This is last of xtup */ -#line 2691 "" +#line 2692 "" if (! bit_test(all_1.irest[commvl_1.ivx + (ipnow + 1) * 24 - 25], 0)) { -#line 2691 "" +#line 2692 "" goto L5; -#line 2691 "" +#line 2692 "" } /* If I don't go to 5, know next note IS a rest! */ /* Next is not */ -#line 2695 "" +#line 2696 "" /* L3: */ -#line 2695 "" - } #line 2696 "" -L4: + } #line 2697 "" +L4: +#line 2698 "" ntrbbb_(&c__1, "t", all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25), &commvl_1.ivx, notexq, lnote, ( ftnlen)1, (ftnlen)1, (ftnlen)79); /* Writing concatenation */ -#line 2698 "" +#line 2699 "" i__2[0] = *lnote, a__1[0] = notexq; -#line 2698 "" +#line 2699 "" i__2[1] = 1, a__1[1] = all_1.sq; -#line 2698 "" +#line 2699 "" i__2[2] = 2, a__1[2] = "qb"; -#line 2698 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2699 "" - *lnote += 3; + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2700 "" + *lnote += 3; +#line 2701 "" istring_(&commvl_1.ivx, tempq, &len, (ftnlen)4); /* Writing concatenation */ -#line 2701 "" +#line 2702 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2701 "" +#line 2702 "" i__3[1] = len, a__2[1] = tempq; -#line 2701 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2702 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 2703 "" *lnote += len; /* Writing concatenation */ -#line 2703 "" +#line 2704 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2703 "" +#line 2704 "" i__3[1] = lnoten, a__2[1] = noteq; -#line 2703 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2704 "" - *lnote += lnoten; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2705 "" - return 0; + *lnote += lnoten; #line 2706 "" + return 0; +#line 2707 "" L5: /* Check if multiplicity changes in a way requiring action, */ /* unless (160211) it's blank rest on start of 2nd seg of joined beam */ -#line 2711 "" +#line 2712 "" ; -#line 2711 "" +#line 2712 "" } else if (! bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25],24) || ! bit_test(all_1.islur[commvl_1.ivx + (ip - 1) * 24 - 25],29)) { -#line 2713 "" - ipleft = ip - 1; #line 2714 "" + ipleft = ip - 1; +#line 2715 "" if (bit_test(all_1.irest[commvl_1.ivx + ipleft * 24 - 25],0)) { -#line 2714 "" +#line 2715 "" --ipleft; -#line 2714 "" - } #line 2715 "" - if (! bit_test(all_1.islur[commvl_1.ivx + ipleft * 24 - 25],20)) { + } #line 2716 "" - multl = (15 & all_1.mult[commvl_1.ivx + ipleft * 24 - 25]) - 8; + if (! bit_test(all_1.islur[commvl_1.ivx + ipleft * 24 - 25],20)) { #line 2717 "" - } else { + multl = (15 & all_1.mult[commvl_1.ivx + ipleft * 24 - 25]) - 8; #line 2718 "" - multl = 1; + } else { #line 2719 "" - } + multl = 1; #line 2720 "" - mub = multip - multl; + } #line 2721 "" - ipright = ip + 1; + mub = multip - multl; #line 2722 "" + ipright = ip + 1; +#line 2723 "" if (bit_test(all_1.irest[commvl_1.ivx + ipright * 24 - 25],0)) { -#line 2722 "" +#line 2723 "" ++ipright; -#line 2722 "" - } #line 2723 "" - if (! bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],20)) { + } #line 2724 "" - multr = (15 & all_1.mult[commvl_1.ivx + ipright * 24 - 25]) - 8; + if (! bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],20)) { #line 2725 "" - } else { + multr = (15 & all_1.mult[commvl_1.ivx + ipright * 24 - 25]) - 8; #line 2726 "" - multr = 1; + } else { #line 2727 "" - } + multr = 1; #line 2728 "" - mua = multr - multip; + } #line 2729 "" + mua = multr - multip; +#line 2730 "" if (mub > 0 || mua < 0) { /* Multiplicity has increased from left or will decrease to right. Need action. */ -#line 2733 "" - if (combjmp_1.isbjmp && commvl_1.ivx == combjmp_1.ivbj2) { #line 2734 "" - ivb = combjmp_1.ivbj1; + if (combjmp_1.isbjmp && commvl_1.ivx == combjmp_1.ivbj2) { #line 2735 "" + ivb = combjmp_1.ivbj1; +#line 2736 "" i__1 = 225 - *(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25]; -#line 2735 "" +#line 2736 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 2735 "" - *(unsigned char *)ulqq = *(unsigned char *)&ch__1[0]; #line 2736 "" - } else { + *(unsigned char *)ulqq = *(unsigned char *)&ch__1[0]; #line 2737 "" - ivb = commvl_1.ivx; + } else { #line 2738 "" + ivb = commvl_1.ivx; +#line 2739 "" *(unsigned char *)ulqq = *(unsigned char *)&all_1.ulq[ commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25]; -#line 2739 "" - } #line 2740 "" - if (mua >= 0) { + } #line 2741 "" + if (mua >= 0) { +#line 2742 "" ntrbbb_(&multip, "n", ulqq, &ivb, notexq, lnote, (ftnlen)1, ( ftnlen)1, (ftnlen)79); /* Test for next note being blank rest, assuming staff-crossing */ /* xtup chord */ -#line 2746 "" +#line 2747 "" } else if (multl >= multr && ! bit_test(all_1.islur[commvl_1.ivx + (ip + 1) * 24 - 25],29)) { -#line 2748 "" +#line 2749 "" i__1 = multr + 1; -#line 2748 "" - for (im = multip; im >= i__1; --im) { #line 2749 "" + for (im = multip; im >= i__1; --im) { +#line 2750 "" ntrbbb_(&im, "t", ulqq, &ivb, notexq, lnote, (ftnlen)1, ( ftnlen)1, (ftnlen)79); -#line 2750 "" +#line 2751 "" /* L1: */ -#line 2750 "" +#line 2751 "" } /* else */ /* Test for next note being blank rest, assuming staff-crossing */ /* xtup chord */ -#line 2755 "" +#line 2756 "" } else if (! bit_test(all_1.islur[commvl_1.ivx + (ip + 1) * 24 - 25],29)) { -#line 2756 "" +#line 2757 "" i__1 = multip; -#line 2756 "" - for (im = multr + 1; im <= i__1; ++im) { #line 2757 "" + for (im = multr + 1; im <= i__1; ++im) { +#line 2758 "" ntrbbb_(&im, "r", ulqq, &ivb, notexq, lnote, (ftnlen)1, ( ftnlen)1, (ftnlen)79); -#line 2758 "" +#line 2759 "" /* L2: */ -#line 2758 "" - } #line 2759 "" + } +#line 2760 "" ntrbbb_(&multr, "n", ulqq, &ivb, notexq, lnote, (ftnlen)1, ( ftnlen)1, (ftnlen)79); -#line 2760 "" - } #line 2761 "" + } +#line 2762 "" } else if (ip > 1) { /* Check for 2nd member of dotted xtup */ -#line 2765 "" +#line 2766 "" if (bit_test(all_1.nacc[commvl_1.ivx + (ip - 1) * 24 - 25],27)) { -#line 2765 "" +#line 2766 "" i__1 = multip + 1; -#line 2765 "" +#line 2766 "" ntrbbb_(&i__1, "t", all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25), &commvl_1.ivx, notexq, lnote, (ftnlen)1, (ftnlen)1, (ftnlen)79); -#line 2765 "" +#line 2766 "" } -#line 2767 "" - } #line 2768 "" + } +#line 2769 "" } /* Now put in the note */ -#line 2772 "" +#line 2773 "" if (*lnote > 0) { /* Writing concatenation */ -#line 2773 "" +#line 2774 "" i__2[0] = *lnote, a__1[0] = notexq; -#line 2773 "" +#line 2774 "" i__2[1] = 1, a__1[1] = all_1.sq; -#line 2773 "" +#line 2774 "" i__2[2] = 2, a__1[2] = "qb"; -#line 2773 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2774 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 2775 "" } else { /* Writing concatenation */ -#line 2775 "" +#line 2776 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2775 "" +#line 2776 "" i__3[1] = 2, a__2[1] = "qb"; -#line 2775 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2776 "" - } + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2777 "" - *lnote += 3; + } #line 2778 "" - isdotm = FALSE_; + *lnote += 3; #line 2779 "" + isdotm = FALSE_; +#line 2780 "" if (isdotted_(all_1.nodur, &commvl_1.ivx, &ip)) { /* rule out ')' */ -#line 2783 "" - if (! bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],13)) { #line 2784 "" + if (! bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],13)) { +#line 2785 "" if (! bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],3)) { /* Writing concatenation */ -#line 2785 "" +#line 2786 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2785 "" +#line 2786 "" i__3[1] = 1, a__2[1] = "p"; -#line 2785 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2786 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 2787 "" } else { /* Double dot */ /* Writing concatenation */ -#line 2790 "" +#line 2791 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2790 "" +#line 2791 "" i__3[1] = 2, a__2[1] = "pp"; -#line 2790 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2791 "" - ++(*lnote); + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2792 "" - } + ++(*lnote); #line 2793 "" + } +#line 2794 "" } else { /* Writing concatenation */ -#line 2794 "" +#line 2795 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2794 "" +#line 2795 "" i__3[1] = 1, a__2[1] = "m"; -#line 2794 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2795 "" - isdotm = TRUE_; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2796 "" - } + isdotm = TRUE_; #line 2797 "" - ++(*lnote); + } #line 2798 "" + ++(*lnote); +#line 2799 "" } else if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],19) || bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],27)) { /* Special dotted notation for 2:1 xtup, or normal dot in xtup */ /* Writing concatenation */ -#line 2803 "" +#line 2804 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2803 "" +#line 2804 "" i__3[1] = 1, a__2[1] = "p"; -#line 2803 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2804 "" - ++(*lnote); + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2805 "" + ++(*lnote); +#line 2806 "" } /* 5/25/08 Allow >12 */ -#line 2809 "" +#line 2810 "" if (! (combjmp_1.isbjmp && commvl_1.ivx == combjmp_1.ivbj2)) { /* call istring(mod(ivx,12),tempq,len) */ -#line 2811 "" +#line 2812 "" i__1 = commvl_1.ivx % 24; -#line 2811 "" - istring_(&i__1, tempq, &len, (ftnlen)4); #line 2812 "" + istring_(&i__1, tempq, &len, (ftnlen)4); +#line 2813 "" } else { /* call istring(mod(ivbj1,12),tempq,len) */ -#line 2814 "" +#line 2815 "" i__1 = combjmp_1.ivbj1 % 24; -#line 2814 "" - istring_(&i__1, tempq, &len, (ftnlen)4); #line 2815 "" + istring_(&i__1, tempq, &len, (ftnlen)4); +#line 2816 "" } /* Writing concatenation */ -#line 2816 "" +#line 2817 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2816 "" +#line 2817 "" i__3[1] = len, a__2[1] = tempq; -#line 2816 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2817 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 2818 "" *lnote += len; /* Writing concatenation */ -#line 2818 "" +#line 2819 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2818 "" +#line 2819 "" i__3[1] = lnoten, a__2[1] = noteq; -#line 2818 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2819 "" - *lnote += lnoten; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2820 "" - if (isdotm) { + *lnote += lnoten; #line 2821 "" + if (isdotm) { +#line 2822 "" if (lnoten == 2) { /* Writing concatenation */ -#line 2822 "" +#line 2823 "" i__6[0] = *lnote, a__3[0] = notexq; -#line 2822 "" +#line 2823 "" i__6[1] = 1, a__3[1] = "{"; -#line 2822 "" +#line 2823 "" i__6[2] = 1, a__3[2] = noteq + 1; -#line 2822 "" +#line 2823 "" i__6[3] = 1, a__3[3] = "}"; -#line 2822 "" - s_cat(notexq, a__3, i__6, &c__4, (ftnlen)79); #line 2823 "" - *lnote += 3; + s_cat(notexq, a__3, i__6, &c__4, (ftnlen)79); #line 2824 "" - } else { + *lnote += 3; #line 2825 "" + } else { +#line 2826 "" i__1 = lnoten - 2; /* Writing concatenation */ -#line 2825 "" +#line 2826 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2825 "" +#line 2826 "" i__3[1] = lnoten - 1 - i__1, a__2[1] = noteq + i__1; -#line 2825 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2826 "" - ++(*lnote); + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2827 "" - } + ++(*lnote); #line 2828 "" - } + } #line 2829 "" + } +#line 2830 "" return 0; } /* beamid_ */ @@ -7260,97 +7262,97 @@ L5: ; /* Fortran I/O blocks */ - static icilist io___198 = { 0, tempq, 0, "(f4.1)", 8, 1 }; static icilist io___199 = { 0, tempq, 0, "(f4.1)", 8, 1 }; - static cilist io___200 = { 0, 6, 0, 0, 0 }; + static icilist io___200 = { 0, tempq, 0, "(f4.1)", 8, 1 }; static cilist io___201 = { 0, 6, 0, 0, 0 }; + static cilist io___202 = { 0, 6, 0, 0, 0 }; -#line 2856 "" - gotnote = FALSE_; #line 2857 "" - lnoten = 0; + gotnote = FALSE_; #line 2858 "" - ip1 = all_1.ipo[all_1.jn - 1]; + lnoten = 0; #line 2859 "" - multip = (15 & all_1.mult[commvl_1.ivx + ip1 * 24 - 25]) - 8; + ip1 = all_1.ipo[all_1.jn - 1]; #line 2860 "" + multip = (15 & all_1.mult[commvl_1.ivx + ip1 * 24 - 25]) - 8; +#line 2861 "" if (! comdraw_1.drawbm[commvl_1.ivx - 1] && bit_test(all_1.irest[ commvl_1.ivx + ip1 * 24 - 25],0)) { -#line 2861 "" +#line 2862 "" *lnote = 0; /* The rest was already written in beamstrt, so just get out of here */ -#line 2865 "" - return 0; #line 2866 "" - } + return 0; #line 2867 "" + } +#line 2868 "" nole = all_1.nolev[commvl_1.ivx + all_1.ipo[all_1.jn - 1] * 24 - 25]; /* Check for special situations with 2nds (see precrd) */ -#line 2871 "" +#line 2872 "" if (bit_test(all_1.nacc[commvl_1.ivx + all_1.ipo[all_1.jn - 1] * 24 - 25], 30)) { -#line 2872 "" - --nole; #line 2873 "" + --nole; +#line 2874 "" } else if (bit_test(all_1.nacc[commvl_1.ivx + all_1.ipo[all_1.jn - 1] * 24 - 25],31)) { -#line 2874 "" - ++nole; #line 2875 "" - } + ++nole; #line 2876 "" + } +#line 2877 "" if (comxtup_1.vxtup[commvl_1.ivx - 1] && ! comdraw_1.drawbm[commvl_1.ivx - 1]) { /* Xtuplet with no beam, just put in the right kind of note */ -#line 2880 "" +#line 2881 "" if (bit_test(all_1.islur[commvl_1.ivx + ip1 * 24 - 25],30)) { /* Forced stem direction */ -#line 2884 "" - ndsav = all_1.nodur[commvl_1.ivx + ip1 * 24 - 25]; #line 2885 "" + ndsav = all_1.nodur[commvl_1.ivx + ip1 * 24 - 25]; +#line 2886 "" i__1 = 4 - multip; -#line 2885 "" - all_1.nodur[commvl_1.ivx + ip1 * 24 - 25] = pow_ii(&c__2, &i__1); #line 2886 "" + all_1.nodur[commvl_1.ivx + ip1 * 24 - 25] = pow_ii(&c__2, &i__1); +#line 2887 "" if (bit_test(all_1.nacc[commvl_1.ivx + ip1 * 24 - 25],19) || bit_test(all_1.nacc[commvl_1.ivx + ip1 * 24 - 25],27)) { -#line 2886 "" +#line 2887 "" all_1.nodur[commvl_1.ivx + ip1 * 24 - 25] = all_1.nodur[ commvl_1.ivx + ip1 * 24 - 25] * 3 / 2; -#line 2886 "" +#line 2887 "" } -#line 2888 "" - notex_(notexq, lnote, (ftnlen)79); #line 2889 "" - all_1.nodur[commvl_1.ivx + ip1 * 24 - 25] = ndsav; + notex_(notexq, lnote, (ftnlen)79); #line 2890 "" - } else { + all_1.nodur[commvl_1.ivx + ip1 * 24 - 25] = ndsav; #line 2891 "" + } else { +#line 2892 "" i__1 = ncmid_(&all_1.iv, &ip1); -#line 2891 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2892 "" - gotnote = TRUE_; + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2893 "" + gotnote = TRUE_; +#line 2894 "" if (lnoten == 1) { -#line 2893 "" +#line 2894 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 2893 "" - } #line 2894 "" - *lnote = 3; + } #line 2895 "" - if (multip <= 0) { + *lnote = 3; #line 2896 "" + if (multip <= 0) { +#line 2897 "" if (bit_test(all_1.irest[commvl_1.ivx + ip1 * 24 - 25],2) && all_1.nodur[commvl_1.ivx + (ip1 + 1) * 24 - 25] >= 32 || multip == -1) { @@ -7358,42 +7360,42 @@ L5: /* 1st note of unbeamed half-note trem; make open */ /* Writing concatenation */ -#line 2902 "" +#line 2903 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2902 "" +#line 2903 "" i__2[1] = 1, a__1[1] = "h"; -#line 2902 "" +#line 2903 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2902 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2903 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 2904 "" } else if (multip == -2) { /* Writing concatenation */ -#line 2904 "" +#line 2905 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2904 "" +#line 2905 "" i__3[1] = 2, a__2[1] = "wh"; -#line 2904 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2905 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 2906 "" } else { /* Writing concatenation */ -#line 2906 "" +#line 2907 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2906 "" +#line 2907 "" i__2[1] = 1, a__1[1] = "q"; -#line 2906 "" +#line 2907 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2906 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2907 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 2908 "" } /* Check for dot */ -#line 2911 "" +#line 2912 "" if (bit_test(all_1.irest[commvl_1.ivx + ip1 * 24 - 25],2) && ( r__1 = all_1.nodur[commvl_1.ivx + (ip1 + 1) * 24 - 25] / 12.f - all_1.nodur[commvl_1.ivx + (ip1 + 1) * 24 - @@ -7401,85 +7403,85 @@ L5: /* Need a dot. already called addblank for noteq */ -#line 2916 "" +#line 2917 "" if (*lnote == 0) { /* Writing concatenation */ -#line 2917 "" +#line 2918 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2917 "" +#line 2918 "" i__2[1] = 2, a__1[1] = "pt"; -#line 2917 "" +#line 2918 "" i__2[2] = lnoten, a__1[2] = noteq; -#line 2917 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2918 "" - *lnote = lnoten + 3; + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2919 "" + *lnote = lnoten + 3; +#line 2920 "" } else { /* Writing concatenation */ -#line 2920 "" +#line 2921 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 2920 "" +#line 2921 "" i__3[1] = 1, a__2[1] = "p"; -#line 2920 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2921 "" - ++(*lnote); + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2922 "" - } + ++(*lnote); #line 2923 "" + } +#line 2924 "" } /* Insert the stemlength calcs here for dotted, unbeamed. */ /* Later may combine with below to avoid repeat. */ -#line 2928 "" - if (bit_test(all_1.irest[commvl_1.ivx + ip1 * 24 - 25],2)) { #line 2929 "" + if (bit_test(all_1.irest[commvl_1.ivx + ip1 * 24 - 25],2)) { +#line 2930 "" nindent = igetbits_(&all_1.irest[commvl_1.ivx + ip1 * 24 - 25], &c__2, &c__5); -#line 2930 "" +#line 2931 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25] == 'u') { -#line 2931 "" +#line 2932 "" slen = (nindent + 4.5f + comxtup_1.nolev1[ commvl_1.ivx - 1] - nole - comxtup_1.islope[ commvl_1.ivx - 1] * .4f / all_1.slfac) * .6667f; -#line 2933 "" - } else { #line 2934 "" + } else { +#line 2935 "" slen = (nindent + 4.5f - comxtup_1.nolev1[ commvl_1.ivx - 1] + nole + comxtup_1.islope[ commvl_1.ivx - 1] * .4f / all_1.slfac) * .6667f; -#line 2936 "" - } -#line 2937 "" - s_wsfi(&io___198); #line 2937 "" + } +#line 2938 "" + s_wsfi(&io___199); +#line 2938 "" do_fio(&c__1, (char *)&slen, (ftnlen)sizeof(real)); -#line 2937 "" +#line 2938 "" e_wsfi(); /* Writing concatenation */ -#line 2938 "" +#line 2939 "" i__4[0] = 1, a__3[0] = all_1.sq; -#line 2938 "" +#line 2939 "" i__4[1] = 4, a__3[1] = "slx{"; -#line 2938 "" +#line 2939 "" i__4[2] = 4, a__3[2] = tempq; -#line 2938 "" +#line 2939 "" i__4[3] = 1, a__3[3] = "}"; -#line 2938 "" +#line 2939 "" i__4[4] = *lnote, a__3[4] = notexq; -#line 2938 "" +#line 2939 "" s_cat(notexq, a__3, i__4, &c__5, (ftnlen)79); -#line 2940 "" - *lnote += 10; #line 2941 "" - } + *lnote += 10; #line 2942 "" + } +#line 2943 "" } else if (bit_test(all_1.irest[commvl_1.ivx + ip1 * 24 - 25],2)) { @@ -7488,389 +7490,389 @@ L5: /* Stem length calcs here. The .2 factor is empirical, but */ /* slfac accounts for musicsize. */ -#line 2949 "" +#line 2950 "" nindent = igetbits_(&all_1.irest[commvl_1.ivx + ip1 * 24 - 25] , &c__2, &c__5); -#line 2950 "" +#line 2951 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25] == 'u') { -#line 2951 "" +#line 2952 "" slen = (nindent + 4.5f + comxtup_1.nolev1[commvl_1.ivx - 1] - nole - comxtup_1.islope[commvl_1.ivx - 1] * .4f / all_1.slfac) * .6667f; -#line 2953 "" - } else { #line 2954 "" + } else { +#line 2955 "" slen = (nindent + 4.5f - comxtup_1.nolev1[commvl_1.ivx - 1] + nole + comxtup_1.islope[commvl_1.ivx - 1] * .4f / all_1.slfac) * .6667f; -#line 2956 "" - } -#line 2957 "" - s_wsfi(&io___199); #line 2957 "" + } +#line 2958 "" + s_wsfi(&io___200); +#line 2958 "" do_fio(&c__1, (char *)&slen, (ftnlen)sizeof(real)); -#line 2957 "" +#line 2958 "" e_wsfi(); /* Writing concatenation */ -#line 2958 "" +#line 2959 "" i__5[0] = 1, a__4[0] = all_1.sq; -#line 2958 "" +#line 2959 "" i__5[1] = 4, a__4[1] = "slx{"; -#line 2958 "" +#line 2959 "" i__5[2] = 4, a__4[2] = tempq; -#line 2958 "" +#line 2959 "" i__5[3] = 1, a__4[3] = "}"; -#line 2958 "" +#line 2959 "" i__5[4] = 1, a__4[4] = all_1.sq; -#line 2958 "" +#line 2959 "" i__5[5] = 1, a__4[5] = "q"; -#line 2958 "" +#line 2959 "" i__5[6] = 1, a__4[6] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2958 "" +#line 2959 "" s_cat(notexq, a__4, i__5, &c__7, (ftnlen)79); -#line 2960 "" +#line 2961 "" *lnote = 13; /* Check for dotted 2-note trem; prepend dot to notexq if needed */ -#line 2964 "" +#line 2965 "" if (all_1.nodur[commvl_1.ivx + (ip1 + 1) * 24 - 25] == 12 || all_1.nodur[commvl_1.ivx + (ip1 + 1) * 24 - 25] == 24) { -#line 2966 "" +#line 2967 "" if (lnoten == 1) { /* Writing concatenation */ -#line 2967 "" +#line 2968 "" i__3[0] = 1, a__2[0] = " "; -#line 2967 "" +#line 2968 "" i__3[1] = 1, a__2[1] = noteq; -#line 2967 "" - s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 2968 "" - lnoten = 2; + s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 2969 "" + lnoten = 2; +#line 2970 "" } /* Writing concatenation */ -#line 2970 "" +#line 2971 "" i__6[0] = 1, a__5[0] = all_1.sq; -#line 2970 "" +#line 2971 "" i__6[1] = 2, a__5[1] = "pt"; -#line 2970 "" +#line 2971 "" i__6[2] = lnoten, a__5[2] = noteq; -#line 2970 "" +#line 2971 "" i__6[3] = *lnote, a__5[3] = notexq; -#line 2970 "" - s_cat(notexq, a__5, i__6, &c__4, (ftnlen)79); #line 2971 "" - *lnote = *lnote + 3 + lnoten; + s_cat(notexq, a__5, i__6, &c__4, (ftnlen)79); #line 2972 "" + *lnote = *lnote + 3 + lnoten; +#line 2973 "" i__1 = ncmid_(&all_1.iv, &ip1); -#line 2972 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2973 "" - gotnote = TRUE_; + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 2974 "" + gotnote = TRUE_; +#line 2975 "" if (lnoten == 1) { /* Writing concatenation */ -#line 2975 "" +#line 2976 "" i__3[0] = 1, a__2[0] = " "; -#line 2975 "" +#line 2976 "" i__3[1] = 1, a__2[1] = noteq; -#line 2975 "" - s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 2976 "" - lnoten = 2; + s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 2977 "" - } + lnoten = 2; #line 2978 "" - } + } #line 2979 "" + } +#line 2980 "" } else if (multip == -1) { /* Writing concatenation */ -#line 2980 "" +#line 2981 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2980 "" +#line 2981 "" i__2[1] = 1, a__1[1] = "h"; -#line 2980 "" +#line 2981 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2980 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2981 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 2982 "" } else if (multip == 1) { /* Writing concatenation */ -#line 2982 "" +#line 2983 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2982 "" +#line 2983 "" i__2[1] = 1, a__1[1] = "c"; -#line 2982 "" +#line 2983 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2982 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2983 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 2984 "" } else if (multip == 2) { /* Writing concatenation */ -#line 2984 "" +#line 2985 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2984 "" +#line 2985 "" i__2[1] = 2, a__1[1] = "cc"; -#line 2984 "" +#line 2985 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2984 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2985 "" - *lnote = 4; + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2986 "" + *lnote = 4; +#line 2987 "" } else if (multip == 3) { /* Writing concatenation */ -#line 2987 "" +#line 2988 "" i__2[0] = 1, a__1[0] = all_1.sq; -#line 2987 "" +#line 2988 "" i__2[1] = 3, a__1[1] = "ccc"; -#line 2987 "" +#line 2988 "" i__2[2] = 1, a__1[2] = all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25); -#line 2987 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2988 "" - *lnote = 5; + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 2989 "" + *lnote = 5; +#line 2990 "" } else if (multip == -2) { /* Writing concatenation */ -#line 2990 "" +#line 2991 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2990 "" +#line 2991 "" i__3[1] = 2, a__2[1] = "wh"; -#line 2990 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2991 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 2992 "" } else if (multip == -3) { /* Writing concatenation */ -#line 2992 "" +#line 2993 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 2992 "" +#line 2993 "" i__3[1] = 5, a__2[1] = "breve"; -#line 2992 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2993 "" - *lnote = 6; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 2994 "" - } else { -#line 2995 "" - s_wsle(&io___200); + *lnote = 6; #line 2995 "" - e_wsle(); + } else { #line 2996 "" s_wsle(&io___201); #line 2996 "" + e_wsle(); +#line 2997 "" + s_wsle(&io___202); +#line 2997 "" do_lio(&c__9, &c__1, "(Error in beamn1, send source to Dr. D"\ "on)", (ftnlen)41); -#line 2996 "" - e_wsle(); #line 2997 "" - stop1_(); + e_wsle(); #line 2998 "" - } + stop1_(); #line 2999 "" + } +#line 3000 "" if (bit_test(all_1.nacc[commvl_1.ivx + ip1 * 24 - 25],19) || bit_test(all_1.nacc[commvl_1.ivx + ip1 * 24 - 25],27)) { /* notexq = notexq(1:3)//'p' */ /* lnote = 4 */ /* Writing concatenation */ -#line 3002 "" +#line 3003 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 3002 "" +#line 3003 "" i__3[1] = 1, a__2[1] = "p"; -#line 3002 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3003 "" - ++(*lnote); + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3004 "" + ++(*lnote); +#line 3005 "" } /* Writing concatenation */ -#line 3005 "" +#line 3006 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 3005 "" +#line 3006 "" i__3[1] = 8, a__2[1] = noteq; -#line 3005 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3006 "" - *lnote += lnoten; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3007 "" - } + *lnote += lnoten; #line 3008 "" - return 0; + } #line 3009 "" + return 0; +#line 3010 "" } /* Check if mult. decreases from 1st note to 2nd */ -#line 3013 "" +#line 3014 "" if (all_1.ibm2[commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25] > ip1 || bit_test(all_1.islur[commvl_1.ivx + ip1 * 24 - 25],20)) { /* More than one note or single-note before a multiplicity-down-up "][" */ -#line 3018 "" - if (bit_test(all_1.islur[commvl_1.ivx + ip1 * 24 - 25],20)) { #line 3019 "" - multr = 1; + if (bit_test(all_1.islur[commvl_1.ivx + ip1 * 24 - 25],20)) { #line 3020 "" + multr = 1; +#line 3021 "" } else if (! bit_test(all_1.irest[commvl_1.ivx + (ip1 + 1) * 24 - 25], 0)) { -#line 3021 "" - multr = (15 & all_1.mult[commvl_1.ivx + (ip1 + 1) * 24 - 25]) - 8; #line 3022 "" - } else { + multr = (15 & all_1.mult[commvl_1.ivx + (ip1 + 1) * 24 - 25]) - 8; #line 3023 "" - multr = (15 & all_1.mult[commvl_1.ivx + (ip1 + 2) * 24 - 25]) - 8; + } else { #line 3024 "" - } + multr = (15 & all_1.mult[commvl_1.ivx + (ip1 + 2) * 24 - 25]) - 8; #line 3025 "" + } +#line 3026 "" *lnote = 0; /* Check if staff-jumper */ -#line 3029 "" - if (combjmp_1.isbjmp && combjmp_1.ivbj2 > 0) { #line 3030 "" - ivxp = combjmp_1.ivbj1; + if (combjmp_1.isbjmp && combjmp_1.ivbj2 > 0) { #line 3031 "" - } else { + ivxp = combjmp_1.ivbj1; #line 3032 "" - ivxp = commvl_1.ivx; + } else { #line 3033 "" - } + ivxp = commvl_1.ivx; #line 3034 "" - if (multr < multip) { + } #line 3035 "" + if (multr < multip) { +#line 3036 "" i__1 = multr + 1; -#line 3035 "" +#line 3036 "" for (im = multip; im >= i__1; --im) { /* Right-shifted 'termination' */ -#line 3039 "" +#line 3040 "" if (combjmp_1.isbjmp && combjmp_1.ivbj2 > 0) { /* Jump beam */ -#line 3043 "" +#line 3044 "" ntrbbb_(&im, "t", all_1.ulq + (ivxp + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25), &ivxp, notexq, lnote, (ftnlen)1, (ftnlen)1, (ftnlen)79); -#line 3045 "" +#line 3046 "" } else { /* Same staff */ -#line 3049 "" +#line 3050 "" ntrbbb_(&im, "r", all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25), &ivxp, notexq, lnote, (ftnlen)1, (ftnlen)1, (ftnlen)79); -#line 3050 "" - } #line 3051 "" + } +#line 3052 "" /* L1: */ -#line 3051 "" - } #line 3052 "" - } + } #line 3053 "" + } +#line 3054 "" } /* Check for beamed, dotted 2-note tremolo */ -#line 3057 "" +#line 3058 "" if (bit_test(all_1.irest[commvl_1.ivx + ip1 * 24 - 25],2) && (r__1 = all_1.nodur[commvl_1.ivx + (ip1 + 1) * 24 - 25] / 12.f - all_1.nodur[commvl_1.ivx + (ip1 + 1) * 24 - 25] / 12, dabs(r__1)) < .001f) { -#line 3059 "" +#line 3060 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 3059 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 3060 "" - gotnote = TRUE_; + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 3061 "" + gotnote = TRUE_; +#line 3062 "" if (lnoten == 1) { /* Writing concatenation */ -#line 3062 "" +#line 3063 "" i__3[0] = 1, a__2[0] = " "; -#line 3062 "" +#line 3063 "" i__3[1] = 1, a__2[1] = noteq; -#line 3062 "" - s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 3063 "" - lnoten = 2; + s_cat(noteq, a__2, i__3, &c__2, (ftnlen)8); #line 3064 "" - } + lnoten = 2; #line 3065 "" + } +#line 3066 "" } /* Put in the note, but check first for open-head beamed tremolo. */ -#line 3069 "" +#line 3070 "" if (bit_test(all_1.irest[commvl_1.ivx + ip1 * 24 - 25],2) && all_1.nodur[ commvl_1.ivx + (ip1 + 1) * 24 - 25] >= 32) { /* 2-note open head tremolo */ -#line 3073 "" +#line 3074 "" if (*lnote > 0) { /* Writing concatenation */ -#line 3074 "" +#line 3075 "" i__2[0] = *lnote, a__1[0] = notexq; -#line 3074 "" +#line 3075 "" i__2[1] = 1, a__1[1] = all_1.sq; -#line 3074 "" +#line 3075 "" i__2[2] = 2, a__1[2] = "hb"; -#line 3074 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 3075 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 3076 "" } else { /* Writing concatenation */ -#line 3076 "" +#line 3077 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 3076 "" +#line 3077 "" i__3[1] = 2, a__2[1] = "hb"; -#line 3076 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3077 "" - } + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3078 "" - } else { + } #line 3079 "" + } else { +#line 3080 "" if (*lnote > 0) { /* Writing concatenation */ -#line 3080 "" +#line 3081 "" i__2[0] = *lnote, a__1[0] = notexq; -#line 3080 "" +#line 3081 "" i__2[1] = 1, a__1[1] = all_1.sq; -#line 3080 "" +#line 3081 "" i__2[2] = 2, a__1[2] = "qb"; -#line 3080 "" - s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); #line 3081 "" + s_cat(notexq, a__1, i__2, &c__3, (ftnlen)79); +#line 3082 "" } else { /* Writing concatenation */ -#line 3082 "" +#line 3083 "" i__3[0] = 1, a__2[0] = all_1.sq; -#line 3082 "" +#line 3083 "" i__3[1] = 2, a__2[1] = "qb"; -#line 3082 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3083 "" - } + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3084 "" - } + } #line 3085 "" - *lnote += 3; + } #line 3086 "" + *lnote += 3; +#line 3087 "" if (bit_test(all_1.irest[commvl_1.ivx + ip1 * 24 - 25],2) && (all_1.nodur[ commvl_1.ivx + (ip1 + 1) * 24 - 25] == 24 || all_1.nodur[ commvl_1.ivx + (ip1 + 1) * 24 - 25] == 12 || all_1.nodur[ @@ -7879,177 +7881,177 @@ L5: /* 2-note trem on dotted note */ /* Writing concatenation */ -#line 3092 "" +#line 3093 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 3092 "" +#line 3093 "" i__3[1] = 1, a__2[1] = "p"; -#line 3092 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3093 "" - ++(*lnote); + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3094 "" + ++(*lnote); +#line 3095 "" } /* Check for dot */ -#line 3098 "" - isdotm = FALSE_; #line 3099 "" - if (! comxtup_1.vxtup[commvl_1.ivx - 1]) { + isdotm = FALSE_; #line 3100 "" - nd = all_1.nodur[commvl_1.ivx + all_1.ipo[all_1.jn - 1] * 24 - 25]; + if (! comxtup_1.vxtup[commvl_1.ivx - 1]) { #line 3101 "" - if (nd != 0) { + nd = all_1.nodur[commvl_1.ivx + all_1.ipo[all_1.jn - 1] * 24 - 25]; #line 3102 "" + if (nd != 0) { +#line 3103 "" i__1 = log2_(&nd); -#line 3102 "" - if (pow_ii(&c__2, &i__1) != nd) { #line 3103 "" - if (! bit_test(all_1.iornq[commvl_1.ivx + ip1 * 24 - 1],13)) { + if (pow_ii(&c__2, &i__1) != nd) { #line 3104 "" + if (! bit_test(all_1.iornq[commvl_1.ivx + ip1 * 24 - 1],13)) { +#line 3105 "" if (! bit_test(all_1.islur[commvl_1.ivx + ip1 * 24 - 25], 3)) { /* Writing concatenation */ -#line 3105 "" +#line 3106 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 3105 "" +#line 3106 "" i__3[1] = 1, a__2[1] = "p"; -#line 3105 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3106 "" + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); +#line 3107 "" } else { /* Double dot */ /* Writing concatenation */ -#line 3110 "" +#line 3111 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 3110 "" +#line 3111 "" i__3[1] = 2, a__2[1] = "pp"; -#line 3110 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3111 "" - ++(*lnote); + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3112 "" - } + ++(*lnote); #line 3113 "" + } +#line 3114 "" } else { /* Writing concatenation */ -#line 3114 "" +#line 3115 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 3114 "" +#line 3115 "" i__3[1] = 1, a__2[1] = "m"; -#line 3114 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3115 "" - isdotm = TRUE_; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3116 "" - } + isdotm = TRUE_; #line 3117 "" - ++(*lnote); + } #line 3118 "" - } + ++(*lnote); #line 3119 "" - } + } #line 3120 "" + } +#line 3121 "" } else if (bit_test(all_1.nacc[commvl_1.ivx + ip1 * 24 - 25],19) || bit_test(all_1.nacc[commvl_1.ivx + ip1 * 24 - 25],27)) { /* In an xtup with special 2:1 notation with a dot on 1st note, or normal dot */ /* Writing concatenation */ -#line 3125 "" +#line 3126 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 3125 "" +#line 3126 "" i__3[1] = 1, a__2[1] = "p"; -#line 3125 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3126 "" - ++(*lnote); + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3127 "" + ++(*lnote); +#line 3128 "" } /* Do the number; 0 if 12 */ /* 5/25/08 allow >12 */ -#line 3132 "" - if (! bit_test(all_1.irest[commvl_1.ivx + ip1 * 24 - 25],24)) { #line 3133 "" + if (! bit_test(all_1.irest[commvl_1.ivx + ip1 * 24 - 25],24)) { +#line 3134 "" i__1 = commvl_1.ivx % 24; -#line 3133 "" - istring_(&i__1, numq, &len, (ftnlen)8); #line 3134 "" + istring_(&i__1, numq, &len, (ftnlen)8); +#line 3135 "" } else { /* 1st note of staff-jumping beam */ -#line 3138 "" +#line 3139 "" i__1 = combjmp_1.ivbj1 % 24; -#line 3138 "" - istring_(&i__1, numq, &len, (ftnlen)8); #line 3139 "" + istring_(&i__1, numq, &len, (ftnlen)8); +#line 3140 "" } /* Writing concatenation */ -#line 3140 "" +#line 3141 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 3140 "" +#line 3141 "" i__3[1] = len, a__2[1] = numq; -#line 3140 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3141 "" - *lnote += len; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3142 "" - if (! gotnote) { + *lnote += len; #line 3143 "" + if (! gotnote) { +#line 3144 "" i__1 = ncmid_(&all_1.iv, &ip1); -#line 3143 "" - notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); #line 3144 "" + notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); +#line 3145 "" } /* Writing concatenation */ -#line 3145 "" +#line 3146 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 3145 "" +#line 3146 "" i__3[1] = lnoten, a__2[1] = noteq; -#line 3145 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3146 "" - *lnote += lnoten; + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3147 "" - if (isdotm) { + *lnote += lnoten; #line 3148 "" + if (isdotm) { +#line 3149 "" if (lnoten == 1) { /* Writing concatenation */ -#line 3149 "" +#line 3150 "" i__6[0] = *lnote, a__5[0] = notexq; -#line 3149 "" +#line 3150 "" i__6[1] = 1, a__5[1] = "{"; -#line 3149 "" +#line 3150 "" i__6[2] = 1, a__5[2] = noteq; -#line 3149 "" +#line 3150 "" i__6[3] = 1, a__5[3] = "}"; -#line 3149 "" - s_cat(notexq, a__5, i__6, &c__4, (ftnlen)79); #line 3150 "" - *lnote += 3; + s_cat(notexq, a__5, i__6, &c__4, (ftnlen)79); #line 3151 "" - } else { + *lnote += 3; #line 3152 "" + } else { +#line 3153 "" i__1 = lnoten - 2; /* Writing concatenation */ -#line 3152 "" +#line 3153 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 3152 "" +#line 3153 "" i__3[1] = lnoten - 1 - i__1, a__2[1] = noteq + i__1; -#line 3152 "" - s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3153 "" - ++(*lnote); + s_cat(notexq, a__2, i__3, &c__2, (ftnlen)79); #line 3154 "" - } + ++(*lnote); #line 3155 "" - } + } #line 3156 "" + } +#line 3157 "" return 0; } /* beamn1_ */ @@ -8119,44 +8121,44 @@ L5: static integer nindent, maxdrop, numinit; /* Fortran I/O blocks */ - static icilist io___222 = { 0, noteq, 0, "(i1)", 8, 1 }; - static icilist io___224 = { 0, noteq, 0, "(a1,i2,a1)", 8, 1 }; - static icilist io___225 = { 0, noteq, 0, "(i1,a1)", 8, 1 }; - static icilist io___226 = { 0, noteq, 0, "(a1,i2,a2)", 8, 1 }; - static icilist io___242 = { 0, tempq, 0, "(i2)", 2, 1 }; + static icilist io___223 = { 0, noteq, 0, "(i1)", 8, 1 }; + static icilist io___225 = { 0, noteq, 0, "(a1,i2,a1)", 8, 1 }; + static icilist io___226 = { 0, noteq, 0, "(i1,a1)", 8, 1 }; + static icilist io___227 = { 0, noteq, 0, "(a1,i2,a2)", 8, 1 }; + static icilist io___243 = { 0, tempq, 0, "(i2)", 2, 1 }; /* The following is just to save the outputs from SetupB for the case of */ /* xtups starting with a rest, where beamstrt is called twice. */ -#line 3208 "" +#line 3209 "" /* Parameter adjustments */ -#line 3208 "" +#line 3209 "" --squez; -#line 3208 "" +#line 3209 "" --space; -#line 3208 "" +#line 3209 "" ihornb -= 25; -#line 3208 "" +#line 3209 "" --nornb; -#line 3208 "" +#line 3209 "" -#line 3208 "" +#line 3209 "" /* Function Body */ -#line 3208 "" - writebrests = TRUE_; #line 3209 "" - ibc = all_1.ibmcnt[commvl_1.ivx - 1]; + writebrests = TRUE_; #line 3210 "" - ipb1 = all_1.ibm1[commvl_1.ivx + ibc * 24 - 25]; + ibc = all_1.ibmcnt[commvl_1.ivx - 1]; #line 3211 "" - multb = (15 & all_1.mult[commvl_1.ivx + ipb1 * 24 - 25]) - 8; + ipb1 = all_1.ibm1[commvl_1.ivx + ibc * 24 - 25]; #line 3212 "" - ip = all_1.ipo[all_1.jn - 1]; + multb = (15 & all_1.mult[commvl_1.ivx + ipb1 * 24 - 25]) - 8; #line 3213 "" - *lnote = 0; + ip = all_1.ipo[all_1.jn - 1]; #line 3214 "" + *lnote = 0; +#line 3215 "" nvtrem = 0; /* Compute slopes and note offsets from start of beam. Inside SetupB, for each */ @@ -8164,14 +8166,14 @@ L5: /* gets islope(ivx), transferred in common. */ /* Vertical adjustment beams for tremolo */ -#line 3220 "" +#line 3221 "" if (strtmid_1.ixrest[commvl_1.ivx - 1] == 0 && ! bit_test(all_1.nacc[ commvl_1.ivx + ip * 24 - 25],21)) { -#line 3220 "" +#line 3221 "" setupb_(comxtup_1.xelsk, &comipb_1.nnb, &comipb_1.sumx, & comipb_1.sumy, comipb_1.ipb, &comipb_1.smed, & strtmid_1.ixrest[commvl_1.ivx - 1]); -#line 3220 "" +#line 3221 "" } /* Will always come past here after entering beamstrt for 2-note tremolo, and */ @@ -8180,213 +8182,213 @@ L5: /* string, under the tacet assumption that there is no horizontal shift */ /* enacted by the action just before and after the call to beamstrt. */ -#line 3229 "" +#line 3230 "" if (bit_test(all_1.irest[commvl_1.ivx + ipb1 * 24 - 25],2) && igetbits_(& all_1.irest[commvl_1.ivx + ipb1 * 24 - 25], &c__2, &c__5) > 0) { -#line 3231 "" +#line 3232 "" nindent = igetbits_(&all_1.irest[commvl_1.ivx + ipb1 * 24 - 25], & c__2, &c__5); /* Writing concatenation */ -#line 3232 "" +#line 3233 "" i__1[0] = 1, a__1[0] = all_1.sq; -#line 3232 "" +#line 3233 "" i__1[1] = 12, a__1[1] = "roffset{.7}{"; -#line 3232 "" +#line 3233 "" i__1[2] = 1, a__1[2] = all_1.sq; -#line 3232 "" +#line 3233 "" i__1[3] = 2, a__1[3] = "ib"; -#line 3232 "" - s_cat(tempq, a__1, i__1, &c__4, (ftnlen)79); #line 3233 "" - ltemp = 16; + s_cat(tempq, a__1, i__1, &c__4, (ftnlen)79); #line 3234 "" + ltemp = 16; +#line 3235 "" if (nindent == 2) { /* Writing concatenation */ -#line 3235 "" +#line 3236 "" i__2[0] = 16, a__2[0] = tempq; -#line 3235 "" +#line 3236 "" i__2[1] = 1, a__2[1] = "b"; -#line 3235 "" - s_cat(tempq, a__2, i__2, &c__2, (ftnlen)79); #line 3236 "" - ltemp = 17; + s_cat(tempq, a__2, i__2, &c__2, (ftnlen)79); #line 3237 "" + ltemp = 17; +#line 3238 "" } else if (nindent == 3) { /* Writing concatenation */ -#line 3238 "" +#line 3239 "" i__2[0] = 16, a__2[0] = tempq; -#line 3238 "" +#line 3239 "" i__2[1] = 2, a__2[1] = "bb"; -#line 3238 "" - s_cat(tempq, a__2, i__2, &c__2, (ftnlen)79); #line 3239 "" - ltemp = 18; + s_cat(tempq, a__2, i__2, &c__2, (ftnlen)79); #line 3240 "" + ltemp = 18; +#line 3241 "" } /* Use beam # 0 for indented beams */ /* Writing concatenation */ -#line 3244 "" +#line 3245 "" i__3[0] = ltemp, a__3[0] = tempq; -#line 3244 "" +#line 3245 "" i__3[1] = 1, a__3[1] = all_1.ulq + (commvl_1.ivx + ibc * 24 - 25); -#line 3244 "" +#line 3245 "" i__3[2] = 1, a__3[2] = "0"; -#line 3244 "" - s_cat(tempq, a__3, i__3, &c__3, (ftnlen)79); #line 3245 "" + s_cat(tempq, a__3, i__3, &c__3, (ftnlen)79); +#line 3246 "" ltemp += 2; /* Get adjustment to nolev1 for main beam based on nindent */ -#line 3249 "" +#line 3250 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + ibc * 24 - 25] == 'u') { -#line 3250 "" - nvtrem = nindent - 1; #line 3251 "" - } else { + nvtrem = nindent - 1; #line 3252 "" - nvtrem = 1 - nindent; + } else { #line 3253 "" + nvtrem = 1 - nindent; +#line 3254 "" } /* Get numerical position of initiation for main beam. Will adjust height at */ /* closing to account for nindent */ -#line 3258 "" +#line 3259 "" numinit = comxtup_1.nolev1[commvl_1.ivx - 1] - ncmid_(&all_1.iv, & ipb1) + 4; /* Get forced beam height tweak, apply here for indented beams */ -#line 3262 "" +#line 3263 "" iadj = igetbits_(&all_1.ipl[commvl_1.ivx + ipb1 * 24 - 25], &c__6, & c__11) - 30; -#line 3263 "" +#line 3264 "" if (iadj != -30) { -#line 3263 "" +#line 3264 "" numinit += iadj; -#line 3263 "" - } #line 3264 "" - if (numinit >= 0 && numinit <= 9) { -#line 3265 "" - s_wsfi(&io___222); + } #line 3265 "" + if (numinit >= 0 && numinit <= 9) { +#line 3266 "" + s_wsfi(&io___223); +#line 3266 "" do_fio(&c__1, (char *)&numinit, (ftnlen)sizeof(integer)); -#line 3265 "" - e_wsfi(); #line 3266 "" - lnoten = 1; + e_wsfi(); #line 3267 "" - } else { -#line 3268 "" - s_wsfi(&io___224); + lnoten = 1; #line 3268 "" + } else { +#line 3269 "" + s_wsfi(&io___225); +#line 3269 "" do_fio(&c__1, "{", (ftnlen)1); -#line 3268 "" +#line 3269 "" do_fio(&c__1, (char *)&numinit, (ftnlen)sizeof(integer)); -#line 3268 "" +#line 3269 "" do_fio(&c__1, "}", (ftnlen)1); -#line 3268 "" - e_wsfi(); #line 3269 "" - lnoten = 4; + e_wsfi(); #line 3270 "" - } -/* Writing concatenation */ + lnoten = 4; #line 3271 "" + } +/* Writing concatenation */ +#line 3272 "" i__2[0] = ltemp, a__2[0] = tempq; -#line 3271 "" +#line 3272 "" i__2[1] = lnoten, a__2[1] = noteq; -#line 3271 "" - s_cat(tempq, a__2, i__2, &c__2, (ftnlen)79); #line 3272 "" + s_cat(tempq, a__2, i__2, &c__2, (ftnlen)79); +#line 3273 "" ltemp += lnoten; /* Now do the slope. */ /* 170408 Baseline is in islope(ivx). Apply slope tweak if present. */ -#line 3277 "" - numinit = comxtup_1.islope[commvl_1.ivx - 1]; #line 3278 "" + numinit = comxtup_1.islope[commvl_1.ivx - 1]; +#line 3279 "" iadj = igetbits_(&all_1.ipl[commvl_1.ivx + ipb1 * 24 - 25], &c__6, & c__17) - 30; -#line 3279 "" +#line 3280 "" if (iadj != -30) { -#line 3279 "" +#line 3280 "" numinit += iadj; -#line 3279 "" - } #line 3280 "" - if (numinit >= 0 && numinit <= 9) { -#line 3281 "" - s_wsfi(&io___225); + } #line 3281 "" + if (numinit >= 0 && numinit <= 9) { +#line 3282 "" + s_wsfi(&io___226); +#line 3282 "" do_fio(&c__1, (char *)&numinit, (ftnlen)sizeof(integer)); -#line 3281 "" +#line 3282 "" do_fio(&c__1, "}", (ftnlen)1); -#line 3281 "" - e_wsfi(); #line 3282 "" - lnoten = 2; + e_wsfi(); #line 3283 "" - } else { -#line 3284 "" - s_wsfi(&io___226); + lnoten = 2; #line 3284 "" + } else { +#line 3285 "" + s_wsfi(&io___227); +#line 3285 "" do_fio(&c__1, "{", (ftnlen)1); -#line 3284 "" +#line 3285 "" do_fio(&c__1, (char *)&numinit, (ftnlen)sizeof(integer)); -#line 3284 "" +#line 3285 "" do_fio(&c__1, "}}", (ftnlen)2); -#line 3284 "" - e_wsfi(); #line 3285 "" - lnoten = 5; + e_wsfi(); #line 3286 "" + lnoten = 5; +#line 3287 "" } /* Writing concatenation */ -#line 3287 "" +#line 3288 "" i__2[0] = ltemp, a__2[0] = tempq; -#line 3287 "" +#line 3288 "" i__2[1] = lnoten, a__2[1] = noteq; -#line 3287 "" - s_cat(tempq, a__2, i__2, &c__2, (ftnlen)79); #line 3288 "" - ltemp += lnoten; + s_cat(tempq, a__2, i__2, &c__2, (ftnlen)79); #line 3289 "" - s_copy(notexq, tempq, (ftnlen)79, (ftnlen)79); + ltemp += lnoten; #line 3290 "" - *lnote = ltemp; + s_copy(notexq, tempq, (ftnlen)79, (ftnlen)79); #line 3291 "" - } + *lnote = ltemp; #line 3292 "" + } +#line 3293 "" if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],21)) { /* This is start of later segment of single-slope beam group so use slope and */ /* height from prior beam. Slope is already OK. */ -#line 3297 "" - ++comxtup_1.issb[commvl_1.ivx - 1]; #line 3298 "" + ++comxtup_1.issb[commvl_1.ivx - 1]; +#line 3299 "" comxtup_1.nolev1[commvl_1.ivx - 1] = comxtup_1.lev1ssb[commvl_1.ivx + comxtup_1.issb[commvl_1.ivx - 1] * 24 - 25]; -#line 3299 "" +#line 3300 "" } /* Move this up to before indented beams for tremolo */ /* lnote = 0 */ -#line 3303 "" - comdraw_1.drawbm[commvl_1.ivx - 1] = TRUE_; #line 3304 "" + comdraw_1.drawbm[commvl_1.ivx - 1] = TRUE_; +#line 3305 "" if (bit_test(all_1.irest[commvl_1.ivx + ipb1 * 24 - 25],28) && strtmid_1.ixrest[commvl_1.ivx - 1] != 2) { -#line 3305 "" - comxtup_1.vxtup[commvl_1.ivx - 1] = TRUE_; #line 3306 "" + comxtup_1.vxtup[commvl_1.ivx - 1] = TRUE_; +#line 3307 "" ++comxtup_1.nxtinbm[commvl_1.ivx - 1]; /* irest(28)=>Xtup starts on this note. Set up for xtuplet. */ @@ -8401,169 +8403,169 @@ L5: /* iflop 0 1 -1 0 ...direction of flop */ /* iup -1 1 -1 1 ...direction of number and bracket */ -#line 3320 "" - iud = 1; #line 3321 "" + iud = 1; +#line 3322 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + ibc * 24 - 25] == 'u') { -#line 3321 "" +#line 3322 "" iud = -1; -#line 3321 "" +#line 3322 "" } /* Get ip#, note level of middle note (or gap) in xtup */ -#line 3325 "" +#line 3326 "" ipmid = ipb1 + comxtup_1.ntupv[commvl_1.ivx + comxtup_1.nxtinbm[ commvl_1.ivx - 1] * 24 - 25] / 2; /* 130129 If middle note is a rest, go to next note. Note last note cannot */ /* be a rest */ -#line 3330 "" -L14: #line 3331 "" - if (bit_test(all_1.irest[commvl_1.ivx + ipmid * 24 - 25],0)) { +L14: #line 3332 "" - ++ipmid; + if (bit_test(all_1.irest[commvl_1.ivx + ipmid * 24 - 25],0)) { #line 3333 "" - goto L14; + ++ipmid; #line 3334 "" - } + goto L14; #line 3335 "" + } +#line 3336 "" i__4 = ncmid_(&all_1.iv, &ipmid); -#line 3335 "" +#line 3336 "" i__5 = (15 & all_1.mult[commvl_1.ivx + ipmid * 24 - 25]) - 8; -#line 3335 "" +#line 3336 "" xnlmid = (real) levrn_(&all_1.nolev[commvl_1.ivx + ipmid * 24 - 25], & all_1.irest[commvl_1.ivx + ipmid * 24 - 25], &iud, &i__4, & i__5); -#line 3337 "" +#line 3338 "" if (comxtup_1.ntupv[commvl_1.ivx + comxtup_1.nxtinbm[commvl_1.ivx - 1] * 24 - 25] % 2 == 0) { -#line 3337 "" +#line 3338 "" i__5 = ipmid - 1; -#line 3337 "" +#line 3338 "" i__4 = ncmid_(&all_1.iv, &i__5); -#line 3337 "" +#line 3338 "" i__6 = (15 & all_1.mult[commvl_1.ivx + (ipmid - 1) * 24 - 25]) - 8; -#line 3337 "" +#line 3338 "" xnlmid = (xnlmid + levrn_(&all_1.nolev[commvl_1.ivx + (ipmid - 1) * 24 - 25], &all_1.irest[commvl_1.ivx + (ipmid - 1) * 24 - 25], &iud, &i__4, &i__6)) / 2; -#line 3337 "" +#line 3338 "" } -#line 3340 "" - iflop = 0; #line 3341 "" + iflop = 0; +#line 3342 "" if ((r__1 = xnlmid - ncmid_(&all_1.iv, &ipb1), dabs(r__1)) < 3.f) { -#line 3341 "" +#line 3342 "" iflop = -iud; -#line 3341 "" - } #line 3342 "" - iup = iud + (iflop << 1); + } #line 3343 "" + iup = iud + (iflop << 1); +#line 3344 "" if (bit_test(all_1.irest[commvl_1.ivx + ipb1 * 24 - 25],14)) { /* Alter iud, iflop, iup to flip number/bracket. (Stare at above pic) */ -#line 3347 "" - iup = -iup; #line 3348 "" - iflop = 0; + iup = -iup; #line 3349 "" + iflop = 0; +#line 3350 "" if (iud * iup < 0) { -#line 3349 "" +#line 3350 "" iflop = iup; -#line 3349 "" - } #line 3350 "" + } +#line 3351 "" } /* Determine if a beam is to be drawn. */ /* Had problem w/ half-note 2-note xtups always F, so add a test */ -#line 3355 "" +#line 3356 "" if (igetbits_(&all_1.irest[commvl_1.ivx + ipb1 * 24 - 25], &c__2, & c__3) != 0) { -#line 3356 "" - comdraw_1.drawbm[commvl_1.ivx - 1] = TRUE_; #line 3357 "" - goto L6; + comdraw_1.drawbm[commvl_1.ivx - 1] = TRUE_; #line 3358 "" - } + goto L6; #line 3359 "" + } +#line 3360 "" i__4 = all_1.ibm2[commvl_1.ivx + ibc * 24 - 25]; -#line 3359 "" +#line 3360 "" for (ipp = all_1.ibm1[commvl_1.ivx + ibc * 24 - 25]; ipp <= i__4; ++ipp) { -#line 3360 "" - if ((15 & all_1.mult[commvl_1.ivx + ipp * 24 - 25]) - 8 <= 0) { #line 3361 "" - comdraw_1.drawbm[commvl_1.ivx - 1] = FALSE_; + if ((15 & all_1.mult[commvl_1.ivx + ipp * 24 - 25]) - 8 <= 0) { #line 3362 "" - goto L6; + comdraw_1.drawbm[commvl_1.ivx - 1] = FALSE_; #line 3363 "" - } + goto L6; #line 3364 "" + } +#line 3365 "" /* L5: */ -#line 3364 "" - } #line 3365 "" + } +#line 3366 "" comdraw_1.drawbm[commvl_1.ivx - 1] = ! bit_test(all_1.islur[ commvl_1.ivx + all_1.ibm1[commvl_1.ivx + ibc * 24 - 25] * 24 - 25],18); -#line 3366 "" +#line 3367 "" L6: /* Are we using tuplet.tex? */ -#line 3370 "" +#line 3371 "" usexnumt = comnvst_1.cstuplet && ! comdraw_1.drawbm[commvl_1.ivx - 1]; /* Check for single note xtup 171217 */ -#line 3374 "" +#line 3375 "" if (bit_test(all_1.irest[commvl_1.ivx + ipb1 * 24 - 25],28) && comipb_1.nnb == 1) { -#line 3375 "" - comdraw_1.drawbm[commvl_1.ivx - 1] = FALSE_; #line 3376 "" + comdraw_1.drawbm[commvl_1.ivx - 1] = FALSE_; +#line 3377 "" } /* Place xtup number if needed */ -#line 3380 "" +#line 3381 "" if (! bit_test(all_1.islur[commvl_1.ivx + ipb1 * 24 - 25],31) || multb <= 0) { -#line 3381 "" +#line 3382 "" mprint = igetbits_(&all_1.nacc[commvl_1.ivx + ip * 24 - 25], & c__5, &c__22); -#line 3382 "" +#line 3383 "" if (mprint == 0) { -#line 3382 "" +#line 3383 "" mprint = comxtup_1.mtupv[commvl_1.ivx + comxtup_1.nxtinbm[ commvl_1.ivx - 1] * 24 - 25]; -#line 3382 "" +#line 3383 "" } /* Stab in the dark! Note: tried setting unbeam flag islur18 but no go. */ -#line 3384 "" - if (comipb_1.nnb == 1) { #line 3385 "" - xnlmid = (real) comxtup_1.nolev1[commvl_1.ivx - 1]; + if (comipb_1.nnb == 1) { #line 3386 "" + xnlmid = (real) comxtup_1.nolev1[commvl_1.ivx - 1]; +#line 3387 "" comxtup_1.islope[commvl_1.ivx - 1] = 0; /* Move up, outside number check block, so all 1-note xtups ar unbeamed */ /* drawbm(ivx) = .false. */ -#line 3391 "" - } #line 3392 "" + } +#line 3393 "" i__4 = ncmid_(&all_1.iv, &ipb1); -#line 3392 "" +#line 3393 "" putxtn_(&mprint, &iflop, &multb, &iud, &comask_1.wheadpt, & comask_1.poenom, &comxtup_1.nolev1[commvl_1.ivx - 1], & comxtup_1.islope[commvl_1.ivx - 1], &all_1.slfac, &xnlmid, @@ -8572,329 +8574,329 @@ L6: comxtup_1.nxtinbm[commvl_1.ivx - 1] * 24 - 25], &iup, & all_1.irest[commvl_1.ivx + ipb1 * 24 - 25], &all_1.mult[ commvl_1.ivx + ipb1 * 24 - 25], &usexnumt, (ftnlen)79); -#line 3396 "" - } #line 3397 "" + } +#line 3398 "" if (! comdraw_1.drawbm[commvl_1.ivx - 1]) { /* Xtuplet with no beam */ -#line 3401 "" +#line 3402 "" if (! bit_test(all_1.islur[commvl_1.ivx + ipb1 * 24 - 25],31)) { /* Number printing has not been suppressed, so put in the bracket. */ /* scale = stretch factor for bracket if there are asx's */ /* xnsk = length of the bracket in \noteskips = (\elemskips)/(eon) */ -#line 3407 "" +#line 3408 "" r__1 = space[*ib] / squez[*ib]; -#line 3407 "" +#line 3408 "" xnsk = (comeskz2_1.eskz2[commvl_1.ivx + (ipb1 + comxtup_1.ntupv[commvl_1.ivx + comxtup_1.nxtinbm[ commvl_1.ivx - 1] * 24 - 25] - 1) * 24 - 25] - comeskz2_1.eskz2[commvl_1.ivx + ipb1 * 24 - 25]) / squez[*ib] / feon_(&r__1); -#line 3409 "" - if (iup == 1) { #line 3410 "" + if (iup == 1) { +#line 3411 "" if (*lnote > 0) { /* Writing concatenation */ -#line 3411 "" +#line 3412 "" i__3[0] = *lnote, a__3[0] = notexq; -#line 3411 "" +#line 3412 "" i__3[1] = 1, a__3[1] = all_1.sq; -#line 3411 "" +#line 3412 "" i__3[2] = 5, a__3[2] = "ovbkt"; -#line 3411 "" - s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3412 "" + s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); +#line 3413 "" } else { /* Writing concatenation */ -#line 3413 "" +#line 3414 "" i__2[0] = 1, a__2[0] = all_1.sq; -#line 3413 "" +#line 3414 "" i__2[1] = 5, a__2[1] = "ovbkt"; -#line 3413 "" - s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3414 "" - } + s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3415 "" - } else { + } #line 3416 "" + } else { +#line 3417 "" if (*lnote > 0) { /* Writing concatenation */ -#line 3417 "" +#line 3418 "" i__3[0] = *lnote, a__3[0] = notexq; -#line 3417 "" +#line 3418 "" i__3[1] = 1, a__3[1] = all_1.sq; -#line 3417 "" +#line 3418 "" i__3[2] = 5, a__3[2] = "unbkt"; -#line 3417 "" - s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3418 "" + s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); +#line 3419 "" } else { /* Introduced 12/5/98, req'd due to possible presence of in-line TeX */ /* Writing concatenation */ -#line 3422 "" +#line 3423 "" i__2[0] = 1, a__2[0] = all_1.sq; -#line 3422 "" +#line 3423 "" i__2[1] = 5, a__2[1] = "unbkt"; -#line 3422 "" - s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3423 "" - } + s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3424 "" - } + } #line 3425 "" - *lnote += 6; + } #line 3426 "" - if (all_1.iline == 1) { + *lnote += 6; #line 3427 "" - comipb_1.smed /= 1.f - comtop_1.fracindent; + if (all_1.iline == 1) { #line 3428 "" - } + comipb_1.smed /= 1.f - comtop_1.fracindent; #line 3429 "" - xslope = comipb_1.smed * 1.8f * all_1.slfac; + } #line 3430 "" - comxtup_1.islope[commvl_1.ivx - 1] = i_nint(&xslope); + xslope = comipb_1.smed * 1.8f * all_1.slfac; #line 3431 "" + comxtup_1.islope[commvl_1.ivx - 1] = i_nint(&xslope); +#line 3432 "" r__1 = comipb_1.smed * comxtup_1.eloff[commvl_1.ivx - 1]; -#line 3431 "" - comxtup_1.nolev1[commvl_1.ivx - 1] = nlnum - i_nint(&r__1); #line 3432 "" + comxtup_1.nolev1[commvl_1.ivx - 1] = nlnum - i_nint(&r__1); +#line 3433 "" if (comxtup_1.islope[commvl_1.ivx - 1] == 0) { -#line 3432 "" +#line 3433 "" --comxtup_1.nolev1[commvl_1.ivx - 1]; -#line 3432 "" - } #line 3433 "" + } +#line 3434 "" if (iup == 1) { -#line 3433 "" +#line 3434 "" comxtup_1.nolev1[commvl_1.ivx - 1] += 4; -#line 3433 "" - } #line 3434 "" - levbracket = comxtup_1.nolev1[commvl_1.ivx - 1]; + } #line 3435 "" + levbracket = comxtup_1.nolev1[commvl_1.ivx - 1]; +#line 3436 "" if (iup == 1 && comnvst_1.cstuplet) { -#line 3435 "" +#line 3436 "" --levbracket; -#line 3435 "" - } #line 3436 "" + } +#line 3437 "" i__4 = ncmid_(&all_1.iv, &ipb1); -#line 3436 "" - notefq_(noteq, &lnoten, &levbracket, &i__4, (ftnlen)8); #line 3437 "" + notefq_(noteq, &lnoten, &levbracket, &i__4, (ftnlen)8); +#line 3438 "" if (lnoten == 1) { -#line 3437 "" +#line 3438 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 3437 "" +#line 3438 "" } /* Writing concatenation */ -#line 3438 "" +#line 3439 "" i__3[0] = *lnote, a__3[0] = notexq; -#line 3438 "" +#line 3439 "" i__3[1] = lnoten, a__3[1] = noteq; -#line 3438 "" +#line 3439 "" i__3[2] = 1, a__3[2] = "{"; -#line 3438 "" - s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3439 "" - *lnote = *lnote + lnoten + 1; + s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3440 "" - if (xnsk < .995f) { + *lnote = *lnote + lnoten + 1; #line 3441 "" + if (xnsk < .995f) { +#line 3442 "" i__4 = *lnote; -#line 3441 "" +#line 3442 "" ici__1.icierr = 0; -#line 3441 "" +#line 3442 "" ici__1.icirnum = 1; -#line 3441 "" +#line 3442 "" ici__1.icirlen = *lnote + 4 - i__4; -#line 3441 "" +#line 3442 "" ici__1.iciunit = notexq + i__4; -#line 3441 "" +#line 3442 "" ici__1.icifmt = "(i1,f3.2)"; -#line 3441 "" +#line 3442 "" s_wsfi(&ici__1); -#line 3441 "" +#line 3442 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 3441 "" +#line 3442 "" do_fio(&c__1, (char *)&xnsk, (ftnlen)sizeof(real)); -#line 3441 "" - e_wsfi(); #line 3442 "" - *lnote += 4; + e_wsfi(); #line 3443 "" - } else if (xnsk < 9.995f) { + *lnote += 4; #line 3444 "" + } else if (xnsk < 9.995f) { +#line 3445 "" i__4 = *lnote; -#line 3444 "" +#line 3445 "" ici__1.icierr = 0; -#line 3444 "" +#line 3445 "" ici__1.icirnum = 1; -#line 3444 "" +#line 3445 "" ici__1.icirlen = *lnote + 4 - i__4; -#line 3444 "" +#line 3445 "" ici__1.iciunit = notexq + i__4; -#line 3444 "" +#line 3445 "" ici__1.icifmt = "(f4.2)"; -#line 3444 "" +#line 3445 "" s_wsfi(&ici__1); -#line 3444 "" +#line 3445 "" do_fio(&c__1, (char *)&xnsk, (ftnlen)sizeof(real)); -#line 3444 "" - e_wsfi(); #line 3445 "" - *lnote += 4; + e_wsfi(); #line 3446 "" - } else { + *lnote += 4; #line 3447 "" + } else { +#line 3448 "" i__4 = *lnote; -#line 3447 "" +#line 3448 "" ici__1.icierr = 0; -#line 3447 "" +#line 3448 "" ici__1.icirnum = 1; -#line 3447 "" +#line 3448 "" ici__1.icirlen = *lnote + 5 - i__4; -#line 3447 "" +#line 3448 "" ici__1.iciunit = notexq + i__4; -#line 3447 "" +#line 3448 "" ici__1.icifmt = "(f5.2)"; -#line 3447 "" +#line 3448 "" s_wsfi(&ici__1); -#line 3447 "" +#line 3448 "" do_fio(&c__1, (char *)&xnsk, (ftnlen)sizeof(real)); -#line 3447 "" - e_wsfi(); #line 3448 "" - *lnote += 5; + e_wsfi(); #line 3449 "" + *lnote += 5; +#line 3450 "" } /* Writing concatenation */ -#line 3450 "" +#line 3451 "" i__2[0] = *lnote, a__2[0] = notexq; -#line 3450 "" +#line 3451 "" i__2[1] = 1, a__2[1] = "}"; -#line 3450 "" - s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3451 "" - ++(*lnote); + s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3452 "" + ++(*lnote); +#line 3453 "" if (bit_test(all_1.mult[commvl_1.ivx + ipb1 * 24 - 25],4)) { /* Tweak slope of bracket */ -#line 3456 "" +#line 3457 "" comxtup_1.islope[commvl_1.ivx - 1] = comxtup_1.islope[ commvl_1.ivx - 1] + igetbits_(&all_1.mult[ commvl_1.ivx + ipb1 * 24 - 25], &c__5, &c__5) - 16; -#line 3457 "" - } #line 3458 "" + } +#line 3459 "" if (comxtup_1.islope[commvl_1.ivx - 1] < 0 || comxtup_1.islope[commvl_1.ivx - 1] >= 10) { /* Writing concatenation */ -#line 3459 "" +#line 3460 "" i__2[0] = *lnote, a__2[0] = notexq; -#line 3459 "" +#line 3460 "" i__2[1] = 1, a__2[1] = "{"; -#line 3459 "" - s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3460 "" - ++(*lnote); + s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3461 "" - if (comxtup_1.islope[commvl_1.ivx - 1] < -9) { + ++(*lnote); #line 3462 "" + if (comxtup_1.islope[commvl_1.ivx - 1] < -9) { +#line 3463 "" i__4 = *lnote; -#line 3462 "" +#line 3463 "" ici__1.icierr = 0; -#line 3462 "" +#line 3463 "" ici__1.icirnum = 1; -#line 3462 "" +#line 3463 "" ici__1.icirlen = *lnote + 3 - i__4; -#line 3462 "" +#line 3463 "" ici__1.iciunit = notexq + i__4; -#line 3462 "" +#line 3463 "" ici__1.icifmt = "(i3)"; -#line 3462 "" +#line 3463 "" s_wsfi(&ici__1); -#line 3462 "" +#line 3463 "" do_fio(&c__1, (char *)&comxtup_1.islope[commvl_1.ivx - 1], (ftnlen)sizeof(integer)); -#line 3462 "" - e_wsfi(); #line 3463 "" - *lnote += 3; + e_wsfi(); #line 3464 "" - } else { + *lnote += 3; #line 3465 "" + } else { +#line 3466 "" i__4 = *lnote; -#line 3465 "" +#line 3466 "" ici__1.icierr = 0; -#line 3465 "" +#line 3466 "" ici__1.icirnum = 1; -#line 3465 "" +#line 3466 "" ici__1.icirlen = *lnote + 2 - i__4; -#line 3465 "" +#line 3466 "" ici__1.iciunit = notexq + i__4; -#line 3465 "" +#line 3466 "" ici__1.icifmt = "(i2)"; -#line 3465 "" +#line 3466 "" s_wsfi(&ici__1); -#line 3465 "" +#line 3466 "" do_fio(&c__1, (char *)&comxtup_1.islope[commvl_1.ivx - 1], (ftnlen)sizeof(integer)); -#line 3465 "" - e_wsfi(); #line 3466 "" - *lnote += 2; + e_wsfi(); #line 3467 "" + *lnote += 2; +#line 3468 "" } /* Writing concatenation */ -#line 3468 "" +#line 3469 "" i__2[0] = *lnote, a__2[0] = notexq; -#line 3468 "" +#line 3469 "" i__2[1] = 1, a__2[1] = "}"; -#line 3468 "" - s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3469 "" - ++(*lnote); + s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3470 "" - } else { + ++(*lnote); #line 3471 "" + } else { +#line 3472 "" i__4 = *lnote; -#line 3471 "" +#line 3472 "" ici__1.icierr = 0; -#line 3471 "" +#line 3472 "" ici__1.icirnum = 1; -#line 3471 "" +#line 3472 "" ici__1.icirlen = *lnote + 1 - i__4; -#line 3471 "" +#line 3472 "" ici__1.iciunit = notexq + i__4; -#line 3471 "" +#line 3472 "" ici__1.icifmt = "(i1)"; -#line 3471 "" +#line 3472 "" s_wsfi(&ici__1); -#line 3471 "" +#line 3472 "" do_fio(&c__1, (char *)&comxtup_1.islope[commvl_1.ivx - 1], (ftnlen)sizeof(integer)); -#line 3471 "" - e_wsfi(); #line 3472 "" - ++(*lnote); + e_wsfi(); #line 3473 "" + ++(*lnote); +#line 3474 "" } /* Done with bracket */ -#line 3477 "" - } #line 3478 "" + } +#line 3479 "" if (strtmid_1.ixrest[commvl_1.ivx - 1] == 1) { /* Put in the rest. Possible problem: Rest is a spacing char, but between */ @@ -8902,71 +8904,71 @@ L6: /* 130126 Deal with vertical shifts of rest starting xtuplet */ -#line 3485 "" - lrest = 3; #line 3486 "" + lrest = 3; +#line 3487 "" if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],29)) { /* Writing concatenation */ -#line 3487 "" +#line 3488 "" i__2[0] = 1, a__2[0] = all_1.sq; -#line 3487 "" +#line 3488 "" i__2[1] = 2, a__2[1] = "sk"; -#line 3487 "" +#line 3488 "" s_cat(restq, a__2, i__2, &c__2, (ftnlen)40); /* if (multb .eq. 0) then */ -#line 3489 "" +#line 3490 "" } else if (multb == 0) { /* Writing concatenation */ -#line 3490 "" +#line 3491 "" i__2[0] = 1, a__2[0] = all_1.sq; -#line 3490 "" +#line 3491 "" i__2[1] = 2, a__2[1] = "qp"; -#line 3490 "" - s_cat(restq, a__2, i__2, &c__2, (ftnlen)40); #line 3491 "" + s_cat(restq, a__2, i__2, &c__2, (ftnlen)40); +#line 3492 "" } else if (! comdraw_1.drawbm[commvl_1.ivx - 1] && multb == 1) { /* Writing concatenation */ -#line 3492 "" +#line 3493 "" i__2[0] = 1, a__2[0] = all_1.sq; -#line 3492 "" +#line 3493 "" i__2[1] = 2, a__2[1] = "ds"; -#line 3492 "" - s_cat(restq, a__2, i__2, &c__2, (ftnlen)40); #line 3493 "" + s_cat(restq, a__2, i__2, &c__2, (ftnlen)40); +#line 3494 "" } else if (! comdraw_1.drawbm[commvl_1.ivx - 1] && multb == 2) { /* Writing concatenation */ -#line 3494 "" +#line 3495 "" i__2[0] = 1, a__2[0] = all_1.sq; -#line 3494 "" +#line 3495 "" i__2[1] = 2, a__2[1] = "qs"; -#line 3494 "" - s_cat(restq, a__2, i__2, &c__2, (ftnlen)40); #line 3495 "" + s_cat(restq, a__2, i__2, &c__2, (ftnlen)40); +#line 3496 "" } else if (! comdraw_1.drawbm[commvl_1.ivx - 1] && multb == 3) { /* Writing concatenation */ -#line 3496 "" +#line 3497 "" i__2[0] = 1, a__2[0] = all_1.sq; -#line 3496 "" +#line 3497 "" i__2[1] = 2, a__2[1] = "hs"; -#line 3496 "" - s_cat(restq, a__2, i__2, &c__2, (ftnlen)40); #line 3497 "" + s_cat(restq, a__2, i__2, &c__2, (ftnlen)40); +#line 3498 "" } else { /* Writing concatenation */ -#line 3498 "" +#line 3499 "" i__2[0] = 1, a__2[0] = all_1.sq; -#line 3498 "" +#line 3499 "" i__2[1] = 6, a__2[1] = "hpause"; -#line 3498 "" - s_cat(restq, a__2, i__2, &c__2, (ftnlen)40); #line 3499 "" - lrest = 7; + s_cat(restq, a__2, i__2, &c__2, (ftnlen)40); #line 3500 "" - } + lrest = 7; #line 3501 "" + } +#line 3502 "" if (bit_test(all_1.nacc[commvl_1.ivx + ipb1 * 24 - 25],18) && bit_test(all_1.nacc[commvl_1.ivx + ipb1 * 24 - 25],19) ) { @@ -8974,561 +8976,561 @@ L6: /* VERY special case of rest at start of F-tuplet, needs dot */ /* Writing concatenation */ -#line 3506 "" +#line 3507 "" i__3[0] = 1, a__3[0] = all_1.sq; -#line 3506 "" +#line 3507 "" i__3[1] = 3, a__3[1] = "pt4"; -#line 3506 "" +#line 3507 "" i__3[2] = lrest, a__3[2] = restq; -#line 3506 "" - s_cat(restq, a__3, i__3, &c__3, (ftnlen)40); #line 3507 "" - lrest += 4; + s_cat(restq, a__3, i__3, &c__3, (ftnlen)40); #line 3508 "" + lrest += 4; +#line 3509 "" } -#line 3510 "" +#line 3511 "" nole = (all_1.nolev[commvl_1.ivx + ip * 24 - 25] + 20) % 100 - 20; /* if (nole .eq. 0) then */ -#line 3512 "" +#line 3513 "" if (nole == 0 || bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],29)) { /* Rest blank or is not raised */ /* Writing concatenation */ -#line 3516 "" +#line 3517 "" i__2[0] = *lnote, a__2[0] = notexq; -#line 3516 "" +#line 3517 "" i__2[1] = 40, a__2[1] = restq; -#line 3516 "" - s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3517 "" - *lnote += lrest; + s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3518 "" - } else { + *lnote += lrest; #line 3519 "" - if (abs(nole) < 10) { + } else { #line 3520 "" + if (abs(nole) < 10) { +#line 3521 "" i__4 = abs(nole) + 48; -#line 3520 "" +#line 3521 "" chax_(ch__1, (ftnlen)1, &i__4); -#line 3520 "" - s_copy(tempq, ch__1, (ftnlen)79, (ftnlen)1); #line 3521 "" - ltemp = 1; + s_copy(tempq, ch__1, (ftnlen)79, (ftnlen)1); #line 3522 "" - } else { -#line 3523 "" - s_wsfi(&io___242); + ltemp = 1; #line 3523 "" + } else { +#line 3524 "" + s_wsfi(&io___243); +#line 3524 "" i__4 = abs(nole); -#line 3523 "" +#line 3524 "" do_fio(&c__1, (char *)&i__4, (ftnlen)sizeof(integer)); -#line 3523 "" - e_wsfi(); #line 3524 "" - ltemp = 2; + e_wsfi(); #line 3525 "" - } + ltemp = 2; #line 3526 "" + } +#line 3527 "" if (nole > 0) { /* Writing concatenation */ -#line 3527 "" +#line 3528 "" i__7[0] = 1, a__4[0] = all_1.sq; -#line 3527 "" +#line 3528 "" i__7[1] = 5, a__4[1] = "raise"; -#line 3527 "" +#line 3528 "" i__7[2] = ltemp, a__4[2] = tempq; -#line 3527 "" +#line 3528 "" i__7[3] = 1, a__4[3] = all_1.sq; -#line 3527 "" +#line 3528 "" i__7[4] = 9, a__4[4] = "internote"; -#line 3527 "" - s_cat(tempq, a__4, i__7, &c__5, (ftnlen)79); #line 3528 "" + s_cat(tempq, a__4, i__7, &c__5, (ftnlen)79); +#line 3529 "" } else { /* Writing concatenation */ -#line 3529 "" +#line 3530 "" i__7[0] = 1, a__4[0] = all_1.sq; -#line 3529 "" +#line 3530 "" i__7[1] = 5, a__4[1] = "lower"; -#line 3529 "" +#line 3530 "" i__7[2] = ltemp, a__4[2] = tempq; -#line 3529 "" +#line 3530 "" i__7[3] = 1, a__4[3] = all_1.sq; -#line 3529 "" +#line 3530 "" i__7[4] = 9, a__4[4] = "internote"; -#line 3529 "" - s_cat(tempq, a__4, i__7, &c__5, (ftnlen)79); #line 3530 "" - } + s_cat(tempq, a__4, i__7, &c__5, (ftnlen)79); #line 3531 "" + } +#line 3532 "" ltemp += 16; /* Writing concatenation */ -#line 3532 "" +#line 3533 "" i__3[0] = *lnote, a__3[0] = notexq; -#line 3532 "" +#line 3533 "" i__3[1] = ltemp, a__3[1] = tempq; -#line 3532 "" +#line 3533 "" i__3[2] = lrest, a__3[2] = restq; -#line 3532 "" - s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3533 "" - *lnote = *lnote + ltemp + lrest; + s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3534 "" + *lnote = *lnote + ltemp + lrest; +#line 3535 "" } /* No need to come back through this subroutine (as would if rest starts bar */ /* & multb>0), so do not advance ibm1. But must check in beamn1 and do nothing. */ -#line 3539 "" - strtmid_1.ixrest[commvl_1.ivx - 1] = 0; #line 3540 "" - } + strtmid_1.ixrest[commvl_1.ivx - 1] = 0; #line 3541 "" - return 0; + } #line 3542 "" + return 0; +#line 3543 "" } /* End if block for non-beamed xtup start...note we returned */ -#line 3546 "" +#line 3547 "" if (strtmid_1.ixrest[commvl_1.ivx - 1] == 1) { /* Insert rest at start of beamed xtup. See above note for possible problem. */ /* But first check if blank rest and if in forced beam (assuming xtuplet), */ /* and if so, count rest from beginning, add \sk's AFTER starting beam '\ib*' */ -#line 3552 "" +#line 3553 "" if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],29) && bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],30)) { -#line 3553 "" - ++xjbeambrests_1.nbrests; #line 3554 "" - writebrests = FALSE_; + ++xjbeambrests_1.nbrests; #line 3555 "" - } else { + writebrests = FALSE_; #line 3556 "" + } else { +#line 3557 "" i__4 = 4 - multb; -#line 3556 "" +#line 3557 "" all_1.nodur[commvl_1.ivx + ipb1 * 24 - 25] = pow_ii(&c__2, & i__4); -#line 3557 "" - notex_(tempq, <emp, (ftnlen)79); #line 3558 "" + notex_(tempq, <emp, (ftnlen)79); +#line 3559 "" if (*lnote > 0) { /* Writing concatenation */ -#line 3559 "" +#line 3560 "" i__2[0] = *lnote, a__2[0] = notexq; -#line 3559 "" +#line 3560 "" i__2[1] = ltemp, a__2[1] = tempq; -#line 3559 "" - s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3560 "" - } else { + s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3561 "" - s_copy(notexq, tempq, (ftnlen)79, ltemp); + } else { #line 3562 "" - } + s_copy(notexq, tempq, (ftnlen)79, ltemp); #line 3563 "" - *lnote += ltemp; + } #line 3564 "" + *lnote += ltemp; +#line 3565 "" } /* Re-zero just in case! */ -#line 3568 "" - all_1.nodur[commvl_1.ivx + ipb1 * 24 - 25] = 0; #line 3569 "" + all_1.nodur[commvl_1.ivx + ipb1 * 24 - 25] = 0; +#line 3570 "" ++all_1.ibm1[commvl_1.ivx + ibc * 24 - 25]; /* See if next note is a non-rest */ -#line 3573 "" +#line 3574 "" if (! bit_test(all_1.irest[commvl_1.ivx + (ipb1 + 1) * 24 - 25],0) ) { -#line 3574 "" - strtmid_1.ixrest[commvl_1.ivx - 1] = 2; #line 3575 "" + strtmid_1.ixrest[commvl_1.ivx - 1] = 2; +#line 3576 "" } else { /* Suppress reprinting xtup number next time through beamstrt */ -#line 3579 "" +#line 3580 "" all_1.islur[commvl_1.ivx + (ipb1 + 1) * 24 - 25] = bit_set( all_1.islur[commvl_1.ivx + (ipb1 + 1) * 24 - 25],31); /* Set new xtup start flag */ -#line 3583 "" +#line 3584 "" all_1.irest[commvl_1.ivx + (ipb1 + 1) * 24 - 25] = bit_set( all_1.irest[commvl_1.ivx + (ipb1 + 1) * 24 - 25],28); -#line 3584 "" - } #line 3585 "" - return 0; + } #line 3586 "" - } + return 0; #line 3587 "" + } +#line 3588 "" } /* Just ended if block for xtups */ -#line 3591 "" +#line 3592 "" if (comxtup_1.vxtup[commvl_1.ivx - 1] && ipb1 == all_1.ibm2[commvl_1.ivx + ibc * 24 - 25]) { /* Move actual note writing to beamend */ -#line 3595 "" - strtmid_1.ixrest[commvl_1.ivx - 1] = 4; #line 3596 "" - return 0; + strtmid_1.ixrest[commvl_1.ivx - 1] = 4; #line 3597 "" - } + return 0; #line 3598 "" + } +#line 3599 "" if (comxtup_1.issb[commvl_1.ivx - 1] == 0) { /* 1st bmstrt in single-slope bm grp, Adjust start level(s) and slope if needed */ -#line 3602 "" +#line 3603 "" iadj = igetbits_(&all_1.ipl[commvl_1.ivx + ipb1 * 24 - 25], &c__6, & c__11) - 30; -#line 3603 "" - if (iadj != -30) { #line 3604 "" - comxtup_1.nolev1[commvl_1.ivx - 1] += iadj; + if (iadj != -30) { #line 3605 "" + comxtup_1.nolev1[commvl_1.ivx - 1] += iadj; +#line 3606 "" i__4 = comxtup_1.nssb[commvl_1.ivx - 1]; -#line 3605 "" - for (isssb = 1; isssb <= i__4; ++isssb) { #line 3606 "" - comxtup_1.lev1ssb[commvl_1.ivx + isssb * 24 - 25] += iadj; + for (isssb = 1; isssb <= i__4; ++isssb) { #line 3607 "" + comxtup_1.lev1ssb[commvl_1.ivx + isssb * 24 - 25] += iadj; +#line 3608 "" /* L2: */ -#line 3607 "" - } #line 3608 "" - } + } #line 3609 "" + } +#line 3610 "" iadj = igetbits_(&all_1.ipl[commvl_1.ivx + ipb1 * 24 - 25], &c__6, & c__17) - 30; -#line 3610 "" - if (iadj != -30) { #line 3611 "" - comxtup_1.islope[commvl_1.ivx - 1] += iadj; + if (iadj != -30) { #line 3612 "" + comxtup_1.islope[commvl_1.ivx - 1] += iadj; +#line 3613 "" if ((i__4 = comxtup_1.islope[commvl_1.ivx - 1], abs(i__4)) > 9) { -#line 3612 "" +#line 3613 "" comxtup_1.islope[commvl_1.ivx - 1] = i_sign(&c__9, & comxtup_1.islope[commvl_1.ivx - 1]); -#line 3612 "" - } #line 3613 "" + } +#line 3614 "" if (comxtup_1.nssb[commvl_1.ivx - 1] > 0) { /* Cycle thru non-rest notes in SSBG, looking for bmstrts. */ -#line 3617 "" - isssb = 0; #line 3618 "" + isssb = 0; +#line 3619 "" i__4 = comipb_1.nnb; -#line 3618 "" - for (inb = 2; inb <= i__4; ++inb) { #line 3619 "" + for (inb = 2; inb <= i__4; ++inb) { +#line 3620 "" if (bit_test(all_1.nacc[commvl_1.ivx + comipb_1.ipb[inb - 1] * 24 - 25],21)) { /* Beam segment start. New start level */ -#line 3622 "" - ++isssb; #line 3623 "" + ++isssb; +#line 3624 "" comxtup_1.lev1ssb[commvl_1.ivx + isssb * 24 - 25] += comxtup_1.islope[commvl_1.ivx - 1] * comxtup_1.xelsk[inb - 1] / all_1.slfac; -#line 3625 "" - } #line 3626 "" + } +#line 3627 "" /* L4: */ -#line 3626 "" - } #line 3627 "" - } + } #line 3628 "" - } + } #line 3629 "" - } + } #line 3630 "" + } +#line 3631 "" iadj = igetbits_(&all_1.islur[commvl_1.ivx + ipb1 * 24 - 25], &c__2, & c__27); -#line 3631 "" - addbrack = FALSE_; #line 3632 "" + addbrack = FALSE_; +#line 3633 "" if (bit_test(all_1.ipl[commvl_1.ivx + ipb1 * 24 - 25],30)) { /* Check for altered starting polarity. Only in forced beams. Nominal start */ /* level is nolev1. So beam level is nolev1 +/- 6, to be compared w/ nolev(.,.). */ -#line 3637 "" +#line 3638 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + ibc * 24 - 25] == 'u' && comxtup_1.nolev1[commvl_1.ivx - 1] + 6 < all_1.nolev[ commvl_1.ivx + ipb1 * 24 - 25]) { -#line 3639 "" +#line 3640 "" if (*lnote == 0) { /* Writing concatenation */ -#line 3640 "" +#line 3641 "" i__2[0] = 1, a__2[0] = all_1.sq; -#line 3640 "" +#line 3641 "" i__2[1] = 5, a__2[1] = "loff{"; -#line 3640 "" - s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3641 "" + s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); +#line 3642 "" } else { /* Writing concatenation */ -#line 3642 "" +#line 3643 "" i__3[0] = *lnote, a__3[0] = notexq; -#line 3642 "" +#line 3643 "" i__3[1] = 1, a__3[1] = all_1.sq; -#line 3642 "" +#line 3643 "" i__3[2] = 5, a__3[2] = "loff{"; -#line 3642 "" - s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3643 "" - } + s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3644 "" - *lnote += 6; + } #line 3645 "" - addbrack = TRUE_; + *lnote += 6; #line 3646 "" + addbrack = TRUE_; +#line 3647 "" } else if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + ibc * 24 - 25] == 'l' && comxtup_1.nolev1[commvl_1.ivx - 1] - 6 > all_1.nolev[commvl_1.ivx + ipb1 * 24 - 25]) { -#line 3648 "" +#line 3649 "" if (*lnote == 0) { /* Writing concatenation */ -#line 3649 "" +#line 3650 "" i__2[0] = 1, a__2[0] = all_1.sq; -#line 3649 "" +#line 3650 "" i__2[1] = 5, a__2[1] = "roff{"; -#line 3649 "" - s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3650 "" + s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); +#line 3651 "" } else { /* Writing concatenation */ -#line 3651 "" +#line 3652 "" i__3[0] = *lnote, a__3[0] = notexq; -#line 3651 "" +#line 3652 "" i__3[1] = 1, a__3[1] = all_1.sq; -#line 3651 "" +#line 3652 "" i__3[2] = 5, a__3[2] = "roff{"; -#line 3651 "" - s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3652 "" - } + s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3653 "" - *lnote += 6; + } #line 3654 "" - addbrack = TRUE_; + *lnote += 6; #line 3655 "" + addbrack = TRUE_; +#line 3656 "" } /* Check end level for possible flipping in forced beam. Have to do it */ /* here since with multiple voices, xelsk will not be preserved. */ -#line 3660 "" +#line 3661 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25] == 'u') { -#line 3661 "" +#line 3662 "" bmlev = comxtup_1.nolev1[commvl_1.ivx - 1] + 6 + comxtup_1.islope[ commvl_1.ivx - 1] * comxtup_1.xelsk[comipb_1.nnb - 1] / all_1.slfac; -#line 3662 "" +#line 3663 "" strtmid_1.flipend[commvl_1.ivx - 1] = bmlev < (real) all_1.nolev[ commvl_1.ivx + all_1.ibm2[commvl_1.ivx + ibc * 24 - 25] * 24 - 25]; -#line 3663 "" +#line 3664 "" } else if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25] == 'l') { -#line 3664 "" +#line 3665 "" bmlev = comxtup_1.nolev1[commvl_1.ivx - 1] - 6 + comxtup_1.islope[ commvl_1.ivx - 1] * comxtup_1.xelsk[comipb_1.nnb - 1] / all_1.slfac; -#line 3665 "" +#line 3666 "" strtmid_1.flipend[commvl_1.ivx - 1] = bmlev > (real) all_1.nolev[ commvl_1.ivx + all_1.ibm2[commvl_1.ivx + ibc * 24 - 25] * 24 - 25]; -#line 3666 "" - } #line 3667 "" - } + } #line 3668 "" + } +#line 3669 "" multbb = multb + iadj; /* Tremolo starting? */ -#line 3672 "" +#line 3673 "" if (bit_test(all_1.irest[commvl_1.ivx + ipb1 * 24 - 25],2)) { -#line 3672 "" +#line 3673 "" multbb = igetbits_(&all_1.irest[commvl_1.ivx + ipb1 * 24 - 25], &c__2, &c__3); -#line 3672 "" +#line 3673 "" } -#line 3674 "" +#line 3675 "" ntrbbb_(&multbb, "i", all_1.ulq + (commvl_1.ivx + ibc * 24 - 25), & commvl_1.ivx, notexq, lnote, (ftnlen)1, (ftnlen)1, (ftnlen)79); /* Put in name of start level and slope, after correcting nolev1 if xtup */ /* started with a rest. */ -#line 3679 "" +#line 3680 "" if (strtmid_1.ixrest[commvl_1.ivx - 1] == 2) { -#line 3679 "" +#line 3680 "" r__1 = comxtup_1.nolev1[commvl_1.ivx - 1] + comxtup_1.xelsk[0] * comxtup_1.islope[commvl_1.ivx - 1] / all_1.slfac; -#line 3679 "" +#line 3680 "" comxtup_1.nolev1[commvl_1.ivx - 1] = i_nint(&r__1); -#line 3679 "" +#line 3680 "" } /* Add adjustment nvtrem to main beam to account for tremolo indented beams */ -#line 3684 "" +#line 3685 "" i__4 = comxtup_1.nolev1[commvl_1.ivx - 1] + nvtrem; -#line 3684 "" +#line 3685 "" i__5 = ncmid_(&all_1.iv, &ipb1); -#line 3684 "" - notefq_(noteq, &lnoten, &i__4, &i__5, (ftnlen)8); #line 3685 "" + notefq_(noteq, &lnoten, &i__4, &i__5, (ftnlen)8); +#line 3686 "" if (comxtup_1.islope[commvl_1.ivx - 1] < 0) { /* Writing concatenation */ -#line 3686 "" +#line 3687 "" i__3[0] = *lnote, a__3[0] = notexq; -#line 3686 "" +#line 3687 "" i__3[1] = lnoten, a__3[1] = noteq; -#line 3686 "" +#line 3687 "" i__3[2] = 1, a__3[2] = "{"; -#line 3686 "" - s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3687 "" - *lnote = *lnote + 4 + lnoten; + s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3688 "" + *lnote = *lnote + 4 + lnoten; +#line 3689 "" i__4 = *lnote - 3; -#line 3688 "" +#line 3689 "" ici__1.icierr = 0; -#line 3688 "" +#line 3689 "" ici__1.icirnum = 1; -#line 3688 "" +#line 3689 "" ici__1.icirlen = *lnote - i__4; -#line 3688 "" +#line 3689 "" ici__1.iciunit = notexq + i__4; -#line 3688 "" +#line 3689 "" ici__1.icifmt = "(i2,a1)"; -#line 3688 "" +#line 3689 "" s_wsfi(&ici__1); -#line 3688 "" +#line 3689 "" do_fio(&c__1, (char *)&comxtup_1.islope[commvl_1.ivx - 1], (ftnlen) sizeof(integer)); -#line 3688 "" +#line 3689 "" do_fio(&c__1, "}", (ftnlen)1); -#line 3688 "" - e_wsfi(); #line 3689 "" + e_wsfi(); +#line 3690 "" } else { /* Writing concatenation */ -#line 3690 "" +#line 3691 "" i__2[0] = *lnote, a__2[0] = notexq; -#line 3690 "" +#line 3691 "" i__2[1] = lnoten, a__2[1] = noteq; -#line 3690 "" - s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3691 "" - *lnote = *lnote + 1 + lnoten; + s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3692 "" + *lnote = *lnote + 1 + lnoten; +#line 3693 "" ici__1.icierr = 0; -#line 3692 "" +#line 3693 "" ici__1.icirnum = 1; -#line 3692 "" +#line 3693 "" ici__1.icirlen = 1; -#line 3692 "" +#line 3693 "" ici__1.iciunit = notexq + (*lnote - 1); -#line 3692 "" +#line 3693 "" ici__1.icifmt = "(i1)"; -#line 3692 "" +#line 3693 "" s_wsfi(&ici__1); -#line 3692 "" +#line 3693 "" do_fio(&c__1, (char *)&comxtup_1.islope[commvl_1.ivx - 1], (ftnlen) sizeof(integer)); -#line 3692 "" - e_wsfi(); #line 3693 "" + e_wsfi(); +#line 3694 "" } /* Check for beam-thk fine-tuning */ -#line 3697 "" - if (iadj > 0) { #line 3698 "" + if (iadj > 0) { +#line 3699 "" i__4 = multb + 1; -#line 3698 "" - for (imp = multb + iadj; imp >= i__4; --imp) { #line 3699 "" + for (imp = multb + iadj; imp >= i__4; --imp) { +#line 3700 "" ntrbbb_(&imp, "t", all_1.ulq + (commvl_1.ivx + ibc * 24 - 25), & commvl_1.ivx, notexq, lnote, (ftnlen)1, (ftnlen)1, ( ftnlen)79); -#line 3700 "" +#line 3701 "" /* L1: */ -#line 3700 "" - } #line 3701 "" + } +#line 3702 "" } /* If we shifted, must close with right bracket */ -#line 3705 "" +#line 3706 "" if (addbrack) { /* Writing concatenation */ -#line 3706 "" +#line 3707 "" i__2[0] = *lnote, a__2[0] = notexq; -#line 3706 "" +#line 3707 "" i__2[1] = 1, a__2[1] = "}"; -#line 3706 "" - s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3707 "" - ++(*lnote); + s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); #line 3708 "" + ++(*lnote); +#line 3709 "" } /* Add in \sk's for very special case of staff-crossing xtup chords */ /* Assumes we are in lower (first) voice of up-to-both beamed xtup */ /* that starts with blank rests (notes in upper voice here). */ -#line 3714 "" - if (xjbeambrests_1.nbrests > 0 && writebrests) { #line 3715 "" + if (xjbeambrests_1.nbrests > 0 && writebrests) { +#line 3716 "" i__4 = xjbeambrests_1.nbrests; -#line 3715 "" +#line 3716 "" for (isk = 1; isk <= i__4; ++isk) { /* Writing concatenation */ -#line 3716 "" +#line 3717 "" i__3[0] = *lnote, a__3[0] = notexq; -#line 3716 "" +#line 3717 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 3716 "" +#line 3717 "" i__3[1] = 1, a__3[1] = ch__1; -#line 3716 "" +#line 3717 "" i__3[2] = 2, a__3[2] = "sk"; -#line 3716 "" - s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3717 "" - *lnote += 3; + s_cat(notexq, a__3, i__3, &c__3, (ftnlen)79); #line 3718 "" + *lnote += 3; +#line 3719 "" /* L7: */ -#line 3718 "" - } #line 3719 "" - xjbeambrests_1.nbrests = 0; + } #line 3720 "" + xjbeambrests_1.nbrests = 0; +#line 3721 "" } /* Get 'floor' zmin for figures */ @@ -9536,100 +9538,100 @@ L6: /* won't be adjusted. If anyone ever needs that, need to duplicate this */ /* functionality up above, before exiting. */ -#line 3727 "" +#line 3728 "" if (all_1.figbass && (commvl_1.ivx == 1 || commvl_1.ivx == comfig_1.ivxfig2)) { -#line 3728 "" - if (commvl_1.ivx == 1) { #line 3729 "" - ivf = 1; + if (commvl_1.ivx == 1) { #line 3730 "" - } else { + ivf = 1; #line 3731 "" - ivf = comfig_1.ivxfig2; + } else { #line 3732 "" - } + ivf = comfig_1.ivxfig2; #line 3733 "" - zmult = (multb - 1) * 1.2f; + } #line 3734 "" - ymin = 100.f; + zmult = (multb - 1) * 1.2f; #line 3735 "" + ymin = 100.f; +#line 3736 "" i__4 = comipb_1.nnb; -#line 3735 "" - for (inb = 1; inb <= i__4; ++inb) { #line 3736 "" - if (all_1.isfig[ivf + (comipb_1.ipb[inb - 1] << 1) - 3]) { + for (inb = 1; inb <= i__4; ++inb) { #line 3737 "" + if (all_1.isfig[ivf + (comipb_1.ipb[inb - 1] << 1) - 3]) { +#line 3738 "" if (*(unsigned char *)&all_1.ulq[all_1.iv + ibc * 24 - 25] == 'u') { -#line 3738 "" +#line 3739 "" ybot = (real) all_1.nolev[all_1.iv + comipb_1.ipb[inb - 1] * 24 - 25]; -#line 3739 "" - } else { #line 3740 "" + } else { +#line 3741 "" ybot = comxtup_1.islope[commvl_1.ivx - 1] / all_1.slfac * comxtup_1.xelsk[inb - 1] + comxtup_1.nolev1[ commvl_1.ivx - 1] - all_1.stemlen - zmult; -#line 3742 "" - } #line 3743 "" - ymin = dmin(ymin,ybot); + } #line 3744 "" - } + ymin = dmin(ymin,ybot); #line 3745 "" + } +#line 3746 "" /* L3: */ -#line 3745 "" - } #line 3746 "" + } +#line 3747 "" maxdrop = ncmid_(&all_1.iv, &ipb1) - 4 - ymin + 5.01f; /* Computing MAX */ -#line 3747 "" +#line 3748 "" i__4 = all_1.ifigdr[ivf + (all_1.iline << 1) - 3]; -#line 3747 "" - all_1.ifigdr[ivf + (all_1.iline << 1) - 3] = max(i__4,maxdrop); #line 3748 "" + all_1.ifigdr[ivf + (all_1.iline << 1) - 3] = max(i__4,maxdrop); +#line 3749 "" } /* Compute ornament levels if needed */ -#line 3752 "" - nomornlev = ncmid_(&all_1.iv, &ipb1) + 5; #line 3753 "" - iorn = 0; + nomornlev = ncmid_(&all_1.iv, &ipb1) + 5; #line 3754 "" + iorn = 0; +#line 3755 "" i__4 = comipb_1.nnb; -#line 3754 "" - for (inb = 1; inb <= i__4; ++inb) { #line 3755 "" - ip = comipb_1.ipb[inb - 1]; + for (inb = 1; inb <= i__4; ++inb) { #line 3756 "" + ip = comipb_1.ipb[inb - 1]; +#line 3757 "" if (! bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],23)) { -#line 3756 "" +#line 3757 "" goto L8; -#line 3756 "" - } #line 3757 "" + } +#line 3758 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],26) && *( unsigned char *)&all_1.ulq[commvl_1.ivx + ibc * 24 - 25] == 'l') { /* letter-dynamic or hairpin ending under down-beamed */ -#line 3761 "" - ++iorn; #line 3762 "" + ++iorn; +#line 3763 "" ybeam = comxtup_1.nolev1[commvl_1.ivx - 1] - all_1.stemlen + comxtup_1.islope[commvl_1.ivx - 1] * comxtup_1.xelsk[inb - 1] / all_1.slfac + 1 - (multb - 1) * 1.2f; /* Computing MIN */ -#line 3764 "" +#line 3765 "" r__1 = ybeam - 3.f; -#line 3764 "" +#line 3765 "" i__5 = i_nint(&r__1), i__6 = nomornlev - 10; -#line 3764 "" - ihornb[commvl_1.ivx + iorn * 24] = min(i__5,i__6); #line 3765 "" + ihornb[commvl_1.ivx + iorn * 24] = min(i__5,i__6); +#line 3766 "" } else if (! bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],10)) { /* Bits 0-13: (stmgx+Tupf._) , 14: Down fermata, was F */ @@ -9638,52 +9640,52 @@ L6: /* Non-chord. There IS an ornament. Need ihornb only if upbeam, and if */ /* ornament is 1,2,3,5,6,7,8,9,10,15-21 (up- but not domn ferm.) */ -#line 3773 "" +#line 3774 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + ibc * 24 - 25] == 'u' && (all_1.iornq[commvl_1.ivx + comipb_1.ipb[inb - 1] * 24 - 1] & 4163566) > 0) { -#line 3775 "" - ++iorn; #line 3776 "" + ++iorn; +#line 3777 "" all_1.iornq[commvl_1.ivx + ip * 24 - 1] = bit_set(all_1.iornq[ commvl_1.ivx + ip * 24 - 1],22); -#line 3777 "" +#line 3778 "" ybeam = comxtup_1.nolev1[commvl_1.ivx - 1] + all_1.stemlen + comxtup_1.islope[commvl_1.ivx - 1] * comxtup_1.xelsk[ inb - 1] / all_1.slfac - 1 + (multb - 1) * 1.2f; /* Computing MAX */ -#line 3779 "" +#line 3780 "" r__1 = ybeam + 3.f; -#line 3779 "" +#line 3780 "" i__5 = i_nint(&r__1); -#line 3779 "" - ihornb[commvl_1.ivx + iorn * 24] = max(i__5,nomornlev); #line 3780 "" - } + ihornb[commvl_1.ivx + iorn * 24] = max(i__5,nomornlev); #line 3781 "" + } +#line 3782 "" } else { /* In a chord. Orn may be on main note or non-main or both. Set ihornb if */ /* upbeam and highest note has orn, or down beam and lowest. Find 1st chord note */ -#line 3786 "" +#line 3787 "" i__5 = comtrill_1.ncrd; -#line 3786 "" +#line 3787 "" for (comtrill_1.icrd1 = 1; comtrill_1.icrd1 <= i__5; ++comtrill_1.icrd1) { -#line 3787 "" +#line 3788 "" if ((255 & comtrill_1.icrdat[comtrill_1.icrd1 - 1]) == ip && ( 15 & lbit_shift(comtrill_1.icrdat[comtrill_1.icrd1 - 1], (ftnlen)-8)) == commvl_1.ivx) { -#line 3787 "" +#line 3788 "" goto L11; -#line 3787 "" +#line 3788 "" } -#line 3789 "" +#line 3790 "" /* L10: */ -#line 3789 "" - } #line 3790 "" + } +#line 3791 "" L11: /* Find outermost note, min or max depending on beam direction ulq. xto is true */ @@ -9691,126 +9693,126 @@ L11: /* on extreme chord note in beam, will move. */ /* So ornaments are all except 0,4,13 (,g,) */ -#line 3797 "" - levx = all_1.nolev[commvl_1.ivx + ip * 24 - 25]; #line 3798 "" + levx = all_1.nolev[commvl_1.ivx + ip * 24 - 25]; +#line 3799 "" xto = (all_1.iornq[commvl_1.ivx + comipb_1.ipb[inb - 1] * 24 - 1] & 4186094) > 0; -#line 3799 "" - icrdx = 0; #line 3800 "" + icrdx = 0; +#line 3801 "" i__5 = comtrill_1.ncrd; -#line 3800 "" - for (icrd = comtrill_1.icrd1; icrd <= i__5; ++icrd) { #line 3801 "" + for (icrd = comtrill_1.icrd1; icrd <= i__5; ++icrd) { +#line 3802 "" if ((255 & comtrill_1.icrdat[icrd - 1]) != ip || (15 & lbit_shift(comtrill_1.icrdat[icrd - 1], (ftnlen)-8)) != commvl_1.ivx) { -#line 3801 "" +#line 3802 "" goto L13; -#line 3801 "" +#line 3802 "" } -#line 3803 "" +#line 3804 "" levc = 127 & lbit_shift(comtrill_1.icrdat[icrd - 1], (ftnlen) -12); -#line 3804 "" +#line 3805 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + ibc * 24 - 25] == 'u' && levc > levx || *(unsigned char *)& all_1.ulq[commvl_1.ivx + ibc * 24 - 25] == 'l' && levc < levx) { -#line 3806 "" - levx = levc; #line 3807 "" - icrdx = icrd; + levx = levc; #line 3808 "" - xto = (comtrill_1.icrdorn[icrd - 1] & 4186094) > 0; + icrdx = icrd; #line 3809 "" - } + xto = (comtrill_1.icrdorn[icrd - 1] & 4186094) > 0; #line 3810 "" + } +#line 3811 "" /* L12: */ -#line 3810 "" - } #line 3811 "" + } +#line 3812 "" L13: /* If there's orn on extreme note, do stuff */ -#line 3815 "" - if (xto) { #line 3816 "" - ++iorn; + if (xto) { #line 3817 "" + ++iorn; +#line 3818 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + ibc * 24 - 25] == 'u') { -#line 3818 "" +#line 3819 "" ybeam = comxtup_1.nolev1[commvl_1.ivx - 1] + all_1.stemlen + comxtup_1.islope[commvl_1.ivx - 1] * comxtup_1.xelsk[inb - 1] / all_1.slfac - 1 + ( multb - 1) * 1.2f; /* Computing MAX */ -#line 3820 "" +#line 3821 "" r__1 = ybeam + 3.f; -#line 3820 "" +#line 3821 "" i__5 = i_nint(&r__1); -#line 3820 "" - ihornb[commvl_1.ivx + iorn * 24] = max(i__5,nomornlev); #line 3821 "" - } else { + ihornb[commvl_1.ivx + iorn * 24] = max(i__5,nomornlev); #line 3822 "" + } else { +#line 3823 "" ybeam = comxtup_1.nolev1[commvl_1.ivx - 1] - all_1.stemlen + comxtup_1.islope[commvl_1.ivx - 1] * comxtup_1.xelsk[inb - 1] / all_1.slfac + 1 - ( multb - 1) * 1.2f; /* Computing MIN */ -#line 3824 "" +#line 3825 "" r__1 = ybeam - 3.f; -#line 3824 "" +#line 3825 "" i__5 = i_nint(&r__1), i__6 = nomornlev - 10; -#line 3824 "" - ihornb[commvl_1.ivx + iorn * 24] = min(i__5,i__6); #line 3825 "" - } + ihornb[commvl_1.ivx + iorn * 24] = min(i__5,i__6); #line 3826 "" + } +#line 3827 "" if (icrdx == 0) { /* Affected ornament is on main note */ -#line 3830 "" +#line 3831 "" all_1.iornq[commvl_1.ivx + ip * 24 - 1] = bit_set( all_1.iornq[commvl_1.ivx + ip * 24 - 1],22); -#line 3831 "" - } else { #line 3832 "" + } else { +#line 3833 "" comtrill_1.icrdorn[icrdx - 1] = bit_set( comtrill_1.icrdorn[icrdx - 1],22); -#line 3833 "" - } #line 3834 "" - } + } #line 3835 "" - } + } #line 3836 "" + } +#line 3837 "" L8: -#line 3836 "" +#line 3837 "" ; -#line 3836 "" +#line 3837 "" } /* Henceforth nornb will be a counter. */ -#line 3840 "" +#line 3841 "" if (iorn > 0) { -#line 3840 "" +#line 3841 "" nornb[commvl_1.ivx] = 1; -#line 3840 "" - } #line 3841 "" + } +#line 3842 "" if (strtmid_1.ixrest[commvl_1.ivx - 1] == 2) { -#line 3841 "" +#line 3842 "" strtmid_1.ixrest[commvl_1.ivx - 1] = 0; -#line 3841 "" - } #line 3842 "" + } +#line 3843 "" return 0; } /* beamstrt_ */ @@ -9834,45 +9836,45 @@ L8: /* * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) */ /* logical gotclef */ -#line 3926 "" +#line 3927 "" i__1 = c1omnotes_1.nptr[c1omnotes_1.ibarcnt] - 1; -#line 3926 "" +#line 3927 "" for (iptr = c1omnotes_1.nptr[c1omnotes_1.ibarcnt - 1]; iptr <= i__1; ++iptr) { -#line 3927 "" +#line 3928 "" if ((r__1 = *space - c1omnotes_1.durb[iptr - 1], dabs(r__1)) < comtol_1.tol) { -#line 3928 "" +#line 3929 "" if ((r__1 = *squez - c1omnotes_1.sqzb[iptr - 1], dabs(r__1)) < comtol_1.tol) { /* Increment pre-existing entry */ -#line 3932 "" - c1omnotes_1.nnpd[iptr - 1] += *nnsk; #line 3933 "" - return 0; + c1omnotes_1.nnpd[iptr - 1] += *nnsk; #line 3934 "" - } + return 0; #line 3935 "" - } + } #line 3936 "" + } +#line 3937 "" /* L16: */ -#line 3936 "" +#line 3937 "" } /* Didn't find current duration & squez, so add a new entry. */ /* No particular reason to keep in order, so add at the end. */ -#line 3941 "" - c1omnotes_1.nnpd[c1omnotes_1.nptr[c1omnotes_1.ibarcnt] - 1] = *nnsk; #line 3942 "" - c1omnotes_1.durb[c1omnotes_1.nptr[c1omnotes_1.ibarcnt] - 1] = *space; + c1omnotes_1.nnpd[c1omnotes_1.nptr[c1omnotes_1.ibarcnt] - 1] = *nnsk; #line 3943 "" - c1omnotes_1.sqzb[c1omnotes_1.nptr[c1omnotes_1.ibarcnt] - 1] = *squez; + c1omnotes_1.durb[c1omnotes_1.nptr[c1omnotes_1.ibarcnt] - 1] = *space; #line 3944 "" - ++c1omnotes_1.nptr[c1omnotes_1.ibarcnt]; + c1omnotes_1.sqzb[c1omnotes_1.nptr[c1omnotes_1.ibarcnt] - 1] = *squez; #line 3945 "" + ++c1omnotes_1.nptr[c1omnotes_1.ibarcnt]; +#line 3946 "" return 0; } /* catspace_ */ @@ -9882,9 +9884,9 @@ L8: /* The only reason for this seemingly do-nothing function is to get around an */ /* apparent bug in the Visual Fortran Standard Edition 5.0.A compiler! */ -#line 3952 "" - *(unsigned char *)ret_val = (char) (*n); #line 3953 "" + *(unsigned char *)ret_val = (char) (*n); +#line 3954 "" return ; } /* chax_ */ @@ -9919,238 +9921,238 @@ L8: ftnlen, ftnlen); static char dynsymq[4]; -#line 3960 "" +#line 3961 "" txtdyn = FALSE_; /* On entry, iccount is on "D" */ -#line 3964 "" +#line 3965 "" i__1 = *iccount; -#line 3964 "" +#line 3965 "" if (s_cmp(lineq + i__1, "\"", *iccount + 1 - i__1, (ftnlen)1) == 0) { /* Dynamic text */ -#line 3969 "" +#line 3970 "" istart = *iccount + 2; /* 1 past 1st quote */ -#line 3970 "" -L3: #line 3971 "" +L3: +#line 3972 "" iend = i_indx(lineq + (istart - 1), "\"", 128 - (istart - 1), (ftnlen) 1); -#line 3972 "" +#line 3973 "" i__1 = istart + iend - 3; -#line 3972 "" +#line 3973 "" if (s_cmp(lineq + i__1, "\\", istart + iend - 2 - i__1, (ftnlen)1) == 0) { -#line 3973 "" - istart = *iccount + iend + 2; #line 3974 "" - goto L3; + istart = *iccount + iend + 2; #line 3975 "" - } + goto L3; #line 3976 "" - if (iend == 0) { + } #line 3977 "" + if (iend == 0) { +#line 3978 "" i__1 = *iccount + 1; -#line 3977 "" +#line 3978 "" errmsg_(lineq, &i__1, ibar, "Dynamic text must be terminated wit"\ "h double quote!", (ftnlen)128, (ftnlen)50); -#line 3979 "" - stop1_(); #line 3980 "" + stop1_(); +#line 3981 "" } /* Set iccount to character after 2nd ", and set ipm */ /* iccount = iccount+iend+2 */ -#line 3985 "" - *iccount = istart + iend; #line 3986 "" - ipm = i_indx("- +", lineq + (*iccount - 1), (ftnlen)3, (ftnlen)1); + *iccount = istart + iend; #line 3987 "" - if (ipm == 0) { + ipm = i_indx("- +", lineq + (*iccount - 1), (ftnlen)3, (ftnlen)1); #line 3988 "" + if (ipm == 0) { +#line 3989 "" errmsg_(lineq, iccount, ibar, "Expected \"-\", \"+\", or blank h"\ "ere!", (ftnlen)128, (ftnlen)33); -#line 3990 "" - stop1_(); #line 3991 "" - } + stop1_(); #line 3992 "" + } +#line 3993 "" } else { /* Expect ordinary dynamic */ -#line 3996 "" - for (iend = *iccount + 2; iend <= 128; ++iend) { #line 3997 "" - ipm = i_indx("- +", lineq + (iend - 1), (ftnlen)3, (ftnlen)1); + for (iend = *iccount + 2; iend <= 128; ++iend) { #line 3998 "" + ipm = i_indx("- +", lineq + (iend - 1), (ftnlen)3, (ftnlen)1); +#line 3999 "" if (ipm > 0) { -#line 3998 "" +#line 3999 "" goto L2; -#line 3998 "" - } #line 3999 "" + } +#line 4000 "" /* L1: */ -#line 3999 "" - } #line 4000 "" -L2: + } #line 4001 "" - if (iend - *iccount > 5 || iend - *iccount < 2) { +L2: #line 4002 "" + if (iend - *iccount > 5 || iend - *iccount < 2) { +#line 4003 "" i__1 = iend - 1; -#line 4002 "" +#line 4003 "" errmsg_(lineq, &i__1, ibar, "Wrong length for dynamic mark!", ( ftnlen)128, (ftnlen)30); -#line 4004 "" - stop1_(); #line 4005 "" - } + stop1_(); #line 4006 "" + } +#line 4007 "" i__1 = *iccount; -#line 4006 "" +#line 4007 "" ici__1.icierr = 0; -#line 4006 "" +#line 4007 "" ici__1.iciend = 0; -#line 4006 "" +#line 4007 "" ici__1.icirnum = 1; -#line 4006 "" +#line 4007 "" ici__1.icirlen = iend - 1 - i__1; -#line 4006 "" +#line 4007 "" ici__1.iciunit = lineq + i__1; /* Writing concatenation */ -#line 4006 "" +#line 4007 "" i__2[0] = 2, a__1[0] = "(a"; -#line 4006 "" +#line 4007 "" i__3 = iend + 47 - *iccount; -#line 4006 "" +#line 4007 "" chax_(ch__2, (ftnlen)1, &i__3); -#line 4006 "" +#line 4007 "" i__2[1] = 1, a__1[1] = ch__2; -#line 4006 "" +#line 4007 "" i__2[2] = 1, a__1[2] = ")"; -#line 4006 "" +#line 4007 "" ici__1.icifmt = (s_cat(ch__1, a__1, i__2, &c__3, (ftnlen)4), ch__1); -#line 4006 "" +#line 4007 "" s_rsfi(&ici__1); -#line 4006 "" +#line 4007 "" do_fio(&c__1, dynsymq, (ftnlen)4); -#line 4006 "" +#line 4007 "" e_rsfi(); -#line 4008 "" +#line 4009 "" idno = (i_indx("ppppppp pp p mp mf f fp sfz ff fff ffff< "\ "> ", dynsymq, (ftnlen)56, (ftnlen)4) + 3) / 4; -#line 4011 "" - if (idno == 0) { #line 4012 "" + if (idno == 0) { +#line 4013 "" i__1 = *iccount + 1; -#line 4012 "" +#line 4013 "" errmsg_(lineq, &i__1, ibar, "Illegal dynamic mark!", (ftnlen)128, (ftnlen)21); -#line 4013 "" - stop1_(); #line 4014 "" - } + stop1_(); #line 4015 "" - *iccount = iend; + } #line 4016 "" - } + *iccount = iend; #line 4017 "" + } +#line 4018 "" if (ipm != 2) { /* There is a vertical shift, have "+" or "-" */ -#line 4021 "" - ++(*iccount); #line 4022 "" + ++(*iccount); +#line 4023 "" if (i_indx("0123456789", lineq + (*iccount - 1), (ftnlen)10, (ftnlen) 1) == 0) { -#line 4023 "" +#line 4024 "" errmsg_(lineq, iccount, ibar, "Expected integer here for vertica"\ "l offset!", (ftnlen)128, (ftnlen)42); -#line 4025 "" - stop1_(); #line 4026 "" - } + stop1_(); #line 4027 "" - readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); + } #line 4028 "" - idno = i_nint(&fnum); + readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); #line 4029 "" - if (idno > 63) { + idno = i_nint(&fnum); #line 4030 "" + if (idno > 63) { +#line 4031 "" i__1 = *iccount - 1; -#line 4030 "" +#line 4031 "" errmsg_(lineq, &i__1, ibar, "Vertical offset for dynamic mark mu"\ "st be (-63,63)!", (ftnlen)128, (ftnlen)50); -#line 4032 "" - stop1_(); #line 4033 "" - } + stop1_(); #line 4034 "" - ipm = i_indx("- +", durq, (ftnlen)3, (ftnlen)1); + } #line 4035 "" - if (ipm == 0) { + ipm = i_indx("- +", durq, (ftnlen)3, (ftnlen)1); #line 4036 "" + if (ipm == 0) { +#line 4037 "" errmsg_(lineq, iccount, ibar, "Expected \"+\", \"-\", or blank h"\ "ere!", (ftnlen)128, (ftnlen)33); -#line 4038 "" - stop1_(); #line 4039 "" - } + stop1_(); #line 4040 "" + } +#line 4041 "" if (ipm != 2) { /* There is a horizontal shift */ -#line 4044 "" - ++(*iccount); #line 4045 "" + ++(*iccount); +#line 4046 "" if (i_indx(".0123456789", lineq + (*iccount - 1), (ftnlen)11, ( ftnlen)1) == 0) { -#line 4046 "" +#line 4047 "" errmsg_(lineq, iccount, ibar, "Expected number here for hori"\ "zontal offset!", (ftnlen)128, (ftnlen)43); -#line 4048 "" - stop1_(); #line 4049 "" - } + stop1_(); #line 4050 "" - readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); + } #line 4051 "" + readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); +#line 4052 "" r__1 = fnum * 10; -#line 4051 "" - idno = i_nint(&r__1); #line 4052 "" - if (idno > 255) { + idno = i_nint(&r__1); #line 4053 "" + if (idno > 255) { +#line 4054 "" i__1 = *iccount - 1; -#line 4053 "" +#line 4054 "" errmsg_(lineq, &i__1, ibar, "Horizontal offset for dynamic m"\ "ark must be (-25.5,25.5)!", (ftnlen)128, (ftnlen)56); -#line 4055 "" - stop1_(); #line 4056 "" - } else if (*(unsigned char *)durq != ' ') { + stop1_(); #line 4057 "" + } else if (*(unsigned char *)durq != ' ') { +#line 4058 "" errmsg_(lineq, iccount, ibar, "There should be a blank here!", (ftnlen)128, (ftnlen)29); -#line 4059 "" - stop1_(); #line 4060 "" - } + stop1_(); #line 4061 "" + } +#line 4062 "" } /* iccount should be on the blank at the end of the entire symbol */ -#line 4065 "" - } #line 4066 "" + } +#line 4067 "" return 0; } /* checkdyn_ */ @@ -10169,15 +10171,15 @@ L2: /* subroutine chkarp(found1,ncrd,icrdat,icrdot,ivx,ip,isacc,isarp, */ /* * icashft) */ -#line 4073 "" +#line 4074 "" /* Parameter adjustments */ -#line 4073 "" +#line 4074 "" --icrdat; -#line 4073 "" +#line 4074 "" -#line 4073 "" +#line 4074 "" /* Function Body */ -#line 4073 "" +#line 4074 "" found1 = FALSE_; /* icashft will be max left shift of accid's in chord notes. */ @@ -10185,19 +10187,19 @@ L2: /* Will include left shift of chord note itself. */ /* Rezero after use. */ -#line 4080 "" +#line 4081 "" i__1 = *ncrd; -#line 4080 "" +#line 4081 "" for (icrd = 1; icrd <= i__1; ++icrd) { /* This if block cycles thru all chord notes on ivx,ip; then returns. */ -#line 4084 "" +#line 4085 "" if ((255 & icrdat[icrd]) == *ip && (15 & lbit_shift(icrdat[icrd], ( ftnlen)-8)) == *ivx) { -#line 4086 "" - found1 = TRUE_; #line 4087 "" + found1 = TRUE_; +#line 4088 "" *iscacc = *iscacc || bit_test(icrdat[icrd],19) && ! bit_test( icrdat[icrd],27); @@ -10221,19 +10223,19 @@ L2: /* if (irshft .lt. 64) icashft = max(icashft,64-irshft) */ /* end if */ /* end if */ -#line 4110 "" - *isarp = *isarp || bit_test(icrdat[icrd],25); #line 4111 "" - } else if (found1) { + *isarp = *isarp || bit_test(icrdat[icrd],25); #line 4112 "" - return 0; + } else if (found1) { #line 4113 "" - } + return 0; #line 4114 "" + } +#line 4115 "" /* L18: */ -#line 4114 "" - } #line 4115 "" + } +#line 4116 "" return 0; } /* chkarp_ */ @@ -10245,41 +10247,41 @@ L2: e_wsfe(void); /* Fortran I/O blocks */ - static cilist io___274 = { 0, 6, 0, 0, 0 }; static cilist io___275 = { 0, 6, 0, 0, 0 }; - static cilist io___276 = { 0, 6, 0, "(a6,2x,4i8)", 0 }; + static cilist io___276 = { 0, 6, 0, 0, 0 }; + static cilist io___277 = { 0, 6, 0, "(a6,2x,4i8)", 0 }; -#line 4128 "" - if (commidi_1.imidi[*icm] >= 24576) { #line 4129 "" - s_wsle(&io___274); -#line 4129 "" - e_wsle(); + if (commidi_1.imidi[*icm] >= 24576) { #line 4130 "" s_wsle(&io___275); -#line 4130 "" - do_lio(&c__9, &c__1, "Midi file is too long! It will be corrupted or"\ - " worse", (ftnlen)52); #line 4130 "" e_wsle(); #line 4131 "" - s_wsfe(&io___276); + s_wsle(&io___276); #line 4131 "" - do_fio(&c__1, "imidi:", (ftnlen)6); + do_lio(&c__9, &c__1, "Midi file is too long! It will be corrupted or"\ + " worse", (ftnlen)52); #line 4131 "" + e_wsle(); +#line 4132 "" + s_wsfe(&io___277); +#line 4132 "" + do_fio(&c__1, "imidi:", (ftnlen)6); +#line 4132 "" do_fio(&c__1, (char *)&commidi_1.imidi[0], (ftnlen)sizeof(integer)); -#line 4131 "" +#line 4132 "" do_fio(&c__1, (char *)&commidi_1.imidi[1], (ftnlen)sizeof(integer)); -#line 4131 "" +#line 4132 "" do_fio(&c__1, (char *)&commidi_1.imidi[2], (ftnlen)sizeof(integer)); -#line 4131 "" +#line 4132 "" do_fio(&c__1, (char *)&commidi_1.imidi[3], (ftnlen)sizeof(integer)); -#line 4131 "" +#line 4132 "" e_wsfe(); -#line 4133 "" - } #line 4134 "" + } +#line 4135 "" return 0; } /* chkimidi_ */ @@ -10317,223 +10319,223 @@ L2: /* otherwise next prior note. Relative to bottom line. */ /* if (ip.ne.nn(ivx).and..not.btest(iornq(ivx,ip),30)) then */ -#line 4156 "" +#line 4157 "" /* Parameter adjustments */ -#line 4156 "" +#line 4157 "" ipl -= 25; -#line 4156 "" +#line 4157 "" mult -= 25; -#line 4156 "" +#line 4157 "" --levbotr; -#line 4156 "" +#line 4157 "" --levtopr; -#line 4156 "" +#line 4157 "" nodur -= 25; -#line 4156 "" +#line 4157 "" nib -= 25; -#line 4156 "" +#line 4157 "" ivmx -= 25; -#line 4156 "" +#line 4157 "" nolev -= 25; -#line 4156 "" +#line 4157 "" irest -= 25; -#line 4156 "" +#line 4157 "" islur -= 25; -#line 4156 "" +#line 4157 "" --nn; -#line 4156 "" +#line 4157 "" -#line 4156 "" +#line 4157 "" /* Function Body */ -#line 4156 "" +#line 4157 "" if (*ip != nn[*ivx] && ! bit_test(ipl[*ivx + *ip * 24],1)) { /* Not the last note and not "look-left" for level */ -#line 4160 "" +#line 4161 "" i__1 = nn[*ivx]; -#line 4160 "" - for (kkp = *ip + 1; kkp <= i__1; ++kkp) { #line 4161 "" + for (kkp = *ip + 1; kkp <= i__1; ++kkp) { +#line 4162 "" if (bit_test(islur[*ivx + kkp * 24],29)) { -#line 4161 "" +#line 4162 "" goto L4; -#line 4161 "" - } #line 4162 "" - if (! bit_test(irest[*ivx + kkp * 24],0)) { + } #line 4163 "" + if (! bit_test(irest[*ivx + kkp * 24],0)) { +#line 4164 "" levnext = nolev[*ivx + kkp * 24] - ncmid_(iv, &kkp) + 4; /* Relative to botto */ -#line 4164 "" - goto L9; #line 4165 "" - } + goto L9; #line 4166 "" + } +#line 4167 "" /* L8: */ -#line 4166 "" - } #line 4167 "" - } + } #line 4168 "" + } +#line 4169 "" L4: /* If here, there were no following notes or came to a blank rest, or */ /* "look-left" option set. So look before */ /* if (ip .eq. 1) go to 2 ! Get out if this is the first note. */ -#line 4174 "" +#line 4175 "" if (*ip == 1) { -#line 4174 "" +#line 4175 "" return 0; -#line 4174 "" +#line 4175 "" } /* Get out if this is the first note. */ -#line 4175 "" - for (kkp = *ip - 1; kkp >= 1; --kkp) { #line 4176 "" - if (! bit_test(irest[*ivx + kkp * 24],0)) { + for (kkp = *ip - 1; kkp >= 1; --kkp) { #line 4177 "" + if (! bit_test(irest[*ivx + kkp * 24],0)) { +#line 4178 "" levnext = nolev[*ivx + kkp * 24] - ncmid_(iv, &kkp) + 4; /* Relative to bottom */ -#line 4178 "" - goto L9; #line 4179 "" - } + goto L9; #line 4180 "" + } +#line 4181 "" /* L3: */ -#line 4180 "" +#line 4181 "" } /* go to 2 ! Pretty odd, should never be here, but get out if so. */ -#line 4182 "" +#line 4183 "" return 0; /* Pretty odd, should never be here, but get out if so. */ -#line 4183 "" +#line 4184 "" L9: /* Find note in other voice at same time */ -#line 4187 "" +#line 4188 "" i__1 = *ivx - *nv - 1; -#line 4187 "" - iupdown = i_sign(&c__1, &i__1); #line 4188 "" - ivother = ivmx[*iv + (3 - iupdown) / 2 * 24]; + iupdown = i_sign(&c__1, &i__1); #line 4189 "" - tother = 0.f; + ivother = ivmx[*iv + (3 - iupdown) / 2 * 24]; #line 4190 "" + tother = 0.f; +#line 4191 "" i__1 = nib[ivother + *ibar * 24]; -#line 4190 "" - for (kkp = 1; kkp <= i__1; ++kkp) { #line 4191 "" + for (kkp = 1; kkp <= i__1; ++kkp) { +#line 4192 "" if ((r__1 = tother - *tnow, dabs(r__1)) < *tol) { -#line 4191 "" +#line 4192 "" goto L6; -#line 4191 "" - } #line 4192 "" - tother += nodur[ivother + kkp * 24]; + } #line 4193 "" + tother += nodur[ivother + kkp * 24]; +#line 4194 "" /* L5: */ -#line 4193 "" +#line 4194 "" } /* If here, then no note starts in other voice at same time, so set default */ -#line 4197 "" - levother = -iupdown * 50; #line 4198 "" - goto L7; + levother = -iupdown * 50; #line 4199 "" + goto L7; +#line 4200 "" L6: /* If here, have just identified a simultaneous note or rest in other voice */ -#line 4203 "" +#line 4204 "" if (! bit_test(irest[ivother + kkp * 24],0)) { /* Not a rest, use it */ -#line 4204 "" - levother = nolev[ivother + kkp * 24] - ncmid_(iv, ip) + 4; #line 4205 "" - } else { + levother = nolev[ivother + kkp * 24] - ncmid_(iv, ip) + 4; #line 4206 "" + } else { +#line 4207 "" if (nodur[ivother + kkp * 24] == nodur[*ivx + *ip * 24]) { /* Rest in other voice has same duration, get out (so defualt spacing is used) */ /* go to 2 */ -#line 4211 "" - return 0; #line 4212 "" - } + return 0; #line 4213 "" - levother = -iupdown * 50; + } #line 4214 "" - } + levother = -iupdown * 50; #line 4215 "" -L7: + } #line 4216 "" - if (*mode == 1) { +L7: #line 4217 "" - indxr = log2_(&nodur[*ivx + *ip * 24]) + 1; + if (*mode == 1) { #line 4218 "" + indxr = log2_(&nodur[*ivx + *ip * 24]) + 1; +#line 4219 "" } else { /* nodu = 2**(4-(iand(mult(ivx,ip),15)-8)) */ -#line 4220 "" - indxr = 4 - ((mult[*ivx + *ip * 24] & 15) - 8) + 1; #line 4221 "" - } + indxr = 4 - ((mult[*ivx + *ip * 24] & 15) - 8) + 1; #line 4222 "" - if (iupdown < 0) { + } #line 4223 "" - levtop = levtopr[indxr]; + if (iupdown < 0) { #line 4224 "" + levtop = levtopr[indxr]; +#line 4225 "" iraise1 = levother - levtop - 3; /* Based on other note */ -#line 4225 "" +#line 4226 "" iraise2 = levnext - levtop; /* Based on following note */ -#line 4226 "" +#line 4227 "" if (indxr == 5 && levnext < 1) { -#line 4226 "" +#line 4227 "" iraise2 += 2; -#line 4226 "" - } #line 4227 "" - iraise = min(iraise1,iraise2); + } #line 4228 "" + iraise = min(iraise1,iraise2); +#line 4229 "" if ((iraise + 50) % 2 == 1 && iraise + levtop > -1) { -#line 4228 "" +#line 4229 "" --iraise; -#line 4228 "" +#line 4229 "" } -#line 4230 "" - } else { #line 4231 "" - levbot = levbotr[indxr]; + } else { #line 4232 "" - iraise1 = levother - levbot + 3; + levbot = levbotr[indxr]; #line 4233 "" - iraise2 = levnext - levbot; + iraise1 = levother - levbot + 3; #line 4234 "" + iraise2 = levnext - levbot; +#line 4235 "" if (indxr == 5 && levnext > 8) { -#line 4234 "" +#line 4235 "" --iraise2; -#line 4234 "" - } #line 4235 "" - iraise = max(iraise1,iraise2); + } #line 4236 "" + iraise = max(iraise1,iraise2); +#line 4237 "" if ((iraise + 50) % 2 == 1 && iraise + levbot <= 9) { -#line 4236 "" +#line 4237 "" --iraise; -#line 4236 "" +#line 4237 "" } -#line 4238 "" - } #line 4239 "" - nolev[*ivx + *ip * 24] = iraise + 100; + } #line 4240 "" + nolev[*ivx + *ip * 24] = iraise + 100; +#line 4241 "" return 0; } /* chkkbdrests_ */ @@ -10550,80 +10552,80 @@ L7: extern /* Subroutine */ int g1etchar_(char *, integer *, char *, ftnlen, ftnlen); -#line 4245 "" - *literr = 0; #line 4246 "" - itype = 1; + *literr = 0; #line 4247 "" + itype = 1; +#line 4248 "" L17: -#line 4247 "" - g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); #line 4248 "" + g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); +#line 4249 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 4248 "" - if (*(unsigned char *)charq == *(unsigned char *)&ch__1[0]) { #line 4249 "" - ++itype; + if (*(unsigned char *)charq == *(unsigned char *)&ch__1[0]) { #line 4250 "" - if (itype > 3) { + ++itype; #line 4251 "" - *literr = 1; + if (itype > 3) { #line 4252 "" - return 0; + *literr = 1; #line 4253 "" - } + return 0; #line 4254 "" - goto L17; + } #line 4255 "" - } + goto L17; #line 4256 "" - lenlit = itype; + } #line 4257 "" + lenlit = itype; +#line 4258 "" L18: -#line 4257 "" - g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); #line 4258 "" + g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); +#line 4259 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 4258 "" - if (*(unsigned char *)charq == *(unsigned char *)&ch__1[0]) { #line 4259 "" - g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); + if (*(unsigned char *)charq == *(unsigned char *)&ch__1[0]) { #line 4260 "" + g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); +#line 4261 "" if (*(unsigned char *)charq != ' ') { /* Starting a new tex command withing the string */ -#line 4264 "" - lenlit += 2; #line 4265 "" - if (lenlit > 128) { + lenlit += 2; #line 4266 "" - *literr = 2; + if (lenlit > 128) { #line 4267 "" - return 0; + *literr = 2; #line 4268 "" - } + return 0; #line 4269 "" - goto L18; + } #line 4270 "" - } + goto L18; #line 4271 "" - } else { + } #line 4272 "" - ++lenlit; + } else { #line 4273 "" - if (lenlit > 128) { + ++lenlit; #line 4274 "" - *literr = 2; + if (lenlit > 128) { #line 4275 "" - return 0; + *literr = 2; #line 4276 "" - } + return 0; #line 4277 "" - goto L18; + } #line 4278 "" - } + goto L18; #line 4279 "" + } +#line 4280 "" return 0; } /* chklit_ */ @@ -10655,11 +10657,11 @@ L18: /* numbers. If moved=.true., iccount on exit is on end of last number. */ /* If moved=.false., iccount still on +/- */ -#line 4292 "" +#line 4293 "" i__1 = *iccount - 2; -#line 4292 "" +#line 4293 "" i__2 = *iccount; -#line 4292 "" +#line 4293 "" if (i_indx("sfnA", lineq + i__1, (ftnlen)4, *iccount - 1 - i__1) > 0 && i_indx("0123456789.", lineq + i__2, (ftnlen)11, *iccount + 1 - i__2) > 0) { @@ -10667,100 +10669,100 @@ L18: /* Prior char was accid & next is #; this may be start of accidental shift. */ /* Must test for "." above in case we get "<" or ">" */ -#line 4298 "" +#line 4299 "" ipm = i_indx("- +< >", lineq + (*iccount - 1), (ftnlen)6, (ftnlen)1) - 2; -#line 4299 "" +#line 4300 "" i__1 = *iccount + 1; -#line 4299 "" +#line 4300 "" i__2 = *iccount; -#line 4299 "" +#line 4300 "" if (s_cmp(lineq + i__2, ".", *iccount + 1 - i__2, (ftnlen)1) == 0 && i_indx("0123456789", lineq + i__1, (ftnlen)10, *iccount + 2 - i__1) == 0) { /* Rare case of [accid][+/-].[letter]. Bail out */ -#line 4304 "" - *moved = FALSE_; #line 4305 "" - return 0; + *moved = FALSE_; #line 4306 "" - } + return 0; #line 4307 "" + } +#line 4308 "" ishorz = ipm > 1; /* Save iccount in case it's not accid shift and we have to reset. */ -#line 4311 "" - icsav = *iccount; #line 4312 "" - ++(*iccount); + icsav = *iccount; #line 4313 "" - readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); + ++(*iccount); #line 4314 "" + readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); +#line 4315 "" if (ishorz || i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { /* This has to be accidental shift. Set vert. shift. */ -#line 4318 "" +#line 4319 "" if (! ishorz) { /* +/- syntax, both shifts set, vertical first */ -#line 4322 "" +#line 4323 "" i__1 = (integer) (ipm * fnum + 32.5f); -#line 4322 "" - setbits_(nacc, &c__6, &c__4, &i__1); #line 4323 "" - ipm = i_indx("- +", durq, (ftnlen)3, (ftnlen)1) - 2; + setbits_(nacc, &c__6, &c__4, &i__1); #line 4324 "" - ++(*iccount); + ipm = i_indx("- +", durq, (ftnlen)3, (ftnlen)1) - 2; #line 4325 "" - readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); + ++(*iccount); #line 4326 "" + readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); +#line 4327 "" } else { /* syntax, only horiz set */ -#line 4330 "" - ipm += -3; #line 4331 "" + ipm += -3; +#line 4332 "" } /* Set horiz. shift */ -#line 4335 "" +#line 4336 "" r__1 = (ipm * fnum + 5.35f) * 20; -#line 4335 "" +#line 4336 "" i__1 = i_nint(&r__1); -#line 4335 "" - setbits_(nacc, &c__7, &c__10, &i__1); #line 4336 "" - --(*iccount); + setbits_(nacc, &c__7, &c__10, &i__1); #line 4337 "" - *moved = TRUE_; + --(*iccount); #line 4338 "" + *moved = TRUE_; +#line 4339 "" } else { /* False alarm. Reset everything and flow onward */ -#line 4342 "" - *moved = FALSE_; #line 4343 "" - *iccount = icsav; + *moved = FALSE_; #line 4344 "" - } + *iccount = icsav; #line 4345 "" + } +#line 4346 "" } else { /* Either prior char was not 'sfn' or next was not digit, so take no action */ -#line 4349 "" - *moved = FALSE_; #line 4350 "" - } + *moved = FALSE_; #line 4351 "" + } +#line 4352 "" return 0; } /* chkpm4ac_ */ @@ -10783,62 +10785,62 @@ L18: /* Returns string calling Don's TeX macro \pmxclef, for drawing small clefs. */ -#line 4359 "" - *nclef = lbit_shift(*isl, (ftnlen)-12) & 7; #line 4360 "" + *nclef = lbit_shift(*isl, (ftnlen)-12) & 7; +#line 4361 "" if (*nclef == 0) { /* treble */ -#line 4364 "" - nlev = 2; #line 4365 "" + nlev = 2; +#line 4366 "" } else if (*nclef > 6) { /* French violin */ -#line 4369 "" - nlev = 0; #line 4370 "" + nlev = 0; +#line 4371 "" } else if (*nclef < 5) { /* C-clef */ -#line 4374 "" - nlev = (*nclef << 1) - 2; #line 4375 "" + nlev = (*nclef << 1) - 2; +#line 4376 "" } else { /* F-clef */ -#line 4379 "" - nlev = (*nclef << 1) - 6; #line 4380 "" + nlev = (*nclef << 1) - 6; +#line 4381 "" } /* Writing concatenation */ -#line 4381 "" +#line 4382 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 4381 "" +#line 4382 "" i__1[0] = 1, a__1[0] = ch__1; -#line 4381 "" +#line 4382 "" i__1[1] = 7, a__1[1] = "pmxclef"; -#line 4381 "" +#line 4382 "" i__2 = min(*nclef,7) + 48; -#line 4381 "" +#line 4382 "" chax_(ch__2, (ftnlen)1, &i__2); -#line 4381 "" +#line 4382 "" i__1[2] = 1, a__1[2] = ch__2; -#line 4381 "" +#line 4382 "" i__3 = nlev + 48; -#line 4381 "" +#line 4382 "" chax_(ch__3, (ftnlen)1, &i__3); -#line 4381 "" +#line 4382 "" i__1[3] = 1, a__1[3] = ch__3; -#line 4381 "" +#line 4382 "" s_cat(notexq, a__1, i__1, &c__4, notexq_len); -#line 4383 "" - *lnote = 10; #line 4384 "" + *lnote = 10; +#line 4385 "" return 0; } /* clefsym_ */ @@ -10893,8 +10895,8 @@ L18: integer *); /* Fortran I/O blocks */ - static cilist io___323 = { 0, 6, 0, 0, 0 }; static cilist io___324 = { 0, 6, 0, 0, 0 }; + static cilist io___325 = { 0, 6, 0, 0, 0 }; @@ -10913,17 +10915,17 @@ L18: /* icrdot(icrd)(27-29) = level rank of chord-note among accid-notes */ /* twooftwo will be true 2nd time thru; signal to store shifts w/ notes */ -#line 4411 "" +#line 4412 "" /* Parameter adjustments */ -#line 4411 "" +#line 4412 "" --ksegrb0; -#line 4411 "" +#line 4412 "" segrb0 -= 3; -#line 4411 "" +#line 4412 "" --micrd; -#line 4411 "" +#line 4412 "" -#line 4411 "" +#line 4412 "" /* Function Body */ /* Fancy sharp boundary. fl,sh,na,dfl,dsh */ @@ -10940,152 +10942,152 @@ L18: /* Set up barrier segrb(iseg,ipoint) to define coords of corner points */ /* on stem+notes */ -#line 4442 "" +#line 4443 "" i__1 = *nsegrb0; -#line 4442 "" - for (iseg = 1; iseg <= i__1; ++iseg) { #line 4443 "" - segrb[(iseg << 1) - 2] = segrb0[(iseg << 1) + 1]; + for (iseg = 1; iseg <= i__1; ++iseg) { #line 4444 "" - segrb[(iseg << 1) - 1] = segrb0[(iseg << 1) + 2]; + segrb[(iseg << 1) - 2] = segrb0[(iseg << 1) + 1]; #line 4445 "" - ksegrb[iseg - 1] = ksegrb0[iseg]; + segrb[(iseg << 1) - 1] = segrb0[(iseg << 1) + 2]; #line 4446 "" + ksegrb[iseg - 1] = ksegrb0[iseg]; +#line 4447 "" /* L11: */ -#line 4446 "" - } #line 4447 "" - nsegrb = *nsegrb0; + } #line 4448 "" - *rmsshift = 0.f; + nsegrb = *nsegrb0; #line 4449 "" - shiftmin = 1e3f; + *rmsshift = 0.f; #line 4450 "" + shiftmin = 1e3f; +#line 4451 "" i__1 = *naccid; -#line 4450 "" +#line 4451 "" for (iwa = 1; iwa <= i__1; ++iwa) { /* Initialize shift for this note */ -#line 4454 "" - shift = 0.f; #line 4455 "" - mainnote = micrd[iwa] == 0; + shift = 0.f; #line 4456 "" + mainnote = micrd[iwa] == 0; +#line 4457 "" isetshft[iwa - 1] = -1; /* Get note level and accidental type */ -#line 4460 "" - if (mainnote) { #line 4461 "" - nolev = *nolevm; + if (mainnote) { #line 4462 "" - iacctype = iacctbl[igetbits_(nacc, &c__3, &c__0) - 1]; + nolev = *nolevm; #line 4463 "" - } else { + iacctype = iacctbl[igetbits_(nacc, &c__3, &c__0) - 1]; #line 4464 "" + } else { +#line 4465 "" nolev = igetbits_(&comtrill_1.icrdat[micrd[iwa] - 1], &c__7, & c__12); -#line 4465 "" +#line 4466 "" iacctype = iacctbl[igetbits_(&comtrill_1.icrdat[micrd[iwa] - 1], & c__3, &c__20) - 1]; -#line 4466 "" +#line 4467 "" } /* Cycle thru segments on right edge of this accidental */ -#line 4470 "" +#line 4471 "" i__2 = nsegar[iacctype - 1] - 1; -#line 4470 "" - for (isega = 1; isega <= i__2; ++isega) { #line 4471 "" - ybotaseg = nolev + segar[iacctype + ((isega << 1) + 2) * 5 - 16]; + for (isega = 1; isega <= i__2; ++isega) { #line 4472 "" + ybotaseg = nolev + segar[iacctype + ((isega << 1) + 2) * 5 - 16]; +#line 4473 "" ytopaseg = nolev + segar[iacctype + ((isega + 1 << 1) + 2) * 5 - 16]; /* Cycle thru segments of right-hand barrier */ -#line 4476 "" +#line 4477 "" i__3 = nsegrb - 1; -#line 4476 "" +#line 4477 "" for (isegrb = 1; isegrb <= i__3; ++isegrb) { /* Must find all barrier segments that start below ytopseg & end above ybotseg */ -#line 4480 "" +#line 4481 "" if (segrb[(isegrb << 1) - 1] < ytopaseg) { /* Barrier seg starts below top of accid */ /* Check if barrier seg ends above bottom of accid */ -#line 4485 "" - if (segrb[(isegrb + 1 << 1) - 1] > ybotaseg) { #line 4486 "" + if (segrb[(isegrb + 1 << 1) - 1] > ybotaseg) { +#line 4487 "" if (shift > segrb[(isegrb << 1) - 2] - segar[iacctype + ((isega << 1) + 1) * 5 - 16]) { -#line 4488 "" +#line 4489 "" shift = segrb[(isegrb << 1) - 2] - segar[iacctype + ((isega << 1) + 1) * 5 - 16]; /* Record the cause of the shift */ -#line 4492 "" - isetshft[iwa - 1] = ksegrb[isegrb - 1]; #line 4493 "" - } + isetshft[iwa - 1] = ksegrb[isegrb - 1]; #line 4494 "" + } +#line 4495 "" } /* Does barrier segment end above top of accid seg? */ -#line 4498 "" +#line 4499 "" if (segrb[(isegrb + 1 << 1) - 1] > ytopaseg) { -#line 4498 "" +#line 4499 "" goto L4; -#line 4498 "" - } #line 4499 "" - } + } #line 4500 "" + } +#line 4501 "" /* L3: */ -#line 4500 "" - } #line 4501 "" -L4: + } #line 4502 "" +L4: +#line 4503 "" /* L2: */ -#line 4502 "" +#line 4503 "" ; -#line 4502 "" - } #line 4503 "" + } +#line 4504 "" if (! bit_test(*nacc,28) && dabs(shift) > 1e-4f && ! (*lasttime)) { /* if (nolev .eq. levmaxacc) then */ -#line 4506 "" - if (nolev == *levmaxacc && isetshft[iwa - 1] == -1) { #line 4507 "" - *rmsshift = 1e3f; + if (nolev == *levmaxacc && isetshft[iwa - 1] == -1) { #line 4508 "" - return 0; + *rmsshift = 1e3f; #line 4509 "" + return 0; +#line 4510 "" } /* Does the following properly account for left-shifted noteheads? */ /* Top-down rank of this note we just shifted */ -#line 4515 "" - if (mainnote) { #line 4516 "" - irank = *icrdot0; + if (mainnote) { #line 4517 "" - } else { + irank = *icrdot0; #line 4518 "" + } else { +#line 4519 "" irank = igetbits_(&comtrill_1.icrdot[micrd[iwa] - 1], &c__3, & c__27); -#line 4519 "" +#line 4520 "" } /* Compare level-rank of this note vs. that of note that caused the shift. */ @@ -11098,264 +11100,264 @@ L4: /* icrd: Chord-note accidental */ /* isetshft(i),i=1,naccid: what set shift for this accid, same codes */ -#line 4531 "" - if (isetshft[iwa - 1] < 0) { #line 4532 "" - iranksetter = 0; + if (isetshft[iwa - 1] < 0) { #line 4533 "" - } else if (isetshft[iwa - 1] == 0) { + iranksetter = 0; #line 4534 "" - iranksetter = *icrdot0; + } else if (isetshft[iwa - 1] == 0) { #line 4535 "" - } else { + iranksetter = *icrdot0; #line 4536 "" + } else { +#line 4537 "" iranksetter = igetbits_(&comtrill_1.icrdot[isetshft[iwa - 1] - 1], &c__3, &c__27); -#line 4537 "" - } #line 4538 "" - if (iranksetter != 0 && irank != iranksetter + 1) { + } #line 4539 "" - *rmsshift = 1e3f; + if (iranksetter != 0 && irank != iranksetter + 1) { #line 4540 "" - return 0; + *rmsshift = 1e3f; #line 4541 "" - } + return 0; #line 4542 "" + } +#line 4543 "" } /* Computing 2nd power */ -#line 4543 "" +#line 4544 "" r__1 = shift; -#line 4543 "" - *rmsshift += r__1 * r__1; #line 4544 "" - if (*lasttime && dabs(shift) > 1e-4f) { + *rmsshift += r__1 * r__1; #line 4545 "" - if (mainnote) { + if (*lasttime && dabs(shift) > 1e-4f) { #line 4546 "" + if (mainnote) { +#line 4547 "" if (! bit_test(*nacc,29)) { -#line 4546 "" +#line 4547 "" goto L10; -#line 4546 "" - } #line 4547 "" - } else { + } #line 4548 "" + } else { +#line 4549 "" if (! bit_test(comtrill_1.icrdat[micrd[iwa] - 1],29)) { -#line 4548 "" +#line 4549 "" goto L10; -#line 4548 "" - } #line 4549 "" + } +#line 4550 "" } /* If here, "A" was set on a manual shift, so must cumulate the shift. Note that if there */ /* was a manual shift but auto-shift was zero, will not come thru here, but shift value */ /* will be left intact. */ -#line 4555 "" - if (mainnote) { #line 4556 "" - shift += (igetbits_(nacc, &c__7, &c__10) - 107) * .05f; + if (mainnote) { #line 4557 "" - } else { + shift += (igetbits_(nacc, &c__7, &c__10) - 107) * .05f; #line 4558 "" + } else { +#line 4559 "" shift += (igetbits_(&comtrill_1.icrdot[micrd[iwa] - 1], &c__7, &c__20) - 107) * .05f; -#line 4559 "" - } #line 4560 "" -L10: + } #line 4561 "" +L10: +#line 4562 "" if (*twooftwo) { /* Record the shift for this accidental */ -#line 4565 "" - if (shift < -5.35f) { #line 4566 "" - printl_(" ", (ftnlen)1); + if (shift < -5.35f) { #line 4567 "" + printl_(" ", (ftnlen)1); +#line 4568 "" printl_("WARNING: auto-generated accidental shift too bi"\ "g for PMX, ignoring", (ftnlen)66); -#line 4569 "" - } else { #line 4570 "" + } else { +#line 4571 "" r__1 = (shift + 5.35f) * 20; -#line 4570 "" - ishift = i_nint(&r__1); #line 4571 "" - if (mainnote) { + ishift = i_nint(&r__1); #line 4572 "" - setbits_(nacc, &c__7, &c__10, &ishift); + if (mainnote) { #line 4573 "" - } else { + setbits_(nacc, &c__7, &c__10, &ishift); #line 4574 "" + } else { +#line 4575 "" setbits_(&comtrill_1.icrdot[micrd[iwa] - 1], &c__7, & c__20, &ishift); -#line 4575 "" - } #line 4576 "" - } + } #line 4577 "" + } +#line 4578 "" } else { /* This is the earlier call to precrd, so need minimum shift */ -#line 4581 "" - shiftmin = dmin(shiftmin,shift); #line 4582 "" - } + shiftmin = dmin(shiftmin,shift); #line 4583 "" + } +#line 4584 "" } /* Bail out if this is the last accidental to check */ -#line 4587 "" +#line 4588 "" if (iwa == *naccid) { -#line 4587 "" +#line 4588 "" goto L1; -#line 4587 "" +#line 4588 "" } /* Add this accidental to the right barrier! Count down from highest barrier segment, */ /* find 1st one starting below top of accid, and first one starting below bot. */ -#line 4592 "" - for (ibelowtop = nsegrb; ibelowtop >= 1; --ibelowtop) { #line 4593 "" + for (ibelowtop = nsegrb; ibelowtop >= 1; --ibelowtop) { +#line 4594 "" if (segrb[(ibelowtop << 1) - 1] < nolev + segal[iacctype + (( nsegal[iacctype - 1] << 1) + 2) * 5 - 16]) { -#line 4595 "" - for (ibelowbot = ibelowtop; ibelowbot >= 1; --ibelowbot) { #line 4596 "" + for (ibelowbot = ibelowtop; ibelowbot >= 1; --ibelowbot) { +#line 4597 "" if (segrb[(ibelowbot << 1) - 1] < nolev + segal[iacctype + 4]) { -#line 4596 "" +#line 4597 "" goto L6; -#line 4596 "" +#line 4597 "" } -#line 4598 "" -/* L9: */ -#line 4598 "" - } #line 4599 "" - s_wsle(&io___323); +/* L9: */ #line 4599 "" + } +#line 4600 "" + s_wsle(&io___324); +#line 4600 "" do_lio(&c__9, &c__1, "Oops2!", (ftnlen)6); -#line 4599 "" - e_wsle(); #line 4600 "" - stop1_(); + e_wsle(); #line 4601 "" - } -#line 4602 "" -/* L5: */ + stop1_(); #line 4602 "" - } + } #line 4603 "" - s_wsle(&io___324); +/* L5: */ #line 4603 "" + } +#line 4604 "" + s_wsle(&io___325); +#line 4604 "" do_lio(&c__9, &c__1, "Ugh0! in crdaccs", (ftnlen)16); -#line 4603 "" - e_wsle(); #line 4604 "" - stop1_(); + e_wsle(); #line 4605 "" -L6: + stop1_(); #line 4606 "" +L6: +#line 4607 "" netgain = nsegal[iacctype - 1] - ibelowtop + ibelowbot; /* Shift high segments up */ -#line 4610 "" - if (netgain >= 0) { #line 4611 "" + if (netgain >= 0) { +#line 4612 "" i__2 = ibelowtop + 1; -#line 4611 "" - for (isegrb = nsegrb; isegrb >= i__2; --isegrb) { #line 4612 "" - segrb[(isegrb + netgain << 1) - 2] = segrb[(isegrb << 1) - 2]; + for (isegrb = nsegrb; isegrb >= i__2; --isegrb) { #line 4613 "" - segrb[(isegrb + netgain << 1) - 1] = segrb[(isegrb << 1) - 1]; + segrb[(isegrb + netgain << 1) - 2] = segrb[(isegrb << 1) - 2]; #line 4614 "" - ksegrb[isegrb + netgain - 1] = ksegrb[isegrb - 1]; + segrb[(isegrb + netgain << 1) - 1] = segrb[(isegrb << 1) - 1]; #line 4615 "" + ksegrb[isegrb + netgain - 1] = ksegrb[isegrb - 1]; +#line 4616 "" /* L7: */ -#line 4615 "" +#line 4616 "" } /* Set up 1st segment above accid */ -#line 4619 "" +#line 4620 "" segrb[(ibelowtop + netgain << 1) - 2] = segrb[(ibelowtop << 1) - 2]; -#line 4620 "" +#line 4621 "" segrb[(ibelowtop + netgain << 1) - 1] = nolev + segal[iacctype + ( (nsegal[iacctype - 1] << 1) + 2) * 5 - 16]; -#line 4622 "" - ksegrb[ibelowtop + netgain - 1] = ksegrb[ibelowtop - 1]; #line 4623 "" + ksegrb[ibelowtop + netgain - 1] = ksegrb[ibelowtop - 1]; +#line 4624 "" } else { /* netgain<0, must remove segments. Use same coding but reverse order, */ /* work from bottom up */ -#line 4628 "" +#line 4629 "" segrb[(ibelowtop + netgain << 1) - 2] = segrb[(ibelowtop << 1) - 2]; -#line 4629 "" +#line 4630 "" segrb[(ibelowtop + netgain << 1) - 1] = nolev + segal[iacctype + ( (nsegal[iacctype - 1] << 1) + 2) * 5 - 16]; -#line 4631 "" - ksegrb[ibelowtop + netgain - 1] = ksegrb[ibelowtop - 1]; #line 4632 "" + ksegrb[ibelowtop + netgain - 1] = ksegrb[ibelowtop - 1]; +#line 4633 "" i__2 = nsegrb; -#line 4632 "" - for (isegrb = ibelowtop + 1; isegrb <= i__2; ++isegrb) { #line 4633 "" - segrb[(isegrb + netgain << 1) - 2] = segrb[(isegrb << 1) - 2]; + for (isegrb = ibelowtop + 1; isegrb <= i__2; ++isegrb) { #line 4634 "" - segrb[(isegrb + netgain << 1) - 1] = segrb[(isegrb << 1) - 1]; + segrb[(isegrb + netgain << 1) - 2] = segrb[(isegrb << 1) - 2]; #line 4635 "" - ksegrb[isegrb + netgain - 1] = ksegrb[isegrb - 1]; + segrb[(isegrb + netgain << 1) - 1] = segrb[(isegrb << 1) - 1]; #line 4636 "" + ksegrb[isegrb + netgain - 1] = ksegrb[isegrb - 1]; +#line 4637 "" /* L12: */ -#line 4636 "" - } #line 4637 "" + } +#line 4638 "" } /* Insert new segments */ -#line 4641 "" +#line 4642 "" i__2 = nsegal[iacctype - 1] - 1; -#line 4641 "" - for (isega = 1; isega <= i__2; ++isega) { #line 4642 "" + for (isega = 1; isega <= i__2; ++isega) { +#line 4643 "" segrb[(ibelowbot + isega << 1) - 2] = shift + segal[iacctype + (( isega << 1) + 1) * 5 - 16]; -#line 4643 "" +#line 4644 "" segrb[(ibelowbot + isega << 1) - 1] = nolev + segal[iacctype + (( isega << 1) + 2) * 5 - 16]; -#line 4644 "" - if (mainnote) { #line 4645 "" - ksegrb[ibelowbot + isega - 1] = 0; + if (mainnote) { #line 4646 "" - } else { + ksegrb[ibelowbot + isega - 1] = 0; #line 4647 "" - ksegrb[ibelowbot + isega - 1] = micrd[iwa]; + } else { #line 4648 "" - } + ksegrb[ibelowbot + isega - 1] = micrd[iwa]; #line 4649 "" + } +#line 4650 "" /* L8: */ -#line 4649 "" +#line 4650 "" } /* Update number of barrier segments */ -#line 4653 "" +#line 4654 "" nsegrb += netgain; /* c */ /* c Temporary printout for boundary segments as built up */ @@ -11366,23 +11368,23 @@ L6: /* write(15,'(a/(2i5))')' micrd isetshft', */ /* * (micrd(iwa1),isetshft(iwa1),iwa1=1,iwa) */ /* c */ -#line 4663 "" +#line 4664 "" L1: -#line 4663 "" +#line 4664 "" ; -#line 4663 "" +#line 4664 "" } /* next accidental */ -#line 4664 "" +#line 4665 "" if (*lasttime && ! (*twooftwo)) { /* This is the final call on the pre-ask pass, so compute left-shift rqmt. */ -#line 4668 "" +#line 4669 "" r__1 = shiftmin * -20; -#line 4668 "" - *icashft = i_nint(&r__1); #line 4669 "" + *icashft = i_nint(&r__1); +#line 4670 "" } /* c */ /* c Temporary printout for boundary segments */ @@ -11395,7 +11397,7 @@ L1: /* * (micrd(iwa),isetshft(iwa),iwa=1,naccid) */ /* end if */ /* c */ -#line 4681 "" +#line 4682 "" return 0; } /* crdacc_ */ @@ -11432,7 +11434,7 @@ L1: integer *); /* Fortran I/O blocks */ - static cilist io___353 = { 0, 6, 0, 0, 0 }; + static cilist io___354 = { 0, 6, 0, 0, 0 }; @@ -11465,27 +11467,27 @@ L1: /* Initialize right-barrier */ -#line 4721 "" +#line 4722 "" /* Parameter adjustments */ -#line 4721 "" +#line 4722 "" --kicrd; -#line 4721 "" +#line 4722 "" -#line 4721 "" +#line 4722 "" /* Function Body */ -#line 4721 "" - segrb0[0] = 0.f; #line 4722 "" - segrb0[1] = -1e3f; + segrb0[0] = 0.f; #line 4723 "" - segrb0[2] = 0.f; + segrb0[1] = -1e3f; #line 4724 "" - segrb0[3] = 1e3f; + segrb0[2] = 0.f; #line 4725 "" - nsegrb0 = 2; + segrb0[3] = 1e3f; #line 4726 "" - ksegrb0[0] = -1; + nsegrb0 = 2; #line 4727 "" + ksegrb0[0] = -1; +#line 4728 "" ksegrb0[1] = -1; /* Search for left-shifted notes, Make up the initial right-barrier, which */ @@ -11493,124 +11495,124 @@ L1: /* irest()(27) is set if any notes are left-shifted */ /* Must use ALL chord notes, not just ones w/ accid's. */ -#line 4734 "" - if (bit_test(*irest,27)) { #line 4735 "" + if (bit_test(*irest,27)) { +#line 4736 "" i__1 = comtrill_1.icrd2; -#line 4735 "" - for (icrd = comtrill_1.icrd1 - 1; icrd <= i__1; ++icrd) { #line 4736 "" + for (icrd = comtrill_1.icrd1 - 1; icrd <= i__1; ++icrd) { +#line 4737 "" if (icrd == comtrill_1.icrd1 - 1) { /* Main note */ /* lshift = btest(ipl,8) */ -#line 4741 "" - lshift = bit_test(*ipl,8) || bit_test(*nacc,31); #line 4742 "" + lshift = bit_test(*ipl,8) || bit_test(*nacc,31); +#line 4743 "" if (lshift) { -#line 4742 "" +#line 4743 "" nolev = *nolevm; -#line 4742 "" - } #line 4743 "" + } +#line 4744 "" } else { /* Chord note */ -#line 4747 "" +#line 4748 "" lshift = bit_test(comtrill_1.icrdat[icrd - 1],23); /* if (lshift) nolev = igetbits(icrdat(icrd),7,12) */ -#line 4749 "" - if (lshift) { #line 4750 "" + if (lshift) { +#line 4751 "" nolev = igetbits_(&comtrill_1.icrdat[icrd - 1], &c__7, & c__12); -#line 4751 "" +#line 4752 "" if (bit_test(*nacc,31) && nolev == *nolevm + 1) { /* This note is not really shifted, It is the upper of a 2nd with the main */ /* note on an upstem, and Main note must be shifted. */ /* nacc(31) signals the real truth. */ -#line 4757 "" - lshift = FALSE_; #line 4758 "" - } + lshift = FALSE_; #line 4759 "" - } + } #line 4760 "" - } + } #line 4761 "" - if (lshift) { + } #line 4762 "" + if (lshift) { +#line 4763 "" i__2 = nsegrb0 - 1; -#line 4762 "" - for (isegrb = 1; isegrb <= i__2; ++isegrb) { #line 4763 "" + for (isegrb = 1; isegrb <= i__2; ++isegrb) { +#line 4764 "" if (segrb0[(isegrb + 1 << 1) - 1] > (real) (nolev - 1)) { /* Add this notehead to the right boundary here. Move all higher segs up 2. */ -#line 4767 "" +#line 4768 "" i__3 = isegrb + 1; -#line 4767 "" - for (iiseg = nsegrb0; iiseg >= i__3; --iiseg) { #line 4768 "" + for (iiseg = nsegrb0; iiseg >= i__3; --iiseg) { +#line 4769 "" segrb0[(iiseg + 2 << 1) - 2] = segrb0[(iiseg << 1) - 2]; -#line 4769 "" +#line 4770 "" segrb0[(iiseg + 2 << 1) - 1] = segrb0[(iiseg << 1) - 1]; -#line 4770 "" - ksegrb0[iiseg + 1] = ksegrb0[iiseg - 1]; #line 4771 "" + ksegrb0[iiseg + 1] = ksegrb0[iiseg - 1]; +#line 4772 "" /* L17: */ -#line 4771 "" - } #line 4772 "" - goto L18; + } #line 4773 "" - } + goto L18; #line 4774 "" + } +#line 4775 "" /* L16: */ -#line 4774 "" - } #line 4775 "" + } +#line 4776 "" L18: /* Insert notehead into list. Set kseg=-2 to signal notehead shift. */ -#line 4779 "" - iiseg = isegrb + 1; #line 4780 "" - segrb0[(iiseg << 1) - 2] = -1.2f; + iiseg = isegrb + 1; #line 4781 "" - segrb0[(iiseg << 1) - 1] = nolev - 1.f; + segrb0[(iiseg << 1) - 2] = -1.2f; #line 4782 "" - ksegrb0[iiseg - 1] = -2; + segrb0[(iiseg << 1) - 1] = nolev - 1.f; #line 4783 "" - segrb0[(iiseg + 1 << 1) - 2] = 0.f; + ksegrb0[iiseg - 1] = -2; #line 4784 "" - segrb0[(iiseg + 1 << 1) - 1] = nolev + 1.f; + segrb0[(iiseg + 1 << 1) - 2] = 0.f; #line 4785 "" - ksegrb0[iiseg] = -1; + segrb0[(iiseg + 1 << 1) - 1] = nolev + 1.f; #line 4786 "" - nsegrb0 += 2; + ksegrb0[iiseg] = -1; #line 4787 "" - } + nsegrb0 += 2; #line 4788 "" + } +#line 4789 "" /* L15: */ -#line 4788 "" - } #line 4789 "" + } +#line 4790 "" } /* Done setting right barrier for left-shifted noteheads */ -#line 4793 "" - tagged = FALSE_; #line 4794 "" + tagged = FALSE_; +#line 4795 "" manual = FALSE_; /* Preprocess to check for manual shifts. */ @@ -11624,302 +11626,302 @@ L18: /* End if */ /* End if */ -#line 4807 "" - maxmanshft = 0; #line 4808 "" + maxmanshft = 0; +#line 4809 "" i__1 = *naccid; -#line 4808 "" - for (i__ = 1; i__ <= i__1; ++i__) { #line 4809 "" + for (i__ = 1; i__ <= i__1; ++i__) { +#line 4810 "" if (kicrd[i__] == 0) { /* Main note */ -#line 4813 "" - manshft = igetbits_(nacc, &c__7, &c__10); #line 4814 "" - if (manshft != 0) { + manshft = igetbits_(nacc, &c__7, &c__10); #line 4815 "" - manual = TRUE_; + if (manshft != 0) { #line 4816 "" - if (bit_test(*nacc,29)) { + manual = TRUE_; #line 4817 "" - tagged = TRUE_; + if (bit_test(*nacc,29)) { #line 4818 "" + tagged = TRUE_; +#line 4819 "" } else { /* maxmanshft = max(maxmanshft,64-manshft) */ /* Computing MAX */ -#line 4820 "" +#line 4821 "" i__2 = maxmanshft, i__3 = 107 - manshft; -#line 4820 "" - maxmanshft = max(i__2,i__3); #line 4821 "" - } + maxmanshft = max(i__2,i__3); #line 4822 "" - } + } #line 4823 "" + } +#line 4824 "" } else { /* Chord note */ -#line 4827 "" +#line 4828 "" manshft = igetbits_(&comtrill_1.icrdot[kicrd[i__] - 1], &c__7, & c__20); -#line 4828 "" - if (manshft != 0) { #line 4829 "" - manual = TRUE_; + if (manshft != 0) { #line 4830 "" - if (bit_test(comtrill_1.icrdat[kicrd[i__] - 1],29)) { + manual = TRUE_; #line 4831 "" - tagged = TRUE_; + if (bit_test(comtrill_1.icrdat[kicrd[i__] - 1],29)) { #line 4832 "" + tagged = TRUE_; +#line 4833 "" } else { /* maxmanshft = max(maxmanshft,64-manshft) */ /* Computing MAX */ -#line 4834 "" +#line 4835 "" i__2 = maxmanshft, i__3 = 107 - manshft; -#line 4834 "" - maxmanshft = max(i__2,i__3); #line 4835 "" - } + maxmanshft = max(i__2,i__3); #line 4836 "" - } + } #line 4837 "" - } + } #line 4838 "" + } +#line 4839 "" /* L13: */ -#line 4838 "" - } #line 4839 "" - if (manual) { + } #line 4840 "" + if (manual) { +#line 4841 "" if (tagged) { /* zero out all untagged shifts */ -#line 4844 "" +#line 4845 "" i__1 = *naccid; -#line 4844 "" - for (i__ = 1; i__ <= i__1; ++i__) { #line 4845 "" - if (kicrd[i__] == 0) { + for (i__ = 1; i__ <= i__1; ++i__) { #line 4846 "" + if (kicrd[i__] == 0) { +#line 4847 "" if (! bit_test(*nacc,29)) { -#line 4846 "" +#line 4847 "" setbits_(nacc, &c__7, &c__10, &c__0); -#line 4846 "" - } #line 4847 "" - } else { + } #line 4848 "" + } else { +#line 4849 "" if (! bit_test(comtrill_1.icrdat[kicrd[i__] - 1],29)) { -#line 4848 "" +#line 4849 "" setbits_(&comtrill_1.icrdot[kicrd[i__] - 1], &c__7, & c__20, &c__0); -#line 4848 "" +#line 4849 "" } -#line 4850 "" - } #line 4851 "" + } +#line 4852 "" /* L14: */ -#line 4851 "" - } #line 4852 "" + } +#line 4853 "" } else { /* There are manual shifts but none tagged. Only proceed if "Ao" was entered */ -#line 4856 "" - if (! bit_test(*nacc,28)) { #line 4857 "" - *icashft = maxmanshft; + if (! bit_test(*nacc,28)) { #line 4858 "" - return 0; + *icashft = maxmanshft; #line 4859 "" - } + return 0; #line 4860 "" - } + } #line 4861 "" - } + } #line 4862 "" + } +#line 4863 "" if (bit_test(*nacc,28)) { /* Take the accidentals in order as originally input, then exit. */ -#line 4866 "" +#line 4867 "" crdacc_(nacc, naccid, &kicrd[1], nolevm, &rmsshift, &c_true, &idummy, &idummy, segrb0, ksegrb0, &nsegrb0, twooftwo, icashft); -#line 4868 "" +#line 4869 "" return 0; /* end if */ -#line 4870 "" +#line 4871 "" } else if (*naccid == 3) { /* Special treatment if 3 accidentals in chord. If there aren't accids on a 2nd */ /* then place in order top, bottom, middle. */ -#line 4875 "" - for (i__ = 1; i__ <= 3; ++i__) { #line 4876 "" - if (kicrd[i__] == 0) { + for (i__ = 1; i__ <= 3; ++i__) { #line 4877 "" - irank = *icrdot0; + if (kicrd[i__] == 0) { #line 4878 "" - nolev = *nolevm; + irank = *icrdot0; #line 4879 "" - } else { + nolev = *nolevm; #line 4880 "" + } else { +#line 4881 "" irank = igetbits_(&comtrill_1.icrdot[kicrd[i__] - 1], &c__3, & c__27); -#line 4881 "" +#line 4882 "" nolev = igetbits_(&comtrill_1.icrdat[kicrd[i__] - 1], &c__7, & c__12); -#line 4882 "" - } #line 4883 "" - if (irank == 1) { + } #line 4884 "" - micrd[0] = kicrd[i__]; + if (irank == 1) { #line 4885 "" - } else { + micrd[0] = kicrd[i__]; #line 4886 "" - micrd[5 - irank - 1] = kicrd[i__]; + } else { #line 4887 "" - } + micrd[5 - irank - 1] = kicrd[i__]; #line 4888 "" - if (irank == 2) { + } #line 4889 "" - levmidacc = nolev; + if (irank == 2) { #line 4890 "" - } + levmidacc = nolev; #line 4891 "" + } +#line 4892 "" /* L20: */ -#line 4891 "" - } #line 4892 "" + } +#line 4893 "" if (*levmaxacc != levmidacc + 1 && levmidacc != *levminacc + 1) { -#line 4894 "" +#line 4895 "" crdacc_(nacc, naccid, micrd, nolevm, &rmsshift, &c_true, &idummy, &idummy, segrb0, ksegrb0, &nsegrb0, twooftwo, icashft); -#line 4896 "" - return 0; #line 4897 "" - } + return 0; #line 4898 "" - } + } #line 4899 "" + } +#line 4900 "" rmsmin = 1e5f; /* Initialize permutation array */ -#line 4903 "" +#line 4904 "" i__1 = *naccid; -#line 4903 "" - for (i__ = 1; i__ <= i__1; ++i__) { #line 4904 "" - iperm[i__ - 1] = i__; + for (i__ = 1; i__ <= i__1; ++i__) { #line 4905 "" + iperm[i__ - 1] = i__; +#line 4906 "" /* L7: */ -#line 4905 "" +#line 4906 "" } /* Start looping over permutations */ -#line 4909 "" - for (ip = 1; ip <= 5041; ++ip) { #line 4910 "" + for (ip = 1; ip <= 5041; ++ip) { +#line 4911 "" if (ip != 1) { /* Work the magic algorithm to get the next permutation */ -#line 4914 "" - for (k = *naccid - 1; k >= 1; --k) { #line 4915 "" + for (k = *naccid - 1; k >= 1; --k) { +#line 4916 "" if (iperm[k - 1] <= iperm[k]) { -#line 4915 "" +#line 4916 "" goto L2; -#line 4915 "" - } #line 4916 "" + } +#line 4917 "" /* L1: */ -#line 4916 "" +#line 4917 "" } /* If here, we just got the last permutation, so exit the loop over permutations */ -#line 4920 "" - goto L10; #line 4921 "" -L2: + goto L10; #line 4922 "" - for (j = *naccid; j >= 1; --j) { +L2: #line 4923 "" + for (j = *naccid; j >= 1; --j) { +#line 4924 "" if (iperm[k - 1] <= iperm[j - 1]) { -#line 4923 "" +#line 4924 "" goto L4; -#line 4923 "" - } #line 4924 "" + } +#line 4925 "" /* L3: */ -#line 4924 "" - } #line 4925 "" -L4: + } #line 4926 "" - it = iperm[j - 1]; +L4: #line 4927 "" - iperm[j - 1] = iperm[k - 1]; + it = iperm[j - 1]; #line 4928 "" - iperm[k - 1] = it; + iperm[j - 1] = iperm[k - 1]; #line 4929 "" - is = k + 1; + iperm[k - 1] = it; #line 4930 "" - for (ir = *naccid; ir >= 1; --ir) { + is = k + 1; #line 4931 "" + for (ir = *naccid; ir >= 1; --ir) { +#line 4932 "" if (ir <= is) { -#line 4931 "" +#line 4932 "" goto L6; -#line 4931 "" - } #line 4932 "" - it = iperm[ir - 1]; + } #line 4933 "" - iperm[ir - 1] = iperm[is - 1]; + it = iperm[ir - 1]; #line 4934 "" - iperm[is - 1] = it; + iperm[ir - 1] = iperm[is - 1]; #line 4935 "" - ++is; + iperm[is - 1] = it; #line 4936 "" + ++is; +#line 4937 "" /* L5: */ -#line 4936 "" - } #line 4937 "" -L6: + } #line 4938 "" +L6: +#line 4939 "" ; -#line 4938 "" +#line 4939 "" } /* New we have a permutation. Take icrd values out of kicrd and put them into */ /* micrd in the order of the permutation */ -#line 4943 "" +#line 4944 "" i__1 = *naccid; -#line 4943 "" - for (i__ = 1; i__ <= i__1; ++i__) { #line 4944 "" - micrd[i__ - 1] = kicrd[iperm[i__ - 1]]; + for (i__ = 1; i__ <= i__1; ++i__) { #line 4945 "" + micrd[i__ - 1] = kicrd[iperm[i__ - 1]]; +#line 4946 "" /* L9: */ -#line 4945 "" +#line 4946 "" } /* c */ /* c Temporary printout */ /* c */ /* write(15,'(/a6,10i3)')'perm:',(iperm(i),i=1,naccid) */ /* c */ -#line 4951 "" +#line 4952 "" crdacc_(nacc, naccid, micrd, nolevm, &rmsshift, &c_false, levmaxacc, icrdot0, segrb0, ksegrb0, &nsegrb0, twooftwo, icashft); /* c */ @@ -11927,61 +11929,61 @@ L6: /* c */ /* write(15,*)'perm done, rmsshift:',rmsshift */ /* c */ -#line 4958 "" +#line 4959 "" if (rmsshift < rmsmin) { /* Save this permutation, reset minrms */ -#line 4962 "" +#line 4963 "" i__1 = *naccid; -#line 4962 "" - for (i__ = 1; i__ <= i__1; ++i__) { #line 4963 "" - ipermsav[i__ - 1] = iperm[i__ - 1]; + for (i__ = 1; i__ <= i__1; ++i__) { #line 4964 "" - rmsmin = rmsshift; + ipermsav[i__ - 1] = iperm[i__ - 1]; #line 4965 "" + rmsmin = rmsshift; +#line 4966 "" /* L11: */ -#line 4965 "" - } #line 4966 "" - } -#line 4967 "" -/* L8: */ + } #line 4967 "" - } + } #line 4968 "" - s_wsle(&io___353); +/* L8: */ #line 4968 "" + } +#line 4969 "" + s_wsle(&io___354); +#line 4969 "" do_lio(&c__9, &c__1, "Should not BEEEEEE here!", (ftnlen)24); -#line 4968 "" - e_wsle(); #line 4969 "" - stop1_(); + e_wsle(); #line 4970 "" + stop1_(); +#line 4971 "" L10: /* Done looping, get info for the final choice */ -#line 4974 "" +#line 4975 "" i__1 = *naccid; -#line 4974 "" - for (i__ = 1; i__ <= i__1; ++i__) { #line 4975 "" - micrd[i__ - 1] = kicrd[ipermsav[i__ - 1]]; + for (i__ = 1; i__ <= i__1; ++i__) { #line 4976 "" + micrd[i__ - 1] = kicrd[ipermsav[i__ - 1]]; +#line 4977 "" /* L12: */ -#line 4976 "" +#line 4977 "" } /* c */ /* c Temporary printout */ /* c */ /* write(15,'(/a6,10i3)')'Final perm:',(ipermsav(i),i=1,naccid) */ /* c */ -#line 4982 "" +#line 4983 "" crdacc_(nacc, naccid, micrd, nolevm, &rmsshift, &c_true, &idummy, &idummy, segrb0, ksegrb0, &nsegrb0, twooftwo, icashft); -#line 4984 "" +#line 4985 "" return 0; } /* crdaccs_ */ @@ -12015,191 +12017,191 @@ L10: static char acsymq[3]; static integer lnoten; -#line 4992 "" +#line 4993 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 4992 "" - *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; #line 4993 "" + *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; +#line 4994 "" if (*ihshft == -107) { -#line 4993 "" +#line 4994 "" *ihshft = 0; -#line 4993 "" +#line 4994 "" } /* c */ /* c If main note shifted left, so shift accid. Terminate below, when acc. is done. */ /* c */ -#line 4997 "" +#line 4998 "" if (*ihshft != 0) { /* Accid must be shifted horizontally */ -#line 5001 "" +#line 5002 "" if (*ihshft < 0) { /* Writing concatenation */ -#line 5002 "" +#line 5003 "" i__1[0] = 1, a__1[0] = sq; -#line 5002 "" +#line 5003 "" i__1[1] = 8, a__1[1] = "loffset{"; -#line 5002 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5003 "" - *ihshft = -(*ihshft); + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5004 "" + *ihshft = -(*ihshft); +#line 5005 "" } else { /* Writing concatenation */ -#line 5005 "" +#line 5006 "" i__1[0] = 1, a__1[0] = sq; -#line 5005 "" +#line 5006 "" i__1[1] = 8, a__1[1] = "roffset{"; -#line 5005 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5006 "" - } + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5007 "" - hshft = *ihshft * .05f; + } #line 5008 "" - if (hshft < 1.f) { + hshft = *ihshft * .05f; #line 5009 "" + if (hshft < 1.f) { +#line 5010 "" ici__1.icierr = 0; -#line 5009 "" +#line 5010 "" ici__1.icirnum = 1; -#line 5009 "" +#line 5010 "" ici__1.icirlen = 3; -#line 5009 "" +#line 5010 "" ici__1.iciunit = notexq + 9; -#line 5009 "" +#line 5010 "" ici__1.icifmt = "(f3.2)"; -#line 5009 "" +#line 5010 "" s_wsfi(&ici__1); -#line 5009 "" +#line 5010 "" do_fio(&c__1, (char *)&hshft, (ftnlen)sizeof(real)); -#line 5009 "" - e_wsfi(); #line 5010 "" - *lnote = 12; + e_wsfi(); #line 5011 "" - } else { + *lnote = 12; #line 5012 "" + } else { +#line 5013 "" ici__1.icierr = 0; -#line 5012 "" +#line 5013 "" ici__1.icirnum = 1; -#line 5012 "" +#line 5013 "" ici__1.icirlen = 4; -#line 5012 "" +#line 5013 "" ici__1.iciunit = notexq + 9; -#line 5012 "" +#line 5013 "" ici__1.icifmt = "(f4.2)"; -#line 5012 "" +#line 5013 "" s_wsfi(&ici__1); -#line 5012 "" +#line 5013 "" do_fio(&c__1, (char *)&hshft, (ftnlen)sizeof(real)); -#line 5012 "" - e_wsfi(); #line 5013 "" - *lnote = 13; + e_wsfi(); #line 5014 "" + *lnote = 13; +#line 5015 "" } /* Writing concatenation */ -#line 5015 "" +#line 5016 "" i__2[0] = *lnote, a__2[0] = notexq; -#line 5015 "" +#line 5016 "" i__2[1] = 2, a__2[1] = "}{"; -#line 5015 "" +#line 5016 "" i__2[2] = 1, a__2[2] = sq; -#line 5015 "" - s_cat(notexq, a__2, i__2, &c__3, (ftnlen)79); #line 5016 "" - *lnote += 3; + s_cat(notexq, a__2, i__2, &c__3, (ftnlen)79); #line 5017 "" - } else { + *lnote += 3; #line 5018 "" - s_copy(notexq, sq, (ftnlen)79, (ftnlen)1); + } else { #line 5019 "" - *lnote = 1; + s_copy(notexq, sq, (ftnlen)79, (ftnlen)1); #line 5020 "" - } + *lnote = 1; #line 5021 "" + } +#line 5022 "" if (bit_test(*nacc,3)) { /* Writing concatenation */ -#line 5022 "" +#line 5023 "" i__1[0] = *lnote, a__1[0] = notexq; -#line 5022 "" +#line 5023 "" i__1[1] = 3, a__1[1] = "big"; -#line 5022 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5023 "" - *lnote += 3; + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5024 "" - } + *lnote += 3; #line 5025 "" + } +#line 5026 "" if (*caut) { /* Cautionary accidental. Need to define bigcna,... in pmx.tex */ /* Writing concatenation */ -#line 5029 "" +#line 5030 "" i__1[0] = *lnote, a__1[0] = notexq; -#line 5029 "" +#line 5030 "" i__1[1] = 1, a__1[1] = "c"; -#line 5029 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5030 "" - ++(*lnote); + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5031 "" - } + ++(*lnote); #line 5032 "" + } +#line 5033 "" accsym_(nacc, acsymq, &lacc, (ftnlen)3); /* Writing concatenation */ -#line 5033 "" +#line 5034 "" i__1[0] = *lnote, a__1[0] = notexq; -#line 5033 "" +#line 5034 "" i__1[1] = lacc, a__1[1] = acsymq; -#line 5033 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5034 "" - *lnote += lacc; + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5035 "" - noleva = *nolev; + *lnote += lacc; #line 5036 "" + noleva = *nolev; +#line 5037 "" if (*ivshft != 0) { -#line 5036 "" +#line 5037 "" noleva = noleva + *ivshft - 32; -#line 5036 "" - } #line 5037 "" - notefq_(noteq, &lnoten, &noleva, ncm, (ftnlen)8); + } #line 5038 "" + notefq_(noteq, &lnoten, &noleva, ncm, (ftnlen)8); +#line 5039 "" if (lnoten == 1) { -#line 5038 "" +#line 5039 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 5038 "" +#line 5039 "" } /* Writing concatenation */ -#line 5039 "" +#line 5040 "" i__1[0] = *lnote, a__1[0] = notexq; -#line 5039 "" +#line 5040 "" i__1[1] = lnoten, a__1[1] = noteq; -#line 5039 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5040 "" - *lnote += lnoten; + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5041 "" + *lnote += lnoten; +#line 5042 "" if (*ihshft != 0) { /* Terminate horizontal shift */ /* Writing concatenation */ -#line 5045 "" +#line 5046 "" i__1[0] = *lnote, a__1[0] = notexq; -#line 5045 "" +#line 5046 "" i__1[1] = 1, a__1[1] = "}"; -#line 5045 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5046 "" - ++(*lnote); + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 5047 "" - } + ++(*lnote); #line 5048 "" + } +#line 5049 "" return 0; } /* doacc_ */ @@ -12265,8 +12267,8 @@ L10: integer *); /* Fortran I/O blocks */ - static cilist io___381 = { 0, 6, 0, 0, 0 }; static cilist io___382 = { 0, 6, 0, 0, 0 }; + static cilist io___383 = { 0, 6, 0, 0, 0 }; @@ -12278,43 +12280,43 @@ L10: /* Set counter (for this note) for chord notes present. Set notmain=T. */ /* Will test for notmain=.true. in addmidi to tell whether to save pitch. */ -#line 5102 "" +#line 5103 "" /* Parameter adjustments */ -#line 5102 "" +#line 5103 "" irest -= 25; -#line 5102 "" +#line 5103 "" --nornb; -#line 5102 "" +#line 5103 "" ihornb -= 25; -#line 5102 "" +#line 5103 "" ulq -= 25; -#line 5102 "" +#line 5103 "" -#line 5102 "" +#line 5103 "" /* Function Body */ -#line 5102 "" - commidi_1.nmidcrd = 0; #line 5103 "" - commidi_1.notmain = TRUE_; + commidi_1.nmidcrd = 0; #line 5104 "" - commidi_1.crdacc = FALSE_; + commidi_1.notmain = TRUE_; #line 5105 "" + commidi_1.crdacc = FALSE_; +#line 5106 "" i__1 = comtrill_1.icrd2; -#line 5105 "" - for (icrd = comtrill_1.icrd1; icrd <= i__1; ++icrd) { #line 5106 "" - lnote = 0; + for (icrd = comtrill_1.icrd1; icrd <= i__1; ++icrd) { #line 5107 "" + lnote = 0; +#line 5108 "" nolev = igetbits_(&comtrill_1.icrdat[icrd - 1], &c__7, &c__12); /* 3/8/03 save original pitch to use in midi, in case 2nds alter things. */ -#line 5111 "" +#line 5112 "" nolevo = nolev; /* Check for special situations with 2nds (see precrd). */ -#line 5115 "" +#line 5116 "" if (bit_test(*nacc,30) && nolev == *nolevm - 1) { /* Upstem, 2nd with upper as main, interchange pitches, */ @@ -12322,87 +12324,87 @@ L10: /* if dotted, probably had shifted dot, dot parameters must be moved */ /* from chord to main */ -#line 5122 "" - nolev = *nolevm; #line 5123 "" + nolev = *nolevm; +#line 5124 "" if (bit_test(comtrill_1.icrdat[icrd - 1],26)) { /* Orig. chord note dot shift, must transfer to main. */ -#line 5127 "" - icrdotsav = comtrill_1.icrdot[icrd - 1]; #line 5128 "" - icrdatsav = comtrill_1.icrdat[icrd - 1]; + icrdotsav = comtrill_1.icrdot[icrd - 1]; #line 5129 "" + icrdatsav = comtrill_1.icrdat[icrd - 1]; +#line 5130 "" if (bit_test(irest[*ivx + *ip * 24],19)) { /* Main note (upper) had a dot shift, must move it to chord */ -#line 5133 "" +#line 5134 "" setbits_(&comtrill_1.icrdat[icrd - 1], &c__1, &c__26, & c__1); -#line 5134 "" +#line 5135 "" r__1 = comcc_1.updot[*ivx + (comcc_1.ndotmv[*ivx - 1] + 1) * 24 - 25] * 10; -#line 5134 "" +#line 5135 "" i__2 = i_nint(&r__1) + 64; -#line 5134 "" +#line 5135 "" setbits_(&comtrill_1.icrdot[icrd - 1], &c__7, &c__0, & i__2); -#line 5136 "" +#line 5137 "" r__1 = comcc_1.rtdot[*ivx + (comcc_1.ndotmv[*ivx - 1] + 1) * 24 - 25] * 10; -#line 5136 "" +#line 5137 "" i__2 = i_nint(&r__1) + 64; -#line 5136 "" +#line 5137 "" setbits_(&comtrill_1.icrdot[icrd - 1], &c__7, &c__7, & i__2); /* May need to worry about other chord params (accid shefts etc) later */ -#line 5141 "" - } else { #line 5142 "" + } else { +#line 5143 "" comtrill_1.icrdat[icrd - 1] = bit_clear(comtrill_1.icrdat[ icrd - 1],26); -#line 5143 "" +#line 5144 "" } /* We are adding a main note dot shift, so push any later ones back */ -#line 5148 "" - if (! bit_test(irest[*ivx + *ip * 24],19)) { #line 5149 "" - ++comcc_1.maxdotmv[*ivx - 1]; + if (! bit_test(irest[*ivx + *ip * 24],19)) { #line 5150 "" + ++comcc_1.maxdotmv[*ivx - 1]; +#line 5151 "" i__2 = comcc_1.ndotmv[*ivx - 1] + 2; -#line 5150 "" +#line 5151 "" for (indm = comcc_1.maxdotmv[*ivx - 1]; indm >= i__2; --indm) { -#line 5151 "" +#line 5152 "" comcc_1.updot[*ivx + indm * 24 - 25] = comcc_1.updot[* ivx + (indm - 1) * 24 - 25]; -#line 5152 "" +#line 5153 "" comcc_1.rtdot[*ivx + indm * 24 - 25] = comcc_1.rtdot[* ivx + (indm - 1) * 24 - 25]; -#line 5153 "" +#line 5154 "" /* L1: */ -#line 5153 "" - } #line 5154 "" - } + } #line 5155 "" - irest[*ivx + *ip * 24] = bit_set(irest[*ivx + *ip * 24],19); + } #line 5156 "" + irest[*ivx + *ip * 24] = bit_set(irest[*ivx + *ip * 24],19); +#line 5157 "" comcc_1.updot[*ivx + (comcc_1.ndotmv[*ivx - 1] + 1) * 24 - 25] = ((127 & icrdotsav) - 64) * .1f; -#line 5157 "" +#line 5158 "" comcc_1.rtdot[*ivx + (comcc_1.ndotmv[*ivx - 1] + 1) * 24 - 25] = ((127 & lbit_shift(icrdotsav, (ftnlen)-7)) - 64) * .1f; -#line 5159 "" - } #line 5160 "" + } +#line 5161 "" } else if (bit_test(*nacc,31) && nolev == *nolevm + 1) { /* Downstem, 2nd with lower as main, interchange pitches, */ @@ -12410,63 +12412,63 @@ L10: /* probably had shifted dot, dot parameters must be moved from */ /* main to chord */ -#line 5167 "" - nolev = *nolevm; #line 5168 "" - if (bit_test(irest[*ivx + *ip * 24],19)) { + nolev = *nolevm; #line 5169 "" - icrdotsav = comtrill_1.icrdot[icrd - 1]; + if (bit_test(irest[*ivx + *ip * 24],19)) { #line 5170 "" - icrdatsav = comtrill_1.icrdat[icrd - 1]; + icrdotsav = comtrill_1.icrdot[icrd - 1]; #line 5171 "" + icrdatsav = comtrill_1.icrdat[icrd - 1]; +#line 5172 "" comtrill_1.icrdat[icrd - 1] = bit_set(comtrill_1.icrdat[icrd - 1],26); /* bits in icrdot */ /* 0-6 10*abs(vertical dot shift in \internote) + 64 */ /* 7-13 10*abs(horizontal dot shift in \internote) + 64 */ /* Assuming >0 for now! */ -#line 5176 "" +#line 5177 "" r__1 = comcc_1.updot[*ivx + (comcc_1.ndotmv[*ivx - 1] + 1) * 24 - 25] * 10; -#line 5176 "" +#line 5177 "" i__2 = i_nint(&r__1) + 64; -#line 5176 "" +#line 5177 "" setbits_(&comtrill_1.icrdot[icrd - 1], &c__7, &c__0, &i__2); -#line 5178 "" +#line 5179 "" r__1 = comcc_1.rtdot[*ivx + (comcc_1.ndotmv[*ivx - 1] + 1) * 24 - 25] * 10; -#line 5178 "" +#line 5179 "" i__2 = i_nint(&r__1) + 64; -#line 5178 "" +#line 5179 "" setbits_(&comtrill_1.icrdot[icrd - 1], &c__7, &c__7, &i__2); /* Must also set dot shift for (now) main note (orig. chord note). */ -#line 5183 "" - if (bit_test(icrdatsav,26)) { #line 5184 "" + if (bit_test(icrdatsav,26)) { +#line 5185 "" comcc_1.updot[*ivx + (comcc_1.ndotmv[*ivx - 1] + 1) * 24 - 25] = ((127 & icrdotsav) - 64) * .1f; -#line 5185 "" +#line 5186 "" comcc_1.rtdot[*ivx + (comcc_1.ndotmv[*ivx - 1] + 1) * 24 - 25] = ((127 & lbit_shift(icrdotsav, (ftnlen)-7)) - 64) * .1f; -#line 5187 "" +#line 5188 "" } else { /* No dot move on original chord (now main) note, */ -#line 5191 "" +#line 5192 "" comcc_1.updot[*ivx + (comcc_1.ndotmv[*ivx - 1] + 1) * 24 - 25] = 0.f; -#line 5192 "" +#line 5193 "" comcc_1.rtdot[*ivx + (comcc_1.ndotmv[*ivx - 1] + 1) * 24 - 25] = 0.f; -#line 5193 "" - } #line 5194 "" - } + } #line 5195 "" + } +#line 5196 "" } /* Lower dot for lower-voice notes?. Conditions are: */ @@ -12476,282 +12478,282 @@ L10: /* 4. Not a rest (cannot be a rest in a chord!) */ /* . 5. Flag (lowdot) is set to true */ -#line 5204 "" - if (comarp_1.lowdot && *nvmx == 2 && *ivx <= *nv) { #line 5205 "" + if (comarp_1.lowdot && *nvmx == 2 && *ivx <= *nv) { +#line 5206 "" i__2 = log2_(nodu); -#line 5205 "" - if (pow_ii(&c__2, &i__2) != *nodu && (nolev - *ncm) % 2 == 0) { #line 5206 "" + if (pow_ii(&c__2, &i__2) != *nodu && (nolev - *ncm) % 2 == 0) { +#line 5207 "" if (bit_test(comtrill_1.icrdat[icrd - 1],26)) { /* Note already in movdot list. Drop by 2. */ -#line 5210 "" +#line 5211 "" i__2 = igetbits_(&comtrill_1.icrdot[icrd - 1], &c__7, & c__0) - 20; -#line 5210 "" +#line 5211 "" setbits_(&comtrill_1.icrdot[icrd - 1], &c__7, &c__0, & i__2); -#line 5212 "" +#line 5213 "" } else { /* Not in list so just move it right now */ -#line 5216 "" +#line 5217 "" i__2 = igetbits_(islur, &c__1, &c__3); -#line 5216 "" +#line 5217 "" dotmov_(&c_b1007, &c_b1008, soutq, lsout, &i__2, (ftnlen) 80); -#line 5217 "" - } #line 5218 "" - } + } #line 5219 "" - } + } #line 5220 "" + } +#line 5221 "" if (bit_test(comtrill_1.icrdat[icrd - 1],26)) { /* Move the dot. Basic call for chord notes, not main note. */ -#line 5224 "" - updotc = ((127 & comtrill_1.icrdot[icrd - 1]) - 64) * .1f; #line 5225 "" + updotc = ((127 & comtrill_1.icrdot[icrd - 1]) - 64) * .1f; +#line 5226 "" rtdotc = ((127 & lbit_shift(comtrill_1.icrdot[icrd - 1], (ftnlen) -7)) - 64) * .1f; -#line 5226 "" +#line 5227 "" i__2 = igetbits_(islur, &c__1, &c__3); -#line 5226 "" - dotmov_(&updotc, &rtdotc, soutq, lsout, &i__2, (ftnlen)80); #line 5227 "" - } + dotmov_(&updotc, &rtdotc, soutq, lsout, &i__2, (ftnlen)80); #line 5228 "" - isleft = bit_test(comtrill_1.icrdat[icrd - 1],23); + } #line 5229 "" + isleft = bit_test(comtrill_1.icrdat[icrd - 1],23); +#line 5230 "" isright = bit_test(comtrill_1.icrdat[icrd - 1],24); /* Check for ornament in chord. */ -#line 5233 "" - if (comtrill_1.icrdorn[icrd - 1] > 0) { #line 5234 "" + if (comtrill_1.icrdorn[icrd - 1] > 0) { +#line 5235 "" putorn_(&comtrill_1.icrdorn[icrd - 1], &nolev, nolevm, nodu, & nornb[1], ulq + 25, ibmcnt, ivx, ncm, islur, nvmx, nv, & ihornb[25], stemlen, outq, &lout, ip, &c__0, beamon, & c_true, (ftnlen)1, (ftnlen)79); -#line 5237 "" - addstr_(outq, &lout, soutq, lsout, (ftnlen)79, (ftnlen)80); #line 5238 "" + addstr_(outq, &lout, soutq, lsout, (ftnlen)79, (ftnlen)80); +#line 5239 "" } /* Chord-note symbol. First check for breve */ -#line 5242 "" +#line 5243 "" if (*nodu == 128) { /* Writing concatenation */ -#line 5243 "" +#line 5244 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5243 "" +#line 5244 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5243 "" +#line 5244 "" i__3[1] = 6, a__1[1] = "zbreve"; -#line 5243 "" - s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5244 "" - lsym = 7; + s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5245 "" + lsym = 7; +#line 5246 "" } else { /* Not a breve chord. Get first letters in chord-note symbol */ -#line 5249 "" +#line 5250 "" if (isleft) { /* Writing concatenation */ -#line 5250 "" +#line 5251 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5250 "" +#line 5251 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5250 "" +#line 5251 "" i__3[1] = 1, a__1[1] = "l"; -#line 5250 "" - s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5251 "" + s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); +#line 5252 "" } else if (isright) { /* Writing concatenation */ -#line 5252 "" +#line 5253 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5252 "" +#line 5253 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5252 "" +#line 5253 "" i__3[1] = 1, a__1[1] = "r"; -#line 5252 "" - s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5253 "" + s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); +#line 5254 "" } else { /* Writing concatenation */ -#line 5254 "" +#line 5255 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5254 "" +#line 5255 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5254 "" +#line 5255 "" i__3[1] = 1, a__1[1] = "z"; -#line 5254 "" - s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5255 "" - } + s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5256 "" + } +#line 5257 "" if (*nodu >= 64) { /* Writing concatenation */ -#line 5257 "" +#line 5258 "" i__3[0] = 2, a__1[0] = nosymq; -#line 5257 "" +#line 5258 "" i__3[1] = 1, a__1[1] = "w"; -#line 5257 "" - s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5258 "" + s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); +#line 5259 "" } else if (*nodu >= 32) { /* Writing concatenation */ -#line 5259 "" +#line 5260 "" i__3[0] = 2, a__1[0] = nosymq; -#line 5259 "" +#line 5260 "" i__3[1] = 1, a__1[1] = "h"; -#line 5259 "" - s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5260 "" + s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); +#line 5261 "" } else { /* Writing concatenation */ -#line 5261 "" +#line 5262 "" i__3[0] = 2, a__1[0] = nosymq; -#line 5261 "" +#line 5262 "" i__3[1] = 1, a__1[1] = "q"; -#line 5261 "" - s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5262 "" - } + s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5263 "" + } +#line 5264 "" i__2 = log2_(nodu); -#line 5263 "" - if (pow_ii(&c__2, &i__2) == *nodu && ! (*dotxtup)) { #line 5264 "" - lsym = 3; + if (pow_ii(&c__2, &i__2) == *nodu && ! (*dotxtup)) { #line 5265 "" + lsym = 3; +#line 5266 "" } else if (! bit_test(*islur,3) || *dotxtup) { /* Single dot */ /* Writing concatenation */ -#line 5269 "" +#line 5270 "" i__3[0] = 3, a__1[0] = nosymq; -#line 5269 "" +#line 5270 "" i__3[1] = 1, a__1[1] = "p"; -#line 5269 "" - s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5270 "" - lsym = 4; + s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5271 "" + lsym = 4; +#line 5272 "" } else { /* Double dot */ /* Writing concatenation */ -#line 5275 "" +#line 5276 "" i__3[0] = 3, a__1[0] = nosymq; -#line 5275 "" +#line 5276 "" i__3[1] = 2, a__1[1] = "pp"; -#line 5275 "" - s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5276 "" - lsym = 5; + s_cat(nosymq, a__1, i__3, &c__2, (ftnlen)7); #line 5277 "" - } + lsym = 5; #line 5278 "" - } + } #line 5279 "" + } +#line 5280 "" if (bit_test(comtrill_1.icrdat[icrd - 1],19) && ! bit_test( comtrill_1.icrdat[icrd - 1],27)) { /* Accidental and not MIDI-only. Build up bits 0-3 of nacc */ -#line 5283 "" +#line 5284 "" nactmp = igetbits_(&comtrill_1.icrdat[icrd - 1], &c__3, &c__20); /* Kluge for bigness. Only means 'As' has not been issued */ -#line 5287 "" +#line 5288 "" if (spfacs_1.bacfac != 1e6f) { -#line 5287 "" +#line 5288 "" nactmp += 8; -#line 5287 "" - } #line 5288 "" + } +#line 5289 "" i__2 = igetbits_(&comtrill_1.icrdot[icrd - 1], &c__7, &c__20) - 107; -#line 5288 "" +#line 5289 "" i__4 = igetbits_(&comtrill_1.icrdot[icrd - 1], &c__6, &c__14); -#line 5288 "" +#line 5289 "" i__5 = igetbits_(&comtrill_1.icrdat[icrd - 1], &c__7, &c__12); -#line 5288 "" +#line 5289 "" i__6 = ncmid_(iv, ip); -#line 5288 "" +#line 5289 "" L__1 = bit_test(comtrill_1.icrdat[icrd - 1],31); -#line 5288 "" +#line 5289 "" doacc_(&i__2, &i__4, notexq, &lnote, &nactmp, &i__5, &i__6, &L__1, (ftnlen)79); /* * notexq,lnote,nactmp,nolev,ncmid(iv,ip)) */ /* Get original nolev, not altered to deal with 2nds */ /* * ncmid(iv,ip)) */ /* Writing concatenation */ -#line 5295 "" +#line 5296 "" i__3[0] = lnote, a__1[0] = notexq; -#line 5295 "" +#line 5296 "" i__3[1] = 7, a__1[1] = nosymq; -#line 5295 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5296 "" - commidi_1.crdacc = TRUE_; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5297 "" - } else { + commidi_1.crdacc = TRUE_; #line 5298 "" - s_copy(notexq, nosymq, (ftnlen)79, (ftnlen)7); + } else { #line 5299 "" - } + s_copy(notexq, nosymq, (ftnlen)79, (ftnlen)7); #line 5300 "" + } +#line 5301 "" lnote += lsym; /* Get note name (again if accid, due to possible octave jump) */ -#line 5304 "" - notefq_(noteq, &lnoten, &nolev, ncm, (ftnlen)8); #line 5305 "" + notefq_(noteq, &lnoten, &nolev, ncm, (ftnlen)8); +#line 5306 "" if (lnoten == 1) { -#line 5305 "" +#line 5306 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 5305 "" +#line 5306 "" } /* Put in note name */ /* Writing concatenation */ -#line 5309 "" +#line 5310 "" i__3[0] = lnote, a__1[0] = notexq; -#line 5309 "" +#line 5310 "" i__3[1] = 8, a__1[1] = noteq; -#line 5309 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5310 "" - lnote += lnoten; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5311 "" + lnote += lnoten; +#line 5312 "" if (bit_test(comtrill_1.icrdat[icrd - 1],25)) { /* Arpeggio signal */ -#line 5315 "" - putarp_(tnow, ivx, ip, &nolev, ncm, soutq, lsout, (ftnlen)80); #line 5316 "" - } + putarp_(tnow, ivx, ip, &nolev, ncm, soutq, lsout, (ftnlen)80); #line 5317 "" - addstr_(notexq, &lnote, soutq, lsout, (ftnlen)79, (ftnlen)80); + } #line 5318 "" + addstr_(notexq, &lnote, soutq, lsout, (ftnlen)79, (ftnlen)80); +#line 5319 "" if (commidi_1.ismidi) { /* Here is where we collect MIDI pitch info for the chord note. By checking */ @@ -12759,53 +12761,53 @@ L10: /* pitch number and store it in mcpitch(nmidcrd). Then on call to addmidi() */ /* for MAIN note, will put in note codes for all chord notes + main note. */ -#line 5325 "" - kv = 1; #line 5326 "" + kv = 1; +#line 5327 "" if (*ivx > *iv) { -#line 5326 "" +#line 5327 "" kv = 2; -#line 5326 "" - } #line 5327 "" - ++commidi_1.nmidcrd; + } #line 5328 "" - if (commidi_1.nmidcrd > 20) { -#line 5329 "" - s_wsle(&io___381); + ++commidi_1.nmidcrd; #line 5329 "" - e_wsle(); + if (commidi_1.nmidcrd > 20) { #line 5330 "" s_wsle(&io___382); #line 5330 "" + e_wsle(); +#line 5331 "" + s_wsle(&io___383); +#line 5331 "" do_lio(&c__9, &c__1, "21 chord notes is too many for midi pr"\ "ocessor", (ftnlen)45); -#line 5330 "" - e_wsle(); #line 5331 "" - stop1_(); + e_wsle(); #line 5332 "" + stop1_(); +#line 5333 "" } /* Use original saved pitch level, unaltered by 2nds logic. */ -#line 5336 "" +#line 5337 "" i__2 = nolevo + commvel_1.miditran[cominsttrans_1.instno[*iv - 1] - 1]; -#line 5336 "" +#line 5337 "" i__4 = igetbits_(&comtrill_1.icrdat[icrd - 1], &c__3, &c__20); -#line 5336 "" +#line 5337 "" addmidi_(&commidi_1.midchan[*iv + kv * 24 - 25], &i__2, &i__4, & commidisig_1.midisig, &c_b1053, &c_false, &c_false); -#line 5339 "" - } #line 5340 "" + } +#line 5341 "" /* L5: */ -#line 5340 "" - } #line 5341 "" - commidi_1.notmain = FALSE_; + } #line 5342 "" + commidi_1.notmain = FALSE_; +#line 5343 "" return 0; } /* docrd_ */ @@ -12868,208 +12870,208 @@ L10: static integer jtxtdyn, ltxtdyn; /* Fortran I/O blocks */ - static icilist io___404 = { 0, numpq+1, 0, "(i2)", 2, 1 }; - static icilist io___406 = { 0, numpq+1, 0, "(i2)", 2, 1 }; - static icilist io___407 = { 0, numpq+1, 0, "(i3)", 3, 1 }; - static icilist io___414 = { 0, numpq+1, 0, "(i2)", 2, 1 }; + static icilist io___405 = { 0, numpq+1, 0, "(i2)", 2, 1 }; + static icilist io___407 = { 0, numpq+1, 0, "(i2)", 2, 1 }; + static icilist io___408 = { 0, numpq+1, 0, "(i3)", 3, 1 }; static icilist io___415 = { 0, numpq+1, 0, "(i2)", 2, 1 }; - static icilist io___416 = { 0, numpq+1, 0, "(i3)", 3, 1 }; - static cilist io___419 = { 0, 11, 0, "(a)", 0 }; + static icilist io___416 = { 0, numpq+1, 0, "(i2)", 2, 1 }; + static icilist io___417 = { 0, numpq+1, 0, "(i3)", 3, 1 }; + static cilist io___420 = { 0, 11, 0, "(a)", 0 }; /* Inputs are array *elements* except ihornb,nornb,ulq */ -#line 5370 "" +#line 5371 "" /* Parameter adjustments */ -#line 5370 "" +#line 5371 "" ulq -= 25; -#line 5370 "" +#line 5371 "" --nornb; -#line 5370 "" +#line 5371 "" ihornb -= 25; -#line 5370 "" +#line 5371 "" -#line 5370 "" - /* Function Body */ #line 5371 "" + /* Function Body */ +#line 5372 "" numdyn = 0; /* Find dynamics for (ivx,ip) in list. May be as many as 4. Store idyn values */ /* in idynn(1...4) */ -#line 5376 "" +#line 5377 "" i__1 = comdyn_1.ndyn; -#line 5376 "" - for (idyn = 1; idyn <= i__1; ++idyn) { #line 5377 "" + for (idyn = 1; idyn <= i__1; ++idyn) { +#line 5378 "" ivxtent = (comdyn_1.idyndat[idyn - 1] & 15) + (igetbits_(& comdyn_1.idynda2[idyn - 1], &c__1, &c__10) << 4); -#line 5379 "" - if (ivxtent == *ivx) { #line 5380 "" - iptent = igetbits_(&comdyn_1.idyndat[idyn - 1], &c__8, &c__4); + if (ivxtent == *ivx) { #line 5381 "" - if (iptent == *ip) { + iptent = igetbits_(&comdyn_1.idyndat[idyn - 1], &c__8, &c__4); #line 5382 "" - ++numdyn; + if (iptent == *ip) { #line 5383 "" - idynn[numdyn - 1] = idyn; + ++numdyn; #line 5384 "" + idynn[numdyn - 1] = idyn; +#line 5385 "" } else if (iptent > *ip) { /* I don't think there are any more possible for this ivx,ip, so exit loop */ -#line 5388 "" - goto L2; #line 5389 "" - } + goto L2; #line 5390 "" - } + } #line 5391 "" + } +#line 5392 "" /* L1: */ -#line 5391 "" - } #line 5392 "" + } +#line 5393 "" L2: /* At this point there is a list of idyn's in idynn(1...numdyn) */ /* Compute level, and stem-dir'n-based horizontal tweaks */ -#line 5397 "" +#line 5398 "" hoffsd = 0.f; /* Set upstem to false as default */ -#line 5401 "" - upstem = FALSE_; #line 5402 "" + upstem = FALSE_; +#line 5403 "" if (bit_test(*irest,0)) { /* It's a rest. Assume it doesn't go below the staff */ -#line 5406 "" - lbot = *ncm - 4; #line 5407 "" - } else if (! (*beamon)) { + lbot = *ncm - 4; #line 5408 "" + } else if (! (*beamon)) { +#line 5409 "" udqq_(ch__1, (ftnlen)1, nolev, ncm, islur, nvmx, ivx, nv); -#line 5408 "" - if (*(unsigned char *)&ch__1[0] == 'u' || *nostem) { #line 5409 "" - upstem = TRUE_; + if (*(unsigned char *)&ch__1[0] == 'u' || *nostem) { #line 5410 "" + upstem = TRUE_; +#line 5411 "" if (! bit_test(*ipl,10)) { /* Computing MIN */ -#line 5411 "" +#line 5412 "" i__1 = *nolev - 1, i__2 = *ncm - 4; -#line 5411 "" - lbot = min(i__1,i__2); #line 5412 "" + lbot = min(i__1,i__2); +#line 5413 "" } else { /* Computing MIN */ -#line 5413 "" +#line 5414 "" i__1 = comtrill_1.minlev - 1, i__2 = *ncm - 4; -#line 5413 "" - lbot = min(i__1,i__2); #line 5414 "" - } + lbot = min(i__1,i__2); #line 5415 "" - } else { + } #line 5416 "" - hoffsd = -.5f; + } else { #line 5417 "" + hoffsd = -.5f; +#line 5418 "" if (! bit_test(*ipl,10)) { /* Computing MIN */ -#line 5418 "" +#line 5419 "" i__1 = *nolev - 7, i__2 = *ncm - 4; -#line 5418 "" - lbot = min(i__1,i__2); #line 5419 "" + lbot = min(i__1,i__2); +#line 5420 "" } else { /* Computing MIN */ -#line 5420 "" +#line 5421 "" i__1 = comtrill_1.minlev - 7, i__2 = *ncm - 4; -#line 5420 "" - lbot = min(i__1,i__2); #line 5421 "" - } + lbot = min(i__1,i__2); #line 5422 "" - } + } #line 5423 "" - } else { + } #line 5424 "" - if (*(unsigned char *)&ulq[*ivx + *ibmcnt * 24] == 'u') { + } else { #line 5425 "" - upstem = TRUE_; + if (*(unsigned char *)&ulq[*ivx + *ibmcnt * 24] == 'u') { #line 5426 "" + upstem = TRUE_; +#line 5427 "" if (! bit_test(*ipl,10)) { /* Computing MIN */ -#line 5427 "" +#line 5428 "" i__1 = *nolev - 1, i__2 = *ncm - 4; -#line 5427 "" - lbot = min(i__1,i__2); #line 5428 "" + lbot = min(i__1,i__2); +#line 5429 "" } else { /* Computing MIN */ -#line 5429 "" +#line 5430 "" i__1 = comtrill_1.minlev - 1, i__2 = *ncm - 4; -#line 5429 "" - lbot = min(i__1,i__2); #line 5430 "" - } + lbot = min(i__1,i__2); #line 5431 "" - } else { + } #line 5432 "" + } else { +#line 5433 "" hoffsd = -.5f; /* 171230 Desperation */ /* lbot = ihornb(ivx,nornb(ivx))+1 */ -#line 5436 "" - if (nornb[*ivx] == 0) { #line 5437 "" - lbot = 1; + if (nornb[*ivx] == 0) { #line 5438 "" - } else { + lbot = 1; #line 5439 "" - lbot = ihornb[*ivx + nornb[*ivx] * 24] + 1; + } else { #line 5440 "" - } + lbot = ihornb[*ivx + nornb[*ivx] * 24] + 1; #line 5441 "" + } +#line 5442 "" if (lbot == 1) { /* Kluge for non-beamed, down xtup, for which ihorb was never set. */ /* Assumes stem is shortened. */ -#line 5446 "" - lbot = *nolev - 5; #line 5447 "" - } + lbot = *nolev - 5; #line 5448 "" - ++nornb[*ivx]; + } #line 5449 "" - } + ++nornb[*ivx]; #line 5450 "" - } + } #line 5451 "" - lbot += -5; + } #line 5452 "" + lbot += -5; +#line 5453 "" jtxtdyn1 = 1; /* Now ready to loop over current dyn's */ -#line 5456 "" +#line 5457 "" i__1 = numdyn; -#line 5456 "" - for (icntdyn = 1; icntdyn <= i__1; ++icntdyn) { #line 5457 "" - idynd = comdyn_1.idyndat[idynn[icntdyn - 1] - 1]; + for (icntdyn = 1; icntdyn <= i__1; ++icntdyn) { #line 5458 "" - idynd2 = comdyn_1.idynda2[idynn[icntdyn - 1] - 1]; + idynd = comdyn_1.idyndat[idynn[icntdyn - 1] - 1]; #line 5459 "" + idynd2 = comdyn_1.idynda2[idynn[icntdyn - 1] - 1]; +#line 5460 "" idno = igetbits_(&idynd, &c__4, &c__12); /* ivx = iand(15,idynd) */ -#line 5461 "" +#line 5462 "" *ivx = (15 & idynd) + (igetbits_(&idynd2, &c__1, &c__10) << 4); /* Build the command into notex in stages. Insert name & rq'd args in order: */ @@ -13085,366 +13087,366 @@ L2: /* d-mark */ /* X */ -#line 5476 "" +#line 5477 "" if (idno == 0) { /* Text-dynamic */ /* Writing concatenation */ -#line 5480 "" +#line 5481 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5480 "" +#line 5481 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5480 "" +#line 5481 "" i__3[1] = 6, a__1[1] = "txtdyn"; -#line 5480 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5481 "" - lnote = 7; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5482 "" + lnote = 7; +#line 5483 "" } else if (idno <= 12) { /* Letter-group */ /* Writing concatenation */ -#line 5486 "" +#line 5487 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5486 "" +#line 5487 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5486 "" +#line 5487 "" i__3[1] = 6, a__1[1] = "pmxdyn"; -#line 5486 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5487 "" - lnote = 7; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5488 "" - } else if (comslur_1.fontslur) { -#line 5489 "" lnote = 7; +#line 5489 "" + } else if (comslur_1.fontslur) { #line 5490 "" + lnote = 7; +#line 5491 "" if (idno == 13) { /* Start a font-based hairpin */ /* Writing concatenation */ -#line 5494 "" +#line 5495 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5494 "" +#line 5495 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5494 "" +#line 5495 "" i__3[1] = 6, a__1[1] = "hpstrt"; -#line 5494 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5495 "" + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); +#line 5496 "" } else if (idno == 14) { /* End crescendo */ /* Writing concatenation */ -#line 5499 "" +#line 5500 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5499 "" +#line 5500 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5499 "" +#line 5500 "" i__3[1] = 6, a__1[1] = "hpcend"; -#line 5499 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5500 "" + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); +#line 5501 "" } else { /* End decrescendo */ /* Writing concatenation */ -#line 5504 "" +#line 5505 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5504 "" +#line 5505 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5504 "" +#line 5505 "" i__3[1] = 6, a__1[1] = "hpdend"; -#line 5504 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5505 "" + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); +#line 5506 "" } /* Put in voice number as ID for font-based hairpin */ -#line 5509 "" +#line 5510 "" if (*ivx <= 9) { /* Writing concatenation */ -#line 5510 "" +#line 5511 "" i__3[0] = lnote, a__1[0] = notexq; -#line 5510 "" +#line 5511 "" *(unsigned char *)&ch__1[0] = *ivx + 48; -#line 5510 "" +#line 5511 "" i__3[1] = 1, a__1[1] = ch__1; -#line 5510 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5511 "" - ++lnote; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5512 "" + ++lnote; +#line 5513 "" } else if (*ivx <= 19) { /* Writing concatenation */ -#line 5513 "" +#line 5514 "" i__4[0] = lnote, a__2[0] = notexq; -#line 5513 "" +#line 5514 "" i__4[1] = 2, a__2[1] = "{1"; -#line 5513 "" +#line 5514 "" *(unsigned char *)&ch__1[0] = *ivx + 38; -#line 5513 "" +#line 5514 "" i__4[2] = 1, a__2[2] = ch__1; -#line 5513 "" +#line 5514 "" i__4[3] = 1, a__2[3] = "}"; -#line 5513 "" - s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 5514 "" - lnote += 4; + s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 5515 "" + lnote += 4; +#line 5516 "" } else { /* Writing concatenation */ -#line 5516 "" +#line 5517 "" i__4[0] = lnote, a__2[0] = notexq; -#line 5516 "" +#line 5517 "" i__4[1] = 2, a__2[1] = "{2"; -#line 5516 "" +#line 5517 "" *(unsigned char *)&ch__1[0] = *ivx + 28; -#line 5516 "" +#line 5517 "" i__4[2] = 1, a__2[2] = ch__1; -#line 5516 "" +#line 5517 "" i__4[3] = 1, a__2[3] = "}"; -#line 5516 "" - s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 5517 "" - lnote += 4; + s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 5518 "" - } + lnote += 4; #line 5519 "" + } +#line 5520 "" } else { /* Postscript hairpins */ -#line 5523 "" - lnote = 7; #line 5524 "" + lnote = 7; +#line 5525 "" if (idno == 13) { /* Writing concatenation */ -#line 5525 "" +#line 5526 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5525 "" +#line 5526 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5525 "" +#line 5526 "" i__3[1] = 6, a__1[1] = "Icresc"; -#line 5525 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5526 "" + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); +#line 5527 "" } else if (idno == 14) { /* Writing concatenation */ -#line 5527 "" +#line 5528 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5527 "" +#line 5528 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5527 "" +#line 5528 "" i__3[1] = 8, a__1[1] = "Idecresc"; -#line 5527 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5528 "" - lnote = 9; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5529 "" + lnote = 9; +#line 5530 "" } else { /* Writing concatenation */ -#line 5530 "" +#line 5531 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5530 "" +#line 5531 "" i__3[0] = 1, a__1[0] = ch__1; -#line 5530 "" +#line 5531 "" i__3[1] = 6, a__1[1] = "Tcresc"; -#line 5530 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5531 "" - } + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5532 "" + } +#line 5533 "" if (idno <= 14) { /* Get and record ID no for start of ps hairpin */ /* Find first unused ID */ -#line 5537 "" - for (idh = 1; idh <= 24; ++idh) { #line 5538 "" + for (idh = 1; idh <= 24; ++idh) { +#line 5539 "" if (! bit_test(comhair_1.ihairuse,idh)) { -#line 5538 "" +#line 5539 "" goto L9; -#line 5538 "" - } #line 5539 "" + } +#line 5540 "" /* L8: */ -#line 5539 "" - } #line 5540 "" - printl_("Bad place in putdyn, call Dr. Don", (ftnlen)33); + } #line 5541 "" - stop1_(); + printl_("Bad place in putdyn, call Dr. Don", (ftnlen)33); #line 5542 "" -L9: + stop1_(); #line 5543 "" - comhair_1.ihairuse = bit_set(comhair_1.ihairuse,idh); +L9: #line 5544 "" - comhair_1.idhair[*ivx - 1] = idh; + comhair_1.ihairuse = bit_set(comhair_1.ihairuse,idh); #line 5545 "" + comhair_1.idhair[*ivx - 1] = idh; +#line 5546 "" } else { /* Unrecord ID no for end of ps hairpin */ -#line 5549 "" +#line 5550 "" setbits_(&comhair_1.ihairuse, &c__1, &comhair_1.idhair[*ivx - 1], &c__0); -#line 5550 "" +#line 5551 "" } /* Write ID # for start or end of ps hairpin */ -#line 5554 "" - idh = comhair_1.idhair[*ivx - 1]; #line 5555 "" + idh = comhair_1.idhair[*ivx - 1]; +#line 5556 "" if (idh <= 9) { /* Writing concatenation */ -#line 5556 "" +#line 5557 "" i__3[0] = lnote, a__1[0] = notexq; -#line 5556 "" +#line 5557 "" *(unsigned char *)&ch__1[0] = idh + 48; -#line 5556 "" +#line 5557 "" i__3[1] = 1, a__1[1] = ch__1; -#line 5556 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5557 "" - ++lnote; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5558 "" + ++lnote; +#line 5559 "" } else if (idh <= 19) { /* Writing concatenation */ -#line 5559 "" +#line 5560 "" i__4[0] = lnote, a__2[0] = notexq; -#line 5559 "" +#line 5560 "" i__4[1] = 2, a__2[1] = "{1"; -#line 5559 "" +#line 5560 "" *(unsigned char *)&ch__1[0] = idh + 38; -#line 5559 "" +#line 5560 "" i__4[2] = 1, a__2[2] = ch__1; -#line 5559 "" +#line 5560 "" i__4[3] = 1, a__2[3] = "}"; -#line 5559 "" - s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 5560 "" - lnote += 4; + s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 5561 "" + lnote += 4; +#line 5562 "" } else { /* Writing concatenation */ -#line 5562 "" +#line 5563 "" i__4[0] = lnote, a__2[0] = notexq; -#line 5562 "" +#line 5563 "" i__4[1] = 2, a__2[1] = "{2"; -#line 5562 "" +#line 5563 "" *(unsigned char *)&ch__1[0] = idh + 28; -#line 5562 "" +#line 5563 "" i__4[2] = 1, a__2[2] = ch__1; -#line 5562 "" +#line 5563 "" i__4[3] = 1, a__2[3] = "}"; -#line 5562 "" - s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 5563 "" - lnote += 4; + s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 5564 "" - } + lnote += 4; #line 5565 "" + } +#line 5566 "" } /* Begin setting level */ -#line 5569 "" - lbot1 = lbot; #line 5570 "" + lbot1 = lbot; +#line 5571 "" if (idno > 0 && idno <= 5) { /* All letters are short so raise a bit. */ -#line 5574 "" - ++lbot1; #line 5575 "" - } else if (idno >= 13) { + ++lbot1; #line 5576 "" - lbot1 += 2; + } else if (idno >= 13) { #line 5577 "" + lbot1 += 2; +#line 5578 "" } /* Convert so reference is bottom line */ -#line 5581 "" - lbot1 = lbot1 - *ncm + 4; #line 5582 "" + lbot1 = lbot1 - *ncm + 4; +#line 5583 "" if (comslur_1.fontslur && idno == 13 || ! comslur_1.fontslur && (idno == 13 || idno == 14)) { /* Hairpin start. Save level and user-tweak before applying user tweak. */ -#line 5587 "" - comdyn_1.levdsav[*ivx - 1] = lbot1; #line 5588 "" - comdyn_1.levhssav[*ivx - 1] = 0; + comdyn_1.levdsav[*ivx - 1] = lbot1; #line 5589 "" + comdyn_1.levhssav[*ivx - 1] = 0; +#line 5590 "" if (bit_test(idynd,16)) { -#line 5589 "" +#line 5590 "" comdyn_1.levhssav[*ivx - 1] = igetbits_(&idynd, &c__7, &c__17) - 64; -#line 5589 "" - } #line 5590 "" + } +#line 5591 "" } else if (comslur_1.fontslur && idno >= 14 || idno == 15) { /* Hairpin end; Compare level with saved start level before user-tweaks */ /* Computing MIN */ -#line 5594 "" +#line 5595 "" i__2 = lbot1, i__5 = comdyn_1.levdsav[*ivx - 1]; -#line 5594 "" +#line 5595 "" lbot1 = min(i__2,i__5); /* Save pre-tweak level */ -#line 5598 "" - lpretweak = lbot1; #line 5599 "" + lpretweak = lbot1; +#line 5600 "" } /* Check for user-defined vertical tweak */ -#line 5603 "" +#line 5604 "" if (bit_test(idynd,16)) { -#line 5603 "" +#line 5604 "" lbot1 = lbot1 - 64 + igetbits_(&idynd, &c__7, &c__17); -#line 5603 "" +#line 5604 "" } /* Now horizontal stuff */ -#line 5607 "" +#line 5608 "" hoff = hoffsd; /* Some special horizontal tweaks */ -#line 5611 "" +#line 5612 "" if (upstem && idno > 0 && (idno <= 4 || idno == 8 || idno == 9)) { -#line 5611 "" +#line 5612 "" hoff += .4f; -#line 5611 "" +#line 5612 "" } /* User-defined tweaks */ -#line 5616 "" +#line 5617 "" if (bit_test(idynd2,0)) { -#line 5616 "" +#line 5617 "" hoff += (igetbits_(&idynd2, &c__9, &c__1) - 256) * .1f; -#line 5616 "" +#line 5617 "" } -#line 5618 "" +#line 5619 "" if (numdyn > 1) { /* Horizontal-interaction-based tweaks. */ @@ -13456,23 +13458,23 @@ L9: /* 2 hrpnend hrpnstrt - hoh2h1(1...2) */ /* 3 hrpnend wrd-grp hrpnstrt ivowg,hoh2,hoh1 */ -#line 5629 "" +#line 5630 "" if (idno > 0 && idno <= 12) { /* Word-group, may need vertical tweak to line up. */ -#line 5633 "" +#line 5634 "" lbot1 += comdyn_1.ivowg[idno - 1]; /* Protecting against hp start-stop on same note */ -#line 5637 "" +#line 5638 "" } else if ((comslur_1.fontslur && idno >= 14 || idno == 15) && icntdyn < numdyn) { /* Hairpin ending, check next type */ -#line 5642 "" +#line 5643 "" if (comslur_1.fontslur && igetbits_(&comdyn_1.idyndat[idynn[ icntdyn] - 1], &c__4, &c__12) == 13 || ! comslur_1.fontslur && (igetbits_(&comdyn_1.idyndat[ @@ -13482,28 +13484,28 @@ L9: /* Hairpin end then hairpin start, no words, (remember dealing with end now) */ -#line 5652 "" - hoff += comdyn_1.hoh2h1[0]; #line 5653 "" + hoff += comdyn_1.hoh2h1[0]; +#line 5654 "" } else { /* Hairpin end then word-group, need idno for w-g to set hp offset */ -#line 5657 "" +#line 5658 "" hoff += comdyn_1.hoh2[igetbits_(&comdyn_1.idyndat[idynn[ icntdyn] - 1], &c__4, &c__12) - 1]; -#line 5659 "" +#line 5660 "" } /* Protecting against hp start-stop on same note */ -#line 5663 "" +#line 5664 "" } else if (icntdyn > 1 && idno > 0 && (comslur_1.fontslur && idno < 14 || ! comslur_1.fontslur && idno < 15)) { /* Hairpin start, check prior type */ -#line 5669 "" +#line 5670 "" if (comslur_1.fontslur && igetbits_(&comdyn_1.idyndat[idynn[ icntdyn - 2] - 1], &c__4, &c__12) >= 14 || ! comslur_1.fontslur && igetbits_(&comdyn_1.idyndat[ @@ -13511,30 +13513,30 @@ L9: /* Hairpin end then hairpin start, (remember dealing with start now) */ -#line 5678 "" - hoff += comdyn_1.hoh2h1[1]; #line 5679 "" + hoff += comdyn_1.hoh2h1[1]; +#line 5680 "" } else { /* Hairpin start after word-group, need idno for w-g to set hp offset */ -#line 5683 "" +#line 5684 "" hoff += comdyn_1.hoh1[igetbits_(&comdyn_1.idyndat[idynn[ icntdyn - 2] - 1], &c__4, &c__12) - 1]; -#line 5685 "" - } #line 5686 "" - } + } #line 5687 "" + } +#line 5688 "" } /* End of if-block for 2- or 3-way interactions. */ -#line 5691 "" +#line 5692 "" if (! comslur_1.fontslur && idno >= 13) { -#line 5691 "" +#line 5692 "" hoff = (hoff + .5f) * 6.f / 2.5f; -#line 5691 "" +#line 5692 "" } /* Slur font and hairpin. Add hoff, and change from \interneote to \qn@width */ @@ -13542,217 +13544,217 @@ L9: /* Position corrections all done now. Put in the level. */ -#line 5699 "" +#line 5700 "" if (comslur_1.fontslur && idno == 13 || ! comslur_1.fontslur && (idno == 13 || idno == 14)) { /* Hairpin start. */ -#line 5704 "" +#line 5705 "" if (! comslur_1.fontslur) { /* Postscript hairpin start...inset placeholder for start level. */ /* Writing concatenation */ -#line 5708 "" +#line 5709 "" i__3[0] = lnote, a__1[0] = notexq; -#line 5708 "" +#line 5709 "" i__3[1] = 5, a__1[1] = "{ }"; -#line 5708 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5709 "" - lnote += 5; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5710 "" - } + lnote += 5; #line 5711 "" + } +#line 5712 "" } else { /* Insert actual level in all cases except hairpin start */ /* Create string with level in it */ -#line 5716 "" - if (lbot1 > 9) { #line 5717 "" - s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); -#line 5718 "" - s_wsfi(&io___404); + if (lbot1 > 9) { #line 5718 "" + s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); +#line 5719 "" + s_wsfi(&io___405); +#line 5719 "" do_fio(&c__1, (char *)&lbot1, (ftnlen)sizeof(integer)); -#line 5718 "" +#line 5719 "" e_wsfi(); /* Writing concatenation */ -#line 5719 "" +#line 5720 "" i__3[0] = 3, a__1[0] = numpq; -#line 5719 "" +#line 5720 "" i__3[1] = 1, a__1[1] = "}"; -#line 5719 "" - s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5720 "" - lnumpq = 4; + s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5721 "" - } else if (lbot1 > -1) { + lnumpq = 4; #line 5722 "" + } else if (lbot1 > -1) { +#line 5723 "" *(unsigned char *)&ch__1[0] = lbot1 + 48; -#line 5722 "" - s_copy(numpq, ch__1, (ftnlen)5, (ftnlen)1); #line 5723 "" - lnumpq = 1; + s_copy(numpq, ch__1, (ftnlen)5, (ftnlen)1); #line 5724 "" - } else if (lbot1 > -10) { + lnumpq = 1; #line 5725 "" - s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); -#line 5726 "" - s_wsfi(&io___406); + } else if (lbot1 > -10) { #line 5726 "" + s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); +#line 5727 "" + s_wsfi(&io___407); +#line 5727 "" do_fio(&c__1, (char *)&lbot1, (ftnlen)sizeof(integer)); -#line 5726 "" +#line 5727 "" e_wsfi(); /* Writing concatenation */ -#line 5727 "" +#line 5728 "" i__3[0] = 3, a__1[0] = numpq; -#line 5727 "" +#line 5728 "" i__3[1] = 1, a__1[1] = "}"; -#line 5727 "" - s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5728 "" - lnumpq = 4; + s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5729 "" - } else { + lnumpq = 4; #line 5730 "" - s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); -#line 5731 "" - s_wsfi(&io___407); + } else { #line 5731 "" + s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); +#line 5732 "" + s_wsfi(&io___408); +#line 5732 "" do_fio(&c__1, (char *)&lbot1, (ftnlen)sizeof(integer)); -#line 5731 "" +#line 5732 "" e_wsfi(); /* Writing concatenation */ -#line 5732 "" +#line 5733 "" i__3[0] = 4, a__1[0] = numpq; -#line 5732 "" +#line 5733 "" i__3[1] = 1, a__1[1] = "}"; -#line 5732 "" - s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5733 "" - lnumpq = 5; + s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5734 "" + lnumpq = 5; +#line 5735 "" } /* Level has now been computed and stored in numpq */ /* Append the level */ /* Writing concatenation */ -#line 5739 "" +#line 5740 "" i__3[0] = lnote, a__1[0] = notexq; -#line 5739 "" +#line 5740 "" i__3[1] = lnumpq, a__1[1] = numpq; -#line 5739 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5740 "" - lnote += lnumpq; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5741 "" - } + lnote += lnumpq; #line 5742 "" + } +#line 5743 "" if (dabs(hoff) < .001f) { /* No horiz offset */ /* Writing concatenation */ -#line 5746 "" +#line 5747 "" i__3[0] = lnote, a__1[0] = notexq; -#line 5746 "" +#line 5747 "" i__3[1] = 1, a__1[1] = "0"; -#line 5746 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5747 "" - ++lnote; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5748 "" + ++lnote; +#line 5749 "" } else { /* Horizontal tweak */ -#line 5752 "" +#line 5753 "" lform = lfmt1_(&hoff); /* Writing concatenation */ -#line 5753 "" +#line 5754 "" i__3[0] = lnote, a__1[0] = notexq; -#line 5753 "" +#line 5754 "" i__3[1] = 1, a__1[1] = "{"; -#line 5753 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5754 "" - ++lnote; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5755 "" + ++lnote; +#line 5756 "" i__2 = lnote; -#line 5755 "" +#line 5756 "" ici__1.icierr = 0; -#line 5755 "" +#line 5756 "" ici__1.icirnum = 1; -#line 5755 "" +#line 5756 "" ici__1.icirlen = lnote + lform - i__2; -#line 5755 "" +#line 5756 "" ici__1.iciunit = notexq + i__2; /* Writing concatenation */ -#line 5755 "" +#line 5756 "" i__6[0] = 2, a__3[0] = "(f"; -#line 5755 "" +#line 5756 "" i__5 = lform + 48; -#line 5755 "" +#line 5756 "" chax_(ch__1, (ftnlen)1, &i__5); -#line 5755 "" +#line 5756 "" i__6[1] = 1, a__3[1] = ch__1; -#line 5755 "" +#line 5756 "" i__6[2] = 3, a__3[2] = ".1)"; -#line 5755 "" +#line 5756 "" ici__1.icifmt = (s_cat(ch__2, a__3, i__6, &c__3, (ftnlen)6), ch__2); -#line 5755 "" +#line 5756 "" s_wsfi(&ici__1); -#line 5755 "" +#line 5756 "" do_fio(&c__1, (char *)&hoff, (ftnlen)sizeof(real)); -#line 5755 "" +#line 5756 "" e_wsfi(); -#line 5757 "" +#line 5758 "" lnote += lform; /* Writing concatenation */ -#line 5758 "" +#line 5759 "" i__3[0] = lnote, a__1[0] = notexq; -#line 5758 "" +#line 5759 "" i__3[1] = 1, a__1[1] = "}"; -#line 5758 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5759 "" - ++lnote; + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 5760 "" - } + ++lnote; #line 5761 "" + } +#line 5762 "" if (idno == 0) { /* text-dynamic. Find the string and append it */ -#line 5765 "" +#line 5766 "" i__2 = comdyn_1.ntxtdyn; -#line 5765 "" +#line 5766 "" for (jtxtdyn = jtxtdyn1; jtxtdyn <= i__2; ++jtxtdyn) { /* ivxip = ivx+16*ip */ -#line 5767 "" - ivxip = *ivx + (*ip << 5); #line 5768 "" + ivxip = *ivx + (*ip << 5); +#line 5769 "" if (ivxip == comdyn_1.ivxiptxt[jtxtdyn - 1]) { -#line 5768 "" +#line 5769 "" goto L5; -#line 5768 "" - } #line 5769 "" + } +#line 5770 "" /* L4: */ -#line 5769 "" - } #line 5770 "" - printl_("Abnormal stop in putdyn", (ftnlen)23); + } #line 5771 "" - stop1_(); + printl_("Abnormal stop in putdyn", (ftnlen)23); #line 5772 "" -L5: + stop1_(); #line 5773 "" +L5: +#line 5774 "" ltxtdyn = lenstr_(comdyn_1.txtdynq + (jtxtdyn - 1 << 7), &c__128, (ftnlen)128); @@ -13778,264 +13780,264 @@ L5: /* Do this to insert 1st 2 args of \txtdyn, allow 3rd to be longer (on next line) */ -#line 5797 "" - addstr_(notexq, &lnote, soutq, lsout, lnote, (ftnlen)80); #line 5798 "" - if (commus_1.musize == 20) { + addstr_(notexq, &lnote, soutq, lsout, lnote, (ftnlen)80); #line 5799 "" - s_copy(notexq, "{\\medtype\\it ", (ftnlen)79, (ftnlen)13); + if (commus_1.musize == 20) { #line 5800 "" - lnote = 13; + s_copy(notexq, "{\\medtype\\it ", (ftnlen)79, (ftnlen)13); #line 5801 "" - } else if (commus_1.musize == 16) { + lnote = 13; #line 5802 "" - s_copy(notexq, "{\\normtype\\it ", (ftnlen)79, (ftnlen)14); + } else if (commus_1.musize == 16) { #line 5803 "" - lnote = 14; + s_copy(notexq, "{\\normtype\\it ", (ftnlen)79, (ftnlen)14); #line 5804 "" - } else if (commus_1.musize == 24) { + lnote = 14; #line 5805 "" - s_copy(notexq, "{\\bigtype\\it ", (ftnlen)79, (ftnlen)13); + } else if (commus_1.musize == 24) { #line 5806 "" - lnote = 13; + s_copy(notexq, "{\\bigtype\\it ", (ftnlen)79, (ftnlen)13); #line 5807 "" - } else if (commus_1.musize == 29) { + lnote = 13; #line 5808 "" - s_copy(notexq, "{\\Bigtype\\it ", (ftnlen)79, (ftnlen)13); + } else if (commus_1.musize == 29) { #line 5809 "" - lnote = 13; + s_copy(notexq, "{\\Bigtype\\it ", (ftnlen)79, (ftnlen)13); #line 5810 "" + lnote = 13; +#line 5811 "" } /* Writing concatenation */ -#line 5812 "" +#line 5813 "" i__6[0] = lnote, a__3[0] = notexq; -#line 5812 "" +#line 5813 "" i__6[1] = ltxtdyn, a__3[1] = comdyn_1.txtdynq + (jtxtdyn - 1 << 7) ; -#line 5812 "" +#line 5813 "" i__6[2] = 1, a__3[2] = "}"; -#line 5812 "" - s_cat(notexq, a__3, i__6, &c__3, (ftnlen)79); #line 5813 "" + s_cat(notexq, a__3, i__6, &c__3, (ftnlen)79); +#line 5814 "" lnote = lnote + ltxtdyn + 1; /* Reset jtxtdyn1 just in case >1 txtdyn on same note. */ -#line 5817 "" - jtxtdyn1 = jtxtdyn + 1; #line 5818 "" + jtxtdyn1 = jtxtdyn + 1; +#line 5819 "" } else if (idno <= 12) { /* Letter-group dynamic. Append the letter-group command */ -#line 5822 "" - id = idno << 2; #line 5823 "" + id = idno << 2; +#line 5824 "" i__2 = id - 4; -#line 5823 "" - s_copy(dynstrq, dyntablq + i__2, (ftnlen)4, id - i__2); #line 5824 "" + s_copy(dynstrq, dyntablq + i__2, (ftnlen)4, id - i__2); +#line 5825 "" id = lenstr_(dynstrq, &c__4, (ftnlen)4); /* Writing concatenation */ -#line 5825 "" +#line 5826 "" i__6[0] = lnote, a__3[0] = notexq; -#line 5825 "" +#line 5826 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5825 "" +#line 5826 "" i__6[1] = 1, a__3[1] = ch__1; -#line 5825 "" +#line 5826 "" i__6[2] = id, a__3[2] = dynstrq; -#line 5825 "" - s_cat(notexq, a__3, i__6, &c__3, (ftnlen)79); #line 5826 "" - lnote = lnote + 1 + id; + s_cat(notexq, a__3, i__6, &c__3, (ftnlen)79); #line 5827 "" - } + lnote = lnote + 1 + id; #line 5828 "" - addstr_(notexq, &lnote, soutq, lsout, lnote, (ftnlen)80); + } #line 5829 "" + addstr_(notexq, &lnote, soutq, lsout, lnote, (ftnlen)80); +#line 5830 "" if (! comslur_1.fontslur && idno == 15) { /* PS slurs on, hairpin is ending. Go back and set height at beginning. */ /* Add user-defined tweak to default level */ -#line 5834 "" - lbot1 = lpretweak + comdyn_1.levhssav[*ivx - 1]; #line 5835 "" - if (lbot1 > 9) { + lbot1 = lpretweak + comdyn_1.levhssav[*ivx - 1]; #line 5836 "" - s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); -#line 5837 "" - s_wsfi(&io___414); + if (lbot1 > 9) { #line 5837 "" + s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); +#line 5838 "" + s_wsfi(&io___415); +#line 5838 "" do_fio(&c__1, (char *)&lbot1, (ftnlen)sizeof(integer)); -#line 5837 "" +#line 5838 "" e_wsfi(); /* Writing concatenation */ -#line 5838 "" +#line 5839 "" i__3[0] = 3, a__1[0] = numpq; -#line 5838 "" +#line 5839 "" i__3[1] = 1, a__1[1] = "}"; -#line 5838 "" - s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5839 "" - lnumpq = 4; + s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5840 "" - } else if (lbot1 > -1) { + lnumpq = 4; #line 5841 "" + } else if (lbot1 > -1) { +#line 5842 "" *(unsigned char *)&ch__1[0] = lbot1 + 48; -#line 5841 "" - s_copy(numpq, ch__1, (ftnlen)5, (ftnlen)1); #line 5842 "" - lnumpq = 1; + s_copy(numpq, ch__1, (ftnlen)5, (ftnlen)1); #line 5843 "" - } else if (lbot1 > -10) { + lnumpq = 1; #line 5844 "" - s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); -#line 5845 "" - s_wsfi(&io___415); + } else if (lbot1 > -10) { #line 5845 "" + s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); +#line 5846 "" + s_wsfi(&io___416); +#line 5846 "" do_fio(&c__1, (char *)&lbot1, (ftnlen)sizeof(integer)); -#line 5845 "" +#line 5846 "" e_wsfi(); /* Writing concatenation */ -#line 5846 "" +#line 5847 "" i__3[0] = 3, a__1[0] = numpq; -#line 5846 "" +#line 5847 "" i__3[1] = 1, a__1[1] = "}"; -#line 5846 "" - s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5847 "" - lnumpq = 4; + s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5848 "" - } else { + lnumpq = 4; #line 5849 "" - s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); -#line 5850 "" - s_wsfi(&io___416); + } else { #line 5850 "" + s_copy(numpq, "{", (ftnlen)5, (ftnlen)1); +#line 5851 "" + s_wsfi(&io___417); +#line 5851 "" do_fio(&c__1, (char *)&lbot1, (ftnlen)sizeof(integer)); -#line 5850 "" +#line 5851 "" e_wsfi(); /* Writing concatenation */ -#line 5851 "" +#line 5852 "" i__3[0] = 4, a__1[0] = numpq; -#line 5851 "" +#line 5852 "" i__3[1] = 1, a__1[1] = "}"; -#line 5851 "" - s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5852 "" - lnumpq = 5; + s_cat(numpq, a__1, i__3, &c__2, (ftnlen)5); #line 5853 "" + lnumpq = 5; +#line 5854 "" } /* Construct string to search backwards for placeholder */ -#line 5857 "" +#line 5858 "" if (idh <= 9) { /* Writing concatenation */ -#line 5858 "" +#line 5859 "" i__6[0] = 5, a__3[0] = "cresc"; -#line 5858 "" +#line 5859 "" *(unsigned char *)&ch__1[0] = idh + 48; -#line 5858 "" +#line 5859 "" i__6[1] = 1, a__3[1] = ch__1; -#line 5858 "" +#line 5859 "" i__6[2] = 5, a__3[2] = "{ }"; -#line 5858 "" - s_cat(tempq, a__3, i__6, &c__3, (ftnlen)48); #line 5859 "" - ltemp = 11; + s_cat(tempq, a__3, i__6, &c__3, (ftnlen)48); #line 5860 "" + ltemp = 11; +#line 5861 "" } else if (idh <= 19) { /* Writing concatenation */ -#line 5861 "" +#line 5862 "" i__6[0] = 7, a__3[0] = "cresc{1"; -#line 5861 "" +#line 5862 "" *(unsigned char *)&ch__1[0] = idh + 38; -#line 5861 "" +#line 5862 "" i__6[1] = 1, a__3[1] = ch__1; -#line 5861 "" +#line 5862 "" i__6[2] = 6, a__3[2] = "}{ }"; -#line 5861 "" - s_cat(tempq, a__3, i__6, &c__3, (ftnlen)48); #line 5862 "" - ltemp = 14; + s_cat(tempq, a__3, i__6, &c__3, (ftnlen)48); #line 5863 "" + ltemp = 14; +#line 5864 "" } else { /* Writing concatenation */ -#line 5864 "" +#line 5865 "" i__6[0] = 7, a__3[0] = "cresc{2"; -#line 5864 "" +#line 5865 "" *(unsigned char *)&ch__1[0] = idh + 28; -#line 5864 "" +#line 5865 "" i__6[1] = 1, a__3[1] = ch__1; -#line 5864 "" +#line 5865 "" i__6[2] = 6, a__3[2] = "}{ }"; -#line 5864 "" - s_cat(tempq, a__3, i__6, &c__3, (ftnlen)48); #line 5865 "" - ltemp = 14; + s_cat(tempq, a__3, i__6, &c__3, (ftnlen)48); #line 5866 "" - } + ltemp = 14; #line 5867 "" - s_wsfe(&io___419); + } +#line 5868 "" + s_wsfe(&io___420); /* Writing concatenation */ -#line 5867 "" +#line 5868 "" i__3[0] = *lsout, a__1[0] = soutq; -#line 5867 "" +#line 5868 "" i__3[1] = 1, a__1[1] = "%"; -#line 5867 "" +#line 5868 "" s_cat(ch__3, a__1, i__3, &c__2, (ftnlen)81); -#line 5867 "" +#line 5868 "" do_fio(&c__1, ch__3, *lsout + 1); -#line 5867 "" - e_wsfe(); #line 5868 "" + e_wsfe(); +#line 5869 "" *lsout = 0; /* Writing concatenation */ -#line 5869 "" +#line 5870 "" i__3[0] = ltemp - 5, a__1[0] = tempq; -#line 5869 "" +#line 5870 "" i__3[1] = lnumpq, a__1[1] = numpq; -#line 5869 "" +#line 5870 "" s_cat(ch__4, a__1, i__3, &c__2, (ftnlen)53); -#line 5869 "" +#line 5870 "" i__2 = ltemp - 5 + lnumpq; -#line 5869 "" +#line 5870 "" backfill_(&c__11, tempq, <emp, ch__4, &i__2, (ftnlen)48, ltemp - 5 + lnumpq); -#line 5871 "" - } #line 5872 "" + } +#line 5873 "" /* L3: */ -#line 5872 "" +#line 5873 "" } /* Shrink arrays, decrease ndyn 111109 */ -#line 5876 "" - for (icntdyn = numdyn; icntdyn >= 1; --icntdyn) { #line 5877 "" + for (icntdyn = numdyn; icntdyn >= 1; --icntdyn) { +#line 5878 "" i__1 = comdyn_1.ndyn - 1; -#line 5877 "" - for (jdyn = idynn[icntdyn - 1]; jdyn <= i__1; ++jdyn) { #line 5878 "" - comdyn_1.idyndat[jdyn - 1] = comdyn_1.idyndat[jdyn]; + for (jdyn = idynn[icntdyn - 1]; jdyn <= i__1; ++jdyn) { #line 5879 "" - comdyn_1.idynda2[jdyn - 1] = comdyn_1.idynda2[jdyn]; + comdyn_1.idyndat[jdyn - 1] = comdyn_1.idyndat[jdyn]; #line 5880 "" + comdyn_1.idynda2[jdyn - 1] = comdyn_1.idynda2[jdyn]; +#line 5881 "" /* L7: */ -#line 5880 "" - } #line 5881 "" - --comdyn_1.ndyn; + } #line 5882 "" + --comdyn_1.ndyn; +#line 5883 "" /* L6: */ -#line 5882 "" - } #line 5883 "" + } +#line 5884 "" return 0; } /* dodyn_ */ @@ -14102,15 +14104,15 @@ L5: static real wheadpt1; /* Fortran I/O blocks */ - static cilist io___425 = { 0, 6, 0, 0, 0 }; - static cilist io___429 = { 0, 6, 0, 0, 0 }; + static cilist io___426 = { 0, 6, 0, 0, 0 }; static cilist io___430 = { 0, 6, 0, 0, 0 }; - static cilist io___431 = { 0, 15, 0, "(/,a)", 0 }; - static icilist io___434 = { 0, notexq, 0, "(i2)", 2, 1 }; - static cilist io___435 = { 0, 6, 0, 0, 0 }; - static icilist io___459 = { 0, notexq+13, 0, "(a1,f4.1)", 5, 1 }; - static icilist io___461 = { 0, notexq+13, 0, "(f4.1)", 4, 1 }; - static icilist io___463 = { 0, notexq+5, 0, "(f3.1)", 3, 1 }; + static cilist io___431 = { 0, 6, 0, 0, 0 }; + static cilist io___432 = { 0, 15, 0, "(/,a)", 0 }; + static icilist io___435 = { 0, notexq, 0, "(i2)", 2, 1 }; + static cilist io___436 = { 0, 6, 0, 0, 0 }; + static icilist io___460 = { 0, notexq+13, 0, "(a1,f4.1)", 5, 1 }; + static icilist io___462 = { 0, notexq+13, 0, "(f4.1)", 4, 1 }; + static icilist io___464 = { 0, notexq+5, 0, "(f3.1)", 3, 1 }; @@ -14118,1426 +14120,1426 @@ L5: /* It is only used to find ig. */ /* ig is returned to makeabar in case there's a slur that needs to be ended */ -#line 5922 "" +#line 5923 "" /* Parameter adjustments */ -#line 5922 "" +#line 5923 "" ulq -= 25; -#line 5922 "" +#line 5923 "" --ptgr; -#line 5922 "" +#line 5923 "" -#line 5922 "" +#line 5923 "" /* Function Body */ -#line 5922 "" +#line 5923 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 5922 "" - *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; #line 5923 "" - isgaft = bit_test(*ipl,29); + *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; #line 5924 "" - iswaft = bit_test(*ipl,31); + isgaft = bit_test(*ipl,29); #line 5925 "" + iswaft = bit_test(*ipl,31); +#line 5926 "" normsp = ! isgaft; /* Find ig. */ -#line 5929 "" +#line 5930 "" i__1 = comgrace_1.ngrace; -#line 5929 "" - for (*ig = 1; *ig <= i__1; ++(*ig)) { #line 5930 "" + for (*ig = 1; *ig <= i__1; ++(*ig)) { +#line 5931 "" if (comgrace_1.ipg[*ig - 1] == *ip && comgrace_1.ivg[*ig - 1] == *ivx) { -#line 5930 "" - goto L121; -#line 5930 "" - } #line 5931 "" -/* L120: */ + goto L121; #line 5931 "" - } + } #line 5932 "" - s_wsle(&io___425); +/* L120: */ #line 5932 "" + } +#line 5933 "" + s_wsle(&io___426); +#line 5933 "" do_lio(&c__9, &c__1, "Problem finding grace index in dograce", (ftnlen)38) ; -#line 5932 "" - e_wsle(); #line 5933 "" - s_stop("", (ftnlen)0); + e_wsle(); #line 5934 "" -L121: + s_stop("", (ftnlen)0); #line 5935 "" - ngs = comgrace_1.ngstrt[*ig - 1]; +L121: #line 5936 "" + ngs = comgrace_1.ngstrt[*ig - 1]; +#line 5937 "" mg = comgrace_1.multg[*ig - 1]; /* wheadpt1 = wheadpt*fullsize(ivx) */ -#line 5938 "" +#line 5939 "" wheadpt1 = comask_1.wheadpt * comfig_1.fullsize[*instno - 1]; /* For way-after-graces at end of bar, must set the octave. */ -#line 5942 "" - if (*farend) { #line 5943 "" - comoct_1.noctup = 0; + if (*farend) { #line 5944 "" + comoct_1.noctup = 0; +#line 5945 "" if (*ncm == 23) { -#line 5944 "" +#line 5945 "" comoct_1.noctup = -2; -#line 5944 "" - } #line 5945 "" - } + } #line 5946 "" - if (comgrace_1.slurg[*ig - 1] && ! iswaft && ! isgaft) { + } #line 5947 "" - if (comslur_1.listslur == 16777215) { -#line 5948 "" - s_wsle(&io___429); + if (comgrace_1.slurg[*ig - 1] && ! iswaft && ! isgaft) { #line 5948 "" - e_wsle(); + if (comslur_1.listslur == 16777215) { #line 5949 "" s_wsle(&io___430); -#line 5949 "" - do_lio(&c__9, &c__1, "You defined the twentyfifth slur, one too "\ - "many!", (ftnlen)47); #line 5949 "" e_wsle(); #line 5950 "" - s_wsfe(&io___431); + s_wsle(&io___431); +#line 5950 "" + do_lio(&c__9, &c__1, "You defined the twentyfifth slur, one too "\ + "many!", (ftnlen)47); #line 5950 "" + e_wsle(); +#line 5951 "" + s_wsfe(&io___432); +#line 5951 "" do_fio(&c__1, "You defined the twentyfifth slur, one too many!", ( ftnlen)47); -#line 5950 "" +#line 5951 "" e_wsfe(); -#line 5952 "" - stop1_(); #line 5953 "" + stop1_(); +#line 5954 "" } /* Slur on fore-grace. Get index of next slur not in use, from 23 down. */ -#line 5957 "" +#line 5958 "" i__1 = 16777215 - comslur_1.listslur; -#line 5957 "" +#line 5958 "" comslur_1.ndxslur = log2_(&i__1); -#line 5959 "" - } #line 5960 "" + } +#line 5961 "" if (comgrace_1.nng[*ig - 1] == 1) { /* Single grace. */ -#line 5964 "" +#line 5965 "" if (normsp) { /* Anything but GA */ /* Writing concatenation */ -#line 5968 "" +#line 5969 "" i__2[0] = 1, a__1[0] = sq; -#line 5968 "" +#line 5969 "" i__2[1] = 5, a__1[1] = "shlft"; -#line 5968 "" +#line 5969 "" s_cat(ch__2, a__1, i__2, &c__2, (ftnlen)6); -#line 5968 "" - addstr_(ch__2, &c__6, soutq, lsout, (ftnlen)6, (ftnlen)80); #line 5969 "" + addstr_(ch__2, &c__6, soutq, lsout, (ftnlen)6, (ftnlen)80); +#line 5970 "" niptgr = i_nint(&ptgr[*ig]); /* Empirical tweak for postscript. */ /* if (.not.fontslur) niptgr = niptgr+nint(wheadpt*.3) */ /* ++ */ -#line 5975 "" +#line 5976 "" if (niptgr < 10) { /* Writing concatenation */ -#line 5976 "" +#line 5977 "" i__1 = niptgr + 48; -#line 5976 "" +#line 5977 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 5976 "" +#line 5977 "" i__2[0] = 1, a__1[0] = ch__1; -#line 5976 "" +#line 5977 "" i__2[1] = 1, a__1[1] = "{"; -#line 5976 "" +#line 5977 "" s_cat(ch__3, a__1, i__2, &c__2, (ftnlen)2); -#line 5976 "" - addstr_(ch__3, &c__2, soutq, lsout, (ftnlen)2, (ftnlen)80); #line 5977 "" - } else if (niptgr < 100) { -#line 5978 "" - s_wsfi(&io___434); + addstr_(ch__3, &c__2, soutq, lsout, (ftnlen)2, (ftnlen)80); #line 5978 "" + } else if (niptgr < 100) { +#line 5979 "" + s_wsfi(&io___435); +#line 5979 "" do_fio(&c__1, (char *)&niptgr, (ftnlen)sizeof(integer)); -#line 5978 "" +#line 5979 "" e_wsfi(); /* Writing concatenation */ -#line 5979 "" +#line 5980 "" i__3[0] = 1, a__2[0] = "{"; -#line 5979 "" +#line 5980 "" i__3[1] = 2, a__2[1] = notexq; -#line 5979 "" +#line 5980 "" i__3[2] = 2, a__2[2] = "}{"; -#line 5979 "" +#line 5980 "" s_cat(ch__4, a__2, i__3, &c__3, (ftnlen)5); -#line 5979 "" - addstr_(ch__4, &c__5, soutq, lsout, (ftnlen)5, (ftnlen)80); #line 5980 "" - } else { -#line 5981 "" - s_wsle(&io___435); + addstr_(ch__4, &c__5, soutq, lsout, (ftnlen)5, (ftnlen)80); #line 5981 "" + } else { +#line 5982 "" + s_wsle(&io___436); +#line 5982 "" do_lio(&c__9, &c__1, "Call Dr. Don if you really want grace "\ "note group > 99 pt", (ftnlen)56); -#line 5981 "" +#line 5982 "" e_wsle(); -#line 5983 "" - s_stop("", (ftnlen)0); #line 5984 "" - } + s_stop("", (ftnlen)0); #line 5985 "" + } +#line 5986 "" } else { /* Writing concatenation */ -#line 5986 "" +#line 5987 "" i__2[0] = 1, a__1[0] = sq; -#line 5986 "" +#line 5987 "" i__2[1] = 10, a__1[1] = "gaft{1.5}{"; -#line 5986 "" +#line 5987 "" s_cat(ch__5, a__1, i__2, &c__2, (ftnlen)11); -#line 5986 "" +#line 5987 "" addstr_(ch__5, &c__11, soutq, lsout, (ftnlen)11, (ftnlen)80); /* GA. Compute aftshft, for later use. */ -#line 5990 "" - comgrace_1.aftshft = spfacs_1.grafac; #line 5991 "" + comgrace_1.aftshft = spfacs_1.grafac; +#line 5992 "" if (comgrace_1.naccg[comgrace_1.ngstrt[*ig - 1] - 1] > 0) { -#line 5991 "" +#line 5992 "" comgrace_1.aftshft += spfacs_1.agc1fac; -#line 5991 "" - } #line 5992 "" - comgrace_1.aftshft *= comask_1.wheadpt; + } #line 5993 "" - } + comgrace_1.aftshft *= comask_1.wheadpt; #line 5994 "" + } +#line 5995 "" if (comgrace_1.slurg[*ig - 1] && ! isgaft && ! iswaft) { /* Start slur on pre-grace. No accounting needed since will be ended very soon. */ -#line 5998 "" +#line 5999 "" notefq_(noteq, &lnoten, &comgrace_1.nolevg[ngs - 1], ncm, (ftnlen) 8); -#line 5999 "" - if (comslur_1.fontslur) { #line 6000 "" + if (comslur_1.fontslur) { +#line 6001 "" if (comgrace_1.upg[*ig - 1]) { /* Writing concatenation */ -#line 6001 "" +#line 6002 "" i__2[0] = 1, a__1[0] = sq; -#line 6001 "" +#line 6002 "" i__2[1] = 6, a__1[1] = "islurd"; -#line 6001 "" +#line 6002 "" s_cat(ch__6, a__1, i__2, &c__2, (ftnlen)7); -#line 6001 "" +#line 6002 "" addstr_(ch__6, &c__7, soutq, lsout, (ftnlen)7, (ftnlen)80) ; -#line 6002 "" +#line 6003 "" } else { /* Writing concatenation */ -#line 6003 "" +#line 6004 "" i__2[0] = 1, a__1[0] = sq; -#line 6003 "" +#line 6004 "" i__2[1] = 6, a__1[1] = "isluru"; -#line 6003 "" +#line 6004 "" s_cat(ch__6, a__1, i__2, &c__2, (ftnlen)7); -#line 6003 "" +#line 6004 "" addstr_(ch__6, &c__7, soutq, lsout, (ftnlen)7, (ftnlen)80) ; -#line 6004 "" - } #line 6005 "" + } +#line 6006 "" } else { /* Start Postscript slur. */ -#line 6009 "" +#line 6010 "" if (comgrace_1.upg[*ig - 1]) { /* Writing concatenation */ -#line 6010 "" +#line 6011 "" i__2[0] = 1, a__1[0] = sq; -#line 6010 "" +#line 6011 "" i__2[1] = 3, a__1[1] = "isd"; -#line 6010 "" +#line 6011 "" s_cat(ch__7, a__1, i__2, &c__2, (ftnlen)4); -#line 6010 "" +#line 6011 "" addstr_(ch__7, &c__4, soutq, lsout, (ftnlen)4, (ftnlen)80) ; -#line 6011 "" +#line 6012 "" } else { /* Writing concatenation */ -#line 6012 "" +#line 6013 "" i__2[0] = 1, a__1[0] = sq; -#line 6012 "" +#line 6013 "" i__2[1] = 3, a__1[1] = "isu"; -#line 6012 "" +#line 6013 "" s_cat(ch__7, a__1, i__2, &c__2, (ftnlen)4); -#line 6012 "" +#line 6013 "" addstr_(ch__7, &c__4, soutq, lsout, (ftnlen)4, (ftnlen)80) ; -#line 6013 "" - } #line 6014 "" + } +#line 6015 "" } /* Print slur number, 23-ndxslur */ -#line 6018 "" - lnote = 0; #line 6019 "" + lnote = 0; +#line 6020 "" if (23 - comslur_1.ndxslur < 10) { /* notexq = notexq(1:lnote)//chax(59-ndxslur) */ -#line 6021 "" +#line 6022 "" i__1 = 71 - comslur_1.ndxslur; -#line 6021 "" +#line 6022 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 6021 "" - s_copy(notexq, ch__1, (ftnlen)79, (ftnlen)1); #line 6022 "" - lnote = 1; + s_copy(notexq, ch__1, (ftnlen)79, (ftnlen)1); #line 6023 "" + lnote = 1; +#line 6024 "" } else if (23 - comslur_1.ndxslur < 20) { /* notexq = notexq(1:lnote)//'{1'//chax(49-ndxslur)//'}' */ /* Writing concatenation */ -#line 6025 "" +#line 6026 "" i__3[0] = 2, a__2[0] = "{1"; -#line 6025 "" +#line 6026 "" i__1 = 61 - comslur_1.ndxslur; -#line 6025 "" +#line 6026 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 6025 "" +#line 6026 "" i__3[1] = 1, a__2[1] = ch__1; -#line 6025 "" +#line 6026 "" i__3[2] = 1, a__2[2] = "}"; -#line 6025 "" - s_cat(notexq, a__2, i__3, &c__3, (ftnlen)79); #line 6026 "" - lnote = 4; + s_cat(notexq, a__2, i__3, &c__3, (ftnlen)79); #line 6027 "" + lnote = 4; +#line 6028 "" } else { /* Writing concatenation */ -#line 6028 "" +#line 6029 "" i__4[0] = lnote, a__3[0] = notexq; -#line 6028 "" +#line 6029 "" i__4[1] = 2, a__3[1] = "{2"; -#line 6028 "" +#line 6029 "" i__1 = 51 - comslur_1.ndxslur; -#line 6028 "" +#line 6029 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 6028 "" +#line 6029 "" i__4[2] = 1, a__3[2] = ch__1; -#line 6028 "" +#line 6029 "" i__4[3] = 1, a__3[3] = "}"; -#line 6028 "" - s_cat(notexq, a__3, i__4, &c__4, (ftnlen)79); #line 6029 "" - lnote = 4; + s_cat(notexq, a__3, i__4, &c__4, (ftnlen)79); #line 6030 "" + lnote = 4; +#line 6031 "" } /* Writing concatenation */ -#line 6031 "" +#line 6032 "" i__2[0] = lnote, a__1[0] = notexq; -#line 6031 "" +#line 6032 "" i__2[1] = lnoten, a__1[1] = noteq; -#line 6031 "" +#line 6032 "" s_cat(ch__8, a__1, i__2, &c__2, (ftnlen)87); -#line 6031 "" +#line 6032 "" i__1 = lnote + lnoten; -#line 6031 "" +#line 6032 "" addstr_(ch__8, &i__1, soutq, lsout, lnote + lnoten, (ftnlen)80); -#line 6033 "" +#line 6034 "" if (! comslur_1.fontslur) { /* Horizontal tweaks for postscript slur on single grace */ -#line 6037 "" - stemup = TRUE_; #line 6038 "" + stemup = TRUE_; +#line 6039 "" if (comgrace_1.upg[*ig - 1]) { /* Check for up-grace + down stem. Get stem direction */ -#line 6042 "" +#line 6043 "" if (! (*beamon)) { /* Separate note. Get stem direction. */ -#line 6046 "" +#line 6047 "" udqq_(ch__1, (ftnlen)1, nolev, ncmidx, islur, nvmx, ivx, nv); -#line 6046 "" +#line 6047 "" stemup = *(unsigned char *)&ch__1[0] == 'u'; -#line 6048 "" +#line 6049 "" } else { /* In a beam */ -#line 6052 "" +#line 6053 "" stemup = *(unsigned char *)&ulq[*ivx + *ibmcnt * 24] == 'u'; -#line 6053 "" +#line 6054 "" } /* Stop the shift if whole note */ -#line 6057 "" - stemup = stemup || *tnote > 63.f; #line 6058 "" - } + stemup = stemup || *tnote > 63.f; #line 6059 "" - if (stemup) { + } #line 6060 "" + if (stemup) { +#line 6061 "" addstr_("{-.3}", &c__5, soutq, lsout, (ftnlen)5, (ftnlen) 80); -#line 6061 "" - } else { #line 6062 "" + } else { +#line 6063 "" addstr_("{-.8}", &c__5, soutq, lsout, (ftnlen)5, (ftnlen) 80); -#line 6063 "" - } #line 6064 "" - } + } #line 6065 "" - } + } #line 6066 "" - if (comgrace_1.naccg[ngs - 1] > 0) { + } #line 6067 "" + if (comgrace_1.naccg[ngs - 1] > 0) { +#line 6068 "" notefq_(noteq, &lnoten, &comgrace_1.nolevg[ngs - 1], ncm, (ftnlen) 8); /* Save for checking octave shifts in GA */ -#line 6071 "" - if (isgaft) { #line 6072 "" - lnotenga = lnoten; + if (isgaft) { #line 6073 "" - s_copy(noteqga, noteq, (ftnlen)8, (ftnlen)8); + lnotenga = lnoten; #line 6074 "" + s_copy(noteqga, noteq, (ftnlen)8, (ftnlen)8); +#line 6075 "" } -#line 6076 "" +#line 6077 "" if (lnoten == 1) { -#line 6076 "" +#line 6077 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 6076 "" - } #line 6077 "" + } +#line 6078 "" accsym_(&comgrace_1.naccg[ngs - 1], acsymq, &lacc, (ftnlen)3); /* Writing concatenation */ -#line 6078 "" +#line 6079 "" i__4[0] = 1, a__3[0] = sq; -#line 6078 "" +#line 6079 "" i__4[1] = 3, a__3[1] = "big"; -#line 6078 "" +#line 6079 "" i__4[2] = lacc, a__3[2] = acsymq; -#line 6078 "" +#line 6079 "" i__4[3] = lnoten, a__3[3] = noteq; -#line 6078 "" +#line 6079 "" s_cat(ch__9, a__3, i__4, &c__4, (ftnlen)15); -#line 6078 "" +#line 6079 "" i__1 = lacc + 4 + lnoten; -#line 6078 "" +#line 6079 "" addstr_(ch__9, &i__1, soutq, lsout, lacc + 4 + lnoten, (ftnlen)80) ; -#line 6080 "" - } #line 6081 "" + } +#line 6082 "" if (comgrace_1.slashg[*ig - 1]) { /* Writing concatenation */ -#line 6082 "" +#line 6083 "" i__2[0] = 1, a__1[0] = sq; -#line 6082 "" +#line 6083 "" i__2[1] = 3, a__1[1] = "grc"; -#line 6082 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6083 "" - lnote = 4; + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6084 "" + lnote = 4; +#line 6085 "" } else if (mg == 0) { /* Writing concatenation */ -#line 6085 "" +#line 6086 "" i__2[0] = 1, a__1[0] = sq; -#line 6085 "" +#line 6086 "" i__2[1] = 2, a__1[1] = "zq"; -#line 6085 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6086 "" - lnote = 3; + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6087 "" + lnote = 3; +#line 6088 "" } else { /* Writing concatenation */ -#line 6088 "" +#line 6089 "" i__2[0] = 1, a__1[0] = sq; -#line 6088 "" +#line 6089 "" i__2[1] = 2, a__1[1] = "zc"; -#line 6088 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6089 "" + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); +#line 6090 "" i__1 = mg; -#line 6089 "" +#line 6090 "" for (i__ = 2; i__ <= i__1; ++i__) { /* Writing concatenation */ -#line 6090 "" +#line 6091 "" i__2[0] = i__ + 1, a__1[0] = notexq; -#line 6090 "" +#line 6091 "" i__2[1] = 1, a__1[1] = "c"; -#line 6090 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6091 "" + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); +#line 6092 "" /* L61: */ -#line 6091 "" - } #line 6092 "" - lnote = mg + 2; + } #line 6093 "" - } + lnote = mg + 2; #line 6094 "" + } +#line 6095 "" if (comgrace_1.upg[*ig - 1]) { /* Writing concatenation */ -#line 6095 "" +#line 6096 "" i__2[0] = lnote, a__1[0] = notexq; -#line 6095 "" +#line 6096 "" i__2[1] = 1, a__1[1] = "u"; -#line 6095 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6096 "" + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); +#line 6097 "" } else { /* Writing concatenation */ -#line 6097 "" +#line 6098 "" i__2[0] = lnote, a__1[0] = notexq; -#line 6097 "" +#line 6098 "" i__2[1] = 1, a__1[1] = "l"; -#line 6097 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6098 "" - } + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6099 "" + } +#line 6100 "" i__1 = lnote + 1; -#line 6099 "" - addstr_(notexq, &i__1, soutq, lsout, (ftnlen)79, (ftnlen)80); #line 6100 "" + addstr_(notexq, &i__1, soutq, lsout, (ftnlen)79, (ftnlen)80); +#line 6101 "" notefq_(noteq, &lnoten, &comgrace_1.nolevg[ngs - 1], ncm, (ftnlen)8); -#line 6102 "" - if (isgaft && comgrace_1.naccg[ngs - 1] == 0) { #line 6103 "" - lnotenga = lnoten; + if (isgaft && comgrace_1.naccg[ngs - 1] == 0) { #line 6104 "" - s_copy(noteqga, noteq, (ftnlen)8, (ftnlen)8); + lnotenga = lnoten; #line 6105 "" + s_copy(noteqga, noteq, (ftnlen)8, (ftnlen)8); +#line 6106 "" } -#line 6107 "" +#line 6108 "" if (lnoten == 1) { -#line 6107 "" +#line 6108 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 6107 "" - } #line 6108 "" - addstr_(noteq, &lnoten, soutq, lsout, (ftnlen)8, (ftnlen)80); + } #line 6109 "" + addstr_(noteq, &lnoten, soutq, lsout, (ftnlen)8, (ftnlen)80); +#line 6110 "" if (comgrace_1.slashg[*ig - 1]) { /* Writing concatenation */ -#line 6109 "" +#line 6110 "" i__4[0] = 1, a__3[0] = sq; -#line 6109 "" +#line 6110 "" i__4[1] = 5, a__3[1] = "off{-"; -#line 6109 "" +#line 6110 "" i__4[2] = 1, a__3[2] = sq; -#line 6109 "" +#line 6110 "" i__4[3] = 9, a__3[3] = "noteskip}"; -#line 6109 "" +#line 6110 "" s_cat(ch__10, a__3, i__4, &c__4, (ftnlen)16); -#line 6109 "" +#line 6110 "" addstr_(ch__10, &c__16, soutq, lsout, (ftnlen)16, (ftnlen)80); -#line 6109 "" +#line 6110 "" } /* Above code needed since slashg causes spacing */ -#line 6114 "" +#line 6115 "" if (comgrace_1.slurg[*ig - 1] && (iswaft || isgaft)) { /* Terminate slur on single after-grace */ -#line 6118 "" - comslur_1.ndxslur = igetbits_(ipl, &c__5, &c__23); #line 6119 "" + comslur_1.ndxslur = igetbits_(ipl, &c__5, &c__23); +#line 6120 "" notefq_(noteq, &lnoten, &comgrace_1.nolevg[ngs - 1], ncm, (ftnlen) 8); /* Writing concatenation */ -#line 6120 "" +#line 6121 "" i__2[0] = 1, a__1[0] = sq; -#line 6120 "" +#line 6121 "" i__2[1] = 5, a__1[1] = "tslur"; -#line 6120 "" +#line 6121 "" s_cat(ch__2, a__1, i__2, &c__2, (ftnlen)6); -#line 6120 "" +#line 6121 "" addstr_(ch__2, &c__6, soutq, lsout, (ftnlen)6, (ftnlen)80); /* Print 24-ndxslur */ /* if (11-ndxslur .lt. 10) then */ -#line 6125 "" +#line 6126 "" if (23 - comslur_1.ndxslur < 10) { /* call addstr(chax(59-ndxslur)//noteq(1:lnoten), */ /* Writing concatenation */ -#line 6127 "" +#line 6128 "" i__1 = 71 - comslur_1.ndxslur; -#line 6127 "" +#line 6128 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 6127 "" +#line 6128 "" i__2[0] = 1, a__1[0] = ch__1; -#line 6127 "" +#line 6128 "" i__2[1] = lnoten, a__1[1] = noteq; -#line 6127 "" +#line 6128 "" s_cat(ch__11, a__1, i__2, &c__2, (ftnlen)9); -#line 6127 "" +#line 6128 "" i__5 = lnoten + 1; -#line 6127 "" +#line 6128 "" addstr_(ch__11, &i__5, soutq, lsout, lnoten + 1, (ftnlen)80); -#line 6129 "" +#line 6130 "" } else if (23 - comslur_1.ndxslur < 20) { /* Writing concatenation */ -#line 6130 "" +#line 6131 "" i__4[0] = 2, a__3[0] = "{2"; -#line 6130 "" +#line 6131 "" i__1 = 61 - comslur_1.ndxslur; -#line 6130 "" +#line 6131 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 6130 "" +#line 6131 "" i__4[1] = 1, a__3[1] = ch__1; -#line 6130 "" +#line 6131 "" i__4[2] = 1, a__3[2] = "}"; -#line 6130 "" +#line 6131 "" i__4[3] = lnoten, a__3[3] = noteq; -#line 6130 "" +#line 6131 "" s_cat(ch__12, a__3, i__4, &c__4, (ftnlen)12); -#line 6130 "" +#line 6131 "" i__5 = lnoten + 4; -#line 6130 "" +#line 6131 "" addstr_(ch__12, &i__5, soutq, lsout, lnoten + 4, (ftnlen)80); -#line 6132 "" +#line 6133 "" } else { /* call addstr('{1'//chax(49-ndxslur)//'}'//noteq(1:lnoten), */ /* Writing concatenation */ -#line 6134 "" +#line 6135 "" i__4[0] = 2, a__3[0] = "{1"; -#line 6134 "" +#line 6135 "" i__1 = 51 - comslur_1.ndxslur; -#line 6134 "" +#line 6135 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 6134 "" +#line 6135 "" i__4[1] = 1, a__3[1] = ch__1; -#line 6134 "" +#line 6135 "" i__4[2] = 1, a__3[2] = "}"; -#line 6134 "" +#line 6135 "" i__4[3] = lnoten, a__3[3] = noteq; -#line 6134 "" +#line 6135 "" s_cat(ch__12, a__3, i__4, &c__4, (ftnlen)12); -#line 6134 "" +#line 6135 "" i__5 = lnoten + 4; -#line 6134 "" +#line 6135 "" addstr_(ch__12, &i__5, soutq, lsout, lnoten + 4, (ftnlen)80); -#line 6136 "" - } #line 6137 "" - comgrace_1.slurg[*ig - 1] = FALSE_; + } #line 6138 "" + comgrace_1.slurg[*ig - 1] = FALSE_; +#line 6139 "" comslur_1.listslur = bit_clear(comslur_1.listslur, comslur_1.ndxslur); -#line 6139 "" - } #line 6140 "" + } +#line 6141 "" addstr_("}", &c__1, soutq, lsout, (ftnlen)1, (ftnlen)80); /* +++ Try to fix loss of octave with single gaft */ -#line 6144 "" - if (isgaft) { #line 6145 "" - itrans = 0; + if (isgaft) { #line 6146 "" + itrans = 0; +#line 6147 "" i__1 = lnotenga; -#line 6146 "" - for (i__ = 1; i__ <= i__1; ++i__) { #line 6147 "" + for (i__ = 1; i__ <= i__1; ++i__) { +#line 6148 "" chax_(ch__1, (ftnlen)1, &c__39); -#line 6147 "" +#line 6148 "" if (*(unsigned char *)¬eqga[i__ - 1] == *(unsigned char *)& ch__1[0]) { -#line 6148 "" - itrans += 7; #line 6149 "" + itrans += 7; +#line 6150 "" } else /* if(complicated condition) */ { -#line 6149 "" +#line 6150 "" chax_(ch__1, (ftnlen)1, &c__96); -#line 6149 "" +#line 6150 "" if (*(unsigned char *)¬eqga[i__ - 1] == *(unsigned char *)&ch__1[0]) { -#line 6150 "" - itrans += -7; #line 6151 "" + itrans += -7; +#line 6152 "" } -#line 6151 "" - } #line 6152 "" + } +#line 6153 "" /* L1: */ -#line 6152 "" - } #line 6153 "" + } +#line 6154 "" if (itrans == -14) { /* Writing concatenation */ -#line 6154 "" +#line 6155 "" i__4[0] = 1, a__3[0] = sq; -#line 6154 "" +#line 6155 "" i__4[1] = 7, a__3[1] = "advance"; -#line 6154 "" +#line 6155 "" i__4[2] = 1, a__3[2] = sq; -#line 6154 "" +#line 6155 "" i__4[3] = 12, a__3[3] = "transpose-14"; -#line 6154 "" +#line 6155 "" s_cat(ch__13, a__3, i__4, &c__4, (ftnlen)21); -#line 6154 "" +#line 6155 "" addstr_(ch__13, &c__21, soutq, lsout, (ftnlen)21, (ftnlen)80); -#line 6156 "" +#line 6157 "" } else if (itrans == -7) { /* Writing concatenation */ -#line 6157 "" +#line 6158 "" i__4[0] = 1, a__3[0] = sq; -#line 6157 "" +#line 6158 "" i__4[1] = 7, a__3[1] = "advance"; -#line 6157 "" +#line 6158 "" i__4[2] = 1, a__3[2] = sq; -#line 6157 "" +#line 6158 "" i__4[3] = 11, a__3[3] = "transpose-7"; -#line 6157 "" +#line 6158 "" s_cat(ch__14, a__3, i__4, &c__4, (ftnlen)20); -#line 6157 "" +#line 6158 "" addstr_(ch__14, &c__20, soutq, lsout, (ftnlen)20, (ftnlen)80); -#line 6159 "" +#line 6160 "" } else if (itrans == 7) { /* Writing concatenation */ -#line 6160 "" +#line 6161 "" i__4[0] = 1, a__3[0] = sq; -#line 6160 "" +#line 6161 "" i__4[1] = 7, a__3[1] = "advance"; -#line 6160 "" +#line 6161 "" i__4[2] = 1, a__3[2] = sq; -#line 6160 "" +#line 6161 "" i__4[3] = 10, a__3[3] = "transpose7"; -#line 6160 "" +#line 6161 "" s_cat(ch__15, a__3, i__4, &c__4, (ftnlen)19); -#line 6160 "" +#line 6161 "" addstr_(ch__15, &c__19, soutq, lsout, (ftnlen)19, (ftnlen)80); -#line 6162 "" +#line 6163 "" } else if (itrans == 14) { /* Writing concatenation */ -#line 6163 "" +#line 6164 "" i__4[0] = 1, a__3[0] = sq; -#line 6163 "" +#line 6164 "" i__4[1] = 7, a__3[1] = "advance"; -#line 6163 "" +#line 6164 "" i__4[2] = 1, a__3[2] = sq; -#line 6163 "" +#line 6164 "" i__4[3] = 11, a__3[3] = "transpose14"; -#line 6163 "" +#line 6164 "" s_cat(ch__14, a__3, i__4, &c__4, (ftnlen)20); -#line 6163 "" +#line 6164 "" addstr_(ch__14, &c__20, soutq, lsout, (ftnlen)20, (ftnlen)80); -#line 6165 "" - } #line 6166 "" - } + } #line 6167 "" + } +#line 6168 "" } else { /* Multiple grace. Put in literally. Compute beam stuff */ -#line 6171 "" - sumx = 0.f; #line 6172 "" - sumy = 0.f; + sumx = 0.f; #line 6173 "" - sumxy = 0.f; + sumy = 0.f; #line 6174 "" - sumxx = 0.f; + sumxy = 0.f; #line 6175 "" - sumyy = 0.f; + sumxx = 0.f; #line 6176 "" - x = 0.f; + sumyy = 0.f; #line 6177 "" + x = 0.f; +#line 6178 "" i__1 = ngs + comgrace_1.nng[*ig - 1] - 1; -#line 6177 "" - for (ing = ngs; ing <= i__1; ++ing) { #line 6178 "" + for (ing = ngs; ing <= i__1; ++ing) { +#line 6179 "" if (ing > ngs && comgrace_1.naccg[ing - 1] > 0) { -#line 6178 "" +#line 6179 "" x += spfacs_1.acgfac; -#line 6178 "" - } #line 6179 "" - y = (real) comgrace_1.nolevg[ing - 1]; + } #line 6180 "" - sumx += x; + y = (real) comgrace_1.nolevg[ing - 1]; #line 6181 "" - sumy += y; + sumx += x; #line 6182 "" - sumxy += x * y; + sumy += y; #line 6183 "" - sumxx += x * x; + sumxy += x * y; #line 6184 "" - sumyy += y * y; + sumxx += x * x; #line 6185 "" - x += spfacs_1.emgfac; + sumyy += y * y; #line 6186 "" + x += spfacs_1.emgfac; +#line 6187 "" /* L118: */ -#line 6186 "" - } #line 6187 "" - delta = comgrace_1.nng[*ig - 1] * sumxx - sumx * sumx; + } #line 6188 "" - em = (comgrace_1.nng[*ig - 1] * sumxy - sumx * sumy) / delta; + delta = comgrace_1.nng[*ig - 1] * sumxx - sumx * sumx; #line 6189 "" + em = (comgrace_1.nng[*ig - 1] * sumxy - sumx * sumy) / delta; +#line 6190 "" r__1 = em * .5f * spfacs_1.gslfac; -#line 6189 "" - islope = i_nint(&r__1); #line 6190 "" + islope = i_nint(&r__1); +#line 6191 "" if (abs(islope) > 9) { -#line 6190 "" +#line 6191 "" islope = i_sign(&c__9, &islope); -#line 6190 "" - } #line 6191 "" + } +#line 6192 "" beta = (sumy - islope / spfacs_1.gslfac * sumx) / comgrace_1.nng[*ig - 1]; -#line 6192 "" +#line 6193 "" nolev1 = i_nint(&beta); /* Back up */ /* Writing concatenation */ -#line 6196 "" +#line 6197 "" i__4[0] = 1, a__3[0] = sq; -#line 6196 "" +#line 6197 "" i__4[1] = 7, a__3[1] = "settiny"; -#line 6196 "" +#line 6197 "" i__4[2] = 1, a__3[2] = sq; -#line 6196 "" +#line 6197 "" i__4[3] = 4, a__3[3] = "off{"; -#line 6196 "" - s_cat(notexq, a__3, i__4, &c__4, (ftnlen)79); #line 6197 "" - if (normsp) { -#line 6198 "" - s_wsfi(&io___459); + s_cat(notexq, a__3, i__4, &c__4, (ftnlen)79); #line 6198 "" + if (normsp) { +#line 6199 "" + s_wsfi(&io___460); +#line 6199 "" do_fio(&c__1, "-", (ftnlen)1); -#line 6198 "" +#line 6199 "" do_fio(&c__1, (char *)&ptgr[*ig], (ftnlen)sizeof(real)); -#line 6198 "" +#line 6199 "" e_wsfi(); /* Writing concatenation */ -#line 6199 "" +#line 6200 "" i__2[0] = 18, a__1[0] = notexq; -#line 6199 "" +#line 6200 "" i__2[1] = 3, a__1[1] = "pt}"; -#line 6199 "" +#line 6200 "" s_cat(ch__13, a__1, i__2, &c__2, (ftnlen)21); -#line 6199 "" - addstr_(ch__13, &c__21, soutq, lsout, (ftnlen)21, (ftnlen)80); #line 6200 "" - finalshift = ptgr[*ig]; + addstr_(ch__13, &c__21, soutq, lsout, (ftnlen)21, (ftnlen)80); #line 6201 "" - } else { + finalshift = ptgr[*ig]; #line 6202 "" - comgrace_1.aftshft = comask_1.wheadpt * 1.33f; + } else { #line 6203 "" + comgrace_1.aftshft = comask_1.wheadpt * 1.33f; +#line 6204 "" if (comgrace_1.naccg[comgrace_1.ngstrt[*ig - 1] - 1] > 0) { -#line 6203 "" - comgrace_1.aftshft += comask_1.wheadpt * .5f; -#line 6203 "" - } #line 6204 "" - s_wsfi(&io___461); + comgrace_1.aftshft += comask_1.wheadpt * .5f; #line 6204 "" + } +#line 6205 "" + s_wsfi(&io___462); +#line 6205 "" do_fio(&c__1, (char *)&comgrace_1.aftshft, (ftnlen)sizeof(real)); -#line 6204 "" +#line 6205 "" e_wsfi(); /* Writing concatenation */ -#line 6205 "" +#line 6206 "" i__4[0] = 17, a__3[0] = notexq; -#line 6205 "" +#line 6206 "" i__4[1] = 3, a__3[1] = "pt}"; -#line 6205 "" +#line 6206 "" i__4[2] = 1, a__3[2] = sq; -#line 6205 "" +#line 6206 "" i__4[3] = 3, a__3[3] = "bsk"; -#line 6205 "" +#line 6206 "" s_cat(ch__16, a__3, i__4, &c__4, (ftnlen)24); -#line 6205 "" - addstr_(ch__16, &c__24, soutq, lsout, (ftnlen)24, (ftnlen)80); #line 6206 "" + addstr_(ch__16, &c__24, soutq, lsout, (ftnlen)24, (ftnlen)80); +#line 6207 "" } /* Start the beam */ /* Writing concatenation */ -#line 6210 "" +#line 6211 "" i__2[0] = 1, a__1[0] = sq; -#line 6210 "" +#line 6211 "" i__2[1] = 2, a__1[1] = "ib"; -#line 6210 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6211 "" + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); +#line 6212 "" i__1 = mg; -#line 6211 "" +#line 6212 "" for (ing = 2; ing <= i__1; ++ing) { /* Writing concatenation */ -#line 6212 "" +#line 6213 "" i__2[0] = ing + 1, a__1[0] = notexq; -#line 6212 "" +#line 6213 "" i__2[1] = 1, a__1[1] = "b"; -#line 6212 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6213 "" + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); +#line 6214 "" /* L119: */ -#line 6213 "" - } #line 6214 "" + } +#line 6215 "" if (comgrace_1.upg[*ig - 1]) { /* Writing concatenation */ -#line 6215 "" +#line 6216 "" i__2[0] = mg + 2, a__1[0] = notexq; -#line 6215 "" +#line 6216 "" i__2[1] = 1, a__1[1] = "u"; -#line 6215 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6216 "" + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); +#line 6217 "" } else { /* Writing concatenation */ -#line 6217 "" +#line 6218 "" i__2[0] = mg + 2, a__1[0] = notexq; -#line 6217 "" +#line 6218 "" i__2[1] = 1, a__1[1] = "l"; -#line 6217 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6218 "" + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); +#line 6219 "" } /* Writing concatenation */ -#line 6219 "" +#line 6220 "" i__2[0] = mg + 3, a__1[0] = notexq; -#line 6219 "" +#line 6220 "" i__2[1] = 1, a__1[1] = "0"; -#line 6219 "" +#line 6220 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); /* Get starting note for beam */ -#line 6223 "" +#line 6224 "" notefq_(noteq, &lnoten, &nolev1, ncm, (ftnlen)8); /* Writing concatenation */ -#line 6224 "" +#line 6225 "" i__2[0] = mg + 4, a__1[0] = notexq; -#line 6224 "" +#line 6225 "" i__2[1] = lnoten, a__1[1] = noteq; -#line 6224 "" +#line 6225 "" s_cat(ch__8, a__1, i__2, &c__2, (ftnlen)87); -#line 6224 "" +#line 6225 "" i__1 = mg + 4 + lnoten; -#line 6224 "" +#line 6225 "" addstr_(ch__8, &i__1, soutq, lsout, mg + 4 + lnoten, (ftnlen)80); /* Put in the slope */ -#line 6229 "" - if (islope >= 0) { #line 6230 "" + if (islope >= 0) { +#line 6231 "" i__1 = islope + 48; -#line 6230 "" +#line 6231 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 6230 "" - addstr_(ch__1, &c__1, soutq, lsout, (ftnlen)1, (ftnlen)80); #line 6231 "" + addstr_(ch__1, &c__1, soutq, lsout, (ftnlen)1, (ftnlen)80); +#line 6232 "" } else { /* Writing concatenation */ -#line 6232 "" +#line 6233 "" i__3[0] = 2, a__2[0] = "{-"; -#line 6232 "" +#line 6233 "" i__1 = 48 - islope; -#line 6232 "" +#line 6233 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 6232 "" +#line 6233 "" i__3[1] = 1, a__2[1] = ch__1; -#line 6232 "" +#line 6233 "" i__3[2] = 1, a__2[2] = "}"; -#line 6232 "" +#line 6233 "" s_cat(ch__7, a__2, i__3, &c__3, (ftnlen)4); -#line 6232 "" - addstr_(ch__7, &c__4, soutq, lsout, (ftnlen)4, (ftnlen)80); #line 6233 "" + addstr_(ch__7, &c__4, soutq, lsout, (ftnlen)4, (ftnlen)80); +#line 6234 "" } /* Start a slur on multiple fore-grace */ -#line 6237 "" - if (comgrace_1.slurg[*ig - 1] && ! isgaft && ! iswaft) { #line 6238 "" + if (comgrace_1.slurg[*ig - 1] && ! isgaft && ! iswaft) { +#line 6239 "" notefq_(noteq, &lnoten, &comgrace_1.nolevg[ngs - 1], ncm, (ftnlen) 8); -#line 6239 "" - if (comslur_1.fontslur) { #line 6240 "" + if (comslur_1.fontslur) { +#line 6241 "" if (comgrace_1.upg[*ig - 1]) { /* Writing concatenation */ -#line 6241 "" +#line 6242 "" i__2[0] = 1, a__1[0] = sq; -#line 6241 "" +#line 6242 "" i__2[1] = 6, a__1[1] = "islurd"; -#line 6241 "" +#line 6242 "" s_cat(ch__6, a__1, i__2, &c__2, (ftnlen)7); -#line 6241 "" +#line 6242 "" addstr_(ch__6, &c__7, soutq, lsout, (ftnlen)7, (ftnlen)80) ; -#line 6242 "" +#line 6243 "" } else { /* Writing concatenation */ -#line 6243 "" +#line 6244 "" i__2[0] = 1, a__1[0] = sq; -#line 6243 "" +#line 6244 "" i__2[1] = 6, a__1[1] = "isluru"; -#line 6243 "" +#line 6244 "" s_cat(ch__6, a__1, i__2, &c__2, (ftnlen)7); -#line 6243 "" +#line 6244 "" addstr_(ch__6, &c__7, soutq, lsout, (ftnlen)7, (ftnlen)80) ; -#line 6244 "" - } #line 6245 "" + } +#line 6246 "" } else { /* Need a tweak for postscript slur */ -#line 6249 "" +#line 6250 "" if (comgrace_1.upg[*ig - 1]) { /* Writing concatenation */ -#line 6250 "" +#line 6251 "" i__2[0] = 1, a__1[0] = sq; -#line 6250 "" +#line 6251 "" i__2[1] = 3, a__1[1] = "isd"; -#line 6250 "" +#line 6251 "" s_cat(ch__7, a__1, i__2, &c__2, (ftnlen)4); -#line 6250 "" +#line 6251 "" addstr_(ch__7, &c__4, soutq, lsout, (ftnlen)4, (ftnlen)80) ; -#line 6251 "" +#line 6252 "" } else { /* Writing concatenation */ -#line 6252 "" +#line 6253 "" i__2[0] = 1, a__1[0] = sq; -#line 6252 "" +#line 6253 "" i__2[1] = 3, a__1[1] = "isu"; -#line 6252 "" +#line 6253 "" s_cat(ch__7, a__1, i__2, &c__2, (ftnlen)4); -#line 6252 "" +#line 6253 "" addstr_(ch__7, &c__4, soutq, lsout, (ftnlen)4, (ftnlen)80) ; -#line 6253 "" - } #line 6254 "" + } +#line 6255 "" } /* Print 23-ndxslur */ -#line 6258 "" +#line 6259 "" if (23 - comslur_1.ndxslur < 10) { /* Writing concatenation */ -#line 6259 "" +#line 6260 "" i__1 = 71 - comslur_1.ndxslur; -#line 6259 "" +#line 6260 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 6259 "" +#line 6260 "" i__2[0] = 1, a__1[0] = ch__1; -#line 6259 "" +#line 6260 "" i__2[1] = lnoten, a__1[1] = noteq; -#line 6259 "" +#line 6260 "" s_cat(ch__11, a__1, i__2, &c__2, (ftnlen)9); -#line 6259 "" +#line 6260 "" i__5 = lnoten + 1; -#line 6259 "" +#line 6260 "" addstr_(ch__11, &i__5, soutq, lsout, lnoten + 1, (ftnlen)80); -#line 6261 "" +#line 6262 "" } else if (23 - comslur_1.ndxslur < 2) { /* Writing concatenation */ -#line 6262 "" +#line 6263 "" i__4[0] = 2, a__3[0] = "{1"; -#line 6262 "" +#line 6263 "" i__1 = 61 - comslur_1.ndxslur; -#line 6262 "" +#line 6263 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 6262 "" +#line 6263 "" i__4[1] = 1, a__3[1] = ch__1; -#line 6262 "" +#line 6263 "" i__4[2] = 1, a__3[2] = "}"; -#line 6262 "" +#line 6263 "" i__4[3] = lnoten, a__3[3] = noteq; -#line 6262 "" +#line 6263 "" s_cat(ch__12, a__3, i__4, &c__4, (ftnlen)12); -#line 6262 "" +#line 6263 "" i__5 = lnoten + 4; -#line 6262 "" +#line 6263 "" addstr_(ch__12, &i__5, soutq, lsout, lnoten + 4, (ftnlen)80); -#line 6264 "" +#line 6265 "" } else { /* Writing concatenation */ -#line 6265 "" +#line 6266 "" i__4[0] = 2, a__3[0] = "{1"; -#line 6265 "" +#line 6266 "" i__1 = 51 - comslur_1.ndxslur; -#line 6265 "" +#line 6266 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 6265 "" +#line 6266 "" i__4[1] = 1, a__3[1] = ch__1; -#line 6265 "" +#line 6266 "" i__4[2] = 1, a__3[2] = "}"; -#line 6265 "" +#line 6266 "" i__4[3] = lnoten, a__3[3] = noteq; -#line 6265 "" +#line 6266 "" s_cat(ch__12, a__3, i__4, &c__4, (ftnlen)12); -#line 6265 "" +#line 6266 "" i__5 = lnoten + 4; -#line 6265 "" +#line 6266 "" addstr_(ch__12, &i__5, soutq, lsout, lnoten + 4, (ftnlen)80); -#line 6267 "" +#line 6268 "" } /* Put in tweak for postscript slur */ -#line 6271 "" +#line 6272 "" if (! comslur_1.fontslur) { -#line 6271 "" +#line 6272 "" addstr_("{-.3}", &c__5, soutq, lsout, (ftnlen)5, (ftnlen)80); -#line 6271 "" - } #line 6272 "" + } +#line 6273 "" } /* Put in first note. Call notefq again in case octave changed */ -#line 6276 "" - notefq_(noteq, &lnoten, &comgrace_1.nolevg[ngs - 1], ncm, (ftnlen)8); #line 6277 "" + notefq_(noteq, &lnoten, &comgrace_1.nolevg[ngs - 1], ncm, (ftnlen)8); +#line 6278 "" if (comgrace_1.naccg[ngs - 1] == 0) { /* Writing concatenation */ -#line 6278 "" +#line 6279 "" i__3[0] = 1, a__2[0] = sq; -#line 6278 "" +#line 6279 "" i__3[1] = 4, a__2[1] = "zqb0"; -#line 6278 "" +#line 6279 "" i__3[2] = lnoten, a__2[2] = noteq; -#line 6278 "" - s_cat(notexq, a__2, i__3, &c__3, (ftnlen)79); #line 6279 "" - lnote = lnoten + 5; + s_cat(notexq, a__2, i__3, &c__3, (ftnlen)79); #line 6280 "" - } else { + lnote = lnoten + 5; #line 6281 "" + } else { +#line 6282 "" if (lnoten == 1) { -#line 6281 "" +#line 6282 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 6281 "" - } #line 6282 "" + } +#line 6283 "" accsym_(&comgrace_1.naccg[ngs - 1], acsymq, &lacc, (ftnlen)3); /* Writing concatenation */ -#line 6283 "" +#line 6284 "" i__4[0] = 1, a__3[0] = sq; -#line 6283 "" +#line 6284 "" i__4[1] = 3, a__3[1] = "big"; -#line 6283 "" +#line 6284 "" i__4[2] = lacc, a__3[2] = acsymq; -#line 6283 "" +#line 6284 "" i__4[3] = lnoten, a__3[3] = noteq; -#line 6283 "" - s_cat(notexq, a__3, i__4, &c__4, (ftnlen)79); #line 6284 "" - lnote = lacc + 4 + lnoten; + s_cat(notexq, a__3, i__4, &c__4, (ftnlen)79); #line 6285 "" + lnote = lacc + 4 + lnoten; +#line 6286 "" notefq_(noteq, &lnoten, &comgrace_1.nolevg[ngs - 1], ncm, (ftnlen) 8); /* Writing concatenation */ -#line 6286 "" +#line 6287 "" i__4[0] = lnote, a__3[0] = notexq; -#line 6286 "" +#line 6287 "" i__4[1] = 1, a__3[1] = sq; -#line 6286 "" +#line 6287 "" i__4[2] = 4, a__3[2] = "zqb0"; -#line 6286 "" +#line 6287 "" i__4[3] = lnoten, a__3[3] = noteq; -#line 6286 "" - s_cat(notexq, a__3, i__4, &c__4, (ftnlen)79); #line 6287 "" - lnote = lnote + 5 + lnoten; + s_cat(notexq, a__3, i__4, &c__4, (ftnlen)79); #line 6288 "" - } + lnote = lnote + 5 + lnoten; #line 6289 "" - addstr_(notexq, &lnote, soutq, lsout, (ftnlen)79, (ftnlen)80); + } #line 6290 "" + addstr_(notexq, &lnote, soutq, lsout, (ftnlen)79, (ftnlen)80); +#line 6291 "" i__1 = ngs + comgrace_1.nng[*ig - 1] - 1; -#line 6290 "" +#line 6291 "" for (ing = ngs + 1; ing <= i__1; ++ing) { /* Skip */ -#line 6294 "" - ptoff = wheadpt1 * spfacs_1.emgfac; #line 6295 "" + ptoff = wheadpt1 * spfacs_1.emgfac; +#line 6296 "" if (comgrace_1.naccg[ing - 1] > 0) { -#line 6295 "" +#line 6296 "" ptoff += wheadpt1 * spfacs_1.acgfac; -#line 6295 "" - } #line 6296 "" + } +#line 6297 "" if (isgaft && ! iswaft) { -#line 6296 "" +#line 6297 "" comgrace_1.aftshft += ptoff; -#line 6296 "" +#line 6297 "" } /* Writing concatenation */ -#line 6297 "" +#line 6298 "" i__2[0] = 1, a__1[0] = sq; -#line 6297 "" - i__2[1] = 4, a__1[1] = "off{"; -#line 6297 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6298 "" - s_wsfi(&io___463); + i__2[1] = 4, a__1[1] = "off{"; #line 6298 "" + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); +#line 6299 "" + s_wsfi(&io___464); +#line 6299 "" do_fio(&c__1, (char *)&ptoff, (ftnlen)sizeof(real)); -#line 6298 "" - e_wsfi(); #line 6299 "" + e_wsfi(); +#line 6300 "" if (normsp) { -#line 6299 "" +#line 6300 "" finalshift -= ptoff; -#line 6299 "" +#line 6300 "" } /* Writing concatenation */ -#line 6300 "" +#line 6301 "" i__2[0] = 8, a__1[0] = notexq; -#line 6300 "" +#line 6301 "" i__2[1] = 3, a__1[1] = "pt}"; -#line 6300 "" +#line 6301 "" s_cat(ch__5, a__1, i__2, &c__2, (ftnlen)11); -#line 6300 "" - addstr_(ch__5, &c__11, soutq, lsout, (ftnlen)11, (ftnlen)80); #line 6301 "" + addstr_(ch__5, &c__11, soutq, lsout, (ftnlen)11, (ftnlen)80); +#line 6302 "" if (ing == ngs + comgrace_1.nng[*ig - 1] - 1) { /* Terminate beam if needed */ -#line 6305 "" +#line 6306 "" if (comgrace_1.upg[*ig - 1]) { /* Writing concatenation */ -#line 6306 "" +#line 6307 "" i__2[0] = 1, a__1[0] = sq; -#line 6306 "" +#line 6307 "" i__2[1] = 4, a__1[1] = "tbu0"; -#line 6306 "" +#line 6307 "" s_cat(ch__4, a__1, i__2, &c__2, (ftnlen)5); -#line 6306 "" +#line 6307 "" addstr_(ch__4, &c__5, soutq, lsout, (ftnlen)5, (ftnlen)80) ; -#line 6307 "" +#line 6308 "" } else { /* Writing concatenation */ -#line 6308 "" +#line 6309 "" i__2[0] = 1, a__1[0] = sq; -#line 6308 "" +#line 6309 "" i__2[1] = 4, a__1[1] = "tbl0"; -#line 6308 "" +#line 6309 "" s_cat(ch__4, a__1, i__2, &c__2, (ftnlen)5); -#line 6308 "" +#line 6309 "" addstr_(ch__4, &c__5, soutq, lsout, (ftnlen)5, (ftnlen)80) ; -#line 6309 "" +#line 6310 "" } /* Terminate after slur if needed */ -#line 6313 "" +#line 6314 "" if ((isgaft || iswaft) && comgrace_1.slurg[*ig - 1]) { /* if (iswaft) ndxslur = igetbits(ipl,4,23) */ -#line 6315 "" +#line 6316 "" if (iswaft) { -#line 6315 "" +#line 6316 "" comslur_1.ndxslur = igetbits_(ipl, &c__5, &c__23); -#line 6315 "" - } #line 6316 "" + } +#line 6317 "" notefq_(noteq, &lnoten, &comgrace_1.nolevg[ing - 1], ncm, (ftnlen)8); /* Writing concatenation */ -#line 6317 "" +#line 6318 "" i__2[0] = 1, a__1[0] = sq; -#line 6317 "" +#line 6318 "" i__2[1] = 5, a__1[1] = "tslur"; -#line 6317 "" +#line 6318 "" s_cat(ch__2, a__1, i__2, &c__2, (ftnlen)6); -#line 6317 "" +#line 6318 "" addstr_(ch__2, &c__6, soutq, lsout, (ftnlen)6, (ftnlen)80) ; /* Print 11-ndxslur */ /* c Print 23-ndxslur */ -#line 6322 "" +#line 6323 "" if (23 - comslur_1.ndxslur < 10) { /* Writing concatenation */ -#line 6323 "" +#line 6324 "" i__5 = 71 - comslur_1.ndxslur; -#line 6323 "" +#line 6324 "" chax_(ch__1, (ftnlen)1, &i__5); -#line 6323 "" +#line 6324 "" i__2[0] = 1, a__1[0] = ch__1; -#line 6323 "" +#line 6324 "" i__2[1] = lnoten, a__1[1] = noteq; -#line 6323 "" +#line 6324 "" s_cat(ch__11, a__1, i__2, &c__2, (ftnlen)9); -#line 6323 "" +#line 6324 "" i__6 = lnoten + 1; -#line 6323 "" +#line 6324 "" addstr_(ch__11, &i__6, soutq, lsout, lnoten + 1, ( ftnlen)80); -#line 6325 "" +#line 6326 "" } else if (23 - comslur_1.ndxslur < 20) { /* Writing concatenation */ -#line 6326 "" +#line 6327 "" i__4[0] = 2, a__3[0] = "{2"; -#line 6326 "" +#line 6327 "" i__5 = 61 - comslur_1.ndxslur; -#line 6326 "" +#line 6327 "" chax_(ch__1, (ftnlen)1, &i__5); -#line 6326 "" +#line 6327 "" i__4[1] = 1, a__3[1] = ch__1; -#line 6326 "" +#line 6327 "" i__4[2] = 1, a__3[2] = "}"; -#line 6326 "" +#line 6327 "" i__4[3] = lnoten, a__3[3] = noteq; -#line 6326 "" +#line 6327 "" s_cat(ch__12, a__3, i__4, &c__4, (ftnlen)12); -#line 6326 "" +#line 6327 "" i__6 = lnoten + 4; -#line 6326 "" +#line 6327 "" addstr_(ch__12, &i__6, soutq, lsout, lnoten + 4, ( ftnlen)80); -#line 6328 "" +#line 6329 "" } else { /* Writing concatenation */ -#line 6329 "" +#line 6330 "" i__4[0] = 2, a__3[0] = "{1"; -#line 6329 "" +#line 6330 "" i__5 = 51 - comslur_1.ndxslur; -#line 6329 "" +#line 6330 "" chax_(ch__1, (ftnlen)1, &i__5); -#line 6329 "" +#line 6330 "" i__4[1] = 1, a__3[1] = ch__1; -#line 6329 "" +#line 6330 "" i__4[2] = 1, a__3[2] = "}"; -#line 6329 "" +#line 6330 "" i__4[3] = lnoten, a__3[3] = noteq; -#line 6329 "" +#line 6330 "" s_cat(ch__12, a__3, i__4, &c__4, (ftnlen)12); -#line 6329 "" +#line 6330 "" i__6 = lnoten + 4; -#line 6329 "" +#line 6330 "" addstr_(ch__12, &i__6, soutq, lsout, lnoten + 4, ( ftnlen)80); -#line 6331 "" +#line 6332 "" } /* Stop slur terminator after exit from this subroutine */ -#line 6335 "" +#line 6336 "" comslur_1.listslur = bit_clear(comslur_1.listslur, comslur_1.ndxslur); -#line 6336 "" - comgrace_1.slurg[*ig - 1] = FALSE_; #line 6337 "" - } + comgrace_1.slurg[*ig - 1] = FALSE_; #line 6338 "" + } +#line 6339 "" } /* Accidental if needed */ -#line 6342 "" - if (comgrace_1.naccg[ing - 1] > 0) { #line 6343 "" + if (comgrace_1.naccg[ing - 1] > 0) { +#line 6344 "" notefq_(noteq, &lnoten, &comgrace_1.nolevg[ing - 1], ncm, ( ftnlen)8); -#line 6344 "" +#line 6345 "" if (lnoten == 1) { -#line 6344 "" +#line 6345 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 6344 "" - } #line 6345 "" + } +#line 6346 "" accsym_(&comgrace_1.naccg[ing - 1], acsymq, &lacc, (ftnlen)3); /* Writing concatenation */ -#line 6346 "" +#line 6347 "" i__4[0] = 1, a__3[0] = sq; -#line 6346 "" +#line 6347 "" i__4[1] = 3, a__3[1] = "big"; -#line 6346 "" +#line 6347 "" i__4[2] = lacc, a__3[2] = acsymq; -#line 6346 "" +#line 6347 "" i__4[3] = lnoten, a__3[3] = noteq; -#line 6346 "" +#line 6347 "" s_cat(ch__9, a__3, i__4, &c__4, (ftnlen)15); -#line 6346 "" +#line 6347 "" i__5 = lacc + 4 + lnoten; -#line 6346 "" +#line 6347 "" addstr_(ch__9, &i__5, soutq, lsout, lacc + 4 + lnoten, ( ftnlen)80); -#line 6348 "" +#line 6349 "" } /* Put in the (beamed) grace note */ -#line 6352 "" +#line 6353 "" notefq_(noteq, &lnoten, &comgrace_1.nolevg[ing - 1], ncm, (ftnlen) 8); /* Writing concatenation */ -#line 6353 "" +#line 6354 "" i__3[0] = 1, a__2[0] = sq; -#line 6353 "" +#line 6354 "" i__3[1] = 4, a__2[1] = "zqb0"; -#line 6353 "" +#line 6354 "" i__3[2] = lnoten, a__2[2] = noteq; -#line 6353 "" +#line 6354 "" s_cat(ch__17, a__2, i__3, &c__3, (ftnlen)13); -#line 6353 "" +#line 6354 "" i__5 = lnoten + 5; -#line 6353 "" +#line 6354 "" addstr_(ch__17, &i__5, soutq, lsout, lnoten + 5, (ftnlen)80); -#line 6355 "" +#line 6356 "" /* L127: */ -#line 6355 "" +#line 6356 "" } /* Terminate the grace */ @@ -15547,147 +15549,147 @@ L121: /* notexq = '}'//sq//'off{' */ /* lnote = 6 */ /* Writing concatenation */ -#line 6363 "" +#line 6364 "" i__2[0] = 1, a__1[0] = sq; -#line 6363 "" +#line 6364 "" i__2[1] = 4, a__1[1] = "off{"; -#line 6363 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6364 "" - lnote = 5; + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6365 "" - ptoff = comask_1.wheadpt * spfacs_1.emgfac; + lnote = 5; #line 6366 "" + ptoff = comask_1.wheadpt * spfacs_1.emgfac; +#line 6367 "" if ((*nacc & 3) > 0 && ! bit_test(*nacc,17)) { -#line 6366 "" +#line 6367 "" ptoff += comask_1.wheadpt * spfacs_1.accfac; -#line 6366 "" +#line 6367 "" } -#line 6368 "" +#line 6369 "" if (isgaft && ! iswaft) { /* Writing concatenation */ -#line 6369 "" +#line 6370 "" i__2[0] = 5, a__1[0] = notexq; -#line 6369 "" +#line 6370 "" i__2[1] = 1, a__1[1] = "-"; -#line 6369 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6370 "" - lnote = 6; + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 6371 "" - ptoff = comgrace_1.aftshft; + lnote = 6; #line 6372 "" - } + ptoff = comgrace_1.aftshft; #line 6373 "" + } +#line 6374 "" if (normsp) { -#line 6373 "" +#line 6374 "" ptoff = finalshift; -#line 6373 "" - } #line 6374 "" - if (ptoff < 9.95f) { + } #line 6375 "" + if (ptoff < 9.95f) { +#line 6376 "" i__1 = lnote; -#line 6375 "" +#line 6376 "" ici__1.icierr = 0; -#line 6375 "" +#line 6376 "" ici__1.icirnum = 1; -#line 6375 "" +#line 6376 "" ici__1.icirlen = lnote + 3 - i__1; -#line 6375 "" +#line 6376 "" ici__1.iciunit = notexq + i__1; -#line 6375 "" +#line 6376 "" ici__1.icifmt = "(f3.1)"; -#line 6375 "" +#line 6376 "" s_wsfi(&ici__1); -#line 6375 "" +#line 6376 "" do_fio(&c__1, (char *)&ptoff, (ftnlen)sizeof(real)); -#line 6375 "" - e_wsfi(); #line 6376 "" - lnote += 3; + e_wsfi(); #line 6377 "" - } else if (ptoff < 99.95f) { + lnote += 3; #line 6378 "" + } else if (ptoff < 99.95f) { +#line 6379 "" i__1 = lnote; -#line 6378 "" +#line 6379 "" ici__1.icierr = 0; -#line 6378 "" +#line 6379 "" ici__1.icirnum = 1; -#line 6378 "" +#line 6379 "" ici__1.icirlen = lnote + 4 - i__1; -#line 6378 "" +#line 6379 "" ici__1.iciunit = notexq + i__1; -#line 6378 "" +#line 6379 "" ici__1.icifmt = "(f4.1)"; -#line 6378 "" +#line 6379 "" s_wsfi(&ici__1); -#line 6378 "" +#line 6379 "" do_fio(&c__1, (char *)&ptoff, (ftnlen)sizeof(real)); -#line 6378 "" - e_wsfi(); #line 6379 "" - lnote += 4; + e_wsfi(); #line 6380 "" - } else { + lnote += 4; #line 6381 "" + } else { +#line 6382 "" i__1 = lnote; -#line 6381 "" +#line 6382 "" ici__1.icierr = 0; -#line 6381 "" +#line 6382 "" ici__1.icirnum = 1; -#line 6381 "" +#line 6382 "" ici__1.icirlen = lnote + 5 - i__1; -#line 6381 "" +#line 6382 "" ici__1.iciunit = notexq + i__1; -#line 6381 "" +#line 6382 "" ici__1.icifmt = "(f5.1)"; -#line 6381 "" +#line 6382 "" s_wsfi(&ici__1); -#line 6381 "" +#line 6382 "" do_fio(&c__1, (char *)&ptoff, (ftnlen)sizeof(real)); -#line 6381 "" - e_wsfi(); #line 6382 "" - lnote += 5; + e_wsfi(); #line 6383 "" + lnote += 5; +#line 6384 "" } /* Writing concatenation */ -#line 6384 "" +#line 6385 "" i__2[0] = lnote, a__1[0] = notexq; -#line 6384 "" +#line 6385 "" i__2[1] = 3, a__1[1] = "pt}"; -#line 6384 "" +#line 6385 "" s_cat(ch__18, a__1, i__2, &c__2, (ftnlen)82); -#line 6384 "" +#line 6385 "" i__1 = lnote + 3; -#line 6384 "" - addstr_(ch__18, &i__1, soutq, lsout, lnote + 3, (ftnlen)80); #line 6385 "" + addstr_(ch__18, &i__1, soutq, lsout, lnote + 3, (ftnlen)80); +#line 6386 "" if (isgaft && ! iswaft) { /* Writing concatenation */ -#line 6385 "" +#line 6386 "" i__2[0] = 1, a__1[0] = sq; -#line 6385 "" +#line 6386 "" i__2[1] = 2, a__1[1] = "sk"; -#line 6385 "" +#line 6386 "" s_cat(ch__19, a__1, i__2, &c__2, (ftnlen)3); -#line 6385 "" +#line 6386 "" addstr_(ch__19, &c__3, soutq, lsout, (ftnlen)3, (ftnlen)80); -#line 6385 "" +#line 6386 "" } /* Writing concatenation */ -#line 6386 "" +#line 6387 "" i__2[0] = 1, a__1[0] = sq; -#line 6386 "" +#line 6387 "" i__2[1] = 9, a__1[1] = "resetsize"; -#line 6386 "" +#line 6387 "" s_cat(ch__20, a__1, i__2, &c__2, (ftnlen)10); -#line 6386 "" - addstr_(ch__20, &c__10, soutq, lsout, (ftnlen)10, (ftnlen)80); #line 6387 "" - } + addstr_(ch__20, &c__10, soutq, lsout, (ftnlen)10, (ftnlen)80); #line 6388 "" + } +#line 6389 "" return 0; } /* dograce_ */ @@ -15745,10 +15747,10 @@ L121: static char slurudq[1]; /* Fortran I/O blocks */ - static cilist io___477 = { 0, 6, 0, 0, 0 }; static cilist io___478 = { 0, 6, 0, 0, 0 }; - static cilist io___479 = { 0, 15, 0, "(/,a)", 0 }; - static cilist io___487 = { 0, 6, 0, 0, 0 }; + static cilist io___479 = { 0, 6, 0, 0, 0 }; + static cilist io___480 = { 0, 15, 0, "(/,a)", 0 }; + static cilist io___488 = { 0, 6, 0, 0, 0 }; @@ -15809,67 +15811,67 @@ L121: /* If highest note has upslur, save slur height in islhgt in case */ /* ornament must be moved. */ -#line 6485 "" +#line 6486 "" /* Parameter adjustments */ -#line 6485 "" +#line 6486 "" --isdat4; -#line 6485 "" +#line 6486 "" --isdat3; -#line 6485 "" +#line 6486 "" --isdat2; -#line 6485 "" +#line 6486 "" --isdat1; -#line 6485 "" +#line 6486 "" -#line 6485 "" +#line 6486 "" /* Function Body */ -#line 6485 "" - *islhgt = 0; #line 6486 "" - if (*beamon) { + *islhgt = 0; #line 6487 "" - stemup = *(unsigned char *)ulq == 'u'; + if (*beamon) { #line 6488 "" - } else if (commvl_1.nvmx[*iv - 1] == 2) { + stemup = *(unsigned char *)ulq == 'u'; #line 6489 "" + } else if (commvl_1.nvmx[*iv - 1] == 2) { +#line 6490 "" if (! bit_test(*islur,30)) { /* Single note, 2 lines of music, stem direction not forced */ -#line 6493 "" - stemup = commvl_1.ivx > *nv; #line 6494 "" - } else { + stemup = commvl_1.ivx > *nv; #line 6495 "" - stemup = bit_test(*islur,17); + } else { #line 6496 "" - } + stemup = bit_test(*islur,17); #line 6497 "" - } else { + } #line 6498 "" + } else { +#line 6499 "" udqq_(ch__1, (ftnlen)1, nolev, ncm, islur, &commvl_1.nvmx[*iv - 1], & commvl_1.ivx, nv); -#line 6498 "" - stemup = *(unsigned char *)&ch__1[0] == 'u'; #line 6499 "" - } + stemup = *(unsigned char *)&ch__1[0] == 'u'; #line 6500 "" - iscrd = bit_test(*ipl,10); + } #line 6501 "" - if (commidi_1.ismidi) { + iscrd = bit_test(*ipl,10); #line 6502 "" - settie = FALSE_; + if (commidi_1.ismidi) { #line 6503 "" - comslm_1.dbltie = FALSE_; + settie = FALSE_; #line 6504 "" - } + comslm_1.dbltie = FALSE_; #line 6505 "" + } +#line 6506 "" i__1 = *nsdat; -#line 6505 "" - for (isdat = 1; isdat <= i__1; ++isdat) { #line 6506 "" - isdata = isdat1[isdat]; + for (isdat = 1; isdat <= i__1; ++isdat) { #line 6507 "" + isdata = isdat1[isdat]; +#line 6508 "" if (*iv == igetbits_(&isdata, &c__5, &c__13) && *ip == igetbits_(& isdata, &c__8, &c__3) && (*kv == igetbits_(&isdata, &c__1, & c__12) + 1 || bit_test(isdata,1))) { @@ -15877,217 +15879,217 @@ L121: /* Since iv and kv match, ivx will be correct */ -#line 6515 "" - idcode = igetbits_(&isdata, &c__7, &c__19); #line 6516 "" - ivoff = igetbits_(&isdat2[isdat], &c__6, &c__6) - 32; + idcode = igetbits_(&isdata, &c__7, &c__19); #line 6517 "" - ihoff = igetbits_(&isdat2[isdat], &c__7, &c__12) - 64; + ivoff = igetbits_(&isdat2[isdat], &c__6, &c__6) - 32; #line 6518 "" - iupdn = 0; + ihoff = igetbits_(&isdat2[isdat], &c__7, &c__12) - 64; #line 6519 "" - *(unsigned char *)slurudq = 'd'; + iupdn = 0; #line 6520 "" - nolevs = igetbits_(&isdat2[isdat], &c__7, &c__19); + *(unsigned char *)slurudq = 'd'; #line 6521 "" - pstie = bit_test(isdat2[isdat],3) || idcode == 1; + nolevs = igetbits_(&isdat2[isdat], &c__7, &c__19); #line 6522 "" + pstie = bit_test(isdat2[isdat],3) || idcode == 1; +#line 6523 "" if (bit_test(isdata,11)) { /* Turnon */ /* Get slur direction */ -#line 6527 "" +#line 6528 "" if (bit_test(isdata,26)) { /* Force slur direction */ -#line 6531 "" +#line 6532 "" if (bit_test(isdata,27)) { -#line 6531 "" +#line 6532 "" *(unsigned char *)slurudq = 'u'; -#line 6531 "" - } #line 6532 "" + } +#line 6533 "" } else if (commvl_1.nvmx[*iv - 1] == 1) { /* Only one voice per line */ -#line 6536 "" +#line 6537 "" if (! (*beamon)) { /* Separate note. */ -#line 6540 "" +#line 6541 "" udfq_(ch__1, (ftnlen)1, nolev, ncm); -#line 6540 "" +#line 6541 "" *(unsigned char *)slurudq = *(unsigned char *)&ch__1[ 0]; -#line 6541 "" +#line 6542 "" } else { /* In a beam */ -#line 6545 "" +#line 6546 "" if (*(unsigned char *)ulq != 'u') { -#line 6545 "" +#line 6546 "" *(unsigned char *)slurudq = 'u'; -#line 6545 "" - } #line 6546 "" - } + } #line 6547 "" - if (iscrd) { + } #line 6548 "" - if (nolevs > *ncm) { + if (iscrd) { #line 6549 "" - *(unsigned char *)slurudq = 'u'; + if (nolevs > *ncm) { #line 6550 "" - } else { + *(unsigned char *)slurudq = 'u'; #line 6551 "" - *(unsigned char *)slurudq = 'd'; + } else { #line 6552 "" - } + *(unsigned char *)slurudq = 'd'; #line 6553 "" - } + } #line 6554 "" + } +#line 6555 "" } else { /* Two voices per line. Get default */ -#line 6558 "" +#line 6559 "" if (commvl_1.ivx > *nv) { -#line 6558 "" +#line 6559 "" *(unsigned char *)slurudq = 'u'; -#line 6558 "" +#line 6559 "" } /* Upper voice of the two, so up slur */ -#line 6562 "" - } #line 6563 "" + } +#line 6564 "" if (bit_test(isdata,2)) { /* ADjust for stem slur. ASSUME this is the ONLY pos'n adjustment. */ -#line 6567 "" - if (stemup) { #line 6568 "" - *(unsigned char *)slurudq = 'u'; + if (stemup) { #line 6569 "" - ivoff += 4; + *(unsigned char *)slurudq = 'u'; #line 6570 "" - } else { + ivoff += 4; #line 6571 "" - *(unsigned char *)slurudq = 'd'; + } else { #line 6572 "" - ivoff += -4; + *(unsigned char *)slurudq = 'd'; #line 6573 "" - } + ivoff += -4; #line 6574 "" + } +#line 6575 "" } /* Set level for slur starting on rest */ -#line 6578 "" - if (nolevs == 0 || nolevs > 60) { #line 6579 "" - if (*(unsigned char *)slurudq == 'u') { + if (nolevs == 0 || nolevs > 60) { #line 6580 "" - nolevs = *ncm + 2; + if (*(unsigned char *)slurudq == 'u') { #line 6581 "" - } else { + nolevs = *ncm + 2; #line 6582 "" - nolevs = *ncm - 2; + } else { #line 6583 "" - } + nolevs = *ncm - 2; #line 6584 "" + } +#line 6585 "" } /* Save up/down-ness for use at termination */ -#line 6588 "" +#line 6589 "" if (*(unsigned char *)slurudq == 'u') { -#line 6588 "" +#line 6589 "" isdata = bit_set(isdata,27); -#line 6588 "" +#line 6589 "" } /* End of section for setting slur direction, still in "Turnon" if-block. */ -#line 6592 "" +#line 6593 "" if (bit_test(*iornq,11) || bit_test(*iornq,12)) { /* Raise or lower slur by one unit provided . or _ is on same side as slur */ -#line 6596 "" - ivoffinc = 0; #line 6597 "" + ivoffinc = 0; +#line 6598 "" if (stemup && *(unsigned char *)slurudq == 'd' || ! stemup && *(unsigned char *)slurudq == 'u') { /* Must move the slur for _ or . */ -#line 6602 "" - if (stemup) { #line 6603 "" - ivoffinc = -1; + if (stemup) { #line 6604 "" - } else { + ivoffinc = -1; #line 6605 "" - ivoffinc = 1; + } else { #line 6606 "" - } + ivoffinc = 1; #line 6607 "" + } +#line 6608 "" if ((stemup && *nolev >= *ncm - 2 || ! stemup && * nolev <= *ncm + 2) && (i__2 = *ncm - *nolev, abs(i__2)) % 2 == 0) { -#line 6607 "" +#line 6608 "" ivoffinc <<= 1; -#line 6607 "" +#line 6608 "" } -#line 6610 "" - ivoff += ivoffinc; #line 6611 "" - } + ivoff += ivoffinc; #line 6612 "" - } + } #line 6613 "" - if (comslur_1.listslur == 16777215) { -#line 6614 "" - s_wsle(&io___477); + } #line 6614 "" - e_wsle(); + if (comslur_1.listslur == 16777215) { #line 6615 "" s_wsle(&io___478); -#line 6615 "" - do_lio(&c__9, &c__1, "You1 defined the twentyfifth slur,"\ - " one too many!", (ftnlen)48); #line 6615 "" e_wsle(); #line 6616 "" - s_wsfe(&io___479); + s_wsle(&io___479); #line 6616 "" + do_lio(&c__9, &c__1, "You1 defined the twentyfifth slur,"\ + " one too many!", (ftnlen)48); +#line 6616 "" + e_wsle(); +#line 6617 "" + s_wsfe(&io___480); +#line 6617 "" do_fio(&c__1, "You defined the twentyfifth slur, one too"\ " many!", (ftnlen)47); -#line 6616 "" +#line 6617 "" e_wsfe(); -#line 6618 "" - stop1_(); #line 6619 "" + stop1_(); +#line 6620 "" } /* Get index of next slur not in use, starting from 12 down */ -#line 6623 "" +#line 6624 "" i__2 = 16777215 - comslur_1.listslur; -#line 6623 "" +#line 6624 "" comslur_1.ndxslur = log2_(&i__2); /* Record slur index */ -#line 6627 "" +#line 6628 "" comslur_1.listslur = bit_set(comslur_1.listslur, comslur_1.ndxslur); @@ -16095,206 +16097,206 @@ L121: /* call setbits(isdata,4,28,ndxslur) */ /* 080531 Allow >16 slurs */ -#line 6633 "" +#line 6634 "" i__2 = comslur_1.ndxslur % 16; -#line 6633 "" - setbits_(&isdata, &c__4, &c__28, &i__2); #line 6634 "" + setbits_(&isdata, &c__4, &c__28, &i__2); +#line 6635 "" i__2 = comslur_1.ndxslur / 16; -#line 6634 "" +#line 6635 "" setbits_(&isdata, &c__1, &c__18, &i__2); /* Shift for stem? */ -#line 6638 "" +#line 6639 "" if (stemup && *(unsigned char *)slurudq == 'u' && *tno < 63.f) { -#line 6639 "" - if (! pstie) { #line 6640 "" - ihoff += 8; + if (! pstie) { #line 6641 "" - } else { + ihoff += 8; #line 6642 "" - ihoff += 2; + } else { #line 6643 "" - } + ihoff += 2; #line 6644 "" - } + } #line 6645 "" + } +#line 6646 "" if (iscrd) { /* Additional horiz shifts for h-shifted noteheads? */ -#line 6649 "" +#line 6650 "" if (bit_test(isdat2[isdat],1)) { /* Slur start on left-shifted chord notehead. ASSUME downstem. */ -#line 6653 "" +#line 6654 "" if (nolevs == comtrill_1.minlev && *(unsigned char *) slurudq == 'd') { -#line 6654 "" - ihoff += -2; #line 6655 "" - } else { + ihoff += -2; #line 6656 "" - ihoff += -10; + } else { #line 6657 "" - } + ihoff += -10; #line 6658 "" + } +#line 6659 "" } else if (bit_test(isdat2[isdat],2)) { /* Right shifted chord notehead. ASSUME upstem. */ -#line 6662 "" +#line 6663 "" if (nolevs == comtrill_1.maxlev && *(unsigned char *) slurudq == 'u') { -#line 6663 "" - ihoff += 2; #line 6664 "" - } else { + ihoff += 2; #line 6665 "" - ihoff += 10; + } else { #line 6666 "" - } + ihoff += 10; #line 6667 "" - } + } #line 6668 "" - } + } #line 6669 "" + } +#line 6670 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 6669 "" - s_copy(notexq, ch__1, (ftnlen)79, (ftnlen)1); #line 6670 "" + s_copy(notexq, ch__1, (ftnlen)79, (ftnlen)1); +#line 6671 "" lnote = 1; /* Check for local adjustment default changes */ -#line 6674 "" +#line 6675 "" if (bit_test(isdat2[isdat],26)) { /* Writing concatenation */ -#line 6675 "" +#line 6676 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 6675 "" +#line 6676 "" i__3[0] = 1, a__1[0] = ch__1; -#line 6675 "" +#line 6676 "" i__3[1] = 10, a__1[1] = "sluradjust"; -#line 6675 "" +#line 6676 "" chax_(ch__2, (ftnlen)1, &c__92); -#line 6675 "" +#line 6676 "" i__3[2] = 1, a__1[2] = ch__2; -#line 6675 "" - s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6676 "" - lnote = 12; + s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6677 "" + lnote = 12; +#line 6678 "" } else if (bit_test(isdat2[isdat],27)) { /* Writing concatenation */ -#line 6678 "" +#line 6679 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 6678 "" +#line 6679 "" i__3[0] = 1, a__1[0] = ch__1; -#line 6678 "" +#line 6679 "" i__3[1] = 12, a__1[1] = "nosluradjust"; -#line 6678 "" +#line 6679 "" chax_(ch__2, (ftnlen)1, &c__92); -#line 6678 "" +#line 6679 "" i__3[2] = 1, a__1[2] = ch__2; -#line 6678 "" - s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6679 "" - lnote = 14; + s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6680 "" + lnote = 14; +#line 6681 "" } else if (bit_test(isdat2[isdat],28)) { /* Writing concatenation */ -#line 6681 "" +#line 6682 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 6681 "" +#line 6682 "" i__3[0] = 1, a__1[0] = ch__1; -#line 6681 "" +#line 6682 "" i__3[1] = 9, a__1[1] = "tieadjust"; -#line 6681 "" +#line 6682 "" chax_(ch__2, (ftnlen)1, &c__92); -#line 6681 "" +#line 6682 "" i__3[2] = 1, a__1[2] = ch__2; -#line 6681 "" - s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6682 "" - lnote = 11; + s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6683 "" + lnote = 11; +#line 6684 "" } else if (bit_test(isdat2[isdat],29)) { /* Writing concatenation */ -#line 6684 "" +#line 6685 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 6684 "" +#line 6685 "" i__3[0] = 1, a__1[0] = ch__1; -#line 6684 "" +#line 6685 "" i__3[1] = 11, a__1[1] = "notieadjust"; -#line 6684 "" +#line 6685 "" chax_(ch__2, (ftnlen)1, &c__92); -#line 6684 "" +#line 6685 "" i__3[2] = 1, a__1[2] = ch__2; -#line 6684 "" - s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6685 "" - lnote = 13; + s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6686 "" - } + lnote = 13; #line 6687 "" + } +#line 6688 "" if (ihoff == 0) { /* Write stuff for non-shifted start */ /* Writing concatenation */ -#line 6691 "" +#line 6692 "" i__3[0] = lnote, a__1[0] = notexq; -#line 6691 "" +#line 6692 "" i__3[1] = 5, a__1[1] = "islur"; -#line 6691 "" +#line 6692 "" i__3[2] = 1, a__1[2] = slurudq; -#line 6691 "" - s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6692 "" - lnote += 6; + s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6693 "" + lnote += 6; +#line 6694 "" } else { /* Writing concatenation */ -#line 6694 "" +#line 6695 "" i__3[0] = lnote, a__1[0] = notexq; -#line 6694 "" +#line 6695 "" i__3[1] = 2, a__1[1] = "is"; -#line 6694 "" +#line 6695 "" i__3[2] = 1, a__1[2] = slurudq; -#line 6694 "" - s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6695 "" - lnote += 3; + s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6696 "" + lnote += 3; +#line 6697 "" } /* Prepend postscript tie switch */ -#line 6700 "" +#line 6701 "" if (pstie) { /* Writing concatenation */ -#line 6701 "" +#line 6702 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 6701 "" +#line 6702 "" i__4[0] = 1, a__2[0] = ch__1; -#line 6701 "" +#line 6702 "" i__4[1] = 8, a__2[1] = "tieforis"; -#line 6701 "" +#line 6702 "" i__4[2] = 1, a__2[2] = slurudq; -#line 6701 "" +#line 6702 "" i__4[3] = lnote, a__2[3] = notexq; -#line 6701 "" - s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 6702 "" - lnote += 10; + s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 6703 "" - } + lnote += 10; #line 6704 "" + } +#line 6705 "" if (bit_test(isdat2[isdat],4)) { /* Dotted slur */ @@ -16302,288 +16304,288 @@ L121: /* noteq = notexq */ /* notexq = chax(92)//'dotted'//noteq */ /* Writing concatenation */ -#line 6710 "" +#line 6711 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 6710 "" +#line 6711 "" i__3[0] = 1, a__1[0] = ch__1; -#line 6710 "" +#line 6711 "" i__3[1] = 6, a__1[1] = "dotted"; -#line 6710 "" +#line 6711 "" i__3[2] = lnote, a__1[2] = notexq; -#line 6710 "" - s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6711 "" - lnote += 7; + s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6712 "" + lnote += 7; +#line 6713 "" } /* Add slur index to string */ /* Print 23-ndxslur */ -#line 6717 "" +#line 6718 "" if (23 - comslur_1.ndxslur < 10) { /* 5/25/08 Allow 24 slurs */ /* Writing concatenation */ -#line 6721 "" +#line 6722 "" i__5[0] = lnote, a__3[0] = notexq; -#line 6721 "" +#line 6722 "" i__2 = 71 - comslur_1.ndxslur; -#line 6721 "" +#line 6722 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 6721 "" +#line 6722 "" i__5[1] = 1, a__3[1] = ch__1; -#line 6721 "" - s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6722 "" - ++lnote; + s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6723 "" + ++lnote; +#line 6724 "" } else if (23 - comslur_1.ndxslur < 20) { /* Writing concatenation */ -#line 6724 "" +#line 6725 "" i__4[0] = lnote, a__2[0] = notexq; -#line 6724 "" +#line 6725 "" i__4[1] = 2, a__2[1] = "{1"; -#line 6724 "" +#line 6725 "" i__2 = 61 - comslur_1.ndxslur; -#line 6724 "" +#line 6725 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 6724 "" +#line 6725 "" i__4[2] = 1, a__2[2] = ch__1; -#line 6724 "" +#line 6725 "" i__4[3] = 1, a__2[3] = "}"; -#line 6724 "" - s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 6725 "" - lnote += 4; + s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 6726 "" + lnote += 4; +#line 6727 "" } else { /* Writing concatenation */ -#line 6727 "" +#line 6728 "" i__4[0] = lnote, a__2[0] = notexq; -#line 6727 "" +#line 6728 "" i__4[1] = 2, a__2[1] = "{2"; -#line 6727 "" +#line 6728 "" i__2 = 51 - comslur_1.ndxslur; -#line 6727 "" +#line 6728 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 6727 "" +#line 6728 "" i__4[2] = 1, a__2[2] = ch__1; -#line 6727 "" +#line 6728 "" i__4[3] = 1, a__2[3] = "}"; -#line 6727 "" - s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 6728 "" - lnote += 4; + s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 6729 "" + lnote += 4; +#line 6730 "" } /* Add note name to string */ -#line 6733 "" - *islhgt = nolevs + iupdn + ivoff; #line 6734 "" + *islhgt = nolevs + iupdn + ivoff; +#line 6735 "" notefq_(noteq, &lnoten, islhgt, ncm, (ftnlen)8); /* Writing concatenation */ -#line 6735 "" +#line 6736 "" i__5[0] = lnote, a__3[0] = notexq; -#line 6735 "" +#line 6736 "" i__5[1] = lnoten, a__3[1] = noteq; -#line 6735 "" - s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6736 "" + s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); +#line 6737 "" lnote += lnoten; /* Store height and staff mid level for use with LineBreakTies */ -#line 6740 "" - setbits_(&isdat3[isdat], &c__8, &c__14, islhgt); #line 6741 "" + setbits_(&isdat3[isdat], &c__8, &c__14, islhgt); +#line 6742 "" setbits_(&isdat3[isdat], &c__8, &c__22, ncm); /* Save height (for ornament and barnobox interference) if topmost slur is up */ -#line 6745 "" +#line 6746 "" if (*(unsigned char *)slurudq == 'u' && (! bit_test(isdat2[ isdat],0) || nolevs == comtrill_1.maxlev)) { -#line 6747 "" +#line 6748 "" *islhgt = nolevs + iupdn + ivoff; /* Save height & idcode if top voice and slur start */ -#line 6751 "" +#line 6752 "" if (commvl_1.ivx == commvl_1.ivmx[*nv + commvl_1.nvmx[*nv - 1] * 24 - 25] && *islhgt > comsln_1.is1n1) { -#line 6752 "" - comsln_1.is1n1 = *islhgt; #line 6753 "" - comsln_1.is2n1 = idcode; + comsln_1.is1n1 = *islhgt; #line 6754 "" - } + comsln_1.is2n1 = idcode; #line 6755 "" - } + } #line 6756 "" - if ((real) ihoff != 0.f) { + } #line 6757 "" + if ((real) ihoff != 0.f) { +#line 6758 "" shift = ihoff * .1f; /* Writing concatenation */ -#line 6758 "" +#line 6759 "" i__5[0] = lnote, a__3[0] = notexq; -#line 6758 "" +#line 6759 "" i__5[1] = 1, a__3[1] = "{"; -#line 6758 "" - s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6759 "" - ++lnote; + s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6760 "" - lform = lfmt1_(&shift); + ++lnote; #line 6761 "" + lform = lfmt1_(&shift); +#line 6762 "" i__2 = lnote; -#line 6761 "" +#line 6762 "" ici__1.icierr = 0; -#line 6761 "" +#line 6762 "" ici__1.icirnum = 1; -#line 6761 "" +#line 6762 "" ici__1.icirlen = lnote + lform - i__2; -#line 6761 "" +#line 6762 "" ici__1.iciunit = notexq + i__2; /* Writing concatenation */ -#line 6761 "" +#line 6762 "" i__3[0] = 2, a__1[0] = "(f"; -#line 6761 "" +#line 6762 "" i__6 = lform + 48; -#line 6761 "" +#line 6762 "" chax_(ch__1, (ftnlen)1, &i__6); -#line 6761 "" +#line 6762 "" i__3[1] = 1, a__1[1] = ch__1; -#line 6761 "" +#line 6762 "" i__3[2] = 3, a__1[2] = ".1)"; -#line 6761 "" +#line 6762 "" ici__1.icifmt = (s_cat(ch__3, a__1, i__3, &c__3, (ftnlen) 6), ch__3); -#line 6761 "" +#line 6762 "" s_wsfi(&ici__1); -#line 6761 "" +#line 6762 "" do_fio(&c__1, (char *)&shift, (ftnlen)sizeof(real)); -#line 6761 "" +#line 6762 "" e_wsfi(); -#line 6763 "" +#line 6764 "" lnote += lform; /* Writing concatenation */ -#line 6764 "" +#line 6765 "" i__5[0] = lnote, a__3[0] = notexq; -#line 6764 "" +#line 6765 "" i__5[1] = 1, a__3[1] = "}"; -#line 6764 "" - s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6765 "" - ++lnote; + s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6766 "" - } + ++lnote; #line 6767 "" + } +#line 6768 "" addstr_(notexq, &lnote, soutq, lsout, (ftnlen)79, (ftnlen)80); /* Zero out ip1 to avoid problems if slur goes to next input blk. */ -#line 6771 "" +#line 6772 "" setbits_(&isdata, &c__8, &c__3, &c__0); /* Set slur-on data for midi. Only treat null-index slurs and ps ties for now. */ -#line 6775 "" +#line 6776 "" if (commidi_1.ismidi && (idcode == 32 || idcode == 1)) { /* levson(midchan(iv,kv)) = nolevs */ /* 130316 */ -#line 6778 "" +#line 6779 "" comslm_1.levson[commidi_1.midchan[*iv + *kv * 24 - 25]] = nolevs + commvel_1.miditran[cominsttrans_1.instno[ *iv - 1] - 1]; -#line 6779 "" +#line 6780 "" if (settie) { -#line 6779 "" +#line 6780 "" comslm_1.dbltie = TRUE_; -#line 6779 "" +#line 6780 "" } /* Only way settie=T is if we just set a tie ending. So there's also a slur */ /* start here, so set a flag telling addmidi not to zero out levson */ -#line 6784 "" - } #line 6785 "" + } +#line 6786 "" } else { /* Slur is ending. Back thru list to find starting slur */ -#line 6789 "" - for (j = isdat - 1; j >= 1; --j) { #line 6790 "" + for (j = isdat - 1; j >= 1; --j) { +#line 6791 "" if (*iv == igetbits_(&isdat1[j], &c__5, &c__13) && (*kv == igetbits_(&isdat1[j], &c__1, &c__12) + 1 || bit_test(isdat1[j],1))) { /* * kv.eq.igetbits(isdat1(j),1,12)+1) then */ -#line 6794 "" - if (idcode == igetbits_(&isdat1[j], &c__7, &c__19)) { #line 6795 "" + if (idcode == igetbits_(&isdat1[j], &c__7, &c__19)) { +#line 6796 "" comslur_1.ndxslur = igetbits_(&isdat1[j], &c__4, & c__28) + (igetbits_(&isdat1[j], &c__1, & c__18) << 4); /* 080531 Allow >16 slurs */ -#line 6800 "" +#line 6801 "" if (bit_test(isdat1[j],27)) { -#line 6800 "" +#line 6801 "" *(unsigned char *)slurudq = 'u'; -#line 6800 "" - } #line 6801 "" - goto L4; + } #line 6802 "" - } + goto L4; #line 6803 "" - } -#line 6804 "" -/* L3: */ + } #line 6804 "" - } + } #line 6805 "" - s_wsle(&io___487); +/* L3: */ #line 6805 "" + } +#line 6806 "" + s_wsle(&io___488); +#line 6806 "" do_lio(&c__9, &c__1, "Bad place in doslur", (ftnlen)19); -#line 6805 "" - e_wsle(); #line 6806 "" - stop1_(); + e_wsle(); #line 6807 "" + stop1_(); +#line 6808 "" L4: /* Bugfix 070901 for slur ending on rest in 2-voice staff */ -#line 6811 "" +#line 6812 "" if (nolevs <= 2 || nolevs > 60) { /* Ending is on a rest, reset nolevs to default starting height */ -#line 6815 "" - nolevs = igetbits_(&isdat2[j], &c__7, &c__19); #line 6816 "" - } + nolevs = igetbits_(&isdat2[j], &c__7, &c__19); #line 6817 "" + } +#line 6818 "" if (bit_test(isdat3[isdat],0) || bit_test(isdat3[j],0)) { /* Deal with \curve or \midslur. isdat is ending, j is start. */ -#line 6821 "" - if (bit_test(isdat3[isdat],0)) { #line 6822 "" - imid = igetbits_(&isdat3[isdat], &c__6, &c__2) - 32; + if (bit_test(isdat3[isdat],0)) { #line 6823 "" - } else { + imid = igetbits_(&isdat3[isdat], &c__6, &c__2) - 32; #line 6824 "" - imid = igetbits_(&isdat3[j], &c__6, &c__2) - 32; + } else { #line 6825 "" + imid = igetbits_(&isdat3[j], &c__6, &c__2) - 32; +#line 6826 "" } /* Postscript slurs, and \midslur adjustment is needed. Invoke macro */ @@ -16596,458 +16598,458 @@ L4: /* 6+ HH */ /* Writing concatenation */ -#line 6836 "" +#line 6837 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 6836 "" +#line 6837 "" i__3[0] = 1, a__1[0] = ch__1; -#line 6836 "" +#line 6837 "" i__3[1] = 7, a__1[1] = "psforts"; /* Computing MIN */ -#line 6836 "" +#line 6837 "" i__6 = abs(imid); -#line 6836 "" +#line 6837 "" i__2 = min(i__6,6) + 48; -#line 6836 "" +#line 6837 "" chax_(ch__2, (ftnlen)1, &i__2); -#line 6836 "" +#line 6837 "" i__3[2] = 1, a__1[2] = ch__2; -#line 6836 "" +#line 6837 "" s_cat(ch__4, a__1, i__3, &c__3, (ftnlen)9); -#line 6836 "" +#line 6837 "" addstr_(ch__4, &c__9, soutq, lsout, (ftnlen)9, (ftnlen)80) ; -#line 6838 "" - } #line 6839 "" + } +#line 6840 "" if (bit_test(isdata,2)) { /* ADjust for stem slur. */ -#line 6843 "" - if (stemup) { #line 6844 "" - *(unsigned char *)slurudq = 'u'; + if (stemup) { #line 6845 "" - ivoff += 4; + *(unsigned char *)slurudq = 'u'; #line 6846 "" - } else { + ivoff += 4; #line 6847 "" - *(unsigned char *)slurudq = 'd'; + } else { #line 6848 "" - ivoff += -4; + *(unsigned char *)slurudq = 'd'; #line 6849 "" - } + ivoff += -4; #line 6850 "" + } +#line 6851 "" } /* Shift slur ending for stem on any note? */ -#line 6854 "" +#line 6855 "" if (! stemup && *(unsigned char *)slurudq == 'd' && *tno < 63.f) { -#line 6855 "" - if (! pstie) { #line 6856 "" - ihoff += -8; + if (! pstie) { #line 6857 "" - } else { + ihoff += -8; #line 6858 "" - ihoff += -3; + } else { #line 6859 "" - } + ihoff += -3; #line 6860 "" - } + } #line 6861 "" + } +#line 6862 "" if (iscrd) { /* Shift termination for shifted notehead? */ -#line 6865 "" +#line 6866 "" if (bit_test(isdat2[isdat],1)) { /* Left-shifted chord notehead. ASSUME downstem. */ -#line 6869 "" +#line 6870 "" if (nolevs == comtrill_1.minlev && *(unsigned char *) slurudq == 'd') { -#line 6870 "" - ihoff += -2; #line 6871 "" - } else { + ihoff += -2; #line 6872 "" - ihoff += -10; + } else { #line 6873 "" - } + ihoff += -10; #line 6874 "" + } +#line 6875 "" } else if (bit_test(isdat2[isdat],2)) { /* Right shifted chord notehead. ASSUME upstem. */ -#line 6878 "" +#line 6879 "" if (nolevs == comtrill_1.maxlev && *(unsigned char *) slurudq == 'u') { -#line 6879 "" - ihoff += 2; #line 6880 "" - } else { + ihoff += 2; #line 6881 "" - ihoff += 10; + } else { #line 6882 "" - } + ihoff += 10; #line 6883 "" - } + } #line 6884 "" - } + } #line 6885 "" + } +#line 6886 "" if (ihoff == 0) { /* Writing concatenation */ -#line 6886 "" +#line 6887 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 6886 "" +#line 6887 "" i__5[0] = 1, a__3[0] = ch__1; -#line 6886 "" +#line 6887 "" i__5[1] = 5, a__3[1] = "tslur"; -#line 6886 "" - s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6887 "" - lnote = 6; + s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6888 "" + lnote = 6; +#line 6889 "" } else { /* Shift needed */ /* Writing concatenation */ -#line 6892 "" +#line 6893 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 6892 "" +#line 6893 "" i__5[0] = 1, a__3[0] = ch__1; -#line 6892 "" +#line 6893 "" i__5[1] = 2, a__3[1] = "ts"; -#line 6892 "" - s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6893 "" - lnote = 3; + s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6894 "" + lnote = 3; +#line 6895 "" } /* Switch to postscript tie */ -#line 6898 "" +#line 6899 "" if (pstie) { /* Writing concatenation */ -#line 6899 "" +#line 6900 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 6899 "" +#line 6900 "" i__3[0] = 1, a__1[0] = ch__1; -#line 6899 "" +#line 6900 "" i__3[1] = 8, a__1[1] = "tieforts"; -#line 6899 "" +#line 6900 "" i__3[2] = lnote, a__1[2] = notexq; -#line 6899 "" - s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6900 "" - lnote += 9; + s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 6901 "" + lnote += 9; +#line 6902 "" } /* Print 13-ndxslur */ /* 5/25/08 Allow 14 slurs */ -#line 6906 "" +#line 6907 "" if (23 - comslur_1.ndxslur < 10) { /* Writing concatenation */ -#line 6907 "" +#line 6908 "" i__5[0] = lnote, a__3[0] = notexq; -#line 6907 "" +#line 6908 "" i__2 = 71 - comslur_1.ndxslur; -#line 6907 "" +#line 6908 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 6907 "" +#line 6908 "" i__5[1] = 1, a__3[1] = ch__1; -#line 6907 "" - s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6908 "" - ++lnote; + s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6909 "" + ++lnote; +#line 6910 "" } else if (23 - comslur_1.ndxslur < 20) { /* Writing concatenation */ -#line 6910 "" +#line 6911 "" i__4[0] = lnote, a__2[0] = notexq; -#line 6910 "" +#line 6911 "" i__4[1] = 2, a__2[1] = "{1"; -#line 6910 "" +#line 6911 "" i__2 = 61 - comslur_1.ndxslur; -#line 6910 "" +#line 6911 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 6910 "" +#line 6911 "" i__4[2] = 1, a__2[2] = ch__1; -#line 6910 "" +#line 6911 "" i__4[3] = 1, a__2[3] = "}"; -#line 6910 "" - s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 6911 "" - lnote += 4; + s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 6912 "" + lnote += 4; +#line 6913 "" } else { /* Writing concatenation */ -#line 6913 "" +#line 6914 "" i__4[0] = lnote, a__2[0] = notexq; -#line 6913 "" +#line 6914 "" i__4[1] = 2, a__2[1] = "{2"; -#line 6913 "" +#line 6914 "" i__2 = 51 - comslur_1.ndxslur; -#line 6913 "" +#line 6914 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 6913 "" +#line 6914 "" i__4[2] = 1, a__2[2] = ch__1; -#line 6913 "" +#line 6914 "" i__4[3] = 1, a__2[3] = "}"; -#line 6913 "" - s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 6914 "" - lnote += 4; + s_cat(notexq, a__2, i__4, &c__4, (ftnlen)79); #line 6915 "" - } + lnote += 4; #line 6916 "" + } +#line 6917 "" if (bit_test(*iornq,11) || bit_test(*iornq,12)) { /* Raise or lower slur by one unit provided . or _ is on same side as slur */ -#line 6920 "" - ivoffinc = 0; #line 6921 "" + ivoffinc = 0; +#line 6922 "" if (stemup && *(unsigned char *)slurudq == 'd' || ! stemup && *(unsigned char *)slurudq == 'u') { -#line 6923 "" - if (stemup) { #line 6924 "" - ivoffinc = -1; + if (stemup) { #line 6925 "" - } else { + ivoffinc = -1; #line 6926 "" - ivoffinc = 1; + } else { #line 6927 "" - } + ivoffinc = 1; #line 6928 "" + } +#line 6929 "" if ((stemup && *nolev >= *ncm - 2 || ! stemup && * nolev <= *ncm + 2) && (i__2 = *ncm - *nolev, abs(i__2)) % 2 == 0) { -#line 6928 "" +#line 6929 "" ivoffinc <<= 1; -#line 6928 "" +#line 6929 "" } -#line 6931 "" - } #line 6932 "" - ivoff += ivoffinc; + } #line 6933 "" - } + ivoff += ivoffinc; #line 6934 "" + } +#line 6935 "" i__2 = nolevs + iupdn + ivoff; -#line 6934 "" - notefq_(noteq, &lnoten, &i__2, ncm, (ftnlen)8); #line 6935 "" + notefq_(noteq, &lnoten, &i__2, ncm, (ftnlen)8); +#line 6936 "" if (*(unsigned char *)slurudq == 'u' && (! bit_test(isdat2[ isdat],0) || nolevs == comtrill_1.maxlev)) { -#line 6937 "" +#line 6938 "" *islhgt = nolevs + iupdn + ivoff; /* If topvoice, upslur, and idcode checks, no more need to keep hgt for barno. */ -#line 6941 "" +#line 6942 "" if (commvl_1.ivx == commvl_1.ivmx[*nv + commvl_1.nvmx[*nv - 1] * 24 - 25] && comsln_1.is1n1 > 0) { -#line 6942 "" +#line 6943 "" if (idcode == comsln_1.is2n1) { -#line 6942 "" +#line 6943 "" comsln_1.is1n1 = 0; -#line 6942 "" - } #line 6943 "" - } + } #line 6944 "" + } +#line 6945 "" } /* Writing concatenation */ -#line 6945 "" +#line 6946 "" i__5[0] = lnote, a__3[0] = notexq; -#line 6945 "" +#line 6946 "" i__5[1] = lnoten, a__3[1] = noteq; -#line 6945 "" - s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6946 "" - lnote += lnoten; + s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6947 "" - if (ihoff != 0) { + lnote += lnoten; #line 6948 "" + if (ihoff != 0) { +#line 6949 "" shift = ihoff * .1f; /* Writing concatenation */ -#line 6949 "" +#line 6950 "" i__5[0] = lnote, a__3[0] = notexq; -#line 6949 "" +#line 6950 "" i__5[1] = 1, a__3[1] = "{"; -#line 6949 "" - s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6950 "" - ++lnote; + s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6951 "" - lform = lfmt1_(&shift); + ++lnote; #line 6952 "" + lform = lfmt1_(&shift); +#line 6953 "" i__2 = lnote; -#line 6952 "" +#line 6953 "" ici__1.icierr = 0; -#line 6952 "" +#line 6953 "" ici__1.icirnum = 1; -#line 6952 "" +#line 6953 "" ici__1.icirlen = lnote + lform - i__2; -#line 6952 "" +#line 6953 "" ici__1.iciunit = notexq + i__2; /* Writing concatenation */ -#line 6952 "" +#line 6953 "" i__3[0] = 2, a__1[0] = "(f"; -#line 6952 "" +#line 6953 "" i__6 = lform + 48; -#line 6952 "" +#line 6953 "" chax_(ch__1, (ftnlen)1, &i__6); -#line 6952 "" +#line 6953 "" i__3[1] = 1, a__1[1] = ch__1; -#line 6952 "" +#line 6953 "" i__3[2] = 3, a__1[2] = ".1)"; -#line 6952 "" +#line 6953 "" ici__1.icifmt = (s_cat(ch__3, a__1, i__3, &c__3, (ftnlen) 6), ch__3); -#line 6952 "" +#line 6953 "" s_wsfi(&ici__1); -#line 6952 "" +#line 6953 "" do_fio(&c__1, (char *)&shift, (ftnlen)sizeof(real)); -#line 6952 "" +#line 6953 "" e_wsfi(); -#line 6954 "" +#line 6955 "" lnote += lform; /* Writing concatenation */ -#line 6955 "" +#line 6956 "" i__5[0] = lnote, a__3[0] = notexq; -#line 6955 "" +#line 6956 "" i__5[1] = 1, a__3[1] = "}"; -#line 6955 "" - s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6956 "" - ++lnote; + s_cat(notexq, a__3, i__5, &c__2, (ftnlen)79); #line 6957 "" - } + ++lnote; #line 6958 "" + } +#line 6959 "" addstr_(notexq, &lnote, soutq, lsout, (ftnlen)79, (ftnlen)80); /* Clear the bit from list of slurs in use */ -#line 6962 "" +#line 6963 "" comslur_1.listslur = bit_clear(comslur_1.listslur, comslur_1.ndxslur); /* Zero out the entire strings for start and stop */ -#line 6966 "" - isdata = 0; #line 6967 "" - isdat2[isdat] = 0; + isdata = 0; #line 6968 "" - isdat3[isdat] = 0; + isdat2[isdat] = 0; #line 6969 "" - isdat4[isdat] = 0; + isdat3[isdat] = 0; #line 6970 "" - isdat1[j] = 0; + isdat4[isdat] = 0; #line 6971 "" - isdat2[j] = 0; + isdat1[j] = 0; #line 6972 "" - isdat3[j] = 0; + isdat2[j] = 0; #line 6973 "" + isdat3[j] = 0; +#line 6974 "" isdat4[j] = 0; /* Set midi info for slur ending */ -#line 6977 "" - if (commidi_1.ismidi && (idcode == 32 || idcode == 1)) { #line 6978 "" - icm = commidi_1.midchan[*iv + *kv * 24 - 25]; + if (commidi_1.ismidi && (idcode == 32 || idcode == 1)) { #line 6979 "" - if (comslm_1.slmon[icm]) { + icm = commidi_1.midchan[*iv + *kv * 24 - 25]; #line 6980 "" + if (comslm_1.slmon[icm]) { +#line 6981 "" if (nolevs + commvel_1.miditran[cominsttrans_1.instno[ *iv - 1] - 1] == comslm_1.levson[icm] && (7 & *nacc) == 0) { /* There is a tie here. NB!!! assumed no accidental on 2nd member of tie. */ -#line 6985 "" +#line 6986 "" comslm_1.levsoff[icm] = nolevs + commvel_1.miditran[cominsttrans_1.instno[* iv - 1] - 1]; -#line 6986 "" - settie = TRUE_; #line 6987 "" - } else { + settie = TRUE_; #line 6988 "" - comslm_1.levsoff[icm] = 0; + } else { #line 6989 "" - comslm_1.levson[icm] = 0; + comslm_1.levsoff[icm] = 0; #line 6990 "" - comslm_1.slmon[icm] = FALSE_; + comslm_1.levson[icm] = 0; #line 6991 "" - } + comslm_1.slmon[icm] = FALSE_; #line 6992 "" - } + } #line 6993 "" - } + } #line 6994 "" - } + } #line 6995 "" - isdat1[isdat] = isdata; + } #line 6996 "" - } + isdat1[isdat] = isdata; #line 6997 "" + } +#line 6998 "" /* L1: */ -#line 6997 "" +#line 6998 "" } /* Clear and collapse the slur data list */ -#line 7001 "" - numdrop = 0; #line 7002 "" + numdrop = 0; +#line 7003 "" i__1 = *nsdat; -#line 7002 "" - for (isdat = 1; isdat <= i__1; ++isdat) { #line 7003 "" - if (isdat1[isdat] == 0) { + for (isdat = 1; isdat <= i__1; ++isdat) { #line 7004 "" - ++numdrop; + if (isdat1[isdat] == 0) { #line 7005 "" - } else if (numdrop > 0) { + ++numdrop; #line 7006 "" - isdat1[isdat - numdrop] = isdat1[isdat]; + } else if (numdrop > 0) { #line 7007 "" - isdat2[isdat - numdrop] = isdat2[isdat]; + isdat1[isdat - numdrop] = isdat1[isdat]; #line 7008 "" - isdat3[isdat - numdrop] = isdat3[isdat]; + isdat2[isdat - numdrop] = isdat2[isdat]; #line 7009 "" - isdat4[isdat - numdrop] = isdat4[isdat]; + isdat3[isdat - numdrop] = isdat3[isdat]; #line 7010 "" - isdat1[isdat] = 0; + isdat4[isdat - numdrop] = isdat4[isdat]; #line 7011 "" - isdat2[isdat] = 0; + isdat1[isdat] = 0; #line 7012 "" - isdat3[isdat] = 0; + isdat2[isdat] = 0; #line 7013 "" - isdat4[isdat] = 0; + isdat3[isdat] = 0; #line 7014 "" - } + isdat4[isdat] = 0; #line 7015 "" + } +#line 7016 "" /* L2: */ -#line 7015 "" - } #line 7016 "" + } +#line 7017 "" *nsdat -= numdrop; /* call report(nsdat,isdat1,isdat2) */ -#line 7018 "" +#line 7019 "" return 0; } /* dopsslur_ */ @@ -17109,11 +17111,11 @@ L4: static char slurudq[1]; /* Fortran I/O blocks */ - static cilist io___508 = { 0, 6, 0, 0, 0 }; - static cilist io___510 = { 0, 6, 0, 0, 0 }; + static cilist io___509 = { 0, 6, 0, 0, 0 }; static cilist io___511 = { 0, 6, 0, 0, 0 }; - static cilist io___512 = { 0, 15, 0, "(/,a)", 0 }; - static cilist io___520 = { 0, 6, 0, 0, 0 }; + static cilist io___512 = { 0, 6, 0, 0, 0 }; + static cilist io___513 = { 0, 15, 0, "(/,a)", 0 }; + static cilist io___521 = { 0, 6, 0, 0, 0 }; @@ -17157,129 +17159,129 @@ L4: /* If highest note has upslur, save slur height in islhgt in case */ /* ornament must be moved. */ -#line 7096 "" +#line 7097 "" /* Parameter adjustments */ -#line 7096 "" +#line 7097 "" --isdat3; -#line 7096 "" +#line 7097 "" --isdat2; -#line 7096 "" +#line 7097 "" --isdat1; -#line 7096 "" +#line 7097 "" -#line 7096 "" +#line 7097 "" /* Function Body */ -#line 7096 "" - *islhgt = 0; #line 7097 "" - if (*beamon) { + *islhgt = 0; #line 7098 "" - stemup = *(unsigned char *)ulq == 'u'; + if (*beamon) { #line 7099 "" - } else if (commvl_1.nvmx[*iv - 1] == 2) { + stemup = *(unsigned char *)ulq == 'u'; #line 7100 "" + } else if (commvl_1.nvmx[*iv - 1] == 2) { +#line 7101 "" if (! bit_test(*islur,30)) { /* Single note, 2 lines of music, stem direction not forced */ -#line 7104 "" - stemup = commvl_1.ivx > *nv; #line 7105 "" - } else { + stemup = commvl_1.ivx > *nv; #line 7106 "" - stemup = bit_test(*islur,17); + } else { #line 7107 "" - } + stemup = bit_test(*islur,17); #line 7108 "" - } else { + } #line 7109 "" + } else { +#line 7110 "" udqq_(ch__1, (ftnlen)1, nolev, ncm, islur, &commvl_1.nvmx[*iv - 1], & commvl_1.ivx, nv); -#line 7109 "" - stemup = *(unsigned char *)&ch__1[0] == 'u'; #line 7110 "" - } + stemup = *(unsigned char *)&ch__1[0] == 'u'; #line 7111 "" - iscrd = bit_test(*ipl,10); + } #line 7112 "" + iscrd = bit_test(*ipl,10); +#line 7113 "" if (bit_test(*islur,1)) { /* 't'-slur (idcode=1) somewhere on this note. Find it, check height against */ /* 's'-slur (idcode=32) */ -#line 7117 "" - sfound = FALSE_; #line 7118 "" - tfound = FALSE_; + sfound = FALSE_; #line 7119 "" - tmove = FALSE_; + tfound = FALSE_; #line 7120 "" + tmove = FALSE_; +#line 7121 "" i__1 = *nsdat; -#line 7120 "" - for (isdat = 1; isdat <= i__1; ++isdat) { #line 7121 "" + for (isdat = 1; isdat <= i__1; ++isdat) { +#line 7122 "" if (*iv == igetbits_(&isdat1[isdat], &c__5, &c__13) && *ip == igetbits_(&isdat1[isdat], &c__8, &c__3) && *kv == igetbits_(&isdat1[isdat], &c__1, &c__12) + 1) { -#line 7124 "" - if (! tfound) { #line 7125 "" - tfound = igetbits_(&isdat1[isdat], &c__7, &c__19) == 1; + if (! tfound) { #line 7126 "" - if (tfound) { + tfound = igetbits_(&isdat1[isdat], &c__7, &c__19) == 1; #line 7127 "" - nolevt = igetbits_(&isdat2[isdat], &c__7, &c__19); + if (tfound) { #line 7128 "" - isdatt = isdat; + nolevt = igetbits_(&isdat2[isdat], &c__7, &c__19); #line 7129 "" + isdatt = isdat; +#line 7130 "" if (sfound) { -#line 7129 "" +#line 7130 "" goto L6; -#line 7129 "" - } #line 7130 "" - } + } #line 7131 "" - } + } #line 7132 "" - if (! sfound) { + } #line 7133 "" - sfound = igetbits_(&isdat1[isdat], &c__7, &c__19) == 32; + if (! sfound) { #line 7134 "" - if (sfound) { + sfound = igetbits_(&isdat1[isdat], &c__7, &c__19) == 32; #line 7135 "" - nolevs = igetbits_(&isdat2[isdat], &c__7, &c__19); + if (sfound) { #line 7136 "" - isdats = isdat; + nolevs = igetbits_(&isdat2[isdat], &c__7, &c__19); #line 7137 "" + isdats = isdat; +#line 7138 "" if (tfound) { -#line 7137 "" +#line 7138 "" goto L6; -#line 7137 "" - } #line 7138 "" - } + } #line 7139 "" - } + } #line 7140 "" - } + } #line 7141 "" + } +#line 7142 "" /* L5: */ -#line 7141 "" +#line 7142 "" } /* Will come thru here if there is a t with no s, so comment out the following */ /* print*,'Did not find s+t-slurs in doslur' */ -#line 7146 "" -L6: #line 7147 "" +L6: +#line 7148 "" if (sfound && tfound) { -#line 7147 "" +#line 7148 "" tmove = nolevs == nolevt && (bit_test(isdat1[isdats],11) && bit_test(isdat1[isdatt],11) || ! bit_test(isdat1[isdats], 11) && ! bit_test(isdat1[isdatt],11)); -#line 7147 "" +#line 7148 "" } /* Check if 2 starts or two stops */ @@ -17287,229 +17289,229 @@ L6: /* This is a flag for later changing slur level, after we know slur dir'n. */ -#line 7158 "" - } #line 7159 "" - if (commidi_1.ismidi) { + } #line 7160 "" - settie = FALSE_; + if (commidi_1.ismidi) { #line 7161 "" - comslm_1.dbltie = FALSE_; + settie = FALSE_; #line 7162 "" - } + comslm_1.dbltie = FALSE_; #line 7163 "" + } +#line 7164 "" i__1 = *nsdat; -#line 7163 "" - for (isdat = 1; isdat <= i__1; ++isdat) { #line 7164 "" - isdata = isdat1[isdat]; + for (isdat = 1; isdat <= i__1; ++isdat) { #line 7165 "" + isdata = isdat1[isdat]; +#line 7166 "" if (*iv == igetbits_(&isdata, &c__5, &c__13) && *ip == igetbits_(& isdata, &c__8, &c__3) && *kv == igetbits_(&isdata, &c__1, & c__12) + 1) { /* Since iv and kv match, ivx will be correct */ -#line 7171 "" - idcode = igetbits_(&isdata, &c__7, &c__19); #line 7172 "" - ivoff = igetbits_(&isdat2[isdat], &c__6, &c__6) - 32; + idcode = igetbits_(&isdata, &c__7, &c__19); #line 7173 "" - ihoff = igetbits_(&isdat2[isdat], &c__7, &c__12) - 64; + ivoff = igetbits_(&isdat2[isdat], &c__6, &c__6) - 32; #line 7174 "" - iupdn = 0; + ihoff = igetbits_(&isdat2[isdat], &c__7, &c__12) - 64; #line 7175 "" - *(unsigned char *)slurudq = 'd'; + iupdn = 0; #line 7176 "" - nolevs = igetbits_(&isdat2[isdat], &c__7, &c__19); + *(unsigned char *)slurudq = 'd'; #line 7177 "" + nolevs = igetbits_(&isdat2[isdat], &c__7, &c__19); +#line 7178 "" if (bit_test(isdata,11)) { /* Turnon, */ -#line 7181 "" +#line 7182 "" if (nolevs == 0 || nolevs > 60) { /* Note was a rest, cannot start slur on rest. */ -#line 7185 "" - s_wsle(&io___508); -#line 7185 "" - e_wsle(); #line 7186 "" - printl_("Cannot start slur on a rest", (ftnlen)27); + s_wsle(&io___509); +#line 7186 "" + e_wsle(); #line 7187 "" - stop1_(); + printl_("Cannot start slur on a rest", (ftnlen)27); #line 7188 "" + stop1_(); +#line 7189 "" } /* Get slur direction */ -#line 7192 "" +#line 7193 "" if (bit_test(isdata,26)) { /* Force slur direction */ -#line 7196 "" +#line 7197 "" if (bit_test(isdata,27)) { -#line 7196 "" +#line 7197 "" *(unsigned char *)slurudq = 'u'; -#line 7196 "" - } #line 7197 "" + } +#line 7198 "" } else if (commvl_1.nvmx[*iv - 1] == 1) { /* Only one voice per line */ -#line 7201 "" +#line 7202 "" if (! (*beamon)) { /* Separate note. */ -#line 7205 "" +#line 7206 "" udfq_(ch__1, (ftnlen)1, nolev, ncm); -#line 7205 "" +#line 7206 "" *(unsigned char *)slurudq = *(unsigned char *)&ch__1[ 0]; -#line 7206 "" +#line 7207 "" } else { /* In a beam */ -#line 7210 "" +#line 7211 "" if (*(unsigned char *)ulq != 'u') { -#line 7210 "" +#line 7211 "" *(unsigned char *)slurudq = 'u'; -#line 7210 "" - } #line 7211 "" - } + } #line 7212 "" - if (iscrd) { + } #line 7213 "" - if (nolevs > *ncm) { + if (iscrd) { #line 7214 "" - *(unsigned char *)slurudq = 'u'; + if (nolevs > *ncm) { #line 7215 "" - } else { + *(unsigned char *)slurudq = 'u'; #line 7216 "" - *(unsigned char *)slurudq = 'd'; + } else { #line 7217 "" - } + *(unsigned char *)slurudq = 'd'; #line 7218 "" - } + } #line 7219 "" + } +#line 7220 "" } else { /* Two voices per line. Get default */ -#line 7223 "" +#line 7224 "" if (commvl_1.ivx > *nv) { -#line 7223 "" +#line 7224 "" *(unsigned char *)slurudq = 'u'; -#line 7223 "" +#line 7224 "" } /* Upper voice of the two, so up slur */ -#line 7227 "" +#line 7228 "" } /* Save up/down-ness for use at termination */ -#line 7231 "" +#line 7232 "" if (*(unsigned char *)slurudq == 'u') { -#line 7231 "" +#line 7232 "" isdata = bit_set(isdata,27); -#line 7231 "" +#line 7232 "" } /* End of section for setting slur direction, still in "Turnon" if-block. */ -#line 7235 "" - if (idcode == 1 && tmove) { #line 7236 "" - iupdn = 1; + if (idcode == 1 && tmove) { #line 7237 "" + iupdn = 1; +#line 7238 "" if (*(unsigned char *)slurudq == 'd') { -#line 7237 "" +#line 7238 "" iupdn = -1; -#line 7237 "" - } #line 7238 "" - } + } #line 7239 "" + } +#line 7240 "" if (bit_test(*iornq,11) || bit_test(*iornq,12)) { /* Raise or lower slur by one unit provided . or _ is on same side as slur */ -#line 7243 "" - ivoffinc = 0; #line 7244 "" + ivoffinc = 0; +#line 7245 "" if (stemup && *(unsigned char *)slurudq == 'd' || ! stemup && *(unsigned char *)slurudq == 'u') { /* Must move the slur for _ or . */ -#line 7249 "" - if (stemup) { #line 7250 "" - ivoffinc = -1; + if (stemup) { #line 7251 "" - } else { + ivoffinc = -1; #line 7252 "" - ivoffinc = 1; + } else { #line 7253 "" - } + ivoffinc = 1; #line 7254 "" + } +#line 7255 "" if ((stemup && *nolev >= *ncm - 2 || ! stemup && * nolev <= *ncm + 2) && (i__2 = *ncm - *nolev, abs(i__2)) % 2 == 0) { -#line 7254 "" +#line 7255 "" ivoffinc <<= 1; -#line 7254 "" +#line 7255 "" } -#line 7257 "" - ivoff += ivoffinc; #line 7258 "" - } + ivoff += ivoffinc; #line 7259 "" - } + } #line 7260 "" - if (comslur_1.listslur == 16777215) { -#line 7261 "" - s_wsle(&io___510); + } #line 7261 "" - e_wsle(); + if (comslur_1.listslur == 16777215) { #line 7262 "" s_wsle(&io___511); -#line 7262 "" - do_lio(&c__9, &c__1, "You1 defined the twenty-fifth slur"\ - ", one too many!", (ftnlen)49); #line 7262 "" e_wsle(); #line 7263 "" - s_wsfe(&io___512); + s_wsle(&io___512); #line 7263 "" + do_lio(&c__9, &c__1, "You1 defined the twenty-fifth slur"\ + ", one too many!", (ftnlen)49); +#line 7263 "" + e_wsle(); +#line 7264 "" + s_wsfe(&io___513); +#line 7264 "" do_fio(&c__1, "You2 defined the twenty-fifth slur, one t"\ "oo many!", (ftnlen)49); -#line 7263 "" +#line 7264 "" e_wsfe(); -#line 7265 "" - stop1_(); #line 7266 "" + stop1_(); +#line 7267 "" } /* Get index of next slur not in use, starting from ? down */ -#line 7270 "" +#line 7271 "" i__2 = 16777215 - comslur_1.listslur; -#line 7270 "" +#line 7271 "" comslur_1.ndxslur = log2_(&i__2); /* Record slur index */ -#line 7274 "" +#line 7275 "" comslur_1.listslur = bit_set(comslur_1.listslur, comslur_1.ndxslur); @@ -17517,149 +17519,149 @@ L6: /* call setbits(isdata,4,28,ndxslur) */ /* 080531 Allow >16 slurs */ -#line 7280 "" +#line 7281 "" i__2 = comslur_1.ndxslur % 16; -#line 7280 "" - setbits_(&isdata, &c__4, &c__28, &i__2); #line 7281 "" + setbits_(&isdata, &c__4, &c__28, &i__2); +#line 7282 "" i__2 = comslur_1.ndxslur / 16; -#line 7281 "" +#line 7282 "" setbits_(&isdata, &c__1, &c__18, &i__2); /* Shift for stem? */ -#line 7285 "" +#line 7286 "" if (stemup && *(unsigned char *)slurudq == 'u' && *tno < 63.f) { -#line 7285 "" +#line 7286 "" ihoff += 8; -#line 7285 "" +#line 7286 "" } -#line 7287 "" +#line 7288 "" if (bit_test(isdat2[isdat],3)) { /* Tie spacing, (slur start) */ -#line 7291 "" - if (*(unsigned char *)slurudq == 'd') { #line 7292 "" - ++ivoff; + if (*(unsigned char *)slurudq == 'd') { #line 7293 "" - ihoff += 8; + ++ivoff; #line 7294 "" - } else if (*(unsigned char *)slurudq == 'u') { + ihoff += 8; #line 7295 "" - --ivoff; + } else if (*(unsigned char *)slurudq == 'u') { #line 7296 "" + --ivoff; +#line 7297 "" if (! (stemup && *tno < 63.f)) { -#line 7296 "" +#line 7297 "" ihoff += 8; -#line 7296 "" +#line 7297 "" } /* (already shifted if (stemup.and.tno.gt.63.) and slurudq='u') */ -#line 7300 "" - } #line 7301 "" - } + } #line 7302 "" + } +#line 7303 "" if (iscrd) { /* Additional horiz shifts for h-shifted noteheads? */ -#line 7306 "" +#line 7307 "" if (bit_test(isdat2[isdat],1)) { /* Slur start on left-shifted chord notehead. ASSUME downstem. */ -#line 7310 "" +#line 7311 "" if (nolevs == comtrill_1.minlev && *(unsigned char *) slurudq == 'd') { -#line 7311 "" - ihoff += -2; #line 7312 "" - } else { + ihoff += -2; #line 7313 "" - ihoff += -10; + } else { #line 7314 "" - } + ihoff += -10; #line 7315 "" + } +#line 7316 "" } else if (bit_test(isdat2[isdat],2)) { /* Right shifted chord notehead. ASSUME upstem. */ -#line 7319 "" +#line 7320 "" if (nolevs == comtrill_1.maxlev && *(unsigned char *) slurudq == 'u') { -#line 7320 "" - ihoff += 2; #line 7321 "" - } else { + ihoff += 2; #line 7322 "" - ihoff += 10; + } else { #line 7323 "" - } + ihoff += 10; #line 7324 "" - } + } #line 7325 "" - } + } #line 7326 "" + } +#line 7327 "" if (ihoff == 0) { /* Write stuff for non-shifted start */ /* Writing concatenation */ -#line 7330 "" +#line 7331 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7330 "" +#line 7331 "" i__3[0] = 1, a__1[0] = ch__1; -#line 7330 "" +#line 7331 "" i__3[1] = 5, a__1[1] = "islur"; -#line 7330 "" +#line 7331 "" i__3[2] = 1, a__1[2] = slurudq; -#line 7330 "" - s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 7331 "" - lnote = 7; + s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 7332 "" + lnote = 7; +#line 7333 "" } else { /* Writing concatenation */ -#line 7333 "" +#line 7334 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7333 "" +#line 7334 "" i__3[0] = 1, a__1[0] = ch__1; -#line 7333 "" +#line 7334 "" i__3[1] = 2, a__1[1] = "is"; -#line 7333 "" +#line 7334 "" i__3[2] = 1, a__1[2] = slurudq; -#line 7333 "" - s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 7334 "" - lnote = 4; + s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 7335 "" - } + lnote = 4; #line 7336 "" + } +#line 7337 "" if (bit_test(isdat2[isdat],4)) { /* Dotted slur */ -#line 7340 "" +#line 7341 "" s_copy(noteq, notexq, (ftnlen)8, (ftnlen)79); /* Writing concatenation */ -#line 7341 "" +#line 7342 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7341 "" +#line 7342 "" i__3[0] = 1, a__1[0] = ch__1; -#line 7341 "" +#line 7342 "" i__3[1] = 6, a__1[1] = "dotted"; -#line 7341 "" +#line 7342 "" i__3[2] = 8, a__1[2] = noteq; -#line 7341 "" - s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 7342 "" - lnote += 7; + s_cat(notexq, a__1, i__3, &c__3, (ftnlen)79); #line 7343 "" + lnote += 7; +#line 7344 "" } /* Add slur index to string */ @@ -17667,250 +17669,250 @@ L6: /* Print 23-ndxslur */ /* if (11-ndxslur .lt. 10) then */ -#line 7350 "" +#line 7351 "" if (23 - comslur_1.ndxslur < 10) { /* 5/25/08 Allow 24 slurs */ /* notexq = notexq(1:lnote)//chax(59-ndxslur) */ /* Writing concatenation */ -#line 7355 "" +#line 7356 "" i__4[0] = lnote, a__2[0] = notexq; -#line 7355 "" +#line 7356 "" i__2 = 71 - comslur_1.ndxslur; -#line 7355 "" +#line 7356 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 7355 "" +#line 7356 "" i__4[1] = 1, a__2[1] = ch__1; -#line 7355 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7356 "" - ++lnote; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7357 "" + ++lnote; +#line 7358 "" } else if (23 - comslur_1.ndxslur < 20) { /* notexq = notexq(1:lnote)//'{1'//chax(49-ndxslur)//'}' */ /* Writing concatenation */ -#line 7359 "" +#line 7360 "" i__5[0] = lnote, a__3[0] = notexq; -#line 7359 "" +#line 7360 "" i__5[1] = 2, a__3[1] = "{1"; -#line 7359 "" +#line 7360 "" i__2 = 61 - comslur_1.ndxslur; -#line 7359 "" +#line 7360 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 7359 "" +#line 7360 "" i__5[2] = 1, a__3[2] = ch__1; -#line 7359 "" +#line 7360 "" i__5[3] = 1, a__3[3] = "}"; -#line 7359 "" - s_cat(notexq, a__3, i__5, &c__4, (ftnlen)79); #line 7360 "" - lnote += 4; + s_cat(notexq, a__3, i__5, &c__4, (ftnlen)79); #line 7361 "" + lnote += 4; +#line 7362 "" } else { /* Writing concatenation */ -#line 7362 "" +#line 7363 "" i__5[0] = lnote, a__3[0] = notexq; -#line 7362 "" +#line 7363 "" i__5[1] = 2, a__3[1] = "{2"; -#line 7362 "" +#line 7363 "" i__2 = 51 - comslur_1.ndxslur; -#line 7362 "" +#line 7363 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 7362 "" +#line 7363 "" i__5[2] = 1, a__3[2] = ch__1; -#line 7362 "" +#line 7363 "" i__5[3] = 1, a__3[3] = "}"; -#line 7362 "" - s_cat(notexq, a__3, i__5, &c__4, (ftnlen)79); #line 7363 "" - lnote += 4; + s_cat(notexq, a__3, i__5, &c__4, (ftnlen)79); #line 7364 "" + lnote += 4; +#line 7365 "" } /* Add note name to string */ -#line 7368 "" +#line 7369 "" i__2 = nolevs + iupdn + ivoff; -#line 7368 "" +#line 7369 "" notefq_(noteq, &lnoten, &i__2, ncm, (ftnlen)8); /* Writing concatenation */ -#line 7369 "" +#line 7370 "" i__4[0] = lnote, a__2[0] = notexq; -#line 7369 "" +#line 7370 "" i__4[1] = lnoten, a__2[1] = noteq; -#line 7369 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7370 "" + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); +#line 7371 "" lnote += lnoten; /* Save height (for ornament and barnobox interference) if topmost slur is up */ -#line 7374 "" +#line 7375 "" if (*(unsigned char *)slurudq == 'u' && (! bit_test(isdat2[ isdat],0) || nolevs == comtrill_1.maxlev)) { -#line 7376 "" +#line 7377 "" *islhgt = nolevs + iupdn + ivoff; /* Save height & idcode if top voice and slur start */ -#line 7380 "" +#line 7381 "" if (commvl_1.ivx == commvl_1.ivmx[*nv + commvl_1.nvmx[*nv - 1] * 24 - 25] && *islhgt > comsln_1.is1n1) { -#line 7381 "" - comsln_1.is1n1 = *islhgt; #line 7382 "" - comsln_1.is2n1 = idcode; + comsln_1.is1n1 = *islhgt; #line 7383 "" - } + comsln_1.is2n1 = idcode; #line 7384 "" - } + } #line 7385 "" - if ((real) ihoff != 0.f) { + } #line 7386 "" + if ((real) ihoff != 0.f) { +#line 7387 "" shift = ihoff * .1f; /* Writing concatenation */ -#line 7387 "" +#line 7388 "" i__4[0] = lnote, a__2[0] = notexq; -#line 7387 "" +#line 7388 "" i__4[1] = 1, a__2[1] = "{"; -#line 7387 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7388 "" - ++lnote; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7389 "" - lform = lfmt1_(&shift); + ++lnote; #line 7390 "" + lform = lfmt1_(&shift); +#line 7391 "" i__2 = lnote; -#line 7390 "" +#line 7391 "" ici__1.icierr = 0; -#line 7390 "" +#line 7391 "" ici__1.icirnum = 1; -#line 7390 "" +#line 7391 "" ici__1.icirlen = lnote + lform - i__2; -#line 7390 "" +#line 7391 "" ici__1.iciunit = notexq + i__2; /* Writing concatenation */ -#line 7390 "" +#line 7391 "" i__3[0] = 2, a__1[0] = "(f"; -#line 7390 "" +#line 7391 "" i__6 = lform + 48; -#line 7390 "" +#line 7391 "" chax_(ch__1, (ftnlen)1, &i__6); -#line 7390 "" +#line 7391 "" i__3[1] = 1, a__1[1] = ch__1; -#line 7390 "" +#line 7391 "" i__3[2] = 3, a__1[2] = ".1)"; -#line 7390 "" +#line 7391 "" ici__1.icifmt = (s_cat(ch__2, a__1, i__3, &c__3, (ftnlen) 6), ch__2); -#line 7390 "" +#line 7391 "" s_wsfi(&ici__1); -#line 7390 "" +#line 7391 "" do_fio(&c__1, (char *)&shift, (ftnlen)sizeof(real)); -#line 7390 "" +#line 7391 "" e_wsfi(); -#line 7392 "" +#line 7393 "" lnote += lform; /* Writing concatenation */ -#line 7393 "" +#line 7394 "" i__4[0] = lnote, a__2[0] = notexq; -#line 7393 "" +#line 7394 "" i__4[1] = 1, a__2[1] = "}"; -#line 7393 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7394 "" - ++lnote; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7395 "" - } + ++lnote; #line 7396 "" + } +#line 7397 "" addstr_(notexq, &lnote, soutq, lsout, (ftnlen)79, (ftnlen)80); /* Zero out ip1 to avoid problems if slur goes to next input blk. */ -#line 7400 "" +#line 7401 "" setbits_(&isdata, &c__8, &c__3, &c__0); /* Set slur-on data for midi. Only treat null-index slurs and ps ties for now. */ -#line 7404 "" - if (commidi_1.ismidi && idcode == 32) { #line 7405 "" + if (commidi_1.ismidi && idcode == 32) { +#line 7406 "" comslm_1.levson[commidi_1.midchan[*iv + *kv * 24 - 25]] = nolevs + commvel_1.miditran[cominsttrans_1.instno[ *iv - 1] - 1]; -#line 7406 "" +#line 7407 "" if (settie) { -#line 7406 "" +#line 7407 "" comslm_1.dbltie = TRUE_; -#line 7406 "" +#line 7407 "" } /* Only way settie=T is if we just set a tie ending. So there's also a slur */ /* start here, so set a flag telling addmidi not to zero out levson */ -#line 7411 "" - } #line 7412 "" + } +#line 7413 "" } else { /* Slur is ending. Back thru list to find starting slur */ -#line 7416 "" - for (j = isdat - 1; j >= 1; --j) { #line 7417 "" + for (j = isdat - 1; j >= 1; --j) { +#line 7418 "" if (*iv == igetbits_(&isdat1[j], &c__5, &c__13) && *kv == igetbits_(&isdat1[j], &c__1, &c__12) + 1) { -#line 7419 "" - if (idcode == igetbits_(&isdat1[j], &c__7, &c__19)) { #line 7420 "" + if (idcode == igetbits_(&isdat1[j], &c__7, &c__19)) { +#line 7421 "" comslur_1.ndxslur = igetbits_(&isdat1[j], &c__4, & c__28) + (igetbits_(&isdat1[j], &c__1, & c__18) << 4); /* 080531 Allow >16 slurs */ -#line 7425 "" +#line 7426 "" if (bit_test(isdat1[j],27)) { -#line 7425 "" +#line 7426 "" *(unsigned char *)slurudq = 'u'; -#line 7425 "" - } #line 7426 "" - goto L4; + } #line 7427 "" - } + goto L4; #line 7428 "" - } -#line 7429 "" -/* L3: */ + } #line 7429 "" - } + } #line 7430 "" - s_wsle(&io___520); +/* L3: */ #line 7430 "" + } +#line 7431 "" + s_wsle(&io___521); +#line 7431 "" do_lio(&c__9, &c__1, "Bad place in doslur", (ftnlen)19); -#line 7430 "" - e_wsle(); #line 7431 "" - stop1_(); + e_wsle(); #line 7432 "" -L4: + stop1_(); #line 7433 "" +L4: +#line 7434 "" if (nolevs == 0 || nolevs > 60) { /* Ending is on a rest, reset nolevs to default starting height */ -#line 7437 "" - nolevs = igetbits_(&isdat2[j], &c__7, &c__19); #line 7438 "" - } + nolevs = igetbits_(&isdat2[j], &c__7, &c__19); #line 7439 "" + } +#line 7440 "" if (bit_test(isdat3[isdat],0)) { /* Deal with \curve or \midslur */ -#line 7443 "" +#line 7444 "" imid = igetbits_(&isdat3[isdat], &c__6, &c__2) - 32; /* Remember, only dealing with non-ps slurs */ @@ -17920,598 +17922,598 @@ L4: /* if (slurudq .eq. 'd') imid = -imid */ /* 3/8/03 added the following */ -#line 7452 "" +#line 7453 "" if (*(unsigned char *)slurudq == 'd') { -#line 7452 "" +#line 7453 "" imid = -abs(imid); -#line 7452 "" +#line 7453 "" } -#line 7454 "" +#line 7455 "" if (bit_test(isdat3[isdat],1)) { /* Writing concatenation */ -#line 7455 "" +#line 7456 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7455 "" +#line 7456 "" i__4[0] = 1, a__2[0] = ch__1; -#line 7455 "" +#line 7456 "" i__4[1] = 5, a__2[1] = "curve"; -#line 7455 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7456 "" - lnote = 6; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7457 "" + lnote = 6; +#line 7458 "" } else { /* Writing concatenation */ -#line 7458 "" +#line 7459 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7458 "" +#line 7459 "" i__4[0] = 1, a__2[0] = ch__1; -#line 7458 "" +#line 7459 "" i__4[1] = 7, a__2[1] = "midslur"; -#line 7458 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7459 "" - lnote = 8; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7460 "" - } + lnote = 8; #line 7461 "" + } +#line 7462 "" if (imid < 0 || imid > 9) { /* Need brackets */ /* Writing concatenation */ -#line 7465 "" +#line 7466 "" i__4[0] = lnote, a__2[0] = notexq; -#line 7465 "" +#line 7466 "" i__4[1] = 1, a__2[1] = "{"; -#line 7465 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7466 "" - ++lnote; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7467 "" - if (imid < -9) { + ++lnote; #line 7468 "" + if (imid < -9) { +#line 7469 "" i__2 = lnote; -#line 7468 "" +#line 7469 "" ici__1.icierr = 0; -#line 7468 "" +#line 7469 "" ici__1.icirnum = 1; -#line 7468 "" +#line 7469 "" ici__1.icirlen = lnote + 3 - i__2; -#line 7468 "" +#line 7469 "" ici__1.iciunit = notexq + i__2; -#line 7468 "" +#line 7469 "" ici__1.icifmt = "(i3)"; -#line 7468 "" +#line 7469 "" s_wsfi(&ici__1); -#line 7468 "" +#line 7469 "" do_fio(&c__1, (char *)&imid, (ftnlen)sizeof( integer)); -#line 7468 "" - e_wsfi(); #line 7469 "" - lnote += 3; + e_wsfi(); #line 7470 "" - } else if (imid < 0 || imid > 9) { + lnote += 3; #line 7471 "" + } else if (imid < 0 || imid > 9) { +#line 7472 "" i__2 = lnote; -#line 7471 "" +#line 7472 "" ici__1.icierr = 0; -#line 7471 "" +#line 7472 "" ici__1.icirnum = 1; -#line 7471 "" +#line 7472 "" ici__1.icirlen = lnote + 2 - i__2; -#line 7471 "" +#line 7472 "" ici__1.iciunit = notexq + i__2; -#line 7471 "" +#line 7472 "" ici__1.icifmt = "(i2)"; -#line 7471 "" +#line 7472 "" s_wsfi(&ici__1); -#line 7471 "" +#line 7472 "" do_fio(&c__1, (char *)&imid, (ftnlen)sizeof( integer)); -#line 7471 "" - e_wsfi(); #line 7472 "" - lnote += 2; + e_wsfi(); #line 7473 "" - } else { + lnote += 2; #line 7474 "" + } else { +#line 7475 "" i__2 = lnote; -#line 7474 "" +#line 7475 "" ici__1.icierr = 0; -#line 7474 "" +#line 7475 "" ici__1.icirnum = 1; -#line 7474 "" +#line 7475 "" ici__1.icirlen = lnote + 1 - i__2; -#line 7474 "" +#line 7475 "" ici__1.iciunit = notexq + i__2; -#line 7474 "" +#line 7475 "" ici__1.icifmt = "(i1)"; -#line 7474 "" +#line 7475 "" s_wsfi(&ici__1); -#line 7474 "" +#line 7475 "" do_fio(&c__1, (char *)&imid, (ftnlen)sizeof( integer)); -#line 7474 "" - e_wsfi(); #line 7475 "" - ++lnote; + e_wsfi(); #line 7476 "" + ++lnote; +#line 7477 "" } /* Writing concatenation */ -#line 7477 "" +#line 7478 "" i__4[0] = lnote, a__2[0] = notexq; -#line 7477 "" +#line 7478 "" i__4[1] = 1, a__2[1] = "}"; -#line 7477 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7478 "" - ++lnote; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7479 "" + ++lnote; +#line 7480 "" } else { /* 1= 63.f) { -#line 7512 "" +#line 7513 "" ihoff += -8; -#line 7512 "" - } #line 7513 "" - } + } #line 7514 "" - } + } #line 7515 "" + } +#line 7516 "" if (iscrd) { /* Shift termination for shifted notehead? */ -#line 7519 "" +#line 7520 "" if (bit_test(isdat2[isdat],1)) { /* Left-shifted chord notehead. ASSUME downstem. */ -#line 7523 "" +#line 7524 "" if (nolevs == comtrill_1.minlev && *(unsigned char *) slurudq == 'd') { -#line 7524 "" - ihoff += -2; #line 7525 "" - } else { + ihoff += -2; #line 7526 "" - ihoff += -10; + } else { #line 7527 "" - } + ihoff += -10; #line 7528 "" + } +#line 7529 "" } else if (bit_test(isdat2[isdat],2)) { /* Right shifted chord notehead. ASSUME upstem. */ -#line 7532 "" +#line 7533 "" if (nolevs == comtrill_1.maxlev && *(unsigned char *) slurudq == 'u') { -#line 7533 "" - ihoff += 2; #line 7534 "" - } else { + ihoff += 2; #line 7535 "" - ihoff += 10; + } else { #line 7536 "" - } + ihoff += 10; #line 7537 "" - } + } #line 7538 "" - } + } #line 7539 "" + } +#line 7540 "" if (ihoff == 0) { /* Writing concatenation */ -#line 7540 "" +#line 7541 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7540 "" +#line 7541 "" i__4[0] = 1, a__2[0] = ch__1; -#line 7540 "" +#line 7541 "" i__4[1] = 5, a__2[1] = "tslur"; -#line 7540 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7541 "" - lnote = 6; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7542 "" + lnote = 6; +#line 7543 "" } else { /* Shift needed */ /* Writing concatenation */ -#line 7546 "" +#line 7547 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7546 "" +#line 7547 "" i__4[0] = 1, a__2[0] = ch__1; -#line 7546 "" +#line 7547 "" i__4[1] = 2, a__2[1] = "ts"; -#line 7546 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7547 "" - lnote = 3; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7548 "" + lnote = 3; +#line 7549 "" } /* Print 23-ndxslur */ /* 5/25/08 Allow 14 slurs (???????????) */ -#line 7553 "" +#line 7554 "" if (23 - comslur_1.ndxslur < 10) { /* Writing concatenation */ -#line 7554 "" +#line 7555 "" i__4[0] = lnote, a__2[0] = notexq; -#line 7554 "" +#line 7555 "" i__2 = 71 - comslur_1.ndxslur; -#line 7554 "" +#line 7555 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 7554 "" +#line 7555 "" i__4[1] = 1, a__2[1] = ch__1; -#line 7554 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7555 "" - ++lnote; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7556 "" + ++lnote; +#line 7557 "" } else if (23 - comslur_1.ndxslur < 20) { /* Writing concatenation */ -#line 7557 "" +#line 7558 "" i__5[0] = lnote, a__3[0] = notexq; -#line 7557 "" +#line 7558 "" i__5[1] = 2, a__3[1] = "{1"; -#line 7557 "" +#line 7558 "" i__2 = 61 - comslur_1.ndxslur; -#line 7557 "" +#line 7558 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 7557 "" +#line 7558 "" i__5[2] = 1, a__3[2] = ch__1; -#line 7557 "" +#line 7558 "" i__5[3] = 1, a__3[3] = "}"; -#line 7557 "" - s_cat(notexq, a__3, i__5, &c__4, (ftnlen)79); #line 7558 "" - lnote += 4; + s_cat(notexq, a__3, i__5, &c__4, (ftnlen)79); #line 7559 "" + lnote += 4; +#line 7560 "" } else { /* Writing concatenation */ -#line 7560 "" +#line 7561 "" i__5[0] = lnote, a__3[0] = notexq; -#line 7560 "" +#line 7561 "" i__5[1] = 2, a__3[1] = "{2"; -#line 7560 "" +#line 7561 "" i__2 = 51 - comslur_1.ndxslur; -#line 7560 "" +#line 7561 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 7560 "" +#line 7561 "" i__5[2] = 1, a__3[2] = ch__1; -#line 7560 "" +#line 7561 "" i__5[3] = 1, a__3[3] = "}"; -#line 7560 "" - s_cat(notexq, a__3, i__5, &c__4, (ftnlen)79); #line 7561 "" - lnote += 4; + s_cat(notexq, a__3, i__5, &c__4, (ftnlen)79); #line 7562 "" - } + lnote += 4; #line 7563 "" + } +#line 7564 "" if (bit_test(*iornq,11) || bit_test(*iornq,12)) { /* Raise or lower slur by one unit provided . or _ is on same side as slur */ -#line 7567 "" - ivoffinc = 0; #line 7568 "" + ivoffinc = 0; +#line 7569 "" if (stemup && *(unsigned char *)slurudq == 'd' || ! stemup && *(unsigned char *)slurudq == 'u') { -#line 7570 "" - if (stemup) { #line 7571 "" - ivoffinc = -1; + if (stemup) { #line 7572 "" - } else { + ivoffinc = -1; #line 7573 "" - ivoffinc = 1; + } else { #line 7574 "" - } + ivoffinc = 1; #line 7575 "" + } +#line 7576 "" if ((stemup && *nolev >= *ncm - 2 || ! stemup && * nolev <= *ncm + 2) && (i__2 = *ncm - *nolev, abs(i__2)) % 2 == 0) { -#line 7575 "" +#line 7576 "" ivoffinc <<= 1; -#line 7575 "" +#line 7576 "" } -#line 7578 "" - } #line 7579 "" - ivoff += ivoffinc; + } #line 7580 "" - } + ivoff += ivoffinc; #line 7581 "" + } +#line 7582 "" if (idcode == 1 && tmove) { /* t-slur height adjustment */ -#line 7585 "" - iupdn = 1; #line 7586 "" + iupdn = 1; +#line 7587 "" if (*(unsigned char *)slurudq == 'd') { -#line 7586 "" +#line 7587 "" iupdn = -1; -#line 7586 "" - } #line 7587 "" - } + } #line 7588 "" + } +#line 7589 "" i__2 = nolevs + iupdn + ivoff; -#line 7588 "" - notefq_(noteq, &lnoten, &i__2, ncm, (ftnlen)8); #line 7589 "" + notefq_(noteq, &lnoten, &i__2, ncm, (ftnlen)8); +#line 7590 "" if (*(unsigned char *)slurudq == 'u' && (! bit_test(isdat2[ isdat],0) || nolevs == comtrill_1.maxlev)) { -#line 7591 "" +#line 7592 "" *islhgt = nolevs + iupdn + ivoff; /* If topvoice, upslur, and idcode checks, no more need to keep hgt for barno. */ -#line 7595 "" +#line 7596 "" if (commvl_1.ivx == commvl_1.ivmx[*nv + commvl_1.nvmx[*nv - 1] * 24 - 25] && comsln_1.is1n1 > 0) { -#line 7596 "" +#line 7597 "" if (idcode == comsln_1.is2n1) { -#line 7596 "" +#line 7597 "" comsln_1.is1n1 = 0; -#line 7596 "" - } #line 7597 "" - } + } #line 7598 "" + } +#line 7599 "" } /* Writing concatenation */ -#line 7599 "" +#line 7600 "" i__4[0] = lnote, a__2[0] = notexq; -#line 7599 "" +#line 7600 "" i__4[1] = lnoten, a__2[1] = noteq; -#line 7599 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7600 "" - lnote += lnoten; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7601 "" - if (ihoff != 0) { + lnote += lnoten; #line 7602 "" + if (ihoff != 0) { +#line 7603 "" shift = ihoff * .1f; /* Writing concatenation */ -#line 7603 "" +#line 7604 "" i__4[0] = lnote, a__2[0] = notexq; -#line 7603 "" +#line 7604 "" i__4[1] = 1, a__2[1] = "{"; -#line 7603 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7604 "" - ++lnote; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7605 "" - lform = lfmt1_(&shift); + ++lnote; #line 7606 "" + lform = lfmt1_(&shift); +#line 7607 "" i__2 = lnote; -#line 7606 "" +#line 7607 "" ici__1.icierr = 0; -#line 7606 "" +#line 7607 "" ici__1.icirnum = 1; -#line 7606 "" +#line 7607 "" ici__1.icirlen = lnote + lform - i__2; -#line 7606 "" +#line 7607 "" ici__1.iciunit = notexq + i__2; /* Writing concatenation */ -#line 7606 "" +#line 7607 "" i__3[0] = 2, a__1[0] = "(f"; -#line 7606 "" +#line 7607 "" i__6 = lform + 48; -#line 7606 "" +#line 7607 "" chax_(ch__1, (ftnlen)1, &i__6); -#line 7606 "" +#line 7607 "" i__3[1] = 1, a__1[1] = ch__1; -#line 7606 "" +#line 7607 "" i__3[2] = 3, a__1[2] = ".1)"; -#line 7606 "" +#line 7607 "" ici__1.icifmt = (s_cat(ch__2, a__1, i__3, &c__3, (ftnlen) 6), ch__2); -#line 7606 "" +#line 7607 "" s_wsfi(&ici__1); -#line 7606 "" +#line 7607 "" do_fio(&c__1, (char *)&shift, (ftnlen)sizeof(real)); -#line 7606 "" +#line 7607 "" e_wsfi(); -#line 7608 "" +#line 7609 "" lnote += lform; /* Writing concatenation */ -#line 7609 "" +#line 7610 "" i__4[0] = lnote, a__2[0] = notexq; -#line 7609 "" +#line 7610 "" i__4[1] = 1, a__2[1] = "}"; -#line 7609 "" - s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7610 "" - ++lnote; + s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); #line 7611 "" - } + ++lnote; #line 7612 "" + } +#line 7613 "" addstr_(notexq, &lnote, soutq, lsout, (ftnlen)79, (ftnlen)80); /* Clear the bit from list of slurs in use */ -#line 7616 "" +#line 7617 "" comslur_1.listslur = bit_clear(comslur_1.listslur, comslur_1.ndxslur); /* Zero out the entire strings for start and stop */ -#line 7620 "" - isdata = 0; #line 7621 "" - isdat2[isdat] = 0; + isdata = 0; #line 7622 "" - isdat1[j] = 0; + isdat2[isdat] = 0; #line 7623 "" - isdat2[j] = 0; + isdat1[j] = 0; #line 7624 "" + isdat2[j] = 0; +#line 7625 "" isdat3[isdat] = 0; /* Set midi info for slur ending */ -#line 7628 "" - if (commidi_1.ismidi && idcode == 32) { #line 7629 "" - icm = commidi_1.midchan[*iv + *kv * 24 - 25]; + if (commidi_1.ismidi && idcode == 32) { #line 7630 "" - if (comslm_1.slmon[icm]) { + icm = commidi_1.midchan[*iv + *kv * 24 - 25]; #line 7631 "" + if (comslm_1.slmon[icm]) { +#line 7632 "" if (nolevs + commvel_1.miditran[cominsttrans_1.instno[ *iv - 1] - 1] == comslm_1.levson[icm] && (7 & *nacc) == 0) { /* There is a tie here. NB!!! assumed no accidental on 2nd member of tie. */ -#line 7636 "" +#line 7637 "" comslm_1.levsoff[icm] = nolevs + commvel_1.miditran[cominsttrans_1.instno[* iv - 1] - 1]; -#line 7637 "" - settie = TRUE_; #line 7638 "" - } else { + settie = TRUE_; #line 7639 "" - comslm_1.levsoff[icm] = 0; + } else { #line 7640 "" - comslm_1.levson[icm] = 0; + comslm_1.levsoff[icm] = 0; #line 7641 "" - comslm_1.slmon[icm] = FALSE_; + comslm_1.levson[icm] = 0; #line 7642 "" - } + comslm_1.slmon[icm] = FALSE_; #line 7643 "" - } + } #line 7644 "" - } + } #line 7645 "" - } + } #line 7646 "" - isdat1[isdat] = isdata; + } #line 7647 "" - } + isdat1[isdat] = isdata; #line 7648 "" + } +#line 7649 "" /* L1: */ -#line 7648 "" +#line 7649 "" } /* Clear and collapse the slur data list */ -#line 7652 "" - numdrop = 0; #line 7653 "" + numdrop = 0; +#line 7654 "" i__1 = *nsdat; -#line 7653 "" - for (isdat = 1; isdat <= i__1; ++isdat) { #line 7654 "" - if (isdat1[isdat] == 0) { + for (isdat = 1; isdat <= i__1; ++isdat) { #line 7655 "" - ++numdrop; + if (isdat1[isdat] == 0) { #line 7656 "" - } else if (numdrop > 0) { + ++numdrop; #line 7657 "" - isdat1[isdat - numdrop] = isdat1[isdat]; + } else if (numdrop > 0) { #line 7658 "" - isdat2[isdat - numdrop] = isdat2[isdat]; + isdat1[isdat - numdrop] = isdat1[isdat]; #line 7659 "" - isdat3[isdat - numdrop] = isdat3[isdat]; + isdat2[isdat - numdrop] = isdat2[isdat]; #line 7660 "" - isdat1[isdat] = 0; + isdat3[isdat - numdrop] = isdat3[isdat]; #line 7661 "" - isdat2[isdat] = 0; + isdat1[isdat] = 0; #line 7662 "" - isdat3[isdat] = 0; + isdat2[isdat] = 0; #line 7663 "" - } + isdat3[isdat] = 0; #line 7664 "" + } +#line 7665 "" /* L2: */ -#line 7664 "" - } #line 7665 "" + } +#line 7666 "" *nsdat -= numdrop; /* call report(nsdat,isdat1,isdat2) */ -#line 7667 "" +#line 7668 "" return 0; } /* doslur_ */ @@ -18542,102 +18544,102 @@ L4: /* iddot = 0 for single dot, 1 for double */ -#line 7675 "" +#line 7676 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7675 "" - *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; #line 7676 "" - lfmtup = lfmt1_(updot); + *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; #line 7677 "" - lfmtrt = lfmt1_(rtdot); + lfmtup = lfmt1_(updot); #line 7678 "" + lfmtrt = lfmt1_(rtdot); +#line 7679 "" ici__1.icierr = 0; -#line 7678 "" +#line 7679 "" ici__1.icirnum = 1; -#line 7678 "" +#line 7679 "" ici__1.icirlen = 80; -#line 7678 "" +#line 7679 "" ici__1.iciunit = notexq; /* Writing concatenation */ -#line 7678 "" +#line 7679 "" i__1[0] = 6, a__1[0] = "(a37,f"; -#line 7678 "" +#line 7679 "" i__2 = lfmtup + 48; -#line 7678 "" +#line 7679 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 7678 "" +#line 7679 "" i__1[1] = 1, a__1[1] = ch__1; -#line 7678 "" +#line 7679 "" i__1[2] = 7, a__1[2] = ".1,a2,f"; -#line 7678 "" +#line 7679 "" i__3 = lfmtrt + 48; -#line 7678 "" +#line 7679 "" chax_(ch__3, (ftnlen)1, &i__3); -#line 7678 "" +#line 7679 "" i__1[3] = 1, a__1[3] = ch__3; -#line 7678 "" +#line 7679 "" i__1[4] = 7, a__1[4] = ".1,a15)"; -#line 7678 "" +#line 7679 "" ici__1.icifmt = (s_cat(ch__2, a__1, i__1, &c__5, (ftnlen)22), ch__2); -#line 7678 "" +#line 7679 "" s_wsfi(&ici__1); /* Writing concatenation */ -#line 7678 "" +#line 7679 "" i__4[0] = 1, a__2[0] = sq; -#line 7678 "" +#line 7679 "" i__4[1] = 12, a__2[1] = "makeatletter"; -#line 7678 "" +#line 7679 "" i__4[2] = 1, a__2[2] = sq; -#line 7678 "" +#line 7679 "" i__4[3] = 3, a__2[3] = "def"; -#line 7678 "" +#line 7679 "" i__4[4] = 1, a__2[4] = sq; -#line 7678 "" +#line 7679 "" i__4[5] = 12, a__2[5] = "C@Point#1#2{"; -#line 7678 "" +#line 7679 "" i__4[6] = 1, a__2[6] = sq; -#line 7678 "" +#line 7679 "" i__4[7] = 6, a__2[7] = "PMXpt{"; -#line 7678 "" +#line 7679 "" s_cat(ch__4, a__2, i__4, &c__8, (ftnlen)37); -#line 7678 "" +#line 7679 "" do_fio(&c__1, ch__4, (ftnlen)37); -#line 7678 "" +#line 7679 "" do_fio(&c__1, (char *)&(*updot), (ftnlen)sizeof(real)); -#line 7678 "" +#line 7679 "" do_fio(&c__1, "}{", (ftnlen)2); -#line 7678 "" +#line 7679 "" do_fio(&c__1, (char *)&(*rtdot), (ftnlen)sizeof(real)); /* Writing concatenation */ -#line 7678 "" +#line 7679 "" i__5[0] = 1, a__3[0] = "}"; -#line 7678 "" +#line 7679 "" i__6 = *iddot + 48; -#line 7678 "" +#line 7679 "" chax_(ch__6, (ftnlen)1, &i__6); -#line 7678 "" +#line 7679 "" i__5[1] = 1, a__3[1] = ch__6; -#line 7678 "" +#line 7679 "" i__5[2] = 1, a__3[2] = "}"; -#line 7678 "" +#line 7679 "" i__5[3] = 1, a__3[3] = sq; -#line 7678 "" +#line 7679 "" i__5[4] = 11, a__3[4] = "makeatother"; -#line 7678 "" +#line 7679 "" s_cat(ch__5, a__3, i__5, &c__5, (ftnlen)15); -#line 7678 "" +#line 7679 "" do_fio(&c__1, ch__5, (ftnlen)15); -#line 7678 "" +#line 7679 "" e_wsfi(); /* Example of string just created: */ /* \makeatletter\def\C@Point#1#2{\PMXpt{.5}{.5}}\makeatother\ */ -#line 7687 "" - lnote = lfmtup + 54 + lfmtrt; #line 7688 "" - addstr_(notexq, &lnote, soutq, lsout, lnote, (ftnlen)80); + lnote = lfmtup + 54 + lfmtrt; #line 7689 "" + addstr_(notexq, &lnote, soutq, lsout, lnote, (ftnlen)80); +#line 7690 "" return 0; } /* dotmov_ */ @@ -18666,165 +18668,165 @@ L4: static logical tronly; /* Fortran I/O blocks */ - static cilist io___530 = { 0, 6, 0, 0, 0 }; + static cilist io___531 = { 0, 6, 0, 0, 0 }; -#line 7699 "" +#line 7700 "" i__1 = comtrill_1.ntrill; -#line 7699 "" - for (itr = 1; itr <= i__1; ++itr) { #line 7700 "" + for (itr = 1; itr <= i__1; ++itr) { +#line 7701 "" if (*iv == comtrill_1.ivtrill[itr - 1] && *ip == comtrill_1.iptrill[ itr - 1]) { -#line 7700 "" - goto L2; -#line 7700 "" - } #line 7701 "" -/* L1: */ + goto L2; #line 7701 "" - } + } #line 7702 "" - s_wsle(&io___530); +/* L1: */ #line 7702 "" + } +#line 7703 "" + s_wsle(&io___531); +#line 7703 "" do_lio(&c__9, &c__1, "Problem in dotrill. Call Dr. Don", (ftnlen)33); -#line 7702 "" - e_wsle(); #line 7703 "" - s_stop("", (ftnlen)0); + e_wsle(); #line 7704 "" -L2: + s_stop("", (ftnlen)0); #line 7705 "" - tronly = comtrill_1.xnsktr[itr - 1] < .01f; +L2: #line 7706 "" + tronly = comtrill_1.xnsktr[itr - 1] < .01f; +#line 7707 "" if (tronly) { /* Writing concatenation */ -#line 7707 "" +#line 7708 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7707 "" +#line 7708 "" i__2[0] = 1, a__1[0] = ch__1; -#line 7707 "" +#line 7708 "" i__2[1] = 9, a__1[1] = "zcharnote"; -#line 7707 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 7708 "" - *lnote = 10; + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 7709 "" + *lnote = 10; +#line 7710 "" } else if (bit_test(*iornq,7)) { /* Writing concatenation */ -#line 7710 "" +#line 7711 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7710 "" +#line 7711 "" i__2[0] = 1, a__1[0] = ch__1; -#line 7710 "" +#line 7711 "" i__2[1] = 6, a__1[1] = "Trille"; -#line 7710 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 7711 "" - *lnote = 7; + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 7712 "" + *lnote = 7; +#line 7713 "" } else { /* Writing concatenation */ -#line 7713 "" +#line 7714 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7713 "" +#line 7714 "" i__2[0] = 1, a__1[0] = ch__1; -#line 7713 "" +#line 7714 "" i__2[1] = 6, a__1[1] = "trille"; -#line 7713 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 7714 "" - *lnote = 7; + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 7715 "" + *lnote = 7; +#line 7716 "" } /* Writing concatenation */ -#line 7716 "" +#line 7717 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 7716 "" +#line 7717 "" i__3[1] = *lnoten, a__2[1] = noteq; -#line 7716 "" +#line 7717 "" i__3[2] = 1, a__2[2] = "{"; -#line 7716 "" - s_cat(notexq, a__2, i__3, &c__3, (ftnlen)79); #line 7717 "" + s_cat(notexq, a__2, i__3, &c__3, (ftnlen)79); +#line 7718 "" *lnote = *lnote + *lnoten + 1; /* Write trill duration to nearest tenth of a noteskip */ -#line 7721 "" +#line 7722 "" if (tronly) { /* Writing concatenation */ -#line 7722 "" +#line 7723 "" i__3[0] = *lnote, a__2[0] = notexq; -#line 7722 "" +#line 7723 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7722 "" +#line 7723 "" i__3[1] = 1, a__2[1] = ch__1; -#line 7722 "" +#line 7723 "" i__3[2] = 6, a__2[2] = "it tr}"; -#line 7722 "" - s_cat(notexq, a__2, i__3, &c__3, (ftnlen)79); #line 7723 "" - *lnote += 7; + s_cat(notexq, a__2, i__3, &c__3, (ftnlen)79); #line 7724 "" - return 0; + *lnote += 7; #line 7725 "" - } + return 0; #line 7726 "" - if (comtrill_1.xnsktr[itr - 1] < .95f) { + } #line 7727 "" - nfmt = 2; + if (comtrill_1.xnsktr[itr - 1] < .95f) { #line 7728 "" - } else if (comtrill_1.xnsktr[itr - 1] < 9.95f) { + nfmt = 2; #line 7729 "" - nfmt = 3; + } else if (comtrill_1.xnsktr[itr - 1] < 9.95f) { #line 7730 "" - } else { + nfmt = 3; #line 7731 "" - nfmt = 4; + } else { #line 7732 "" - } + nfmt = 4; #line 7733 "" + } +#line 7734 "" i__1 = *lnote; -#line 7733 "" +#line 7734 "" ici__1.icierr = 0; -#line 7733 "" +#line 7734 "" ici__1.icirnum = 1; -#line 7733 "" +#line 7734 "" ici__1.icirlen = *lnote + nfmt - i__1; -#line 7733 "" +#line 7734 "" ici__1.iciunit = notexq + i__1; /* Writing concatenation */ -#line 7733 "" +#line 7734 "" i__3[0] = 2, a__2[0] = "(f"; -#line 7733 "" +#line 7734 "" i__4 = nfmt + 48; -#line 7733 "" +#line 7734 "" chax_(ch__1, (ftnlen)1, &i__4); -#line 7733 "" +#line 7734 "" i__3[1] = 1, a__2[1] = ch__1; -#line 7733 "" +#line 7734 "" i__3[2] = 3, a__2[2] = ".1)"; -#line 7733 "" +#line 7734 "" ici__1.icifmt = (s_cat(ch__2, a__2, i__3, &c__3, (ftnlen)6), ch__2); -#line 7733 "" +#line 7734 "" s_wsfi(&ici__1); -#line 7733 "" +#line 7734 "" do_fio(&c__1, (char *)&comtrill_1.xnsktr[itr - 1], (ftnlen)sizeof(real)); -#line 7733 "" +#line 7734 "" e_wsfi(); -#line 7735 "" +#line 7736 "" *lnote += nfmt; /* Writing concatenation */ -#line 7736 "" +#line 7737 "" i__2[0] = *lnote, a__1[0] = notexq; -#line 7736 "" +#line 7737 "" i__2[1] = 1, a__1[1] = "}"; -#line 7736 "" - s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 7737 "" - ++(*lnote); + s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); #line 7738 "" + ++(*lnote); +#line 7739 "" return 0; } /* dotrill_ */ @@ -18854,41 +18856,41 @@ L2: /* Only called to end slur started in dograce. */ -#line 7750 "" - shift = ! (*stemup) && ! (*upslur); #line 7751 "" + shift = ! (*stemup) && ! (*upslur); +#line 7752 "" if (! shift) { /* No shift needed */ /* Writing concatenation */ -#line 7755 "" +#line 7756 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7755 "" +#line 7756 "" i__1[0] = 1, a__1[0] = ch__1; -#line 7755 "" +#line 7756 "" i__1[1] = 5, a__1[1] = "tslur"; -#line 7755 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 7756 "" - lnote = 6; + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 7757 "" + lnote = 6; +#line 7758 "" } else { /* Shift needed */ /* Writing concatenation */ -#line 7761 "" +#line 7762 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 7761 "" +#line 7762 "" i__1[0] = 1, a__1[0] = ch__1; -#line 7761 "" +#line 7762 "" i__1[1] = 2, a__1[1] = "ts"; -#line 7761 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 7762 "" - lnote = 3; + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 7763 "" + lnote = 3; +#line 7764 "" } /* if (ndxslur .lt. 10) then */ /* notexq = notexq(1:lnote)//chax(48+ndxslur) */ @@ -18902,105 +18904,105 @@ L2: /* Print 23-ndxslur */ /* if (11-ndxslur .lt. 10) then */ -#line 7776 "" +#line 7777 "" if (23 - *ndxslur < 10) { /* notexq = notexq(1:lnote)//chax(59-ndxslur) */ /* Writing concatenation */ -#line 7778 "" +#line 7779 "" i__1[0] = lnote, a__1[0] = notexq; -#line 7778 "" +#line 7779 "" i__2 = 71 - *ndxslur; -#line 7778 "" +#line 7779 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 7778 "" +#line 7779 "" i__1[1] = 1, a__1[1] = ch__1; -#line 7778 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 7779 "" - ++lnote; + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 7780 "" + ++lnote; +#line 7781 "" } else if (23 - *ndxslur < 20) { /* notexq = notexq(1:lnote)//'{1'//chax(49-ndxslur)//'}' */ /* Writing concatenation */ -#line 7782 "" +#line 7783 "" i__3[0] = lnote, a__2[0] = notexq; -#line 7782 "" +#line 7783 "" i__3[1] = 2, a__2[1] = "{1"; -#line 7782 "" +#line 7783 "" i__2 = 61 - *ndxslur; -#line 7782 "" +#line 7783 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 7782 "" +#line 7783 "" i__3[2] = 1, a__2[2] = ch__1; -#line 7782 "" +#line 7783 "" i__3[3] = 1, a__2[3] = "}"; -#line 7782 "" - s_cat(notexq, a__2, i__3, &c__4, (ftnlen)79); #line 7783 "" - lnote += 4; + s_cat(notexq, a__2, i__3, &c__4, (ftnlen)79); #line 7784 "" + lnote += 4; +#line 7785 "" } else { /* Writing concatenation */ -#line 7785 "" +#line 7786 "" i__3[0] = lnote, a__2[0] = notexq; -#line 7785 "" +#line 7786 "" i__3[1] = 2, a__2[1] = "{2"; -#line 7785 "" +#line 7786 "" i__2 = 51 - *ndxslur; -#line 7785 "" +#line 7786 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 7785 "" +#line 7786 "" i__3[2] = 1, a__2[2] = ch__1; -#line 7785 "" +#line 7786 "" i__3[3] = 1, a__2[3] = "}"; -#line 7785 "" - s_cat(notexq, a__2, i__3, &c__4, (ftnlen)79); #line 7786 "" - lnote += 4; + s_cat(notexq, a__2, i__3, &c__4, (ftnlen)79); #line 7787 "" - } + lnote += 4; #line 7788 "" + } +#line 7789 "" i__2 = *nolev + *iupdn + *ivoff; -#line 7788 "" +#line 7789 "" notefq_(noteq, &lnoten, &i__2, ncm, (ftnlen)8); /* Writing concatenation */ -#line 7789 "" +#line 7790 "" i__1[0] = lnote, a__1[0] = notexq; -#line 7789 "" +#line 7790 "" i__1[1] = lnoten, a__1[1] = noteq; -#line 7789 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 7790 "" - lnote += lnoten; + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 7791 "" - if (shift) { + lnote += lnoten; #line 7792 "" + if (shift) { +#line 7793 "" if (*fontslur) { /* Writing concatenation */ -#line 7793 "" +#line 7794 "" i__1[0] = lnote, a__1[0] = notexq; -#line 7793 "" +#line 7794 "" i__1[1] = 5, a__1[1] = "{-.6}"; -#line 7793 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 7794 "" + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); +#line 7795 "" } else { /* Writing concatenation */ -#line 7795 "" +#line 7796 "" i__1[0] = lnote, a__1[0] = notexq; -#line 7795 "" +#line 7796 "" i__1[1] = 5, a__1[1] = "{-.8}"; -#line 7795 "" - s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 7796 "" - } + s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); #line 7797 "" - lnote += 5; + } #line 7798 "" - } + lnote += 5; #line 7799 "" - addstr_(notexq, &lnote, soutq, lsout, (ftnlen)79, (ftnlen)80); + } #line 7800 "" + addstr_(notexq, &lnote, soutq, lsout, (ftnlen)79, (ftnlen)80); +#line 7801 "" return 0; } /* endslur_ */ @@ -19035,40 +19037,40 @@ L2: static integer ibarnop; /* Fortran I/O blocks */ - static cilist io___540 = { 0, 6, 0, 0, 0 }; - static cilist io___543 = { 0, 19, 0, "(i6)", 0 }; - static cilist io___547 = { 0, 6, 0, "(1x,a)", 0 }; - static cilist io___548 = { 0, 15, 0, "(a)", 0 }; - static cilist io___551 = { 0, 6, 0, 0, 0 }; - static cilist io___552 = { 0, 15, 0, "(a)", 0 }; + static cilist io___541 = { 0, 6, 0, 0, 0 }; + static cilist io___544 = { 0, 19, 0, "(i6)", 0 }; + static cilist io___548 = { 0, 6, 0, "(1x,a)", 0 }; + static cilist io___549 = { 0, 15, 0, "(a)", 0 }; + static cilist io___552 = { 0, 6, 0, 0, 0 }; + static cilist io___553 = { 0, 15, 0, "(a)", 0 }; -#line 7812 "" - if (*iccount <= 78) { #line 7813 "" - s_copy(outq, lineq, (ftnlen)78, (ftnlen)78); + if (*iccount <= 78) { #line 7814 "" - iposn = *iccount; + s_copy(outq, lineq, (ftnlen)78, (ftnlen)78); #line 7815 "" + iposn = *iccount; +#line 7816 "" } else { /* Writing concatenation */ -#line 7816 "" +#line 7817 "" i__1[0] = 4, a__1[0] = "... "; -#line 7816 "" +#line 7817 "" i__1[1] = 74, a__1[1] = lineq + 54; -#line 7816 "" - s_cat(outq, a__1, i__1, &c__2, (ftnlen)78); #line 7817 "" - iposn = *iccount - 50; + s_cat(outq, a__1, i__1, &c__2, (ftnlen)78); #line 7818 "" - } -#line 7819 "" - s_wsle(&io___540); + iposn = *iccount - 50; #line 7819 "" - e_wsle(); + } #line 7820 "" - ibarnop = *ibarno; + s_wsle(&io___541); +#line 7820 "" + e_wsle(); #line 7821 "" + ibarnop = *ibarno; +#line 7822 "" if (c1omget_1.linesinpmxmod == 0 || c1omget_1.nline > c1omget_1.line1pmxmod + c1omget_1.linesinpmxmod) { @@ -19076,196 +19078,167 @@ L2: /* nlinep = nline-linesinpmxmod */ /* Correct for comments not copied into buffer */ -#line 7828 "" +#line 7829 "" nlinep = truelinecount_1.linewcom[c1omget_1.nline - 1] - c1omget_1.linesinpmxmod; -#line 7829 "" +#line 7830 "" } else { /* Error is in include file */ -#line 7833 "" - ibarnop = 0; #line 7834 "" - nlinep = c1omget_1.nline - c1omget_1.line1pmxmod + 1; + ibarnop = 0; #line 7835 "" + nlinep = c1omget_1.nline - c1omget_1.line1pmxmod + 1; +#line 7836 "" printl_("ERROR in include file named above, description given below", (ftnlen)58); -#line 7837 "" - } #line 7838 "" + } +#line 7839 "" o__1.oerr = 0; -#line 7838 "" +#line 7839 "" o__1.ounit = 19; -#line 7838 "" +#line 7839 "" o__1.ofnmlen = 11; -#line 7838 "" +#line 7839 "" o__1.ofnm = "pmxaerr.dat"; -#line 7838 "" +#line 7839 "" o__1.orl = 0; -#line 7838 "" +#line 7839 "" o__1.osta = 0; -#line 7838 "" +#line 7839 "" o__1.oacc = 0; -#line 7838 "" +#line 7839 "" o__1.ofm = 0; -#line 7838 "" - o__1.oblnk = 0; -#line 7838 "" - f_open(&o__1); #line 7839 "" - s_wsfe(&io___543); + o__1.oblnk = 0; #line 7839 "" + f_open(&o__1); +#line 7840 "" + s_wsfe(&io___544); +#line 7840 "" do_fio(&c__1, (char *)&nlinep, (ftnlen)sizeof(integer)); -#line 7839 "" - e_wsfe(); #line 7840 "" + e_wsfe(); +#line 7841 "" cl__1.cerr = 0; -#line 7840 "" +#line 7841 "" cl__1.cunit = 19; -#line 7840 "" +#line 7841 "" cl__1.csta = 0; -#line 7840 "" +#line 7841 "" f_clos(&cl__1); /* Computing MAX */ -#line 7841 "" +#line 7842 "" r__1 = ibarnop + .1f; -#line 7841 "" +#line 7842 "" i__2 = 1, i__3 = (integer) (r_lg10(&r__1) + 1); -#line 7841 "" - ndigbn = max(i__2,i__3); #line 7842 "" + ndigbn = max(i__2,i__3); +#line 7843 "" r__1 = nlinep + .1f; -#line 7842 "" - ndignl = (integer) (r_lg10(&r__1) + 1); #line 7843 "" + ndignl = (integer) (r_lg10(&r__1) + 1); +#line 7844 "" lenmsg = i_indx(msgq, "!", msgq_len, (ftnlen)1) - 1; /* Split off msgq(..) since UNIX compilers don't allow concat substring!!! */ -#line 7847 "" +#line 7848 "" ci__1.cierr = 0; -#line 7847 "" +#line 7848 "" ci__1.ciunit = 6; /* Writing concatenation */ -#line 7847 "" +#line 7848 "" i__4[0] = 8, a__2[0] = "(/,a15,i"; -#line 7847 "" +#line 7848 "" i__2 = ndignl + 48; -#line 7847 "" +#line 7848 "" chax_(ch__2, (ftnlen)1, &i__2); -#line 7847 "" +#line 7848 "" i__4[1] = 1, a__2[1] = ch__2; -#line 7847 "" +#line 7848 "" i__4[2] = 5, a__2[2] = ",a6,i"; -#line 7847 "" +#line 7848 "" i__3 = ndigbn + 48; -#line 7847 "" +#line 7848 "" chax_(ch__3, (ftnlen)1, &i__3); -#line 7847 "" +#line 7848 "" i__4[3] = 1, a__2[3] = ch__3; -#line 7847 "" +#line 7848 "" i__4[4] = 3, a__2[4] = ",$)"; -#line 7847 "" +#line 7848 "" ci__1.cifmt = (s_cat(ch__1, a__2, i__4, &c__5, (ftnlen)18), ch__1); -#line 7847 "" +#line 7848 "" s_wsfe(&ci__1); -#line 7847 "" +#line 7848 "" do_fio(&c__1, " ERROR in line ", (ftnlen)15); -#line 7847 "" +#line 7848 "" do_fio(&c__1, (char *)&nlinep, (ftnlen)sizeof(integer)); -#line 7847 "" +#line 7848 "" do_fio(&c__1, ", bar ", (ftnlen)6); -#line 7847 "" +#line 7848 "" do_fio(&c__1, (char *)&ibarnop, (ftnlen)sizeof(integer)); -#line 7847 "" - e_wsfe(); -#line 7849 "" - s_wsfe(&io___547); -#line 7849 "" - do_fio(&c__1, msgq, lenmsg); -#line 7849 "" +#line 7848 "" e_wsfe(); #line 7850 "" - ci__1.cierr = 0; + s_wsfe(&io___548); +#line 7850 "" + do_fio(&c__1, msgq, lenmsg); #line 7850 "" + e_wsfe(); +#line 7851 "" + ci__1.cierr = 0; +#line 7851 "" ci__1.ciunit = 15; /* Writing concatenation */ -#line 7850 "" +#line 7851 "" i__4[0] = 8, a__2[0] = "(/,a15,i"; -#line 7850 "" +#line 7851 "" i__2 = ndignl + 48; -#line 7850 "" +#line 7851 "" chax_(ch__2, (ftnlen)1, &i__2); -#line 7850 "" +#line 7851 "" i__4[1] = 1, a__2[1] = ch__2; -#line 7850 "" +#line 7851 "" i__4[2] = 5, a__2[2] = ",a6,i"; -#line 7850 "" +#line 7851 "" i__3 = ndigbn + 48; -#line 7850 "" +#line 7851 "" chax_(ch__3, (ftnlen)1, &i__3); -#line 7850 "" +#line 7851 "" i__4[3] = 1, a__2[3] = ch__3; -#line 7850 "" +#line 7851 "" i__4[4] = 3, a__2[4] = ",$)"; -#line 7850 "" +#line 7851 "" ci__1.cifmt = (s_cat(ch__1, a__2, i__4, &c__5, (ftnlen)18), ch__1); -#line 7850 "" +#line 7851 "" s_wsfe(&ci__1); -#line 7850 "" +#line 7851 "" do_fio(&c__1, " ERROR in line ", (ftnlen)15); -#line 7850 "" +#line 7851 "" do_fio(&c__1, (char *)&nlinep, (ftnlen)sizeof(integer)); -#line 7850 "" +#line 7851 "" do_fio(&c__1, ", bar ", (ftnlen)6); -#line 7850 "" +#line 7851 "" do_fio(&c__1, (char *)&ibarnop, (ftnlen)sizeof(integer)); -#line 7850 "" +#line 7851 "" e_wsfe(); -#line 7852 "" - s_wsfe(&io___548); -#line 7852 "" +#line 7853 "" + s_wsfe(&io___549); +#line 7853 "" do_fio(&c__1, msgq, lenmsg); -#line 7852 "" - e_wsfe(); #line 7853 "" - i10 = iposn / 10; + e_wsfe(); #line 7854 "" - i1 = iposn - i10 * 10; -#line 7855 "" - ci__1.cierr = 0; -#line 7855 "" - ci__1.ciunit = 6; -/* Writing concatenation */ -#line 7855 "" - i__5[0] = 1, a__3[0] = "("; -#line 7855 "" - i__2 = i10 + 48; -#line 7855 "" - chax_(ch__2, (ftnlen)1, &i__2); -#line 7855 "" - i__5[1] = 1, a__3[1] = ch__2; -#line 7855 "" - i__3 = i1 + 48; -#line 7855 "" - chax_(ch__3, (ftnlen)1, &i__3); -#line 7855 "" - i__5[2] = 1, a__3[2] = ch__3; -#line 7855 "" - i__5[3] = 4, a__3[3] = "x,a)"; -#line 7855 "" - ci__1.cifmt = (s_cat(ch__4, a__3, i__5, &c__4, (ftnlen)7), ch__4); -#line 7855 "" - s_wsfe(&ci__1); -#line 7855 "" - do_fio(&c__1, "v", (ftnlen)1); + i10 = iposn / 10; #line 7855 "" - e_wsfe(); + i1 = iposn - i10 * 10; #line 7856 "" ci__1.cierr = 0; #line 7856 "" - ci__1.ciunit = 15; + ci__1.ciunit = 6; /* Writing concatenation */ #line 7856 "" i__5[0] = 1, a__3[0] = "("; @@ -19292,57 +19265,57 @@ L2: #line 7856 "" e_wsfe(); #line 7857 "" - s_wsle(&io___551); -#line 7857 "" - do_lio(&c__9, &c__1, outq, (ftnlen)78); -#line 7857 "" - e_wsle(); -#line 7858 "" - s_wsfe(&io___552); -/* Writing concatenation */ -#line 7858 "" - i__1[0] = 1, a__1[0] = " "; -#line 7858 "" - i__1[1] = 78, a__1[1] = outq; -#line 7858 "" - s_cat(ch__5, a__1, i__1, &c__2, (ftnlen)79); -#line 7858 "" - do_fio(&c__1, ch__5, (ftnlen)79); -#line 7858 "" - e_wsfe(); -#line 7859 "" ci__1.cierr = 0; -#line 7859 "" - ci__1.ciunit = 6; +#line 7857 "" + ci__1.ciunit = 15; /* Writing concatenation */ -#line 7859 "" +#line 7857 "" i__5[0] = 1, a__3[0] = "("; -#line 7859 "" +#line 7857 "" i__2 = i10 + 48; -#line 7859 "" +#line 7857 "" chax_(ch__2, (ftnlen)1, &i__2); -#line 7859 "" +#line 7857 "" i__5[1] = 1, a__3[1] = ch__2; -#line 7859 "" +#line 7857 "" i__3 = i1 + 48; -#line 7859 "" +#line 7857 "" chax_(ch__3, (ftnlen)1, &i__3); -#line 7859 "" +#line 7857 "" i__5[2] = 1, a__3[2] = ch__3; -#line 7859 "" +#line 7857 "" i__5[3] = 4, a__3[3] = "x,a)"; -#line 7859 "" +#line 7857 "" ci__1.cifmt = (s_cat(ch__4, a__3, i__5, &c__4, (ftnlen)7), ch__4); -#line 7859 "" +#line 7857 "" s_wsfe(&ci__1); +#line 7857 "" + do_fio(&c__1, "v", (ftnlen)1); +#line 7857 "" + e_wsfe(); +#line 7858 "" + s_wsle(&io___552); +#line 7858 "" + do_lio(&c__9, &c__1, outq, (ftnlen)78); +#line 7858 "" + e_wsle(); #line 7859 "" - do_fio(&c__1, "^", (ftnlen)1); + s_wsfe(&io___553); +/* Writing concatenation */ +#line 7859 "" + i__1[0] = 1, a__1[0] = " "; +#line 7859 "" + i__1[1] = 78, a__1[1] = outq; +#line 7859 "" + s_cat(ch__5, a__1, i__1, &c__2, (ftnlen)79); +#line 7859 "" + do_fio(&c__1, ch__5, (ftnlen)79); #line 7859 "" e_wsfe(); #line 7860 "" ci__1.cierr = 0; #line 7860 "" - ci__1.ciunit = 15; + ci__1.ciunit = 6; /* Writing concatenation */ #line 7860 "" i__5[0] = 1, a__3[0] = "("; @@ -19369,6 +19342,35 @@ L2: #line 7860 "" e_wsfe(); #line 7861 "" + ci__1.cierr = 0; +#line 7861 "" + ci__1.ciunit = 15; +/* Writing concatenation */ +#line 7861 "" + i__5[0] = 1, a__3[0] = "("; +#line 7861 "" + i__2 = i10 + 48; +#line 7861 "" + chax_(ch__2, (ftnlen)1, &i__2); +#line 7861 "" + i__5[1] = 1, a__3[1] = ch__2; +#line 7861 "" + i__3 = i1 + 48; +#line 7861 "" + chax_(ch__3, (ftnlen)1, &i__3); +#line 7861 "" + i__5[2] = 1, a__3[2] = ch__3; +#line 7861 "" + i__5[3] = 4, a__3[3] = "x,a)"; +#line 7861 "" + ci__1.cifmt = (s_cat(ch__4, a__3, i__5, &c__4, (ftnlen)7), ch__4); +#line 7861 "" + s_wsfe(&ci__1); +#line 7861 "" + do_fio(&c__1, "^", (ftnlen)1); +#line 7861 "" + e_wsfe(); +#line 7862 "" return 0; } /* errmsg_ */ @@ -19389,82 +19391,82 @@ L2: static integer itnd, nnsk, itprev; /* Fortran I/O blocks */ - static cilist io___557 = { 0, 6, 0, 0, 0 }; + static cilist io___558 = { 0, 6, 0, 0, 0 }; /* Get elemskips to previous note. Called only for graces, no xtups involved. */ -#line 7881 "" +#line 7882 "" /* Parameter adjustments */ -#line 7881 "" +#line 7882 "" --tstart; -#line 7881 "" +#line 7882 "" --space; -#line 7881 "" +#line 7882 "" -#line 7881 "" +#line 7882 "" /* Function Body */ -#line 7881 "" - itnd = i_nint(&all_1.to[*in - 1]); #line 7882 "" + itnd = i_nint(&all_1.to[*in - 1]); +#line 7883 "" if (*ip == 1 || itnd == *itrpt) { /* Start of bar or after rpt. */ -#line 7886 "" - *esk = *fbar; #line 7887 "" - return 0; + *esk = *fbar; #line 7888 "" - } else { + return 0; #line 7889 "" - *esk = 0.f; + } else { #line 7890 "" - itprev = itnd - all_1.nodur[*ivx + (*ip - 1) * 24 - 25]; + *esk = 0.f; #line 7891 "" - for (iib = *ib; iib >= 1; --iib) { + itprev = itnd - all_1.nodur[*ivx + (*ip - 1) * 24 - 25]; #line 7892 "" + for (iib = *ib; iib >= 1; --iib) { +#line 7893 "" if (tstart[iib] < itprev + comtol_1.tol) { /* This is the block */ -#line 7896 "" +#line 7897 "" r__1 = (real) (itnd - itprev) / space[iib]; -#line 7896 "" - nnsk = i_nint(&r__1); #line 7897 "" - *esk += nnsk * feon_(&space[iib]); + nnsk = i_nint(&r__1); #line 7898 "" - return 0; + *esk += nnsk * feon_(&space[iib]); #line 7899 "" - } else { + return 0; #line 7900 "" + } else { +#line 7901 "" r__1 = (itnd - tstart[iib]) / space[iib]; -#line 7900 "" - nnsk = i_nint(&r__1); #line 7901 "" - *esk += nnsk * feon_(&space[iib]); + nnsk = i_nint(&r__1); #line 7902 "" - itnd = i_nint(&tstart[iib]); + *esk += nnsk * feon_(&space[iib]); #line 7903 "" - } + itnd = i_nint(&tstart[iib]); #line 7904 "" + } +#line 7905 "" /* L1: */ -#line 7904 "" - } #line 7905 "" - } -#line 7906 "" - s_wsle(&io___557); + } #line 7906 "" + } +#line 7907 "" + s_wsle(&io___558); +#line 7907 "" do_lio(&c__9, &c__1, "Problem in eskb4. Send files to Dr. Don", (ftnlen) 40); -#line 7906 "" - e_wsle(); #line 7907 "" - s_stop("", (ftnlen)0); + e_wsle(); #line 7908 "" + s_stop("", (ftnlen)0); +#line 7909 "" return 0; } /* eskb4_ */ @@ -19476,9 +19478,9 @@ doublereal f1eon_(real *time) /* Builtin functions */ double sqrt(doublereal); -#line 7910 "" - ret_val = sqrt(*time / 2); #line 7911 "" + ret_val = sqrt(*time / 2); +#line 7912 "" return ret_val; } /* f1eon_ */ @@ -19491,13 +19493,13 @@ doublereal feon_(real *time) /* Builtin functions */ double sqrt(doublereal), pow_dd(doublereal *, doublereal *); -#line 7915 "" +#line 7916 "" d__1 = (doublereal) sqrt(*time / 2); -#line 7915 "" +#line 7916 "" d__2 = (doublereal) (1.f - comeon_1.eonk); -#line 7915 "" - ret_val = pow_dd(&d__1, &d__2) * comeon_1.ewmxk; #line 7916 "" + ret_val = pow_dd(&d__1, &d__2) * comeon_1.ewmxk; +#line 7917 "" return ret_val; } /* feon_ */ @@ -19570,7 +19572,7 @@ doublereal feon_(real *time) static integer masknow; /* Fortran I/O blocks */ - static cilist io___591 = { 0, 6, 0, 0, 0 }; + static cilist io___592 = { 0, 6, 0, 0, 0 }; @@ -19579,425 +19581,425 @@ doublereal feon_(real *time) /* integer numbms(nm),ipr(48),nip1(0:47),nip2(0:47),mapfb(16), */ /* * itr(48),nodue(48) */ /* logical short(48),eqonly */ -#line 7946 "" +#line 7947 "" /* Parameter adjustments */ -#line 7946 "" +#line 7947 "" --mapfb; -#line 7946 "" +#line 7947 "" --numbms; -#line 7946 "" +#line 7947 "" -#line 7946 "" +#line 7947 "" /* Function Body */ -#line 7967 "" - ip = 0; #line 7968 "" - nreal = 0; + ip = 0; #line 7969 "" - itnow = 0; + nreal = 0; #line 7970 "" -L1: + itnow = 0; #line 7971 "" - ++ip; +L1: #line 7972 "" + ++ip; +#line 7973 "" if (ip > all_1.nn[commvl_1.ivx - 1]) { -#line 7972 "" +#line 7973 "" goto L9; -#line 7972 "" - } #line 7973 "" + } +#line 7974 "" L11: -#line 7973 "" +#line 7974 "" if (all_1.nodur[commvl_1.ivx + ip * 24 - 25] == 0) { /* Ignore all xtup notes except the last, the one with nodur > 0 . */ /* Xtups are irrelevant here since they are already all in forced beams. */ /* Will update itnow by nodur at the END of this loop */ -#line 7979 "" - ++ip; #line 7980 "" - goto L11; + ++ip; #line 7981 "" - } + goto L11; #line 7982 "" - ++nreal; + } #line 7983 "" - nodue[nreal - 1] = all_1.nodur[commvl_1.ivx + ip * 24 - 25]; + ++nreal; #line 7984 "" + nodue[nreal - 1] = all_1.nodur[commvl_1.ivx + ip * 24 - 25]; +#line 7985 "" short__[nreal - 1] = nodue[nreal - 1] < 16 && ! bit_test(all_1.irest[ commvl_1.ivx + ip * 24 - 25],0) && ! bit_test(all_1.islur[ commvl_1.ivx + ip * 24 - 25],18); /* Rule out notes that have 'alone'-flag set */ -#line 7990 "" - ipr[nreal - 1] = ip; #line 7991 "" - itr[nreal - 1] = itnow; + ipr[nreal - 1] = ip; #line 7992 "" + itr[nreal - 1] = itnow; +#line 7993 "" if (nodue[nreal - 1] == 1) { /* 64th gap */ -#line 7996 "" +#line 7997 "" if (itnow % 2 == 0) { /* Start of 32nd gap, lump with following note */ -#line 8000 "" - ++ip; #line 8001 "" - nodue[nreal - 1] = all_1.nodur[commvl_1.ivx + ip * 24 - 25] + 1; + ++ip; #line 8002 "" - itnow += nodue[nreal - 1]; + nodue[nreal - 1] = all_1.nodur[commvl_1.ivx + ip * 24 - 25] + 1; #line 8003 "" + itnow += nodue[nreal - 1]; +#line 8004 "" } else { /* End of 32nd gap, lump with preceeding note */ -#line 8007 "" - --nreal; #line 8008 "" - ++nodue[nreal - 1]; + --nreal; #line 8009 "" - ++itnow; + ++nodue[nreal - 1]; #line 8010 "" - } + ++itnow; #line 8011 "" - } else { + } #line 8012 "" - itnow += all_1.nodur[commvl_1.ivx + ip * 24 - 25]; + } else { #line 8013 "" - } + itnow += all_1.nodur[commvl_1.ivx + ip * 24 - 25]; #line 8014 "" - goto L1; + } #line 8015 "" -L9: + goto L1; #line 8016 "" - ir1 = 1; +L9: #line 8017 "" - itseg = all_1.lenbar / *ibmrep; + ir1 = 1; #line 8018 "" + itseg = all_1.lenbar / *ibmrep; +#line 8019 "" i__1 = *ibmrep; -#line 8018 "" +#line 8019 "" for (irep = 1; irep <= i__1; ++irep) { /* Set bitmaps for all shorts neighbored by a short. Each bit represents a */ /* span of 32nd note. maps, mapm, mape record start, full duration, and end */ /* of consecutive span of beamable (<1/4) notes. */ -#line 8024 "" - maps = 0; #line 8025 "" - mapm = 0; + maps = 0; #line 8026 "" - mape = 0; + mapm = 0; #line 8027 "" - itend = itseg * irep; + mape = 0; #line 8028 "" - itoff = itend - itseg; + itend = itseg * irep; #line 8029 "" + itoff = itend - itseg; +#line 8030 "" i__2 = nreal; -#line 8029 "" - for (ir = ir1; ir <= i__2; ++ir) { #line 8030 "" - it2 = itr[ir - 1] + nodue[ir - 1] - 2; + for (ir = ir1; ir <= i__2; ++ir) { #line 8031 "" - if (it2 >= itend) { + it2 = itr[ir - 1] + nodue[ir - 1] - 2; #line 8032 "" - ir1 = ir; + if (it2 >= itend) { #line 8033 "" - goto L14; + ir1 = ir; #line 8034 "" + goto L14; +#line 8035 "" } /* if (short(ir).and.((ir.gt.1.and.short(ir-1)).or.(ir.lt.nreal */ /* Computing MAX */ -#line 8036 "" +#line 8037 "" i__3 = ir - 1; -#line 8036 "" +#line 8037 "" if (short__[ir - 1] && (ir > 1 && short__[max(i__3,1) - 1] || ir < nreal && short__[ir])) { -#line 8038 "" - ib1 = (itr[ir - 1] - itoff) / 2; #line 8039 "" - ib2 = (it2 - itoff) / 2; + ib1 = (itr[ir - 1] - itoff) / 2; #line 8040 "" + ib2 = (it2 - itoff) / 2; +#line 8041 "" if (max(ib1,ib2) > 47 || ir > 48 || min(ib1,ib2) < 0) { -#line 8040 "" +#line 8041 "" return 0; -#line 8040 "" +#line 8041 "" } /* Must have an odd number obe beats in a long bar. Auto-beam won't work */ -#line 8045 "" - nip1[ib1] = ipr[ir - 1]; #line 8046 "" + nip1[ib1] = ipr[ir - 1]; +#line 8047 "" nip2[ib2] = ipr[ir - 1]; /* nip1,2(ib) = 0 unless a real note starts,ends on bit ib; then = ip */ -#line 8050 "" - maps = bit_set(maps,ib1); #line 8051 "" - mape = bit_set(mape,ib2); + maps = bit_set(maps,ib1); #line 8052 "" + mape = bit_set(mape,ib2); +#line 8053 "" i__3 = ib2; -#line 8052 "" - for (ib = ib1; ib <= i__3; ++ib) { #line 8053 "" - mapm = bit_set(mapm,ib); + for (ib = ib1; ib <= i__3; ++ib) { #line 8054 "" + mapm = bit_set(mapm,ib); +#line 8055 "" /* L3: */ -#line 8054 "" - } #line 8055 "" - } + } #line 8056 "" + } +#line 8057 "" /* L2: */ -#line 8056 "" - } #line 8057 "" -L14: + } #line 8058 "" +L14: +#line 8059 "" if (mapm == 0) { -#line 8058 "" +#line 8059 "" goto L13; -#line 8058 "" +#line 8059 "" } /* Zero out bits from forced beams */ -#line 8062 "" - maps &= ~ mapfb[irep]; #line 8063 "" - mapm &= ~ mapfb[irep]; + maps &= ~ mapfb[irep]; #line 8064 "" + mapm &= ~ mapfb[irep]; +#line 8065 "" mape &= ~ mapfb[irep]; /* Compare map with template. */ -#line 8068 "" +#line 8069 "" i__2 = nummask[combeam_1.ibmtyp - 1]; -#line 8068 "" - for (it = 1; it <= i__2; ++it) { #line 8069 "" - masknow = mask[it + combeam_1.ibmtyp * 49 - 50]; + for (it = 1; it <= i__2; ++it) { #line 8070 "" + masknow = mask[it + combeam_1.ibmtyp * 49 - 50]; +#line 8071 "" if ((masknow & mapm) == masknow) { /* Find least significant bit in the mask to check start time */ -#line 8074 "" - mtemp = masknow; #line 8075 "" - maskm = masknow; + mtemp = masknow; #line 8076 "" - for (is1 = 0; is1 <= 47; ++is1) { + maskm = masknow; #line 8077 "" + for (is1 = 0; is1 <= 47; ++is1) { +#line 8078 "" if ((1 & mtemp) == 1) { -#line 8077 "" +#line 8078 "" goto L6; -#line 8077 "" - } #line 8078 "" - mtemp = lbit_shift(mtemp, (ftnlen)-1); + } #line 8079 "" + mtemp = lbit_shift(mtemp, (ftnlen)-1); +#line 8080 "" /* L5: */ -#line 8079 "" - } #line 8080 "" -L6: + } #line 8081 "" +L6: +#line 8082 "" if ((lbit_shift((ftnlen)1, is1) & maps) == 0) { -#line 8081 "" +#line 8082 "" goto L4; -#line 8081 "" +#line 8082 "" } /* is1 is the bit where the beam starts. Continue shifting to */ /* find most significant bit in the mask to check ending time */ -#line 8086 "" - for (is2 = is1; is2 <= 47; ++is2) { #line 8087 "" - mtemp = lbit_shift(mtemp, (ftnlen)-1); + for (is2 = is1; is2 <= 47; ++is2) { #line 8088 "" + mtemp = lbit_shift(mtemp, (ftnlen)-1); +#line 8089 "" if ((1 & ~ mtemp) == 1) { -#line 8088 "" +#line 8089 "" goto L8; -#line 8088 "" - } #line 8089 "" + } +#line 8090 "" /* L7: */ -#line 8089 "" - } #line 8090 "" + } +#line 8091 "" L8: /* is2 is now the bit on which the beam ends. */ -#line 8094 "" +#line 8095 "" if ((lbit_shift((ftnlen)1, is2) & mape) == 0) { -#line 8094 "" +#line 8095 "" goto L4; -#line 8094 "" +#line 8095 "" } /* Did we pick out a single note from the middle of a longer sequence? */ -#line 8098 "" +#line 8099 "" if (nip1[is1] == nip2[is2]) { -#line 8098 "" +#line 8099 "" goto L4; -#line 8098 "" +#line 8099 "" } /* We almost have a beam. Check equality of notes if needed. */ -#line 8102 "" - if (eqonly[it + combeam_1.ibmtyp * 49 - 50]) { #line 8103 "" + if (eqonly[it + combeam_1.ibmtyp * 49 - 50]) { +#line 8104 "" i__3 = nip2[is2]; -#line 8103 "" - for (ip = nip1[is1]; ip <= i__3; ++ip) { #line 8104 "" + for (ip = nip1[is1]; ip <= i__3; ++ip) { +#line 8105 "" if (all_1.nodur[commvl_1.ivx + ip * 24 - 25] != 8) { /* There is a non-1/8th note in this beam. Exit if not 2 quarters */ -#line 8108 "" +#line 8109 "" if (is2 - is1 != 15) { -#line 8108 "" +#line 8109 "" goto L4; -#line 8108 "" +#line 8109 "" } /* Beam is 2 quarters long. Check if can split in half. */ -#line 8112 "" - ithalf = 0; #line 8113 "" + ithalf = 0; +#line 8114 "" i__4 = nip2[is2]; -#line 8113 "" - for (iip = nip1[is1]; iip <= i__4; ++iip) { #line 8114 "" + for (iip = nip1[is1]; iip <= i__4; ++iip) { +#line 8115 "" ithalf += all_1.nodur[commvl_1.ivx + iip * 24 - 25]; -#line 8115 "" - if (ithalf > 16) { -#line 8115 "" - goto L4; -#line 8115 "" - } #line 8116 "" - if (ithalf == 16) { + if (ithalf > 16) { #line 8116 "" - goto L21; + goto L4; #line 8116 "" } #line 8117 "" -/* L20: */ + if (ithalf == 16) { #line 8117 "" - } + goto L21; +#line 8117 "" + } #line 8118 "" - s_wsle(&io___591); +/* L20: */ #line 8118 "" + } +#line 8119 "" + s_wsle(&io___592); +#line 8119 "" do_lio(&c__9, &c__1, "Problem in findbeam, pleas"\ "e call Dr. Don", (ftnlen)40); -#line 8118 "" - e_wsle(); #line 8119 "" - goto L4; + e_wsle(); #line 8120 "" + goto L4; +#line 8121 "" L21: /* Otherwise, split in half by keeping only the first half. Other half will */ /* be picked up later, assuming masks are listed longest first. */ -#line 8125 "" +#line 8126 "" is2 = is1 + 7; /* Reset maskm (since only used part of mask), used later to zero out */ /* bits that contain beams */ -#line 8130 "" - maskm = 0; #line 8131 "" + maskm = 0; +#line 8132 "" i__4 = is2; -#line 8131 "" - for (is = is1; is <= i__4; ++is) { #line 8132 "" - maskm = bit_set(maskm,is); + for (is = is1; is <= i__4; ++is) { #line 8133 "" + maskm = bit_set(maskm,is); +#line 8134 "" /* L15: */ -#line 8133 "" - } #line 8134 "" - goto L16; + } #line 8135 "" - } + goto L16; #line 8136 "" + } +#line 8137 "" /* L10: */ -#line 8136 "" - } #line 8137 "" - } + } #line 8138 "" + } +#line 8139 "" L16: /* This is a beam. If last "effective" ends on odd 64th, add 1 more */ /* if (abs(mod(to(iand(255,ipl(ivx,nip2(is2)))) */ /* * +nodur(ivx,nip2(is2)),2.)) .gt. tol) then */ -#line 8144 "" +#line 8145 "" r__2 = all_1.to[comipl2_1.ipl2[commvl_1.ivx + nip2[is2] * 24 - 25] - 1] + all_1.nodur[commvl_1.ivx + nip2[is2] * 24 - 25] + comtol_1.tol * .5f; -#line 8144 "" +#line 8145 "" if ((r__1 = r_mod(&r__2, &c_b1901), dabs(r__1)) > comtol_1.tol) { -#line 8146 "" - ++nip2[is2]; #line 8147 "" - } + ++nip2[is2]; #line 8148 "" - ++numbms[commvl_1.ivx]; + } #line 8149 "" - numnew = numbms[commvl_1.ivx]; + ++numbms[commvl_1.ivx]; #line 8150 "" + numnew = numbms[commvl_1.ivx]; +#line 8151 "" logbeam_(&numnew, &nip1[is1], &nip2[is2]); /* Zero out the appropriate bits so these notes don't get used again */ -#line 8154 "" - mapm &= ~ maskm; #line 8155 "" + mapm &= ~ maskm; +#line 8156 "" if (mapm == 0) { -#line 8155 "" +#line 8156 "" goto L13; -#line 8155 "" - } #line 8156 "" - maps &= ~ maskm; + } #line 8157 "" - mape &= ~ maskm; + maps &= ~ maskm; #line 8158 "" - } + mape &= ~ maskm; #line 8159 "" + } +#line 8160 "" L4: -#line 8159 "" +#line 8160 "" ; -#line 8159 "" - } #line 8160 "" + } +#line 8161 "" L13: -#line 8160 "" +#line 8161 "" ; -#line 8160 "" - } #line 8161 "" + } +#line 8162 "" return 0; } /* findbeam_ */ @@ -20030,83 +20032,83 @@ L13: /* logical gotclef */ /* * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) */ -#line 8176 "" - comeon_1.eonk = *eonk0; #line 8177 "" - niter = 0; + comeon_1.eonk = *eonk0; #line 8178 "" -L1: + niter = 0; #line 8179 "" +L1: +#line 8180 "" d__1 = (doublereal) f1eon_(dtmax); -#line 8179 "" +#line 8180 "" d__2 = (doublereal) comeon_1.eonk; -#line 8179 "" - comeon_1.ewmxk = pow_dd(&d__1, &d__2); #line 8180 "" - ++niter; + comeon_1.ewmxk = pow_dd(&d__1, &d__2); #line 8181 "" - esum = 0.f; + ++niter; #line 8182 "" - desum = 0.f; + esum = 0.f; #line 8183 "" + desum = 0.f; +#line 8184 "" i__1 = *nptr2; -#line 8183 "" - for (iptr = *nptr1; iptr <= i__1; ++iptr) { #line 8184 "" - targ = c1omnotes_1.durb[iptr - 1] / c1omnotes_1.sqzb[iptr - 1]; + for (iptr = *nptr1; iptr <= i__1; ++iptr) { #line 8185 "" + targ = c1omnotes_1.durb[iptr - 1] / c1omnotes_1.sqzb[iptr - 1]; +#line 8186 "" esum += c1omnotes_1.nnpd[iptr - 1] * c1omnotes_1.sqzb[iptr - 1] * feon_(&targ); -#line 8186 "" +#line 8187 "" d__1 = (doublereal) (*dtmax / targ); -#line 8186 "" +#line 8187 "" d__2 = (doublereal) comeon_1.eonk; -#line 8186 "" - detarg = sqrt(targ / 2 * pow_dd(&d__1, &d__2)) * log(*dtmax / targ); #line 8187 "" + detarg = sqrt(targ / 2 * pow_dd(&d__1, &d__2)) * log(*dtmax / targ); +#line 8188 "" desum += c1omnotes_1.nnpd[iptr - 1] * c1omnotes_1.sqzb[iptr - 1] * detarg; -#line 8188 "" +#line 8189 "" /* L2: */ -#line 8188 "" - } #line 8189 "" - f = *wovera * feon_(dtmin) - *xelsk - esum; + } #line 8190 "" + f = *wovera * feon_(dtmin) - *xelsk - esum; +#line 8191 "" d__1 = (doublereal) (*dtmax / *dtmin); -#line 8190 "" +#line 8191 "" d__2 = (doublereal) comeon_1.eonk; -#line 8190 "" +#line 8191 "" fp = *wovera * sqrt(*dtmin / 2 * pow_dd(&d__1, &d__2)) * log(*dtmax / * dtmin) - desum; -#line 8192 "" +#line 8193 "" if (dabs(fp) < comtol_1.tol || (r__1 = comeon_1.eonk - .5f, dabs(r__1)) > .5f || niter > 100) { -#line 8193 "" +#line 8194 "" printl_("Error in findeonk. Please send source to Dr. Don", (ftnlen) 49); -#line 8195 "" - comeon_1.eonk = 0.f; #line 8196 "" - comeon_1.ewmxk = 1.f; + comeon_1.eonk = 0.f; #line 8197 "" - return 0; + comeon_1.ewmxk = 1.f; #line 8198 "" - } + return 0; #line 8199 "" - dsoln = -f / fp; + } #line 8200 "" + dsoln = -f / fp; +#line 8201 "" if (dabs(dsoln) < comtol_1.tol * .1f) { -#line 8200 "" +#line 8201 "" return 0; -#line 8200 "" +#line 8201 "" } /* Not converged yet, try again */ -#line 8204 "" - comeon_1.eonk += dsoln; #line 8205 "" + comeon_1.eonk += dsoln; +#line 8206 "" goto L1; } /* findeonk_ */ @@ -20126,143 +20128,143 @@ doublereal fnote_(integer *nodur, integer *ivx, integer *ip, integer *nacc) extern /* Subroutine */ int printl_(char *, ftnlen); /* Fortran I/O blocks */ - static cilist io___607 = { 0, 6, 0, 0, 0 }; static cilist io___608 = { 0, 6, 0, 0, 0 }; + static cilist io___609 = { 0, 6, 0, 0, 0 }; /* This return the real duration of a note */ -#line 8214 "" +#line 8215 "" /* Parameter adjustments */ -#line 8214 "" +#line 8215 "" nacc -= 25; -#line 8214 "" +#line 8215 "" nodur -= 25; -#line 8214 "" +#line 8215 "" -#line 8214 "" +#line 8215 "" /* Function Body */ -#line 8214 "" - ipback = *ip; #line 8215 "" - if (nodur[*ivx + *ip * 24] > 0) { + ipback = *ip; #line 8216 "" + if (nodur[*ivx + *ip * 24] > 0) { +#line 8217 "" if (*ip > 1) { /* Check if this is last note of xtup */ -#line 8220 "" - if (nodur[*ivx + (*ip - 1) * 24] == 0) { #line 8221 "" - ipback = *ip - 1; + if (nodur[*ivx + (*ip - 1) * 24] == 0) { #line 8222 "" - goto L2; + ipback = *ip - 1; #line 8223 "" - } + goto L2; #line 8224 "" - } + } #line 8225 "" - ret_val = (real) nodur[*ivx + *ip * 24]; + } #line 8226 "" - return ret_val; + ret_val = (real) nodur[*ivx + *ip * 24]; #line 8227 "" - } + return ret_val; #line 8228 "" + } +#line 8229 "" L2: /* Count back to prior non zero note. Start at ip to avoid neg index if ip=1. */ /* Count how many doubled xtups notes there are from ip-1 to first note. */ -#line 8233 "" - ndoub = 0; #line 8234 "" - for (ip1m1 = ipback; ip1m1 >= 1; --ip1m1) { + ndoub = 0; #line 8235 "" + for (ip1m1 = ipback; ip1m1 >= 1; --ip1m1) { +#line 8236 "" if (nodur[*ivx + ip1m1 * 24] > 0) { -#line 8235 "" +#line 8236 "" goto L4; -#line 8235 "" - } #line 8236 "" + } +#line 8237 "" if (ip1m1 < *ip && bit_test(nacc[*ivx + ip1m1 * 24],18)) { -#line 8236 "" +#line 8237 "" ++ndoub; -#line 8236 "" - } #line 8237 "" + } +#line 8238 "" /* L1: */ -#line 8237 "" - } #line 8238 "" + } +#line 8239 "" L4: /* count forward to next non-0 nodur. Start at ip in case last note of xtup. */ -#line 8242 "" +#line 8243 "" for (iip = *ip; iip <= 200; ++iip) { /* Count doubled xtup notes from ip to end. */ -#line 8246 "" +#line 8247 "" if (bit_test(nacc[*ivx + iip * 24],18)) { -#line 8246 "" +#line 8247 "" ++ndoub; -#line 8246 "" - } #line 8247 "" + } +#line 8248 "" if (nodur[*ivx + iip * 24] > 0) { /* fnote = nodur(ivx,iip)/float(iip-ip1m1) */ -#line 8249 "" - ret_val = nodur[*ivx + iip * 24] / (real) (iip - ip1m1 + ndoub); #line 8250 "" - if (bit_test(nacc[*ivx + *ip * 24],18)) { + ret_val = nodur[*ivx + iip * 24] / (real) (iip - ip1m1 + ndoub); #line 8251 "" - ret_val *= 2; + if (bit_test(nacc[*ivx + *ip * 24],18)) { #line 8252 "" - } else if (bit_test(nacc[*ivx + *ip * 24],27)) { + ret_val *= 2; #line 8253 "" - ret_val *= 1.5f; + } else if (bit_test(nacc[*ivx + *ip * 24],27)) { #line 8254 "" - } else if (*ip > 1) { + ret_val *= 1.5f; #line 8255 "" + } else if (*ip > 1) { +#line 8256 "" if (bit_test(nacc[*ivx + (*ip - 1) * 24],27)) { -#line 8255 "" +#line 8256 "" ret_val *= .5f; -#line 8255 "" - } #line 8256 "" - } + } #line 8257 "" - return ret_val; + } #line 8258 "" - } -#line 8259 "" -/* L3: */ + return ret_val; #line 8259 "" - } + } #line 8260 "" - s_wsle(&io___607); +/* L3: */ #line 8260 "" + } +#line 8261 "" + s_wsle(&io___608); +#line 8261 "" do_lio(&c__9, &c__1, " ", (ftnlen)1); -#line 8260 "" - e_wsle(); #line 8261 "" + e_wsle(); +#line 8262 "" printl_("Probable misplaced barline or incorrect meter, stopping", ( ftnlen)55); -#line 8263 "" - s_wsle(&io___608); -#line 8263 "" +#line 8264 "" + s_wsle(&io___609); +#line 8264 "" do_lio(&c__9, &c__1, "ivx,ip:", (ftnlen)7); -#line 8263 "" +#line 8264 "" do_lio(&c__3, &c__1, (char *)&(*ivx), (ftnlen)sizeof(integer)); -#line 8263 "" +#line 8264 "" do_lio(&c__3, &c__1, (char *)&(*ip), (ftnlen)sizeof(integer)); -#line 8263 "" - e_wsle(); #line 8264 "" - stop1_(); + e_wsle(); #line 8265 "" + stop1_(); +#line 8266 "" return ret_val; } /* fnote_ */ @@ -20283,50 +20285,50 @@ L4: /* Gets the next character out of lineq*128. If pointer iccount=128 on entry, */ /* then reads in a new line. Resets iccount. Ends program if no more input. */ -#line 8279 "" - if (*iccount == 128) { #line 8280 "" - read10_(lineq, &c1omget_1.lastchar, (ftnlen)128); + if (*iccount == 128) { #line 8281 "" + read10_(lineq, &c1omget_1.lastchar, (ftnlen)128); +#line 8282 "" if (c1omget_1.lastchar) { -#line 8281 "" +#line 8282 "" return 0; -#line 8281 "" - } #line 8282 "" - if (! commac_1.endmac) { + } #line 8283 "" - *iccount = 0; + if (! commac_1.endmac) { #line 8284 "" + *iccount = 0; +#line 8285 "" if (! commac_1.mplay) { -#line 8284 "" +#line 8285 "" ++c1omget_1.nline; -#line 8284 "" - } #line 8285 "" - } else { + } #line 8286 "" - commac_1.endmac = FALSE_; + } else { #line 8287 "" - *iccount = commac_1.icchold; + commac_1.endmac = FALSE_; #line 8288 "" - s_copy(lineq, commac_1.lnholdq, (ftnlen)128, (ftnlen)128); + *iccount = commac_1.icchold; #line 8289 "" - } + s_copy(lineq, commac_1.lnholdq, (ftnlen)128, (ftnlen)128); #line 8290 "" - if (commac_1.mrecord) { + } #line 8291 "" + if (commac_1.mrecord) { +#line 8292 "" m1rec1_(lineq, iccount, &ibarcnt, &ibaroff, &nbars, &ndxm, ( ftnlen)128); -#line 8292 "" - } #line 8293 "" - } + } #line 8294 "" - ++(*iccount); + } #line 8295 "" - *(unsigned char *)charq = *(unsigned char *)&lineq[*iccount - 1]; + ++(*iccount); #line 8296 "" + *(unsigned char *)charq = *(unsigned char *)&lineq[*iccount - 1]; +#line 8297 "" return 0; } /* g1etchar_ */ @@ -20417,4652 +20419,4651 @@ L4: static integer lvoltxt; /* Fortran I/O blocks */ - static cilist io___620 = { 0, 6, 0, 0, 0 }; static cilist io___621 = { 0, 6, 0, 0, 0 }; static cilist io___622 = { 0, 6, 0, 0, 0 }; static cilist io___623 = { 0, 6, 0, 0, 0 }; - static cilist io___624 = { 0, 15, 0, "(/a)", 0 }; - static cilist io___625 = { 0, 15, 0, "(a11,2x,i3)", 0 }; - static cilist io___626 = { 0, 15, 0, 0, 0 }; - static cilist io___627 = { 0, 6, 0, 0, 0 }; - static cilist io___635 = { 0, 6, 0, 0, 0 }; + static cilist io___624 = { 0, 6, 0, 0, 0 }; + static cilist io___625 = { 0, 15, 0, "(/a)", 0 }; + static cilist io___626 = { 0, 15, 0, "(a11,2x,i3)", 0 }; + static cilist io___627 = { 0, 15, 0, 0, 0 }; + static cilist io___628 = { 0, 6, 0, 0, 0 }; static cilist io___636 = { 0, 6, 0, 0, 0 }; static cilist io___637 = { 0, 6, 0, 0, 0 }; - static cilist io___642 = { 0, 6, 0, 0, 0 }; + static cilist io___638 = { 0, 6, 0, 0, 0 }; static cilist io___643 = { 0, 6, 0, 0, 0 }; static cilist io___644 = { 0, 6, 0, 0, 0 }; - static cilist io___658 = { 0, 6, 0, 0, 0 }; - static cilist io___661 = { 0, 6, 0, 0, 0 }; + static cilist io___645 = { 0, 6, 0, 0, 0 }; + static cilist io___659 = { 0, 6, 0, 0, 0 }; static cilist io___662 = { 0, 6, 0, 0, 0 }; static cilist io___663 = { 0, 6, 0, 0, 0 }; - static cilist io___666 = { 0, 6, 0, 0, 0 }; - static cilist io___672 = { 0, 6, 0, 0, 0 }; + static cilist io___664 = { 0, 6, 0, 0, 0 }; + static cilist io___667 = { 0, 6, 0, 0, 0 }; static cilist io___673 = { 0, 6, 0, 0, 0 }; - static cilist io___674 = { 0, 15, 0, "(/,a)", 0 }; - static cilist io___675 = { 0, 6, 0, 0, 0 }; + static cilist io___674 = { 0, 6, 0, 0, 0 }; + static cilist io___675 = { 0, 15, 0, "(/,a)", 0 }; static cilist io___676 = { 0, 6, 0, 0, 0 }; - static cilist io___677 = { 0, 15, 0, "(a)", 0 }; + static cilist io___677 = { 0, 6, 0, 0, 0 }; static cilist io___678 = { 0, 15, 0, "(a)", 0 }; - static cilist io___683 = { 0, 6, 0, 0, 0 }; - static cilist io___684 = { 0, 15, 0, "(a)", 0 }; - static cilist io___688 = { 0, 6, 0, 0, 0 }; + static cilist io___679 = { 0, 15, 0, "(a)", 0 }; + static cilist io___684 = { 0, 6, 0, 0, 0 }; + static cilist io___685 = { 0, 15, 0, "(a)", 0 }; static cilist io___689 = { 0, 6, 0, 0, 0 }; static cilist io___690 = { 0, 6, 0, 0, 0 }; - static cilist io___691 = { 0, 6, 0, "(1x,a21,i3,a23)", 0 }; - static cilist io___695 = { 0, 6, 0, 0, 0 }; + static cilist io___691 = { 0, 6, 0, 0, 0 }; + static cilist io___692 = { 0, 6, 0, "(1x,a21,i3,a23)", 0 }; static cilist io___696 = { 0, 6, 0, 0, 0 }; - static cilist io___697 = { 0, 5, 0, "(a)", 0 }; - static cilist io___701 = { 0, 6, 0, 0, 0 }; + static cilist io___697 = { 0, 6, 0, 0, 0 }; + static cilist io___698 = { 0, 5, 0, "(a)", 0 }; static cilist io___702 = { 0, 6, 0, 0, 0 }; static cilist io___703 = { 0, 6, 0, 0, 0 }; /* * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) */ -#line 8370 "" - cdot = FALSE_; #line 8371 "" - twotrem = FALSE_; + cdot = FALSE_; #line 8372 "" + twotrem = FALSE_; +#line 8373 "" L1: -#line 8372 "" - g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 8373 "" + g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); +#line 8374 "" if (*(unsigned char *)charq != ' ') { -#line 8373 "" +#line 8374 "" *(unsigned char *)charlq = *(unsigned char *)charq; -#line 8373 "" - } #line 8374 "" - if (c1omget_1.lastchar) { + } #line 8375 "" - if (i_indx("/%", charlq, (ftnlen)2, (ftnlen)1) == 0) { -#line 8376 "" - s_wsle(&io___620); + if (c1omget_1.lastchar) { #line 8376 "" - e_wsle(); + if (i_indx("/%", charlq, (ftnlen)2, (ftnlen)1) == 0) { #line 8377 "" s_wsle(&io___621); -#line 8377 "" - do_lio(&c__9, &c__1, "WARNING:", (ftnlen)8); #line 8377 "" e_wsle(); #line 8378 "" s_wsle(&io___622); #line 8378 "" - do_lio(&c__9, &c__1, "Last non-blank character is \"", (ftnlen)29) - ; -#line 8378 "" - do_lio(&c__9, &c__1, charlq, (ftnlen)1); -#line 8378 "" - do_lio(&c__9, &c__1, "\", not \"/,%\"", (ftnlen)12); + do_lio(&c__9, &c__1, "WARNING:", (ftnlen)8); #line 8378 "" e_wsle(); #line 8379 "" s_wsle(&io___623); #line 8379 "" - do_lio(&c__9, &c__1, "ASCII code:", (ftnlen)11); + do_lio(&c__9, &c__1, "Last non-blank character is \"", (ftnlen)29) + ; #line 8379 "" - i__1 = *(unsigned char *)charlq; + do_lio(&c__9, &c__1, charlq, (ftnlen)1); #line 8379 "" - do_lio(&c__3, &c__1, (char *)&i__1, (ftnlen)sizeof(integer)); + do_lio(&c__9, &c__1, "\", not \"/,%\"", (ftnlen)12); #line 8379 "" e_wsle(); #line 8380 "" - s_wsfe(&io___624); -/* Writing concatenation */ + s_wsle(&io___624); #line 8380 "" - i__2[0] = 29, a__1[0] = "Last non-blank character is \""; + do_lio(&c__9, &c__1, "ASCII code:", (ftnlen)11); #line 8380 "" - i__2[1] = 1, a__1[1] = charlq; + i__1 = *(unsigned char *)charlq; #line 8380 "" - i__2[2] = 12, a__1[2] = "\", not \"/,%\""; + do_lio(&c__3, &c__1, (char *)&i__1, (ftnlen)sizeof(integer)); #line 8380 "" + e_wsle(); +#line 8381 "" + s_wsfe(&io___625); +/* Writing concatenation */ +#line 8381 "" + i__2[0] = 29, a__1[0] = "Last non-blank character is \""; +#line 8381 "" + i__2[1] = 1, a__1[1] = charlq; +#line 8381 "" + i__2[2] = 12, a__1[2] = "\", not \"/,%\""; +#line 8381 "" s_cat(ch__1, a__1, i__2, &c__3, (ftnlen)42); -#line 8380 "" +#line 8381 "" do_fio(&c__1, ch__1, (ftnlen)42); -#line 8380 "" +#line 8381 "" e_wsfe(); -#line 8382 "" - s_wsfe(&io___625); -#line 8382 "" +#line 8383 "" + s_wsfe(&io___626); +#line 8383 "" do_fio(&c__1, "ASCII code:", (ftnlen)11); -#line 8382 "" +#line 8383 "" i__1 = *(unsigned char *)charlq; -#line 8382 "" +#line 8383 "" do_fio(&c__1, (char *)&i__1, (ftnlen)sizeof(integer)); -#line 8382 "" +#line 8383 "" e_wsfe(); /* Append " /" to last line. NB lastchar=.true. => ilbuf=nlbuf+1. */ -#line 8386 "" - --inbuff_1.ilbuf; #line 8387 "" + --inbuff_1.ilbuf; +#line 8388 "" inbuff_1.lbuf[inbuff_1.ilbuf - 1] = (shortint) (inbuff_1.lbuf[ inbuff_1.ilbuf - 1] + 2); /* Writing concatenation */ -#line 8388 "" - i__3[0] = inbuff_1.ipbuf, a__2[0] = inbuff_1.bufq; -#line 8388 "" - i__3[1] = 2, a__2[1] = " /"; -#line 8388 "" - s_cat(inbuff_1.bufq, a__2, i__3, &c__2, (ftnlen)131072); #line 8389 "" - s_wsle(&io___626); + i__3[0] = inbuff_1.ipbuf, a__2[0] = inbuff_1.bufq; #line 8389 "" - do_lio(&c__9, &c__1, "appending /", (ftnlen)18); + i__3[1] = 2, a__2[1] = " /"; #line 8389 "" - e_wsle(); + s_cat(inbuff_1.bufq, a__2, i__3, &c__2, (ftnlen)131072); #line 8390 "" s_wsle(&io___627); #line 8390 "" do_lio(&c__9, &c__1, "appending /", (ftnlen)18); #line 8390 "" e_wsle(); -/* Writing concatenation */ #line 8391 "" - i__3[0] = a1ll_2.iccount, a__2[0] = lineq; + s_wsle(&io___628); #line 8391 "" - i__3[1] = 2, a__2[1] = " /"; + do_lio(&c__9, &c__1, "appending /", (ftnlen)18); #line 8391 "" - s_cat(lineq, a__2, i__3, &c__2, (ftnlen)128); + e_wsle(); +/* Writing concatenation */ #line 8392 "" - c1omget_1.lastchar = FALSE_; + i__3[0] = a1ll_2.iccount, a__2[0] = lineq; +#line 8392 "" + i__3[1] = 2, a__2[1] = " /"; +#line 8392 "" + s_cat(lineq, a__2, i__3, &c__2, (ftnlen)128); #line 8393 "" - goto L1; + c1omget_1.lastchar = FALSE_; #line 8394 "" - } + goto L1; #line 8395 "" - return 0; + } #line 8396 "" - } + return 0; #line 8397 "" - if (*(unsigned char *)charq == ' ') { + } #line 8398 "" - goto L1; + if (*(unsigned char *)charq == ' ') { #line 8399 "" - } else if (*(unsigned char *)charq == '%' && a1ll_2.iccount == 1) { + goto L1; #line 8400 "" - a1ll_2.iccount = 128; + } else if (*(unsigned char *)charq == '%' && a1ll_2.iccount == 1) { #line 8401 "" + a1ll_2.iccount = 128; +#line 8402 "" goto L1; /* Replacement 1/22/12 since gfortran 4.7 with -O was choking here! */ /* else if ((ichar(charq).ge.97.and.ichar(charq).le.103) .or. */ -#line 8406 "" +#line 8407 "" } else if (i_indx("abcdefg", charq, (ftnlen)7, (ftnlen)1) > 0 || *( unsigned char *)charq == 'r') { /* This is a note/rest. gotclef is only used for checking for clef before "/" */ -#line 8411 "" +#line 8412 "" if (cdot) { -#line 8411 "" +#line 8412 "" goto L28; -#line 8411 "" +#line 8412 "" } /* if (gotclef) gotclef=.false. */ -#line 8413 "" - idotform = 0; #line 8414 "" - numnum = 0; + idotform = 0; #line 8415 "" - plusmin = FALSE_; + numnum = 0; #line 8416 "" + plusmin = FALSE_; +#line 8417 "" L28: -#line 8416 "" - ++a1ll_2.nnl[c1ommvl_1.ivx - 1]; #line 8417 "" - if (a1ll_2.nnl[c1ommvl_1.ivx - 1] > 200) { + ++a1ll_2.nnl[c1ommvl_1.ivx - 1]; #line 8418 "" + if (a1ll_2.nnl[c1ommvl_1.ivx - 1] > 200) { +#line 8419 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8418 "" +#line 8419 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, ">200 notes in line of mu"\ "sic. Use smaller blocks!", (ftnlen)128, (ftnlen)48); -#line 8420 "" - stop1_(); #line 8421 "" - } + stop1_(); #line 8422 "" + } +#line 8423 "" *(unsigned char *)dotq = 'x'; /* Check if this is 'r ' and previous note was full-bar-pause */ -#line 8426 "" +#line 8427 "" i__1 = a1ll_2.iccount; /* Computing MAX */ -#line 8426 "" +#line 8427 "" i__4 = 1, i__5 = a1ll_2.nnl[c1ommvl_1.ivx - 1] - 1; /* Computing MAX */ -#line 8426 "" +#line 8427 "" i__6 = 1, i__7 = a1ll_2.nnl[c1ommvl_1.ivx - 1] - 1; -#line 8426 "" +#line 8427 "" fulbrp = *(unsigned char *)charq == 'r' && s_cmp(lineq + i__1, " ", a1ll_2.iccount + 1 - i__1, (ftnlen)1) == 0 && a1ll_2.nnl[ c1ommvl_1.ivx - 1] > 1 && a1ll_2.rest[c1ommvl_1.ivx + max( i__4,i__5) * 24 - 25] && a1ll_2.nodur[c1ommvl_1.ivx + max( i__6,i__7) * 24 - 25] == a1ll_2.lenbar; -#line 8429 "" +#line 8430 "" L2: -#line 8429 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 8430 "" - ic = *(unsigned char *)durq; + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 8431 "" + ic = *(unsigned char *)durq; +#line 8432 "" if (ic <= 57 && ic >= 48) { /* Digit */ -#line 8435 "" - if (numnum == 0) { #line 8436 "" - c1omnotes_1.nnodur = ic - 48; + if (numnum == 0) { #line 8437 "" - numnum = 1; + c1omnotes_1.nnodur = ic - 48; #line 8438 "" - goto L2; + numnum = 1; #line 8439 "" - } else if (numnum == 1) { + goto L2; #line 8440 "" - if (*(unsigned char *)charq == 'r') { + } else if (numnum == 1) { #line 8441 "" + if (*(unsigned char *)charq == 'r') { +#line 8442 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8441 "" +#line 8442 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Only one digit a"\ "llowed after rest symbol \"r\"!", (ftnlen)128, ( ftnlen)45); -#line 8443 "" - stop1_(); #line 8444 "" - } + stop1_(); #line 8445 "" - numnum = 2; + } #line 8446 "" - if (plusmin) { -#line 8447 "" - s_wsle(&io___635); + numnum = 2; #line 8447 "" - e_wsle(); + if (plusmin) { #line 8448 "" s_wsle(&io___636); #line 8448 "" + e_wsle(); +#line 8449 "" + s_wsle(&io___637); +#line 8449 "" do_lio(&c__9, &c__1, "*********WARNING*********", (ftnlen) 25); -#line 8448 "" - e_wsle(); #line 8449 "" + e_wsle(); +#line 8450 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8449 "" +#line 8450 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Before version 1"\ ".2, +/- was ignored if octave was!", (ftnlen)128, (ftnlen)50); -#line 8451 "" - s_wsle(&io___637); -#line 8451 "" +#line 8452 "" + s_wsle(&io___638); +#line 8452 "" do_lio(&c__9, &c__1, "explicitly specified. May need to"\ " edit old editions", (ftnlen)52); -#line 8451 "" +#line 8452 "" e_wsle(); -#line 8453 "" - } #line 8454 "" - goto L2; + } #line 8455 "" - } else { + goto L2; #line 8456 "" + } else { +#line 8457 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8456 "" +#line 8457 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, ">2 digits in note sy"\ "mbol!", (ftnlen)128, (ftnlen)25); -#line 8458 "" - stop1_(); #line 8459 "" - } + stop1_(); #line 8460 "" - } else if (*(unsigned char *)durq == 'd') { + } #line 8461 "" - *(unsigned char *)dotq = *(unsigned char *)durq; + } else if (*(unsigned char *)durq == 'd') { #line 8462 "" + *(unsigned char *)dotq = *(unsigned char *)durq; +#line 8463 "" i__1 = a1ll_2.iccount; -#line 8462 "" +#line 8463 "" if (s_cmp(lineq + i__1, "d", a1ll_2.iccount + 1 - i__1, (ftnlen)1) == 0) { -#line 8463 "" - c1omnotes_1.iddot = 1; #line 8464 "" + c1omnotes_1.iddot = 1; +#line 8465 "" ++a1ll_2.iccount; /* Since we flow out, double dots won't work with other dot options */ -#line 8468 "" - } #line 8469 "" + } +#line 8470 "" i__1 = a1ll_2.iccount; -#line 8469 "" +#line 8470 "" if (i_indx("+-", lineq + i__1, (ftnlen)2, a1ll_2.iccount + 1 - i__1) > 0) { /* move a dot, provided a number follows. */ -#line 8473 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) - 1); #line 8474 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); #line 8475 "" + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) + 1); +#line 8476 "" if (i_indx("0123456789-.", durq, (ftnlen)12, (ftnlen)1) == 0) { /* Backup, exit the loop normally */ -#line 8479 "" - a1ll_2.iccount += -2; #line 8480 "" - goto L2; + a1ll_2.iccount += -2; #line 8481 "" - } + goto L2; #line 8482 "" + } +#line 8483 "" readnum_(lineq, &a1ll_2.iccount, dumq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 8483 "" +#line 8484 "" if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { /* Vertical shift also */ -#line 8487 "" +#line 8488 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 8488 "" +#line 8489 "" if (i_indx("0123456789-.", durq, (ftnlen)12, (ftnlen)1) == 0) { -#line 8489 "" +#line 8490 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8489 "" +#line 8490 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expected num"\ "ber after 2nd +/- (shift dot)!", (ftnlen)128, (ftnlen)42); -#line 8491 "" - stop1_(); #line 8492 "" - } + stop1_(); #line 8493 "" + } +#line 8494 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 8494 "" - } #line 8495 "" - --a1ll_2.iccount; + } #line 8496 "" - } + --a1ll_2.iccount; #line 8497 "" - goto L2; + } #line 8498 "" + goto L2; +#line 8499 "" } else if (i_indx("<>", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Accidental shift */ /* if (index('fsn',lineq(iccount-1:iccount-1)) .eq. 0) then */ -#line 8503 "" +#line 8504 "" i__1 = a1ll_2.iccount - 2; -#line 8503 "" +#line 8504 "" if (i_indx("fsnA", lineq + i__1, (ftnlen)4, a1ll_2.iccount - 1 - i__1) == 0) { -#line 8504 "" +#line 8505 "" i__1 = a1ll_2.iccount - 1; -#line 8504 "" +#line 8505 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8504 "" +#line 8505 "" errmsg_(lineq, &i__1, &i__4, "Expected \"f\", \"s\", \"n\" o"\ "r \"A\" before \"<\" or \">\"!", (ftnlen)128, (ftnlen) 48); /* * 'Expected "f", "s", or "n" before "<" or ">"!') */ -#line 8507 "" - stop1_(); #line 8508 "" - } + stop1_(); #line 8509 "" - ipm = 1; + } #line 8510 "" + ipm = 1; +#line 8511 "" if (*(unsigned char *)durq == '<') { -#line 8510 "" +#line 8511 "" ipm = -1; -#line 8510 "" - } #line 8511 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); + } #line 8512 "" - if (i_indx("123456789.0", durq, (ftnlen)11, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 8513 "" + if (i_indx("123456789.0", durq, (ftnlen)11, (ftnlen)1) == 0) { +#line 8514 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8513 "" +#line 8514 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expected number afte"\ "r (accidental shift)!", (ftnlen)128, (ftnlen)45); -#line 8515 "" - stop1_(); #line 8516 "" - } + stop1_(); #line 8517 "" + } +#line 8518 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 8518 "" - fnum = ipm * fnum; #line 8519 "" - if (fnum < -5.35f || fnum > 1.f) { + fnum = ipm * fnum; #line 8520 "" + if (fnum < -5.35f || fnum > 1.f) { +#line 8521 "" i__1 = a1ll_2.iccount - 1; -#line 8520 "" +#line 8521 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8520 "" +#line 8521 "" errmsg_(lineq, &i__1, &i__4, "Horizontal accidental shift mu"\ "st be >-5.35 and <1.0!", (ftnlen)128, (ftnlen)52); -#line 8522 "" - stop1_(); #line 8523 "" - } + stop1_(); #line 8524 "" - --a1ll_2.iccount; + } #line 8525 "" - goto L2; + --a1ll_2.iccount; #line 8526 "" - } else if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { + goto L2; #line 8527 "" - if (*(unsigned char *)charq != 'r') { + } else if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { #line 8528 "" + if (*(unsigned char *)charq != 'r') { +#line 8529 "" i__1 = a1ll_2.iccount - 2; -#line 8528 "" +#line 8529 "" if (i_indx("fsnA", lineq + i__1, (ftnlen)4, a1ll_2.iccount - 1 - i__1) > 0) { -#line 8529 "" - ipm = 1; #line 8530 "" + ipm = 1; +#line 8531 "" if (*(unsigned char *)durq == '-') { -#line 8530 "" +#line 8531 "" ipm = -1; -#line 8530 "" - } #line 8531 "" + } +#line 8532 "" i__1 = a1ll_2.iccount; -#line 8531 "" +#line 8532 "" if (i_indx("0123456789", lineq + i__1, (ftnlen)10, a1ll_2.iccount + 1 - i__1) > 0) { /* This may be start of accidental shift, but may be octave jump; then duration */ -#line 8536 "" - icsav = a1ll_2.iccount; #line 8537 "" - ++a1ll_2.iccount; + icsav = a1ll_2.iccount; #line 8538 "" + ++a1ll_2.iccount; +#line 8539 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen) 128, (ftnlen)1); -#line 8539 "" +#line 8540 "" if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { /* This is an accid shift since there's a 2nd consecutive signed number. */ /* Check size of 1st number. */ -#line 8544 "" - if (fnum > 30.5f) { #line 8545 "" + if (fnum > 30.5f) { +#line 8546 "" i__1 = a1ll_2.iccount - 1; -#line 8545 "" +#line 8546 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8545 "" +#line 8546 "" errmsg_(lineq, &i__1, &i__4, "Vertical accid"\ "ental shift must be less than 31!", ( ftnlen)128, (ftnlen)47); -#line 8547 "" - stop1_(); #line 8548 "" - } + stop1_(); #line 8549 "" - ipm = 1; + } #line 8550 "" + ipm = 1; +#line 8551 "" if (*(unsigned char *)durq == '-') { -#line 8550 "" +#line 8551 "" ipm = -1; -#line 8550 "" - } #line 8551 "" + } +#line 8552 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen) 128, (ftnlen)1); -#line 8552 "" +#line 8553 "" if (i_indx("1234567890.", durq, (ftnlen)11, ( ftnlen)1) == 0) { -#line 8553 "" +#line 8554 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8553 "" +#line 8554 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expe"\ "cted 2nd number of accidental shift)!" , (ftnlen)128, (ftnlen)41); -#line 8555 "" - stop1_(); #line 8556 "" - } + stop1_(); #line 8557 "" + } +#line 8558 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, ( ftnlen)128, (ftnlen)1); -#line 8558 "" - fnum = ipm * fnum; #line 8559 "" - if (fnum < -5.35f || fnum > 1.f) { + fnum = ipm * fnum; #line 8560 "" + if (fnum < -5.35f || fnum > 1.f) { +#line 8561 "" i__1 = a1ll_2.iccount - 1; -#line 8560 "" +#line 8561 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8560 "" +#line 8561 "" errmsg_(lineq, &i__1, &i__4, "Horiz. acciden"\ "tal shift must be >-5.35 and <1.0!", ( ftnlen)128, (ftnlen)48); -#line 8562 "" - stop1_(); #line 8563 "" - } + stop1_(); #line 8564 "" - --a1ll_2.iccount; + } #line 8565 "" - goto L2; + --a1ll_2.iccount; #line 8566 "" + goto L2; +#line 8567 "" } else { /* Not accid shift, reset, then flow out */ -#line 8570 "" - a1ll_2.iccount = icsav; #line 8571 "" - } + a1ll_2.iccount = icsav; #line 8572 "" - } + } #line 8573 "" - } + } #line 8574 "" - plusmin = TRUE_; + } #line 8575 "" - if (numnum == 2) { -#line 8576 "" - s_wsle(&io___642); + plusmin = TRUE_; #line 8576 "" - e_wsle(); + if (numnum == 2) { #line 8577 "" s_wsle(&io___643); #line 8577 "" + e_wsle(); +#line 8578 "" + s_wsle(&io___644); +#line 8578 "" do_lio(&c__9, &c__1, "*********WARNING*********", (ftnlen) 25); -#line 8577 "" - e_wsle(); #line 8578 "" + e_wsle(); +#line 8579 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8578 "" +#line 8579 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Before version 1"\ ".2, +/- was ignored if octave was!", (ftnlen)128, (ftnlen)50); -#line 8580 "" - s_wsle(&io___644); -#line 8580 "" +#line 8581 "" + s_wsle(&io___645); +#line 8581 "" do_lio(&c__9, &c__1, "explicitly specified. May need to"\ " edit old editions", (ftnlen)52); -#line 8580 "" +#line 8581 "" e_wsle(); -#line 8582 "" - } #line 8583 "" + } +#line 8584 "" goto L2; /* It's a rest containing +|- . Must refer to a vertical shift. Read past. */ -#line 8587 "" - } else { #line 8588 "" + } else { +#line 8589 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 8589 "" +#line 8590 "" readnum_(lineq, &a1ll_2.iccount, durq, &dum, (ftnlen)128, ( ftnlen)1); -#line 8590 "" +#line 8591 "" i__1 = a1ll_2.iccount - 2; -#line 8590 "" +#line 8591 "" if (s_cmp(lineq + i__1, ".", a1ll_2.iccount - 1 - i__1, ( ftnlen)1) == 0) { -#line 8590 "" +#line 8591 "" --a1ll_2.iccount; -#line 8590 "" - } #line 8591 "" - --a1ll_2.iccount; + } #line 8592 "" - goto L2; + --a1ll_2.iccount; #line 8593 "" + goto L2; +#line 8594 "" } /* else if (index('ulare',durq) .gt. 0) then */ -#line 8595 "" - } else if (i_indx("ularec", durq, (ftnlen)6, (ftnlen)1) > 0) { #line 8596 "" - goto L2; + } else if (i_indx("ularec", durq, (ftnlen)6, (ftnlen)1) > 0) { #line 8597 "" + goto L2; +#line 8598 "" } else if (i_indx("LS", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Stemlength change */ -#line 8601 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 8602 "" - if (i_indx(".0123456789:", durq, (ftnlen)12, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 8603 "" + if (i_indx(".0123456789:", durq, (ftnlen)12, (ftnlen)1) == 0) { +#line 8604 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8603 "" +#line 8604 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "There must be a numb"\ "er or colon here!", (ftnlen)128, (ftnlen)37); -#line 8605 "" - stop1_(); #line 8606 "" - } + stop1_(); #line 8607 "" - if (*(unsigned char *)durq == ':') { + } #line 8608 "" - if (! comkeys_1.stickys) { + if (*(unsigned char *)durq == ':') { #line 8609 "" + if (! comkeys_1.stickys) { +#line 8610 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8609 "" +#line 8610 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Turned off stick"\ "y stemlegth changes without turning on!", (ftnlen) 128, (ftnlen)55); -#line 8611 "" - stop1_(); #line 8612 "" - } + stop1_(); #line 8613 "" - comkeys_1.stickys = FALSE_; + } #line 8614 "" - goto L2; + comkeys_1.stickys = FALSE_; #line 8615 "" - } + goto L2; #line 8616 "" + } +#line 8617 "" readnum_(lineq, &a1ll_2.iccount, durq, &dum, (ftnlen)128, (ftnlen) 1); /* if (dum.lt..5 .or. dum.gt.4.) then */ -#line 8618 "" +#line 8619 "" if (*(unsigned char *)durq == 'L' && dum > 20.f || *(unsigned char *)durq == 'S' && dum > 4.f) { -#line 8620 "" +#line 8621 "" i__1 = a1ll_2.iccount - 1; -#line 8620 "" +#line 8621 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8620 "" +#line 8621 "" errmsg_(lineq, &i__1, &i__4, "Stemlength change amount too b"\ "ig!", (ftnlen)128, (ftnlen)33); -#line 8622 "" - stop1_(); #line 8623 "" - } + stop1_(); #line 8624 "" - if (*(unsigned char *)durq != ':') { + } #line 8625 "" - --a1ll_2.iccount; + if (*(unsigned char *)durq != ':') { #line 8626 "" - } else { + --a1ll_2.iccount; #line 8627 "" - if (comkeys_1.stickys) { + } else { #line 8628 "" + if (comkeys_1.stickys) { +#line 8629 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8628 "" +#line 8629 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Turned on sticky"\ " stemshrinks when already on!", (ftnlen)128, ( ftnlen)45); -#line 8630 "" - stop1_(); #line 8631 "" - } + stop1_(); #line 8632 "" - comkeys_1.stickys = TRUE_; + } #line 8633 "" - } + comkeys_1.stickys = TRUE_; #line 8634 "" - goto L2; + } #line 8635 "" + goto L2; +#line 8636 "" } else if (i_indx("fsn", durq, (ftnlen)3, (ftnlen)1) > 0) { /* Check for midi-only accid. CANNOT coesist with accidental position tweaks, so */ /* MUST come right after "f,s,n" */ -#line 8640 "" +#line 8641 "" i__1 = a1ll_2.iccount; -#line 8640 "" +#line 8641 "" if (s_cmp(lineq + i__1, "i", a1ll_2.iccount + 1 - i__1, (ftnlen)1) == 0) { -#line 8640 "" +#line 8641 "" ++a1ll_2.iccount; -#line 8640 "" - } #line 8641 "" - goto L2; + } #line 8642 "" - } else if (*(unsigned char *)durq == 'p') { + goto L2; #line 8643 "" - fulbrp = *(unsigned char *)charq == 'r'; + } else if (*(unsigned char *)durq == 'p') { #line 8644 "" - if (! fulbrp) { + fulbrp = *(unsigned char *)charq == 'r'; #line 8645 "" + if (! fulbrp) { +#line 8646 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8645 "" +#line 8646 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "The option \"p\" onl"\ "y works with \"r\" (rest)!", (ftnlen)128, (ftnlen)42); -#line 8647 "" - stop1_(); #line 8648 "" - } + stop1_(); #line 8649 "" - goto L2; + } #line 8650 "" - } else if (*(unsigned char *)durq == 'b') { + goto L2; #line 8651 "" - if (*(unsigned char *)charq != 'r') { + } else if (*(unsigned char *)durq == 'b') { #line 8652 "" + if (*(unsigned char *)charq != 'r') { +#line 8653 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8652 "" +#line 8653 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "You entered \"b\"; I"\ " expected \"rb\"!", (ftnlen)128, (ftnlen)33); -#line 8654 "" - stop1_(); #line 8655 "" - } else if (numnum == 2) { + stop1_(); #line 8656 "" + } else if (numnum == 2) { +#line 8657 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8656 "" +#line 8657 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "You entered \"r\" &"\ " \"b\" with two numbers!", (ftnlen)128, (ftnlen)39); -#line 8658 "" - } #line 8659 "" - goto L2; + } #line 8660 "" + goto L2; +#line 8661 "" } else if (*(unsigned char *)durq == 'x') { /* Xtuplet. Count number of doubled notes (for unequal xtups) */ -#line 8664 "" +#line 8665 "" if (bit_test(c1ommvl_1.nacc[c1ommvl_1.ivx + a1ll_2.nnl[ c1ommvl_1.ivx - 1] * 24 - 25],18)) { -#line 8665 "" - ndoub = 1; #line 8666 "" - } else { + ndoub = 1; #line 8667 "" - ndoub = 0; + } else { #line 8668 "" + ndoub = 0; +#line 8669 "" } /* Will set all durations to 0 except last one. */ -#line 8672 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 8673 "" - if (i_indx("123456789T", durq, (ftnlen)10, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 8674 "" + if (i_indx("123456789T", durq, (ftnlen)10, (ftnlen)1) == 0) { +#line 8675 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8674 "" +#line 8675 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "First char after \""\ "x\" in xtuplet must be \"1\"-\"9\" or \"T\"!", ( ftnlen)128, (ftnlen)55); -#line 8676 "" - stop1_(); #line 8677 "" - } + stop1_(); #line 8678 "" + } +#line 8679 "" if (*(unsigned char *)durq == 'T') { /* Set a flag for checking 2nd note inputs if dot is moved */ -#line 8682 "" +#line 8683 "" twotrem = TRUE_; /* Check all x-tremolo inputs here; set fnum=2 */ -#line 8686 "" - fnum = 2.f; #line 8687 "" + fnum = 2.f; +#line 8688 "" getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1) ; -#line 8688 "" - if (i_indx("0123 ", durq, (ftnlen)5, (ftnlen)1) == 0) { #line 8689 "" + if (i_indx("0123 ", durq, (ftnlen)5, (ftnlen)1) == 0) { +#line 8690 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8689 "" +#line 8690 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "First char aft"\ "er \"T\" in xtuplet must be \"0\"-\"3\" or blank!" , (ftnlen)128, (ftnlen)57); -#line 8691 "" - stop1_(); #line 8692 "" - } else if (*(unsigned char *)durq != ' ') { + stop1_(); #line 8693 "" + } else if (*(unsigned char *)durq != ' ') { +#line 8694 "" getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 8694 "" - if (i_indx("0123 ", durq, (ftnlen)5, (ftnlen)1) == 0) { #line 8695 "" + if (i_indx("0123 ", durq, (ftnlen)5, (ftnlen)1) == 0) { +#line 8696 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8695 "" +#line 8696 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "This char mu"\ "st be \"0\"-\"3\" or blank!", (ftnlen)128, ( ftnlen)35); -#line 8697 "" - stop1_(); #line 8698 "" - } else if (*(unsigned char *)durq != ' ') { + stop1_(); #line 8699 "" + } else if (*(unsigned char *)durq != ' ') { +#line 8700 "" getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); /* Probably blank unles other options entered */ -#line 8703 "" - } #line 8704 "" - } + } #line 8705 "" + } +#line 8706 "" } else { /* durq is digit, normal xtup */ -#line 8709 "" +#line 8710 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); /* Leaves durq at next char after number */ -#line 8713 "" - if (fnum > 99.f) { #line 8714 "" + if (fnum > 99.f) { +#line 8715 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8714 "" +#line 8715 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Xtuplet cannot h"\ "ave more than 99 notes!", (ftnlen)128, (ftnlen)39) ; -#line 8716 "" - stop1_(); #line 8717 "" - } else if (i_indx(" DFnd", durq, (ftnlen)5, (ftnlen)1) == 0) { + stop1_(); #line 8718 "" + } else if (i_indx(" DFnd", durq, (ftnlen)5, (ftnlen)1) == 0) { +#line 8719 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8718 "" +#line 8719 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Only legal chara"\ "cters here are \" \",\"D\",\"F\",\"n\"!", (ftnlen) 128, (ftnlen)47); -#line 8720 "" - stop1_(); #line 8721 "" - } + stop1_(); #line 8722 "" + } +#line 8723 "" } /* End of mandatory xtup inputs. Check for options. Note D,F,d must precede n. */ -#line 8726 "" +#line 8727 "" if (i_indx("DF", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Double xtup note to make an un= xtup. Here, number already set, but may also */ /* have used this before number was set. */ -#line 8731 "" +#line 8732 "" c1ommvl_1.nacc[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = bit_set(c1ommvl_1.nacc[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25],18); -#line 8732 "" - ndoub = 1; #line 8733 "" + ndoub = 1; +#line 8734 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 8734 "" - } else if (*(unsigned char *)durq == 'd') { #line 8735 "" + } else if (*(unsigned char *)durq == 'd') { +#line 8736 "" c1ommvl_1.nacc[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = bit_set(c1ommvl_1.nacc[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25],27); -#line 8736 "" +#line 8737 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 8737 "" - } #line 8738 "" + } +#line 8739 "" if (*(unsigned char *)durq == 'n') { /* Number alteration stuff. After 'n', require '+-123456789fs ', no more 'DF'. */ -#line 8742 "" - numshft = 0; #line 8743 "" + numshft = 0; +#line 8744 "" L30: -#line 8743 "" +#line 8744 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 8744 "" - if (*(unsigned char *)durq == 'f') { #line 8745 "" - goto L30; + if (*(unsigned char *)durq == 'f') { #line 8746 "" - } else if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { + goto L30; #line 8747 "" - ++numshft; + } else if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { #line 8748 "" - if (numshft == 3) { + ++numshft; #line 8749 "" + if (numshft == 3) { +#line 8750 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8749 "" +#line 8750 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Only 2 shift"\ "s are allowed after \"n\" in xtup!", (ftnlen) 128, (ftnlen)44); -#line 8751 "" - stop1_(); #line 8752 "" - } + stop1_(); #line 8753 "" + } +#line 8754 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 8754 "" +#line 8755 "" if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { -#line 8755 "" +#line 8756 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8755 "" +#line 8756 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "This charact"\ "er should be a digit or \".\"!", (ftnlen)128, (ftnlen)40); -#line 8757 "" - stop1_(); #line 8758 "" - } + stop1_(); #line 8759 "" + } +#line 8760 "" readnum_(lineq, &a1ll_2.iccount, durq, &snum, (ftnlen)128, (ftnlen)1); -#line 8760 "" +#line 8761 "" --a1ll_2.iccount; /* if ((numshft.eq.1 .and. snum.gt.15.1) .or. */ -#line 8762 "" +#line 8763 "" if (numshft == 1 && snum > 64.f || numshft == 2 && snum > 1.51f) { -#line 8764 "" +#line 8765 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8764 "" +#line 8765 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Shift number"\ " after \"n\" in xtup is out of range!", ( ftnlen)128, (ftnlen)47); -#line 8766 "" - stop1_(); #line 8767 "" - } + stop1_(); #line 8768 "" - goto L30; + } #line 8769 "" + goto L30; +#line 8770 "" } else if (*(unsigned char *)durq == 's') { /* Slope alteration for bracket */ -#line 8773 "" +#line 8774 "" getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 8774 "" - if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { #line 8775 "" + if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { +#line 8776 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8775 "" +#line 8776 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "For slope ad"\ "justment, this character must be \"+\" or \"-"\ "\"!", (ftnlen)128, (ftnlen)56); -#line 8777 "" - stop1_(); #line 8778 "" - } + stop1_(); #line 8779 "" + } +#line 8780 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 8780 "" +#line 8781 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { -#line 8781 "" +#line 8782 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8781 "" +#line 8782 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "This charact"\ "er should be a digit!", (ftnlen)128, (ftnlen) 33); -#line 8783 "" - stop1_(); #line 8784 "" - } + stop1_(); #line 8785 "" + } +#line 8786 "" readnum_(lineq, &a1ll_2.iccount, durq, &snum, (ftnlen)128, (ftnlen)1); -#line 8786 "" - --a1ll_2.iccount; #line 8787 "" - if (i_nint(&snum) > 15) { + --a1ll_2.iccount; #line 8788 "" + if (i_nint(&snum) > 15) { +#line 8789 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8788 "" +#line 8789 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Slope adjust"\ "ment cannot exceed 15!", (ftnlen)128, (ftnlen) 34); -#line 8790 "" - stop1_(); #line 8791 "" - } + stop1_(); #line 8792 "" - goto L30; + } #line 8793 "" + goto L30; +#line 8794 "" } else if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) > 0) { /* Unsigned integer => alternate printed number */ -#line 8797 "" +#line 8798 "" readnum_(lineq, &a1ll_2.iccount, durq, &snum, (ftnlen)128, (ftnlen)1); -#line 8798 "" - if (snum > 15.1f) { #line 8799 "" + if (snum > 15.1f) { +#line 8800 "" i__1 = a1ll_2.iccount - 1; -#line 8799 "" +#line 8800 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8799 "" +#line 8800 "" errmsg_(lineq, &i__1, &i__4, "Alternate xtup number "\ "after \"n\" must be <16!", (ftnlen)128, ( ftnlen)44); -#line 8801 "" - stop1_(); #line 8802 "" - } + stop1_(); #line 8803 "" - --a1ll_2.iccount; + } #line 8804 "" - goto L30; + --a1ll_2.iccount; #line 8805 "" - } else if (*(unsigned char *)durq != ' ') { + goto L30; #line 8806 "" + } else if (*(unsigned char *)durq != ' ') { +#line 8807 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8806 "" +#line 8807 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal characte"\ "r after \"n\" in xtup!", (ftnlen)128, (ftnlen)36); -#line 8808 "" - stop1_(); #line 8809 "" - } + stop1_(); #line 8810 "" - } + } #line 8811 "" - ntup = i_nint(&fnum); + } #line 8812 "" + ntup = i_nint(&fnum); +#line 8813 "" i__1 = ntup; -#line 8812 "" - for (itup = 2; itup <= i__1; ++itup) { #line 8813 "" + for (itup = 2; itup <= i__1; ++itup) { +#line 8814 "" a1ll_2.nodur[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = 0; -#line 8814 "" - ++a1ll_2.nnl[c1ommvl_1.ivx - 1]; #line 8815 "" + ++a1ll_2.nnl[c1ommvl_1.ivx - 1]; +#line 8816 "" L110: -#line 8815 "" +#line 8816 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 8816 "" - if (*(unsigned char *)durq == ' ') { #line 8817 "" - goto L110; + if (*(unsigned char *)durq == ' ') { #line 8818 "" + goto L110; +#line 8819 "" } else if (*(unsigned char *)durq == 'o') { /* Ornament in xtup. "o" symbol must come AFTER the affected note */ -#line 8822 "" +#line 8823 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 8823 "" +#line 8824 "" if (i_indx("(stmx+Tup._)e:>^bc", dumq, (ftnlen)18, ( ftnlen)1) == 0) { -#line 8824 "" - if (i_indx("fg", dumq, (ftnlen)2, (ftnlen)1) > 0) { #line 8825 "" + if (i_indx("fg", dumq, (ftnlen)2, (ftnlen)1) > 0) { +#line 8826 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8825 "" +#line 8826 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Fermata "\ "or segno not allowed in xtuplet!", ( ftnlen)128, (ftnlen)40); -#line 8827 "" - } else { #line 8828 "" + } else { +#line 8829 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8828 "" +#line 8829 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Illegal "\ "ornament!", (ftnlen)128, (ftnlen)17); -#line 8830 "" - } #line 8831 "" - stop1_(); + } #line 8832 "" - } + stop1_(); #line 8833 "" + } +#line 8834 "" if (*(unsigned char *)dumq == 'T') { /* Trill. may be followed by 't' and/or number. read 'til blank */ -#line 8837 "" +#line 8838 "" L29: -#line 8837 "" +#line 8838 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 8838 "" +#line 8839 "" if (*(unsigned char *)dumq != ' ') { -#line 8838 "" +#line 8839 "" goto L29; -#line 8838 "" - } #line 8839 "" - } else if (*(unsigned char *)dumq == 'e') { + } #line 8840 "" + } else if (*(unsigned char *)dumq == 'e') { +#line 8841 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 8841 "" - if (i_indx("sfn?", dumq, (ftnlen)4, (ftnlen)1) == 0) { #line 8842 "" + if (i_indx("sfn?", dumq, (ftnlen)4, (ftnlen)1) == 0) { +#line 8843 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8842 "" +#line 8843 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Illegal "\ "character after \"e\" in edit. accid. sy"\ "mbol!", (ftnlen)128, (ftnlen)51); -#line 8844 "" - stop1_(); #line 8845 "" - } + stop1_(); #line 8846 "" + } +#line 8847 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 8847 "" +#line 8848 "" if (*(unsigned char *)dumq == '?') { -#line 8847 "" +#line 8848 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen) 128, (ftnlen)1); -#line 8847 "" - } #line 8848 "" - } else if (*(unsigned char *)dumq == ':') { + } #line 8849 "" + } else if (*(unsigned char *)dumq == ':') { +#line 8850 "" i__4 = a1ll_2.iccount; -#line 8849 "" +#line 8850 "" if (s_cmp(lineq + i__4, " ", a1ll_2.iccount + 1 - i__4, (ftnlen)1) != 0) { -#line 8850 "" +#line 8851 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8850 "" +#line 8851 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "\":\" mu"\ "st be followed by blank in \"o: \"!", ( ftnlen)128, (ftnlen)39); -#line 8852 "" - stop1_(); #line 8853 "" - } else if (! comkeys_1.ornrpt) { + stop1_(); #line 8854 "" + } else if (! comkeys_1.ornrpt) { +#line 8855 "" i__4 = a1ll_2.iccount - 1; -#line 8854 "" +#line 8855 "" i__5 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8854 "" +#line 8855 "" errmsg_(lineq, &i__4, &i__5, "Turned off repeate"\ "d ornaments before they were on!", ( ftnlen)128, (ftnlen)50); -#line 8856 "" - stop1_(); #line 8857 "" - } + stop1_(); #line 8858 "" - comkeys_1.ornrpt = FALSE_; + } #line 8859 "" - } else { + comkeys_1.ornrpt = FALSE_; #line 8860 "" + } else { +#line 8861 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 8861 "" - } #line 8862 "" - if (i_indx("+- :", dumq, (ftnlen)4, (ftnlen)1) == 0) { + } #line 8863 "" + if (i_indx("+- :", dumq, (ftnlen)4, (ftnlen)1) == 0) { +#line 8864 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8863 "" +#line 8864 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Illegal char"\ "acter in ornament symbol!", (ftnlen)128, ( ftnlen)37); -#line 8865 "" - stop1_(); #line 8866 "" - } + stop1_(); #line 8867 "" - if (*(unsigned char *)dumq == ':') { + } #line 8868 "" + if (*(unsigned char *)dumq == ':') { +#line 8869 "" i__4 = a1ll_2.iccount; -#line 8868 "" +#line 8869 "" if (s_cmp(lineq + i__4, " ", a1ll_2.iccount + 1 - i__4, (ftnlen)1) != 0) { -#line 8869 "" +#line 8870 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8869 "" +#line 8870 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "\":\" mu"\ "st be followed by blank in \"o: \"!", ( ftnlen)128, (ftnlen)39); -#line 8871 "" - stop1_(); #line 8872 "" - } else if (comkeys_1.ornrpt) { + stop1_(); #line 8873 "" + } else if (comkeys_1.ornrpt) { +#line 8874 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8873 "" +#line 8874 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Turned o"\ "n repeated ornaments but already on!", ( ftnlen)128, (ftnlen)44); -#line 8875 "" - stop1_(); #line 8876 "" - } + stop1_(); #line 8877 "" - comkeys_1.ornrpt = TRUE_; + } #line 8878 "" - } + comkeys_1.ornrpt = TRUE_; #line 8879 "" - if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { + } #line 8880 "" + if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { +#line 8881 "" i__4 = a1ll_2.iccount; -#line 8880 "" +#line 8881 "" if (i_indx("0123456789", lineq + i__4, (ftnlen)10, a1ll_2.iccount + 1 - i__4) == 0) { -#line 8882 "" +#line 8883 "" i__4 = a1ll_2.iccount + 1; -#line 8882 "" +#line 8883 "" i__5 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8882 "" +#line 8883 "" errmsg_(lineq, &i__4, &i__5, "There should be an"\ " integer here!", (ftnlen)128, (ftnlen)32); -#line 8884 "" - stop1_(); #line 8885 "" - } + stop1_(); #line 8886 "" + } +#line 8887 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen) 128, (ftnlen)1); -#line 8887 "" - if (*(unsigned char *)durq == ':') { #line 8888 "" + if (*(unsigned char *)durq == ':') { +#line 8889 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8888 "" +#line 8889 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Cannot s"\ "hift AND repeat an ornament!", (ftnlen) 128, (ftnlen)36); -#line 8890 "" - stop1_(); #line 8891 "" + stop1_(); +#line 8892 "" } /* 12/7/03 Allow horizontal shift on any ornament, not just breath and ceas. */ -#line 8895 "" - if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { #line 8896 "" + if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { +#line 8897 "" i__4 = a1ll_2.iccount; -#line 8896 "" +#line 8897 "" if (i_indx(".0123456789", lineq + i__4, (ftnlen) 11, a1ll_2.iccount + 1 - i__4) == 0) { -#line 8898 "" +#line 8899 "" i__4 = a1ll_2.iccount + 1; -#line 8898 "" +#line 8899 "" i__5 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8898 "" +#line 8899 "" errmsg_(lineq, &i__4, &i__5, "There should b"\ "e a number here!", (ftnlen)128, ( ftnlen)30); -#line 8901 "" - stop1_(); #line 8902 "" - } + stop1_(); #line 8903 "" + } +#line 8904 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, ( ftnlen)128, (ftnlen)1); -#line 8904 "" - } #line 8905 "" - } + } #line 8906 "" - goto L110; + } #line 8907 "" + goto L110; +#line 8908 "" } else if (i_indx("st(){}", durq, (ftnlen)6, (ftnlen)1) > 0) { /* Slur in xtup */ -#line 8911 "" - iposn = 0; #line 8912 "" - numint = 0; + iposn = 0; #line 8913 "" + numint = 0; +#line 8914 "" L15: -#line 8913 "" +#line 8914 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 8914 "" - ++iposn; #line 8915 "" - if (i_indx("udlbfnhtv", dumq, (ftnlen)9, (ftnlen)1) > 0) { + ++iposn; #line 8916 "" + if (i_indx("udlbfnhtv", dumq, (ftnlen)9, (ftnlen)1) > 0) { +#line 8917 "" if (*(unsigned char *)dumq == 't' && *(unsigned char * )durq == 't') { -#line 8917 "" +#line 8918 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8917 "" +#line 8918 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Cannot u"\ "se \"t\" as an option on a tie!", (ftnlen) 128, (ftnlen)37); -#line 8919 "" - stop1_(); #line 8920 "" - } + stop1_(); #line 8921 "" - goto L15; + } #line 8922 "" - } else if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { + goto L15; #line 8923 "" - ++numint; + } else if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { #line 8924 "" - ++a1ll_2.iccount; + ++numint; #line 8925 "" + ++a1ll_2.iccount; +#line 8926 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen) 128, (ftnlen)1); -#line 8926 "" - if (numint == 1) { #line 8927 "" - if (i_nint(&fnum) > 30) { + if (numint == 1) { #line 8928 "" + if (i_nint(&fnum) > 30) { +#line 8929 "" i__4 = a1ll_2.iccount - 1; -#line 8928 "" +#line 8929 "" i__5 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8928 "" +#line 8929 "" errmsg_(lineq, &i__4, &i__5, "Magnitude of s"\ "lur height adjustment cannot exceed "\ "30!", (ftnlen)128, (ftnlen)53); -#line 8930 "" - stop1_(); #line 8931 "" - } + stop1_(); #line 8932 "" - } else if (numint == 2) { + } #line 8933 "" - if (dabs(fnum) > 6.3f) { + } else if (numint == 2) { #line 8934 "" + if (dabs(fnum) > 6.3f) { +#line 8935 "" i__4 = a1ll_2.iccount - 1; -#line 8934 "" +#line 8935 "" i__5 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8934 "" +#line 8935 "" errmsg_(lineq, &i__4, &i__5, "Slur horiz shi"\ "ft must be in the range (-6.3,6.3)!", (ftnlen)128, (ftnlen)49); -#line 8936 "" - stop1_(); #line 8937 "" - } + stop1_(); #line 8938 "" + } +#line 8939 "" } else { /* Third signed integer, must be a midslur or curve spec. */ -#line 8942 "" - if (dabs(fnum) > 31.f) { #line 8943 "" + if (dabs(fnum) > 31.f) { +#line 8944 "" i__4 = a1ll_2.iccount - 1; -#line 8943 "" +#line 8944 "" i__5 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8943 "" +#line 8944 "" errmsg_(lineq, &i__4, &i__5, "Slur midheight"\ " must be in the range (-31,31)!", ( ftnlen)128, (ftnlen)45); -#line 8945 "" - stop1_(); #line 8946 "" - } + stop1_(); #line 8947 "" + } +#line 8948 "" if (*(unsigned char *)durq == ':') { /* Expecting curve parameters. Get two numbers */ -#line 8951 "" - for (i__ = 1; i__ <= 2; ++i__) { #line 8952 "" - ++a1ll_2.iccount; + for (i__ = 1; i__ <= 2; ++i__) { #line 8953 "" + ++a1ll_2.iccount; +#line 8954 "" fnum = (real) (*(unsigned char *)&lineq[ a1ll_2.iccount - 1] - 48); -#line 8954 "" +#line 8955 "" if ((r__1 = fnum - 3.5f, dabs(r__1)) > 3.6f) { -#line 8955 "" +#line 8956 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8955 "" +#line 8956 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Slur curve parameter must "\ "be in range (0,7)!", (ftnlen) 128, (ftnlen)44); -#line 8958 "" - stop1_(); #line 8959 "" - } + stop1_(); #line 8960 "" + } +#line 8961 "" /* L40: */ -#line 8960 "" - } #line 8961 "" - ++a1ll_2.iccount; + } #line 8962 "" - } + ++a1ll_2.iccount; #line 8963 "" - } + } #line 8964 "" - --a1ll_2.iccount; + } #line 8965 "" + --a1ll_2.iccount; +#line 8966 "" goto L15; -#line 8967 "" +#line 8968 "" } else if (*(unsigned char *)dumq == 's') { /* What follows should be one or two signed numbers for adjustment of line break */ /* slur, end of 1st segment or start of second. */ -#line 8972 "" - if (comslur_1.fontslur) { #line 8973 "" + if (comslur_1.fontslur) { +#line 8974 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8973 "" +#line 8974 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "May not "\ "use linebreak slur options with font-bas"\ "ed slurs!", (ftnlen)128, (ftnlen)57); -#line 8975 "" - stop1_(); #line 8976 "" - } + stop1_(); #line 8977 "" + } +#line 8978 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 8978 "" - if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) == 0) { #line 8979 "" + if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) == 0) { +#line 8980 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8979 "" +#line 8980 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "This cha"\ "racter must be \"+\" or \"-\"!", (ftnlen) 128, (ftnlen)34); -#line 8981 "" - stop1_(); #line 8982 "" - } + stop1_(); #line 8983 "" - ++a1ll_2.iccount; + } #line 8984 "" + ++a1ll_2.iccount; +#line 8985 "" readnum_(lineq, &a1ll_2.iccount, dumq, &fnum, (ftnlen) 128, (ftnlen)1); -#line 8985 "" - if (i_nint(&fnum) > 30) { #line 8986 "" + if (i_nint(&fnum) > 30) { +#line 8987 "" i__4 = a1ll_2.iccount - 1; -#line 8986 "" +#line 8987 "" i__5 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8986 "" +#line 8987 "" errmsg_(lineq, &i__4, &i__5, "Magnitude of slur "\ "height adjustment cannot exceed 30!", ( ftnlen)128, (ftnlen)53); -#line 8988 "" - stop1_(); #line 8989 "" - } + stop1_(); #line 8990 "" - if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { + } #line 8991 "" - ++a1ll_2.iccount; + if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { #line 8992 "" + ++a1ll_2.iccount; +#line 8993 "" readnum_(lineq, &a1ll_2.iccount, dumq, &fnum, ( ftnlen)128, (ftnlen)1); -#line 8993 "" - if (dabs(fnum) > 6.3f) { #line 8994 "" + if (dabs(fnum) > 6.3f) { +#line 8995 "" i__4 = a1ll_2.iccount - 1; -#line 8994 "" +#line 8995 "" i__5 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 8994 "" +#line 8995 "" errmsg_(lineq, &i__4, &i__5, "Slur horiz shi"\ "ft must be in range (-6.3,6.3)!", ( ftnlen)128, (ftnlen)45); -#line 8996 "" - stop1_(); #line 8997 "" - } + stop1_(); #line 8998 "" - } + } #line 8999 "" - --a1ll_2.iccount; + } #line 9000 "" - goto L15; + --a1ll_2.iccount; #line 9001 "" - } else if (*(unsigned char *)dumq == 'H' && iposn > 1) { + goto L15; #line 9002 "" + } else if (*(unsigned char *)dumq == 'H' && iposn > 1) { +#line 9003 "" i__4 = a1ll_2.iccount; -#line 9002 "" +#line 9003 "" if (s_cmp(lineq + i__4, "H", a1ll_2.iccount + 1 - i__4, (ftnlen)1) == 0) { -#line 9002 "" +#line 9003 "" ++a1ll_2.iccount; -#line 9002 "" +#line 9003 "" } -#line 9004 "" - goto L15; #line 9005 "" + goto L15; +#line 9006 "" } else if (*(unsigned char *)dumq == 'p') { /* local change in postscript slur/tie adjustment default */ -#line 9009 "" - if (comslur_1.fontslur) { #line 9010 "" + if (comslur_1.fontslur) { +#line 9011 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9010 "" +#line 9011 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Must use"\ " postscript slurs (\"Ap\") to use this o"\ "ption!", (ftnlen)128, (ftnlen)52); -#line 9012 "" - stop1_(); #line 9013 "" - } + stop1_(); #line 9014 "" + } +#line 9015 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 9015 "" - if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) == 0) { #line 9016 "" + if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) == 0) { +#line 9017 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9016 "" +#line 9017 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Expect"\ "ed \"+\" or \"-\" here!", (ftnlen)128, ( ftnlen)25); -#line 9018 "" - stop1_(); #line 9019 "" - } + stop1_(); #line 9020 "" + } +#line 9021 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 9021 "" - if (i_indx("st", dumq, (ftnlen)2, (ftnlen)1) == 0) { #line 9022 "" + if (i_indx("st", dumq, (ftnlen)2, (ftnlen)1) == 0) { +#line 9023 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9022 "" +#line 9023 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Expect"\ "ed \"s\" or \"t\" here!", (ftnlen)128, ( ftnlen)25); -#line 9024 "" - stop1_(); #line 9025 "" - } + stop1_(); #line 9026 "" - goto L15; + } #line 9027 "" - } else if (*(unsigned char *)dumq != ' ') { + goto L15; #line 9028 "" - ic = *(unsigned char *)dumq; + } else if (*(unsigned char *)dumq != ' ') { #line 9029 "" + ic = *(unsigned char *)dumq; +#line 9030 "" if (ic >= 48 && ic <= 57 || ic >= 65 && ic <= 90) { -#line 9031 "" - if (iposn == 1) { #line 9032 "" + if (iposn == 1) { +#line 9033 "" if (*(unsigned char *)durq == 't' && comslur_1.fontslur) { -#line 9033 "" +#line 9034 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9033 "" +#line 9034 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Slur ID not allowed on non-post"\ "script tie!", (ftnlen)128, ( ftnlen)42); -#line 9035 "" - stop1_(); #line 9036 "" - } + stop1_(); #line 9037 "" + } +#line 9038 "" i__4 = a1ll_2.iccount; -#line 9037 "" +#line 9038 "" if (s_cmp(lineq + i__4, "x", a1ll_2.iccount + 1 - i__4, (ftnlen)1) == 0) { -#line 9037 "" +#line 9038 "" ++a1ll_2.iccount; -#line 9037 "" +#line 9038 "" } -#line 9039 "" - goto L15; #line 9040 "" - } + goto L15; #line 9041 "" + } +#line 9042 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9041 "" +#line 9042 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Slur ID "\ "must be 2nd character in slur symbol!", ( ftnlen)128, (ftnlen)45); -#line 9043 "" - stop1_(); #line 9044 "" - } + stop1_(); #line 9045 "" + } +#line 9046 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9045 "" +#line 9046 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Illegal char"\ "acter in slur symbol!", (ftnlen)128, (ftnlen) 33); -#line 9047 "" - stop1_(); #line 9048 "" - } + stop1_(); #line 9049 "" - goto L110; + } #line 9050 "" + goto L110; +#line 9051 "" } else if (i_indx("0123456789#-nx_", durq, (ftnlen)15, ( ftnlen)1) > 0) { /* We have a figure. Only allow on 1st note of xtup */ -#line 9054 "" - if (itup != 2) { #line 9055 "" + if (itup != 2) { +#line 9056 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9055 "" +#line 9056 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Figure in xt"\ "up only allowed on 1st note!", (ftnlen)128, ( ftnlen)40); -#line 9057 "" - stop1_(); #line 9058 "" - } else if (*(unsigned char *)durq == 'x') { + stop1_(); #line 9059 "" + } else if (*(unsigned char *)durq == 'x') { +#line 9060 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9059 "" +#line 9060 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "No floating "\ "figures in xtuplets!", (ftnlen)128, (ftnlen) 32); -#line 9061 "" - stop1_(); #line 9062 "" - } + stop1_(); #line 9063 "" + } +#line 9064 "" if (compage_1.usefig && c1ommvl_1.ivx == 1) { -#line 9063 "" +#line 9064 "" *ifig = 1; -#line 9063 "" - } #line 9064 "" + } +#line 9065 "" L26: -#line 9064 "" +#line 9065 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); /* if (index('0123456789#-n_.:',durq) .gt. 0) then */ -#line 9066 "" +#line 9067 "" if (i_indx("0123456789#-n_.:v", durq, (ftnlen)17, (ftnlen) 1) > 0) { -#line 9067 "" - goto L26; #line 9068 "" - } else if (*(unsigned char *)durq == 's') { + goto L26; #line 9069 "" - comligfont_1.isligfont = TRUE_; + } else if (*(unsigned char *)durq == 's') { #line 9070 "" - goto L26; + comligfont_1.isligfont = TRUE_; #line 9071 "" + goto L26; +#line 9072 "" } else if (*(unsigned char *)durq == '+') { /* vertical offset, must be integer then blank */ -#line 9075 "" +#line 9076 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 9076 "" +#line 9077 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) != 0) { -#line 9077 "" +#line 9078 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9077 "" +#line 9078 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Integer "\ "for vertical offset expected here!", ( ftnlen)128, (ftnlen)42); -#line 9079 "" - stop1_(); #line 9080 "" - } + stop1_(); #line 9081 "" + } +#line 9082 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen) 128, (ftnlen)1); -#line 9082 "" - if (*(unsigned char *)durq != ' ') { #line 9083 "" + if (*(unsigned char *)durq != ' ') { +#line 9084 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9083 "" +#line 9084 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Vertical"\ " offset must terminate figure!", (ftnlen) 128, (ftnlen)38); -#line 9085 "" - stop1_(); #line 9086 "" - } + stop1_(); #line 9087 "" - --a1ll_2.iccount; + } #line 9088 "" - goto L26; + --a1ll_2.iccount; #line 9089 "" - } else if (*(unsigned char *)durq != ' ') { + goto L26; #line 9090 "" + } else if (*(unsigned char *)durq != ' ') { +#line 9091 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9090 "" +#line 9091 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Illegal char"\ "acter in figure in xtuplet!", (ftnlen)128, ( ftnlen)39); -#line 9092 "" - stop1_(); #line 9093 "" - } + stop1_(); #line 9094 "" - goto L110; + } #line 9095 "" - } else if (*(unsigned char *)durq == 'G') { + goto L110; #line 9096 "" - ngr = 1; + } else if (*(unsigned char *)durq == 'G') { #line 9097 "" + ngr = 1; +#line 9098 "" L79: -#line 9097 "" +#line 9098 "" g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, ( ftnlen)1); -#line 9098 "" +#line 9099 "" if (i_indx("123456789", charq, (ftnlen)9, (ftnlen)1) > 0) { -#line 9099 "" +#line 9100 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen) 128, (ftnlen)1); -#line 9100 "" - ngr = i_nint(&fnum); #line 9101 "" - --a1ll_2.iccount; + ngr = i_nint(&fnum); #line 9102 "" - goto L79; + --a1ll_2.iccount; #line 9103 "" + goto L79; +#line 9104 "" } else if (i_indx("AWulxs", charq, (ftnlen)6, (ftnlen)1) > 0) { -#line 9104 "" - goto L79; #line 9105 "" - } else if (*(unsigned char *)charq == 'm') { + goto L79; #line 9106 "" + } else if (*(unsigned char *)charq == 'm') { +#line 9107 "" g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); -#line 9107 "" +#line 9108 "" if (i_indx("01234", charq, (ftnlen)5, (ftnlen)1) == 0) { -#line 9108 "" +#line 9109 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9108 "" +#line 9109 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "A digit "\ "less than 5 must follow \"m\" in a grace"\ " note!", (ftnlen)128, (ftnlen)52); -#line 9110 "" - stop1_(); #line 9111 "" - } + stop1_(); #line 9112 "" - goto L79; + } #line 9113 "" + goto L79; +#line 9114 "" } else if (*(unsigned char *)charq == 'X') { /* Space before main note */ -#line 9117 "" +#line 9118 "" g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); -#line 9118 "" +#line 9119 "" if (i_indx("0123456789.", charq, (ftnlen)11, (ftnlen) 1) > 0) { -#line 9119 "" +#line 9120 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, ( ftnlen)128, (ftnlen)1); -#line 9120 "" - --a1ll_2.iccount; #line 9121 "" - goto L79; + --a1ll_2.iccount; #line 9122 "" - } else { + goto L79; #line 9123 "" + } else { +#line 9124 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9123 "" +#line 9124 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "A number"\ " must follow \"X\" in a grace note!", ( ftnlen)128, (ftnlen)41); -#line 9125 "" - stop1_(); #line 9126 "" - } + stop1_(); #line 9127 "" + } +#line 9128 "" } /* At this point, charq is first note name in rest (grace?) */ -#line 9131 "" +#line 9132 "" i__4 = ngr; -#line 9131 "" - for (igr = 1; igr <= i__4; ++igr) { #line 9132 "" - numnum = 0; + for (igr = 1; igr <= i__4; ++igr) { #line 9133 "" - if (igr > 1) { + numnum = 0; #line 9134 "" + if (igr > 1) { +#line 9135 "" L75: -#line 9134 "" +#line 9135 "" g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen) 128, (ftnlen)1); -#line 9135 "" +#line 9136 "" if (*(unsigned char *)charq == ' ') { -#line 9135 "" +#line 9136 "" goto L75; -#line 9135 "" - } #line 9136 "" - } + } #line 9137 "" + } +#line 9138 "" if (i_indx("abcdefg", charq, (ftnlen)7, (ftnlen)1) == 0) { -#line 9138 "" +#line 9139 "" i__5 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9138 "" +#line 9139 "" errmsg_(lineq, &a1ll_2.iccount, &i__5, "In grace"\ ", expected \"a\"-\"g\"!", (ftnlen)128, ( ftnlen)27); -#line 9140 "" - stop1_(); #line 9141 "" - } + stop1_(); #line 9142 "" + } +#line 9143 "" L78: -#line 9142 "" +#line 9143 "" g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); -#line 9143 "" - if (*(unsigned char *)charq != ' ') { #line 9144 "" + if (*(unsigned char *)charq != ' ') { +#line 9145 "" if (i_indx("1234567", charq, (ftnlen)7, (ftnlen)1) > 0) { -#line 9145 "" - if (numnum == 1) { #line 9146 "" + if (numnum == 1) { +#line 9147 "" i__5 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9146 "" +#line 9147 "" errmsg_(lineq, &a1ll_2.iccount, &i__5, "Only one of \"+-1234567\" allow"\ "ed here in grace!", (ftnlen)128, ( ftnlen)46); -#line 9148 "" - stop1_(); #line 9149 "" - } + stop1_(); #line 9150 "" - numnum = 1; + } #line 9151 "" - goto L78; + numnum = 1; #line 9152 "" + goto L78; +#line 9153 "" } else if (i_indx("+-nfs", charq, (ftnlen)5, ( ftnlen)1) > 0) { -#line 9153 "" - goto L78; #line 9154 "" + goto L78; +#line 9155 "" } /* Digits are possible octave numbers */ -#line 9158 "" +#line 9159 "" i__5 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9158 "" +#line 9159 "" errmsg_(lineq, &a1ll_2.iccount, &i__5, "Illegal "\ "character after note name in grace!", ( ftnlen)128, (ftnlen)43); -#line 9160 "" - stop1_(); #line 9161 "" - } + stop1_(); #line 9162 "" + } +#line 9163 "" /* L71: */ -#line 9162 "" - } #line 9163 "" - goto L110; + } #line 9164 "" + goto L110; +#line 9165 "" } else /* if(complicated condition) */ { -#line 9164 "" +#line 9165 "" chax_(ch__2, (ftnlen)1, &c__92); -#line 9164 "" +#line 9165 "" if (*(unsigned char *)durq == *(unsigned char *)&ch__2[0]) { -#line 9165 "" - chklit_(lineq, &a1ll_2.iccount, &literr, (ftnlen)128); #line 9166 "" - if (literr > 0) { + chklit_(lineq, &a1ll_2.iccount, &literr, (ftnlen)128); #line 9167 "" + if (literr > 0) { +#line 9168 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9167 "" +#line 9168 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, literq + ( literr - 1) * 51, (ftnlen)128, (ftnlen)51) ; -#line 9169 "" - stop1_(); #line 9170 "" - } + stop1_(); #line 9171 "" - goto L110; + } #line 9172 "" + goto L110; +#line 9173 "" } else if (*(unsigned char *)durq == '"') { /* pmx lyric */ -#line 9176 "" +#line 9177 "" chkpmxlyr_(lineq, &a1ll_2.iccount, &lyrerr, (ftnlen) 128); -#line 9177 "" - if (lyrerr > 0) { #line 9178 "" + if (lyrerr > 0) { +#line 9179 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9178 "" +#line 9179 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, lyrerq + ( lyrerr - 1) * 51, (ftnlen)128, (ftnlen)51) ; -#line 9180 "" - stop1_(); #line 9181 "" - } + stop1_(); #line 9182 "" - goto L110; + } #line 9183 "" + goto L110; +#line 9184 "" } else if (*(unsigned char *)durq == 'M') { /* Temporary trap until I get around putting this in pmxb */ -#line 9187 "" +#line 9188 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9187 "" +#line 9188 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Macros not y"\ "et allowed in xtuplets!", (ftnlen)128, ( ftnlen)35); -#line 9189 "" - stop1_(); #line 9190 "" - } else if (*(unsigned char *)durq == 'X') { + stop1_(); #line 9191 "" + } else if (*(unsigned char *)durq == 'X') { +#line 9192 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9191 "" +#line 9192 "" g1etx_(lineq, &a1ll_2.iccount, &comkeys_1.shifton, & i__4, &c1omnotes_1.udsp[c1omnotes_1.ibarcnt + a1ll_2.nbars], &c1omnotes_1.wheadpt, (ftnlen) 128); -#line 9193 "" - goto L110; #line 9194 "" + goto L110; +#line 9195 "" } else if (*(unsigned char *)durq == 'z') { /* Chord note in xtup. Read past for now. */ -#line 9198 "" +#line 9199 "" L33: -#line 9198 "" +#line 9199 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 9199 "" +#line 9200 "" if (*(unsigned char *)durq != ' ') { -#line 9199 "" +#line 9200 "" goto L33; -#line 9199 "" - } #line 9200 "" - goto L110; + } #line 9201 "" + goto L110; +#line 9202 "" } else if (*(unsigned char *)durq == 'D') { /* Dynamic mark */ -#line 9205 "" +#line 9206 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9205 "" - checkdyn_(lineq, &a1ll_2.iccount, &i__4, (ftnlen)128); #line 9206 "" - goto L110; + checkdyn_(lineq, &a1ll_2.iccount, &i__4, (ftnlen)128); #line 9207 "" - } else if (*(unsigned char *)durq == '%') { + goto L110; #line 9208 "" - if (a1ll_2.iccount != 1) { + } else if (*(unsigned char *)durq == '%') { #line 9209 "" + if (a1ll_2.iccount != 1) { +#line 9210 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9209 "" +#line 9210 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Comment "\ "must have \"%\" in column 1!", (ftnlen) 128, (ftnlen)34); -#line 9211 "" - stop1_(); #line 9212 "" - } + stop1_(); #line 9213 "" - a1ll_2.iccount = 128; + } #line 9214 "" - goto L110; + a1ll_2.iccount = 128; #line 9215 "" - } else if (*(unsigned char *)durq == '?') { + goto L110; #line 9216 "" + } else if (*(unsigned char *)durq == '?') { +#line 9217 "" getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 9217 "" - if (*(unsigned char *)durq == ' ') { #line 9218 "" - --a1ll_2.iccount; + if (*(unsigned char *)durq == ' ') { #line 9219 "" - goto L110; + --a1ll_2.iccount; #line 9220 "" - } + goto L110; #line 9221 "" - if (*(unsigned char *)durq != '-') { + } #line 9222 "" + if (*(unsigned char *)durq != '-') { +#line 9223 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9222 "" +#line 9223 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Expectin"\ "g \"-\"", (ftnlen)128, (ftnlen)13); -#line 9224 "" - stop1_(); #line 9225 "" - } + stop1_(); #line 9226 "" + } +#line 9227 "" getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 9227 "" +#line 9228 "" if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { -#line 9228 "" +#line 9229 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9228 "" +#line 9229 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Expectin"\ "g number", (ftnlen)128, (ftnlen)16); -#line 9230 "" - stop1_(); #line 9231 "" - } + stop1_(); #line 9232 "" + } +#line 9233 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen) 128, (ftnlen)1); -#line 9233 "" - --a1ll_2.iccount; #line 9234 "" + --a1ll_2.iccount; +#line 9235 "" goto L110; /* 140215 Allow clef change inside xtup */ -#line 9238 "" - } else if (*(unsigned char *)durq == 'C') { #line 9239 "" + } else if (*(unsigned char *)durq == 'C') { +#line 9240 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 9240 "" +#line 9241 "" if (! (i_indx("tsmanrbf", durq, (ftnlen)8, (ftnlen)1) > 0 || *(unsigned char *)durq >= 48 && *( unsigned char *)durq <= 56)) { /* * (ichar(durq).ge.48 .and. ichar(durq).le.55))) then */ -#line 9243 "" +#line 9244 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9243 "" +#line 9244 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Must hav"\ "e t,s,m,a,n,r,b,f or 0-8 after C!", ( ftnlen)128, (ftnlen)41); -#line 9245 "" - stop1_(); #line 9246 "" + stop1_(); +#line 9247 "" } /* gotclef = .true. */ -#line 9248 "" +#line 9249 "" goto L110; /* +++ */ -#line 9250 "" +#line 9251 "" } else /* if(complicated condition) */ { -#line 9250 "" +#line 9251 "" i__4 = a1ll_2.iccount; -#line 9250 "" +#line 9251 "" i__5 = a1ll_2.iccount + 1; -#line 9250 "" +#line 9251 "" if (*(unsigned char *)durq == ']' && s_cmp(lineq + i__4, "[", a1ll_2.iccount + 1 - i__4, (ftnlen) 1) == 0 && s_cmp(lineq + i__5, " ", a1ll_2.iccount + 2 - i__5, (ftnlen)1) == 0) { -#line 9252 "" - a1ll_2.iccount += 2; #line 9253 "" + a1ll_2.iccount += 2; +#line 9254 "" goto L110; /* +++ */ /* Added 200118 to allow dot to be moved on 2nd note of 2-note tremolo */ -#line 9258 "" +#line 9259 "" } -#line 9258 "" +#line 9259 "" } -#line 9258 "" +#line 9259 "" } /* End of xtup options. At this point symbol can only be note or rest */ -#line 9262 "" - if (i_indx("abcdefgr", durq, (ftnlen)8, (ftnlen)1) == 0) { #line 9263 "" + if (i_indx("abcdefgr", durq, (ftnlen)8, (ftnlen)1) == 0) { +#line 9264 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9263 "" +#line 9264 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "In xtup, this ch"\ "aracter is not allowed!", (ftnlen)128, (ftnlen)39) ; -#line 9265 "" - stop1_(); #line 9266 "" - } + stop1_(); #line 9267 "" + } +#line 9268 "" L7: -#line 9267 "" +#line 9268 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 9268 "" - if (i_indx("12345678ulcb", durq, (ftnlen)12, (ftnlen)1) > 0) { #line 9269 "" - goto L7; + if (i_indx("12345678ulcb", durq, (ftnlen)12, (ftnlen)1) > 0) { #line 9270 "" + goto L7; +#line 9271 "" } else if (i_indx("sfn", durq, (ftnlen)3, (ftnlen)1) > 0) { /* Check for MIDI-only accidental. Cannot coexist with accid. pos'n shift. */ -#line 9274 "" +#line 9275 "" i__4 = a1ll_2.iccount; -#line 9274 "" +#line 9275 "" if (s_cmp(lineq + i__4, "i", a1ll_2.iccount + 1 - i__4, ( ftnlen)1) == 0) { -#line 9274 "" +#line 9275 "" ++a1ll_2.iccount; -#line 9274 "" - } #line 9275 "" - goto L7; + } #line 9276 "" + goto L7; +#line 9277 "" } else if (i_indx("+-<>", durq, (ftnlen)4, (ftnlen)1) > 0) { /* May have either octave jump or shifted accid. on main xtup note */ -#line 9280 "" +#line 9281 "" i__4 = a1ll_2.iccount; -#line 9280 "" +#line 9281 "" if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0 && i_indx("01234567890", lineq + i__4, (ftnlen)11, a1ll_2.iccount + 1 - i__4) == 0) { -#line 9280 "" +#line 9281 "" goto L7; -#line 9280 "" +#line 9281 "" } -#line 9283 "" - ++a1ll_2.iccount; #line 9284 "" + ++a1ll_2.iccount; +#line 9285 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 9285 "" - --a1ll_2.iccount; #line 9286 "" - goto L7; + --a1ll_2.iccount; #line 9287 "" + goto L7; +#line 9288 "" } else if (i_indx("DF", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Double an xtup note to make an unequal xtup */ -#line 9291 "" +#line 9292 "" c1ommvl_1.nacc[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = bit_set(c1ommvl_1.nacc[ c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25],18); -#line 9292 "" - ++ndoub; #line 9293 "" - goto L7; + ++ndoub; #line 9294 "" - } else if (*(unsigned char *)durq == 'd') { + goto L7; #line 9295 "" + } else if (*(unsigned char *)durq == 'd') { +#line 9296 "" if (twotrem) { /* 2-note trem, get shift */ -#line 9299 "" +#line 9300 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 9300 "" - if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { #line 9301 "" + if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { +#line 9302 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9301 "" +#line 9302 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Expected"\ " +/- for shifted dot on end of 2-note tr"\ "em!", (ftnlen)128, (ftnlen)51); -#line 9303 "" - stop1_(); #line 9304 "" - } + stop1_(); #line 9305 "" + } +#line 9306 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 9306 "" +#line 9307 "" if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { -#line 9307 "" +#line 9308 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9307 "" +#line 9308 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Expected"\ " number here!", (ftnlen)128, (ftnlen)21); -#line 9309 "" - stop1_(); #line 9310 "" - } + stop1_(); #line 9311 "" + } +#line 9312 "" readnum_(lineq, &a1ll_2.iccount, dumq, &fnum, (ftnlen) 128, (ftnlen)1); -#line 9312 "" +#line 9313 "" if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { /* Vertical shift also */ -#line 9316 "" +#line 9317 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen) 128, (ftnlen)1); -#line 9317 "" +#line 9318 "" if (i_indx("0123456789-.", durq, (ftnlen)12, ( ftnlen)1) == 0) { -#line 9318 "" +#line 9319 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9318 "" +#line 9319 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Expe"\ "cted number after 2nd +/- (shift dot"\ ")!", (ftnlen)128, (ftnlen)42); -#line 9320 "" - stop1_(); #line 9321 "" - } + stop1_(); #line 9322 "" + } +#line 9323 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, ( ftnlen)128, (ftnlen)1); -#line 9323 "" - } #line 9324 "" - --a1ll_2.iccount; + } #line 9325 "" - goto L7; + --a1ll_2.iccount; #line 9326 "" - } else { + goto L7; #line 9327 "" + } else { +#line 9328 "" c1ommvl_1.nacc[c1ommvl_1.ivx + a1ll_2.nnl[ c1ommvl_1.ivx - 1] * 24 - 25] = bit_set( c1ommvl_1.nacc[c1ommvl_1.ivx + a1ll_2.nnl[ c1ommvl_1.ivx - 1] * 24 - 25],27); -#line 9328 "" - } #line 9329 "" - goto L7; + } #line 9330 "" - } else if (*(unsigned char *)durq != ' ') { + goto L7; #line 9331 "" + } else if (*(unsigned char *)durq != ' ') { +#line 9332 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9331 "" +#line 9332 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Illegal option o"\ "n xtuplet note!", (ftnlen)128, (ftnlen)31); -#line 9333 "" - stop1_(); #line 9334 "" - } + stop1_(); #line 9335 "" + } +#line 9336 "" if (itup == ntup - ndoub) { -#line 9335 "" +#line 9336 "" goto L3; -#line 9335 "" - } #line 9336 "" + } +#line 9337 "" /* L6: */ -#line 9336 "" - } #line 9337 "" + } +#line 9338 "" L3: /* 6==End of loop for xtuplet input */ -#line 9341 "" +#line 9342 "" ; -#line 9341 "" +#line 9342 "" } else if (*(unsigned char *)durq == 'm') { /* Multi-bar rest: next 1 or two digits are # of bars. */ -#line 9345 "" - if (a1ll_2.itsofar[a1ll_2.iv - 1] % a1ll_2.lenbar != 0) { #line 9346 "" + if (a1ll_2.itsofar[a1ll_2.iv - 1] % a1ll_2.lenbar != 0) { +#line 9347 "" i__1 = a1ll_2.iccount - 1; -#line 9346 "" +#line 9347 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9346 "" +#line 9347 "" errmsg_(lineq, &i__1, &i__4, "Multibar rest must start at be"\ "ginning of bar!", (ftnlen)128, (ftnlen)45); -#line 9348 "" - stop1_(); #line 9349 "" - } else if (a1ll_2.iv == 1 && c1omnotes_1.ibarmbr > 0) { + stop1_(); #line 9350 "" + } else if (a1ll_2.iv == 1 && c1omnotes_1.ibarmbr > 0) { +#line 9351 "" i__1 = a1ll_2.iccount - 1; -#line 9350 "" +#line 9351 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9350 "" +#line 9351 "" errmsg_(lineq, &i__1, &i__4, "Multibar rest only OK at one t"\ "ime per block!", (ftnlen)128, (ftnlen)44); -#line 9352 "" - stop1_(); #line 9353 "" + stop1_(); +#line 9354 "" } /* For some purposes, pretend its one bar only */ -#line 9357 "" +#line 9358 "" a1ll_2.nodur[a1ll_2.iv + a1ll_2.nnl[a1ll_2.iv - 1] * 24 - 25] = a1ll_2.lenbar; -#line 9358 "" - c1omnotes_1.ibarmbr = a1ll_2.nbars + 1; #line 9359 "" + c1omnotes_1.ibarmbr = a1ll_2.nbars + 1; +#line 9360 "" c1omnotes_1.mbrest = 0; /* 20 call g1etchar(lineq,iccount,durq) */ -#line 9361 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 9362 "" - if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 9363 "" + if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { +#line 9364 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9363 "" +#line 9364 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expected an integer "\ "after \"rm\"!", (ftnlen)128, (ftnlen)31); -#line 9365 "" - stop1_(); #line 9366 "" - } + stop1_(); #line 9367 "" + } +#line 9368 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 9368 "" +#line 9369 "" c1omnotes_1.mbrest = i_nint(&fnum); /* iccount = iccount-1 */ -#line 9370 "" - if (a1ll_2.nv > 1) { #line 9371 "" - if (a1ll_2.iv == 1) { + if (a1ll_2.nv > 1) { #line 9372 "" - comkeys_1.mbrestsav = c1omnotes_1.mbrest; + if (a1ll_2.iv == 1) { #line 9373 "" - } else { + comkeys_1.mbrestsav = c1omnotes_1.mbrest; #line 9374 "" - if (c1omnotes_1.mbrest != comkeys_1.mbrestsav) { + } else { #line 9375 "" + if (c1omnotes_1.mbrest != comkeys_1.mbrestsav) { +#line 9376 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9375 "" +#line 9376 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Must enter s"\ "ame multi-bar rest in every voice!", (ftnlen) 128, (ftnlen)46); -#line 9377 "" - stop1_(); #line 9378 "" - } + stop1_(); #line 9379 "" + } +#line 9380 "" } /* Zero out mbrestsav so can check at end of input block whether */ /* all voices have one */ -#line 9384 "" +#line 9385 "" if (a1ll_2.iv == a1ll_2.nv) { -#line 9384 "" +#line 9385 "" comkeys_1.mbrestsav = 0; -#line 9384 "" - } #line 9385 "" - } + } #line 9386 "" + } +#line 9387 "" if (*(unsigned char *)durq == 'n') { /* Get new height */ -#line 9390 "" +#line 9391 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 9391 "" - if (i_indx("+-123456789", durq, (ftnlen)11, (ftnlen)1) == 0) { #line 9392 "" + if (i_indx("+-123456789", durq, (ftnlen)11, (ftnlen)1) == 0) { +#line 9393 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9392 "" +#line 9393 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expected an inte"\ "ger after \"rm[x]n\"!", (ftnlen)128, (ftnlen)35); -#line 9394 "" - stop1_(); #line 9395 "" - } + stop1_(); #line 9396 "" + } +#line 9397 "" if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) != 0) { -#line 9396 "" +#line 9397 "" ++a1ll_2.iccount; -#line 9396 "" - } #line 9397 "" + } +#line 9398 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 9398 "" - } #line 9399 "" - if (*(unsigned char *)durq != ' ') { + } #line 9400 "" + if (*(unsigned char *)durq != ' ') { +#line 9401 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9400 "" +#line 9401 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal character af"\ "ter \"rm\"!", (ftnlen)128, (ftnlen)29); -#line 9402 "" - stop1_(); #line 9403 "" - } + stop1_(); #line 9404 "" + } +#line 9405 "" } else if (*(unsigned char *)durq == '.') { /* Dotted pattern. Close out note. Mult time by 3/4. */ /* Set time for next note to 1/4. Start the note. */ -#line 9409 "" - idotform = 1; #line 9410 "" - } else if (*(unsigned char *)durq == ',') { + idotform = 1; #line 9411 "" + } else if (*(unsigned char *)durq == ',') { +#line 9412 "" idotform = 3; /* Now flow to duration setting, as if durq=' ' */ -#line 9415 "" +#line 9416 "" } else if (i_indx("oL", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Suppress full bar rest, or look left for height */ -#line 9419 "" - if (*(unsigned char *)charq != 'r') { #line 9420 "" + if (*(unsigned char *)charq != 'r') { +#line 9421 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9420 "" +#line 9421 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\"o\",\"L\" options "\ "only legal for rest, not note!", (ftnlen)128, (ftnlen) 46); -#line 9422 "" - stop1_(); #line 9423 "" - } + stop1_(); #line 9424 "" - goto L2; + } #line 9425 "" + goto L2; +#line 9426 "" } else if (i_indx("DF", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Double note for xtup. Must check here in case "D" or "F" came before "x" or on */ /* last note of xtup. Need to flag it in pmxa since affects horiz. spacing. */ -#line 9430 "" +#line 9431 "" c1ommvl_1.nacc[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = bit_set(c1ommvl_1.nacc[c1ommvl_1.ivx + a1ll_2.nnl[ c1ommvl_1.ivx - 1] * 24 - 25],18); -#line 9431 "" - goto L2; #line 9432 "" + goto L2; +#line 9433 "" } else if (*(unsigned char *)durq == 'A') { /* Main note accidental option */ -#line 9436 "" - getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 9437 "" - if (i_indx("o+-<>", durq, (ftnlen)5, (ftnlen)1) == 0) { + getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 9438 "" + if (i_indx("o+-<>", durq, (ftnlen)5, (ftnlen)1) == 0) { +#line 9439 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9438 "" +#line 9439 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\"o\",+\",\"-\",\""\ "<\",\">\" are the only legal options here!", (ftnlen) 128, (ftnlen)51); -#line 9440 "" - stop1_(); #line 9441 "" + stop1_(); +#line 9442 "" } /* Need more stuff here */ -#line 9445 "" +#line 9446 "" if (*(unsigned char *)durq != 'o') { /* Back up 1, flow out, will get +|-|<|> next loop preceded by "A", and will */ /* proceed to number input checking */ -#line 9450 "" - --a1ll_2.iccount; #line 9451 "" - } + --a1ll_2.iccount; #line 9452 "" - goto L2; + } #line 9453 "" + goto L2; +#line 9454 "" } else if (*(unsigned char *)durq == 'T') { /* Single stem tremolo. Only option (optional) is 1,2,3, or 4. */ -#line 9457 "" - getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 9458 "" + getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); +#line 9459 "" if (i_indx("1234", durq, (ftnlen)4, (ftnlen)1) == 0) { -#line 9458 "" +#line 9459 "" --a1ll_2.iccount; -#line 9458 "" - } #line 9459 "" - goto L2; + } #line 9460 "" - } else if (*(unsigned char *)durq != ' ') { + goto L2; #line 9461 "" + } else if (*(unsigned char *)durq != ' ') { +#line 9462 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9461 "" +#line 9462 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal character!", ( ftnlen)128, (ftnlen)18); -#line 9463 "" - s_wsle(&io___658); -#line 9463 "" +#line 9464 "" + s_wsle(&io___659); +#line 9464 "" do_lio(&c__9, &c__1, "ASCII code:", (ftnlen)11); -#line 9463 "" +#line 9464 "" i__1 = *(unsigned char *)durq; -#line 9463 "" +#line 9464 "" do_lio(&c__3, &c__1, (char *)&i__1, (ftnlen)sizeof(integer)); -#line 9463 "" - e_wsle(); #line 9464 "" - stop1_(); + e_wsle(); #line 9465 "" + stop1_(); +#line 9466 "" } /* End of block for note options. */ /* Set the duration */ -#line 9471 "" - if (idotform > 0) { #line 9472 "" - if (idotform == 1) { + if (idotform > 0) { #line 9473 "" + if (idotform == 1) { +#line 9474 "" a1ll_2.nodur[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = i1fnodur_(&c1omnotes_1.nnodur, dotq, ( ftnlen)1) * 3 / 2; -#line 9474 "" - } else if (idotform == 2) { #line 9475 "" + } else if (idotform == 2) { +#line 9476 "" a1ll_2.nodur[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = a1ll_2.nodur[c1ommvl_1.ivx + (a1ll_2.nnl[ c1ommvl_1.ivx - 1] - 1) * 24 - 25] / 3; -#line 9476 "" - } else if (idotform == 3) { #line 9477 "" + } else if (idotform == 3) { +#line 9478 "" a1ll_2.nodur[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = i1fnodur_(&c1omnotes_1.nnodur, dotq, ( ftnlen)1); -#line 9478 "" - } else if (idotform == 4) { #line 9479 "" + } else if (idotform == 4) { +#line 9480 "" a1ll_2.nodur[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = a1ll_2.nodur[c1ommvl_1.ivx + (a1ll_2.nnl[ c1ommvl_1.ivx - 1] - 1) * 24 - 25] / 2; -#line 9480 "" - } #line 9481 "" - } else if (c1omnotes_1.ibarmbr != a1ll_2.nbars + 1 && ! fulbrp) { + } #line 9482 "" + } else if (c1omnotes_1.ibarmbr != a1ll_2.nbars + 1 && ! fulbrp) { +#line 9483 "" a1ll_2.nodur[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = i1fnodur_(&c1omnotes_1.nnodur, dotq, (ftnlen)1); /* Check for double dot */ -#line 9486 "" - if (c1omnotes_1.iddot == 1) { #line 9487 "" + if (c1omnotes_1.iddot == 1) { +#line 9488 "" a1ll_2.nodur[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = a1ll_2.nodur[c1ommvl_1.ivx + a1ll_2.nnl[ c1ommvl_1.ivx - 1] * 24 - 25] * 7 / 6; -#line 9488 "" - c1omnotes_1.iddot = 0; #line 9489 "" - } + c1omnotes_1.iddot = 0; #line 9490 "" - } else if (fulbrp) { + } #line 9491 "" + } else if (fulbrp) { +#line 9492 "" a1ll_2.nodur[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = a1ll_2.lenbar; /* Use a one-line function to set nnodur. It gives inverse of ifnodur. */ -#line 9495 "" +#line 9496 "" i__1 = (integer) (log(a1ll_2.lenbar + .1f) / .69315f) + 48; -#line 9495 "" +#line 9496 "" chax_(ch__2, (ftnlen)1, &i__1); -#line 9495 "" +#line 9496 "" c1omnotes_1.nnodur = i_indx("62514x0x37", ch__2, (ftnlen)10, ( ftnlen)1) - 1; -#line 9497 "" - fulbrp = FALSE_; #line 9498 "" - } + fulbrp = FALSE_; #line 9499 "" + } +#line 9500 "" a1ll_2.rest[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] = *(unsigned char *)charq == 'r'; /* If inside forced beam, check if note is beamable */ -#line 9503 "" - if (c1omget_1.fbon) { #line 9504 "" + if (c1omget_1.fbon) { +#line 9505 "" if (a1ll_2.nodur[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25] < 16) { -#line 9504 "" +#line 9505 "" goto L120; -#line 9504 "" - } #line 9505 "" - if (a1ll_2.nnl[c1ommvl_1.ivx - 1] > 1) { + } #line 9506 "" + if (a1ll_2.nnl[c1ommvl_1.ivx - 1] > 1) { +#line 9507 "" if (a1ll_2.nodur[c1ommvl_1.ivx + (a1ll_2.nnl[c1ommvl_1.ivx - 1] - 1) * 24 - 25] == 0) { -#line 9506 "" +#line 9507 "" goto L120; -#line 9506 "" - } #line 9507 "" - } + } #line 9508 "" + } +#line 9509 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9508 "" +#line 9509 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Unbeamable thing in forc"\ "ed beam!", (ftnlen)128, (ftnlen)32); -#line 9510 "" - stop1_(); #line 9511 "" - } + stop1_(); #line 9512 "" + } +#line 9513 "" L120: /* Get number of prior bars for later check on whether note spans bar line */ -#line 9516 "" - nbb4 = a1ll_2.itsofar[c1ommvl_1.ivx - 1] / a1ll_2.lenbar; #line 9517 "" + nbb4 = a1ll_2.itsofar[c1ommvl_1.ivx - 1] / a1ll_2.lenbar; +#line 9518 "" a1ll_2.itsofar[c1ommvl_1.ivx - 1] += a1ll_2.nodur[c1ommvl_1.ivx + a1ll_2.nnl[c1ommvl_1.ivx - 1] * 24 - 25]; -#line 9518 "" - if (a1ll_2.itsofar[c1ommvl_1.ivx - 1] % a1ll_2.lenbar == 0) { #line 9519 "" - ++a1ll_2.nbars; + if (a1ll_2.itsofar[c1ommvl_1.ivx - 1] % a1ll_2.lenbar == 0) { #line 9520 "" + ++a1ll_2.nbars; +#line 9521 "" if (comkeys_1.shifton) { -#line 9520 "" +#line 9521 "" comkeys_1.barend = TRUE_; -#line 9520 "" +#line 9521 "" } /* Will check barend when 1st note of next bar is entered. */ -#line 9524 "" - if (a1ll_2.nbars > 15) { #line 9525 "" + if (a1ll_2.nbars > 15) { +#line 9526 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9525 "" +#line 9526 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Cannot have more tha"\ "n 15 bars in an input block!", (ftnlen)128, (ftnlen) 48); -#line 9527 "" - stop1_(); #line 9528 "" - } + stop1_(); #line 9529 "" + } +#line 9530 "" a1ll_2.nib[c1ommvl_1.ivx + a1ll_2.nbars * 24 - 25] = a1ll_2.nnl[ c1ommvl_1.ivx - 1]; -#line 9530 "" +#line 9531 "" if (a1ll_2.firstline && a1ll_2.lenbar != a1ll_2.lenbr1) { /* Just finished the pickup bar for this voice. */ -#line 9534 "" - if (a1ll_2.itsofar[c1ommvl_1.ivx - 1] != a1ll_2.lenbr0) { #line 9535 "" + if (a1ll_2.itsofar[c1ommvl_1.ivx - 1] != a1ll_2.lenbr0) { +#line 9536 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9535 "" +#line 9536 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Pickup bar lengt"\ "h disagrees with mtrnum0!", (ftnlen)128, (ftnlen) 41); -#line 9537 "" - stop1_(); #line 9538 "" - } + stop1_(); #line 9539 "" - a1ll_2.lenbar = a1ll_2.lenbr1; + } #line 9540 "" - a1ll_2.itsofar[c1ommvl_1.ivx - 1] = 0; + a1ll_2.lenbar = a1ll_2.lenbr1; #line 9541 "" - } + a1ll_2.itsofar[c1ommvl_1.ivx - 1] = 0; #line 9542 "" - } else if (comkeys_1.barend) { + } #line 9543 "" - if (comkeys_1.shifton) { + } else if (comkeys_1.barend) { #line 9544 "" + if (comkeys_1.shifton) { +#line 9545 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9544 "" +#line 9545 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Bar ended with user-"\ "defined shift still on!", (ftnlen)128, (ftnlen)43); -#line 9546 "" - stop1_(); #line 9547 "" - } + stop1_(); #line 9548 "" - comkeys_1.barend = FALSE_; + } #line 9549 "" - } else if (a1ll_2.itsofar[c1ommvl_1.ivx - 1] / a1ll_2.lenbar > nbb4) { + comkeys_1.barend = FALSE_; #line 9550 "" + } else if (a1ll_2.itsofar[c1ommvl_1.ivx - 1] / a1ll_2.lenbar > nbb4) { +#line 9551 "" i__1 = a1ll_2.iccount - 1; -#line 9550 "" +#line 9551 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9550 "" +#line 9551 "" errmsg_(lineq, &i__1, &i__4, "This note spans a bar line!", ( ftnlen)128, (ftnlen)27); -#line 9552 "" - stop1_(); #line 9553 "" - } + stop1_(); #line 9554 "" - if (idotform == 1 || idotform == 3) { + } #line 9555 "" - g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); + if (idotform == 1 || idotform == 3) { #line 9556 "" - if (i_indx("abcedfgr", charq, (ftnlen)8, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 9557 "" + if (i_indx("abcedfgr", charq, (ftnlen)8, (ftnlen)1) == 0) { +#line 9558 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9557 "" +#line 9558 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expected note name o"\ "r \"r\" here!", (ftnlen)128, (ftnlen)31); -#line 9559 "" - stop1_(); #line 9560 "" - } + stop1_(); #line 9561 "" - ++idotform; + } #line 9562 "" - numnum = 1; + ++idotform; #line 9563 "" - goto L28; + numnum = 1; #line 9564 "" + goto L28; +#line 9565 "" } /* End of sub block for note-rest */ -#line 9568 "" - } else if (*(unsigned char *)charq == 'z') { #line 9569 "" - g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); + } else if (*(unsigned char *)charq == 'z') { #line 9570 "" - if (i_indx("abcdefg", charq, (ftnlen)7, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 9571 "" + if (i_indx("abcdefg", charq, (ftnlen)7, (ftnlen)1) == 0) { +#line 9572 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9571 "" +#line 9572 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expected chord note name"\ " here!", (ftnlen)128, (ftnlen)30); -#line 9573 "" - stop1_(); #line 9574 "" - } + stop1_(); #line 9575 "" + } +#line 9576 "" L25: -#line 9575 "" +#line 9576 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); /* if (index('dre12345678',durq) .gt. 0) then */ -#line 9577 "" - if (i_indx("dre12345678c", durq, (ftnlen)12, (ftnlen)1) > 0) { #line 9578 "" - goto L25; + if (i_indx("dre12345678c", durq, (ftnlen)12, (ftnlen)1) > 0) { #line 9579 "" + goto L25; +#line 9580 "" } else if (i_indx("fsn", durq, (ftnlen)3, (ftnlen)1) > 0) { /* Check for midi-only accid. CANNOT coesist with accidental position tweaks, so */ /* MUST come right after "f,s,n" */ -#line 9584 "" +#line 9585 "" i__1 = a1ll_2.iccount; -#line 9584 "" +#line 9585 "" if (s_cmp(lineq + i__1, "i", a1ll_2.iccount + 1 - i__1, (ftnlen)1) == 0) { -#line 9584 "" +#line 9585 "" ++a1ll_2.iccount; -#line 9584 "" - } #line 9585 "" - goto L25; + } #line 9586 "" - } else if (*(unsigned char *)durq == 'A') { + goto L25; #line 9587 "" + } else if (*(unsigned char *)durq == 'A') { +#line 9588 "" i__1 = a1ll_2.iccount - 2; -#line 9587 "" +#line 9588 "" if (i_indx("fsn", lineq + i__1, (ftnlen)3, a1ll_2.iccount - 1 - i__1) == 0) { -#line 9588 "" +#line 9589 "" i__1 = a1ll_2.iccount - 1; -#line 9588 "" +#line 9589 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9588 "" +#line 9589 "" errmsg_(lineq, &i__1, &i__4, "Must have \"f,s,n\" before \""\ "A\" in chord note!", (ftnlen)128, (ftnlen)43); -#line 9590 "" - stop1_(); #line 9591 "" - } + stop1_(); #line 9592 "" - goto L25; + } #line 9593 "" - } else if (i_indx("<>", durq, (ftnlen)2, (ftnlen)1) > 0) { + goto L25; #line 9594 "" + } else if (i_indx("<>", durq, (ftnlen)2, (ftnlen)1) > 0) { +#line 9595 "" i__1 = a1ll_2.iccount - 2; -#line 9594 "" +#line 9595 "" if (i_indx("fsnA", lineq + i__1, (ftnlen)4, a1ll_2.iccount - 1 - i__1) == 0) { /* if (index('fsncA',lineq(iccount-1:iccount-1)) .eq. 0) then ! Causes problems */ -#line 9596 "" +#line 9597 "" i__1 = a1ll_2.iccount - 1; -#line 9596 "" +#line 9597 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9596 "" +#line 9597 "" errmsg_(lineq, &i__1, &i__4, "Must have \"f,s,n,A\" before"\ " \"<\" or \">\"!", (ftnlen)128, (ftnlen)38); -#line 9598 "" - stop1_(); #line 9599 "" - } + stop1_(); #line 9600 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); + } #line 9601 "" - if (i_indx("1234567890.", durq, (ftnlen)11, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 9602 "" + if (i_indx("1234567890.", durq, (ftnlen)11, (ftnlen)1) == 0) { +#line 9603 "" i__1 = a1ll_2.iccount - 1; -#line 9602 "" +#line 9603 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9602 "" +#line 9603 "" errmsg_(lineq, &i__1, &i__4, "Expected a number to start her"\ "e for accidental shift!", (ftnlen)128, (ftnlen)53); -#line 9604 "" - stop1_(); #line 9605 "" - } + stop1_(); #line 9606 "" + } +#line 9607 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 9607 "" - --a1ll_2.iccount; #line 9608 "" - goto L25; + --a1ll_2.iccount; #line 9609 "" - } else if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { + goto L25; #line 9610 "" + } else if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { +#line 9611 "" i__1 = a1ll_2.iccount; -#line 9610 "" +#line 9611 "" if (i_indx("1234567890.", lineq + i__1, (ftnlen)11, a1ll_2.iccount + 1 - i__1) == 0) { -#line 9610 "" +#line 9611 "" goto L25; -#line 9610 "" +#line 9611 "" } /* Number or '.' (durq) follows +/- . Get it. */ -#line 9615 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 9616 "" + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); +#line 9617 "" i__1 = a1ll_2.iccount; -#line 9616 "" +#line 9617 "" if (*(unsigned char *)durq == '.' && i_indx("1234567890", lineq + i__1, (ftnlen)10, a1ll_2.iccount + 1 - i__1) == 0) { -#line 9618 "" +#line 9619 "" i__1 = a1ll_2.iccount - 1; -#line 9618 "" +#line 9619 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9618 "" +#line 9619 "" errmsg_(lineq, &i__1, &i__4, "\".\" here must be followed by"\ " a digit!", (ftnlen)128, (ftnlen)37); -#line 9620 "" - stop1_(); #line 9621 "" + stop1_(); +#line 9622 "" } else /* if(complicated condition) */ { -#line 9621 "" +#line 9622 "" i__1 = a1ll_2.iccount - 3; -#line 9621 "" +#line 9622 "" if (i_indx("sfndA", lineq + i__1, (ftnlen)5, a1ll_2.iccount - 2 - i__1) == 0) { -#line 9622 "" +#line 9623 "" i__1 = a1ll_2.iccount - 1; -#line 9622 "" +#line 9623 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9622 "" +#line 9623 "" errmsg_(lineq, &i__1, &i__4, "Number after +/- must foll"\ "ow \"d,s,f,n,A\"!", (ftnlen)128, (ftnlen)41); -#line 9624 "" - stop1_(); #line 9625 "" + stop1_(); +#line 9626 "" } -#line 9625 "" - } #line 9626 "" + } +#line 9627 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 9627 "" - if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { #line 9628 "" - --a1ll_2.iccount; + if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { #line 9629 "" - goto L25; + --a1ll_2.iccount; #line 9630 "" + goto L25; +#line 9631 "" } /* 2nd +/- */ -#line 9634 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 9635 "" + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); +#line 9636 "" if (*(unsigned char *)durq == '.') { -#line 9635 "" +#line 9636 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 9635 "" - } #line 9636 "" - if (i_indx("1234567890", durq, (ftnlen)10, (ftnlen)1) == 0) { + } #line 9637 "" + if (i_indx("1234567890", durq, (ftnlen)10, (ftnlen)1) == 0) { +#line 9638 "" i__1 = a1ll_2.iccount - 1; -#line 9637 "" +#line 9638 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9637 "" +#line 9638 "" errmsg_(lineq, &i__1, &i__4, "Expected a number here!", ( ftnlen)128, (ftnlen)23); -#line 9639 "" - stop1_(); #line 9640 "" - } + stop1_(); #line 9641 "" + } +#line 9642 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 9642 "" - --a1ll_2.iccount; #line 9643 "" - goto L25; + --a1ll_2.iccount; #line 9644 "" - } else if (*(unsigned char *)durq != ' ') { + goto L25; #line 9645 "" + } else if (*(unsigned char *)durq != ' ') { +#line 9646 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9645 "" +#line 9646 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal character in cho"\ "rd note!", (ftnlen)128, (ftnlen)32); -#line 9647 "" - stop1_(); #line 9648 "" - } + stop1_(); #line 9649 "" - } else if (*(unsigned char *)charq == 'G') { + } #line 9650 "" - ngr = 1; + } else if (*(unsigned char *)charq == 'G') { #line 9651 "" + ngr = 1; +#line 9652 "" L9: -#line 9651 "" - g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 9652 "" - if (i_indx("123456789", charq, (ftnlen)9, (ftnlen)1) > 0) { + g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 9653 "" + if (i_indx("123456789", charq, (ftnlen)9, (ftnlen)1) > 0) { +#line 9654 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 9654 "" - ngr = i_nint(&fnum); #line 9655 "" - --a1ll_2.iccount; + ngr = i_nint(&fnum); #line 9656 "" - goto L9; + --a1ll_2.iccount; #line 9657 "" - } else if (i_indx("AWulxs", charq, (ftnlen)6, (ftnlen)1) > 0) { -#line 9658 "" goto L9; +#line 9658 "" + } else if (i_indx("AWulxs", charq, (ftnlen)6, (ftnlen)1) > 0) { #line 9659 "" - } else if (*(unsigned char *)charq == 'm') { + goto L9; #line 9660 "" - g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); + } else if (*(unsigned char *)charq == 'm') { #line 9661 "" - if (i_indx("01234", charq, (ftnlen)5, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 9662 "" + if (i_indx("01234", charq, (ftnlen)5, (ftnlen)1) == 0) { +#line 9663 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9662 "" +#line 9663 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "A digit less than 5 "\ "must follow \"m\" in a grace note!", (ftnlen)128, ( ftnlen)52); -#line 9664 "" - stop1_(); #line 9665 "" - } + stop1_(); #line 9666 "" - goto L9; + } #line 9667 "" + goto L9; +#line 9668 "" } else if (*(unsigned char *)charq == 'X') { /* Space before main note */ -#line 9671 "" - g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 9672 "" - if (i_indx("0123456789.", charq, (ftnlen)11, (ftnlen)1) > 0) { + g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 9673 "" + if (i_indx("0123456789.", charq, (ftnlen)11, (ftnlen)1) > 0) { +#line 9674 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 9674 "" - --a1ll_2.iccount; #line 9675 "" - goto L9; + --a1ll_2.iccount; #line 9676 "" - } else { + goto L9; #line 9677 "" + } else { +#line 9678 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9677 "" +#line 9678 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "A number must foll"\ "ow \"X\" in a grace note!", (ftnlen)128, (ftnlen)41); -#line 9679 "" - stop1_(); #line 9680 "" - } + stop1_(); #line 9681 "" + } +#line 9682 "" } /* At this point, charq is first note name in rest (grace?) */ -#line 9685 "" +#line 9686 "" i__1 = ngr; -#line 9685 "" - for (igr = 1; igr <= i__1; ++igr) { #line 9686 "" - numnum = 0; + for (igr = 1; igr <= i__1; ++igr) { #line 9687 "" - if (igr > 1) { + numnum = 0; #line 9688 "" + if (igr > 1) { +#line 9689 "" L55: -#line 9688 "" +#line 9689 "" g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen) 1); -#line 9689 "" +#line 9690 "" if (*(unsigned char *)charq == ' ') { -#line 9689 "" +#line 9690 "" goto L55; -#line 9689 "" - } #line 9690 "" - } + } #line 9691 "" - if (i_indx("abcdefg", charq, (ftnlen)7, (ftnlen)1) == 0) { + } #line 9692 "" + if (i_indx("abcdefg", charq, (ftnlen)7, (ftnlen)1) == 0) { +#line 9693 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9692 "" +#line 9693 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "In grace, expected"\ " \"a\"-\"g\"!", (ftnlen)128, (ftnlen)27); -#line 9694 "" - stop1_(); #line 9695 "" - } + stop1_(); #line 9696 "" + } +#line 9697 "" L18: -#line 9696 "" - g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 9697 "" - if (*(unsigned char *)charq != ' ') { + g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 9698 "" - if (i_indx("1234567", charq, (ftnlen)7, (ftnlen)1) > 0) { + if (*(unsigned char *)charq != ' ') { #line 9699 "" - if (numnum == 1) { + if (i_indx("1234567", charq, (ftnlen)7, (ftnlen)1) > 0) { #line 9700 "" + if (numnum == 1) { +#line 9701 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9700 "" +#line 9701 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Only one of"\ " \"+-1234567\" allowed here in grace!", ( ftnlen)128, (ftnlen)46); -#line 9702 "" - stop1_(); #line 9703 "" - } + stop1_(); #line 9704 "" - numnum = 1; + } #line 9705 "" + numnum = 1; +#line 9706 "" goto L18; /* else if (index('nfs',charq) .gt. 0) then */ -#line 9707 "" - } else if (i_indx("+-nfs", charq, (ftnlen)5, (ftnlen)1) > 0) { #line 9708 "" - goto L18; + } else if (i_indx("+-nfs", charq, (ftnlen)5, (ftnlen)1) > 0) { #line 9709 "" + goto L18; +#line 9710 "" } /* Digits are possible octave numbers */ -#line 9713 "" +#line 9714 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9713 "" +#line 9714 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Illegal character af"\ "ter note name in grace!", (ftnlen)128, (ftnlen)43); -#line 9715 "" - stop1_(); #line 9716 "" - } + stop1_(); #line 9717 "" + } +#line 9718 "" /* L19: */ -#line 9717 "" - } #line 9718 "" + } +#line 9719 "" } else /* if(complicated condition) */ { -#line 9718 "" +#line 9719 "" chax_(ch__2, (ftnlen)1, &c__92); -#line 9718 "" - if (*(unsigned char *)charq == *(unsigned char *)&ch__2[0]) { #line 9719 "" - chklit_(lineq, &a1ll_2.iccount, &literr, (ftnlen)128); + if (*(unsigned char *)charq == *(unsigned char *)&ch__2[0]) { #line 9720 "" - if (literr > 0) { + chklit_(lineq, &a1ll_2.iccount, &literr, (ftnlen)128); #line 9721 "" + if (literr > 0) { +#line 9722 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9721 "" +#line 9722 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, literq + (literr - 1) * 51, (ftnlen)128, (ftnlen)51); -#line 9723 "" - stop1_(); #line 9724 "" - } + stop1_(); #line 9725 "" + } +#line 9726 "" } else if (*(unsigned char *)charq == '"') { /* pmx lyric */ -#line 9729 "" - chkpmxlyr_(lineq, &a1ll_2.iccount, &lyrerr, (ftnlen)128); #line 9730 "" - if (lyrerr > 0) { + chkpmxlyr_(lineq, &a1ll_2.iccount, &lyrerr, (ftnlen)128); #line 9731 "" + if (lyrerr > 0) { +#line 9732 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9731 "" +#line 9732 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, lyrerq + (lyrerr - 1) * 51, (ftnlen)128, (ftnlen)51); -#line 9733 "" - stop1_(); #line 9734 "" - } + stop1_(); #line 9735 "" + } +#line 9736 "" } else if (*(unsigned char *)charq == 'o') { /* Ornament on non-xtup note. "o" symbol must come AFTER the affected note */ -#line 9739 "" - if (a1ll_2.nnl[c1ommvl_1.ivx - 1] == 0) { #line 9740 "" + if (a1ll_2.nnl[c1ommvl_1.ivx - 1] == 0) { +#line 9741 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9740 "" +#line 9741 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\"o\" must be in sam"\ "e input block, after affected note!", (ftnlen)128, ( ftnlen)53); -#line 9742 "" - stop1_(); #line 9743 "" - } + stop1_(); #line 9744 "" + } +#line 9745 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen)1); /* if (index('(stmgx+Tupf._)e:>^bc',dumq) .eq. 0 ) then */ -#line 9746 "" +#line 9747 "" if (i_indx("(stmgx+Tupf._)e:>^bcCG", dumq, (ftnlen)22, (ftnlen)1) == 0) { -#line 9747 "" +#line 9748 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9747 "" +#line 9748 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal ornament!", ( ftnlen)128, (ftnlen)17); -#line 9749 "" - stop1_(); #line 9750 "" - } + stop1_(); #line 9751 "" - if (*(unsigned char *)dumq == ':') { + } #line 9752 "" + if (*(unsigned char *)dumq == ':') { +#line 9753 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen) 1); -#line 9753 "" - if (*(unsigned char *)dumq != ' ') { #line 9754 "" + if (*(unsigned char *)dumq != ' ') { +#line 9755 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9754 "" +#line 9755 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expected blank a"\ "fter \"o:\"!", (ftnlen)128, (ftnlen)26); -#line 9756 "" - stop1_(); #line 9757 "" - } else if (! comkeys_1.ornrpt) { + stop1_(); #line 9758 "" + } else if (! comkeys_1.ornrpt) { +#line 9759 "" i__1 = a1ll_2.iccount - 1; -#line 9758 "" +#line 9759 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9758 "" +#line 9759 "" errmsg_(lineq, &i__1, &i__4, "Turned off repeated orname"\ "nts before they were on!", (ftnlen)128, (ftnlen) 50); -#line 9760 "" - stop1_(); #line 9761 "" - } + stop1_(); #line 9762 "" - comkeys_1.ornrpt = FALSE_; + } #line 9763 "" - } else if (*(unsigned char *)dumq == 'g') { + comkeys_1.ornrpt = FALSE_; #line 9764 "" - if (c1omget_1.issegno) { + } else if (*(unsigned char *)dumq == 'g') { #line 9765 "" + if (c1omget_1.issegno) { +#line 9766 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9765 "" +#line 9766 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Sorry, only one"\ " \"segno\" per input block!", (ftnlen)128, ( ftnlen)40); -#line 9767 "" - stop1_(); #line 9768 "" - } else if (c1ommvl_1.ivx != 1) { + stop1_(); #line 9769 "" + } else if (c1ommvl_1.ivx != 1) { +#line 9770 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9769 "" +#line 9770 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "segno can only b"\ "e in voice 1!", (ftnlen)128, (ftnlen)29); -#line 9771 "" - stop1_(); #line 9772 "" - } + stop1_(); #line 9773 "" - c1omget_1.issegno = TRUE_; + } #line 9774 "" + c1omget_1.issegno = TRUE_; +#line 9775 "" L12: -#line 9774 "" +#line 9775 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen) 1); -#line 9775 "" +#line 9776 "" if (*(unsigned char *)dumq == '-' || *(unsigned char *)dumq >= 48 && *(unsigned char *)dumq <= 58) { -#line 9775 "" +#line 9776 "" goto L12; -#line 9775 "" +#line 9776 "" } -#line 9777 "" - if (*(unsigned char *)dumq != ' ') { #line 9778 "" + if (*(unsigned char *)dumq != ' ') { +#line 9779 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9778 "" +#line 9779 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal characte"\ "r in segno ornament symbol!", (ftnlen)128, ( ftnlen)43); -#line 9780 "" - stop1_(); #line 9781 "" - } + stop1_(); #line 9782 "" + } +#line 9783 "" } else if (*(unsigned char *)dumq == 'T') { /* Trill. may be followed by 't' and/or number. read 'til blank */ -#line 9786 "" +#line 9787 "" L22: -#line 9786 "" +#line 9787 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen) 1); -#line 9787 "" - if (*(unsigned char *)dumq == ':') { #line 9788 "" + if (*(unsigned char *)dumq == ':') { +#line 9789 "" i__1 = a1ll_2.iccount; -#line 9788 "" +#line 9789 "" if (s_cmp(lineq + i__1, " ", a1ll_2.iccount + 1 - i__1, ( ftnlen)1) != 0) { -#line 9789 "" +#line 9790 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9789 "" +#line 9790 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expected bla"\ "nk after \":\"!", (ftnlen)128, (ftnlen)25); -#line 9791 "" - stop1_(); #line 9792 "" - } + stop1_(); #line 9793 "" - goto L32; + } #line 9794 "" - } else if (*(unsigned char *)dumq != ' ') { + goto L32; #line 9795 "" - goto L22; + } else if (*(unsigned char *)dumq != ' ') { #line 9796 "" - } + goto L22; #line 9797 "" - } else if (*(unsigned char *)dumq == 'f') { + } #line 9798 "" + } else if (*(unsigned char *)dumq == 'f') { +#line 9799 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen) 1); -#line 9799 "" - if (i_indx(" d+-:", dumq, (ftnlen)5, (ftnlen)1) == 0) { #line 9800 "" + if (i_indx(" d+-:", dumq, (ftnlen)5, (ftnlen)1) == 0) { +#line 9801 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9800 "" +#line 9801 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal characte"\ "r after \"f\" in fermata ornament symbol!", ( ftnlen)128, (ftnlen)55); -#line 9802 "" - stop1_(); #line 9803 "" - } + stop1_(); #line 9804 "" + } +#line 9805 "" if (*(unsigned char *)dumq == 'd') { -#line 9804 "" +#line 9805 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 9804 "" - } #line 9805 "" + } +#line 9806 "" if (*(unsigned char *)dumq == ':') { -#line 9805 "" +#line 9806 "" goto L32; -#line 9805 "" - } #line 9806 "" - } else if (*(unsigned char *)dumq == 'e') { + } #line 9807 "" + } else if (*(unsigned char *)dumq == 'e') { +#line 9808 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen) 1); -#line 9808 "" - if (i_indx("sfn?", dumq, (ftnlen)4, (ftnlen)1) == 0) { #line 9809 "" + if (i_indx("sfn?", dumq, (ftnlen)4, (ftnlen)1) == 0) { +#line 9810 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9809 "" +#line 9810 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal characte"\ "r after \"e\" in edit. accid. symbol!", (ftnlen) 128, (ftnlen)51); -#line 9811 "" - stop1_(); #line 9812 "" - } + stop1_(); #line 9813 "" + } +#line 9814 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen) 1); -#line 9814 "" +#line 9815 "" if (*(unsigned char *)dumq == '?') { -#line 9814 "" +#line 9815 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 9814 "" - } #line 9815 "" - } else { + } #line 9816 "" + } else { +#line 9817 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen) 1); -#line 9817 "" - } #line 9818 "" - if (i_indx("+- :", dumq, (ftnlen)4, (ftnlen)1) == 0) { + } #line 9819 "" + if (i_indx("+- :", dumq, (ftnlen)4, (ftnlen)1) == 0) { +#line 9820 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9819 "" +#line 9820 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal character in"\ " ornament symbol!", (ftnlen)128, (ftnlen)37); -#line 9821 "" - stop1_(); #line 9822 "" - } + stop1_(); #line 9823 "" - if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { + } #line 9824 "" + if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { +#line 9825 "" i__1 = a1ll_2.iccount; -#line 9824 "" +#line 9825 "" if (i_indx("0123456789", lineq + i__1, (ftnlen)10, a1ll_2.iccount + 1 - i__1) == 0) { -#line 9825 "" +#line 9826 "" i__1 = a1ll_2.iccount + 1; -#line 9825 "" +#line 9826 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9825 "" +#line 9826 "" errmsg_(lineq, &i__1, &i__4, "There should be an integer"\ " here!", (ftnlen)128, (ftnlen)32); -#line 9827 "" - stop1_(); #line 9828 "" - } + stop1_(); #line 9829 "" + } +#line 9830 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 9830 "" - if (*(unsigned char *)durq == ':') { #line 9831 "" + if (*(unsigned char *)durq == ':') { +#line 9832 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9831 "" +#line 9832 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Cannot shift AND"\ " repeat an ornament!", (ftnlen)128, (ftnlen)36); -#line 9833 "" - stop1_(); #line 9834 "" + stop1_(); +#line 9835 "" } /* 12/7/03 Allow horizontal shift on any ornament, not just breath and caes. */ -#line 9838 "" - if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { #line 9839 "" + if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { +#line 9840 "" i__1 = a1ll_2.iccount; -#line 9839 "" +#line 9840 "" if (i_indx(".0123456789", lineq + i__1, (ftnlen)11, a1ll_2.iccount + 1 - i__1) == 0) { -#line 9841 "" +#line 9842 "" i__1 = a1ll_2.iccount + 1; -#line 9841 "" +#line 9842 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9841 "" +#line 9842 "" errmsg_(lineq, &i__1, &i__4, "There should be a numb"\ "er here!", (ftnlen)128, (ftnlen)30); -#line 9843 "" - stop1_(); #line 9844 "" - } + stop1_(); #line 9845 "" + } +#line 9846 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 9846 "" - } #line 9847 "" - } + } #line 9848 "" -L32: + } #line 9849 "" - if (*(unsigned char *)dumq == ':') { +L32: #line 9850 "" + if (*(unsigned char *)dumq == ':') { +#line 9851 "" i__1 = a1ll_2.iccount; -#line 9850 "" +#line 9851 "" if (s_cmp(lineq + i__1, " ", a1ll_2.iccount + 1 - i__1, ( ftnlen)1) != 0) { -#line 9851 "" +#line 9852 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9851 "" +#line 9852 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\":\" must be fo"\ "llowed by blank in \"o: \"!", (ftnlen)128, ( ftnlen)39); -#line 9853 "" - stop1_(); #line 9854 "" - } else if (comkeys_1.ornrpt) { + stop1_(); #line 9855 "" + } else if (comkeys_1.ornrpt) { +#line 9856 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9855 "" +#line 9856 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Turned on repeat"\ "ed ornaments but already on!", (ftnlen)128, ( ftnlen)44); -#line 9857 "" - stop1_(); #line 9858 "" - } + stop1_(); #line 9859 "" - comkeys_1.ornrpt = TRUE_; + } #line 9860 "" - } + comkeys_1.ornrpt = TRUE_; #line 9861 "" - } else if (i_indx("st(){}", charq, (ftnlen)6, (ftnlen)1) > 0) { + } #line 9862 "" - numint = 0; + } else if (i_indx("st(){}", charq, (ftnlen)6, (ftnlen)1) > 0) { #line 9863 "" - iposn = 0; + numint = 0; #line 9864 "" + iposn = 0; +#line 9865 "" L8: -#line 9864 "" - g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen)1); #line 9865 "" - ++iposn; + g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen)1); #line 9866 "" + ++iposn; +#line 9867 "" if (*(unsigned char *)charq == 't' && *(unsigned char *)dumq == 't') { -#line 9867 "" +#line 9868 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9867 "" +#line 9868 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Cannot use \"t\" as "\ "an option on a tie!", (ftnlen)128, (ftnlen)37); -#line 9869 "" - stop1_(); #line 9870 "" - } + stop1_(); #line 9871 "" + } +#line 9872 "" if (i_indx("udltb+-fnhHpsv ", dumq, (ftnlen)15, (ftnlen)1) == 0) { /* Check for explicit ID code. */ -#line 9875 "" - ic = *(unsigned char *)dumq; #line 9876 "" + ic = *(unsigned char *)dumq; +#line 9877 "" if (ic < 48 || ic > 57 && ic < 65 || ic > 90) { /* Not 0-9 or A-Z, so exit */ -#line 9881 "" +#line 9882 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9881 "" +#line 9882 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal characte"\ "r in slur symbol!", (ftnlen)128, (ftnlen)33); -#line 9883 "" - stop1_(); #line 9884 "" + stop1_(); +#line 9885 "" } else { /* It is a possible ID code. Right place? */ -#line 9888 "" +#line 9889 "" if (iposn != 1) { /* Slur ID is not 2nd! */ -#line 9892 "" +#line 9893 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9892 "" +#line 9893 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Slur ID must"\ " be second character in slur symbol!", ( ftnlen)128, (ftnlen)48); -#line 9894 "" - stop1_(); #line 9895 "" + stop1_(); +#line 9896 "" } else if (*(unsigned char *)charq == 't' && comslur_1.fontslur) { -#line 9896 "" +#line 9897 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9896 "" +#line 9897 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Slur ID not "\ "allowed on non-postscript tie!", (ftnlen)128, (ftnlen)42); -#line 9898 "" - stop1_(); #line 9899 "" + stop1_(); +#line 9900 "" } else /* if(complicated condition) */ { -#line 9899 "" +#line 9900 "" i__1 = a1ll_2.iccount; -#line 9899 "" +#line 9900 "" if (s_cmp(lineq + i__1, "x", a1ll_2.iccount + 1 - i__1, (ftnlen)1) == 0) { -#line 9900 "" - ++a1ll_2.iccount; #line 9901 "" + ++a1ll_2.iccount; +#line 9902 "" } -#line 9901 "" - } #line 9902 "" + } +#line 9903 "" } /* Slur ID is OK. Note it cannot be "H" at this point.. */ -#line 9906 "" - goto L8; #line 9907 "" - } else if (*(unsigned char *)dumq == 'H') { + goto L8; #line 9908 "" + } else if (*(unsigned char *)dumq == 'H') { +#line 9909 "" if (iposn == 1) { -#line 9908 "" +#line 9909 "" goto L8; -#line 9908 "" +#line 9909 "" } /* "H" is NOT an ID code. */ -#line 9912 "" - if (! comslur_1.fontslur && *(unsigned char *)charq == 't') { #line 9913 "" + if (! comslur_1.fontslur && *(unsigned char *)charq == 't') { +#line 9914 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9913 "" +#line 9914 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Cannot reshape p"\ "ostscript ties this way!", (ftnlen)128, (ftnlen) 40); -#line 9915 "" - stop1_(); #line 9916 "" - } + stop1_(); #line 9917 "" + } +#line 9918 "" i__1 = a1ll_2.iccount; -#line 9917 "" +#line 9918 "" if (s_cmp(lineq + i__1, "H", a1ll_2.iccount + 1 - i__1, ( ftnlen)1) == 0) { -#line 9918 "" - ++a1ll_2.iccount; #line 9919 "" - ++iposn; + ++a1ll_2.iccount; #line 9920 "" - } + ++iposn; #line 9921 "" - goto L8; + } #line 9922 "" + goto L8; +#line 9923 "" } else if (i_indx("fh", dumq, (ftnlen)2, (ftnlen)1) > 0 && ! comslur_1.fontslur && *(unsigned char *)charq == 't') { /* 3/9/03 Can't reshape postscript tie. */ -#line 9927 "" +#line 9928 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9927 "" +#line 9928 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Cannot reshape posts"\ "cript ties this way!", (ftnlen)128, (ftnlen)40); -#line 9929 "" - stop1_(); #line 9930 "" + stop1_(); +#line 9931 "" } else if (*(unsigned char *)dumq == 'p') { /* local change in postscript slur/tie adjustment default */ -#line 9934 "" - if (comslur_1.fontslur) { #line 9935 "" + if (comslur_1.fontslur) { +#line 9936 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9935 "" +#line 9936 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Must use postscr"\ "ipt slurs (\"Ap\") to use this option!", (ftnlen) 128, (ftnlen)52); -#line 9937 "" - stop1_(); #line 9938 "" - } + stop1_(); #line 9939 "" + } +#line 9940 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen) 1); -#line 9940 "" - if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) == 0) { #line 9941 "" + if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) == 0) { +#line 9942 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9941 "" +#line 9942 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expected \"+\" o"\ "r \"-\" here!", (ftnlen)128, (ftnlen)25); -#line 9943 "" - stop1_(); #line 9944 "" - } + stop1_(); #line 9945 "" + } +#line 9946 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen) 1); -#line 9946 "" - if (i_indx("st", dumq, (ftnlen)2, (ftnlen)1) == 0) { #line 9947 "" + if (i_indx("st", dumq, (ftnlen)2, (ftnlen)1) == 0) { +#line 9948 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9947 "" +#line 9948 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expected \"s\" o"\ "r \"t\" here!", (ftnlen)128, (ftnlen)25); -#line 9949 "" - stop1_(); #line 9950 "" - } + stop1_(); #line 9951 "" - iposn += 2; + } #line 9952 "" - goto L8; + iposn += 2; #line 9953 "" - } + goto L8; #line 9954 "" - if (i_indx("udltbfnh", dumq, (ftnlen)8, (ftnlen)1) > 0) { + } #line 9955 "" - goto L8; + if (i_indx("udltbfnh", dumq, (ftnlen)8, (ftnlen)1) > 0) { #line 9956 "" - } else if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { + goto L8; #line 9957 "" - ++numint; + } else if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { #line 9958 "" - if (comslur_1.fontslur && *(unsigned char *)charq == 't') { + ++numint; #line 9959 "" + if (comslur_1.fontslur && *(unsigned char *)charq == 't') { +#line 9960 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9959 "" +#line 9960 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\"+|-\" for slur"\ " height only allowed in \"s\"-slurs!", (ftnlen) 128, (ftnlen)48); -#line 9961 "" - stop1_(); #line 9962 "" - } + stop1_(); #line 9963 "" - ++a1ll_2.iccount; + } #line 9964 "" + ++a1ll_2.iccount; +#line 9965 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 9965 "" - if (numint == 1) { #line 9966 "" - if (i_nint(&fnum) > 30) { + if (numint == 1) { #line 9967 "" + if (i_nint(&fnum) > 30) { +#line 9968 "" i__1 = a1ll_2.iccount - 1; -#line 9967 "" +#line 9968 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9967 "" +#line 9968 "" errmsg_(lineq, &i__1, &i__4, "Magnitude of slur heig"\ "ht adjustment cannot exceed 30!", (ftnlen)128, (ftnlen)53); -#line 9969 "" - stop1_(); #line 9970 "" - } + stop1_(); #line 9971 "" - } else if (numint == 2) { + } #line 9972 "" - if (dabs(fnum) > 6.3f) { + } else if (numint == 2) { #line 9973 "" + if (dabs(fnum) > 6.3f) { +#line 9974 "" i__1 = a1ll_2.iccount - 1; -#line 9973 "" +#line 9974 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9973 "" +#line 9974 "" errmsg_(lineq, &i__1, &i__4, "Slur horiz shift must "\ "be in range (-6.3,6.3)!", (ftnlen)128, ( ftnlen)45); -#line 9975 "" - stop1_(); #line 9976 "" - } + stop1_(); #line 9977 "" + } +#line 9978 "" } else { /* Third signed integer, must be a midslur or curve spec. */ -#line 9981 "" - if (dabs(fnum) > 31.f) { #line 9982 "" + if (dabs(fnum) > 31.f) { +#line 9983 "" i__1 = a1ll_2.iccount - 1; -#line 9982 "" +#line 9983 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9982 "" +#line 9983 "" errmsg_(lineq, &i__1, &i__4, "Slur midheight must be"\ " in the range (-31,31)!", (ftnlen)128, ( ftnlen)45); -#line 9984 "" - stop1_(); #line 9985 "" - } + stop1_(); #line 9986 "" + } +#line 9987 "" if (*(unsigned char *)durq == ':') { /* Expecting curve parameters. Get two numbers */ -#line 9990 "" - for (i__ = 1; i__ <= 2; ++i__) { #line 9991 "" - ++a1ll_2.iccount; + for (i__ = 1; i__ <= 2; ++i__) { #line 9992 "" + ++a1ll_2.iccount; +#line 9993 "" fnum = (real) (*(unsigned char *)&lineq[ a1ll_2.iccount - 1] - 48); -#line 9993 "" - if ((r__1 = fnum - 3.5f, dabs(r__1)) > 3.6f) { #line 9994 "" + if ((r__1 = fnum - 3.5f, dabs(r__1)) > 3.6f) { +#line 9995 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 9994 "" +#line 9995 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Slur"\ " curve parameter must be in range (0"\ ",7)!", (ftnlen)128, (ftnlen)44); -#line 9996 "" - stop1_(); #line 9997 "" - } + stop1_(); #line 9998 "" + } +#line 9999 "" /* L41: */ -#line 9998 "" - } #line 9999 "" - ++a1ll_2.iccount; + } #line 10000 "" - } + ++a1ll_2.iccount; #line 10001 "" - } + } #line 10002 "" - --a1ll_2.iccount; + } #line 10003 "" - goto L8; + --a1ll_2.iccount; #line 10004 "" + goto L8; +#line 10005 "" } else if (*(unsigned char *)dumq == 's') { /* What follows should be one or two signed numbers for adjustment of line break */ /* slur, end of 1st segment or start of second. */ -#line 10009 "" - if (comslur_1.fontslur) { #line 10010 "" + if (comslur_1.fontslur) { +#line 10011 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10010 "" +#line 10011 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "May not use line"\ "break slur options with font-based slurs!", ( ftnlen)128, (ftnlen)57); -#line 10012 "" - stop1_(); #line 10013 "" - } + stop1_(); #line 10014 "" + } +#line 10015 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen) 1); -#line 10015 "" - if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) == 0) { #line 10016 "" + if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) == 0) { +#line 10017 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10016 "" +#line 10017 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "This character m"\ "ust be \"+\" or \"-\"!", (ftnlen)128, (ftnlen)34); -#line 10018 "" - stop1_(); #line 10019 "" - } + stop1_(); #line 10020 "" - ++a1ll_2.iccount; + } #line 10021 "" + ++a1ll_2.iccount; +#line 10022 "" readnum_(lineq, &a1ll_2.iccount, dumq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 10022 "" - if (i_nint(&fnum) > 30) { #line 10023 "" + if (i_nint(&fnum) > 30) { +#line 10024 "" i__1 = a1ll_2.iccount - 1; -#line 10023 "" +#line 10024 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10023 "" +#line 10024 "" errmsg_(lineq, &i__1, &i__4, "Magnitude of slur height a"\ "djustment cannot exceed 30!", (ftnlen)128, ( ftnlen)53); -#line 10025 "" - stop1_(); #line 10026 "" - } + stop1_(); #line 10027 "" - if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { + } #line 10028 "" - ++a1ll_2.iccount; + if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { #line 10029 "" + ++a1ll_2.iccount; +#line 10030 "" readnum_(lineq, &a1ll_2.iccount, dumq, &fnum, (ftnlen)128, (ftnlen)1); -#line 10030 "" - if (dabs(fnum) > 6.3f) { #line 10031 "" + if (dabs(fnum) > 6.3f) { +#line 10032 "" i__1 = a1ll_2.iccount - 1; -#line 10031 "" +#line 10032 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10031 "" +#line 10032 "" errmsg_(lineq, &i__1, &i__4, "Slur horiz shift must "\ "be in range (-6.3,6.3)!", (ftnlen)128, ( ftnlen)45); -#line 10033 "" - stop1_(); #line 10034 "" - } + stop1_(); #line 10035 "" - } + } #line 10036 "" - --a1ll_2.iccount; + } #line 10037 "" - goto L8; + --a1ll_2.iccount; #line 10038 "" - } else if (*(unsigned char *)dumq == 'H' && iposn > 1) { + goto L8; #line 10039 "" + } else if (*(unsigned char *)dumq == 'H' && iposn > 1) { +#line 10040 "" i__1 = a1ll_2.iccount; -#line 10039 "" +#line 10040 "" if (s_cmp(lineq + i__1, "H", a1ll_2.iccount + 1 - i__1, ( ftnlen)1) == 0) { -#line 10039 "" +#line 10040 "" ++a1ll_2.iccount; -#line 10039 "" - } #line 10040 "" - goto L8; + } #line 10041 "" - } + goto L8; #line 10042 "" - } else if (*(unsigned char *)charq == '?') { + } #line 10043 "" - getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); + } else if (*(unsigned char *)charq == '?') { #line 10044 "" - if (*(unsigned char *)durq == ' ') { + getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 10045 "" - --a1ll_2.iccount; + if (*(unsigned char *)durq == ' ') { #line 10046 "" - } else { + --a1ll_2.iccount; #line 10047 "" - if (*(unsigned char *)durq != '-') { + } else { #line 10048 "" + if (*(unsigned char *)durq != '-') { +#line 10049 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10048 "" +#line 10049 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expecting \"-\"!", (ftnlen)128, (ftnlen)14); -#line 10050 "" - stop1_(); #line 10051 "" - } + stop1_(); #line 10052 "" + } +#line 10053 "" getchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1) ; -#line 10053 "" - if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { #line 10054 "" + if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { +#line 10055 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10054 "" +#line 10055 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expecting number!" , (ftnlen)128, (ftnlen)17); -#line 10056 "" - stop1_(); #line 10057 "" - } + stop1_(); #line 10058 "" + } +#line 10059 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 10059 "" - --a1ll_2.iccount; #line 10060 "" - } + --a1ll_2.iccount; #line 10061 "" + } +#line 10062 "" } else if (*(unsigned char *)charq >= 48 && *(unsigned char *)charq <= 57 || i_indx("#-nx_", charq, (ftnlen)5, (ftnlen)1) > 0) { /* We have a figure. Must come AFTER the note it goes under */ -#line 10066 "" +#line 10067 "" if (a1ll_2.itsofar[c1ommvl_1.ivx - 1] == 0 && (! a1ll_2.firstline || a1ll_2.lenbr0 == 0 || a1ll_2.lenbar == a1ll_2.lenbr0)) { /* Figure before first note in block */ -#line 10071 "" +#line 10072 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10071 "" +#line 10072 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Cannot put figure be"\ "fore first note in block!", (ftnlen)128, (ftnlen)45); -#line 10073 "" - stop1_(); #line 10074 "" - } + stop1_(); #line 10075 "" - if (*(unsigned char *)charq == 'x') { + } #line 10076 "" + if (*(unsigned char *)charq == 'x') { +#line 10077 "" indxb = i_indx(lineq + (a1ll_2.iccount - 1), " ", 128 - ( a1ll_2.iccount - 1), (ftnlen)1); -#line 10077 "" - if (indxb < 5) { #line 10078 "" + if (indxb < 5) { +#line 10079 "" i__1 = a1ll_2.iccount + indxb - 1; -#line 10078 "" +#line 10079 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10078 "" +#line 10079 "" errmsg_(lineq, &i__1, &i__4, "Cannot have a blank here i"\ "n floating figure!", (ftnlen)128, (ftnlen)44); -#line 10080 "" - stop1_(); #line 10081 "" - } + stop1_(); #line 10082 "" - } + } #line 10083 "" + } +#line 10084 "" if (compage_1.usefig) { -#line 10083 "" +#line 10084 "" *ifig = 1; -#line 10083 "" - } #line 10084 "" + } +#line 10085 "" L5: -#line 10084 "" - g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 10085 "" + g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); +#line 10086 "" if (i_indx(" 0123456789#-nx_.:+sv", charq, (ftnlen)21, (ftnlen)1) == 0) { -#line 10086 "" +#line 10087 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10086 "" +#line 10087 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal character in"\ " figure!", (ftnlen)128, (ftnlen)28); -#line 10088 "" - stop1_(); #line 10089 "" + stop1_(); +#line 10090 "" } else if (*(unsigned char *)charq == '+') { /* vertical offset, must be integer, then blank */ -#line 10093 "" +#line 10094 "" g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen) 1); -#line 10094 "" - if (i_indx("123456789", charq, (ftnlen)9, (ftnlen)1) == 0) { #line 10095 "" + if (i_indx("123456789", charq, (ftnlen)9, (ftnlen)1) == 0) { +#line 10096 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10095 "" +#line 10096 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Integer for vert"\ "ical offset expected here!", (ftnlen)128, (ftnlen) 42); -#line 10097 "" - stop1_(); #line 10098 "" - } + stop1_(); #line 10099 "" + } +#line 10100 "" readnum_(lineq, &a1ll_2.iccount, charq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 10100 "" - if (*(unsigned char *)charq != ' ') { #line 10101 "" + if (*(unsigned char *)charq != ' ') { +#line 10102 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10101 "" +#line 10102 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Vertical offset "\ "must terminate figure!", (ftnlen)128, (ftnlen)38); -#line 10103 "" - stop1_(); #line 10104 "" - } + stop1_(); #line 10105 "" - --a1ll_2.iccount; + } #line 10106 "" - goto L5; + --a1ll_2.iccount; #line 10107 "" - } else if (*(unsigned char *)charq == 's') { + goto L5; #line 10108 "" - comligfont_1.isligfont = TRUE_; + } else if (*(unsigned char *)charq == 's') { #line 10109 "" - } + comligfont_1.isligfont = TRUE_; #line 10110 "" + } +#line 10111 "" if (*(unsigned char *)charq != ' ') { -#line 10110 "" +#line 10111 "" goto L5; -#line 10110 "" - } #line 10111 "" - } else if (*(unsigned char *)charq == '[') { + } #line 10112 "" - if (c1omget_1.fbon) { + } else if (*(unsigned char *)charq == '[') { #line 10113 "" + if (c1omget_1.fbon) { +#line 10114 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10113 "" +#line 10114 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Started forced beam "\ "while another was open!", (ftnlen)128, (ftnlen)43); -#line 10115 "" - stop1_(); #line 10116 "" - } + stop1_(); #line 10117 "" - c1omget_1.fbon = TRUE_; + } #line 10118 "" + c1omget_1.fbon = TRUE_; +#line 10119 "" L17: -#line 10118 "" - g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 10119 "" - if (i_indx("uljhf:", charq, (ftnlen)6, (ftnlen)1) > 0) { + g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 10120 "" - goto L17; + if (i_indx("uljhf:", charq, (ftnlen)6, (ftnlen)1) > 0) { #line 10121 "" - } else if (i_indx("+-", charq, (ftnlen)2, (ftnlen)1) > 0) { + goto L17; #line 10122 "" - ++a1ll_2.iccount; + } else if (i_indx("+-", charq, (ftnlen)2, (ftnlen)1) > 0) { #line 10123 "" + ++a1ll_2.iccount; +#line 10124 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 10124 "" - --a1ll_2.iccount; #line 10125 "" - goto L17; + --a1ll_2.iccount; #line 10126 "" + goto L17; +#line 10127 "" } else if (*(unsigned char *)charq == 'm') { /* Forced multiplicity, next char should be 1-4 */ -#line 10130 "" +#line 10131 "" g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen) 1); -#line 10131 "" - if (i_indx("1234", charq, (ftnlen)4, (ftnlen)1) == 0) { #line 10132 "" + if (i_indx("1234", charq, (ftnlen)4, (ftnlen)1) == 0) { +#line 10133 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10132 "" +#line 10133 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Forced multiplic"\ "ity for a beam must be 1, 2, 3, or 4!", (ftnlen) 128, (ftnlen)53); -#line 10134 "" - stop1_(); #line 10135 "" - } + stop1_(); #line 10136 "" - goto L17; + } #line 10137 "" - } else if (*(unsigned char *)charq != ' ') { + goto L17; #line 10138 "" - if (i_indx("0123456789", charq, (ftnlen)10, (ftnlen)1) > 0) { + } else if (*(unsigned char *)charq != ' ') { #line 10139 "" + if (i_indx("0123456789", charq, (ftnlen)10, (ftnlen)1) > 0) { +#line 10140 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10139 "" +#line 10140 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "After \"[\", dig"\ "its must now be preceeded by \"+\" or \"-\"!", ( ftnlen)128, (ftnlen)54); -#line 10141 "" - s_wsle(&io___661); -#line 10141 "" - do_lio(&c__9, &c__1, "You will have to edit older source"\ - "s to meet this rqmt,", (ftnlen)54); -#line 10141 "" - e_wsle(); #line 10142 "" s_wsle(&io___662); #line 10142 "" - do_lio(&c__9, &c__1, "but it was needed to allow 2-digit"\ - " height adjustments.", (ftnlen)54); + do_lio(&c__9, &c__1, "You will have to edit older source"\ + "s to meet this rqmt,", (ftnlen)54); #line 10142 "" e_wsle(); #line 10143 "" s_wsle(&io___663); #line 10143 "" - do_lio(&c__9, &c__1, "Sorry for the inconvenience. --Th"\ - "e Management", (ftnlen)46); + do_lio(&c__9, &c__1, "but it was needed to allow 2-digit"\ + " height adjustments.", (ftnlen)54); #line 10143 "" e_wsle(); #line 10144 "" - } else { + s_wsle(&io___664); +#line 10144 "" + do_lio(&c__9, &c__1, "Sorry for the inconvenience. --Th"\ + "e Management", (ftnlen)46); +#line 10144 "" + e_wsle(); #line 10145 "" + } else { +#line 10146 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10145 "" +#line 10146 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal characte"\ "r after [!", (ftnlen)128, (ftnlen)26); -#line 10147 "" - } #line 10148 "" - stop1_(); + } #line 10149 "" - } + stop1_(); #line 10150 "" - } else if (*(unsigned char *)charq == ']') { + } #line 10151 "" - if (! c1omget_1.fbon) { + } else if (*(unsigned char *)charq == ']') { #line 10152 "" + if (! c1omget_1.fbon) { +#line 10153 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10152 "" +#line 10153 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Forced beam stop wit"\ "h no corresponding start!", (ftnlen)128, (ftnlen)45); -#line 10154 "" - stop1_(); #line 10155 "" - } + stop1_(); #line 10156 "" - g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); + } #line 10157 "" - if (*(unsigned char *)charq == '-') { + g1etchar_(lineq, &a1ll_2.iccount, charq, (ftnlen)128, (ftnlen)1); #line 10158 "" + if (*(unsigned char *)charq == '-') { +#line 10159 "" i__1 = a1ll_2.iccount; -#line 10158 "" +#line 10159 "" if (s_cmp(lineq + i__1, "[ ", a1ll_2.iccount + 2 - i__1, ( ftnlen)2) != 0) { -#line 10159 "" +#line 10160 "" i__1 = a1ll_2.iccount + 1; -#line 10159 "" +#line 10160 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10159 "" +#line 10160 "" errmsg_(lineq, &i__1, &i__4, "Only sequence allowed here"\ " is \"[ \"!", (ftnlen)128, (ftnlen)35); -#line 10161 "" - stop1_(); #line 10162 "" - } else { + stop1_(); #line 10163 "" - a1ll_2.iccount += 2; + } else { #line 10164 "" - } + a1ll_2.iccount += 2; #line 10165 "" - } else if (*(unsigned char *)charq == '[') { + } #line 10166 "" + } else if (*(unsigned char *)charq == '[') { +#line 10167 "" i__1 = a1ll_2.iccount; -#line 10166 "" +#line 10167 "" if (s_cmp(lineq + i__1, " ", a1ll_2.iccount + 1 - i__1, ( ftnlen)1) != 0) { -#line 10167 "" +#line 10168 "" i__1 = a1ll_2.iccount + 1; -#line 10167 "" +#line 10168 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10167 "" +#line 10168 "" errmsg_(lineq, &i__1, &i__4, "This character must be a b"\ "lank!", (ftnlen)128, (ftnlen)31); -#line 10169 "" - stop1_(); #line 10170 "" - } + stop1_(); #line 10171 "" + } +#line 10172 "" } else { /* Forced beam is really ending */ -#line 10175 "" - c1omget_1.fbon = FALSE_; #line 10176 "" - if (*(unsigned char *)charq == 'j') { + c1omget_1.fbon = FALSE_; #line 10177 "" + if (*(unsigned char *)charq == 'j') { +#line 10178 "" i__1 = a1ll_2.iccount; -#line 10177 "" +#line 10178 "" if (s_cmp(lineq + i__1, " ", a1ll_2.iccount + 1 - i__1, ( ftnlen)1) != 0) { -#line 10178 "" +#line 10179 "" i__1 = a1ll_2.iccount + 1; -#line 10178 "" +#line 10179 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10178 "" +#line 10179 "" errmsg_(lineq, &i__1, &i__4, "This character must be"\ " a blank!", (ftnlen)128, (ftnlen)31); -#line 10180 "" - stop1_(); #line 10181 "" - } + stop1_(); #line 10182 "" - } else if (*(unsigned char *)charq != ' ') { + } #line 10183 "" + } else if (*(unsigned char *)charq != ' ') { +#line 10184 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10183 "" +#line 10184 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\"]\" must be fo"\ "llowed by blank, \"j\", \"-\", or \"[\"!", ( ftnlen)128, (ftnlen)48); -#line 10185 "" - stop1_(); #line 10186 "" - } + stop1_(); #line 10187 "" - } + } #line 10188 "" + } +#line 10189 "" } else if (*(unsigned char *)charq == 'D') { /* Dynamic mark */ -#line 10192 "" - if (a1ll_2.nnl[c1ommvl_1.ivx - 1] == 0) { #line 10193 "" + if (a1ll_2.nnl[c1ommvl_1.ivx - 1] == 0) { +#line 10194 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10193 "" +#line 10194 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\"D\" must not come "\ "before any notes have been entered!", (ftnlen)128, ( ftnlen)53); -#line 10195 "" - stop1_(); #line 10196 "" - } + stop1_(); #line 10197 "" + } +#line 10198 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10197 "" - checkdyn_(lineq, &a1ll_2.iccount, &i__1, (ftnlen)128); #line 10198 "" + checkdyn_(lineq, &a1ll_2.iccount, &i__1, (ftnlen)128); +#line 10199 "" } else if (i_indx("lhw", charq, (ftnlen)3, (ftnlen)1) > 0) { /* Save position for later check */ -#line 10202 "" - icclhw = a1ll_2.iccount; #line 10203 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); + icclhw = a1ll_2.iccount; #line 10204 "" - if (i_indx("0123456789.+- ", durq, (ftnlen)14, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 10205 "" + if (i_indx("0123456789.+- ", durq, (ftnlen)14, (ftnlen)1) == 0) { +#line 10206 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10205 "" +#line 10206 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal character af"\ "ter \"l\", \"w\", or \"h\"!", (ftnlen)128, (ftnlen)41) ; -#line 10207 "" - stop1_(); #line 10208 "" - } + stop1_(); #line 10209 "" + } +#line 10210 "" c1omget_1.isheadr = c1omget_1.isheadr || *(unsigned char *)charq == 'h'; -#line 10210 "" +#line 10211 "" if (i_indx(" +-", durq, (ftnlen)3, (ftnlen)1) > 0) { /* There is a header (or lower string?) */ -#line 10214 "" +#line 10215 "" if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { /* User-defined vert offset (\internote). */ -#line 10218 "" - if (*(unsigned char *)charq != 'h') { #line 10219 "" + if (*(unsigned char *)charq != 'h') { +#line 10220 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10219 "" +#line 10220 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\"+\" or \""\ "-\" not permitted here!", (ftnlen)128, ( ftnlen)30); -#line 10221 "" - stop1_(); #line 10222 "" + stop1_(); +#line 10223 "" } /* Have "h" followed by +/- . Check for digit. */ /* Can blow durq since not using fnum for now, but... */ -#line 10227 "" +#line 10228 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 10228 "" +#line 10229 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { -#line 10229 "" +#line 10230 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10229 "" +#line 10230 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "There must b"\ "e a digit here!", (ftnlen)128, (ftnlen)27); -#line 10231 "" - stop1_(); #line 10232 "" + stop1_(); +#line 10233 "" } /* Have "h" followed by +/- followed by a digit. No need to get the number. */ /* call readnum(lineq,iccount,durq,fnum) */ -#line 10237 "" - } #line 10238 "" + } +#line 10239 "" if (*(unsigned char *)charq != 'w') { /* Header or lower string. */ -#line 10242 "" - if (icclhw != 1) { #line 10243 "" + if (icclhw != 1) { +#line 10244 "" i__1 = a1ll_2.iccount - 1; -#line 10243 "" +#line 10244 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10243 "" +#line 10244 "" errmsg_(lineq, &i__1, &i__4, "\"h\" or \"l\" must be"\ " first character in line!", (ftnlen)128, ( ftnlen)43); -#line 10245 "" - stop1_(); #line 10246 "" + stop1_(); +#line 10247 "" } /* Read past the next line, which has the string. */ -#line 10250 "" - read10_(charq, &c1omget_1.lastchar, (ftnlen)1); #line 10251 "" - ++c1omget_1.nline; + read10_(charq, &c1omget_1.lastchar, (ftnlen)1); #line 10252 "" - a1ll_2.iccount = 128; + ++c1omget_1.nline; #line 10253 "" - } else { + a1ll_2.iccount = 128; #line 10254 "" + } else { +#line 10255 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10254 "" +#line 10255 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Symbol \"w\" (wi"\ "dth) must be followed by a digit!", (ftnlen)128, ( ftnlen)47); -#line 10256 "" - stop1_(); #line 10257 "" - } + stop1_(); #line 10258 "" + } +#line 10259 "" } else { /* Height or width change spec. Check if at start of piece. */ -#line 10262 "" - if (c1omnotes_1.ibarcnt > 0) { #line 10263 "" + if (c1omnotes_1.ibarcnt > 0) { +#line 10264 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10263 "" +#line 10264 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Symbol must go a"\ "t top of first input block!", (ftnlen)128, ( ftnlen)43); -#line 10265 "" - stop1_(); #line 10266 "" - } + stop1_(); #line 10267 "" + } +#line 10268 "" readnum_(lineq, &a1ll_2.iccount, durq, &dimen, (ftnlen)128, ( ftnlen)1); /* Check units. Convert to points */ -#line 10271 "" +#line 10272 "" if (*(unsigned char *)durq == ' ' || *(unsigned char *)durq == 'p') { -#line 10272 "" - dimen += .5f; #line 10273 "" - } else if (*(unsigned char *)durq == 'i') { + dimen += .5f; #line 10274 "" - dimen = dimen * 72 + .5f; + } else if (*(unsigned char *)durq == 'i') { #line 10275 "" - } else if (*(unsigned char *)durq == 'm') { + dimen = dimen * 72 + .5f; #line 10276 "" - dimen = dimen / 25.4f * 72 + .5f; + } else if (*(unsigned char *)durq == 'm') { #line 10277 "" - } else { + dimen = dimen / 25.4f * 72 + .5f; #line 10278 "" + } else { +#line 10279 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10278 "" +#line 10279 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal unit; mu"\ "st be \"p\",\"i\",or\"m\"!", (ftnlen)128, (ftnlen) 36); -#line 10280 "" - stop1_(); #line 10281 "" + stop1_(); +#line 10282 "" } /* 151211 fix. May have extra character. */ -#line 10285 "" +#line 10286 "" if (i_indx("pim", durq, (ftnlen)3, (ftnlen)1) > 0) { /* Get another character, see if it's blank */ -#line 10289 "" +#line 10290 "" i__1 = a1ll_2.iccount; -#line 10289 "" +#line 10290 "" if (s_cmp(lineq + i__1, " ", a1ll_2.iccount + 1 - i__1, ( ftnlen)1) != 0) { -#line 10290 "" +#line 10291 "" i__1 = a1ll_2.iccount + 1; -#line 10290 "" +#line 10291 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10290 "" +#line 10291 "" errmsg_(lineq, &i__1, &i__4, "This character should "\ "be a blank!", (ftnlen)128, (ftnlen)33); -#line 10292 "" - stop1_(); #line 10293 "" - } + stop1_(); #line 10294 "" - } + } #line 10295 "" - if (*(unsigned char *)charq == 'h') { + } #line 10296 "" - compage_1.ptheight = (real) ((integer) dimen); + if (*(unsigned char *)charq == 'h') { #line 10297 "" - } else { + compage_1.ptheight = (real) ((integer) dimen); #line 10298 "" - compage_1.widthpt = (real) ((integer) dimen); + } else { #line 10299 "" - } + compage_1.widthpt = (real) ((integer) dimen); #line 10300 "" - } + } #line 10301 "" + } +#line 10302 "" } else if (*(unsigned char *)charq == 'm') { /* Time signature change. Only allow at beginning of block. */ @@ -25071,116 +25072,116 @@ L17: /* Check whether at beginning of a block */ -#line 10309 "" - if (c1ommvl_1.ivx != 1 || a1ll_2.nnl[0] != 0) { #line 10310 "" + if (c1ommvl_1.ivx != 1 || a1ll_2.nnl[0] != 0) { +#line 10311 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10310 "" +#line 10311 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Meter change only OK"\ " in voice 1, at start of block!", (ftnlen)128, ( ftnlen)51); -#line 10312 "" - s_wsle(&io___666); -#line 10312 "" +#line 10313 "" + s_wsle(&io___667); +#line 10313 "" do_lio(&c__9, &c__1, "voice number is", (ftnlen)15); -#line 10312 "" +#line 10313 "" do_lio(&c__3, &c__1, (char *)&c1ommvl_1.ivx, (ftnlen)sizeof( integer)); -#line 10312 "" - e_wsle(); #line 10313 "" - stop1_(); + e_wsle(); #line 10314 "" - } + stop1_(); #line 10315 "" - a1ll_2.newmeter = TRUE_; + } #line 10316 "" + a1ll_2.newmeter = TRUE_; +#line 10317 "" i__1 = a1ll_2.iccount; -#line 10316 "" +#line 10317 "" if (i_indx("o0123456789", lineq + i__1, (ftnlen)11, a1ll_2.iccount + 1 - i__1) == 0) { -#line 10317 "" +#line 10318 "" i__1 = a1ll_2.iccount + 1; -#line 10317 "" +#line 10318 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10317 "" +#line 10318 "" errmsg_(lineq, &i__1, &i__4, "Illegal character in \"m\" com"\ "mand for meter change!", (ftnlen)128, (ftnlen)50); -#line 10319 "" - stop1_(); #line 10320 "" - } + stop1_(); #line 10321 "" + } +#line 10322 "" readmeter_(lineq, &a1ll_2.iccount, &a1ll_2.mtrnuml, &mtrdenl, ( ftnlen)128); -#line 10322 "" - if (a1ll_2.mtrnuml == 0) { #line 10323 "" + if (a1ll_2.mtrnuml == 0) { +#line 10324 "" i__1 = a1ll_2.iccount - 1; -#line 10323 "" +#line 10324 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10323 "" +#line 10324 "" errmsg_(lineq, &i__1, &i__4, "Digit 0 not allowed here!", ( ftnlen)128, (ftnlen)25); -#line 10325 "" - stop1_(); #line 10326 "" - } + stop1_(); #line 10327 "" + } +#line 10328 "" readmeter_(lineq, &a1ll_2.iccount, &mtrnmp, &mtrdnp, (ftnlen)128); /* Read past printed time signature; not used in pmxa. */ -#line 10331 "" - lenbeat = i1fnodur_(&mtrdenl, "x", (ftnlen)1); #line 10332 "" - lenmult = 1; + lenbeat = i1fnodur_(&mtrdenl, "x", (ftnlen)1); #line 10333 "" - if (mtrdenl == 2) { + lenmult = 1; #line 10334 "" - lenbeat = 16; + if (mtrdenl == 2) { #line 10335 "" - lenmult = 2; + lenbeat = 16; #line 10336 "" - } + lenmult = 2; #line 10337 "" - a1ll_2.lenbar = lenmult * a1ll_2.mtrnuml * lenbeat; + } #line 10338 "" - a1ll_2.mtrnuml = 0; + a1ll_2.lenbar = lenmult * a1ll_2.mtrnuml * lenbeat; #line 10339 "" - } else if (*(unsigned char *)charq == 'C') { + a1ll_2.mtrnuml = 0; #line 10340 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); + } else if (*(unsigned char *)charq == 'C') { #line 10341 "" + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); +#line 10342 "" if (! (i_indx("tsmanrbf", durq, (ftnlen)8, (ftnlen)1) > 0 || *( unsigned char *)durq >= 48 && *(unsigned char *)durq <= 56)) { -#line 10343 "" +#line 10344 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10343 "" +#line 10344 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Must have t,s,m,a,n,"\ "r,b,f or 0-8 after C!", (ftnlen)128, (ftnlen)41); -#line 10345 "" - stop1_(); #line 10346 "" - } + stop1_(); #line 10347 "" - } else if (*(unsigned char *)charq == 'R') { + } #line 10348 "" - if (c1ommvl_1.ivx != 1) { + } else if (*(unsigned char *)charq == 'R') { #line 10349 "" + if (c1ommvl_1.ivx != 1) { +#line 10350 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10349 "" +#line 10350 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Repeats can only go "\ "in voice 1!", (ftnlen)128, (ftnlen)31); -#line 10351 "" - stop1_(); #line 10352 "" + stop1_(); +#line 10353 "" } /* 10 call g1etchar(lineq,iccount,durq) */ /* if (index('lrdDbz',durq) .gt. 0) go to 10 */ @@ -25189,703 +25190,703 @@ L17: /* * 'Illegal character after "R" (repeat/double bar)!') */ /* call stop1() */ /* end if */ -#line 10360 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 10361 "" + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); +#line 10362 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, (ftnlen)1); /* Writing concatenation */ -#line 10362 "" +#line 10363 "" i__3[0] = 1, a__2[0] = durq; -#line 10362 "" +#line 10363 "" i__3[1] = 1, a__2[1] = dumq; -#line 10362 "" +#line 10363 "" s_cat(ch__3, a__2, i__3, &c__2, (ftnlen)2); -#line 10362 "" +#line 10363 "" if (i_indx("l Xr Xd XD Xb Xz XlrXdlX", ch__3, (ftnlen)24, (ftnlen) 2) == 0) { -#line 10363 "" +#line 10364 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10363 "" +#line 10364 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal character af"\ "ter \"R*\" (repeat/double bar)!", (ftnlen)128, ( ftnlen)49); -#line 10365 "" - stop1_(); #line 10366 "" - } + stop1_(); #line 10367 "" - if (*(unsigned char *)dumq != ' ') { + } #line 10368 "" + if (*(unsigned char *)dumq != ' ') { +#line 10369 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10369 "" - if (*(unsigned char *)durq != ' ') { #line 10370 "" + if (*(unsigned char *)durq != ' ') { +#line 10371 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10370 "" +#line 10371 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Must have blank "\ "after \"R**\" (repeat/double bar)!", (ftnlen)128, (ftnlen)48); -#line 10372 "" - stop1_(); #line 10373 "" - } + stop1_(); #line 10374 "" - } + } #line 10375 "" + } +#line 10376 "" } else if (*(unsigned char *)charq == 'V') { /* Ending */ -#line 10379 "" - if (a1ll_2.iv != 1) { #line 10380 "" + if (a1ll_2.iv != 1) { +#line 10381 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10380 "" +#line 10381 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Voltas are only allo"\ "wed in voice #1!", (ftnlen)128, (ftnlen)36); -#line 10382 "" - stop1_(); #line 10383 "" - } else if (c1omget_1.isvolt) { -#line 10384 "" - s_wsle(&io___672); + stop1_(); #line 10384 "" - e_wsle(); + } else if (c1omget_1.isvolt) { #line 10385 "" s_wsle(&io___673); -#line 10385 "" - do_lio(&c__9, &c__1, "*******WARNING********", (ftnlen)22); #line 10385 "" e_wsle(); #line 10386 "" - s_wsfe(&io___674); + s_wsle(&io___674); #line 10386 "" - do_fio(&c__1, "*******WARNING********", (ftnlen)22); + do_lio(&c__9, &c__1, "*******WARNING********", (ftnlen)22); #line 10386 "" - e_wsfe(); + e_wsle(); #line 10387 "" + s_wsfe(&io___675); +#line 10387 "" + do_fio(&c__1, "*******WARNING********", (ftnlen)22); +#line 10387 "" + e_wsfe(); +#line 10388 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10387 "" +#line 10388 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "There is more than o"\ "ne volta in this input block.!", (ftnlen)128, (ftnlen) 50); -#line 10389 "" - s_wsle(&io___675); -#line 10389 "" - do_lio(&c__9, &c__1, "This may work in a score, but WILL NOT"\ - " work in parts.", (ftnlen)53); -#line 10389 "" - e_wsle(); #line 10390 "" s_wsle(&io___676); #line 10390 "" + do_lio(&c__9, &c__1, "This may work in a score, but WILL NOT"\ + " work in parts.", (ftnlen)53); +#line 10390 "" + e_wsle(); +#line 10391 "" + s_wsle(&io___677); +#line 10391 "" do_lio(&c__9, &c__1, "Safest to have only 1 volta per block,"\ " at the start of the block", (ftnlen)64); -#line 10390 "" +#line 10391 "" e_wsle(); -#line 10392 "" - s_wsfe(&io___677); -#line 10392 "" +#line 10393 "" + s_wsfe(&io___678); +#line 10393 "" do_fio(&c__1, "This may work in a score, but WILL NOT work i"\ "n parts.", (ftnlen)53); -#line 10392 "" +#line 10393 "" e_wsfe(); -#line 10394 "" - s_wsfe(&io___678); -#line 10394 "" +#line 10395 "" + s_wsfe(&io___679); +#line 10395 "" do_fio(&c__1, "Safest to have only 1 volta per block, at the"\ " start of the block", (ftnlen)64); -#line 10394 "" +#line 10395 "" e_wsfe(); -#line 10396 "" - } #line 10397 "" - c1omget_1.isvolt = TRUE_; + } #line 10398 "" - lvoltxt = 0; + c1omget_1.isvolt = TRUE_; #line 10399 "" + lvoltxt = 0; +#line 10400 "" L11: -#line 10399 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 10400 "" - if (*(unsigned char *)durq != ' ') { + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 10401 "" - goto L11; + if (*(unsigned char *)durq != ' ') { #line 10402 "" - } + goto L11; #line 10403 "" + } +#line 10404 "" } else if (*(unsigned char *)charq == 'B') { -#line 10405 "" - } else if (*(unsigned char *)charq == 'P') { #line 10406 "" - if (c1ommvl_1.ivx != 1 || a1ll_2.nnl[0] != 0) { + } else if (*(unsigned char *)charq == 'P') { #line 10407 "" + if (c1ommvl_1.ivx != 1 || a1ll_2.nnl[0] != 0) { +#line 10408 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10407 "" +#line 10408 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Only allowed at begi"\ "nning of block!", (ftnlen)128, (ftnlen)35); -#line 10409 "" - stop1_(); #line 10410 "" - } + stop1_(); #line 10411 "" + } +#line 10412 "" L16: -#line 10411 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 10412 "" + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); +#line 10413 "" if (*(unsigned char *)durq == 'l' || *(unsigned char *)durq == 'r' || *(unsigned char *)durq >= 48 && *(unsigned char *) durq <= 57) { -#line 10412 "" +#line 10413 "" goto L16; -#line 10412 "" +#line 10413 "" } -#line 10414 "" +#line 10415 "" if (*(unsigned char *)durq == 'c') { /* Expect a centered name, and it has to be last option */ -#line 10418 "" +#line 10419 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10419 "" +#line 10420 "" if (*(unsigned char *)durq == '"') { /* Quoted name, go to next quote mark */ -#line 10423 "" +#line 10424 "" for (++a1ll_2.iccount; a1ll_2.iccount <= 127; ++a1ll_2.iccount) { -#line 10424 "" +#line 10425 "" i__1 = a1ll_2.iccount - 2; -#line 10424 "" +#line 10425 "" if (*(unsigned char *)&lineq[a1ll_2.iccount - 1] == '"' && s_cmp(lineq + i__1, "\\", a1ll_2.iccount - 1 - i__1, (ftnlen)1) != 0) { -#line 10424 "" +#line 10425 "" goto L36; -#line 10424 "" +#line 10425 "" } -#line 10426 "" +#line 10427 "" /* L35: */ -#line 10426 "" - } #line 10427 "" + } +#line 10428 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10427 "" +#line 10428 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Missing close qu"\ "ote after page number command (P)!", (ftnlen)128, (ftnlen)50); -#line 10429 "" - stop1_(); #line 10430 "" -L36: + stop1_(); #line 10431 "" +L36: +#line 10432 "" ; -#line 10431 "" +#line 10432 "" } else if (*(unsigned char *)durq != ' ') { /* Space-delimited name, look for next blank */ -#line 10435 "" +#line 10436 "" for (++a1ll_2.iccount; a1ll_2.iccount <= 127; ++a1ll_2.iccount) { -#line 10436 "" +#line 10437 "" if (*(unsigned char *)&lineq[a1ll_2.iccount - 1] == ' ') { -#line 10436 "" +#line 10437 "" goto L38; -#line 10436 "" - } #line 10437 "" + } +#line 10438 "" /* L37: */ -#line 10437 "" - } #line 10438 "" -L38: + } #line 10439 "" +L38: +#line 10440 "" ; -#line 10439 "" - } #line 10440 "" - } else if (*(unsigned char *)durq != ' ') { + } #line 10441 "" + } else if (*(unsigned char *)durq != ' ') { +#line 10442 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10441 "" +#line 10442 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Only \"l\",\"r\",\""\ "c\" or digit allowed after \"P\"!", (ftnlen)128, ( ftnlen)44); -#line 10443 "" - stop1_(); #line 10444 "" - } + stop1_(); #line 10445 "" - } else if (*(unsigned char *)charq == 'W') { + } #line 10446 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); + } else if (*(unsigned char *)charq == 'W') { #line 10447 "" - if (i_indx(".0123456789", durq, (ftnlen)11, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 10448 "" + if (i_indx(".0123456789", durq, (ftnlen)11, (ftnlen)1) == 0) { +#line 10449 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10448 "" +#line 10449 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Expected a number to"\ " start here!", (ftnlen)128, (ftnlen)32); -#line 10450 "" - stop1_(); #line 10451 "" - } + stop1_(); #line 10452 "" + } +#line 10453 "" readnum_(lineq, &a1ll_2.iccount, durq, &c1omnotes_1.wminnh[ c1omnotes_1.ibarcnt + a1ll_2.nbars], (ftnlen)128, (ftnlen) 1); -#line 10453 "" +#line 10454 "" } else if (*(unsigned char *)charq == 'T') { /* Titles */ -#line 10457 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 10458 "" - if (i_indx("itc", durq, (ftnlen)3, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 10459 "" + if (i_indx("itc", durq, (ftnlen)3, (ftnlen)1) == 0) { +#line 10460 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10459 "" +#line 10460 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Must put \"i\", \""\ "t\", or \"c\" after \"T\"!", (ftnlen)128, (ftnlen)36); -#line 10461 "" - stop1_(); #line 10462 "" - } + stop1_(); #line 10463 "" + } +#line 10464 "" i__1 = i_indx("itc", durq, (ftnlen)3, (ftnlen)1) - 1; -#line 10463 "" +#line 10464 "" c1omget_1.ihead += pow_ii(&c__2, &i__1); /* Maybe a number after 'Tt', but ignore here. Read past string on next line. */ -#line 10467 "" - read10_(charq, &c1omget_1.lastchar, (ftnlen)1); #line 10468 "" - ++c1omget_1.nline; + read10_(charq, &c1omget_1.lastchar, (ftnlen)1); #line 10469 "" - a1ll_2.iccount = 128; + ++c1omget_1.nline; #line 10470 "" - } else if (*(unsigned char *)charq == 'A') { + a1ll_2.iccount = 128; #line 10471 "" + } else if (*(unsigned char *)charq == 'A') { +#line 10472 "" L27: -#line 10471 "" +#line 10472 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); /* if (index('rbsdeK',durq) .gt. 0) then */ -#line 10473 "" - if (i_indx("rbsdK", durq, (ftnlen)5, (ftnlen)1) > 0) { #line 10474 "" - goto L27; + if (i_indx("rbsdK", durq, (ftnlen)5, (ftnlen)1) > 0) { #line 10475 "" + goto L27; +#line 10476 "" } else if (*(unsigned char *)durq == 'e') { /* Check for is4bignv. Must do here to catch first \internote, written in topfile */ /* before ever calling getnote. Initialize as .false. in pmxa. Make it true only */ /* if nv>7, AI not set, Ai not set. */ -#line 10481 "" +#line 10482 "" comis4bignv_1.is4bignv = a1ll_2.nv > 7 && ! comis4bignv_1.aiset; -#line 10482 "" - goto L27; #line 10483 "" - } else if (*(unsigned char *)durq == 'v') { + goto L27; #line 10484 "" + } else if (*(unsigned char *)durq == 'v') { +#line 10485 "" if (c1omnotes_1.ibarcnt == 0) { -#line 10484 "" +#line 10485 "" comnvst_1.novshrinktop = TRUE_; -#line 10484 "" - } #line 10485 "" - goto L27; + } #line 10486 "" - } else if (*(unsigned char *)durq == 'a') { + goto L27; #line 10487 "" + } else if (*(unsigned char *)durq == 'a') { +#line 10488 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10488 "" - if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { #line 10489 "" + if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { +#line 10490 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10489 "" +#line 10490 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "After \"Aa\", ne"\ "ed decimal number!", (ftnlen)128, (ftnlen)32); -#line 10491 "" - stop1_(); #line 10492 "" - } + stop1_(); #line 10493 "" + } +#line 10494 "" readnum_(lineq, &a1ll_2.iccount, durq, &c1ommvl_1.fbar, ( ftnlen)128, (ftnlen)1); -#line 10494 "" - --a1ll_2.iccount; #line 10495 "" - goto L27; + --a1ll_2.iccount; #line 10496 "" - } else if (*(unsigned char *)durq == 'i') { + goto L27; #line 10497 "" - comis4bignv_1.is4bignv = FALSE_; + } else if (*(unsigned char *)durq == 'i') { #line 10498 "" - comis4bignv_1.aiset = TRUE_; + comis4bignv_1.is4bignv = FALSE_; #line 10499 "" + comis4bignv_1.aiset = TRUE_; +#line 10500 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); /* Local interstaff correction. Set to -1. if not specifiec, or after use, */ /* or anytime except at top, since pmxb handles all times except at top. */ -#line 10504 "" +#line 10505 "" readnum_(lineq, &a1ll_2.iccount, durq, &tintstf, (ftnlen)128, (ftnlen)1); -#line 10505 "" +#line 10506 "" if (c1omnotes_1.ibarcnt == 0) { -#line 10505 "" +#line 10506 "" compage_1.fintstf = tintstf; -#line 10505 "" - } #line 10506 "" - --a1ll_2.iccount; + } #line 10507 "" - goto L27; + --a1ll_2.iccount; #line 10508 "" + goto L27; +#line 10509 "" } else if (*(unsigned char *)durq == 'I') { /* Global interstaff correction. Use in place of fintstf if fintstf<0 */ -#line 10512 "" - comis4bignv_1.is4bignv = FALSE_; #line 10513 "" - comis4bignv_1.aiset = TRUE_; + comis4bignv_1.is4bignv = FALSE_; #line 10514 "" + comis4bignv_1.aiset = TRUE_; +#line 10515 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10515 "" +#line 10516 "" readnum_(lineq, &a1ll_2.iccount, durq, &compage_1.gintstf, ( ftnlen)128, (ftnlen)1); -#line 10516 "" - --a1ll_2.iccount; #line 10517 "" - goto L27; + --a1ll_2.iccount; #line 10518 "" - } else if (*(unsigned char *)durq == 'o') { + goto L27; #line 10519 "" - *optimize = TRUE_; + } else if (*(unsigned char *)durq == 'o') { #line 10520 "" - goto L27; + *optimize = TRUE_; #line 10521 "" - } else if (*(unsigned char *)durq == 'S') { + goto L27; #line 10522 "" + } else if (*(unsigned char *)durq == 'S') { +#line 10523 "" i__1 = comkeys_1.noinst; -#line 10522 "" - for (iiv = 1; iiv <= i__1; ++iiv) { #line 10523 "" + for (iiv = 1; iiv <= i__1; ++iiv) { +#line 10524 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 10524 "" - if (i_indx("-0st", durq, (ftnlen)4, (ftnlen)1) == 0) { #line 10525 "" + if (i_indx("-0st", durq, (ftnlen)4, (ftnlen)1) == 0) { +#line 10526 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10525 "" +#line 10526 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "After \"AS\""\ ", need nv instances of \"s,t,-,0\"!", (ftnlen) 128, (ftnlen)43); -#line 10527 "" - stop1_(); #line 10528 "" - } + stop1_(); #line 10529 "" + } +#line 10530 "" if (*(unsigned char *)durq == '-' || *(unsigned char *) durq == 's') { -#line 10530 "" - comsize_1.isize[iiv - 1] = 1; #line 10531 "" - } else if (*(unsigned char *)durq == 't') { + comsize_1.isize[iiv - 1] = 1; #line 10532 "" - comsize_1.isize[iiv - 1] = 2; + } else if (*(unsigned char *)durq == 't') { #line 10533 "" - } + comsize_1.isize[iiv - 1] = 2; #line 10534 "" + } +#line 10535 "" /* L50: */ -#line 10534 "" - } #line 10535 "" - goto L27; + } #line 10536 "" - } else if (*(unsigned char *)durq == 'p') { + goto L27; #line 10537 "" - comslur_1.fontslur = FALSE_; + } else if (*(unsigned char *)durq == 'p') { #line 10538 "" -L42: + comslur_1.fontslur = FALSE_; #line 10539 "" +L42: +#line 10540 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10540 "" +#line 10541 "" if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Characters to change defaults for ps slurs */ -#line 10544 "" +#line 10545 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 10545 "" - if (i_indx("shtc", durq, (ftnlen)4, (ftnlen)1) == 0) { #line 10546 "" + if (i_indx("shtc", durq, (ftnlen)4, (ftnlen)1) == 0) { +#line 10547 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10546 "" +#line 10547 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Only letters"\ " allowed here are \"s\",\"h\",\"t\",\"c\"!", ( ftnlen)128, (ftnlen)46); -#line 10548 "" - stop1_(); #line 10549 "" + stop1_(); +#line 10550 "" } /* Now check for another default modifier */ -#line 10553 "" - goto L42; #line 10554 "" + goto L42; +#line 10555 "" } else if (i_indx("lh", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Flags for optional linebreak ties or header specials */ -#line 10558 "" - goto L42; #line 10559 "" - } else { + goto L42; #line 10560 "" - --a1ll_2.iccount; + } else { #line 10561 "" - } + --a1ll_2.iccount; #line 10562 "" - goto L27; + } #line 10563 "" + goto L27; +#line 10564 "" } else if (*(unsigned char *)durq == 'N') { /* Override default name for a part file. Must have part number, then */ /* partname in quotes. Must be on line by itself, and start in column 1. */ /* Will only be passed thru to scor2prt. */ -#line 10569 "" - if (a1ll_2.iccount != 2) { #line 10570 "" + if (a1ll_2.iccount != 2) { +#line 10571 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10570 "" +#line 10571 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\"AN\" must star"\ "t in column 1!", (ftnlen)128, (ftnlen)28); -#line 10572 "" - stop1_(); #line 10573 "" - } + stop1_(); #line 10574 "" - ndxquote = i_indx(lineq, "\"", (ftnlen)128, (ftnlen)1); + } #line 10575 "" + ndxquote = i_indx(lineq, "\"", (ftnlen)128, (ftnlen)1); +#line 10576 "" if (ndxquote < 4 || ndxquote > 5 || i_indx("123456789", lineq + 2, (ftnlen)9, (ftnlen)1) == 0 || ndxquote == 5 && i_indx("012", lineq + 3, (ftnlen)3, (ftnlen)1) == 0) { -#line 10578 "" +#line 10579 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10578 "" +#line 10579 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\"AN\" must be f"\ "ollowed by inst. #, then quote!", (ftnlen)128, ( ftnlen)45); -#line 10580 "" - stop1_(); #line 10581 "" - } + stop1_(); #line 10582 "" + } +#line 10583 "" i__1 = ndxquote; -#line 10582 "" - ndxquote = i_indx(lineq + i__1, "\"", 128 - i__1, (ftnlen)1); #line 10583 "" - if (ndxquote == 0) { + ndxquote = i_indx(lineq + i__1, "\"", 128 - i__1, (ftnlen)1); #line 10584 "" + if (ndxquote == 0) { +#line 10585 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10584 "" +#line 10585 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "In \"AN\", file "\ "name must be in quotes!", (ftnlen)128, (ftnlen)37) ; -#line 10586 "" - stop1_(); #line 10587 "" - } + stop1_(); #line 10588 "" - a1ll_2.iccount = 128; + } #line 10589 "" - } else if (*(unsigned char *)durq == 'T') { + a1ll_2.iccount = 128; #line 10590 "" - comnvst_1.cstuplet = TRUE_; + } else if (*(unsigned char *)durq == 'T') { #line 10591 "" + comnvst_1.cstuplet = TRUE_; +#line 10592 "" } else if (*(unsigned char *)durq == 'R') { /* Get full name of normal include file; must occupy remainder of line */ -#line 10595 "" +#line 10596 "" i__1 = a1ll_2.iccount; -#line 10595 "" - getpmxmod_(&c_false, lineq + i__1, 128 - i__1); #line 10596 "" - a1ll_2.iccount = 128; + getpmxmod_(&c_false, lineq + i__1, 128 - i__1); #line 10597 "" - } else if (*(unsigned char *)durq == 'c') { + a1ll_2.iccount = 128; #line 10598 "" + } else if (*(unsigned char *)durq == 'c') { +#line 10599 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10599 "" - if (i_indx("l4", durq, (ftnlen)2, (ftnlen)1) == 0) { #line 10600 "" + if (i_indx("l4", durq, (ftnlen)2, (ftnlen)1) == 0) { +#line 10601 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10600 "" +#line 10601 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Only \"l\" or"\ " \"4\" is allowed here!", (ftnlen)128, (ftnlen)32) ; -#line 10602 "" - stop1_(); #line 10603 "" - } + stop1_(); #line 10604 "" - if (*(unsigned char *)durq == 'l') { + } #line 10605 "" - compage_1.hoffpt = -25.f; + if (*(unsigned char *)durq == 'l') { #line 10606 "" - compage_1.voffpt = -45.f; + compage_1.hoffpt = -25.f; #line 10607 "" - } else if (*(unsigned char *)durq == '4') { + compage_1.voffpt = -45.f; #line 10608 "" - compage_1.ptheight = 745.f; + } else if (*(unsigned char *)durq == '4') { #line 10609 "" - compage_1.widthpt = 499.f; + compage_1.ptheight = 745.f; #line 10610 "" - compage_1.hoffpt = -24.f; + compage_1.widthpt = 499.f; #line 10611 "" - compage_1.voffpt = -24.f; + compage_1.hoffpt = -24.f; #line 10612 "" - } + compage_1.voffpt = -24.f; #line 10613 "" - goto L27; + } #line 10614 "" - } else if (*(unsigned char *)durq == 'V') { + goto L27; #line 10615 "" + } else if (*(unsigned char *)durq == 'V') { +#line 10616 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10616 "" - if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { #line 10617 "" + if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { +#line 10618 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10617 "" +#line 10618 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Only \"+\" or"\ " \"-\" is allowed here!", (ftnlen)128, (ftnlen)32) ; -#line 10619 "" - stop1_(); #line 10620 "" - } + stop1_(); #line 10621 "" + } +#line 10622 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10622 "" - if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { #line 10623 "" + if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { +#line 10624 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10623 "" +#line 10624 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "A number for ver"\ "t shift before \\eject must start here!", (ftnlen) 128, (ftnlen)54); -#line 10625 "" - stop1_(); #line 10626 "" - } + stop1_(); #line 10627 "" + } +#line 10628 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 10628 "" - if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { #line 10629 "" + if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { +#line 10630 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10629 "" +#line 10630 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Only \"+\" or"\ " \"-\" is allowed here!", (ftnlen)128, (ftnlen)32) ; -#line 10631 "" - stop1_(); #line 10632 "" - } + stop1_(); #line 10633 "" + } +#line 10634 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10634 "" - if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { #line 10635 "" + if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { +#line 10636 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10635 "" +#line 10636 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "A number for ver"\ "t shift after \\eject must start here!", (ftnlen) 128, (ftnlen)53); -#line 10637 "" - stop1_(); #line 10638 "" - } + stop1_(); #line 10639 "" + } +#line 10640 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 10640 "" - --a1ll_2.iccount; #line 10641 "" - goto L27; + --a1ll_2.iccount; #line 10642 "" - } else if (*(unsigned char *)durq != ' ') { + goto L27; #line 10643 "" + } else if (*(unsigned char *)durq != ' ') { +#line 10644 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10643 "" +#line 10644 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "After \"A\" must fol"\ "low one of abcdeiILNprRsSTvV!", (ftnlen)128, (ftnlen) 47); /* * 'After "A" must follow one of the letters abcdeiINprRsST!') */ -#line 10646 "" - s_wsle(&io___683); -#line 10646 "" +#line 10647 "" + s_wsle(&io___684); +#line 10647 "" do_lio(&c__9, &c__1, "For AS, since ver. 2.7, must only have"\ " noinst args.", (ftnlen)51); -#line 10646 "" - e_wsle(); -#line 10647 "" - s_wsfe(&io___684); #line 10647 "" + e_wsle(); +#line 10648 "" + s_wsfe(&io___685); +#line 10648 "" do_fio(&c__1, "For AS, since ver. 2.7, must only have noinst"\ " args.", (ftnlen)51); -#line 10647 "" +#line 10648 "" e_wsfe(); -#line 10649 "" - stop1_(); #line 10650 "" - } + stop1_(); #line 10651 "" + } +#line 10652 "" } else if (*(unsigned char *)charq == 'K') { /* Rules and function of K command */ @@ -25897,165 +25898,165 @@ L42: /* then adjust fbar to make poenom much more accurate. */ /* Jan 02: Now K-0+[n] is used to transpose e.g. from f to f#. */ -#line 10662 "" -L77: #line 10663 "" +L77: +#line 10664 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); /* if (index('+-i',durq) .eq. 0) then */ -#line 10665 "" - if (i_indx("+-in", durq, (ftnlen)4, (ftnlen)1) == 0) { #line 10666 "" + if (i_indx("+-in", durq, (ftnlen)4, (ftnlen)1) == 0) { +#line 10667 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10666 "" +#line 10667 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\"K\" (transpose or "\ "key change) must be followed by \"+,-,i,n\"!", ( ftnlen)128, (ftnlen)60); -#line 10668 "" - stop1_(); #line 10669 "" - } + stop1_(); #line 10670 "" + } +#line 10671 "" if (*(unsigned char *)durq == 'n') { -#line 10670 "" +#line 10671 "" goto L77; -#line 10670 "" - } #line 10671 "" + } +#line 10672 "" if (*(unsigned char *)durq != 'i') { /* Normal key change and/or transposition) */ /* iccount = iccount+1 */ -#line 10676 "" +#line 10677 "" num1 = 44 - *(unsigned char *)durq; /* num1= +1 or -1 */ -#line 10680 "" - ztrans = num1 == -1; #line 10681 "" + ztrans = num1 == -1; +#line 10682 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10682 "" - if (i_indx("0123456789", durq, (ftnlen)10, (ftnlen)1) == 0) { #line 10683 "" + if (i_indx("0123456789", durq, (ftnlen)10, (ftnlen)1) == 0) { +#line 10684 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10683 "" +#line 10684 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "1st +/- must be "\ "followed by a number!", (ftnlen)128, (ftnlen)37); -#line 10685 "" - stop1_(); #line 10686 "" + stop1_(); +#line 10687 "" } /* iccount = iccount+1 */ -#line 10688 "" +#line 10689 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 10689 "" - num1 = i_nint(&fnum) * num1; #line 10690 "" - ztrans = ztrans && num1 == 0; + num1 = i_nint(&fnum) * num1; #line 10691 "" - if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { + ztrans = ztrans && num1 == 0; #line 10692 "" + if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { +#line 10693 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10692 "" +#line 10693 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "1st number aft"\ "er \"K\" must be followed by \"+,-\"!", (ftnlen) 128, (ftnlen)47); -#line 10694 "" - stop1_(); #line 10695 "" - } + stop1_(); #line 10696 "" - ++a1ll_2.iccount; + } #line 10697 "" - num2 = 44 - *(unsigned char *)durq; + ++a1ll_2.iccount; #line 10698 "" + num2 = 44 - *(unsigned char *)durq; +#line 10699 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 10699 "" - num2 *= (integer) (fnum + .1f); #line 10700 "" + num2 *= (integer) (fnum + .1f); +#line 10701 "" if (num1 == 0 && ! ztrans) { /* Key change, only one per block allowed */ -#line 10704 "" - if (comkeys_1.iskchb) { #line 10705 "" + if (comkeys_1.iskchb) { +#line 10706 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10705 "" +#line 10706 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Only one key"\ " change allowed per input block!", (ftnlen) 128, (ftnlen)44); -#line 10707 "" - stop1_(); #line 10708 "" - } + stop1_(); #line 10709 "" - comkeys_1.iskchb = TRUE_; + } #line 10710 "" - ++comkeys_1.nkeys; + comkeys_1.iskchb = TRUE_; #line 10711 "" + ++comkeys_1.nkeys; +#line 10712 "" comkeys_1.kchmid[comkeys_1.nkeys - 1] = a1ll_2.itsofar[ c1ommvl_1.ivx - 1] % a1ll_2.lenbar != 0; /* Make ibrkch = barnum-1 if at start of bar, so fsyst advances ok at linebreak. */ -#line 10715 "" +#line 10716 "" comkeys_1.ibrkch[comkeys_1.nkeys - 1] = c1omnotes_1.ibarcnt + a1ll_2.nbars; -#line 10716 "" +#line 10717 "" if (comkeys_1.kchmid[comkeys_1.nkeys - 1]) { -#line 10716 "" +#line 10717 "" ++comkeys_1.ibrkch[comkeys_1.nkeys - 1]; -#line 10716 "" - } #line 10717 "" + } +#line 10718 "" comkeys_1.newkey[comkeys_1.nkeys - 1] = num2 + comkeys_1.idsig; /* 130316 */ /* do 43 iinst = 1 , noinst */ -#line 10720 "" +#line 10721 "" commidisig_1.midisig = comkeys_1.newkey[comkeys_1.nkeys - 1]; /* 43 continue */ -#line 10722 "" +#line 10723 "" } else { /* Transposition */ -#line 10726 "" - *fulltrans = TRUE_; #line 10727 "" - if (c1omnotes_1.ibarcnt > 0) { + *fulltrans = TRUE_; #line 10728 "" + if (c1omnotes_1.ibarcnt > 0) { +#line 10729 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10728 "" +#line 10729 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Transpositio"\ "n must be at top of first input block!", ( ftnlen)128, (ftnlen)50); -#line 10730 "" - stop1_(); #line 10731 "" - } + stop1_(); #line 10732 "" - comkeys_1.isig1 = num2; + } #line 10733 "" + comkeys_1.isig1 = num2; +#line 10734 "" comkeys_1.idsig = comkeys_1.isig1 - comkeys_1.newkey[0]; /* idsig is the difference between sig after transposition, and sig in setup. */ /* It may alter # of accid's in key changes if there is transposition. */ -#line 10738 "" - } #line 10739 "" + } +#line 10740 "" } else { /* 110522/110529 */ @@ -26070,86 +26071,86 @@ L77: /* each staff. */ /* durq='i' */ -#line 10752 "" +#line 10753 "" getitransinfo_(&c_true, &c1omnotes_1.ibarcnt, lineq, & a1ll_2.iccount, &c1omnotes_1.ibaroff, &a1ll_2.nbars, & comkeys_1.noinst, (ftnlen)128); -#line 10754 "" - } #line 10755 "" + } +#line 10756 "" } else if (*(unsigned char *)charq == '|') { /* Optional bar symbol */ -#line 10759 "" - if (a1ll_2.itsofar[c1ommvl_1.ivx - 1] % a1ll_2.lenbar != 0) { #line 10760 "" + if (a1ll_2.itsofar[c1ommvl_1.ivx - 1] % a1ll_2.lenbar != 0) { +#line 10761 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10760 "" +#line 10761 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Bar line marker out "\ "of place!", (ftnlen)128, (ftnlen)29); -#line 10762 "" - stop1_(); #line 10763 "" - } else if (comkeys_1.shifton) { + stop1_(); #line 10764 "" + } else if (comkeys_1.shifton) { +#line 10765 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10764 "" +#line 10765 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Bar ended with user-"\ "defined shift still on!", (ftnlen)128, (ftnlen)43); -#line 10766 "" - stop1_(); #line 10767 "" - } + stop1_(); #line 10768 "" - } else if (*(unsigned char *)charq == '/') { + } #line 10769 "" - if (comkeys_1.ornrpt) { + } else if (*(unsigned char *)charq == '/') { #line 10770 "" + if (comkeys_1.ornrpt) { +#line 10771 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10770 "" +#line 10771 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "WARNING: Block ended"\ " with repeated ornament still on!", (ftnlen)128, ( ftnlen)53); -#line 10772 "" - comkeys_1.ornrpt = FALSE_; #line 10773 "" - } + comkeys_1.ornrpt = FALSE_; #line 10774 "" - if (comkeys_1.stickys) { + } #line 10775 "" + if (comkeys_1.stickys) { +#line 10776 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10775 "" +#line 10776 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "WARNING: Block ended"\ " with sticky stemshrink still on!", (ftnlen)128, ( ftnlen)53); -#line 10777 "" - comkeys_1.stickys = FALSE_; #line 10778 "" - } + comkeys_1.stickys = FALSE_; #line 10779 "" - if (c1omget_1.fbon) { + } #line 10780 "" + if (c1omget_1.fbon) { +#line 10781 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10780 "" +#line 10781 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Block ended with for"\ "ced beam open!", (ftnlen)128, (ftnlen)34); -#line 10782 "" - stop1_(); #line 10783 "" - } else if (comkeys_1.shifton) { + stop1_(); #line 10784 "" + } else if (comkeys_1.shifton) { +#line 10785 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10784 "" +#line 10785 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Bar ended with user-"\ "defined shift still on!", (ftnlen)128, (ftnlen)43); -#line 10786 "" +#line 10787 "" stop1_(); /* 140215 Temporary to allow clef change in stup */ @@ -26158,1050 +26159,1043 @@ L77: /* call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, */ /* * 'May not enter clef at end of input block!') */ /* call stop1() */ -#line 10794 "" - } #line 10795 "" + } +#line 10796 "" comkeys_1.barend = FALSE_; /* Perform time checks */ -#line 10799 "" - if (a1ll_2.itsofar[c1ommvl_1.ivx - 1] % a1ll_2.lenbar != 0) { #line 10800 "" + if (a1ll_2.itsofar[c1ommvl_1.ivx - 1] % a1ll_2.lenbar != 0) { +#line 10801 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10800 "" +#line 10801 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Block duration not d"\ "ivisible by lenbar!", (ftnlen)128, (ftnlen)39); -#line 10802 "" - s_wsle(&io___688); -#line 10802 "" +#line 10803 "" + s_wsle(&io___689); +#line 10803 "" do_lio(&c__9, &c__1, "lenbar, timesofar are ", (ftnlen)22); -#line 10802 "" +#line 10803 "" do_lio(&c__3, &c__1, (char *)&a1ll_2.lenbar, (ftnlen)sizeof( integer)); -#line 10802 "" +#line 10803 "" do_lio(&c__3, &c__1, (char *)&a1ll_2.itsofar[c1ommvl_1.ivx - 1], (ftnlen)sizeof(integer)); -#line 10802 "" - e_wsle(); #line 10803 "" - stop1_(); + e_wsle(); #line 10804 "" + stop1_(); +#line 10805 "" } else if (c1ommvl_1.ivx > 1 && a1ll_2.itsofar[c1ommvl_1.ivx - 1] != a1ll_2.itsofar[0]) { -#line 10805 "" - s_wsle(&io___689); -#line 10805 "" - e_wsle(); #line 10806 "" s_wsle(&io___690); #line 10806 "" + e_wsle(); +#line 10807 "" + s_wsle(&io___691); +#line 10807 "" do_lio(&c__9, &c__1, "No of bars in voice 1, current voice:", (ftnlen)37); -#line 10806 "" +#line 10807 "" i__1 = a1ll_2.itsofar[0] / a1ll_2.lenbar; -#line 10806 "" +#line 10807 "" do_lio(&c__3, &c__1, (char *)&i__1, (ftnlen)sizeof(integer)); -#line 10806 "" +#line 10807 "" i__4 = a1ll_2.itsofar[c1ommvl_1.ivx - 1] / a1ll_2.lenbar; -#line 10806 "" +#line 10807 "" do_lio(&c__3, &c__1, (char *)&i__4, (ftnlen)sizeof(integer)); -#line 10806 "" +#line 10807 "" e_wsle(); -#line 10808 "" +#line 10809 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10808 "" +#line 10809 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Block duration not e"\ "qual to voice 1!", (ftnlen)128, (ftnlen)36); -#line 10810 "" - stop1_(); #line 10811 "" - } + stop1_(); #line 10812 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); + } #line 10813 "" + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); +#line 10814 "" if (*(unsigned char *)durq == ' ' && a1ll_2.iv == a1ll_2.nv) { /* End of input block */ -#line 10817 "" - *loop = FALSE_; #line 10818 "" + *loop = FALSE_; +#line 10819 "" } else { /* Start a new voice */ -#line 10822 "" +#line 10823 "" if (a1ll_2.lenbr0 != 0 && a1ll_2.firstline) { -#line 10822 "" +#line 10823 "" a1ll_2.lenbar = a1ll_2.lenbr0; -#line 10822 "" - } #line 10823 "" - a1ll_2.nbars = 0; + } #line 10824 "" + a1ll_2.nbars = 0; +#line 10825 "" if (*(unsigned char *)durq == ' ') { /* New voice is on next staff */ -#line 10828 "" - ++a1ll_2.iv; #line 10829 "" - c1ommvl_1.ivx = a1ll_2.iv; + ++a1ll_2.iv; #line 10830 "" + c1ommvl_1.ivx = a1ll_2.iv; +#line 10831 "" } else { /* New voice is on same staff. Set up for it */ -#line 10834 "" - c1ommvl_1.ivx = a1ll_2.nv + 1; #line 10835 "" + c1ommvl_1.ivx = a1ll_2.nv + 1; +#line 10836 "" i__1 = a1ll_2.nv; -#line 10835 "" - for (iiv = 1; iiv <= i__1; ++iiv) { #line 10836 "" + for (iiv = 1; iiv <= i__1; ++iiv) { +#line 10837 "" if (c1ommvl_1.nvmx[iiv - 1] == 2) { -#line 10836 "" +#line 10837 "" ++c1ommvl_1.ivx; -#line 10836 "" - } #line 10837 "" + } +#line 10838 "" /* L23: */ -#line 10837 "" - } #line 10838 "" - if (c1ommvl_1.ivx > 24) { -#line 10839 "" - s_wsfe(&io___691); + } #line 10839 "" + if (c1ommvl_1.ivx > 24) { +#line 10840 "" + s_wsfe(&io___692); +#line 10840 "" do_fio(&c__1, "Cannot have more than", (ftnlen)21); -#line 10839 "" +#line 10840 "" do_fio(&c__1, (char *)&c__24, (ftnlen)sizeof(integer)) ; -#line 10839 "" +#line 10840 "" do_fio(&c__1, " lines of music at once", (ftnlen)23); -#line 10839 "" +#line 10840 "" e_wsfe(); -#line 10841 "" - stop1_(); #line 10842 "" - } + stop1_(); #line 10843 "" - c1ommvl_1.nvmx[a1ll_2.iv - 1] = 2; + } #line 10844 "" - c1ommvl_1.ivmx[a1ll_2.iv + 23] = c1ommvl_1.ivx; + c1ommvl_1.nvmx[a1ll_2.iv - 1] = 2; #line 10845 "" - a1ll_2.itsofar[c1ommvl_1.ivx - 1] = 0; + c1ommvl_1.ivmx[a1ll_2.iv + 23] = c1ommvl_1.ivx; #line 10846 "" - a1ll_2.nnl[c1ommvl_1.ivx - 1] = 0; + a1ll_2.itsofar[c1ommvl_1.ivx - 1] = 0; #line 10847 "" - for (j = 1; j <= 200; ++j) { + a1ll_2.nnl[c1ommvl_1.ivx - 1] = 0; #line 10848 "" - a1ll_2.rest[c1ommvl_1.ivx + j * 24 - 25] = FALSE_; + for (j = 1; j <= 200; ++j) { #line 10849 "" - c1ommvl_1.nacc[c1ommvl_1.ivx + j * 24 - 25] = 0; + a1ll_2.rest[c1ommvl_1.ivx + j * 24 - 25] = FALSE_; #line 10850 "" + c1ommvl_1.nacc[c1ommvl_1.ivx + j * 24 - 25] = 0; +#line 10851 "" /* L24: */ -#line 10850 "" +#line 10851 "" } /* For midi stuff, record that there is a 2nd line of music in this voice */ -#line 10854 "" +#line 10855 "" if (commidi_1.ismidi) { -#line 10854 "" +#line 10855 "" commidi_1.twoline[a1ll_2.iv - 1] = TRUE_; -#line 10854 "" - } #line 10855 "" - } + } #line 10856 "" - } + } #line 10857 "" - a1ll_2.iccount = 128; + } #line 10858 "" + a1ll_2.iccount = 128; +#line 10859 "" } else if (*(unsigned char *)charq == 'S') { /* New nsyst: for use with partmaker scor2prt, for parts w/ diff # of systs. */ -#line 10862 "" - if (c1omnotes_1.ibarcnt > 0) { #line 10863 "" + if (c1omnotes_1.ibarcnt > 0) { +#line 10864 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10863 "" +#line 10864 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "\"S\" can only be in"\ " first input block!", (ftnlen)128, (ftnlen)37); -#line 10865 "" - stop1_(); #line 10866 "" - } + stop1_(); #line 10867 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); + } #line 10868 "" - if (i_indx("123456789 ", durq, (ftnlen)10, (ftnlen)1) == 0) { + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 10869 "" + if (i_indx("123456789 ", durq, (ftnlen)10, (ftnlen)1) == 0) { +#line 10870 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10869 "" +#line 10870 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "A digit must follow"\ " \"S\"!", (ftnlen)128, (ftnlen)24); -#line 10871 "" - stop1_(); #line 10872 "" - } + stop1_(); #line 10873 "" + } +#line 10874 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnsyst, (ftnlen)128, ( ftnlen)1); -#line 10874 "" - compage_1.nsyst = i_nint(&fnsyst); #line 10875 "" -L14: + compage_1.nsyst = i_nint(&fnsyst); #line 10876 "" +L14: +#line 10877 "" if (*(unsigned char *)durq == 'P') { /* New npages for parts. */ -#line 10880 "" +#line 10881 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10881 "" - if (i_indx("123456789 ", durq, (ftnlen)10, (ftnlen)1) == 0) { #line 10882 "" + if (i_indx("123456789 ", durq, (ftnlen)10, (ftnlen)1) == 0) { +#line 10883 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10882 "" +#line 10883 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Must have a numb"\ "er here!", (ftnlen)128, (ftnlen)24); -#line 10884 "" - stop1_(); #line 10885 "" - } + stop1_(); #line 10886 "" + } +#line 10887 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnsyst, (ftnlen)128, ( ftnlen)1); -#line 10887 "" - compage_1.npages = i_nint(&fnsyst); #line 10888 "" - goto L14; + compage_1.npages = i_nint(&fnsyst); #line 10889 "" + goto L14; +#line 10890 "" } else if (*(unsigned char *)durq == 'm') { /* Reset musize (musicsize). */ -#line 10893 "" +#line 10894 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10894 "" - if (i_indx("123456789 ", durq, (ftnlen)10, (ftnlen)1) == 0) { #line 10895 "" + if (i_indx("123456789 ", durq, (ftnlen)10, (ftnlen)1) == 0) { +#line 10896 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10895 "" +#line 10896 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Must have a numb"\ "er here!", (ftnlen)128, (ftnlen)24); -#line 10897 "" - stop1_(); #line 10898 "" - } + stop1_(); #line 10899 "" + } +#line 10900 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnsyst, (ftnlen)128, ( ftnlen)1); -#line 10900 "" - commus_1.musize = i_nint(&fnsyst); #line 10901 "" - c1omnotes_1.wheadpt = commus_1.whead20 * commus_1.musize; + commus_1.musize = i_nint(&fnsyst); #line 10902 "" - goto L14; + c1omnotes_1.wheadpt = commus_1.whead20 * commus_1.musize; #line 10903 "" - } else if (*(unsigned char *)durq != ' ') { + goto L14; #line 10904 "" + } else if (*(unsigned char *)durq != ' ') { +#line 10905 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10904 "" +#line 10905 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal character "\ "in \"S\" symbol!", (ftnlen)128, (ftnlen)32); -#line 10906 "" - stop1_(); #line 10907 "" - } + stop1_(); #line 10908 "" + } +#line 10909 "" } else if (*(unsigned char *)charq == 'L') { /* Force line break */ -#line 10912 "" - g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); #line 10913 "" + g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen)1); +#line 10914 "" if (*(unsigned char *)durq == 'C') { /* Coda, no real line break, just get coda length */ -#line 10917 "" - if (comshort_1.ishort != 1) { #line 10918 "" + if (comshort_1.ishort != 1) { +#line 10919 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10918 "" +#line 10919 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Cannot use \"L"\ "C\" without first using \"L[n]S\"!", (ftnlen)128, (ftnlen)44); -#line 10920 "" - stop1_(); #line 10921 "" - } + stop1_(); #line 10922 "" - comshort_1.ishort = 0; + } #line 10923 "" + comshort_1.ishort = 0; +#line 10924 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10924 "" - if (i_indx("1234567890.", durq, (ftnlen)11, (ftnlen)1) == 0) { #line 10925 "" + if (i_indx("1234567890.", durq, (ftnlen)11, (ftnlen)1) == 0) { +#line 10926 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10925 "" +#line 10926 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Need number to d"\ "efine coda length!", (ftnlen)128, (ftnlen)34); -#line 10927 "" - stop1_(); #line 10928 "" - } + stop1_(); #line 10929 "" + } +#line 10930 "" readnum_(lineq, &a1ll_2.iccount, durq, &comshort_1.codafrac, ( ftnlen)128, (ftnlen)1); -#line 10930 "" +#line 10931 "" comshort_1.poefa[compage_1.isysflb[compage_1.nflb] - 1] += comshort_1.codafrac; -#line 10931 "" - if (i_indx(" n", durq, (ftnlen)2, (ftnlen)1) == 0) { #line 10932 "" + if (i_indx(" n", durq, (ftnlen)2, (ftnlen)1) == 0) { +#line 10933 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10932 "" +#line 10933 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Need blank or"\ " \"n\" here!", (ftnlen)128, (ftnlen)23); -#line 10934 "" - stop1_(); #line 10935 "" - } + stop1_(); #line 10936 "" - return 0; + } #line 10937 "" - } + return 0; #line 10938 "" - ++compage_1.nflb; + } #line 10939 "" + ++compage_1.nflb; +#line 10940 "" compage_1.ibarflb[compage_1.nflb] = c1omnotes_1.ibarcnt + a1ll_2.nbars + 1; -#line 10940 "" - if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { #line 10941 "" + if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { +#line 10942 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10941 "" +#line 10942 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Need integer to defi"\ "ne forced line break!", (ftnlen)128, (ftnlen)41); -#line 10943 "" - stop1_(); #line 10944 "" - } + stop1_(); #line 10945 "" + } +#line 10946 "" readnum_(lineq, &a1ll_2.iccount, durq, &sysflb, (ftnlen)128, ( ftnlen)1); -#line 10946 "" - compage_1.isysflb[compage_1.nflb] = i_nint(&sysflb); #line 10947 "" - if (compage_1.isysflb[compage_1.nflb] == 1) { + compage_1.isysflb[compage_1.nflb] = i_nint(&sysflb); #line 10948 "" + if (compage_1.isysflb[compage_1.nflb] == 1) { +#line 10949 "" i__1 = a1ll_2.iccount - 1; -#line 10948 "" +#line 10949 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10948 "" +#line 10949 "" errmsg_(lineq, &i__1, &i__4, "For now, \"L1\" not allowed!", ( ftnlen)128, (ftnlen)26); -#line 10950 "" - stop1_(); #line 10951 "" - } + stop1_(); #line 10952 "" + } +#line 10953 "" if (compage_1.nflb > 1) { /* Check if new number is > prior one */ -#line 10956 "" +#line 10957 "" if (compage_1.isysflb[compage_1.nflb] <= compage_1.isysflb[ compage_1.nflb - 1]) { -#line 10957 "" +#line 10958 "" i__1 = a1ll_2.iccount - 1; -#line 10957 "" +#line 10958 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10957 "" +#line 10958 "" errmsg_(lineq, &i__1, &i__4, "You already forced a line "\ "break at a later line!", (ftnlen)128, (ftnlen)48); -#line 10959 "" - stop1_(); #line 10960 "" - } + stop1_(); #line 10961 "" - } + } #line 10962 "" - if (compage_1.npages == 0) { -#line 10963 "" - s_wsle(&io___695); + } #line 10963 "" - e_wsle(); + if (compage_1.npages == 0) { #line 10964 "" s_wsle(&io___696); #line 10964 "" + e_wsle(); +#line 10965 "" + s_wsle(&io___697); +#line 10965 "" do_lio(&c__9, &c__1, "WARNING! You forced a line break at li"\ "ne ", (ftnlen)41); -#line 10964 "" +#line 10965 "" do_lio(&c__3, &c__1, (char *)&compage_1.isysflb[ compage_1.nflb], (ftnlen)sizeof(integer)); -#line 10964 "" +#line 10965 "" do_lio(&c__9, &c__1, " but npage = 0. Continue?", (ftnlen)26) ; -#line 10964 "" +#line 10965 "" e_wsle(); -#line 10966 "" - s_rsfe(&io___697); -#line 10966 "" +#line 10967 "" + s_rsfe(&io___698); +#line 10967 "" do_fio(&c__1, charq, (ftnlen)1); -#line 10966 "" - e_rsfe(); #line 10967 "" + e_rsfe(); +#line 10968 "" if (i_indx("yY", charq, (ftnlen)2, (ftnlen)1) == 0) { -#line 10967 "" +#line 10968 "" stop1_(); -#line 10967 "" - } #line 10968 "" - } else if (compage_1.isysflb[compage_1.nflb] > compage_1.nsyst) { + } #line 10969 "" + } else if (compage_1.isysflb[compage_1.nflb] > compage_1.nsyst) { +#line 10970 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10969 "" +#line 10970 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Forced line break at"\ " line num > nsyst!", (ftnlen)128, (ftnlen)38); -#line 10971 "" - stop1_(); #line 10972 "" - } else if (i_indx(" PMS", durq, (ftnlen)4, (ftnlen)1) == 0) { + stop1_(); #line 10973 "" + } else if (i_indx(" PMS", durq, (ftnlen)4, (ftnlen)1) == 0) { +#line 10974 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10973 "" +#line 10974 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Must have \" \", \""\ "P\", \"M\", or \"S\" here!", (ftnlen)128, (ftnlen)37); -#line 10975 "" - stop1_(); #line 10976 "" - } + stop1_(); #line 10977 "" + } +#line 10978 "" L49: /* Transfer up from below to allow S after M */ -#line 10978 "" +#line 10979 "" if (*(unsigned char *)durq == 'S') { /* Shortened line, get shortening fraction */ -#line 10982 "" - comshort_1.ishort = 1; #line 10983 "" + comshort_1.ishort = 1; +#line 10984 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 10984 "" - if (i_indx("1234567890.", durq, (ftnlen)11, (ftnlen)1) == 0) { #line 10985 "" + if (i_indx("1234567890.", durq, (ftnlen)11, (ftnlen)1) == 0) { +#line 10986 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10985 "" +#line 10986 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Need number to d"\ "efine line shortening fraction!", (ftnlen)128, ( ftnlen)47); -#line 10987 "" - stop1_(); #line 10988 "" - } + stop1_(); #line 10989 "" - readnum_(lineq, &a1ll_2.iccount, durq, &comshort_1.shortfrac, - (ftnlen)128, (ftnlen)1); + } #line 10990 "" + readnum_(lineq, &a1ll_2.iccount, durq, &comshort_1.shortfrac, + (ftnlen)128, (ftnlen)1); +#line 10991 "" comshort_1.poefa[compage_1.isysflb[compage_1.nflb] - 1] = comshort_1.shortfrac; -#line 10991 "" - if (*(unsigned char *)durq != ' ') { #line 10992 "" + if (*(unsigned char *)durq != ' ') { +#line 10993 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 10992 "" +#line 10993 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Need blank here!", (ftnlen)128, (ftnlen)16); -#line 10994 "" - } #line 10995 "" - } + } #line 10996 "" + } +#line 10997 "" if (*(unsigned char *)durq == 'P') { /* Forced page break here, get page number. */ -#line 11000 "" +#line 11001 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 11001 "" - if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { #line 11002 "" + if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { +#line 11003 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11002 "" +#line 11003 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Need integer to "\ "define forced page break!", (ftnlen)128, (ftnlen) 41); -#line 11004 "" - stop1_(); #line 11005 "" - } + stop1_(); #line 11006 "" + } +#line 11007 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 11007 "" - ++compage_1.nfpb; #line 11008 "" - compage_1.ipagfpb[compage_1.nfpb] = i_nint(&fnum); + ++compage_1.nfpb; #line 11009 "" + compage_1.ipagfpb[compage_1.nfpb] = i_nint(&fnum); +#line 11010 "" compage_1.isysfpb[compage_1.nfpb] = compage_1.isysflb[ compage_1.nflb]; -#line 11010 "" - if (compage_1.ipagfpb[compage_1.nfpb] > compage_1.npages) { #line 11011 "" + if (compage_1.ipagfpb[compage_1.nfpb] > compage_1.npages) { +#line 11012 "" i__1 = a1ll_2.iccount - 1; -#line 11011 "" +#line 11012 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11011 "" +#line 11012 "" errmsg_(lineq, &i__1, &i__4, "Forced page break at page "\ "num > npages!", (ftnlen)128, (ftnlen)39); -#line 11013 "" - stop1_(); #line 11014 "" - } else if (compage_1.nfpb > 1) { + stop1_(); #line 11015 "" + } else if (compage_1.nfpb > 1) { +#line 11016 "" if (compage_1.ipagfpb[compage_1.nfpb] <= compage_1.ipagfpb[compage_1.nfpb - 1]) { -#line 11016 "" +#line 11017 "" i__1 = a1ll_2.iccount - 1; -#line 11016 "" +#line 11017 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11016 "" +#line 11017 "" errmsg_(lineq, &i__1, &i__4, "Forced page break numb"\ "ers must increase!", (ftnlen)128, (ftnlen)40); -#line 11018 "" - stop1_(); #line 11019 "" - } + stop1_(); #line 11020 "" - } + } #line 11021 "" - } + } #line 11022 "" - if (i_indx(" M", durq, (ftnlen)2, (ftnlen)1) == 0) { + } #line 11023 "" + if (i_indx(" M", durq, (ftnlen)2, (ftnlen)1) == 0) { +#line 11024 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11023 "" +#line 11024 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal character in"\ " linebreak symbol!", (ftnlen)128, (ftnlen)38); -#line 11025 "" - stop1_(); #line 11026 "" - } else if (*(unsigned char *)durq == 'M') { + stop1_(); #line 11027 "" - ++compage_1.nmovbrk; + } else if (*(unsigned char *)durq == 'M') { #line 11028 "" + ++compage_1.nmovbrk; +#line 11029 "" compage_1.isysmb[compage_1.nmovbrk] = compage_1.isysflb[ compage_1.nflb]; -#line 11029 "" +#line 11030 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, (ftnlen) 1); -#line 11030 "" +#line 11031 "" L31: -#line 11030 "" +#line 11031 "" if (*(unsigned char *)durq == '+') { /* Vertical spacing, read past number. */ -#line 11034 "" +#line 11035 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 11035 "" +#line 11036 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { -#line 11036 "" +#line 11037 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11036 "" +#line 11037 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Integer requ"\ "ired here!", (ftnlen)128, (ftnlen)22); -#line 11038 "" - stop1_(); #line 11039 "" - } + stop1_(); #line 11040 "" + } +#line 11041 "" readnum_(lineq, &a1ll_2.iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 11041 "" - goto L31; #line 11042 "" + goto L31; +#line 11043 "" } else if (*(unsigned char *)durq == 'i') { /* Change indentation, */ -#line 11046 "" +#line 11047 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 11047 "" +#line 11048 "" if (i_indx(".123456789", durq, (ftnlen)10, (ftnlen)1) == 0) { -#line 11048 "" +#line 11049 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11048 "" +#line 11049 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Decimal numb"\ "er required here!", (ftnlen)128, (ftnlen)29); -#line 11050 "" - stop1_(); #line 11051 "" + stop1_(); +#line 11052 "" } /* fracsys was initialized in block data to all 0.'s */ -#line 11055 "" +#line 11056 "" readnum_(lineq, &a1ll_2.iccount, durq, &compage_1.fracsys[ compage_1.nmovbrk - 1], (ftnlen)128, (ftnlen)1); -#line 11056 "" - goto L31; #line 11057 "" - } else if (*(unsigned char *)durq == 'c') { + goto L31; #line 11058 "" + } else if (*(unsigned char *)durq == 'c') { +#line 11059 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 11059 "" - goto L31; #line 11060 "" - } else if (*(unsigned char *)durq == 'r') { + goto L31; #line 11061 "" + } else if (*(unsigned char *)durq == 'r') { +#line 11062 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 11062 "" - if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { #line 11063 "" + if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) == 0) { +#line 11064 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11063 "" +#line 11064 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Must have"\ " \"+\" or \"-\" after \"r\" as movement brea"\ "k option!", (ftnlen)128, (ftnlen)56); -#line 11065 "" - stop1_(); #line 11066 "" - } + stop1_(); #line 11067 "" + } +#line 11068 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 11068 "" - goto L31; #line 11069 "" + goto L31; +#line 11070 "" } else if (*(unsigned char *)durq == 'n') { /* Change # of voices. Input ninow, iorig(1...ninow). Will use names, */ /* staves per inst. and clefs corr. to iorig in original list of instruments. */ -#line 11074 "" - a1ll_2.nv = 0; #line 11075 "" + a1ll_2.nv = 0; +#line 11076 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 11076 "" +#line 11077 "" if (*(unsigned char *)durq == ':') { /* Signals a 2-digit number, get next two characters */ -#line 11080 "" +#line 11081 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 11081 "" +#line 11082 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen)128, ( ftnlen)1); -#line 11082 "" +#line 11083 "" if (i_indx("12", durq, (ftnlen)2, (ftnlen)1) == 0 || i_indx("0123456789", dumq, (ftnlen)10, ( ftnlen)1) == 0) { -#line 11084 "" +#line 11085 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; /* Writing concatenation */ -#line 11084 "" +#line 11085 "" i__8[0] = 34, a__3[0] = "Illegal new number of i"\ "nstruments "; -#line 11084 "" +#line 11085 "" i__8[1] = 1, a__3[1] = durq; -#line 11084 "" +#line 11085 "" i__8[2] = 1, a__3[2] = dumq; -#line 11084 "" +#line 11085 "" i__8[3] = 19, a__3[3] = " at movement break!"; -#line 11084 "" +#line 11085 "" s_cat(ch__4, a__3, i__8, &c__4, (ftnlen)55); -#line 11084 "" +#line 11085 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, ch__4, ( ftnlen)128, (ftnlen)55); -#line 11087 "" - stop1_(); #line 11088 "" - } + stop1_(); #line 11089 "" + } +#line 11090 "" i__1 = a1ll_2.iccount - 2; -#line 11089 "" +#line 11090 "" ici__1.icierr = 0; -#line 11089 "" +#line 11090 "" ici__1.iciend = 0; -#line 11089 "" +#line 11090 "" ici__1.icirnum = 1; -#line 11089 "" +#line 11090 "" ici__1.icirlen = a1ll_2.iccount - i__1; -#line 11089 "" +#line 11090 "" ici__1.iciunit = lineq + i__1; -#line 11089 "" +#line 11090 "" ici__1.icifmt = "(i2)"; -#line 11089 "" +#line 11090 "" s_rsfi(&ici__1); -#line 11089 "" +#line 11090 "" do_fio(&c__1, (char *)&ninow, (ftnlen)sizeof(integer)) ; -#line 11089 "" - e_rsfi(); #line 11090 "" + e_rsfi(); +#line 11091 "" } else { /* durq is a single digit number for noinow */ -#line 11094 "" +#line 11095 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { -#line 11095 "" +#line 11096 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; /* Writing concatenation */ -#line 11095 "" +#line 11096 "" i__2[0] = 34, a__1[0] = "Illegal new number of i"\ "nstruments "; -#line 11095 "" +#line 11096 "" i__2[1] = 1, a__1[1] = durq; -#line 11095 "" +#line 11096 "" i__2[2] = 19, a__1[2] = " at movement break!"; -#line 11095 "" +#line 11096 "" s_cat(ch__5, a__1, i__2, &c__3, (ftnlen)54); -#line 11095 "" +#line 11096 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, ch__5, ( ftnlen)128, (ftnlen)54); -#line 11098 "" - stop1_(); #line 11099 "" - } + stop1_(); #line 11100 "" - ninow = *(unsigned char *)durq - 48; + } #line 11101 "" - } + ninow = *(unsigned char *)durq - 48; #line 11102 "" - if (ninow > comkeys_1.noinst) { + } #line 11103 "" + if (ninow > comkeys_1.noinst) { +#line 11104 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11103 "" +#line 11104 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "New number o"\ "f instruments must be <= original!", (ftnlen) 128, (ftnlen)46); -#line 11105 "" - stop1_(); #line 11106 "" - } + stop1_(); #line 11107 "" + } +#line 11108 "" i__1 = ninow; -#line 11107 "" - for (iinow = 1; iinow <= i__1; ++iinow) { #line 11108 "" + for (iinow = 1; iinow <= i__1; ++iinow) { +#line 11109 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 11109 "" +#line 11110 "" if (*(unsigned char *)durq == ':') { /* Signals a 2-digit number */ -#line 11113 "" +#line 11114 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen) 128, (ftnlen)1); -#line 11114 "" +#line 11115 "" g1etchar_(lineq, &a1ll_2.iccount, dumq, (ftnlen) 128, (ftnlen)1); -#line 11115 "" +#line 11116 "" if (i_indx("12", durq, (ftnlen)2, (ftnlen)1) == 0 || i_indx("0123456789", dumq, (ftnlen)10, (ftnlen)1) == 0) { -#line 11117 "" +#line 11118 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; /* Writing concatenation */ -#line 11117 "" +#line 11118 "" i__8[0] = 34, a__3[0] = "Illegal 2-digit ins"\ "trument number "; -#line 11117 "" +#line 11118 "" i__8[1] = 1, a__3[1] = durq; -#line 11117 "" +#line 11118 "" i__8[2] = 1, a__3[2] = dumq; -#line 11117 "" +#line 11118 "" i__8[3] = 19, a__3[3] = " at movement break!"; -#line 11117 "" +#line 11118 "" s_cat(ch__4, a__3, i__8, &c__4, (ftnlen)55); -#line 11117 "" +#line 11118 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, ch__4, (ftnlen)128, (ftnlen)55); -#line 11120 "" - stop1_(); #line 11121 "" - } + stop1_(); #line 11122 "" + } +#line 11123 "" i__4 = a1ll_2.iccount - 2; -#line 11122 "" +#line 11123 "" ici__1.icierr = 0; -#line 11122 "" +#line 11123 "" ici__1.iciend = 0; -#line 11122 "" +#line 11123 "" ici__1.icirnum = 1; -#line 11122 "" +#line 11123 "" ici__1.icirlen = a1ll_2.iccount - i__4; -#line 11122 "" +#line 11123 "" ici__1.iciunit = lineq + i__4; -#line 11122 "" +#line 11123 "" ici__1.icifmt = "(i2)"; -#line 11122 "" +#line 11123 "" s_rsfi(&ici__1); -#line 11122 "" +#line 11123 "" do_fio(&c__1, (char *)&iorig, (ftnlen)sizeof( integer)); -#line 11122 "" - e_rsfi(); #line 11123 "" + e_rsfi(); +#line 11124 "" } else { /* durq is a single digit number for iorig */ -#line 11127 "" +#line 11128 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen) 1) == 0) { -#line 11128 "" +#line 11129 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; /* Writing concatenation */ -#line 11128 "" +#line 11129 "" i__2[0] = 26, a__1[0] = "Illegal instrument "\ "number "; -#line 11128 "" +#line 11129 "" i__2[1] = 1, a__1[1] = durq; -#line 11128 "" +#line 11129 "" i__2[2] = 19, a__1[2] = " at movement break!"; -#line 11128 "" +#line 11129 "" s_cat(ch__6, a__1, i__2, &c__3, (ftnlen)46); -#line 11128 "" +#line 11129 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, ch__6, (ftnlen)128, (ftnlen)46); -#line 11131 "" - stop1_(); #line 11132 "" - } + stop1_(); #line 11133 "" - iorig = *(unsigned char *)durq - 48; + } #line 11134 "" - } + iorig = *(unsigned char *)durq - 48; #line 11135 "" - if (iorig > comkeys_1.noinst) { + } #line 11136 "" + if (iorig > comkeys_1.noinst) { +#line 11137 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11136 "" +#line 11137 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "New inst"\ "rument number must be <= original noinst!" , (ftnlen)128, (ftnlen)49); -#line 11138 "" - stop1_(); #line 11139 "" - } + stop1_(); #line 11140 "" - a1ll_2.nv += c1omget_1.nsperi[iorig - 1]; + } #line 11141 "" + a1ll_2.nv += c1omget_1.nsperi[iorig - 1]; +#line 11142 "" /* L63: */ -#line 11141 "" - } #line 11142 "" + } +#line 11143 "" i__1 = a1ll_2.nv; -#line 11142 "" +#line 11143 "" for (iiv = 1; iiv <= i__1; ++iiv) { /* Get clef names */ -#line 11146 "" +#line 11147 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 11147 "" +#line 11148 "" if (! (i_indx("tsmanrbf", durq, (ftnlen)8, (ftnlen)1) > 0 || *(unsigned char *)durq >= 48 && *( unsigned char *)durq <= 56)) { /* * (ichar(durq).ge.48 .and. ichar(durq).le.55))) then */ -#line 11150 "" +#line 11151 "" i__4 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11150 "" +#line 11151 "" errmsg_(lineq, &a1ll_2.iccount, &i__4, "Must hav"\ "e t,s,m,a,n,r,b,f or 1-7 as clef symbol "\ "here!", (ftnlen)128, (ftnlen)53); -#line 11152 "" - stop1_(); #line 11153 "" + stop1_(); +#line 11154 "" } /* Initialize new voices */ -#line 11157 "" - c1ommvl_1.nvmx[iiv - 1] = 1; #line 11158 "" - c1ommvl_1.ivmx[iiv - 1] = iiv; + c1ommvl_1.nvmx[iiv - 1] = 1; #line 11159 "" - a1ll_2.itsofar[iiv - 1] = 0; + c1ommvl_1.ivmx[iiv - 1] = iiv; #line 11160 "" - a1ll_2.nnl[iiv - 1] = 0; + a1ll_2.itsofar[iiv - 1] = 0; #line 11161 "" - for (j = 1; j <= 200; ++j) { + a1ll_2.nnl[iiv - 1] = 0; #line 11162 "" - a1ll_2.rest[iiv + j * 24 - 25] = FALSE_; + for (j = 1; j <= 200; ++j) { #line 11163 "" + a1ll_2.rest[iiv + j * 24 - 25] = FALSE_; +#line 11164 "" /* L62: */ -#line 11163 "" - } #line 11164 "" + } +#line 11165 "" /* L61: */ -#line 11164 "" +#line 11165 "" } /* Loop back up, this might not be last option in M */ -#line 11168 "" +#line 11169 "" g1etchar_(lineq, &a1ll_2.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 11169 "" - goto L31; #line 11170 "" - } else if (*(unsigned char *)durq == 'S') { + goto L31; #line 11171 "" - goto L49; + } else if (*(unsigned char *)durq == 'S') { #line 11172 "" - } else if (*(unsigned char *)durq != ' ') { + goto L49; #line 11173 "" + } else if (*(unsigned char *)durq != ' ') { +#line 11174 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11173 "" +#line 11174 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Illegal characte"\ "r after Movement break symbol!", (ftnlen)128, ( ftnlen)46); -#line 11175 "" - stop1_(); #line 11176 "" - } + stop1_(); #line 11177 "" + } +#line 11178 "" if (compage_1.fracsys[compage_1.nmovbrk - 1] < .001f) { /* Since fracsys was not explicitly set, set it to prior value. */ -#line 11181 "" - if (compage_1.nmovbrk == 1) { #line 11182 "" + if (compage_1.nmovbrk == 1) { +#line 11183 "" compage_1.fracsys[compage_1.nmovbrk - 1] = c1omget_1.fracindent; -#line 11183 "" - } else { #line 11184 "" + } else { +#line 11185 "" compage_1.fracsys[compage_1.nmovbrk - 1] = compage_1.fracsys[compage_1.nmovbrk - 2]; -#line 11185 "" - } #line 11186 "" - } + } #line 11187 "" + } +#line 11188 "" } /* Just before exiting if-block for forced line breaks, set counter to use when */ /* dealing with vertical space calcs */ -#line 11192 "" - compage_1.nistaff[compage_1.nflb] = a1ll_2.nv - 1; #line 11193 "" - } else if (*(unsigned char *)charq == 'F') { + compage_1.nistaff[compage_1.nflb] = a1ll_2.nv - 1; #line 11194 "" - compage_1.usefig = FALSE_; + } else if (*(unsigned char *)charq == 'F') { #line 11195 "" - } else if (*(unsigned char *)charq == 'X') { + compage_1.usefig = FALSE_; #line 11196 "" + } else if (*(unsigned char *)charq == 'X') { +#line 11197 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11196 "" +#line 11197 "" g1etx_(lineq, &a1ll_2.iccount, &comkeys_1.shifton, &i__1, & c1omnotes_1.udsp[c1omnotes_1.ibarcnt + a1ll_2.nbars], & c1omnotes_1.wheadpt, (ftnlen)128); -#line 11198 "" +#line 11199 "" } else if (*(unsigned char *)charq == 'I') { /* MIDI settings. */ -#line 11202 "" - if (c1ommvl_1.ivx != 1 || a1ll_2.nnl[0] != 0) { #line 11203 "" + if (c1ommvl_1.ivx != 1 || a1ll_2.nnl[0] != 0) { +#line 11204 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11203 "" +#line 11204 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "MIDI stuff only allo"\ "wed at start of block!", (ftnlen)128, (ftnlen)42); -#line 11205 "" - stop1_(); #line 11206 "" - } + stop1_(); #line 11207 "" - if (a1ll_2.nv > 15) { + } #line 11208 "" + if (a1ll_2.nv > 15) { +#line 11209 "" i__1 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + a1ll_2.nbars + 1; -#line 11208 "" +#line 11209 "" errmsg_(lineq, &a1ll_2.iccount, &i__1, "Sorry but MIDI does "\ "not work with more than 15 voices!", (ftnlen)128, ( ftnlen)54); -#line 11210 "" - stop1_(); #line 11211 "" - } + stop1_(); #line 11212 "" - commidi_1.ismidi = TRUE_; -#line 11213 "" - s_wsle(&io___701); -#line 11213 "" - do_lio(&c__9, &c__1, "#11087 Calling getmidi from g1etnote", ( - ftnlen)36); + } #line 11213 "" - e_wsle(); + commidi_1.ismidi = TRUE_; #line 11214 "" getmidi_(&comkeys_1.noinst, lineq, &a1ll_2.iccount, & c1omnotes_1.ibarcnt, &c1omnotes_1.ibaroff, &a1ll_2.nbars, @@ -28983,9 +28977,7 @@ L1: real r__1; /* Builtin functions */ - integer s_wsle(cilist *), do_lio(integer *, integer *, char *, ftnlen), - e_wsle(void), i_indx(char *, char *, ftnlen, ftnlen), i_nint(real - *); + integer i_indx(char *, char *, ftnlen, ftnlen), i_nint(real *); /* Subroutine */ int s_cat(char *, char **, integer *, integer *, ftnlen); integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void); @@ -29009,12 +29001,8 @@ L1: char *, real *, ftnlen, ftnlen); /* Fortran I/O blocks */ - static cilist io___753 = { 0, 6, 0, 0, 0 }; - static cilist io___761 = { 0, 6, 0, 0, 0 }; - static cilist io___763 = { 0, 6, 0, 0, 0 }; - static cilist io___764 = { 0, 6, 0, 0, 0 }; - static cilist io___766 = { 0, 6, 0, "(a)", 0 }; - static cilist io___767 = { 0, 15, 0, "(a)", 0 }; + static cilist io___762 = { 0, 6, 0, "(a)", 0 }; + static cilist io___763 = { 0, 15, 0, "(a)", 0 }; @@ -29038,518 +29026,475 @@ L1: #line 12069 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); #line 12070 "" - s_wsle(&io___753); -#line 12070 "" - do_lio(&c__9, &c__1, "#11946 In getmidi,durg:", (ftnlen)23); -#line 12070 "" - do_lio(&c__9, &c__1, durq, (ftnlen)1); -#line 12070 "" - e_wsle(); -#line 12071 "" if (*(unsigned char *)durq == 't') { /* Tempo in beats ber minute */ -#line 12075 "" +#line 12074 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12076 "" +#line 12075 "" if (i_indx("0123456789", durq, (ftnlen)10, (ftnlen)1) == 0) { -#line 12077 "" +#line 12076 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12077 "" +#line 12076 "" errmsg_(lineq, iccount, &i__1, "Expected an integer here for the"\ " pause!", (ftnlen)128, (ftnlen)39); -#line 12079 "" +#line 12078 "" stop1_(); -#line 12080 "" +#line 12079 "" } -#line 12081 "" +#line 12080 "" readnum_(lineq, iccount, durq, &qpm, (ftnlen)128, (ftnlen)1); -#line 12082 "" +#line 12081 "" --(*iccount); -#line 12083 "" +#line 12082 "" if (! (*first)) { -#line 12084 "" +#line 12083 "" i__1 = i_nint(&qpm); -#line 12084 "" +#line 12083 "" midievent_("t", &i__1, &c__0, (ftnlen)1); -#line 12085 "" +#line 12084 "" commmac_1.gottempo = TRUE_; -#line 12086 "" +#line 12085 "" } -#line 12087 "" +#line 12086 "" goto L1; -#line 12088 "" +#line 12087 "" } else if (*(unsigned char *)durq == 'p') { /* Insert a pause. pausemid = pause in 1/4's */ -#line 12092 "" +#line 12091 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12093 "" +#line 12092 "" if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) == 0) { -#line 12094 "" +#line 12093 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12094 "" +#line 12093 "" errmsg_(lineq, iccount, &i__1, "Expected a number here for the p"\ "ause!", (ftnlen)128, (ftnlen)37); -#line 12096 "" +#line 12095 "" stop1_(); -#line 12097 "" +#line 12096 "" } -#line 12098 "" +#line 12097 "" readnum_(lineq, iccount, durq, &pausemid, (ftnlen)128, (ftnlen)1); -#line 12099 "" +#line 12098 "" --(*iccount); -#line 12100 "" +#line 12099 "" if (! (*first)) { /* Compute a meter for the pause. This is only to keep MidiNotate on track. */ /* Round pause to nearest 16th. Let denominator always be 16. */ -#line 12105 "" +#line 12104 "" r__1 = pausemid * 4; -#line 12105 "" +#line 12104 "" numb16 = i_nint(&r__1); -#line 12106 "" +#line 12105 "" midievent_("m", &numb16, &c__16, (ftnlen)1); /* Put in pausemid beats of rest */ -#line 12110 "" +#line 12109 "" i__1 = commidi_1.numchan - 1; -#line 12110 "" +#line 12109 "" for (icm = 0; icm <= i__1; ++icm) { -#line 12111 "" +#line 12110 "" r__1 = numb16 * 4.f; -#line 12111 "" +#line 12110 "" addmidi_(&icm, &c__0, &c__0, &c__0, &r__1, &c_true, &c_false); -#line 12112 "" +#line 12111 "" /* L3: */ -#line 12112 "" +#line 12111 "" } -#line 12113 "" +#line 12112 "" r__1 = pausemid * 240; -#line 12113 "" +#line 12112 "" comevent_1.miditime += i_nint(&r__1); /* Restore meter */ -#line 12117 "" +#line 12116 "" i__1 = *mtrdenl * *lenbar / 64; -#line 12117 "" +#line 12116 "" midievent_("m", &i__1, mtrdenl, (ftnlen)1); -#line 12118 "" +#line 12117 "" } -#line 12119 "" +#line 12118 "" goto L1; -#line 12120 "" +#line 12119 "" } else if (*(unsigned char *)durq == 'i') { /* Instrument numbers or letters. Expect noinst of them. */ -#line 12124 "" +#line 12123 "" i__1 = *noinstarg; -#line 12124 "" +#line 12123 "" for (ivx = 1; ivx <= i__1; ++ivx) { -#line 12125 "" +#line 12124 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12126 "" +#line 12125 "" if (*(unsigned char *)durq > 96) { /* It's a lowercase letter. Get another, find corr. instrument #. */ -#line 12130 "" +#line 12129 "" *(unsigned char *)instq = *(unsigned char *)durq; -#line 12131 "" +#line 12130 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); /* Writing concatenation */ -#line 12132 "" +#line 12131 "" i__2[0] = 1, a__1[0] = instq; -#line 12132 "" +#line 12131 "" i__2[1] = 1, a__1[1] = durq; -#line 12132 "" +#line 12131 "" s_cat(instq, a__1, i__2, &c__2, (ftnlen)2); -#line 12133 "" +#line 12132 "" iname = i_indx("XXpiXrhXhaXmaXorXguXabXvlXvaXvcXcbXtrXtbXtuX"\ "frXsoXalXteXbsXobXbaXclXflXreXctXvo", instq, (ftnlen) 79, (ftnlen)2) / 3; -#line 12135 "" +#line 12134 "" if (iname == 0) { -#line 12136 "" +#line 12135 "" i__3 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12136 "" +#line 12135 "" errmsg_(lineq, iccount, &i__3, "Unrecognized 2-letter mi"\ "di instrument name!", (ftnlen)128, (ftnlen)43); -#line 12138 "" +#line 12137 "" stop1_(); -#line 12139 "" +#line 12138 "" } -#line 12140 "" +#line 12139 "" commidi_1.midinst[ivx - 1] = midinum[iname - 1] - 1; -#line 12141 "" - s_wsle(&io___761); -#line 12141 "" - do_lio(&c__9, &c__1, "#12012 in getmidi, inst=", (ftnlen)24); -#line 12141 "" - do_lio(&c__9, &c__1, instq, (ftnlen)2); -#line 12141 "" - e_wsle(); -#line 12142 "" +#line 12140 "" } else { /* Expect a number, followed by ":" if that is followed by another number. */ /* I.e., if after call to readnum, durq is not ":", it must be either blank */ /* or next instrument letter. */ -#line 12148 "" +#line 12146 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { -#line 12149 "" +#line 12147 "" i__3 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12149 "" +#line 12147 "" errmsg_(lineq, iccount, &i__3, "Expected a midi instrume"\ "nt number here!", (ftnlen)128, (ftnlen)39); -#line 12151 "" +#line 12149 "" stop1_(); -#line 12152 "" +#line 12150 "" } -#line 12153 "" +#line 12151 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 12154 "" +#line 12152 "" commidi_1.midinst[ivx - 1] = i_nint(&fnum) - 1; -#line 12155 "" +#line 12153 "" if (commidi_1.midinst[ivx - 1] < 0 || commidi_1.midinst[ivx - 1] > 255) { -#line 12156 "" +#line 12154 "" i__3 = *iccount - 1; -#line 12156 "" +#line 12154 "" i__4 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12156 "" +#line 12154 "" errmsg_(lineq, &i__3, &i__4, "Midi instrument number mus"\ "t be in range 1-128!", (ftnlen)128, (ftnlen)46); -#line 12158 "" +#line 12156 "" stop1_(); -#line 12159 "" +#line 12157 "" } -#line 12160 "" +#line 12158 "" if (*(unsigned char *)durq != ':') { -#line 12160 "" +#line 12158 "" --(*iccount); -#line 12160 "" +#line 12158 "" } -#line 12161 "" +#line 12159 "" } -#line 12162 "" +#line 12160 "" /* L2: */ -#line 12162 "" +#line 12160 "" } -#line 12163 "" +#line 12161 "" goto L1; -#line 12164 "" +#line 12162 "" } else if (*(unsigned char *)durq == 'v') { /* Get volumes for each instrument. Expect noinst of them. */ /* Follow same pattern as for insttrument numbers above. */ -#line 12169 "" +#line 12167 "" i__1 = *noinstarg; -#line 12169 "" +#line 12167 "" for (ivx = 1; ivx <= i__1; ++ivx) { -#line 12170 "" +#line 12168 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12171 "" +#line 12169 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { -#line 12172 "" +#line 12170 "" i__3 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12172 "" +#line 12170 "" errmsg_(lineq, iccount, &i__3, "Expected a midi velocity num"\ "ber here!", (ftnlen)128, (ftnlen)37); -#line 12174 "" +#line 12172 "" stop1_(); -#line 12175 "" +#line 12173 "" } -#line 12176 "" +#line 12174 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 12177 "" +#line 12175 "" commvel_2.midivel[ivx - 1] = i_nint(&fnum) - 1; -#line 12178 "" +#line 12176 "" if (commvel_2.midivel[ivx - 1] < 0 || commvel_2.midivel[ivx - 1] > 127) { -#line 12179 "" +#line 12177 "" i__3 = *iccount - 1; -#line 12179 "" +#line 12177 "" i__4 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12179 "" +#line 12177 "" errmsg_(lineq, &i__3, &i__4, "Midi velocity must be in range"\ " 1-128!", (ftnlen)128, (ftnlen)37); -#line 12181 "" +#line 12179 "" stop1_(); -#line 12182 "" +#line 12180 "" } -#line 12183 "" +#line 12181 "" if (*(unsigned char *)durq != ':') { -#line 12183 "" +#line 12181 "" --(*iccount); -#line 12183 "" +#line 12181 "" } -#line 12184 "" +#line 12182 "" /* L7: */ -#line 12184 "" +#line 12182 "" } -#line 12185 "" +#line 12183 "" if (! (*first)) { -#line 12186 "" +#line 12184 "" inst2chan_(commvel_2.midvelc, commvel_2.midivel, commidi_1.midchan, nv, commvel_2.iinsiv, commidi_1.twoline); -#line 12187 "" +#line 12185 "" } -#line 12188 "" +#line 12186 "" goto L1; -#line 12189 "" +#line 12187 "" } else if (*(unsigned char *)durq == 'b') { /* Get balance for each instrument. Expect noinst of them. */ /* Follow same pattern as for instrument numbers above. */ -#line 12194 "" +#line 12192 "" i__1 = *noinstarg; -#line 12194 "" +#line 12192 "" for (ivx = 1; ivx <= i__1; ++ivx) { -#line 12195 "" +#line 12193 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12196 "" +#line 12194 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { -#line 12197 "" +#line 12195 "" i__3 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12197 "" +#line 12195 "" errmsg_(lineq, iccount, &i__3, "Expected a balance number he"\ "re!", (ftnlen)128, (ftnlen)31); -#line 12199 "" +#line 12197 "" stop1_(); -#line 12200 "" +#line 12198 "" } -#line 12201 "" +#line 12199 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 12202 "" +#line 12200 "" commvel_2.midibal[ivx - 1] = i_nint(&fnum) - 1; -#line 12203 "" - s_wsle(&io___763); -#line 12203 "" - do_lio(&c__9, &c__1, "#12077 set midibal to", (ftnlen)21); -#line 12203 "" - do_lio(&c__3, &c__1, (char *)&commvel_2.midibal[ivx - 1], (ftnlen) - sizeof(integer)); -#line 12203 "" - e_wsle(); -#line 12204 "" +#line 12201 "" if (commvel_2.midibal[ivx - 1] < 0 || commvel_2.midibal[ivx - 1] > 127) { -#line 12205 "" +#line 12202 "" i__3 = *iccount - 1; -#line 12205 "" +#line 12202 "" i__4 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12205 "" +#line 12202 "" errmsg_(lineq, &i__3, &i__4, "Midi balance must be in range "\ "1-128!", (ftnlen)128, (ftnlen)36); -#line 12207 "" +#line 12204 "" stop1_(); -#line 12208 "" +#line 12205 "" } -#line 12209 "" +#line 12206 "" if (*(unsigned char *)durq != ':') { -#line 12209 "" +#line 12206 "" --(*iccount); -#line 12209 "" +#line 12206 "" } -#line 12210 "" +#line 12207 "" /* L8: */ -#line 12210 "" +#line 12207 "" } -#line 12211 "" +#line 12208 "" if (! (*first)) { -#line 12212 "" +#line 12209 "" inst2chan_(commvel_2.midbc, commvel_2.midibal, commidi_1.midchan, nv, commvel_2.iinsiv, commidi_1.twoline); -#line 12213 "" - s_wsle(&io___764); -#line 12213 "" - do_lio(&c__9, &c__1, "#12086 midbc0,1,midibal1,2:", (ftnlen)27); -#line 12213 "" - do_lio(&c__3, &c__1, (char *)&commvel_2.midbc[0], (ftnlen)sizeof( - integer)); -#line 12213 "" - do_lio(&c__3, &c__1, (char *)&commvel_2.midbc[1], (ftnlen)sizeof( - integer)); -#line 12213 "" - do_lio(&c__3, &c__1, (char *)&commvel_2.midibal[0], (ftnlen) - sizeof(integer)); -#line 12213 "" - do_lio(&c__3, &c__1, (char *)&commvel_2.midibal[1], (ftnlen) - sizeof(integer)); -#line 12213 "" - e_wsle(); -#line 12215 "" +#line 12210 "" } -#line 12216 "" +#line 12211 "" goto L1; -#line 12217 "" +#line 12212 "" } else if (*(unsigned char *)durq == 'T') { /* Get transposition for each instrument. Expect noinst of them. */ /* Follow similar pattern as above, but separator is +|-. */ -#line 12222 "" +#line 12217 "" i__1 = *noinstarg; -#line 12222 "" +#line 12217 "" for (ivx = 1; ivx <= i__1; ++ivx) { -#line 12223 "" +#line 12218 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12224 "" +#line 12219 "" ipm = i_indx("-+", durq, (ftnlen)2, (ftnlen)1); -#line 12225 "" +#line 12220 "" if (ipm == 0) { -#line 12226 "" +#line 12221 "" i__3 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12226 "" +#line 12221 "" errmsg_(lineq, iccount, &i__3, "Expected \"+\" or \"-\" for "\ "midi transposition here!", (ftnlen)128, (ftnlen)48); -#line 12228 "" +#line 12223 "" stop1_(); -#line 12229 "" +#line 12224 "" } -#line 12230 "" +#line 12225 "" ipm = (ipm << 1) - 3; -#line 12231 "" +#line 12226 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12232 "" +#line 12227 "" if (i_indx("0123456789", durq, (ftnlen)10, (ftnlen)1) == 0) { -#line 12233 "" +#line 12228 "" i__3 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12233 "" +#line 12228 "" errmsg_(lineq, iccount, &i__3, "Expected a number here!", ( ftnlen)128, (ftnlen)23); -#line 12235 "" +#line 12230 "" stop1_(); -#line 12236 "" +#line 12231 "" } -#line 12237 "" +#line 12232 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 12238 "" +#line 12233 "" commvel_2.miditran[ivx - 1] = ipm * i_nint(&fnum); /* if (mod(miditran(ivx),12).ne. 0) then */ /* call errmsg(lineq,iccount,ibarcnt-ibaroff+nbars+1, */ /* * 'Midi transposition limited to multiples of 12!') */ /* call stop1() */ /* end if */ -#line 12244 "" +#line 12239 "" --(*iccount); -#line 12245 "" +#line 12240 "" /* L9: */ -#line 12245 "" +#line 12240 "" } -#line 12246 "" +#line 12241 "" if (! (*first)) { -#line 12247 "" +#line 12242 "" inst2chan_(commvel_2.midtc, commvel_2.miditran, commidi_1.midchan, nv, commvel_2.iinsiv, commidi_1.twoline); -#line 12248 "" +#line 12243 "" } -#line 12249 "" +#line 12244 "" goto L1; -#line 12250 "" +#line 12245 "" } else if (*(unsigned char *)durq == 'g') { -#line 12251 "" +#line 12246 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12252 "" +#line 12247 "" if (i_indx("0123456789", durq, (ftnlen)10, (ftnlen)1) == 0) { -#line 12253 "" +#line 12248 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12253 "" +#line 12248 "" errmsg_(lineq, iccount, &i__1, "Expected an integer here for the"\ " midi gap!", (ftnlen)128, (ftnlen)42); -#line 12255 "" +#line 12250 "" stop1_(); -#line 12256 "" +#line 12251 "" } -#line 12257 "" +#line 12252 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 12258 "" +#line 12253 "" commidi_1.mgap = i_nint(&fnum); -#line 12259 "" +#line 12254 "" --(*iccount); -#line 12260 "" +#line 12255 "" goto L1; -#line 12261 "" +#line 12256 "" } else if (*(unsigned char *)durq == 'M') { /* MidiMacros */ -#line 12265 "" +#line 12260 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12266 "" +#line 12261 "" if (*(unsigned char *)durq == 'R') { /* Start recording */ -#line 12270 "" +#line 12265 "" if (commmac_1.mmacrec) { -#line 12271 "" +#line 12266 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12271 "" +#line 12266 "" errmsg_(lineq, iccount, &i__1, "You tried to record a MidiMa"\ "cro while already recording!", (ftnlen)128, (ftnlen) 56); -#line 12273 "" +#line 12268 "" stop1_(); -#line 12274 "" +#line 12269 "" } -#line 12275 "" +#line 12270 "" commmac_1.mmacrec = TRUE_; -#line 12276 "" +#line 12271 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12277 "" +#line 12272 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { -#line 12278 "" +#line 12273 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12278 "" +#line 12273 "" errmsg_(lineq, iccount, &i__1, "Expected MidiMacro ID number"\ " here!", (ftnlen)128, (ftnlen)34); -#line 12280 "" +#line 12275 "" stop1_(); -#line 12281 "" +#line 12276 "" } -#line 12282 "" +#line 12277 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 12283 "" +#line 12278 "" --(*iccount); -#line 12284 "" +#line 12279 "" if (! (*first)) { -#line 12285 "" +#line 12280 "" commmac_1.immac = i_nint(&fnum); -#line 12286 "" +#line 12281 "" if (commmac_1.immac > 20) { -#line 12287 "" +#line 12282 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12287 "" +#line 12282 "" errmsg_(lineq, iccount, &i__1, "MidiMacro ID cannot exce"\ "ed 20!", (ftnlen)128, (ftnlen)30); -#line 12289 "" +#line 12284 "" stop1_(); -#line 12290 "" +#line 12285 "" } /* Save the start time */ -#line 12294 "" +#line 12289 "" commmac_1.mmactime[commmac_1.immac - 1] = comevent_1.miditime; -#line 12295 "" +#line 12290 "" i__1 = commidi_1.numchan; -#line 12295 "" +#line 12290 "" for (icm = 0; icm <= i__1; ++icm) { -#line 12296 "" +#line 12291 "" if (icm < commidi_1.numchan) { -#line 12297 "" +#line 12292 "" if (commidi_1.restpend[icm]) { /* Adjust if there's a rest at end of prior section. Insert dummy turnoff. */ @@ -29558,294 +29503,294 @@ L1: /* Before: section1 ------rest------- section2(to be recorded) */ /* After: section1 rest1 now rest2 section2(recorded) */ -#line 12305 "" +#line 12300 "" addmidi_(&icm, &c__30, &c__0, &c__0, & commidi_1.trest[icm], &c_false, &c_true); -#line 12306 "" +#line 12301 "" commidi_1.trest[icm] = 0.f; -#line 12307 "" +#line 12302 "" commidi_1.restpend[icm] = FALSE_; -#line 12308 "" +#line 12303 "" } -#line 12309 "" +#line 12304 "" } else { -#line 12310 "" +#line 12305 "" if (comevent_1.miditime > comevent_1.lasttime) { /* Insert a dummy turnoff in conductor track */ -#line 12314 "" +#line 12309 "" r__1 = (comevent_1.miditime - comevent_1.lasttime) / 15.f; -#line 12314 "" +#line 12309 "" addmidi_(&icm, &c__30, &c__0, &c__0, &r__1, & c_false, &c_true); -#line 12316 "" +#line 12311 "" comevent_1.lasttime = comevent_1.miditime; -#line 12317 "" +#line 12312 "" } -#line 12318 "" +#line 12313 "" } -#line 12319 "" +#line 12314 "" commmac_1.mmacstrt[icm + commmac_1.immac * 25 - 25] = commidi_1.imidi[icm] + 1; -#line 12320 "" +#line 12315 "" /* L4: */ -#line 12320 "" +#line 12315 "" } -#line 12321 "" +#line 12316 "" } -#line 12322 "" +#line 12317 "" goto L1; -#line 12323 "" +#line 12318 "" } else if (i_indx("123456789P", durq, (ftnlen)10, (ftnlen)1) == 0) { /* End recording; close the open macro. Get immac from common. */ -#line 12327 "" +#line 12322 "" if (! commmac_1.mmacrec) { -#line 12328 "" +#line 12323 "" i__1 = *iccount - 1; -#line 12328 "" +#line 12323 "" i__3 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12328 "" +#line 12323 "" errmsg_(lineq, &i__1, &i__3, "You tried to end a MidiMacro b"\ "efore starting one!", (ftnlen)128, (ftnlen)49); -#line 12330 "" +#line 12325 "" stop1_(); -#line 12331 "" +#line 12326 "" } -#line 12332 "" +#line 12327 "" commmac_1.mmacrec = FALSE_; -#line 12333 "" +#line 12328 "" --(*iccount); -#line 12334 "" +#line 12329 "" if (! (*first)) { /* Save the macro duration */ -#line 12338 "" +#line 12333 "" commmac_1.mmactime[commmac_1.immac - 1] = comevent_1.miditime - commmac_1.mmactime[commmac_1.immac - 1]; -#line 12339 "" +#line 12334 "" i__1 = commidi_1.numchan; -#line 12339 "" +#line 12334 "" for (icm = 0; icm <= i__1; ++icm) { -#line 12340 "" +#line 12335 "" if (icm < commidi_1.numchan) { -#line 12341 "" +#line 12336 "" if (commidi_1.restpend[icm]) { -#line 12342 "" +#line 12337 "" addmidi_(&icm, &c__30, &c__0, &c__0, & commidi_1.trest[icm], &c_false, &c_true); -#line 12343 "" +#line 12338 "" commidi_1.trest[icm] = 0.f; -#line 12344 "" +#line 12339 "" commidi_1.restpend[icm] = FALSE_; -#line 12345 "" +#line 12340 "" } -#line 12346 "" +#line 12341 "" } else { -#line 12347 "" +#line 12342 "" if (comevent_1.miditime > comevent_1.lasttime) { /* Insert a dummy turnoff in conductor track if needed. */ -#line 12351 "" +#line 12346 "" r__1 = (comevent_1.miditime - comevent_1.lasttime) / 15.f; -#line 12351 "" +#line 12346 "" addmidi_(&icm, &c__30, &c__0, &c__0, &r__1, & c_false, &c_true); -#line 12353 "" +#line 12348 "" comevent_1.lasttime = comevent_1.miditime; -#line 12354 "" +#line 12349 "" } -#line 12355 "" +#line 12350 "" } -#line 12356 "" +#line 12351 "" commmac_1.mmacend[icm + commmac_1.immac * 25 - 25] = commidi_1.imidi[icm]; -#line 12357 "" +#line 12352 "" /* L5: */ -#line 12357 "" +#line 12352 "" } -#line 12358 "" +#line 12353 "" } -#line 12359 "" +#line 12354 "" if (*(unsigned char *)durq != ' ') { -#line 12359 "" +#line 12354 "" goto L1; -#line 12359 "" +#line 12354 "" } -#line 12360 "" +#line 12355 "" } else if (*(unsigned char *)durq == 'P') { /* Play Back a Macro */ -#line 12364 "" +#line 12359 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12365 "" +#line 12360 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { -#line 12366 "" +#line 12361 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12366 "" +#line 12361 "" errmsg_(lineq, iccount, &i__1, "Expected MidiMacro ID number"\ " here!", (ftnlen)128, (ftnlen)34); -#line 12368 "" +#line 12363 "" stop1_(); -#line 12369 "" +#line 12364 "" } -#line 12370 "" +#line 12365 "" if (commmac_1.mmacrec) { -#line 12371 "" +#line 12366 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12371 "" +#line 12366 "" errmsg_(lineq, iccount, &i__1, "You tried to play a MidiMacr"\ "o before ending recording!", (ftnlen)128, (ftnlen)54); -#line 12373 "" +#line 12368 "" stop1_(); -#line 12374 "" +#line 12369 "" } -#line 12375 "" +#line 12370 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 12376 "" +#line 12371 "" --(*iccount); -#line 12377 "" +#line 12372 "" if (! (*first)) { -#line 12378 "" +#line 12373 "" commmac_1.immac = i_nint(&fnum); -#line 12379 "" +#line 12374 "" if (commmac_1.mmactime[commmac_1.immac - 1] == 0) { -#line 12380 "" +#line 12375 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12380 "" +#line 12375 "" errmsg_(lineq, iccount, &i__1, "Cannot play a MIDI macro"\ " before recording it!", (ftnlen)128, (ftnlen)45); -#line 12382 "" +#line 12377 "" stop1_(); -#line 12383 "" +#line 12378 "" } -#line 12384 "" +#line 12379 "" i__1 = commidi_1.numchan; -#line 12384 "" +#line 12379 "" for (icm = 0; icm <= i__1; ++icm) { -#line 12385 "" +#line 12380 "" if (icm < commidi_1.numchan) { -#line 12386 "" +#line 12381 "" if (commidi_1.restpend[icm]) { -#line 12387 "" +#line 12382 "" addmidi_(&icm, &c__30, &c__0, &c__0, & commidi_1.trest[icm], &c_false, &c_true); -#line 12388 "" +#line 12383 "" commidi_1.trest[icm] = 0.f; -#line 12389 "" +#line 12384 "" commidi_1.restpend[icm] = FALSE_; -#line 12390 "" +#line 12385 "" } -#line 12391 "" +#line 12386 "" } else { -#line 12392 "" +#line 12387 "" if (comevent_1.miditime > comevent_1.lasttime) { /* Insert a dummy turnoff in conductor track */ -#line 12396 "" +#line 12391 "" r__1 = (comevent_1.miditime - comevent_1.lasttime) / 15.f; -#line 12396 "" +#line 12391 "" addmidi_(&icm, &c__30, &c__0, &c__0, &r__1, & c_false, &c_true); -#line 12398 "" +#line 12393 "" } -#line 12399 "" +#line 12394 "" } -#line 12400 "" +#line 12395 "" commmac_1.msecend[icm + commmac_1.nmidsec * 25 - 25] = commidi_1.imidi[icm]; -#line 12401 "" +#line 12396 "" commmac_1.msecstrt[icm + (commmac_1.nmidsec + 1) * 25 - 25] = commmac_1.mmacstrt[icm + commmac_1.immac * 25 - 25]; -#line 12402 "" +#line 12397 "" commmac_1.msecend[icm + (commmac_1.nmidsec + 1) * 25 - 25] = commmac_1.mmacend[icm + commmac_1.immac * 25 - 25]; -#line 12403 "" +#line 12398 "" commmac_1.msecstrt[icm + (commmac_1.nmidsec + 2) * 25 - 25] = commidi_1.imidi[icm] + 1; -#line 12404 "" +#line 12399 "" /* L6: */ -#line 12404 "" +#line 12399 "" } -#line 12405 "" +#line 12400 "" commmac_1.nmidsec += 2; /* Update running time */ -#line 12409 "" +#line 12404 "" comevent_1.miditime += commmac_1.mmactime[commmac_1.immac - 1] ; -#line 12410 "" +#line 12405 "" comevent_1.lasttime = comevent_1.miditime; -#line 12411 "" +#line 12406 "" } -#line 12412 "" +#line 12407 "" goto L1; -#line 12413 "" +#line 12408 "" } else { -#line 12414 "" +#line 12409 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12414 "" +#line 12409 "" errmsg_(lineq, iccount, &i__1, "Illegal character in MidiMacro s"\ "ub-command!", (ftnlen)128, (ftnlen)43); -#line 12416 "" +#line 12411 "" stop1_(); -#line 12417 "" +#line 12412 "" } -#line 12418 "" +#line 12413 "" } else if (*(unsigned char *)durq == 'd') { -#line 12419 "" +#line 12414 "" commidi_1.debugmidi = TRUE_; -#line 12420 "" +#line 12415 "" goto L1; -#line 12421 "" +#line 12416 "" } else if (*(unsigned char *)durq != ' ') { -#line 12422 "" +#line 12417 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 12422 "" +#line 12417 "" errmsg_(lineq, iccount, &i__1, "Illegal character in MIDI input data!" , (ftnlen)128, (ftnlen)37); -#line 12424 "" - s_wsfe(&io___766); -#line 12424 "" +#line 12419 "" + s_wsfe(&io___762); +#line 12419 "" do_fio(&c__1, "May be too many args to i,v,b, or T. As of Ver. 2.7, "\ "should be noinst, not nv", (ftnlen)77); -#line 12424 "" +#line 12419 "" e_wsfe(); -#line 12427 "" - s_wsfe(&io___767); -#line 12427 "" +#line 12422 "" + s_wsfe(&io___763); +#line 12422 "" do_fio(&c__1, "May be too many args to i,v,b, or T. As of Ver. 2.7, "\ "should be noinst, not nv", (ftnlen)77); -#line 12427 "" +#line 12422 "" e_wsfe(); -#line 12430 "" +#line 12425 "" stop1_(); -#line 12431 "" +#line 12426 "" } -#line 12432 "" +#line 12427 "" if (! commmac_1.gottempo && ! (*first)) { /* If no tempo is set on first call on the pmxb pass, then set it */ -#line 12436 "" +#line 12431 "" midievent_("t", &c__96, &c__0, (ftnlen)1); -#line 12437 "" +#line 12432 "" commmac_1.gottempo = TRUE_; -#line 12438 "" +#line 12433 "" } -#line 12439 "" +#line 12434 "" return 0; } /* getmidi_ */ @@ -29967,147 +29912,146 @@ L1: static integer lvoltxt, ltopnam; /* Fortran I/O blocks */ - static cilist io___772 = { 0, 11, 0, "(a)", 0 }; - static cilist io___780 = { 0, 6, 0, 0, 0 }; - static cilist io___791 = { 0, 6, 0, 0, 0 }; - static cilist io___792 = { 0, 6, 0, 0, 0 }; - static cilist io___803 = { 0, 6, 0, 0, 0 }; - static cilist io___804 = { 0, 6, 0, 0, 0 }; + static cilist io___768 = { 0, 11, 0, "(a)", 0 }; + static cilist io___776 = { 0, 6, 0, 0, 0 }; + static cilist io___787 = { 0, 6, 0, 0, 0 }; + static cilist io___788 = { 0, 6, 0, 0, 0 }; + static cilist io___799 = { 0, 6, 0, 0, 0 }; + static cilist io___800 = { 0, 6, 0, 0, 0 }; + static cilist io___816 = { 0, 6, 0, 0, 0 }; + static cilist io___817 = { 0, 6, 0, 0, 0 }; + static cilist io___818 = { 0, 6, 0, 0, 0 }; static cilist io___820 = { 0, 6, 0, 0, 0 }; - static cilist io___821 = { 0, 6, 0, 0, 0 }; - static cilist io___822 = { 0, 6, 0, 0, 0 }; - static cilist io___824 = { 0, 6, 0, 0, 0 }; + static cilist io___825 = { 0, 11, 0, "(a)", 0 }; + static cilist io___826 = { 0, 11, 0, "(a)", 0 }; static cilist io___829 = { 0, 11, 0, "(a)", 0 }; static cilist io___830 = { 0, 11, 0, "(a)", 0 }; + static cilist io___831 = { 0, 11, 0, "(a)", 0 }; + static cilist io___832 = { 0, 11, 0, "(a)", 0 }; static cilist io___833 = { 0, 11, 0, "(a)", 0 }; - static cilist io___834 = { 0, 11, 0, "(a)", 0 }; - static cilist io___835 = { 0, 11, 0, "(a)", 0 }; - static cilist io___836 = { 0, 11, 0, "(a)", 0 }; - static cilist io___837 = { 0, 11, 0, "(a)", 0 }; - static cilist io___838 = { 0, 11, 0, "(a11,i2,a)", 0 }; - static cilist io___839 = { 0, 11, 0, "(a9,i2,a)", 0 }; - static cilist io___841 = { 0, 11, 0, "(a8,i1,a3)", 0 }; - static cilist io___842 = { 0, 11, 0, "(a9,i2,a4)", 0 }; - static cilist io___843 = { 0, 11, 0, "(a8,i1,a)", 0 }; - static cilist io___844 = { 0, 11, 0, "(a9,i2,a)", 0 }; - static cilist io___845 = { 0, 6, 0, 0, 0 }; - static cilist io___846 = { 0, 6, 0, 0, 0 }; - static cilist io___855 = { 0, 6, 0, 0, 0 }; - static cilist io___857 = { 0, 11, 0, "(a)", 0 }; + static cilist io___834 = { 0, 11, 0, "(a11,i2,a)", 0 }; + static cilist io___835 = { 0, 11, 0, "(a9,i2,a)", 0 }; + static cilist io___837 = { 0, 11, 0, "(a8,i1,a3)", 0 }; + static cilist io___838 = { 0, 11, 0, "(a9,i2,a4)", 0 }; + static cilist io___839 = { 0, 11, 0, "(a8,i1,a)", 0 }; + static cilist io___840 = { 0, 11, 0, "(a9,i2,a)", 0 }; + static cilist io___841 = { 0, 6, 0, 0, 0 }; + static cilist io___842 = { 0, 6, 0, 0, 0 }; + static cilist io___851 = { 0, 6, 0, 0, 0 }; + static cilist io___853 = { 0, 11, 0, "(a)", 0 }; + static cilist io___854 = { 0, 11, 0, "(a)", 0 }; + static cilist io___855 = { 0, 11, 0, "(a)", 0 }; + static cilist io___856 = { 0, 11, 0, "(a)", 0 }; static cilist io___858 = { 0, 11, 0, "(a)", 0 }; - static cilist io___859 = { 0, 11, 0, "(a)", 0 }; - static cilist io___860 = { 0, 11, 0, "(a)", 0 }; + static cilist io___861 = { 0, 11, 0, "(a)", 0 }; static cilist io___862 = { 0, 11, 0, "(a)", 0 }; + static cilist io___863 = { 0, 11, 0, "(a)", 0 }; + static cilist io___864 = { 0, 11, 0, "(a)", 0 }; static cilist io___865 = { 0, 11, 0, "(a)", 0 }; static cilist io___866 = { 0, 11, 0, "(a)", 0 }; static cilist io___867 = { 0, 11, 0, "(a)", 0 }; static cilist io___868 = { 0, 11, 0, "(a)", 0 }; - static cilist io___869 = { 0, 11, 0, "(a)", 0 }; - static cilist io___870 = { 0, 11, 0, "(a)", 0 }; - static cilist io___871 = { 0, 11, 0, "(a)", 0 }; - static cilist io___872 = { 0, 11, 0, "(a)", 0 }; - static cilist io___878 = { 0, 6, 0, 0, 0 }; /* nvmx is either 1 or 2. ivmx(iv,1)=iv, ; ivmx(iv,2)>nv if defined */ /* ivx is current ivmx, and is the index for all notes, acc's etc. */ -#line 12565 "" +#line 12560 "" cdot = FALSE_; -#line 12566 "" +#line 12561 "" inxtup = FALSE_; -#line 12567 "" +#line 12562 "" L1: -#line 12567 "" +#line 12562 "" getchar_(lineq, &all_1.iccount, charq, (ftnlen)128, (ftnlen)1); -#line 12568 "" +#line 12563 "" if (comget_1.lastchar) { -#line 12568 "" +#line 12563 "" return 0; -#line 12568 "" +#line 12563 "" } -#line 12569 "" +#line 12564 "" if (*(unsigned char *)charq == ' ') { -#line 12569 "" +#line 12564 "" goto L1; -#line 12569 "" +#line 12564 "" } -#line 12570 "" +#line 12565 "" if (*(unsigned char *)charq == '%') { /* Check for a bar number format: */ -#line 12574 "" +#line 12569 "" if (all_1.iccount == 1 && *(unsigned char *)&lineq[1] == ' ' && i_indx("bB1234567890", lineq + 2, (ftnlen)12, (ftnlen)1) > 0) { -#line 12576 "" +#line 12571 "" if (comlast_1.islast) { -#line 12576 "" - s_wsfe(&io___772); -#line 12576 "" +#line 12571 "" + s_wsfe(&io___768); +#line 12571 "" do_fio(&c__1, lineq, lenstr_(lineq, &c__128, (ftnlen)128)); -#line 12576 "" +#line 12571 "" e_wsfe(); -#line 12576 "" +#line 12571 "" } -#line 12577 "" +#line 12572 "" } -#line 12578 "" +#line 12573 "" all_1.iccount = 128; -#line 12579 "" +#line 12574 "" goto L1; -#line 12580 "" +#line 12575 "" } /* Closing repeat iff charq='/' and the prev. char was 'R' with 'd' or 'r' */ -#line 12584 "" +#line 12579 "" if (comget_1.rptprev) { -#line 12585 "" +#line 12580 "" comget_1.rptnd1 = *(unsigned char *)charq == '/'; -#line 12586 "" +#line 12581 "" comget_1.rptprev = FALSE_; -#line 12587 "" +#line 12582 "" } /* Repeat at end of a piece */ -#line 12591 "" +#line 12586 "" if (*(unsigned char *)charq >= 97 && *(unsigned char *)charq <= 103 || *( unsigned char *)charq == 'r') { -#line 12593 "" +#line 12588 "" if (cdot) { -#line 12593 "" +#line 12588 "" goto L28; -#line 12593 "" +#line 12588 "" } /* This is a note/rest. */ -#line 12597 "" +#line 12592 "" idotform = 0; -#line 12598 "" +#line 12593 "" numnum = 0; /* If start of line of music, set pitch from previous */ -#line 12602 "" +#line 12597 "" if (commvl_1.ivx <= all_1.nv) { -#line 12603 "" +#line 12598 "" kv = 1; -#line 12604 "" +#line 12599 "" } else { -#line 12605 "" +#line 12600 "" kv = 2; -#line 12606 "" +#line 12601 "" } -#line 12607 "" +#line 12602 "" if (all_1.nnl[commvl_1.ivx - 1] == 0) { -#line 12607 "" +#line 12602 "" comnotes_1.lastlev = comnotes_1.ndlev[all_1.iv + kv * 24 - 25]; -#line 12607 "" +#line 12602 "" } /* notcrd is used to tell if orn. goes on main note or chord note */ @@ -30116,63 +30060,63 @@ L1: /* Increase note count, then loop 'til blank. Label 28 is for dotted shortcuts. */ -#line 12615 "" +#line 12610 "" L28: /* Moved this from just above, 2 Feb 02 */ -#line 12619 "" +#line 12614 "" comnotes_1.notcrd = TRUE_; -#line 12620 "" +#line 12615 "" ++all_1.nnl[commvl_1.ivx - 1]; -#line 12621 "" +#line 12616 "" if (comget_1.ornrpt) { /* Replicate ornament bits, also bit 23 for beam handling if chord. */ -#line 12625 "" +#line 12620 "" all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1] |= all_1.iornq[commvl_1.ivx - 1]; -#line 12626 "" +#line 12621 "" if ((all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1] & 32896) > 0) { /* This is a trill (bit 7 or 15) so must dup the parameters */ -#line 12630 "" +#line 12625 "" ++comtrill_1.ntrill; -#line 12631 "" +#line 12626 "" comtrill_1.ivtrill[comtrill_1.ntrill - 1] = commvl_1.ivx; -#line 12632 "" +#line 12627 "" comtrill_1.iptrill[comtrill_1.ntrill - 1] = all_1.nnl[ commvl_1.ivx - 1]; -#line 12633 "" +#line 12628 "" comtrill_1.xnsktr[comtrill_1.ntrill - 1] = comtrill_1.xnsktr[ comtrill_1.ntrill - 2]; -#line 12634 "" +#line 12629 "" } -#line 12635 "" +#line 12630 "" } -#line 12636 "" +#line 12631 "" if (comget_1.stickys) { /* Grab stemlength shortening parameters from prior note */ -#line 12640 "" +#line 12635 "" all_1.mult[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.mult[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],27); /* call setbits (mult(ivx,nnl(ivx)),3,28, */ /* * igetbits(mult(ivx,nnl(ivx)-1),3,28)) */ -#line 12643 "" +#line 12638 "" i__1 = igetbits_(&all_1.mult[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 25], &c__6, &c__10); -#line 12643 "" +#line 12638 "" setbits_(&all_1.mult[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25], &c__6, &c__10, &i__1); -#line 12645 "" +#line 12640 "" } -#line 12646 "" +#line 12641 "" if (comfb_1.autofbon && comfb_1.tautofb > comtol_1.tol && ! comget_1.fbon) { @@ -30180,514 +30124,514 @@ L28: /* starts a period. */ /* if (mod(1.*itsofar(ivx),tautofb) .lt. tol) then */ -#line 12652 "" +#line 12647 "" r__1 = all_1.itsofar[commvl_1.ivx - 1] - comfb_1.t1autofb; -#line 12652 "" +#line 12647 "" if (r_mod(&r__1, &comfb_1.tautofb) < comtol_1.tol) { /* Start a forced beam here */ -#line 12656 "" +#line 12651 "" ++comfb_1.nfb[commvl_1.ivx - 1]; -#line 12657 "" +#line 12652 "" comget_1.fbon = TRUE_; -#line 12658 "" +#line 12653 "" *(unsigned char *)&comfb_1.ulfbq[commvl_1.ivx + comfb_1.nfb[ commvl_1.ivx - 1] * 24 - 25] = 'x'; -#line 12659 "" +#line 12654 "" comfb_1.t1fb[commvl_1.ivx + comfb_1.nfb[commvl_1.ivx - 1] * 24 - 25] = (real) all_1.itsofar[commvl_1.ivx - 1]; -#line 12660 "" +#line 12655 "" } -#line 12661 "" +#line 12656 "" } -#line 12662 "" +#line 12657 "" if (comget_1.fbon) { -#line 12662 "" +#line 12657 "" all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],30); -#line 12662 "" +#line 12657 "" } -#line 12663 "" +#line 12658 "" *(unsigned char *)dotq = 'x'; -#line 12664 "" +#line 12659 "" if (*(unsigned char *)charq == 'r') { -#line 12664 "" +#line 12659 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],0); -#line 12664 "" +#line 12659 "" } -#line 12666 "" +#line 12661 "" if (bit_test(all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],0)) { /* Rest stuff. First check if previous note was full-bar-pause */ -#line 12670 "" +#line 12665 "" i__1 = all_1.iccount; -#line 12670 "" +#line 12665 "" if (s_cmp(lineq + i__1, " ", all_1.iccount + 1 - i__1, (ftnlen)1) == 0 && all_1.nnl[commvl_1.ivx - 1] > 1) { -#line 12672 "" +#line 12667 "" if (bit_test(all_1.islur[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 25],19)) { -#line 12672 "" +#line 12667 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],19); -#line 12672 "" +#line 12667 "" } -#line 12674 "" +#line 12669 "" } /* Set default rest level at 0 unless 2 voices/staff in which case it's -4 or 2 */ /* for voice a or b. Set a-types at 0 as encountered and adjust later */ /* after '//'. (Override heights will be set to 100+offset) */ -#line 12680 "" +#line 12675 "" if (commvl_1.ivx <= all_1.nv) { -#line 12681 "" +#line 12676 "" all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = 0; -#line 12682 "" +#line 12677 "" } else { -#line 12683 "" +#line 12678 "" all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = 2; -#line 12684 "" +#line 12679 "" } -#line 12685 "" +#line 12680 "" } -#line 12686 "" +#line 12681 "" L2: -#line 12686 "" +#line 12681 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12687 "" +#line 12682 "" ic = *(unsigned char *)durq; -#line 12688 "" +#line 12683 "" if (ic <= 57 && ic >= 48) { /* Digit */ -#line 12692 "" +#line 12687 "" if (numnum == 0) { -#line 12693 "" +#line 12688 "" comnotes_1.nnodur = ic - 48; -#line 12694 "" +#line 12689 "" numnum = 1; -#line 12695 "" +#line 12690 "" goto L2; -#line 12696 "" +#line 12691 "" } else if (numnum == 1) { -#line 12697 "" +#line 12692 "" ioct = ic - 48; -#line 12698 "" +#line 12693 "" numnum = 2; -#line 12699 "" +#line 12694 "" goto L2; -#line 12700 "" +#line 12695 "" } else { -#line 12701 "" - s_wsle(&io___780); -#line 12701 "" +#line 12696 "" + s_wsle(&io___776); +#line 12696 "" do_lio(&c__9, &c__1, ">2 digits in note sym., ivx,nn:", ( ftnlen)31); -#line 12701 "" +#line 12696 "" do_lio(&c__3, &c__1, (char *)&commvl_1.ivx, (ftnlen)sizeof( integer)); -#line 12701 "" +#line 12696 "" do_lio(&c__3, &c__1, (char *)&all_1.nnl[commvl_1.ivx - 1], ( ftnlen)sizeof(integer)); -#line 12701 "" +#line 12696 "" e_wsle(); -#line 12702 "" +#line 12697 "" stop1_(); -#line 12703 "" +#line 12698 "" } -#line 12704 "" +#line 12699 "" } else if (*(unsigned char *)durq == 'd') { -#line 12705 "" +#line 12700 "" *(unsigned char *)dotq = *(unsigned char *)durq; -#line 12706 "" +#line 12701 "" i__1 = all_1.iccount; -#line 12706 "" +#line 12701 "" if (s_cmp(lineq + i__1, "d", all_1.iccount + 1 - i__1, (ftnlen)1) == 0) { /* Double dot. */ -#line 12710 "" +#line 12705 "" ++all_1.iccount; -#line 12711 "" +#line 12706 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],3); -#line 12712 "" +#line 12707 "" } -#line 12713 "" +#line 12708 "" i__1 = all_1.iccount; -#line 12713 "" +#line 12708 "" if (i_indx("+-", lineq + i__1, (ftnlen)2, all_1.iccount + 1 - i__1) > 0) { /* move a dot, unless next char is not part of a number */ -#line 12717 "" +#line 12712 "" i__1 = all_1.iccount + 1; -#line 12717 "" +#line 12712 "" if (i_indx("0123456789.", lineq + i__1, (ftnlen)11, all_1.iccount + 2 - i__1) == 0) { -#line 12717 "" +#line 12712 "" goto L2; -#line 12717 "" +#line 12712 "" } -#line 12719 "" +#line 12714 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],19); -#line 12720 "" +#line 12715 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12721 "" +#line 12716 "" ++comcc_1.ndotmv[commvl_1.ivx - 1]; -#line 12722 "" +#line 12717 "" ++all_1.iccount; -#line 12723 "" +#line 12718 "" readnum_(lineq, &all_1.iccount, dumq, &comcc_1.updot[ commvl_1.ivx + comcc_1.ndotmv[commvl_1.ivx - 1] * 24 - 25], (ftnlen)128, (ftnlen)1); -#line 12724 "" +#line 12719 "" if (*(unsigned char *)durq == '-') { -#line 12724 "" +#line 12719 "" comcc_1.updot[commvl_1.ivx + comcc_1.ndotmv[commvl_1.ivx - 1] * 24 - 25] = -comcc_1.updot[commvl_1.ivx + comcc_1.ndotmv[commvl_1.ivx - 1] * 24 - 25]; -#line 12724 "" +#line 12719 "" } -#line 12726 "" +#line 12721 "" if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { /* Vertical shift also */ -#line 12730 "" +#line 12725 "" ++all_1.iccount; -#line 12731 "" +#line 12726 "" readnum_(lineq, &all_1.iccount, durq, &comcc_1.rtdot[ commvl_1.ivx + comcc_1.ndotmv[commvl_1.ivx - 1] * 24 - 25], (ftnlen)128, (ftnlen)1); -#line 12732 "" +#line 12727 "" if (*(unsigned char *)dumq == '-') { -#line 12732 "" +#line 12727 "" comcc_1.rtdot[commvl_1.ivx + comcc_1.ndotmv[ commvl_1.ivx - 1] * 24 - 25] = -comcc_1.rtdot[ commvl_1.ivx + comcc_1.ndotmv[commvl_1.ivx - 1] * 24 - 25]; -#line 12732 "" +#line 12727 "" } -#line 12734 "" +#line 12729 "" } else { -#line 12735 "" +#line 12730 "" comcc_1.rtdot[commvl_1.ivx + comcc_1.ndotmv[commvl_1.ivx - 1] * 24 - 25] = 0.f; -#line 12736 "" +#line 12731 "" } -#line 12737 "" +#line 12732 "" --all_1.iccount; -#line 12738 "" +#line 12733 "" } -#line 12739 "" +#line 12734 "" goto L2; -#line 12740 "" +#line 12735 "" } else if (*(unsigned char *)durq == 'p') { /* Full-bar rest as pause */ -#line 12744 "" +#line 12739 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],19); -#line 12745 "" +#line 12740 "" goto L2; -#line 12746 "" +#line 12741 "" } else if (*(unsigned char *)durq == 'b') { /* Blank rest */ -#line 12750 "" +#line 12745 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],29); -#line 12751 "" +#line 12746 "" goto L2; -#line 12752 "" +#line 12747 "" } else if (i_indx("fsn", durq, (ftnlen)3, (ftnlen)1) > 0) { /* Accidental */ /* if (nacc(ivx,nnl(ivx)) .eq. 0) then */ /* 171209 May have set bit 18 earlier if D or F preceded accidental */ -#line 12758 "" +#line 12753 "" if (igetbits_(&all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25], &c__2, &c__0) == 0) { /* No accidental has been set yet */ /* nacc(ivx,nnl(ivx)) = index('fsn',durq) */ -#line 12763 "" +#line 12758 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] |= i_indx("fsn", durq, (ftnlen)3, (ftnlen)1); -#line 12765 "" +#line 12760 "" } else { /* Repeated accid, so must be double */ -#line 12769 "" +#line 12764 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],2); -#line 12770 "" +#line 12765 "" } -#line 12771 "" +#line 12766 "" goto L2; -#line 12772 "" +#line 12767 "" } else if (*(unsigned char *)durq == 'i') { /* Set flag for MIDI-only accidental. */ -#line 12776 "" +#line 12771 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],17); -#line 12777 "" +#line 12772 "" goto L2; -#line 12778 "" +#line 12773 "" } else if (*(unsigned char *)durq == 'c') { /* Set flags for cautionary accidental */ -#line 12782 "" +#line 12777 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],31); -#line 12783 "" +#line 12778 "" all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1] = bit_set(all_1.iornq[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 1],31); -#line 12784 "" +#line 12779 "" goto L2; -#line 12785 "" +#line 12780 "" } else if (i_indx("+-<>", durq, (ftnlen)4, (ftnlen)1) > 0) { -#line 12786 "" +#line 12781 "" ipm = i_indx("- +", durq, (ftnlen)3, (ftnlen)1) - 2; -#line 12787 "" +#line 12782 "" if (! bit_test(all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],0)) { /* A note, not a rest. */ -#line 12791 "" +#line 12786 "" chkpm4ac_(lineq, &all_1.iccount, &all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25], &moved, ( ftnlen)128); -#line 12792 "" +#line 12787 "" if (moved) { -#line 12792 "" +#line 12787 "" goto L2; -#line 12792 "" +#line 12787 "" } /* Octave jump with a note */ -#line 12796 "" +#line 12791 "" if (numnum < 2) { -#line 12797 "" +#line 12792 "" comnotes_1.lastlev += ipm * 7; -#line 12798 "" +#line 12793 "" } else { -#line 12799 "" +#line 12794 "" ioct += ipm; -#line 12800 "" +#line 12795 "" } -#line 12801 "" +#line 12796 "" goto L2; -#line 12802 "" +#line 12797 "" } else { /* Override default height of a rest */ -#line 12806 "" +#line 12801 "" ++all_1.iccount; -#line 12807 "" +#line 12802 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 12808 "" +#line 12803 "" i__1 = all_1.iccount - 2; -#line 12808 "" +#line 12803 "" if (s_cmp(lineq + i__1, ".", all_1.iccount - 1 - i__1, ( ftnlen)1) == 0) { /* Kluge in case there is a shortcut ".". It will have been sucked up by */ /* readnum. (Same doesn't hold for ",") */ -#line 12813 "" +#line 12808 "" --all_1.iccount; /* go to 2 */ -#line 12815 "" +#line 12810 "" } -#line 12816 "" +#line 12811 "" all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = ipm * i_nint(&fnum) + 100; /* There may be more characters for this rest */ -#line 12820 "" +#line 12815 "" --all_1.iccount; -#line 12821 "" +#line 12816 "" goto L2; -#line 12822 "" +#line 12817 "" } -#line 12823 "" +#line 12818 "" } else if (*(unsigned char *)durq == 'x') { /* Xtuplet. Count number of doubled notes (for unequal xtups) */ -#line 12827 "" +#line 12822 "" if (bit_test(all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],18)) { -#line 12828 "" +#line 12823 "" ndoub = 1; -#line 12829 "" +#line 12824 "" } else { -#line 12830 "" +#line 12825 "" ndoub = 0; -#line 12831 "" +#line 12826 "" } /* Initialize counter for # of non-rests, so can later unbeam if = 1. */ -#line 12835 "" +#line 12830 "" inxtup = TRUE_; -#line 12836 "" +#line 12831 "" note1xtup = all_1.nnl[commvl_1.ivx - 1]; -#line 12837 "" +#line 12832 "" nnb = 0; -#line 12838 "" +#line 12833 "" if (! bit_test(all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],0)) { -#line 12838 "" +#line 12833 "" nnb = 1; -#line 12838 "" +#line 12833 "" } /* Will set all durations to 0 except last one. Set flag on this note. */ -#line 12842 "" +#line 12837 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],28); /* Next input will be digit unless its a "T" */ -#line 12846 "" +#line 12841 "" ++all_1.iccount; -#line 12847 "" +#line 12842 "" if (*(unsigned char *)&lineq[all_1.iccount - 1] == 'T') { /* Set up tremolo */ -#line 12851 "" +#line 12846 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],2); -#line 12852 "" +#line 12847 "" ntup = 2; /* Set default beaming, based on Wikipedia article */ /* May be a problem here is nnodur is inherited */ -#line 12857 "" +#line 12852 "" if (comnotes_1.nnodur == 4) { -#line 12858 "" +#line 12853 "" nsolid = 0; -#line 12859 "" +#line 12854 "" nindent = 3; -#line 12860 "" +#line 12855 "" } else if (comnotes_1.nnodur == 2) { -#line 12861 "" +#line 12856 "" nsolid = 3; -#line 12862 "" +#line 12857 "" nindent = 0; -#line 12863 "" +#line 12858 "" } else if (comnotes_1.nnodur == 8) { -#line 12864 "" +#line 12859 "" nsolid = 1; -#line 12865 "" +#line 12860 "" nindent = 2; -#line 12866 "" +#line 12861 "" } -#line 12867 "" +#line 12862 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12868 "" +#line 12863 "" if (i_indx("0123456789", durq, (ftnlen)10, (ftnlen)1) > 0) { -#line 12869 "" +#line 12864 "" nsolid = i_indx("0123456789", durq, (ftnlen)10, (ftnlen)1) - 1; -#line 12870 "" +#line 12865 "" if (nsolid == 0 && comnotes_1.nnodur == 2) { -#line 12871 "" - s_wsle(&io___791); -#line 12871 "" +#line 12866 "" + s_wsle(&io___787); +#line 12866 "" do_lio(&c__9, &c__1, "", (ftnlen)0); -#line 12871 "" +#line 12866 "" e_wsle(); -#line 12872 "" - s_wsle(&io___792); -#line 12872 "" +#line 12867 "" + s_wsle(&io___788); +#line 12867 "" do_lio(&c__9, &c__1, "Unbeamed half-note 2-note trem"\ "olo forbidden.", (ftnlen)44); -#line 12872 "" +#line 12867 "" e_wsle(); -#line 12873 "" +#line 12868 "" stop1_(); -#line 12874 "" +#line 12869 "" } -#line 12875 "" +#line 12870 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 12876 "" +#line 12871 "" if (i_indx("0123456789", durq, (ftnlen)10, (ftnlen)1) > 0) { -#line 12877 "" +#line 12872 "" nindent = i_indx("0123456789", durq, (ftnlen)10, ( ftnlen)1) - 1; -#line 12878 "" +#line 12873 "" } -#line 12879 "" +#line 12874 "" } -#line 12880 "" +#line 12875 "" setbits_(&all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25], &c__2, &c__3, &nsolid); -#line 12881 "" +#line 12876 "" setbits_(&all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25], &c__2, &c__5, &nindent); -#line 12882 "" +#line 12877 "" if (nsolid == 0) { -#line 12883 "" +#line 12878 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],18); -#line 12885 "" +#line 12880 "" } -#line 12886 "" +#line 12881 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],31); -#line 12887 "" +#line 12882 "" all_1.islur[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + ( all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25],21); -#line 12888 "" +#line 12883 "" setbits_(&all_1.islur[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25], &c__3, &c__22, &nsolid); @@ -30696,144 +30640,144 @@ L2: /* Need to check if there's already a forced beam explicitly set here. */ /* If there was, shouldn't do any harm resetting parameters. */ -#line 12895 "" +#line 12890 "" if (comfb_1.nfb[commvl_1.ivx - 1] == 0 || comfb_1.t1fb[ commvl_1.ivx + comfb_1.nfb[commvl_1.ivx - 1] * 24 - 25] != (real) all_1.itsofar[commvl_1.ivx - 1]) { -#line 12895 "" +#line 12890 "" ++comfb_1.nfb[commvl_1.ivx - 1]; -#line 12895 "" +#line 12890 "" } -#line 12897 "" +#line 12892 "" comget_1.fbon = TRUE_; -#line 12898 "" +#line 12893 "" *(unsigned char *)&comfb_1.ulfbq[commvl_1.ivx + comfb_1.nfb[ commvl_1.ivx - 1] * 24 - 25] = 'x'; -#line 12899 "" +#line 12894 "" comfb_1.t1fb[commvl_1.ivx + comfb_1.nfb[commvl_1.ivx - 1] * 24 - 25] = (real) all_1.itsofar[commvl_1.ivx - 1]; -#line 12900 "" +#line 12895 "" comfb_1.t2fb[commvl_1.ivx + comfb_1.nfb[commvl_1.ivx - 1] * 24 - 25] = (real) (all_1.itsofar[commvl_1.ivx - 1] + ifnodur_(&comnotes_1.nnodur, dotq, (ftnlen)1)); -#line 12901 "" +#line 12896 "" nadj = 0; /* Set open beamed notehead flag for half-note tremolo */ /* Just gave 2 quarters with or without flag set. Need to fix */ -#line 12906 "" +#line 12901 "" } else { -#line 12907 "" +#line 12902 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 12908 "" +#line 12903 "" ntup = i_nint(&fnum); -#line 12909 "" +#line 12904 "" } -#line 12910 "" +#line 12905 "" if (i_indx("DF", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Double xtup note to make an un= xtup. Here xtup number already set but may also */ /* have this command before. */ -#line 12916 "" +#line 12911 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],18); -#line 12917 "" +#line 12912 "" if (*(unsigned char *)durq == 'F') { -#line 12917 "" +#line 12912 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],19); -#line 12917 "" +#line 12912 "" } -#line 12919 "" +#line 12914 "" ndoub = 1; -#line 12920 "" +#line 12915 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12921 "" +#line 12916 "" } else if (*(unsigned char *)durq == 'd') { -#line 12922 "" +#line 12917 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],27); -#line 12923 "" +#line 12918 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 12924 "" +#line 12919 "" } /* Only other possibilities here are ' ' or 'n' */ -#line 12928 "" +#line 12923 "" if (*(unsigned char *)durq == 'n') { /* Alter xtup number */ -#line 12932 "" +#line 12927 "" i__1 = all_1.iccount; -#line 12932 "" +#line 12927 "" if (s_cmp(lineq + i__1, " ", all_1.iccount + 1 - i__1, ( ftnlen)1) == 0) { /* If the only modifier is 'n', cancel the number */ -#line 12936 "" +#line 12931 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],31); -#line 12937 "" +#line 12932 "" } else { -#line 12938 "" +#line 12933 "" numshft = 0; -#line 12939 "" +#line 12934 "" L30: -#line 12939 "" +#line 12934 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 12940 "" +#line 12935 "" if (*(unsigned char *)durq == 'f') { /* Flip up-down-ness */ -#line 12944 "" +#line 12939 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],14); -#line 12945 "" +#line 12940 "" goto L30; -#line 12946 "" +#line 12941 "" } else if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Vertical or horiz shift */ -#line 12950 "" +#line 12945 "" ++numshft; -#line 12951 "" +#line 12946 "" iofforn = 1; -#line 12952 "" +#line 12947 "" if (*(unsigned char *)durq == '-') { -#line 12952 "" +#line 12947 "" iofforn = -1; -#line 12952 "" +#line 12947 "" } -#line 12953 "" +#line 12948 "" ++all_1.iccount; -#line 12954 "" +#line 12949 "" readnum_(lineq, &all_1.iccount, durq, &xofforn, ( ftnlen)128, (ftnlen)1); -#line 12955 "" +#line 12950 "" --all_1.iccount; -#line 12956 "" +#line 12951 "" if (numshft == 1) { /* Vertical shift */ /* 160214 Allow (-64,64) */ /* iofforn = iofforn*nint(xofforn) + 16 */ -#line 12961 "" +#line 12956 "" iofforn = iofforn * i_nint(&xofforn) + 64; /* c Turn on bit 1; set bits 2-6 to iofforn */ @@ -30841,386 +30785,386 @@ L30: /* irest(ivx,nnl(ivx)) = */ /* * ior(irest(ivx,nnl(ivx)),2+4*iofforn) */ -#line 12968 "" +#line 12963 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],1); -#line 12969 "" +#line 12964 "" setbits_(&all_1.mult[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25], &c__8, & c__16, &iofforn); -#line 12970 "" +#line 12965 "" } else { /* Horizontal shift */ -#line 12974 "" +#line 12969 "" r__1 = xofforn * 10; -#line 12974 "" +#line 12969 "" iofforn = iofforn * i_nint(&r__1) + 16; -#line 12975 "" +#line 12970 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],7); -#line 12976 "" +#line 12971 "" setbits_(&all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25], &c__5, & c__9, &iofforn); -#line 12977 "" +#line 12972 "" } -#line 12978 "" +#line 12973 "" goto L30; -#line 12979 "" +#line 12974 "" } else if (*(unsigned char *)durq == 's') { /* Slope adjustment for bracket */ -#line 12983 "" +#line 12978 "" all_1.mult[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.mult[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],4); -#line 12984 "" +#line 12979 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 12985 "" +#line 12980 "" iofforn = i_indx("- +", durq, (ftnlen)3, (ftnlen)1) - 2; -#line 12986 "" +#line 12981 "" ++all_1.iccount; -#line 12987 "" +#line 12982 "" readnum_(lineq, &all_1.iccount, durq, &xofforn, ( ftnlen)128, (ftnlen)1); -#line 12988 "" +#line 12983 "" --all_1.iccount; -#line 12989 "" +#line 12984 "" r__1 = iofforn * xofforn + 16; -#line 12989 "" +#line 12984 "" iofforn = i_nint(&r__1); -#line 12990 "" +#line 12985 "" setbits_(&all_1.mult[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25], &c__5, &c__5, & iofforn); -#line 12991 "" +#line 12986 "" } else if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) > 0) { /* Replacement printed number */ -#line 12995 "" +#line 12990 "" readnum_(lineq, &all_1.iccount, durq, &xofforn, ( ftnlen)128, (ftnlen)1); -#line 12996 "" +#line 12991 "" i__1 = i_nint(&xofforn); -#line 12996 "" +#line 12991 "" setbits_(&all_1.nacc[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25], &c__5, &c__22, & i__1); -#line 12997 "" +#line 12992 "" --all_1.iccount; -#line 12998 "" +#line 12993 "" goto L30; -#line 12999 "" +#line 12994 "" } -#line 13000 "" +#line 12995 "" } -#line 13001 "" +#line 12996 "" } /* Set note level of 1st note of xtup, provided not a rest */ -#line 13005 "" +#line 13000 "" if (! bit_test(all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],0)) { -#line 13006 "" +#line 13001 "" if (numnum == 2) { -#line 13007 "" +#line 13002 "" comnotes_1.lastlev = ifnolev_(charq, &ioct, & cominsttrans_1.itransamt[cominsttrans_1.instno[ all_1.iv - 1] - 1], (ftnlen)1); -#line 13008 "" +#line 13003 "" all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = comnotes_1.lastlev; -#line 13009 "" +#line 13004 "" } else { -#line 13010 "" +#line 13005 "" comnotes_1.lastlev = comnotes_1.lastlev - 3 + (ifnolev_( charq, &c__10, &cominsttrans_1.itransamt[ cominsttrans_1.instno[all_1.iv - 1] - 1], (ftnlen) 1) - comnotes_1.lastlev + 3) % 7; -#line 13012 "" +#line 13007 "" all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = comnotes_1.lastlev; -#line 13013 "" +#line 13008 "" } -#line 13014 "" +#line 13009 "" } -#line 13015 "" +#line 13010 "" for (comnotes_1.npreslur = comnotes_1.npreslur; comnotes_1.npreslur >= 1; --comnotes_1.npreslur) { /* Set note level for preslur on starting note of xtuplet */ -#line 13019 "" +#line 13014 "" setbits_(&all_1.isdat2[all_1.nsdat - comnotes_1.npreslur], & c__7, &c__19, &comnotes_1.lastlev); -#line 13020 "" +#line 13015 "" /* L40: */ -#line 13020 "" +#line 13015 "" } -#line 13021 "" +#line 13016 "" numnum = 0; -#line 13022 "" +#line 13017 "" all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = 0; -#line 13023 "" +#line 13018 "" i__1 = ntup; -#line 13023 "" +#line 13018 "" for (itup = 2; itup <= i__1; ++itup) { -#line 13024 "" +#line 13019 "" if (comget_1.ornrpt) { -#line 13025 "" +#line 13020 "" all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1] |= all_1.iornq[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 1] & 10026991; -#line 13027 "" +#line 13022 "" if ((all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1] & 32896) > 0) { /* This is a trill (bit 7 or 15) so must dup the parameters */ -#line 13031 "" +#line 13026 "" ++comtrill_1.ntrill; -#line 13032 "" +#line 13027 "" comtrill_1.ivtrill[comtrill_1.ntrill - 1] = commvl_1.ivx; -#line 13033 "" +#line 13028 "" comtrill_1.iptrill[comtrill_1.ntrill - 1] = all_1.nnl[ commvl_1.ivx - 1]; -#line 13034 "" +#line 13029 "" comtrill_1.xnsktr[comtrill_1.ntrill - 1] = comtrill_1.xnsktr[comtrill_1.ntrill - 2]; -#line 13035 "" +#line 13030 "" } -#line 13036 "" +#line 13031 "" } -#line 13037 "" +#line 13032 "" ++all_1.nnl[commvl_1.ivx - 1]; -#line 13038 "" +#line 13033 "" if (comget_1.fbon) { -#line 13038 "" +#line 13033 "" all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],30); -#line 13038 "" +#line 13033 "" } -#line 13039 "" +#line 13034 "" L7: -#line 13039 "" +#line 13034 "" getchar_(lineq, &all_1.iccount, charq, (ftnlen)128, (ftnlen)1) ; -#line 13040 "" +#line 13035 "" if (*(unsigned char *)charq == ' ') { -#line 13041 "" +#line 13036 "" goto L7; -#line 13042 "" +#line 13037 "" } else if (*(unsigned char *)charq == '%') { -#line 13043 "" +#line 13038 "" all_1.iccount = 128; -#line 13044 "" +#line 13039 "" goto L7; -#line 13045 "" +#line 13040 "" } else if (*(unsigned char *)charq == 'o') { /* Ornament in xtuplet. "o" symbol must come AFTER the affected note */ -#line 13049 "" +#line 13044 "" if (comnotes_1.notcrd) { -#line 13050 "" +#line 13045 "" nole = all_1.nolev[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 25]; -#line 13051 "" +#line 13046 "" } else { -#line 13052 "" +#line 13047 "" nole = 127 & lbit_shift(comtrill_1.icrdat[ comtrill_1.ncrd - 1], (ftnlen)-12); -#line 13053 "" +#line 13048 "" } -#line 13054 "" +#line 13049 "" i__2 = all_1.nnl[commvl_1.ivx - 1] - 1; -#line 13054 "" +#line 13049 "" getorn_(lineq, &all_1.iccount, &all_1.iornq[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 1], & all_1.iornq[commvl_1.ivx - 1], &comget_1.ornrpt, & comgrace_1.noffseg, &i__2, &commvl_1.ivx, & c_false, &comnotes_1.notcrd, &nole, (ftnlen)128); -#line 13057 "" +#line 13052 "" goto L7; -#line 13058 "" +#line 13053 "" } else if (i_indx("st(){}", charq, (ftnlen)6, (ftnlen)1) > 0) { -#line 13059 "" +#line 13054 "" nnlivx = all_1.nnl[commvl_1.ivx - 1] - 1; -#line 13060 "" +#line 13055 "" if (*(unsigned char *)charq == '(' || *(unsigned char *) charq == '{') { /* Detected preslur in xtuplet loop, non-chord note */ -#line 13064 "" +#line 13059 "" ++nnlivx; -#line 13065 "" +#line 13060 "" ++comnotes_1.npreslur; -#line 13066 "" +#line 13061 "" } -#line 13067 "" +#line 13062 "" all_1.islur[commvl_1.ivx + nnlivx * 24 - 25] = bit_set( all_1.islur[commvl_1.ivx + nnlivx * 24 - 25],0); -#line 13068 "" +#line 13063 "" if (*(unsigned char *)charq == 't') { -#line 13068 "" +#line 13063 "" all_1.islur[commvl_1.ivx + nnlivx * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + nnlivx * 24 - 25],1); -#line 13068 "" +#line 13063 "" } -#line 13070 "" +#line 13065 "" if (commvl_1.ivx <= all_1.nv) { -#line 13071 "" +#line 13066 "" kv = 1; -#line 13072 "" +#line 13067 "" } else { -#line 13073 "" +#line 13068 "" kv = 2; -#line 13074 "" +#line 13069 "" } -#line 13075 "" +#line 13070 "" if (comslur_1.fontslur) { -#line 13076 "" +#line 13071 "" sslur_(lineq, &all_1.iccount, &all_1.iv, &kv, &nnlivx, all_1.isdat1, all_1.isdat2, all_1.isdat3, & all_1.nsdat, &comnotes_1.notcrd, &all_1.nolev[ commvl_1.ivx + nnlivx * 24 - 25], charq, ( ftnlen)128, (ftnlen)1); -#line 13078 "" +#line 13073 "" } else { -#line 13079 "" +#line 13074 "" spsslur_(lineq, &all_1.iccount, &all_1.iv, &kv, & nnlivx, all_1.isdat1, all_1.isdat2, all_1.isdat3, all_1.isdat4, &all_1.nsdat, & comnotes_1.notcrd, &all_1.nolev[commvl_1.ivx + nnlivx * 24 - 25], charq, (ftnlen)128, ( ftnlen)1); -#line 13081 "" +#line 13076 "" } -#line 13082 "" +#line 13077 "" goto L7; -#line 13083 "" +#line 13078 "" } else if (*(unsigned char *)charq == 'G') { /* Kluge to get grace in xtup at right location */ -#line 13087 "" +#line 13082 "" --all_1.nnl[commvl_1.ivx - 1]; -#line 13088 "" +#line 13083 "" getgrace_(&commvl_1.ivx, all_1.nnl, lineq, &all_1.iccount, all_1.islur, all_1.iornq, all_1.ipl, comnotes_1.ndlev, &comnotes_1.lastlev, &all_1.iv, &all_1.nv, (ftnlen)128); -#line 13090 "" +#line 13085 "" ++all_1.nnl[commvl_1.ivx - 1]; -#line 13091 "" +#line 13086 "" goto L7; -#line 13092 "" +#line 13087 "" } else if (*(unsigned char *)charq == *(unsigned char *) all_1.sq) { -#line 13093 "" +#line 13088 "" littex_(all_1.islur, &all_1.nnl[commvl_1.ivx - 1], & commvl_1.ivx, &comas3_1.topmods, lineq, & all_1.iccount, (ftnlen)128); -#line 13094 "" +#line 13089 "" goto L7; -#line 13095 "" +#line 13090 "" } else if (*(unsigned char *)charq == '"') { /* pmxlyr string in xtup. Expand "..." to \pmxlyr{...}\ */ -#line 13099 "" +#line 13094 "" if (! comlyr_1.inputmlyr) { -#line 13100 "" +#line 13095 "" ictemp = 0; /* Writing concatenation */ -#line 13101 "" +#line 13096 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 13101 "" +#line 13096 "" i__3[1] = 1, a__1[1] = all_1.sq; -#line 13101 "" +#line 13096 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 13101 "" +#line 13096 "" i__3[3] = 15, a__1[3] = "input musixlyr "; -#line 13101 "" +#line 13096 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 13101 "" +#line 13096 "" s_cat(lineqt, a__1, i__3, &c__5, (ftnlen)128); -#line 13102 "" +#line 13097 "" i__2 = all_1.nnl[commvl_1.ivx - 1] + 1; -#line 13102 "" +#line 13097 "" littex_(all_1.islur, &i__2, &commvl_1.ivx, & comas3_1.topmods, lineqt, &ictemp, (ftnlen) 128); -#line 13103 "" +#line 13098 "" comlyr_1.inputmlyr = TRUE_; -#line 13104 "" +#line 13099 "" } -#line 13105 "" +#line 13100 "" dopmxlyr_(lineq, &all_1.iccount, (ftnlen)128); -#line 13106 "" +#line 13101 "" *(unsigned char *)charq = *(unsigned char *)all_1.sq; -#line 13107 "" +#line 13102 "" littex_(all_1.islur, &all_1.nnl[commvl_1.ivx - 1], & commvl_1.ivx, &comas3_1.topmods, lineq, & all_1.iccount, (ftnlen)128); -#line 13108 "" +#line 13103 "" goto L7; -#line 13109 "" +#line 13104 "" } else if (i_indx("0123456789#-nx_", charq, (ftnlen)15, ( ftnlen)1) > 0) { /* Figure. Must come AFTER the first note of xtup */ -#line 13113 "" +#line 13108 "" ivf = 1; -#line 13114 "" +#line 13109 "" if (commvl_1.ivx > 1) { -#line 13115 "" +#line 13110 "" if (comfig_1.ivxfig2 == 0) { -#line 13116 "" +#line 13111 "" comfig_1.ivxfig2 = commvl_1.ivx; -#line 13117 "" +#line 13112 "" } else if (commvl_1.ivx != comfig_1.ivxfig2) { -#line 13118 "" - s_wsle(&io___803); -#line 13118 "" +#line 13113 "" + s_wsle(&io___799); +#line 13113 "" e_wsle(); -#line 13119 "" - s_wsle(&io___804); -#line 13119 "" +#line 13114 "" + s_wsle(&io___800); +#line 13114 "" do_lio(&c__9, &c__1, "Figures not allowed in >1 "\ "voice above first", (ftnlen)43); -#line 13119 "" +#line 13114 "" e_wsle(); -#line 13120 "" +#line 13115 "" s_stop("", (ftnlen)0); -#line 13121 "" +#line 13116 "" } -#line 13122 "" +#line 13117 "" ivf = 2; -#line 13123 "" +#line 13118 "" } -#line 13124 "" +#line 13119 "" nfig1 = comfig_1.nfigs[ivf - 1] + 1; -#line 13125 "" +#line 13120 "" getfig_(&comgrace_1.itoff[ivf + (nfig1 << 1) - 3], charq, lineq, &all_1.iccount, &all_1.isfig[ivf + ( all_1.nnl[commvl_1.ivx - 1] - 1 << 1) - 3], & @@ -31232,14 +31176,14 @@ L7: comfig_1.nfigs[ivf - 1], (ftnlen)1, (ftnlen)128, ( ftnlen)10); /* * 0,figq(ivf,nfig1),ivupfig(ivf,nfig1),nfigs(ivf)) */ -#line 13130 "" +#line 13125 "" goto L7; -#line 13131 "" +#line 13126 "" } else if (*(unsigned char *)charq == 'X') { /* Computing MAX */ -#line 13132 "" +#line 13127 "" i__2 = 1, i__4 = all_1.nnl[commvl_1.ivx - 1] - 1; -#line 13132 "" +#line 13127 "" getx_(lineq, &all_1.iccount, &all_1.irest[commvl_1.ivx + max(i__2,i__4) * 24 - 25], &comnotes_1.shifton, & comask_1.wheadpt, &all_1.iornq[commvl_1.ivx + @@ -31249,284 +31193,284 @@ L7: all_1.itsofar[commvl_1.ivx - 1], &ntup, &itup, & comnotes_1.nnodur, dotq, &ndoub, (ftnlen)128, ( ftnlen)1); -#line 13136 "" +#line 13131 "" goto L7; -#line 13137 "" +#line 13132 "" } else if (*(unsigned char *)charq == 'z') { /* Chord note in xtup. Goes with *prior* note. */ -#line 13141 "" +#line 13136 "" comnotes_1.notcrd = FALSE_; -#line 13142 "" +#line 13137 "" ++comtrill_1.ncrd; -#line 13143 "" +#line 13138 "" all_1.ipl[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 25] = bit_set(all_1.ipl[commvl_1.ivx + ( all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 25],10); -#line 13144 "" +#line 13139 "" numnum = 0; /* icrdat(ncrd) = ior(nnl(ivx)-1,ishft(ivx,8)) */ -#line 13146 "" +#line 13141 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = all_1.nnl[ commvl_1.ivx - 1] - 1; -#line 13147 "" +#line 13142 "" i__2 = commvl_1.ivx % 16; -#line 13147 "" +#line 13142 "" setbits_(&comtrill_1.icrdat[comtrill_1.ncrd - 1], &c__4, & c__8, &i__2); -#line 13148 "" +#line 13143 "" if (commvl_1.ivx >= 16) { -#line 13148 "" +#line 13143 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],28); -#line 13148 "" +#line 13143 "" } -#line 13149 "" +#line 13144 "" comtrill_1.icrdorn[comtrill_1.ncrd - 1] = 0; /* Get note name */ -#line 13153 "" +#line 13148 "" getchar_(lineq, &all_1.iccount, charq, (ftnlen)128, ( ftnlen)1); /* Get optional inputs */ -#line 13157 "" +#line 13152 "" L34: -#line 13157 "" +#line 13152 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, ( ftnlen)1); /* When chord note is done, will get ' ', making ndx=0, so go past this block */ -#line 13161 "" +#line 13156 "" ndx = i_indx("fsn+-<>12345678reicd", durq, (ftnlen)20, ( ftnlen)1); -#line 13162 "" +#line 13157 "" if (ndx > 0) { -#line 13163 "" +#line 13158 "" if (ndx <= 3) { -#line 13164 "" +#line 13159 "" if (! bit_test(comtrill_1.icrdat[comtrill_1.ncrd - 1],19)) { -#line 13165 "" +#line 13160 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set(comtrill_1.icrdat[ comtrill_1.ncrd - 1],19); -#line 13166 "" +#line 13161 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] |= ndx << 20; -#line 13167 "" +#line 13162 "" } else { -#line 13168 "" +#line 13163 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set(comtrill_1.icrdat[ comtrill_1.ncrd - 1],22); -#line 13169 "" +#line 13164 "" } -#line 13170 "" +#line 13165 "" } else if (*(unsigned char *)durq == 'd') { /* Get dot on chord note in xtup. Assume +n+n */ -#line 13174 "" +#line 13169 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],26) ; -#line 13175 "" +#line 13170 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 13176 "" +#line 13171 "" ++all_1.iccount; -#line 13177 "" +#line 13172 "" readnum_(lineq, &all_1.iccount, dumq, &fnum, ( ftnlen)128, (ftnlen)1); -#line 13178 "" +#line 13173 "" if (*(unsigned char *)durq == '+') { -#line 13179 "" +#line 13174 "" r__1 = fnum * 10; -#line 13179 "" +#line 13174 "" comtrill_1.icrdot[comtrill_1.ncrd - 1] |= i_nint(&r__1) + 64; -#line 13180 "" +#line 13175 "" } else { -#line 13181 "" +#line 13176 "" r__1 = fnum * 10; -#line 13181 "" +#line 13176 "" comtrill_1.icrdot[comtrill_1.ncrd - 1] |= -i_nint(&r__1) + 64; -#line 13182 "" +#line 13177 "" } -#line 13183 "" +#line 13178 "" if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { /* Vertical shift specified also */ -#line 13187 "" +#line 13182 "" ++all_1.iccount; -#line 13188 "" +#line 13183 "" readnum_(lineq, &all_1.iccount, durq, &fnum, ( ftnlen)128, (ftnlen)1); -#line 13189 "" +#line 13184 "" if (*(unsigned char *)dumq == '+') { -#line 13190 "" +#line 13185 "" r__1 = fnum * 10; -#line 13190 "" +#line 13185 "" ifnum = i_nint(&r__1) + 64; -#line 13191 "" +#line 13186 "" } else { -#line 13192 "" +#line 13187 "" r__1 = fnum * 10; -#line 13192 "" +#line 13187 "" ifnum = -i_nint(&r__1) + 64; -#line 13193 "" +#line 13188 "" } -#line 13194 "" +#line 13189 "" } else { -#line 13195 "" +#line 13190 "" ifnum = 64; -#line 13196 "" +#line 13191 "" } -#line 13197 "" +#line 13192 "" comtrill_1.icrdot[comtrill_1.ncrd - 1] |= ifnum << 7; -#line 13198 "" +#line 13193 "" --all_1.iccount; /* iccount = iccount+4 */ -#line 13203 "" +#line 13198 "" } else if (ndx == 19) { /* Set flags for cautionary accidental */ -#line 13207 "" +#line 13202 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],31) ; -#line 13208 "" +#line 13203 "" all_1.iornq[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 1] = bit_set(all_1.iornq[commvl_1.ivx + ( all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 1] ,31); -#line 13210 "" +#line 13205 "" } else if (ndx <= 7) { /* +/-/ Check whether octave or accidental shift */ -#line 13214 "" +#line 13209 "" nactmp = 0; -#line 13215 "" +#line 13210 "" chkpm4ac_(lineq, &all_1.iccount, &nactmp, &moved, (ftnlen)128); -#line 13216 "" +#line 13211 "" if (moved) { /* Transfer accidental shift values */ -#line 13220 "" +#line 13215 "" i__2 = igetbits_(&nactmp, &c__6, &c__4); -#line 13220 "" +#line 13215 "" setbits_(&comtrill_1.icrdot[comtrill_1.ncrd - 1], &c__6, &c__14, &i__2); -#line 13222 "" +#line 13217 "" i__2 = igetbits_(&nactmp, &c__7, &c__10); -#line 13222 "" +#line 13217 "" setbits_(&comtrill_1.icrdot[comtrill_1.ncrd - 1], &c__7, &c__20, &i__2); -#line 13224 "" +#line 13219 "" } else { -#line 13225 "" +#line 13220 "" if (*(unsigned char *)durq == '+') { -#line 13226 "" +#line 13221 "" comnotes_1.lastlev += 7; -#line 13227 "" +#line 13222 "" } else if (*(unsigned char *)durq == '-') { -#line 13228 "" +#line 13223 "" comnotes_1.lastlev += -7; -#line 13229 "" +#line 13224 "" } -#line 13230 "" +#line 13225 "" } -#line 13231 "" +#line 13226 "" } else if (*(unsigned char *)durq == 'e') { -#line 13232 "" +#line 13227 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],23) ; -#line 13233 "" +#line 13228 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],27); -#line 13234 "" +#line 13229 "" } else if (*(unsigned char *)durq == 'r') { -#line 13235 "" +#line 13230 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],24) ; -#line 13236 "" +#line 13231 "" all_1.irest[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + ( all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 25],20); -#line 13238 "" +#line 13233 "" } else if (*(unsigned char *)durq == 'i') { /* Midi-only accidental */ -#line 13242 "" +#line 13237 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],27) ; -#line 13243 "" +#line 13238 "" } else { /* must be a number, save it in ioct */ -#line 13247 "" +#line 13242 "" numnum = 1; -#line 13248 "" +#line 13243 "" ioct = ndx - 7; -#line 13249 "" +#line 13244 "" } -#line 13250 "" +#line 13245 "" goto L34; -#line 13251 "" +#line 13246 "" } -#line 13252 "" +#line 13247 "" if (numnum == 1) { -#line 13253 "" +#line 13248 "" comnotes_1.lastlev = ifnolev_(charq, &ioct, & cominsttrans_1.itransamt[ cominsttrans_1.instno[all_1.iv - 1] - 1], ( ftnlen)1); -#line 13254 "" +#line 13249 "" } else { -#line 13255 "" +#line 13250 "" comnotes_1.lastlev = comnotes_1.lastlev - 3 + ( ifnolev_(charq, &c__10, & cominsttrans_1.itransamt[ cominsttrans_1.instno[all_1.iv - 1] - 1], ( ftnlen)1) - comnotes_1.lastlev + 3) % 7; -#line 13257 "" +#line 13252 "" } -#line 13258 "" +#line 13253 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] |= comnotes_1.lastlev << 12; -#line 13259 "" +#line 13254 "" for (comnotes_1.npreslur = comnotes_1.npreslur; comnotes_1.npreslur >= 1; --comnotes_1.npreslur) { /* Set note level for preslur on chord note in xtup */ -#line 13263 "" +#line 13258 "" setbits_(&all_1.isdat2[all_1.nsdat - comnotes_1.npreslur], &c__7, &c__19, & comnotes_1.lastlev); @@ -31534,362 +31478,362 @@ L34: /* Following lines copied from loop for non-xtup, chord note, preslur */ /* Initially I assigned the slur(s) to next note, so fix. */ -#line 13268 "" +#line 13263 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_clear(all_1.islur[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],0); -#line 13269 "" +#line 13264 "" all_1.islur[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 25] = bit_set(all_1.islur[ commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 25],0); -#line 13270 "" +#line 13265 "" all_1.isdat2[all_1.nsdat - comnotes_1.npreslur] = bit_set(all_1.isdat2[all_1.nsdat - comnotes_1.npreslur],0); -#line 13272 "" +#line 13267 "" i__2 = igetbits_(&all_1.isdat1[all_1.nsdat - comnotes_1.npreslur], &c__8, &c__3) - 1; -#line 13272 "" +#line 13267 "" setbits_(&all_1.isdat1[all_1.nsdat - comnotes_1.npreslur], &c__8, &c__3, &i__2); -#line 13274 "" +#line 13269 "" /* L41: */ -#line 13274 "" +#line 13269 "" } -#line 13275 "" +#line 13270 "" goto L7; -#line 13276 "" +#line 13271 "" } else if (*(unsigned char *)charq == '?') { /* Arpeggio */ -#line 13280 "" +#line 13275 "" if (bit_test(all_1.ipl[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 25],10)) { /* This is a chordal note. Set a bit in icrdat. But if *main* (spacing) note */ /* of chord, will not set icrdat(25), but iornq(27) */ -#line 13285 "" +#line 13280 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],25); -#line 13286 "" +#line 13281 "" } else { -#line 13287 "" +#line 13282 "" all_1.iornq[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 1] = bit_set(all_1.iornq[ commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 1],27); -#line 13288 "" +#line 13283 "" } /* Check for shift */ -#line 13292 "" +#line 13287 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 13293 "" +#line 13288 "" if (*(unsigned char *)durq == ' ') { -#line 13294 "" +#line 13289 "" --all_1.iccount; -#line 13295 "" +#line 13290 "" } else { /* durq must be "-" */ -#line 13299 "" +#line 13294 "" ++all_1.iccount; -#line 13300 "" +#line 13295 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen) 128, (ftnlen)1); -#line 13301 "" +#line 13296 "" --all_1.iccount; /* record the shift */ -#line 13305 "" +#line 13300 "" ++comarpshift_1.numarpshift; -#line 13306 "" +#line 13301 "" comarpshift_1.ivarpshift[comarpshift_1.numarpshift - 1] = commvl_1.ivx; -#line 13307 "" +#line 13302 "" comarpshift_1.iparpshift[comarpshift_1.numarpshift - 1] = all_1.nnl[commvl_1.ivx - 1] - 1; -#line 13308 "" +#line 13303 "" comarpshift_1.arpshift[comarpshift_1.numarpshift - 1] = fnum; -#line 13309 "" +#line 13304 "" } -#line 13310 "" +#line 13305 "" goto L7; -#line 13311 "" +#line 13306 "" } else if (*(unsigned char *)charq == 'D') { -#line 13312 "" +#line 13307 "" i__2 = all_1.nnl[commvl_1.ivx - 1] - 1; -#line 13312 "" +#line 13307 "" getdyn_(&commvl_1.ivx, &i__2, &all_1.irest[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 25], & all_1.iornq[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 1], lineq, & all_1.iccount, (ftnlen)128); -#line 13314 "" +#line 13309 "" goto L7; /* 140215 Allow clef change inside xtuplet. With normal code, came out one */ /* note too late, so try making it come earlier. */ -#line 13319 "" +#line 13314 "" } else if (*(unsigned char *)charq == 'C') { /* Clef change on next note. Set bits 11-15. Won't allow in 2nd line of music. */ -#line 13323 "" +#line 13318 "" if (all_1.nnl[all_1.iv - 1] - 1 > 0) { -#line 13323 "" +#line 13318 "" ++comcc_1.ncc[all_1.iv - 1]; -#line 13323 "" +#line 13318 "" } /* 140218 Need to get time differently inside xtup, since itsofar doesn't get */ /* updated until after xtup is done */ -#line 13328 "" +#line 13323 "" nodurt = ifnodur_(&comnotes_1.nnodur, dotq, (ftnlen)1); -#line 13329 "" +#line 13324 "" comcc_1.tcc[all_1.iv + comcc_1.ncc[all_1.iv - 1] * 24 - 25] = (real) (all_1.itsofar[all_1.iv - 1] + ( integer) (nodurt * 1.f / ntup * (itup - 1))); -#line 13330 "" +#line 13325 "" isl = bit_set(all_1.islur[all_1.iv + all_1.nnl[all_1.iv - 1] * 24 - 25],11); -#line 13331 "" +#line 13326 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, ( ftnlen)1); /* Store clef number, or 7 if clef number = 9 (French violin clef) */ /* Computing MIN */ -#line 13335 "" +#line 13330 "" i__2 = numclef_(durq, (ftnlen)1); -#line 13335 "" +#line 13330 "" isl |= min(i__2,7) << 12; -#line 13336 "" +#line 13331 "" comcc_1.ncmidcc[all_1.iv + comcc_1.ncc[all_1.iv - 1] * 24 - 25] = ncmidf_(durq, (ftnlen)1); -#line 13337 "" +#line 13332 "" if (*(unsigned char *)durq == '8') { -#line 13338 "" +#line 13333 "" all_1.ipl[all_1.iv + all_1.nnl[all_1.iv - 1] * 24 - 25] = bit_set(all_1.ipl[all_1.iv + all_1.nnl[ all_1.iv - 1] * 24 - 25],2); -#line 13339 "" +#line 13334 "" cominsttrans_1.itransamt[cominsttrans_1.instno[ all_1.iv - 1] - 1] += 7; -#line 13340 "" +#line 13335 "" } /* Set marker on note with lowest voice # starting at same time. */ -#line 13344 "" +#line 13339 "" if (all_1.iv == 1) { -#line 13345 "" +#line 13340 "" isl = bit_set(isl,15); -#line 13346 "" +#line 13341 "" } else { -#line 13347 "" +#line 13342 "" i__2 = all_1.iv; -#line 13347 "" +#line 13342 "" for (iiv = 1; iiv <= i__2; ++iiv) { /* nnliiv = nnl(iiv) */ -#line 13349 "" +#line 13344 "" nnliiv = all_1.nnl[iiv - 1] - 1; -#line 13350 "" +#line 13345 "" if (iiv == all_1.iv) { -#line 13350 "" +#line 13345 "" ++nnliiv; -#line 13350 "" +#line 13345 "" } -#line 13351 "" +#line 13346 "" itother = 0; -#line 13352 "" +#line 13347 "" i__4 = nnliiv; -#line 13352 "" +#line 13347 "" for (iip = 1; iip <= i__4; ++iip) { -#line 13353 "" +#line 13348 "" if (itother < all_1.itsofar[all_1.iv - 1]) { -#line 13354 "" +#line 13349 "" itother += all_1.nodur[iiv + iip * 24 - 25]; -#line 13355 "" +#line 13350 "" goto L71; -#line 13356 "" +#line 13351 "" } else if (itother == all_1.itsofar[all_1.iv - 1]) { -#line 13357 "" +#line 13352 "" all_1.islur[iiv + iip * 24 - 25] = bit_set(all_1.islur[iiv + iip * 24 - 25],15); -#line 13358 "" +#line 13353 "" goto L72; -#line 13359 "" +#line 13354 "" } -#line 13360 "" +#line 13355 "" L71: -#line 13360 "" +#line 13355 "" ; -#line 13360 "" +#line 13355 "" } -#line 13361 "" +#line 13356 "" /* L70: */ -#line 13361 "" +#line 13356 "" } -#line 13362 "" +#line 13357 "" L72: -#line 13363 "" +#line 13358 "" ; -#line 13363 "" +#line 13358 "" } /* Need 'or' since may have set bit 15 in the above loop */ /* islur(iv,nnl(iv)+1) = ior(isl,islur(iv,nnl(iv)+1)) */ -#line 13368 "" +#line 13363 "" all_1.islur[all_1.iv + all_1.nnl[all_1.iv - 1] * 24 - 25] = isl | all_1.islur[all_1.iv + all_1.nnl[all_1.iv - 1] * 24 - 25]; -#line 13369 "" +#line 13364 "" goto L7; /* +++ */ -#line 13371 "" +#line 13366 "" } else if (*(unsigned char *)charq == ']') { /* Multiplicity up-down, must have '][ ' */ -#line 13375 "" +#line 13370 "" all_1.islur[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 25],20) ; -#line 13376 "" +#line 13371 "" all_1.iccount += 2; -#line 13377 "" +#line 13372 "" goto L7; /* c+++ */ -#line 13379 "" +#line 13374 "" } /* End of loop for xtup options. If here, charq must be a (non-crd) note name. */ /* or rest */ -#line 13384 "" +#line 13379 "" if (*(unsigned char *)charq == 'r') { /* Rest in xtup */ -#line 13388 "" +#line 13383 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],0); -#line 13389 "" +#line 13384 "" i__2 = all_1.iccount; -#line 13389 "" +#line 13384 "" if (i_indx("+-b", lineq + i__2, (ftnlen)3, all_1.iccount + 1 - i__2) > 0) { -#line 13390 "" +#line 13385 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 13391 "" +#line 13386 "" if (*(unsigned char *)durq == 'b') { /* Blank rest in middle of xtup */ -#line 13395 "" +#line 13390 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],29); -#line 13396 "" +#line 13391 "" } else { /* Override height of embedded xtup rest */ -#line 13400 "" +#line 13395 "" ipm = i_indx("- +", durq, (ftnlen)3, (ftnlen)1) - 2; -#line 13401 "" +#line 13396 "" ++all_1.iccount; -#line 13402 "" +#line 13397 "" readnum_(lineq, &all_1.iccount, durq, &fnum, ( ftnlen)128, (ftnlen)1); -#line 13403 "" +#line 13398 "" all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = ipm * i_nint(&fnum) + 100; -#line 13404 "" +#line 13399 "" --all_1.iccount; -#line 13405 "" +#line 13400 "" } -#line 13406 "" +#line 13401 "" } else if (commvl_1.ivx <= all_1.nv) { -#line 13407 "" +#line 13402 "" all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = 0; -#line 13408 "" +#line 13403 "" } else { -#line 13409 "" +#line 13404 "" all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = 2; -#line 13410 "" +#line 13405 "" } -#line 13411 "" +#line 13406 "" } else { /* Counter for non-rests */ -#line 13415 "" +#line 13410 "" ++nnb; -#line 13416 "" +#line 13411 "" } -#line 13417 "" +#line 13412 "" comnotes_1.notcrd = TRUE_; -#line 13418 "" +#line 13413 "" L8: -#line 13418 "" +#line 13413 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 13419 "" +#line 13414 "" if (*(unsigned char *)durq != ' ') { -#line 13420 "" +#line 13415 "" if (i_indx("+-<>", durq, (ftnlen)4, (ftnlen)1) > 0) { /* Accidental horizontal shift */ -#line 13424 "" +#line 13419 "" chkpm4ac_(lineq, &all_1.iccount, &all_1.nacc[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25], &moved, (ftnlen)128); -#line 13425 "" +#line 13420 "" if (! moved) { -#line 13426 "" +#line 13421 "" if (*(unsigned char *)durq == '+') { -#line 13427 "" +#line 13422 "" comnotes_1.lastlev += 7; -#line 13428 "" +#line 13423 "" } else if (*(unsigned char *)durq == '-') { -#line 13429 "" +#line 13424 "" comnotes_1.lastlev += -7; -#line 13430 "" +#line 13425 "" } -#line 13431 "" +#line 13426 "" } -#line 13432 "" +#line 13427 "" } else if (i_indx("fsn", durq, (ftnlen)3, (ftnlen)1) > 0) { /* if (nacc(ivx,nnl(ivx)) .eq. 0) then */ /* May have set other bits earlier */ -#line 13436 "" +#line 13431 "" if (igetbits_(&all_1.nacc[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25], &c__2, &c__0) == 0) { @@ -31897,208 +31841,208 @@ L8: /* No accid set yet */ /* nacc(ivx,nnl(ivx)) = index('fsn',durq) */ -#line 13441 "" +#line 13436 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] |= i_indx("fsn", durq, ( ftnlen)3, (ftnlen)1); -#line 13443 "" +#line 13438 "" } else { /* Symbol must be repeated, so it's a double */ -#line 13447 "" +#line 13442 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],2); -#line 13448 "" +#line 13443 "" } -#line 13449 "" +#line 13444 "" } else if (*(unsigned char *)durq == 'i') { /* Set flag for midi-only accidental */ -#line 13453 "" +#line 13448 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],17); -#line 13455 "" +#line 13450 "" } else if (*(unsigned char *)durq == 'c') { /* Set flags for cautionary accidental */ -#line 13459 "" +#line 13454 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],31); -#line 13460 "" +#line 13455 "" all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1] = bit_set(all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1],31); -#line 13461 "" +#line 13456 "" } else if (i_indx("ul", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Force stem direction for non-beamed xtup note */ -#line 13465 "" +#line 13460 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],30); -#line 13466 "" +#line 13461 "" if (*(unsigned char *)durq == 'u') { -#line 13466 "" +#line 13461 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],17); -#line 13466 "" +#line 13461 "" } -#line 13468 "" +#line 13463 "" } else if (*(unsigned char *)durq == 'e') { /* Left-shift main xtup note */ -#line 13472 "" +#line 13467 "" all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],8); -#line 13473 "" +#line 13468 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],27); -#line 13474 "" +#line 13469 "" } else if (*(unsigned char *)durq == 'r') { /* Right-shift main xtup note */ -#line 13478 "" +#line 13473 "" all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],9); -#line 13479 "" +#line 13474 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],20); -#line 13480 "" +#line 13475 "" } else if (i_indx("DF", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Double an xtup note to make an unequal xtup */ -#line 13484 "" +#line 13479 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],18); -#line 13485 "" +#line 13480 "" if (*(unsigned char *)durq == 'F') { -#line 13485 "" +#line 13480 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],19); -#line 13485 "" +#line 13480 "" } -#line 13487 "" +#line 13482 "" ++ndoub; -#line 13488 "" +#line 13483 "" } else if (*(unsigned char *)durq == 'd') { /* Dotted xtup note */ /* if (btest(irest(ivx,nnl(ivx))-1,2)) then */ -#line 13493 "" +#line 13488 "" if (bit_test(all_1.irest[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 25],2)) { /* Move dot on 2nd note of 2-note tremolo */ -#line 13497 "" +#line 13492 "" ++comcc_1.ndotmv[commvl_1.ivx - 1]; -#line 13498 "" +#line 13493 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],19); -#line 13499 "" +#line 13494 "" g1etchar_(lineq, &all_1.iccount, durq, (ftnlen) 128, (ftnlen)1); /* Will be + or - */ -#line 13500 "" +#line 13495 "" ++all_1.iccount; -#line 13501 "" +#line 13496 "" readnum_(lineq, &all_1.iccount, dumq, & comcc_1.updot[commvl_1.ivx + comcc_1.ndotmv[commvl_1.ivx - 1] * 24 - 25], (ftnlen)128, (ftnlen)1); -#line 13503 "" +#line 13498 "" if (*(unsigned char *)durq == '-') { -#line 13503 "" +#line 13498 "" comcc_1.updot[commvl_1.ivx + comcc_1.ndotmv[ commvl_1.ivx - 1] * 24 - 25] = -comcc_1.updot[commvl_1.ivx + comcc_1.ndotmv[commvl_1.ivx - 1] * 24 - 25]; -#line 13503 "" +#line 13498 "" } -#line 13505 "" +#line 13500 "" if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { /* Vertical shift also */ -#line 13509 "" +#line 13504 "" readnum_(lineq, &all_1.iccount, durq, & comcc_1.rtdot[commvl_1.ivx + comcc_1.ndotmv[commvl_1.ivx - 1] * 24 - 25], (ftnlen)128, (ftnlen)1); -#line 13511 "" +#line 13506 "" if (*(unsigned char *)durq == '-') { -#line 13511 "" +#line 13506 "" comcc_1.rtdot[commvl_1.ivx + comcc_1.ndotmv[commvl_1.ivx - 1] * 24 - 25] = -comcc_1.rtdot[ commvl_1.ivx + comcc_1.ndotmv[ commvl_1.ivx - 1] * 24 - 25]; -#line 13511 "" +#line 13506 "" } -#line 13513 "" +#line 13508 "" } -#line 13514 "" +#line 13509 "" --all_1.iccount; -#line 13515 "" +#line 13510 "" } else { /* Dot for 3:1 pair of xtup notes */ -#line 13519 "" +#line 13514 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],27); -#line 13520 "" +#line 13515 "" } -#line 13521 "" +#line 13516 "" } else { /* Must be an octave number */ -#line 13525 "" +#line 13520 "" i__2 = *(unsigned char *)durq - 48; -#line 13525 "" +#line 13520 "" comnotes_1.lastlev = ifnolev_(charq, &i__2, & cominsttrans_1.itransamt[ cominsttrans_1.instno[all_1.iv - 1] - 1], ( ftnlen)1); -#line 13527 "" +#line 13522 "" } -#line 13528 "" +#line 13523 "" goto L8; -#line 13529 "" +#line 13524 "" } -#line 13530 "" +#line 13525 "" if (itup < ntup) { /* Last note is handled *after* flowing out of the xtup if block, but still */ @@ -32106,201 +32050,201 @@ L8: /* Could have problem here if rests & doubled notes are combined in xtup, */ /* since might exit the loop at the wrong place. Worry about it later. */ -#line 13537 "" +#line 13532 "" if (! bit_test(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],0)) { -#line 13538 "" +#line 13533 "" comnotes_1.lastlev = comnotes_1.lastlev - 3 + ( ifnolev_(charq, &c__10, & cominsttrans_1.itransamt[ cominsttrans_1.instno[all_1.iv - 1] - 1], ( ftnlen)1) - comnotes_1.lastlev + 3) % 7; -#line 13540 "" +#line 13535 "" all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = comnotes_1.lastlev; -#line 13541 "" +#line 13536 "" } -#line 13542 "" +#line 13537 "" all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = 0; -#line 13543 "" +#line 13538 "" for (comnotes_1.npreslur = comnotes_1.npreslur; comnotes_1.npreslur >= 1; --comnotes_1.npreslur) { /* Set note level for preslur on internal xtup note */ -#line 13547 "" +#line 13542 "" setbits_(&all_1.isdat2[all_1.nsdat - comnotes_1.npreslur], &c__7, &c__19, & comnotes_1.lastlev); -#line 13548 "" +#line 13543 "" /* L42: */ -#line 13548 "" +#line 13543 "" } -#line 13549 "" +#line 13544 "" } -#line 13550 "" +#line 13545 "" if (itup == ntup - ndoub) { -#line 13550 "" +#line 13545 "" goto L12; -#line 13550 "" +#line 13545 "" } -#line 13551 "" +#line 13546 "" /* L6: */ -#line 13551 "" +#line 13546 "" } -#line 13552 "" +#line 13547 "" L12: -#line 13553 "" +#line 13548 "" if (comget_1.ornrpt) { -#line 13554 "" +#line 13549 "" all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1] |= all_1.iornq[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 1] & 10026991; -#line 13556 "" +#line 13551 "" if ((all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1] & 32896) > 0) { /* This is a trill (bit 7 or 15) so must dup the parameters */ -#line 13560 "" +#line 13555 "" ++comtrill_1.ntrill; -#line 13561 "" +#line 13556 "" comtrill_1.ivtrill[comtrill_1.ntrill - 1] = commvl_1.ivx; -#line 13562 "" +#line 13557 "" comtrill_1.iptrill[comtrill_1.ntrill - 1] = all_1.nnl[ commvl_1.ivx - 1]; -#line 13563 "" +#line 13558 "" comtrill_1.xnsktr[comtrill_1.ntrill - 1] = comtrill_1.xnsktr[comtrill_1.ntrill - 2]; -#line 13564 "" +#line 13559 "" } -#line 13565 "" +#line 13560 "" } /* End of if-block for xtuplet input */ -#line 13569 "" +#line 13564 "" } else if (*(unsigned char *)durq == 'm') { /* Multi-bar rest: next 1 or two digits are # of bars. */ /* For some purposes, pretend its one bar only */ -#line 13574 "" +#line 13569 "" all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = all_1.lenbar; -#line 13575 "" +#line 13570 "" comgrace_1.ibarmbr = all_1.nbars + 1; -#line 13576 "" +#line 13571 "" comgrace_1.mbrest = 0; -#line 13577 "" +#line 13572 "" comgrace_1.xb4mbr = 0.f; -#line 13578 "" +#line 13573 "" L20: -#line 13578 "" +#line 13573 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 13579 "" +#line 13574 "" if (*(unsigned char *)durq >= 48 && *(unsigned char *)durq <= 57) { -#line 13580 "" +#line 13575 "" comgrace_1.mbrest = comgrace_1.mbrest * 10 + *(unsigned char * )durq - 48; -#line 13581 "" +#line 13576 "" goto L20; -#line 13582 "" +#line 13577 "" } /* durq will either be blank or 'n' */ -#line 13585 "" +#line 13580 "" if (*(unsigned char *)durq == 'n') { /* Get new height */ -#line 13589 "" +#line 13584 "" iplmi = 1; -#line 13590 "" +#line 13585 "" g1etchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1) ; -#line 13591 "" +#line 13586 "" if (*(unsigned char *)durq == '-') { -#line 13592 "" +#line 13587 "" iplmi = -1; -#line 13593 "" +#line 13588 "" ++all_1.iccount; -#line 13594 "" +#line 13589 "" } -#line 13595 "" +#line 13590 "" readnum_(lineq, &all_1.iccount, durq, &hgt, (ftnlen)128, ( ftnlen)1); -#line 13596 "" +#line 13591 "" r__1 = iplmi * hgt; -#line 13596 "" +#line 13591 "" comignorenats_1.mbrhgt = i_nint(&r__1); -#line 13597 "" +#line 13592 "" comignorenats_1.newmbrhgt = TRUE_; -#line 13598 "" +#line 13593 "" } -#line 13599 "" +#line 13594 "" } else if (i_indx("ul", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Set stem flipper */ -#line 13603 "" +#line 13598 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],30); -#line 13604 "" +#line 13599 "" if (*(unsigned char *)durq == 'u') { -#line 13604 "" +#line 13599 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],17); -#line 13604 "" +#line 13599 "" } -#line 13606 "" +#line 13601 "" goto L2; -#line 13607 "" +#line 13602 "" } else if (*(unsigned char *)durq == 'a') { /* "Alone", i.e., prohibit beam */ -#line 13611 "" +#line 13606 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],18); -#line 13612 "" +#line 13607 "" goto L2; -#line 13613 "" +#line 13608 "" } else if (*(unsigned char *)durq == 'r') { /* Right offset by one notehead */ -#line 13617 "" +#line 13612 "" all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],9); -#line 13618 "" +#line 13613 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],20); -#line 13619 "" +#line 13614 "" goto L2; -#line 13620 "" +#line 13615 "" } else if (*(unsigned char *)durq == 'e') { /* Left offset by one notehead */ -#line 13624 "" +#line 13619 "" all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],8); -#line 13625 "" +#line 13620 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],27); -#line 13626 "" +#line 13621 "" goto L2; -#line 13627 "" +#line 13622 "" } else if (i_indx("LS", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Stemlength change. Get dstemlen in \internotes. Allowable values are -4 to 27.5 */ @@ -32308,427 +32252,427 @@ L20: /* interbeams = internotes*2/3. */ -#line 13634 "" +#line 13629 "" isign = 1; -#line 13635 "" +#line 13630 "" if (*(unsigned char *)durq == 'S') { -#line 13635 "" +#line 13630 "" isign = -1; -#line 13635 "" +#line 13630 "" } -#line 13636 "" +#line 13631 "" all_1.mult[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.mult[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],27); -#line 13637 "" +#line 13632 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 13638 "" +#line 13633 "" if (*(unsigned char *)durq == ':') { /* End stickyS. Grab data now from prior note, since we have to shut off stickyS. */ -#line 13642 "" +#line 13637 "" i__1 = igetbits_(&all_1.mult[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 25], &c__6, &c__10); -#line 13642 "" +#line 13637 "" setbits_(&all_1.mult[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25], &c__6, &c__10, &i__1); -#line 13644 "" +#line 13639 "" comget_1.stickys = FALSE_; -#line 13645 "" +#line 13640 "" goto L2; -#line 13646 "" +#line 13641 "" } /* If durq .ne. ':' then iccount is now on the start of the number */ -#line 13650 "" +#line 13645 "" readnum_(lineq, &all_1.iccount, durq, &dum, (ftnlen)128, (ftnlen) 1); -#line 13651 "" +#line 13646 "" dum = isign * dum; -#line 13652 "" +#line 13647 "" r__1 = (dum + 4.f) * 2; -#line 13652 "" +#line 13647 "" i__1 = i_nint(&r__1); -#line 13652 "" +#line 13647 "" setbits_(&all_1.mult[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25], &c__6, &c__10, &i__1); -#line 13653 "" +#line 13648 "" if (*(unsigned char *)durq == ':') { -#line 13654 "" +#line 13649 "" comget_1.stickys = TRUE_; -#line 13655 "" +#line 13650 "" } else { -#line 13656 "" +#line 13651 "" --all_1.iccount; -#line 13657 "" +#line 13652 "" } -#line 13658 "" +#line 13653 "" goto L2; -#line 13659 "" +#line 13654 "" } else if (*(unsigned char *)durq == ',') { /* 2:1 pattern */ -#line 13663 "" +#line 13658 "" idotform = 3; /* Now flow to duration setting, as if durq=' ' */ -#line 13667 "" +#line 13662 "" } else if (*(unsigned char *)durq == '.') { /* Dotted pattern. Close out note. Mult time by 3/4. */ /* Set time for next note to 1/4. Start the note. */ -#line 13672 "" +#line 13667 "" idotform = 1; -#line 13673 "" +#line 13668 "" } else if (*(unsigned char *)durq == 'o') { /* Suppress rest centering */ -#line 13677 "" +#line 13672 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],25); -#line 13678 "" +#line 13673 "" goto L2; -#line 13679 "" +#line 13674 "" } else if (*(unsigned char *)durq == 'L') { /* With keyboard rest option, look left */ /* iornq(ivx,nnl(ivx)) = ibset(iornq(ivx,nnl(ivx)),30) */ -#line 13684 "" +#line 13679 "" all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],1); -#line 13685 "" +#line 13680 "" goto L2; -#line 13686 "" +#line 13681 "" } else if (i_indx("DF", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Double note for xtup. Must check here in case "D" came before "x" or on */ /* last note of xtup. Need to flag it in pmxa since affects horiz. spacing. */ -#line 13691 "" +#line 13686 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],18); -#line 13692 "" +#line 13687 "" if (*(unsigned char *)durq == 'F') { -#line 13692 "" +#line 13687 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],19); -#line 13692 "" +#line 13687 "" } -#line 13694 "" +#line 13689 "" goto L2; -#line 13695 "" +#line 13690 "" } else if (*(unsigned char *)durq == 'A') { /* Accidental option */ -#line 13699 "" +#line 13694 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 13701 "" +#line 13696 "" if (*(unsigned char *)durq == 'o') { /* Ordered accidentals in a chord. Mark the main note. */ -#line 13705 "" +#line 13700 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],28); -#line 13706 "" +#line 13701 "" } else { /* Only other possibility is +-<> . Set tag, reduce iccount and loop to get #'s */ -#line 13710 "" +#line 13705 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],29); -#line 13711 "" +#line 13706 "" --all_1.iccount; -#line 13712 "" +#line 13707 "" } -#line 13713 "" +#line 13708 "" goto L2; -#line 13714 "" +#line 13709 "" } else if (*(unsigned char *)durq == 'T') { -#line 13715 "" +#line 13710 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 13716 "" +#line 13711 "" multtrem = i_indx("1234", durq, (ftnlen)4, (ftnlen)1); -#line 13717 "" +#line 13712 "" if (multtrem == 0) { -#line 13718 "" +#line 13713 "" --all_1.iccount; -#line 13719 "" +#line 13714 "" multtrem = 1; -#line 13720 "" +#line 13715 "" } -#line 13721 "" +#line 13716 "" all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],4); -#line 13722 "" +#line 13717 "" i__1 = multtrem - 1; -#line 13722 "" +#line 13717 "" setbits_(&all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25], &c__2, &c__5, &i__1); -#line 13723 "" +#line 13718 "" goto L2; -#line 13724 "" +#line 13719 "" } else if (*(unsigned char *)durq != ' ') { -#line 13725 "" - s_wsle(&io___820); -#line 13725 "" +#line 13720 "" + s_wsle(&io___816); +#line 13720 "" do_lio(&c__9, &c__1, "Illegal character in note: ", (ftnlen)27); -#line 13725 "" +#line 13720 "" do_lio(&c__9, &c__1, durq, (ftnlen)1); -#line 13725 "" +#line 13720 "" do_lio(&c__9, &c__1, ", ivx,nn:", (ftnlen)9); -#line 13725 "" +#line 13720 "" do_lio(&c__3, &c__1, (char *)&commvl_1.ivx, (ftnlen)sizeof( integer)); -#line 13725 "" +#line 13720 "" do_lio(&c__3, &c__1, (char *)&all_1.nnl[commvl_1.ivx - 1], ( ftnlen)sizeof(integer)); -#line 13725 "" +#line 13720 "" e_wsle(); -#line 13727 "" +#line 13722 "" stop1_(); -#line 13728 "" +#line 13723 "" } /* Done with note/rest options. Set level and duration. */ -#line 13732 "" +#line 13727 "" if (! bit_test(all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],0)) { -#line 13733 "" +#line 13728 "" if (numnum == 2) { -#line 13734 "" +#line 13729 "" comnotes_1.lastlev = ifnolev_(charq, &ioct, & cominsttrans_1.itransamt[cominsttrans_1.instno[ all_1.iv - 1] - 1], (ftnlen)1); -#line 13735 "" +#line 13730 "" all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = comnotes_1.lastlev; -#line 13736 "" +#line 13731 "" } else { -#line 13737 "" +#line 13732 "" comnotes_1.lastlev = comnotes_1.lastlev - 3 + (ifnolev_(charq, &c__10, &cominsttrans_1.itransamt[ cominsttrans_1.instno[all_1.iv - 1] - 1], (ftnlen)1) - comnotes_1.lastlev + 3) % 7; -#line 13739 "" +#line 13734 "" all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = comnotes_1.lastlev; -#line 13740 "" +#line 13735 "" } -#line 13741 "" +#line 13736 "" for (comnotes_1.npreslur = comnotes_1.npreslur; comnotes_1.npreslur >= 1; --comnotes_1.npreslur) { /* Set level for preslur on normal note, non-chord */ -#line 13745 "" +#line 13740 "" setbits_(&all_1.isdat2[all_1.nsdat - comnotes_1.npreslur], & c__7, &c__19, &comnotes_1.lastlev); -#line 13746 "" +#line 13741 "" /* L43: */ -#line 13746 "" +#line 13741 "" } /* Only matters if last note, non-rest of xtuplet */ -#line 13750 "" +#line 13745 "" ++nnb; -#line 13751 "" +#line 13746 "" } /* Set flag for unbeamed xtup if it just has 1 note */ -#line 13755 "" +#line 13750 "" if (inxtup && nnb == 1) { -#line 13756 "" +#line 13751 "" all_1.islur[commvl_1.ivx + note1xtup * 24 - 25] = bit_set( all_1.islur[commvl_1.ivx + note1xtup * 24 - 25],18); -#line 13757 "" +#line 13752 "" } -#line 13758 "" +#line 13753 "" if (idotform > 0) { -#line 13759 "" +#line 13754 "" if (idotform == 1) { -#line 13760 "" +#line 13755 "" all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = ifnodur_(&comnotes_1.nnodur, dotq, (ftnlen)1) * 3 / 2; -#line 13761 "" +#line 13756 "" } else if (idotform == 2) { -#line 13762 "" +#line 13757 "" all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = all_1.nodur[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 25] / 3; -#line 13763 "" +#line 13758 "" } else if (idotform == 3) { -#line 13764 "" +#line 13759 "" all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = ifnodur_(&comnotes_1.nnodur, dotq, (ftnlen)1); -#line 13765 "" +#line 13760 "" } else if (idotform == 4) { -#line 13766 "" +#line 13761 "" all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = all_1.nodur[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] - 1) * 24 - 25] / 2; -#line 13767 "" +#line 13762 "" } -#line 13768 "" +#line 13763 "" } else if (bit_test(all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],19)) { /* Set duration of full-bar rest as pause */ -#line 13772 "" +#line 13767 "" all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = all_1.lenbar; /* Use a one-line function to set nnodur. It gives inverse of ifnodur. */ -#line 13776 "" +#line 13771 "" i__1 = (integer) (log(all_1.lenbar + .1f) / .69315f) + 48; -#line 13776 "" +#line 13771 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 13776 "" +#line 13771 "" comnotes_1.nnodur = i_indx("62514x0x37", ch__1, (ftnlen)10, ( ftnlen)1) - 1; -#line 13778 "" +#line 13773 "" } else if (comgrace_1.ibarmbr != all_1.nbars + 1) { -#line 13779 "" +#line 13774 "" all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = ifnodur_(&comnotes_1.nnodur, dotq, (ftnlen)1); -#line 13780 "" +#line 13775 "" if (bit_test(all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],3)) { -#line 13780 "" +#line 13775 "" all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = all_1.nodur[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25] * 7 / 6; -#line 13780 "" +#line 13775 "" } -#line 13782 "" +#line 13777 "" } -#line 13783 "" +#line 13778 "" if (comnotes_1.shifton && ! bit_test(all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],16)) { /* Shift is on, and this is not first shifted note. Check for duration change */ -#line 13787 "" +#line 13782 "" if (all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] != all_1.nodur[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 25]) { /* Must stop and restart the offset. */ -#line 13791 "" +#line 13786 "" all_1.irest[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + ( all_1.nnl[commvl_1.ivx - 1] - 1) * 24 - 25],17); -#line 13792 "" +#line 13787 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],16); -#line 13793 "" +#line 13788 "" ++comudsp_1.nudoff[commvl_1.ivx - 1]; -#line 13794 "" +#line 13789 "" comudsp_1.udoff[commvl_1.ivx + comudsp_1.nudoff[commvl_1.ivx - 1] * 24 - 25] = comudsp_1.udoff[commvl_1.ivx + ( comudsp_1.nudoff[commvl_1.ivx - 1] - 1) * 24 - 25]; -#line 13795 "" +#line 13790 "" } -#line 13796 "" +#line 13791 "" } -#line 13797 "" +#line 13792 "" all_1.itsofar[commvl_1.ivx - 1] += all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25]; -#line 13798 "" +#line 13793 "" if (comfb_1.autofbon && comfb_1.tautofb > comtol_1.tol && comget_1.fbon) { /* Check to see if need to terminate auto forced beam */ -#line 13802 "" +#line 13797 "" r__1 = all_1.itsofar[commvl_1.ivx - 1] - comfb_1.t1autofb; -#line 13802 "" +#line 13797 "" if (r_mod(&r__1, &comfb_1.tautofb) < comtol_1.tol) { /* Terminate autofb */ -#line 13806 "" +#line 13801 "" comfb_1.t2fb[commvl_1.ivx + comfb_1.nfb[commvl_1.ivx - 1] * 24 - 25] = (real) all_1.itsofar[commvl_1.ivx - 1]; -#line 13807 "" +#line 13802 "" comget_1.fbon = FALSE_; -#line 13808 "" +#line 13803 "" } -#line 13809 "" +#line 13804 "" } -#line 13810 "" +#line 13805 "" if ((all_1.itsofar[commvl_1.ivx - 1] - all_1.lenb0) % all_1.lenbar == 0) { /* Finished a bar */ -#line 13814 "" +#line 13809 "" ++all_1.nbars; -#line 13815 "" +#line 13810 "" all_1.nib[commvl_1.ivx + all_1.nbars * 24 - 25] = all_1.nnl[ commvl_1.ivx - 1]; -#line 13816 "" +#line 13811 "" if (all_1.firstgulp && all_1.lenb0 != 0 && all_1.nbars == 1) { /* Just finished the pickup bar for this voice. */ -#line 13820 "" +#line 13815 "" all_1.lenbar = all_1.lenb1; -#line 13821 "" +#line 13816 "" } -#line 13822 "" +#line 13817 "" } -#line 13823 "" +#line 13818 "" if (idotform == 1) { -#line 13824 "" +#line 13819 "" getchar_(lineq, &all_1.iccount, charq, (ftnlen)128, (ftnlen)1); -#line 13825 "" +#line 13820 "" idotform = 2; -#line 13826 "" +#line 13821 "" numnum = 1; -#line 13827 "" +#line 13822 "" goto L28; -#line 13828 "" +#line 13823 "" } else if (idotform == 3) { -#line 13829 "" +#line 13824 "" getchar_(lineq, &all_1.iccount, charq, (ftnlen)128, (ftnlen)1); -#line 13830 "" +#line 13825 "" idotform = 4; -#line 13831 "" +#line 13826 "" numnum = 1; -#line 13832 "" +#line 13827 "" goto L28; -#line 13833 "" +#line 13828 "" } /* End of sub block for note-rest */ -#line 13837 "" +#line 13832 "" } else if (*(unsigned char *)charq == 'z') { /* Chord note. Must have note name, may have octave#,+,-,s,f,n,d */ @@ -32760,331 +32704,331 @@ L20: /* Bits in icrdorn are same as in iornq, even tho most orns won't go in crds. */ -#line 13868 "" +#line 13863 "" ++comtrill_1.ncrd; -#line 13869 "" +#line 13864 "" all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],10); -#line 13870 "" +#line 13865 "" numnum = 0; /* icrdat(ncrd) = ior(nnl(ivx)-1,ishft(ivx,8)) */ -#line 13872 "" +#line 13867 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = all_1.nnl[commvl_1.ivx - 1]; -#line 13873 "" +#line 13868 "" i__1 = commvl_1.ivx % 16; -#line 13873 "" +#line 13868 "" setbits_(&comtrill_1.icrdat[comtrill_1.ncrd - 1], &c__4, &c__8, &i__1) ; -#line 13874 "" +#line 13869 "" if (commvl_1.ivx >= 16) { -#line 13874 "" +#line 13869 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],28); -#line 13874 "" +#line 13869 "" } -#line 13875 "" +#line 13870 "" comtrill_1.icrdot[comtrill_1.ncrd - 1] = 0; -#line 13876 "" +#line 13871 "" comtrill_1.icrdorn[comtrill_1.ncrd - 1] = 0; /* Get note name */ -#line 13880 "" +#line 13875 "" getchar_(lineq, &all_1.iccount, charq, (ftnlen)128, (ftnlen)1); /* Get optional inputs */ -#line 13884 "" +#line 13879 "" L25: -#line 13884 "" +#line 13879 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); /* ndx = index('fsn+-<>12345678rediA',durq) */ -#line 13886 "" +#line 13881 "" ndx = i_indx("fsn+-<>12345678rediAc", durq, (ftnlen)21, (ftnlen)1); -#line 13887 "" +#line 13882 "" if (ndx == 20) { /* Expect +|-|<|> , set tag, loop */ -#line 13891 "" +#line 13886 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],29); -#line 13892 "" +#line 13887 "" goto L25; -#line 13893 "" +#line 13888 "" } else if (ndx > 0) { -#line 13894 "" +#line 13889 "" if (ndx <= 3) { -#line 13895 "" +#line 13890 "" if (! bit_test(comtrill_1.icrdat[comtrill_1.ncrd - 1],19)) { -#line 13896 "" +#line 13891 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],19); -#line 13897 "" +#line 13892 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] |= ndx << 20; -#line 13898 "" +#line 13893 "" } else { -#line 13899 "" +#line 13894 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],22); -#line 13900 "" +#line 13895 "" } -#line 13901 "" +#line 13896 "" } else if (ndx == 21) { /* Set flags for cautionary accidental */ -#line 13905 "" +#line 13900 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],31); -#line 13906 "" +#line 13901 "" all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1] = bit_set(all_1.iornq[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 1],31); -#line 13907 "" +#line 13902 "" } else if (ndx <= 7) { /* +/-/ Check whether octave or accidental shift */ -#line 13911 "" +#line 13906 "" nactmp = 0; -#line 13912 "" +#line 13907 "" chkpm4ac_(lineq, &all_1.iccount, &nactmp, &moved, (ftnlen)128) ; -#line 13913 "" +#line 13908 "" if (moved) { /* Transfer accidental shift values */ -#line 13917 "" +#line 13912 "" i__1 = igetbits_(&nactmp, &c__6, &c__4); -#line 13917 "" +#line 13912 "" setbits_(&comtrill_1.icrdot[comtrill_1.ncrd - 1], &c__6, & c__14, &i__1); -#line 13918 "" +#line 13913 "" i__1 = igetbits_(&nactmp, &c__7, &c__10); -#line 13918 "" +#line 13913 "" setbits_(&comtrill_1.icrdot[comtrill_1.ncrd - 1], &c__7, & c__20, &i__1); -#line 13919 "" +#line 13914 "" } else { -#line 13920 "" +#line 13915 "" if (*(unsigned char *)durq == '+') { -#line 13921 "" +#line 13916 "" comnotes_1.lastlev += 7; -#line 13922 "" +#line 13917 "" } else if (*(unsigned char *)durq == '-') { -#line 13923 "" +#line 13918 "" comnotes_1.lastlev += -7; -#line 13924 "" +#line 13919 "" } -#line 13925 "" +#line 13920 "" } -#line 13926 "" +#line 13921 "" } else if (*(unsigned char *)durq == 'e') { -#line 13927 "" +#line 13922 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],23); -#line 13928 "" +#line 13923 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],27); -#line 13929 "" +#line 13924 "" } else if (*(unsigned char *)durq == 'r') { -#line 13930 "" +#line 13925 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],24); -#line 13931 "" +#line 13926 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],20); -#line 13932 "" +#line 13927 "" } else if (*(unsigned char *)durq == 'i') { /* Midi-only accidental on chord note */ -#line 13936 "" +#line 13931 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],27); -#line 13937 "" +#line 13932 "" } else if (*(unsigned char *)durq == 'd') { /* Must keep 'd' optional (backward compatibility), unless it is moved! */ -#line 13941 "" +#line 13936 "" i__1 = all_1.iccount; -#line 13941 "" +#line 13936 "" if (i_indx("+-", lineq + i__1, (ftnlen)2, all_1.iccount + 1 - i__1) > 0) { /* move a dot, unless next char is not part of a number */ -#line 13945 "" +#line 13940 "" i__1 = all_1.iccount + 1; -#line 13945 "" +#line 13940 "" if (i_indx("0123456789.", lineq + i__1, (ftnlen)11, all_1.iccount + 2 - i__1) == 0) { -#line 13945 "" +#line 13940 "" goto L25; -#line 13945 "" +#line 13940 "" } -#line 13947 "" +#line 13942 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],26); -#line 13948 "" +#line 13943 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 13949 "" +#line 13944 "" ++all_1.iccount; -#line 13950 "" +#line 13945 "" readnum_(lineq, &all_1.iccount, dumq, &fnum, (ftnlen)128, (ftnlen)1); -#line 13951 "" +#line 13946 "" if (*(unsigned char *)durq == '+') { -#line 13952 "" +#line 13947 "" r__1 = fnum * 10; -#line 13952 "" +#line 13947 "" comtrill_1.icrdot[comtrill_1.ncrd - 1] |= i_nint(& r__1) + 64; -#line 13953 "" +#line 13948 "" } else { -#line 13954 "" +#line 13949 "" r__1 = fnum * 10; -#line 13954 "" +#line 13949 "" comtrill_1.icrdot[comtrill_1.ncrd - 1] |= -i_nint(& r__1) + 64; -#line 13955 "" +#line 13950 "" } -#line 13956 "" +#line 13951 "" if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { /* Vertical shift specified also */ -#line 13960 "" +#line 13955 "" ++all_1.iccount; -#line 13961 "" +#line 13956 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen) 128, (ftnlen)1); -#line 13962 "" +#line 13957 "" if (*(unsigned char *)dumq == '+') { -#line 13963 "" +#line 13958 "" r__1 = fnum * 10; -#line 13963 "" +#line 13958 "" ifnum = i_nint(&r__1) + 64; -#line 13964 "" +#line 13959 "" } else { -#line 13965 "" +#line 13960 "" r__1 = fnum * 10; -#line 13965 "" +#line 13960 "" ifnum = -i_nint(&r__1) + 64; -#line 13966 "" +#line 13961 "" } -#line 13967 "" +#line 13962 "" } else { -#line 13968 "" +#line 13963 "" ifnum = 64; -#line 13969 "" +#line 13964 "" } -#line 13970 "" +#line 13965 "" comtrill_1.icrdot[comtrill_1.ncrd - 1] |= ifnum << 7; -#line 13971 "" +#line 13966 "" --all_1.iccount; -#line 13972 "" +#line 13967 "" } -#line 13973 "" +#line 13968 "" } else { /* must be a single digit, save it in ioct */ -#line 13977 "" +#line 13972 "" numnum = 1; -#line 13978 "" +#line 13973 "" ioct = ndx - 7; -#line 13979 "" +#line 13974 "" } -#line 13980 "" +#line 13975 "" goto L25; -#line 13981 "" +#line 13976 "" } -#line 13982 "" +#line 13977 "" if (numnum == 1) { -#line 13983 "" +#line 13978 "" comnotes_1.lastlev = ifnolev_(charq, &ioct, & cominsttrans_1.itransamt[cominsttrans_1.instno[all_1.iv - 1] - 1], (ftnlen)1); -#line 13984 "" +#line 13979 "" } else { -#line 13985 "" +#line 13980 "" comnotes_1.lastlev = comnotes_1.lastlev - 3 + (ifnolev_(charq, & c__10, &cominsttrans_1.itransamt[cominsttrans_1.instno[ all_1.iv - 1] - 1], (ftnlen)1) - comnotes_1.lastlev + 3) % 7; -#line 13987 "" +#line 13982 "" } -#line 13988 "" +#line 13983 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] |= comnotes_1.lastlev << 12; -#line 13989 "" +#line 13984 "" for (comnotes_1.npreslur = comnotes_1.npreslur; comnotes_1.npreslur >= 1; --comnotes_1.npreslur) { -#line 13990 "" +#line 13985 "" setbits_(&all_1.isdat2[all_1.nsdat - comnotes_1.npreslur], &c__7, &c__19, &comnotes_1.lastlev); /* Set level for chord note. */ /* Initially I assigned the slur(s) to next note, so fix. */ -#line 13995 "" +#line 13990 "" all_1.islur[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25] = bit_clear(all_1.islur[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] + 1) * 24 - 25],0); -#line 13996 "" +#line 13991 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],0); -#line 13997 "" +#line 13992 "" all_1.isdat2[all_1.nsdat - comnotes_1.npreslur] = bit_set( all_1.isdat2[all_1.nsdat - comnotes_1.npreslur],0); -#line 13998 "" +#line 13993 "" i__1 = igetbits_(&all_1.isdat1[all_1.nsdat - comnotes_1.npreslur], &c__8, &c__3) - 1; -#line 13998 "" +#line 13993 "" setbits_(&all_1.isdat1[all_1.nsdat - comnotes_1.npreslur], &c__8, &c__3, &i__1); -#line 14000 "" +#line 13995 "" /* L44: */ -#line 14000 "" +#line 13995 "" } -#line 14001 "" +#line 13996 "" if (comnotes_1.notcrd) { /* This is the first chord note in this chord. */ /* Computing MIN */ -#line 14005 "" +#line 14000 "" i__1 = all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25]; -#line 14005 "" +#line 14000 "" comtrill_1.minlev = min(i__1,comnotes_1.lastlev); /* Computing MAX */ -#line 14006 "" +#line 14001 "" i__1 = all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25]; -#line 14006 "" +#line 14001 "" comtrill_1.maxlev = max(i__1,comnotes_1.lastlev); -#line 14007 "" +#line 14002 "" } else { -#line 14008 "" +#line 14003 "" comtrill_1.minlev = min(comtrill_1.minlev,comnotes_1.lastlev); -#line 14009 "" +#line 14004 "" comtrill_1.maxlev = max(comtrill_1.maxlev,comnotes_1.lastlev); -#line 14010 "" +#line 14005 "" } -#line 14011 "" +#line 14006 "" comnotes_1.notcrd = FALSE_; -#line 14012 "" +#line 14007 "" } else if (*(unsigned char *)charq == 'G') { -#line 14013 "" +#line 14008 "" getgrace_(&commvl_1.ivx, all_1.nnl, lineq, &all_1.iccount, all_1.islur, all_1.iornq, all_1.ipl, comnotes_1.ndlev, & comnotes_1.lastlev, &all_1.iv, &all_1.nv, (ftnlen)128); @@ -33102,228 +33046,228 @@ L25: /* These data MUST precede note name of first note */ /* nolevg, naccg: lists of levels and accid's, indexed as described above. */ -#line 14029 "" +#line 14024 "" } else if (*(unsigned char *)charq == *(unsigned char *)all_1.sq) { /* Literal TeX string */ -#line 14033 "" +#line 14028 "" i__1 = all_1.nnl[commvl_1.ivx - 1] + 1; -#line 14033 "" +#line 14028 "" littex_(all_1.islur, &i__1, &commvl_1.ivx, &comas3_1.topmods, lineq, & all_1.iccount, (ftnlen)128); -#line 14034 "" +#line 14029 "" } else if (*(unsigned char *)charq == '"') { /* pmxlyr string. Expand "..." to \pmxlyr{...}\ */ -#line 14038 "" +#line 14033 "" if (! comlyr_1.inputmlyr) { -#line 14039 "" +#line 14034 "" ictemp = 0; /* Writing concatenation */ -#line 14040 "" +#line 14035 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 14040 "" +#line 14035 "" i__3[1] = 1, a__1[1] = all_1.sq; -#line 14040 "" +#line 14035 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 14040 "" +#line 14035 "" i__3[3] = 15, a__1[3] = "input musixlyr "; -#line 14040 "" +#line 14035 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 14040 "" +#line 14035 "" s_cat(lineqt, a__1, i__3, &c__5, (ftnlen)128); -#line 14041 "" +#line 14036 "" i__1 = all_1.nnl[commvl_1.ivx - 1] + 1; -#line 14041 "" +#line 14036 "" littex_(all_1.islur, &i__1, &commvl_1.ivx, &comas3_1.topmods, lineqt, &ictemp, (ftnlen)128); -#line 14042 "" +#line 14037 "" comlyr_1.inputmlyr = TRUE_; -#line 14043 "" +#line 14038 "" } -#line 14044 "" +#line 14039 "" dopmxlyr_(lineq, &all_1.iccount, (ftnlen)128); -#line 14045 "" +#line 14040 "" *(unsigned char *)charq = *(unsigned char *)all_1.sq; -#line 14046 "" +#line 14041 "" i__1 = all_1.nnl[commvl_1.ivx - 1] + 1; -#line 14046 "" +#line 14041 "" littex_(all_1.islur, &i__1, &commvl_1.ivx, &comas3_1.topmods, lineq, & all_1.iccount, (ftnlen)128); -#line 14047 "" +#line 14042 "" } else if (*(unsigned char *)charq == 'o') { /* Ornament on non-xtup note. Symbol must come AFTER the affected note */ -#line 14051 "" +#line 14046 "" if (comnotes_1.notcrd) { -#line 14052 "" +#line 14047 "" nole = all_1.nolev[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25]; -#line 14053 "" +#line 14048 "" } else { -#line 14054 "" +#line 14049 "" nole = 127 & lbit_shift(comtrill_1.icrdat[comtrill_1.ncrd - 1], ( ftnlen)-12); -#line 14055 "" +#line 14050 "" } -#line 14056 "" +#line 14051 "" getorn_(lineq, &all_1.iccount, &all_1.iornq[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 1], &all_1.iornq[commvl_1.ivx - 1], & comget_1.ornrpt, &comgrace_1.noffseg, &all_1.nnl[commvl_1.ivx - 1], &commvl_1.ivx, &c_true, &comnotes_1.notcrd, &nole, ( ftnlen)128); -#line 14059 "" +#line 14054 "" } else if (i_indx("st(){}", charq, (ftnlen)6, (ftnlen)1) > 0) { -#line 14060 "" +#line 14055 "" nnlivx = all_1.nnl[commvl_1.ivx - 1]; -#line 14061 "" +#line 14056 "" if (*(unsigned char *)charq == '(' || *(unsigned char *)charq == '{') { /* Detect preslur on normal non-chord note */ -#line 14065 "" +#line 14060 "" ++nnlivx; -#line 14066 "" +#line 14061 "" ++comnotes_1.npreslur; -#line 14067 "" +#line 14062 "" } -#line 14068 "" +#line 14063 "" all_1.islur[commvl_1.ivx + nnlivx * 24 - 25] = bit_set(all_1.islur[ commvl_1.ivx + nnlivx * 24 - 25],0); -#line 14069 "" +#line 14064 "" if (*(unsigned char *)charq == 't') { -#line 14069 "" +#line 14064 "" all_1.islur[commvl_1.ivx + nnlivx * 24 - 25] = bit_set( all_1.islur[commvl_1.ivx + nnlivx * 24 - 25],1); -#line 14069 "" +#line 14064 "" } -#line 14071 "" +#line 14066 "" if (commvl_1.ivx <= all_1.nv) { -#line 14072 "" +#line 14067 "" kv = 1; -#line 14073 "" +#line 14068 "" } else { -#line 14074 "" +#line 14069 "" kv = 2; -#line 14075 "" +#line 14070 "" } -#line 14076 "" +#line 14071 "" if (comslur_1.fontslur) { -#line 14077 "" +#line 14072 "" sslur_(lineq, &all_1.iccount, &all_1.iv, &kv, &nnlivx, all_1.isdat1, all_1.isdat2, all_1.isdat3, &all_1.nsdat, & comnotes_1.notcrd, &all_1.nolev[commvl_1.ivx + nnlivx * 24 - 25], charq, (ftnlen)128, (ftnlen)1); -#line 14079 "" +#line 14074 "" } else { -#line 14080 "" +#line 14075 "" spsslur_(lineq, &all_1.iccount, &all_1.iv, &kv, &nnlivx, all_1.isdat1, all_1.isdat2, all_1.isdat3, all_1.isdat4, & all_1.nsdat, &comnotes_1.notcrd, &all_1.nolev[ commvl_1.ivx + nnlivx * 24 - 25], charq, (ftnlen)128, ( ftnlen)1); -#line 14082 "" +#line 14077 "" } -#line 14083 "" +#line 14078 "" } else if (*(unsigned char *)charq == '?') { /* Arpeggio */ -#line 14087 "" +#line 14082 "" if (bit_test(all_1.ipl[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],10)) { /* This is a chordal note. Set a bit in icrdat. But if *main* (spacing) note */ /* of chord, will not set icrdat(25), but iornq(27) */ -#line 14092 "" +#line 14087 "" comtrill_1.icrdat[comtrill_1.ncrd - 1] = bit_set( comtrill_1.icrdat[comtrill_1.ncrd - 1],25); -#line 14093 "" +#line 14088 "" } else { -#line 14094 "" +#line 14089 "" all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1] = bit_set(all_1.iornq[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 1],27); -#line 14095 "" +#line 14090 "" } /* Check for shift */ -#line 14099 "" +#line 14094 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14100 "" +#line 14095 "" if (*(unsigned char *)durq == ' ') { -#line 14101 "" +#line 14096 "" --all_1.iccount; -#line 14102 "" +#line 14097 "" } else { /* durq must be "-" */ -#line 14106 "" +#line 14101 "" ++all_1.iccount; -#line 14107 "" +#line 14102 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, (ftnlen) 1); -#line 14108 "" +#line 14103 "" --all_1.iccount; /* record the shift */ -#line 14112 "" +#line 14107 "" ++comarpshift_1.numarpshift; -#line 14113 "" +#line 14108 "" comarpshift_1.ivarpshift[comarpshift_1.numarpshift - 1] = commvl_1.ivx; -#line 14114 "" +#line 14109 "" comarpshift_1.iparpshift[comarpshift_1.numarpshift - 1] = all_1.nnl[commvl_1.ivx - 1]; -#line 14115 "" +#line 14110 "" comarpshift_1.arpshift[comarpshift_1.numarpshift - 1] = fnum; -#line 14116 "" +#line 14111 "" } -#line 14117 "" +#line 14112 "" } else if (i_indx("0123456789#-nx_", charq, (ftnlen)15, (ftnlen)1) > 0) { /* We have a figure. Must come AFTER the note it goes under */ -#line 14122 "" +#line 14117 "" ivf = 1; -#line 14123 "" +#line 14118 "" if (commvl_1.ivx > 1) { -#line 14124 "" +#line 14119 "" if (comfig_1.ivxfig2 == 0) { -#line 14125 "" +#line 14120 "" comfig_1.ivxfig2 = commvl_1.ivx; -#line 14126 "" +#line 14121 "" } else if (commvl_1.ivx != comfig_1.ivxfig2) { -#line 14127 "" - s_wsle(&io___821); -#line 14127 "" +#line 14122 "" + s_wsle(&io___817); +#line 14122 "" e_wsle(); -#line 14128 "" - s_wsle(&io___822); -#line 14128 "" +#line 14123 "" + s_wsle(&io___818); +#line 14123 "" do_lio(&c__9, &c__1, "Figures not allowed in >1 voice above "\ "first", (ftnlen)43); -#line 14128 "" +#line 14123 "" e_wsle(); -#line 14129 "" +#line 14124 "" s_stop("", (ftnlen)0); -#line 14130 "" +#line 14125 "" } -#line 14131 "" +#line 14126 "" ivf = 2; -#line 14132 "" +#line 14127 "" } -#line 14133 "" +#line 14128 "" nfig1 = comfig_1.nfigs[ivf - 1] + 1; -#line 14134 "" +#line 14129 "" getfig_(&comgrace_1.itoff[ivf + (nfig1 << 1) - 3], charq, lineq, & all_1.iccount, &all_1.isfig[ivf + (all_1.nnl[commvl_1.ivx - 1] << 1) - 3], &comfig_1.itfig[ivf + (nfig1 << 1) - 3], & @@ -33333,46 +33277,46 @@ L25: - 3], &comfig_1.ivvfig[ivf + (nfig1 << 1) - 3], & comfig_1.nfigs[ivf - 1], (ftnlen)1, (ftnlen)128, (ftnlen)10); /* * ivupfig(ivf,nfig1),nfigs(ivf)) */ -#line 14139 "" +#line 14134 "" } else if (*(unsigned char *)charq == '[') { /* Start forced beam. Record barno & time since start of inp. blk. Set signal */ -#line 14143 "" +#line 14138 "" ++comfb_1.nfb[commvl_1.ivx - 1]; -#line 14144 "" +#line 14139 "" comget_1.fbon = TRUE_; -#line 14145 "" +#line 14140 "" *(unsigned char *)&comfb_1.ulfbq[commvl_1.ivx + comfb_1.nfb[ commvl_1.ivx - 1] * 24 - 25] = 'x'; -#line 14146 "" +#line 14141 "" comfb_1.t1fb[commvl_1.ivx + comfb_1.nfb[commvl_1.ivx - 1] * 24 - 25] = (real) all_1.itsofar[commvl_1.ivx - 1]; -#line 14147 "" +#line 14142 "" nadj = 0; -#line 14148 "" +#line 14143 "" if (comfb_1.autofbon) { -#line 14149 "" +#line 14144 "" comfb_1.autofbon = FALSE_; -#line 14150 "" +#line 14145 "" } -#line 14151 "" +#line 14146 "" L17: -#line 14151 "" +#line 14146 "" getchar_(lineq, &all_1.iccount, charq, (ftnlen)128, (ftnlen)1); -#line 14152 "" +#line 14147 "" if (i_indx("ulf", charq, (ftnlen)3, (ftnlen)1) > 0) { -#line 14153 "" +#line 14148 "" *(unsigned char *)&comfb_1.ulfbq[commvl_1.ivx + comfb_1.nfb[ commvl_1.ivx - 1] * 24 - 25] = *(unsigned char *)charq; -#line 14154 "" +#line 14149 "" goto L17; -#line 14155 "" +#line 14150 "" } else if (*(unsigned char *)charq == 'j') { /* Continuing a jumped beam here */ -#line 14159 "" +#line 14154 "" all_1.irest[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] + 1) * 24 - 25],24); @@ -33380,505 +33324,505 @@ L17: /* Set flag to watch for END of this forced beam, so can set flag rest(30) on */ /* NEXT note as signal to start a new notes group there. */ -#line 14164 "" +#line 14159 "" combjmp_1.isbj2 = TRUE_; -#line 14165 "" +#line 14160 "" goto L17; -#line 14166 "" +#line 14161 "" } else if (*(unsigned char *)charq == 'h') { -#line 14167 "" +#line 14162 "" all_1.islur[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] + 1) * 24 - 25],2); -#line 14168 "" +#line 14163 "" goto L17; -#line 14169 "" +#line 14164 "" } else if (*(unsigned char *)charq == 'm') { /* Force multiplicity. Next input is digit */ -#line 14173 "" +#line 14168 "" getchar_(lineq, &all_1.iccount, charq, (ftnlen)128, (ftnlen)1); -#line 14174 "" +#line 14169 "" all_1.islur[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] + 1) * 24 - 25],21); -#line 14175 "" +#line 14170 "" i__1 = *(unsigned char *)charq - 48; -#line 14175 "" +#line 14170 "" setbits_(&all_1.islur[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25], &c__3, &c__22, &i__1); -#line 14176 "" +#line 14171 "" goto L17; -#line 14177 "" +#line 14172 "" } else if (*(unsigned char *)charq == ':') { /* Start auto forced beam pattern */ -#line 14181 "" +#line 14176 "" comfb_1.autofbon = TRUE_; /* When forced later beam ends, check whether tautofv <=0; if so set it. */ -#line 14185 "" +#line 14180 "" comfb_1.tautofb = (real) (-all_1.itsofar[commvl_1.ivx - 1]); -#line 14186 "" +#line 14181 "" comfb_1.t1autofb = (real) all_1.itsofar[commvl_1.ivx - 1]; -#line 14187 "" +#line 14182 "" goto L17; -#line 14188 "" +#line 14183 "" } else if (*(unsigned char *)charq != ' ') { /* Must be '+/-' for height or slope shift */ -#line 14192 "" +#line 14187 "" ++nadj; /* nadj = 1,2, or 3 for normal start level, slope, or beam-thk start level. */ -#line 14196 "" +#line 14191 "" ++all_1.iccount; -#line 14197 "" +#line 14192 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, (ftnlen) 1); -#line 14198 "" +#line 14193 "" --all_1.iccount; -#line 14199 "" +#line 14194 "" iadj = i_nint(&fnum); -#line 14200 "" +#line 14195 "" if (*(unsigned char *)charq == '-') { -#line 14200 "" +#line 14195 "" iadj = -iadj; -#line 14200 "" +#line 14195 "" } -#line 14201 "" +#line 14196 "" if (nadj == 1) { /* This is a level shift. Note if 0 was entered, iadj = 30 */ -#line 14205 "" +#line 14200 "" i__1 = iadj + 30; -#line 14205 "" +#line 14200 "" setbits_(&all_1.ipl[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25], &c__6, &c__11, &i__1); -#line 14206 "" +#line 14201 "" } else if (nadj == 2) { /* Must be a slope shift */ -#line 14210 "" +#line 14205 "" i__1 = iadj + 30; -#line 14210 "" +#line 14205 "" setbits_(&all_1.ipl[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25], &c__6, &c__17, &i__1); -#line 14211 "" +#line 14206 "" } else { /* Beam-thk fine tune */ -#line 14215 "" +#line 14210 "" setbits_(&all_1.islur[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25], &c__2, &c__27, &iadj); -#line 14216 "" +#line 14211 "" } -#line 14217 "" +#line 14212 "" goto L17; -#line 14218 "" +#line 14213 "" } -#line 14219 "" +#line 14214 "" } else if (*(unsigned char *)charq == ']') { -#line 14220 "" +#line 14215 "" if (comfb_1.autofbon && comfb_1.tautofb < comtol_1.tol) { -#line 14221 "" +#line 14216 "" comfb_1.tautofb = all_1.itsofar[commvl_1.ivx - 1] + comfb_1.tautofb; -#line 14222 "" +#line 14217 "" } -#line 14223 "" +#line 14218 "" getchar_(lineq, &all_1.iccount, charq, (ftnlen)128, (ftnlen)1); -#line 14224 "" +#line 14219 "" if (i_indx("j ", charq, (ftnlen)2, (ftnlen)1) > 0) { /* Since ']' comes AFTER note, itsofar has been updated. Set ending signal. */ -#line 14228 "" +#line 14223 "" comfb_1.t2fb[commvl_1.ivx + comfb_1.nfb[commvl_1.ivx - 1] * 24 - 25] = (real) all_1.itsofar[commvl_1.ivx - 1]; -#line 14229 "" +#line 14224 "" comget_1.fbon = FALSE_; -#line 14230 "" +#line 14225 "" if (*(unsigned char *)charq == 'j') { -#line 14231 "" +#line 14226 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],23); -#line 14232 "" +#line 14227 "" } -#line 14233 "" +#line 14228 "" if (combjmp_1.isbj2) { /* This is the end of a fb segment of a jump beam. Set flag on NEXT note to */ /* force start of new notes group, provided this is not last note in bar. */ -#line 14238 "" +#line 14233 "" if (all_1.itsofar[commvl_1.ivx - 1] % all_1.lenbar != 0) { -#line 14238 "" +#line 14233 "" all_1.irest[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25],30) ; -#line 14238 "" +#line 14233 "" } -#line 14240 "" +#line 14235 "" combjmp_1.isbj2 = FALSE_; -#line 14241 "" +#line 14236 "" } -#line 14242 "" +#line 14237 "" } else if (*(unsigned char *)charq == '[') { /* Multiplicity down-up signal */ -#line 14246 "" +#line 14241 "" all_1.islur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.islur[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],20); -#line 14247 "" +#line 14242 "" } else if (*(unsigned char *)charq == '-') { /* Set signals for gap in single-slope beam [...]-[...] */ -#line 14251 "" +#line 14246 "" all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25],20); -#line 14252 "" +#line 14247 "" all_1.nacc[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25] = bit_set(all_1.nacc[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] + 1) * 24 - 25],21); /* Next two characters must be "[ ". Skip over them. */ -#line 14256 "" +#line 14251 "" all_1.iccount += 2; -#line 14257 "" +#line 14252 "" } -#line 14258 "" +#line 14253 "" } else if (*(unsigned char *)charq == 'D') { -#line 14259 "" +#line 14254 "" getdyn_(&commvl_1.ivx, &all_1.nnl[commvl_1.ivx - 1], &all_1.irest[ commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25], & all_1.iornq[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 1], lineq, &all_1.iccount, (ftnlen)128); -#line 14261 "" +#line 14256 "" } else if (*(unsigned char *)charq == 'h') { /* Heading or height. For heading, only OK if at start of block */ /* Check whether at beginning of a block */ -#line 14266 "" +#line 14261 "" if (all_1.iv != 1 || all_1.nnl[0] != 0) { -#line 14267 "" - s_wsle(&io___824); -#line 14267 "" +#line 14262 "" + s_wsle(&io___820); +#line 14262 "" do_lio(&c__9, &c__1, "You entered \"h\" not at beginning of block" , (ftnlen)41); -#line 14267 "" +#line 14262 "" e_wsle(); -#line 14268 "" +#line 14263 "" stop1_(); -#line 14269 "" +#line 14264 "" } -#line 14270 "" +#line 14265 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14271 "" +#line 14266 "" comhead_1.ihdvrt = 0; -#line 14272 "" +#line 14267 "" if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Vertical offset */ -#line 14276 "" +#line 14271 "" ++all_1.iccount; -#line 14277 "" +#line 14272 "" readnum_(lineq, &all_1.iccount, charq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 14278 "" +#line 14273 "" comhead_1.ihdvrt = fnum + .1f; -#line 14279 "" +#line 14274 "" if (*(unsigned char *)durq == '-') { -#line 14279 "" +#line 14274 "" comhead_1.ihdvrt = -comhead_1.ihdvrt; -#line 14279 "" +#line 14274 "" } -#line 14280 "" +#line 14275 "" *(unsigned char *)durq = *(unsigned char *)charq; -#line 14281 "" +#line 14276 "" } -#line 14282 "" +#line 14277 "" if (*(unsigned char *)durq != ' ') { /* Height symbol. Read past (until next blank) */ -#line 14286 "" +#line 14281 "" L3: -#line 14286 "" +#line 14281 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14287 "" +#line 14282 "" if (*(unsigned char *)durq != ' ') { -#line 14287 "" +#line 14282 "" goto L3; -#line 14287 "" +#line 14282 "" } -#line 14288 "" +#line 14283 "" } else { /* Set flag for header & read it in */ -#line 14292 "" +#line 14287 "" comhead_1.ihdht = 16; -#line 14293 "" +#line 14288 "" getbuf_(comhead_1.headrq, (ftnlen)80); -#line 14294 "" +#line 14289 "" all_1.iccount = 128; -#line 14295 "" +#line 14290 "" } -#line 14296 "" +#line 14291 "" } else if (*(unsigned char *)charq == 'L') { /* Linebreak, already handled some in pmxa, but need to get data for */ /* shortened line or coda lengths */ -#line 14301 "" +#line 14296 "" ++all_1.iccount; -#line 14302 "" +#line 14297 "" if (*(unsigned char *)&lineq[all_1.iccount - 1] == 'C') { /* Coda, get length */ -#line 14306 "" +#line 14301 "" ++all_1.iccount; -#line 14307 "" +#line 14302 "" readnum_(lineq, &all_1.iccount, durq, &comshort_1.codafrac, ( ftnlen)128, (ftnlen)1); -#line 14308 "" +#line 14303 "" comshort_1.ishort = 3; -#line 14309 "" +#line 14304 "" if (*(unsigned char *)durq == 'n') { -#line 14309 "" +#line 14304 "" comshort_1.nocodabn = TRUE_; -#line 14309 "" +#line 14304 "" } -#line 14310 "" +#line 14305 "" return 0; -#line 14311 "" +#line 14306 "" } /* Get line number */ -#line 14315 "" +#line 14310 "" readnum_(lineq, &all_1.iccount, durq, &fmovbrk, (ftnlen)128, (ftnlen) 1); -#line 14316 "" +#line 14311 "" L48: /* Allow transfer up from below if S follows M */ -#line 14317 "" +#line 14312 "" if (*(unsigned char *)durq == 'S') { /* Shortened line, get shortening fraction */ -#line 14321 "" +#line 14316 "" ++all_1.iccount; -#line 14322 "" +#line 14317 "" readnum_(lineq, &all_1.iccount, durq, &comshort_1.shortfrac, ( ftnlen)128, (ftnlen)1); -#line 14323 "" +#line 14318 "" comshort_1.ishort = 1; -#line 14324 "" +#line 14319 "" comshort_1.codafrac = 0.f; -#line 14325 "" +#line 14320 "" } /* Begin check for movement break */ -#line 14329 "" +#line 14324 "" if (*(unsigned char *)durq == 'P') { -#line 14330 "" +#line 14325 "" ++all_1.iccount; -#line 14331 "" +#line 14326 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, (ftnlen) 1); -#line 14332 "" +#line 14327 "" } -#line 14333 "" +#line 14328 "" if (*(unsigned char *)durq == 'M') { -#line 14334 "" +#line 14329 "" comget_1.movbrk = i_nint(&fmovbrk); -#line 14335 "" +#line 14330 "" comget_1.movgap = 0; -#line 14336 "" +#line 14331 "" comget_1.parmov = -1.f; -#line 14337 "" +#line 14332 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14338 "" +#line 14333 "" L31: -#line 14338 "" +#line 14333 "" if (*(unsigned char *)durq == '+') { /* Get vertical space (\internotes) */ -#line 14342 "" +#line 14337 "" ++all_1.iccount; -#line 14343 "" +#line 14338 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 14344 "" +#line 14339 "" comget_1.movgap = i_nint(&fnum); -#line 14345 "" +#line 14340 "" goto L31; -#line 14346 "" +#line 14341 "" } else if (*(unsigned char *)durq == 'i') { -#line 14347 "" +#line 14342 "" ++all_1.iccount; -#line 14348 "" +#line 14343 "" readnum_(lineq, &all_1.iccount, durq, &comget_1.parmov, ( ftnlen)128, (ftnlen)1); -#line 14349 "" +#line 14344 "" goto L31; -#line 14350 "" +#line 14345 "" } else if (*(unsigned char *)durq == 'c') { -#line 14351 "" +#line 14346 "" comnotes_1.nobar1 = TRUE_; -#line 14352 "" +#line 14347 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14353 "" +#line 14348 "" goto L31; -#line 14354 "" +#line 14349 "" } else if (*(unsigned char *)durq == 'r') { /* "rename" can be set on or off. */ -#line 14358 "" +#line 14353 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14359 "" +#line 14354 "" comnvi_1.rename = *(unsigned char *)durq == '+'; -#line 14360 "" +#line 14355 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14361 "" +#line 14356 "" goto L31; -#line 14362 "" +#line 14357 "" } else if (*(unsigned char *)durq == 'n') { /* Change # of voices. Input ninow, iiorig(1...ninow). Will use names, */ /* staves per inst. and clefs corr. to iiorig in original list of instruments. */ -#line 14367 "" +#line 14362 "" nvold = all_1.nv; -#line 14368 "" +#line 14363 "" all_1.nv = 0; -#line 14369 "" +#line 14364 "" comnvi_1.rename = TRUE_; -#line 14370 "" +#line 14365 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14371 "" +#line 14366 "" if (*(unsigned char *)durq == ':') { -#line 14372 "" +#line 14367 "" all_1.iccount += 2; -#line 14373 "" +#line 14368 "" i__1 = all_1.iccount - 2; -#line 14373 "" +#line 14368 "" ici__1.icierr = 0; -#line 14373 "" +#line 14368 "" ici__1.iciend = 0; -#line 14373 "" +#line 14368 "" ici__1.icirnum = 1; -#line 14373 "" +#line 14368 "" ici__1.icirlen = all_1.iccount - i__1; -#line 14373 "" +#line 14368 "" ici__1.iciunit = lineq + i__1; -#line 14373 "" +#line 14368 "" ici__1.icifmt = "(i2)"; -#line 14373 "" +#line 14368 "" s_rsfi(&ici__1); -#line 14373 "" +#line 14368 "" do_fio(&c__1, (char *)&comnotes_1.ninow, (ftnlen)sizeof( integer)); -#line 14373 "" +#line 14368 "" e_rsfi(); -#line 14374 "" +#line 14369 "" } else { -#line 14375 "" +#line 14370 "" comnotes_1.ninow = *(unsigned char *)durq - 48; -#line 14376 "" +#line 14371 "" } -#line 14377 "" +#line 14372 "" iiv = 0; -#line 14378 "" +#line 14373 "" i__1 = comnotes_1.ninow; -#line 14378 "" +#line 14373 "" for (iinow = 1; iinow <= i__1; ++iinow) { -#line 14379 "" +#line 14374 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, ( ftnlen)1); -#line 14380 "" +#line 14375 "" if (*(unsigned char *)durq == ':') { -#line 14381 "" +#line 14376 "" all_1.iccount += 2; -#line 14382 "" +#line 14377 "" i__2 = all_1.iccount - 2; -#line 14382 "" +#line 14377 "" ici__1.icierr = 0; -#line 14382 "" +#line 14377 "" ici__1.iciend = 0; -#line 14382 "" +#line 14377 "" ici__1.icirnum = 1; -#line 14382 "" +#line 14377 "" ici__1.icirlen = all_1.iccount - i__2; -#line 14382 "" +#line 14377 "" ici__1.iciunit = lineq + i__2; -#line 14382 "" +#line 14377 "" ici__1.icifmt = "(i2)"; -#line 14382 "" +#line 14377 "" s_rsfi(&ici__1); -#line 14382 "" +#line 14377 "" do_fio(&c__1, (char *)&comnvi_1.iiorig[iinow - 1], ( ftnlen)sizeof(integer)); -#line 14382 "" +#line 14377 "" e_rsfi(); -#line 14383 "" +#line 14378 "" } else { -#line 14384 "" +#line 14379 "" comnvi_1.iiorig[iinow - 1] = *(unsigned char *)durq - 48; -#line 14385 "" +#line 14380 "" } -#line 14386 "" +#line 14381 "" comnvi_1.nspern[iinow - 1] = comnvi_1.nsperi[ comnvi_1.iiorig[iinow - 1] - 1]; -#line 14387 "" +#line 14382 "" all_1.nv += comnvi_1.nspern[iinow - 1]; -#line 14388 "" +#line 14383 "" *(unsigned char *)&all_1.sepsymq[iiv + comnvi_1.nspern[ iinow - 1] - 1] = '&'; -#line 14389 "" +#line 14384 "" if (comnvi_1.nspern[iinow - 1] > 1) { -#line 14390 "" +#line 14385 "" i__2 = comnvi_1.nspern[iinow - 1] - 1; -#line 14390 "" +#line 14385 "" for (iis = 1; iis <= i__2; ++iis) { -#line 14391 "" +#line 14386 "" *(unsigned char *)&all_1.sepsymq[iiv + iis - 1] = '|'; -#line 14392 "" +#line 14387 "" /* L64: */ -#line 14392 "" +#line 14387 "" } -#line 14393 "" +#line 14388 "" } -#line 14394 "" +#line 14389 "" iiv += comnvi_1.nspern[iinow - 1]; -#line 14395 "" +#line 14390 "" /* L63: */ -#line 14395 "" +#line 14390 "" } /* 120818 Per Rainer's suggestion, defer changing \nbinstruments until issuing \newmovement */ @@ -33890,515 +33834,515 @@ L31: /* write(11,'(a8,i2,a2)')sq//'newnoi{',ninow,'}%' */ /* end if */ /* end if */ -#line 14406 "" +#line 14401 "" if (all_1.nv == 1 && nvold > 1) { -#line 14407 "" +#line 14402 "" if (comlast_1.islast) { -#line 14407 "" - s_wsfe(&io___829); +#line 14402 "" + s_wsfe(&io___825); /* Writing concatenation */ -#line 14407 "" +#line 14402 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14407 "" +#line 14402 "" i__5[1] = 11, a__2[1] = "nostartrule"; -#line 14407 "" +#line 14402 "" s_cat(ch__2, a__2, i__5, &c__2, (ftnlen)12); -#line 14407 "" +#line 14402 "" do_fio(&c__1, ch__2, (ftnlen)12); -#line 14407 "" +#line 14402 "" e_wsfe(); -#line 14407 "" +#line 14402 "" } -#line 14408 "" +#line 14403 "" } else if (all_1.nv > 1 && nvold == 1) { -#line 14409 "" +#line 14404 "" if (comlast_1.islast) { -#line 14409 "" - s_wsfe(&io___830); +#line 14404 "" + s_wsfe(&io___826); /* Writing concatenation */ -#line 14409 "" +#line 14404 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14409 "" +#line 14404 "" i__5[1] = 9, a__2[1] = "startrule"; -#line 14409 "" +#line 14404 "" s_cat(ch__3, a__2, i__5, &c__2, (ftnlen)10); -#line 14409 "" +#line 14404 "" do_fio(&c__1, ch__3, (ftnlen)10); -#line 14409 "" +#line 14404 "" e_wsfe(); -#line 14409 "" +#line 14404 "" } -#line 14410 "" +#line 14405 "" } -#line 14411 "" +#line 14406 "" iiv = 0; -#line 14412 "" +#line 14407 "" i__1 = comnotes_1.ninow; -#line 14412 "" +#line 14407 "" for (iinow = 1; iinow <= i__1; ++iinow) { -#line 14413 "" +#line 14408 "" i__2 = comnvi_1.nspern[iinow - 1]; -#line 14413 "" +#line 14408 "" for (iis = 1; iis <= i__2; ++iis) { -#line 14414 "" +#line 14409 "" ++iiv; /* May not really need to re-enter clefs, but it's easier to program since */ /* clef names are not saved but are needed in newvoice to set ncmidcc. */ -#line 14419 "" +#line 14414 "" getchar_(lineq, &all_1.iccount, comclefq_1.clefq + ( iiv - 1), (ftnlen)128, (ftnlen)1); -#line 14420 "" +#line 14415 "" newvoice_(&iiv, comclefq_1.clefq + (iiv - 1), &c_true, (ftnlen)1); -#line 14421 "" +#line 14416 "" if (comnvi_1.nspern[iinow - 1] == 1) { -#line 14422 "" +#line 14417 "" i__4 = numclef_(comclefq_1.clefq + (iiv - 1), ( ftnlen)1) + 48; -#line 14422 "" +#line 14417 "" chax_(ch__1, (ftnlen)1, &i__4); -#line 14422 "" +#line 14417 "" s_copy(hdlndq, ch__1, (ftnlen)59, (ftnlen)1); -#line 14423 "" +#line 14418 "" lclf = 1; -#line 14424 "" +#line 14419 "" } else if (iis == 1) { /* Writing concatenation */ -#line 14425 "" +#line 14420 "" i__5[0] = 1, a__2[0] = "{"; -#line 14425 "" +#line 14420 "" i__4 = numclef_(comclefq_1.clefq + (iiv - 1), ( ftnlen)1) + 48; -#line 14425 "" +#line 14420 "" chax_(ch__1, (ftnlen)1, &i__4); -#line 14425 "" +#line 14420 "" i__5[1] = 1, a__2[1] = ch__1; -#line 14425 "" +#line 14420 "" s_cat(hdlndq, a__2, i__5, &c__2, (ftnlen)59); -#line 14426 "" +#line 14421 "" lclf = 2; -#line 14427 "" +#line 14422 "" } else if (iis < comnvi_1.nspern[iinow - 1]) { /* Writing concatenation */ -#line 14428 "" +#line 14423 "" i__5[0] = lclf, a__2[0] = hdlndq; -#line 14428 "" +#line 14423 "" i__4 = numclef_(comclefq_1.clefq + (iiv - 1), ( ftnlen)1) + 48; -#line 14428 "" +#line 14423 "" chax_(ch__1, (ftnlen)1, &i__4); -#line 14428 "" +#line 14423 "" i__5[1] = 1, a__2[1] = ch__1; -#line 14428 "" +#line 14423 "" s_cat(hdlndq, a__2, i__5, &c__2, (ftnlen)59); -#line 14429 "" +#line 14424 "" ++lclf; -#line 14430 "" +#line 14425 "" } else { /* Writing concatenation */ -#line 14431 "" +#line 14426 "" i__6[0] = lclf, a__3[0] = hdlndq; -#line 14431 "" +#line 14426 "" i__4 = numclef_(comclefq_1.clefq + (iiv - 1), ( ftnlen)1) + 48; -#line 14431 "" +#line 14426 "" chax_(ch__1, (ftnlen)1, &i__4); -#line 14431 "" +#line 14426 "" i__6[1] = 1, a__3[1] = ch__1; -#line 14431 "" +#line 14426 "" i__6[2] = 1, a__3[2] = "}"; -#line 14431 "" +#line 14426 "" s_cat(hdlndq, a__3, i__6, &c__3, (ftnlen)59); -#line 14433 "" +#line 14428 "" lclf += 2; -#line 14434 "" +#line 14429 "" } -#line 14435 "" +#line 14430 "" /* L61: */ -#line 14435 "" +#line 14430 "" } /* setstaffs & setclef go by instrument, not voice */ -#line 14439 "" +#line 14434 "" if (comlast_1.islast) { -#line 14440 "" +#line 14435 "" if (iinow < 10) { -#line 14441 "" - s_wsfe(&io___833); +#line 14436 "" + s_wsfe(&io___829); /* Writing concatenation */ -#line 14441 "" +#line 14436 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 14441 "" +#line 14436 "" i__3[1] = 9, a__1[1] = "setstaffs"; -#line 14441 "" +#line 14436 "" i__2 = iinow + 48; -#line 14441 "" +#line 14436 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 14441 "" +#line 14436 "" i__3[2] = 1, a__1[2] = ch__1; -#line 14441 "" +#line 14436 "" i__4 = comnvi_1.nspern[iinow - 1] + 48; -#line 14441 "" +#line 14436 "" chax_(ch__5, (ftnlen)1, &i__4); -#line 14441 "" +#line 14436 "" i__3[3] = 1, a__1[3] = ch__5; -#line 14441 "" +#line 14436 "" i__3[4] = 1, a__1[4] = "%"; -#line 14441 "" +#line 14436 "" s_cat(ch__4, a__1, i__3, &c__5, (ftnlen)13); -#line 14441 "" +#line 14436 "" do_fio(&c__1, ch__4, (ftnlen)13); -#line 14441 "" +#line 14436 "" e_wsfe(); -#line 14443 "" - s_wsfe(&io___834); +#line 14438 "" + s_wsfe(&io___830); /* Writing concatenation */ -#line 14443 "" +#line 14438 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 14443 "" +#line 14438 "" i__3[1] = 7, a__1[1] = "setclef"; -#line 14443 "" +#line 14438 "" i__2 = iinow + 48; -#line 14443 "" +#line 14438 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 14443 "" +#line 14438 "" i__3[2] = 1, a__1[2] = ch__1; -#line 14443 "" +#line 14438 "" i__3[3] = lclf, a__1[3] = hdlndq; -#line 14443 "" +#line 14438 "" i__3[4] = 1, a__1[4] = "%"; -#line 14443 "" +#line 14438 "" s_cat(ch__6, a__1, i__3, &c__5, (ftnlen)69); -#line 14443 "" +#line 14438 "" do_fio(&c__1, ch__6, lclf + 10); -#line 14443 "" +#line 14438 "" e_wsfe(); -#line 14445 "" +#line 14440 "" if (comfig_1.fullsize[comnvi_1.iiorig[iinow - 1] - 1] > .9f) { -#line 14446 "" - s_wsfe(&io___835); +#line 14441 "" + s_wsfe(&io___831); /* Writing concatenation */ -#line 14446 "" +#line 14441 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 14446 "" +#line 14441 "" i__3[1] = 7, a__1[1] = "setsize"; -#line 14446 "" +#line 14441 "" i__2 = iinow + 48; -#line 14446 "" +#line 14441 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 14446 "" +#line 14441 "" i__3[2] = 1, a__1[2] = ch__1; -#line 14446 "" +#line 14441 "" i__3[3] = 1, a__1[3] = all_1.sq; -#line 14446 "" +#line 14441 "" i__3[4] = 12, a__1[4] = "normalvalue%"; -#line 14446 "" +#line 14441 "" s_cat(ch__7, a__1, i__3, &c__5, (ftnlen)22); -#line 14446 "" +#line 14441 "" do_fio(&c__1, ch__7, (ftnlen)22); -#line 14446 "" +#line 14441 "" e_wsfe(); /* 140526 Account for staff size specs when noinst changes. May be confusion */ /* here if more than one staff per instrument */ -#line 14452 "" +#line 14447 "" } else if (comfig_1.fullsize[comnvi_1.iiorig[ iinow - 1] - 1] > .7f) { -#line 14453 "" - s_wsfe(&io___836); +#line 14448 "" + s_wsfe(&io___832); /* Writing concatenation */ -#line 14453 "" +#line 14448 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 14453 "" +#line 14448 "" i__3[1] = 7, a__1[1] = "setsize"; -#line 14453 "" +#line 14448 "" i__2 = iinow + 48; -#line 14453 "" +#line 14448 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 14453 "" +#line 14448 "" i__3[2] = 1, a__1[2] = ch__1; -#line 14453 "" +#line 14448 "" i__3[3] = 1, a__1[3] = all_1.sq; -#line 14453 "" +#line 14448 "" i__3[4] = 11, a__1[4] = "smallvalue%"; -#line 14453 "" +#line 14448 "" s_cat(ch__8, a__1, i__3, &c__5, (ftnlen)21); -#line 14453 "" +#line 14448 "" do_fio(&c__1, ch__8, (ftnlen)21); -#line 14453 "" +#line 14448 "" e_wsfe(); -#line 14455 "" +#line 14450 "" } else { -#line 14456 "" - s_wsfe(&io___837); +#line 14451 "" + s_wsfe(&io___833); /* Writing concatenation */ -#line 14456 "" +#line 14451 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 14456 "" +#line 14451 "" i__3[1] = 7, a__1[1] = "setsize"; -#line 14456 "" +#line 14451 "" i__2 = iinow + 48; -#line 14456 "" +#line 14451 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 14456 "" +#line 14451 "" i__3[2] = 1, a__1[2] = ch__1; -#line 14456 "" +#line 14451 "" i__3[3] = 1, a__1[3] = all_1.sq; -#line 14456 "" +#line 14451 "" i__3[4] = 10, a__1[4] = "tinyvalue%"; -#line 14456 "" +#line 14451 "" s_cat(ch__9, a__1, i__3, &c__5, (ftnlen)20); -#line 14456 "" +#line 14451 "" do_fio(&c__1, ch__9, (ftnlen)20); -#line 14456 "" +#line 14451 "" e_wsfe(); -#line 14458 "" +#line 14453 "" } -#line 14459 "" +#line 14454 "" } else { -#line 14460 "" - s_wsfe(&io___838); +#line 14455 "" + s_wsfe(&io___834); /* Writing concatenation */ -#line 14460 "" +#line 14455 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14460 "" +#line 14455 "" i__5[1] = 10, a__2[1] = "setstaffs{"; -#line 14460 "" +#line 14455 "" s_cat(ch__10, a__2, i__5, &c__2, (ftnlen)11); -#line 14460 "" +#line 14455 "" do_fio(&c__1, ch__10, (ftnlen)11); -#line 14460 "" +#line 14455 "" do_fio(&c__1, (char *)&iinow, (ftnlen)sizeof( integer)); /* Writing concatenation */ -#line 14460 "" +#line 14455 "" i__6[0] = 1, a__3[0] = "}"; -#line 14460 "" +#line 14455 "" i__2 = comnvi_1.nspern[iinow - 1] + 48; -#line 14460 "" +#line 14455 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 14460 "" +#line 14455 "" i__6[1] = 1, a__3[1] = ch__1; -#line 14460 "" +#line 14455 "" i__6[2] = 1, a__3[2] = "%"; -#line 14460 "" +#line 14455 "" s_cat(ch__11, a__3, i__6, &c__3, (ftnlen)3); -#line 14460 "" +#line 14455 "" do_fio(&c__1, ch__11, (ftnlen)3); -#line 14460 "" +#line 14455 "" e_wsfe(); -#line 14462 "" - s_wsfe(&io___839); +#line 14457 "" + s_wsfe(&io___835); /* Writing concatenation */ -#line 14462 "" +#line 14457 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14462 "" +#line 14457 "" i__5[1] = 8, a__2[1] = "setclef{"; -#line 14462 "" +#line 14457 "" s_cat(ch__12, a__2, i__5, &c__2, (ftnlen)9); -#line 14462 "" +#line 14457 "" do_fio(&c__1, ch__12, (ftnlen)9); -#line 14462 "" +#line 14457 "" do_fio(&c__1, (char *)&iinow, (ftnlen)sizeof( integer)); /* Writing concatenation */ -#line 14462 "" +#line 14457 "" i__6[0] = 1, a__3[0] = "}"; -#line 14462 "" +#line 14457 "" i__6[1] = lclf, a__3[1] = hdlndq; -#line 14462 "" +#line 14457 "" i__6[2] = 1, a__3[2] = "%"; -#line 14462 "" +#line 14457 "" s_cat(ch__13, a__3, i__6, &c__3, (ftnlen)61); -#line 14462 "" +#line 14457 "" do_fio(&c__1, ch__13, lclf + 2); -#line 14462 "" +#line 14457 "" e_wsfe(); -#line 14464 "" +#line 14459 "" } -#line 14465 "" +#line 14460 "" } -#line 14466 "" +#line 14461 "" /* L60: */ -#line 14466 "" +#line 14461 "" } /* Loop back up, this may not be last option in M. Note flow out if durq=' ' */ -#line 14470 "" +#line 14465 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14471 "" +#line 14466 "" goto L31; -#line 14472 "" +#line 14467 "" } else if (*(unsigned char *)durq == 'S') { -#line 14473 "" +#line 14468 "" goto L48; -#line 14474 "" +#line 14469 "" } /* Write instrument names */ -#line 14478 "" +#line 14473 "" if (! comnvi_1.rename) { -#line 14479 "" +#line 14474 "" i__1 = comnotes_1.ninow; -#line 14479 "" +#line 14474 "" for (iinst = 1; iinst <= i__1; ++iinst) { -#line 14480 "" +#line 14475 "" if (comlast_1.islast) { -#line 14481 "" +#line 14476 "" if (iinst < 10) { -#line 14482 "" - s_wsfe(&io___841); +#line 14477 "" + s_wsfe(&io___837); /* Writing concatenation */ -#line 14482 "" +#line 14477 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14482 "" +#line 14477 "" i__5[1] = 7, a__2[1] = "setname"; -#line 14482 "" +#line 14477 "" s_cat(ch__14, a__2, i__5, &c__2, (ftnlen)8); -#line 14482 "" +#line 14477 "" do_fio(&c__1, ch__14, (ftnlen)8); -#line 14482 "" +#line 14477 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof( integer)); -#line 14482 "" +#line 14477 "" do_fio(&c__1, "{}%", (ftnlen)3); -#line 14482 "" +#line 14477 "" e_wsfe(); -#line 14483 "" +#line 14478 "" } else { -#line 14484 "" - s_wsfe(&io___842); +#line 14479 "" + s_wsfe(&io___838); /* Writing concatenation */ -#line 14484 "" +#line 14479 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14484 "" +#line 14479 "" i__5[1] = 8, a__2[1] = "setname{"; -#line 14484 "" +#line 14479 "" s_cat(ch__12, a__2, i__5, &c__2, (ftnlen)9); -#line 14484 "" +#line 14479 "" do_fio(&c__1, ch__12, (ftnlen)9); -#line 14484 "" +#line 14479 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof( integer)); -#line 14484 "" +#line 14479 "" do_fio(&c__1, "}{}%", (ftnlen)4); -#line 14484 "" +#line 14479 "" e_wsfe(); -#line 14485 "" +#line 14480 "" } -#line 14486 "" +#line 14481 "" } -#line 14487 "" +#line 14482 "" /* L62: */ -#line 14487 "" +#line 14482 "" } -#line 14488 "" +#line 14483 "" } else { -#line 14489 "" +#line 14484 "" i__1 = comnotes_1.ninow; -#line 14489 "" +#line 14484 "" for (iinst = 1; iinst <= i__1; ++iinst) { -#line 14490 "" +#line 14485 "" if (comlast_1.islast) { -#line 14491 "" +#line 14486 "" if (iinst < 10) { -#line 14492 "" - s_wsfe(&io___843); +#line 14487 "" + s_wsfe(&io___839); /* Writing concatenation */ -#line 14492 "" +#line 14487 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14492 "" +#line 14487 "" i__5[1] = 7, a__2[1] = "setname"; -#line 14492 "" +#line 14487 "" s_cat(ch__14, a__2, i__5, &c__2, (ftnlen)8); -#line 14492 "" +#line 14487 "" do_fio(&c__1, ch__14, (ftnlen)8); -#line 14492 "" +#line 14487 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof( integer)); /* Writing concatenation */ -#line 14492 "" +#line 14487 "" i__6[0] = 1, a__3[0] = "{"; -#line 14492 "" +#line 14487 "" i__6[1] = comtop_1.lnam[comnvi_1.iiorig[iinst - 1] - 1], a__3[1] = comtop_1.inameq + ( comnvi_1.iiorig[iinst - 1] - 1) * 79; -#line 14492 "" +#line 14487 "" i__6[2] = 2, a__3[2] = "}%"; -#line 14492 "" +#line 14487 "" s_cat(ch__15, a__3, i__6, &c__3, (ftnlen)82); -#line 14492 "" +#line 14487 "" do_fio(&c__1, ch__15, comtop_1.lnam[ comnvi_1.iiorig[iinst - 1] - 1] + 3); -#line 14492 "" +#line 14487 "" e_wsfe(); -#line 14494 "" +#line 14489 "" } else { -#line 14495 "" - s_wsfe(&io___844); +#line 14490 "" + s_wsfe(&io___840); /* Writing concatenation */ -#line 14495 "" +#line 14490 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14495 "" +#line 14490 "" i__5[1] = 8, a__2[1] = "setname{"; -#line 14495 "" +#line 14490 "" s_cat(ch__12, a__2, i__5, &c__2, (ftnlen)9); -#line 14495 "" +#line 14490 "" do_fio(&c__1, ch__12, (ftnlen)9); -#line 14495 "" +#line 14490 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof( integer)); /* Writing concatenation */ -#line 14495 "" +#line 14490 "" i__6[0] = 2, a__3[0] = "}{"; -#line 14495 "" +#line 14490 "" i__6[1] = comtop_1.lnam[comnvi_1.iiorig[iinst - 1] - 1], a__3[1] = comtop_1.inameq + ( comnvi_1.iiorig[iinst - 1] - 1) * 79; -#line 14495 "" +#line 14490 "" i__6[2] = 2, a__3[2] = "}%"; -#line 14495 "" +#line 14490 "" s_cat(ch__16, a__3, i__6, &c__3, (ftnlen)83); -#line 14495 "" +#line 14490 "" do_fio(&c__1, ch__16, comtop_1.lnam[ comnvi_1.iiorig[iinst - 1] - 1] + 4); -#line 14495 "" +#line 14490 "" e_wsfe(); -#line 14497 "" +#line 14492 "" } -#line 14498 "" +#line 14493 "" } -#line 14499 "" +#line 14494 "" /* L65: */ -#line 14499 "" +#line 14494 "" } -#line 14500 "" +#line 14495 "" if (comshort_1.ishort != 4 && comshort_1.ishort != 2) { -#line 14500 "" +#line 14495 "" comnvi_1.rename = FALSE_; -#line 14500 "" +#line 14495 "" } /* Reset later and rewrite setname{} in shortening case mcm, since if */ /* written here it will be inside {{...}} and will be ignored */ -#line 14505 "" +#line 14500 "" } -#line 14506 "" +#line 14501 "" } -#line 14507 "" +#line 14502 "" } else if (*(unsigned char *)charq == '|') { /* End of bar symbol. Check about end of bar hardspace. */ -#line 14511 "" +#line 14506 "" if (bit_test(all_1.iornq[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 1],26)) { @@ -34406,67 +34350,67 @@ L31: /* list, store with shifts instead, set special bit. Need to repeat this code */ /* at '/'. */ -#line 14517 "" +#line 14512 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],18); -#line 14518 "" +#line 14513 "" ++comudsp_1.nudoff[commvl_1.ivx - 1]; -#line 14519 "" +#line 14514 "" comudsp_1.udoff[commvl_1.ivx + comudsp_1.nudoff[commvl_1.ivx - 1] * 24 - 25] = comudsp_1.udsp[comudsp_1.nudsp - 1]; -#line 14520 "" +#line 14515 "" --comudsp_1.nudsp; -#line 14521 "" +#line 14516 "" all_1.iornq[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 1] = bit_clear(all_1.iornq[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] + 1) * 24 - 1],26); -#line 14522 "" +#line 14517 "" } -#line 14523 "" +#line 14518 "" } else if (i_indx("wS", charq, (ftnlen)2, (ftnlen)1) > 0) { /* Width symbol or new nsyst. Read past (until blank) */ -#line 14527 "" +#line 14522 "" L4: -#line 14527 "" +#line 14522 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14528 "" +#line 14523 "" if (*(unsigned char *)durq != ' ') { -#line 14528 "" +#line 14523 "" goto L4; -#line 14528 "" +#line 14523 "" } -#line 14529 "" +#line 14524 "" } else if (*(unsigned char *)charq == 'l') { /* Lower string. Only OK if at start of block */ /* Check whether at beginning of a block */ -#line 14534 "" +#line 14529 "" if (all_1.iv != 1 || all_1.nnl[0] != 0) { -#line 14535 "" - s_wsle(&io___845); -#line 14535 "" +#line 14530 "" + s_wsle(&io___841); +#line 14530 "" do_lio(&c__9, &c__1, "You entered \"l\" not at beginning of block" , (ftnlen)41); -#line 14535 "" +#line 14530 "" e_wsle(); -#line 14536 "" +#line 14531 "" stop1_(); -#line 14537 "" +#line 14532 "" } /* Set flag for lower string & read it in */ -#line 14541 "" +#line 14536 "" comhead_1.lower = TRUE_; -#line 14542 "" +#line 14537 "" getbuf_(comhead_1.lowerq, (ftnlen)80); -#line 14543 "" +#line 14538 "" all_1.iccount = 128; -#line 14544 "" +#line 14539 "" } else if (*(unsigned char *)charq == 'm') { /* Meter change. Only allow at beginning of block. */ @@ -34475,601 +34419,601 @@ L4: /* Check whether at beginning of a block */ -#line 14552 "" +#line 14547 "" if (all_1.iv != 1 || all_1.nnl[0] != 0) { -#line 14553 "" - s_wsle(&io___846); -#line 14553 "" +#line 14548 "" + s_wsle(&io___842); +#line 14548 "" do_lio(&c__9, &c__1, "You entered \"m\" not at beginning of block" , (ftnlen)41); -#line 14553 "" +#line 14548 "" e_wsle(); -#line 14554 "" +#line 14549 "" stop1_(); -#line 14555 "" +#line 14550 "" } -#line 14556 "" +#line 14551 "" readmeter_(lineq, &all_1.iccount, &all_1.mtrnuml, &all_1.mtrdenl, ( ftnlen)128); -#line 14557 "" +#line 14552 "" readmeter_(lineq, &all_1.iccount, &all_1.mtrnmp, &all_1.mtrdnp, ( ftnlen)128); -#line 14558 "" +#line 14553 "" lenbeat = ifnodur_(&all_1.mtrdenl, "x", (ftnlen)1); -#line 14559 "" +#line 14554 "" if (all_1.mtrdenl == 2) { -#line 14559 "" +#line 14554 "" lenbeat = 16; -#line 14559 "" +#line 14554 "" } -#line 14560 "" +#line 14555 "" all_1.lenbar = all_1.mtrnuml * lenbeat; -#line 14561 "" +#line 14556 "" if (all_1.mtrdenl == 2) { -#line 14561 "" +#line 14556 "" all_1.lenbar <<= 1; -#line 14561 "" +#line 14556 "" } -#line 14562 "" +#line 14557 "" all_1.lenb1 = all_1.lenbar; -#line 14563 "" +#line 14558 "" all_1.lenb0 = 0; -#line 14564 "" +#line 14559 "" if (commidi_1.ismidi) { -#line 14564 "" +#line 14559 "" midievent_("m", &all_1.mtrnuml, &all_1.mtrdenl, (ftnlen)1); -#line 14564 "" +#line 14559 "" } -#line 14565 "" +#line 14560 "" } else if (*(unsigned char *)charq == 'C') { /* Clef change on next note. Set bits 11-15. Won't allow in 2nd line of music. */ -#line 14569 "" +#line 14564 "" if (all_1.nnl[all_1.iv - 1] > 0) { -#line 14569 "" +#line 14564 "" ++comcc_1.ncc[all_1.iv - 1]; -#line 14569 "" +#line 14564 "" } -#line 14570 "" +#line 14565 "" comcc_1.tcc[all_1.iv + comcc_1.ncc[all_1.iv - 1] * 24 - 25] = (real) all_1.itsofar[all_1.iv - 1]; -#line 14571 "" +#line 14566 "" isl = bit_set(all_1.islur[all_1.iv + (all_1.nnl[all_1.iv - 1] + 1) * 24 - 25],11); -#line 14572 "" +#line 14567 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); /* Store clef number, or 7 if clef number = 9 (French violin clef) */ /* Computing MIN */ -#line 14576 "" +#line 14571 "" i__1 = numclef_(durq, (ftnlen)1); -#line 14576 "" +#line 14571 "" isl |= min(i__1,7) << 12; -#line 14577 "" +#line 14572 "" comcc_1.ncmidcc[all_1.iv + comcc_1.ncc[all_1.iv - 1] * 24 - 25] = ncmidf_(durq, (ftnlen)1); -#line 14578 "" +#line 14573 "" if (*(unsigned char *)durq == '8') { -#line 14579 "" +#line 14574 "" all_1.ipl[all_1.iv + (all_1.nnl[all_1.iv - 1] + 1) * 24 - 25] = bit_set(all_1.ipl[all_1.iv + (all_1.nnl[all_1.iv - 1] + 1) * 24 - 25],2); -#line 14580 "" +#line 14575 "" cominsttrans_1.itransamt[cominsttrans_1.instno[all_1.iv - 1] - 1] += 7; -#line 14581 "" +#line 14576 "" comnotes_1.lastlev += 7; -#line 14582 "" +#line 14577 "" if (all_1.nnl[all_1.iv - 1] == 0) { -#line 14583 "" +#line 14578 "" comnotes_1.ndlev[all_1.iv - 1] += 7; -#line 14584 "" +#line 14579 "" comnotes_1.ndlev[all_1.iv + 23] += 7; -#line 14585 "" +#line 14580 "" } -#line 14586 "" +#line 14581 "" } else { /* This won't work if you really had an octave transposition with some */ /* other clef. Need a check on whether prior clef was an octave clef. */ -#line 14591 "" +#line 14586 "" if (cominsttrans_1.itransamt[cominsttrans_1.instno[all_1.iv - 1] - 1] == 7) { -#line 14592 "" +#line 14587 "" cominsttrans_1.itransamt[cominsttrans_1.instno[all_1.iv - 1] - 1] += -7; -#line 14593 "" +#line 14588 "" comnotes_1.lastlev += -7; -#line 14594 "" +#line 14589 "" if (all_1.nnl[all_1.iv - 1] == 0) { -#line 14595 "" +#line 14590 "" comnotes_1.ndlev[all_1.iv - 1] += -7; -#line 14596 "" +#line 14591 "" comnotes_1.ndlev[all_1.iv + 23] += -7; -#line 14597 "" +#line 14592 "" } -#line 14598 "" +#line 14593 "" } -#line 14599 "" +#line 14594 "" } /* Set marker on note with lowest voice # starting at same time. */ -#line 14603 "" +#line 14598 "" if (all_1.iv == 1) { -#line 14604 "" +#line 14599 "" isl = bit_set(isl,15); -#line 14605 "" +#line 14600 "" } else { -#line 14606 "" +#line 14601 "" i__1 = all_1.iv; -#line 14606 "" +#line 14601 "" for (iiv = 1; iiv <= i__1; ++iiv) { -#line 14607 "" +#line 14602 "" nnliiv = all_1.nnl[iiv - 1]; -#line 14608 "" +#line 14603 "" if (iiv == all_1.iv) { -#line 14608 "" +#line 14603 "" ++nnliiv; -#line 14608 "" +#line 14603 "" } -#line 14609 "" +#line 14604 "" itother = 0; -#line 14610 "" +#line 14605 "" i__2 = nnliiv; -#line 14610 "" +#line 14605 "" for (iip = 1; iip <= i__2; ++iip) { -#line 14611 "" +#line 14606 "" if (itother < all_1.itsofar[all_1.iv - 1]) { -#line 14612 "" +#line 14607 "" itother += all_1.nodur[iiv + iip * 24 - 25]; -#line 14613 "" +#line 14608 "" goto L14; -#line 14614 "" +#line 14609 "" } else if (itother == all_1.itsofar[all_1.iv - 1]) { -#line 14615 "" +#line 14610 "" all_1.islur[iiv + iip * 24 - 25] = bit_set( all_1.islur[iiv + iip * 24 - 25],15); -#line 14616 "" +#line 14611 "" goto L15; -#line 14617 "" +#line 14612 "" } -#line 14618 "" +#line 14613 "" L14: -#line 14618 "" +#line 14613 "" ; -#line 14618 "" +#line 14613 "" } -#line 14619 "" +#line 14614 "" /* L13: */ -#line 14619 "" +#line 14614 "" } -#line 14620 "" +#line 14615 "" L15: -#line 14621 "" +#line 14616 "" ; -#line 14621 "" +#line 14616 "" } /* Need 'or' since may have set bit 15 in the above loop */ -#line 14625 "" +#line 14620 "" all_1.islur[all_1.iv + (all_1.nnl[all_1.iv - 1] + 1) * 24 - 25] = isl | all_1.islur[all_1.iv + (all_1.nnl[all_1.iv - 1] + 1) * 24 - 25]; -#line 14626 "" +#line 14621 "" } else if (*(unsigned char *)charq == 'R') { /* Repeats. set bits 5, 6, and/or 8 of islur(1,ip+1) */ -#line 14630 "" +#line 14625 "" L10: -#line 14630 "" +#line 14625 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); /* Save designator in case it's a terminal Rr or Rd */ -#line 14634 "" +#line 14629 "" if (*(unsigned char *)durq == 'l') { -#line 14635 "" +#line 14630 "" all_1.islur[(all_1.nnl[0] + 1) * 24 - 24] = bit_set(all_1.islur[( all_1.nnl[0] + 1) * 24 - 24],5); -#line 14636 "" +#line 14631 "" goto L10; -#line 14637 "" +#line 14632 "" } else if (i_indx("rdDbz", durq, (ftnlen)5, (ftnlen)1) > 0) { -#line 14638 "" +#line 14633 "" if (*(unsigned char *)durq == 'r') { -#line 14639 "" +#line 14634 "" all_1.islur[(all_1.nnl[0] + 1) * 24 - 24] = bit_set( all_1.islur[(all_1.nnl[0] + 1) * 24 - 24],6); -#line 14640 "" +#line 14635 "" } else if (*(unsigned char *)durq == 'd') { -#line 14641 "" +#line 14636 "" all_1.islur[(all_1.nnl[0] + 1) * 24 - 24] = bit_set( all_1.islur[(all_1.nnl[0] + 1) * 24 - 24],8); -#line 14642 "" +#line 14637 "" } else if (*(unsigned char *)durq == 'D') { -#line 14643 "" +#line 14638 "" all_1.islur[(all_1.nnl[0] + 1) * 24 - 24] = bit_set( all_1.islur[(all_1.nnl[0] + 1) * 24 - 24],26); -#line 14644 "" +#line 14639 "" } else if (*(unsigned char *)durq == 'b') { -#line 14645 "" +#line 14640 "" all_1.islur[(all_1.nnl[0] + 1) * 24 - 24] = bit_set( all_1.islur[(all_1.nnl[0] + 1) * 24 - 24],25); -#line 14646 "" +#line 14641 "" } else if (*(unsigned char *)durq == 'z') { /* iornq(1,nnl(1)+1) = ibset(iornq(1,nnl(1)+1),29) */ -#line 14648 "" +#line 14643 "" all_1.ipl[(all_1.nnl[0] + 1) * 24 - 24] = bit_set(all_1.ipl[( all_1.nnl[0] + 1) * 24 - 24],0); -#line 14649 "" +#line 14644 "" } -#line 14650 "" +#line 14645 "" comget_1.rptprev = TRUE_; -#line 14651 "" +#line 14646 "" *(unsigned char *)comget_1.rptfq1 = *(unsigned char *)durq; -#line 14652 "" +#line 14647 "" goto L10; -#line 14653 "" +#line 14648 "" } -#line 14654 "" +#line 14649 "" } else if (*(unsigned char *)charq == 'V') { /* Ending */ -#line 14658 "" +#line 14653 "" nnnl = all_1.nnl[0] + 1; -#line 14659 "" +#line 14654 "" lvoltxt = 0; -#line 14660 "" +#line 14655 "" L11: -#line 14660 "" +#line 14655 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14661 "" +#line 14656 "" if (*(unsigned char *)durq == 'b' || *(unsigned char *)durq == 'x') { /* End Volta, set bit9, and bit10 on if 'b' (end w/ box) */ -#line 14665 "" +#line 14660 "" all_1.islur[nnnl * 24 - 24] = bit_set(all_1.islur[nnnl * 24 - 24], 9); -#line 14666 "" +#line 14661 "" if (*(unsigned char *)durq == 'b') { -#line 14666 "" +#line 14661 "" all_1.islur[nnnl * 24 - 24] = bit_set(all_1.islur[nnnl * 24 - 24],10); -#line 14666 "" +#line 14661 "" } -#line 14667 "" +#line 14662 "" goto L11; -#line 14668 "" +#line 14663 "" } else if (*(unsigned char *)durq != ' ') { /* Start volta; Get text */ -#line 14672 "" +#line 14667 "" if (lvoltxt == 0) { /* First character for text */ -#line 14676 "" +#line 14671 "" lvoltxt = 1; -#line 14677 "" +#line 14672 "" all_1.islur[nnnl * 24 - 24] = bit_set(all_1.islur[nnnl * 24 - 24],7); -#line 14678 "" +#line 14673 "" ++comgrace_1.nvolt; -#line 14679 "" +#line 14674 "" s_copy(comgrace_1.voltxtq + (comgrace_1.nvolt - 1) * 20, durq, (ftnlen)20, (ftnlen)1); -#line 14680 "" +#line 14675 "" } else { /* Writing concatenation */ -#line 14681 "" +#line 14676 "" i__5[0] = lvoltxt, a__2[0] = comgrace_1.voltxtq + ( comgrace_1.nvolt - 1) * 20; -#line 14681 "" +#line 14676 "" i__5[1] = 1, a__2[1] = durq; -#line 14681 "" +#line 14676 "" s_cat(comgrace_1.voltxtq + (comgrace_1.nvolt - 1) * 20, a__2, i__5, &c__2, (ftnlen)20); -#line 14682 "" +#line 14677 "" ++lvoltxt; -#line 14683 "" +#line 14678 "" } -#line 14684 "" +#line 14679 "" goto L11; -#line 14685 "" +#line 14680 "" } -#line 14686 "" +#line 14681 "" } else if (*(unsigned char *)charq == 'B') { -#line 14687 "" +#line 14682 "" combc_1.bcspec = ! combc_1.bcspec; -#line 14688 "" +#line 14683 "" } else if (*(unsigned char *)charq == 'P') { /* Page numbers. Print stuff right now. */ -#line 14692 "" +#line 14687 "" npg1 = 0; /* Will use ltopnam to signal whether there's a centered heading */ -#line 14696 "" +#line 14691 "" ltopnam = 0; -#line 14697 "" +#line 14692 "" ipg1r = 0; -#line 14698 "" +#line 14693 "" L16: -#line 14698 "" +#line 14693 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14699 "" +#line 14694 "" if (*(unsigned char *)durq >= 48 && *(unsigned char *)durq <= 57) { -#line 14700 "" +#line 14695 "" npg1 = npg1 * 10 + *(unsigned char *)durq - 48; -#line 14701 "" +#line 14696 "" goto L16; -#line 14702 "" +#line 14697 "" } else if (*(unsigned char *)durq == 'l') { -#line 14703 "" +#line 14698 "" if (npg1 == 0 || npg1 % 2 == 1) { -#line 14703 "" +#line 14698 "" ipg1r = 1; -#line 14703 "" +#line 14698 "" } -#line 14704 "" +#line 14699 "" goto L16; -#line 14705 "" +#line 14700 "" } else if (*(unsigned char *)durq == 'r') { -#line 14706 "" +#line 14701 "" if (npg1 > 0 && npg1 % 2 == 0) { -#line 14706 "" +#line 14701 "" ipg1r = 1; -#line 14706 "" +#line 14701 "" } -#line 14707 "" +#line 14702 "" goto L16; -#line 14708 "" +#line 14703 "" } else if (*(unsigned char *)durq == 'c') { /* Top-centered name. Assume this is last option. Read the name. */ /* May surround name in double quotes (to allow blanks). */ -#line 14713 "" +#line 14708 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14714 "" +#line 14709 "" if (*(unsigned char *)durq == ' ') { -#line 14715 "" +#line 14710 "" ltopnam = lenstr_(comtrans_1.cheadq, &c__60, (ftnlen)60); -#line 14716 "" +#line 14711 "" } else { -#line 14717 "" +#line 14712 "" namstrt = all_1.iccount; -#line 14718 "" +#line 14713 "" if (*(unsigned char *)durq == '"') { /* Using quote delimiters. */ -#line 14722 "" +#line 14717 "" quoted = TRUE_; -#line 14723 "" +#line 14718 "" ++namstrt; -#line 14724 "" +#line 14719 "" } else { -#line 14725 "" +#line 14720 "" quoted = FALSE_; -#line 14726 "" +#line 14721 "" } -#line 14727 "" +#line 14722 "" for (all_1.iccount = namstrt + 1; all_1.iccount <= 128; ++all_1.iccount) { /* if ((quoted .and. lineq(iccount:iccount) .eq. '"') .or. */ -#line 14729 "" +#line 14724 "" i__1 = all_1.iccount - 2; -#line 14729 "" +#line 14724 "" if (quoted && *(unsigned char *)&lineq[all_1.iccount - 1] == '"' && s_cmp(lineq + i__1, "\\", all_1.iccount - 1 - i__1, (ftnlen)1) != 0 || ! quoted && *( unsigned char *)&lineq[all_1.iccount - 1] == ' ') { -#line 14729 "" +#line 14724 "" goto L36; -#line 14729 "" +#line 14724 "" } /* On exit, iccount is OK, and name is in (namstrt:iccount-1) */ -#line 14736 "" +#line 14731 "" /* L35: */ -#line 14736 "" +#line 14731 "" } -#line 14737 "" - s_wsle(&io___855); -#line 14737 "" +#line 14732 "" + s_wsle(&io___851); +#line 14732 "" do_lio(&c__9, &c__1, "Awww, cmon, should not be here.", ( ftnlen)31); -#line 14737 "" +#line 14732 "" e_wsle(); -#line 14738 "" +#line 14733 "" stop1_(); -#line 14739 "" +#line 14734 "" L36: -#line 14740 "" +#line 14735 "" ltopnam = all_1.iccount - namstrt; -#line 14741 "" +#line 14736 "" s_copy(comtrans_1.cheadq, lineq + (namstrt - 1), (ftnlen)60, all_1.iccount - 1 - (namstrt - 1)); -#line 14742 "" +#line 14737 "" } -#line 14743 "" +#line 14738 "" } /* Done getting data, now assemble the command */ -#line 14747 "" +#line 14742 "" if (npg1 == 0) { -#line 14747 "" +#line 14742 "" npg1 = 1; -#line 14747 "" +#line 14742 "" } /* 2/23/03 Don't use \atnextline if on first page and only one system */ /* if (ipage.gt.1 .or. nsystp(1).gt.1) then */ /* Writing concatenation */ -#line 14752 "" +#line 14747 "" i__7[0] = 1, a__4[0] = all_1.sq; -#line 14752 "" +#line 14747 "" i__7[1] = 3, a__4[1] = "def"; -#line 14752 "" +#line 14747 "" i__7[2] = 1, a__4[2] = all_1.sq; -#line 14752 "" +#line 14747 "" i__7[3] = 11, a__4[3] = "atnextline{"; -#line 14752 "" +#line 14747 "" i__7[4] = 1, a__4[4] = all_1.sq; -#line 14752 "" +#line 14747 "" i__7[5] = 10, a__4[5] = "toppageno{"; -#line 14752 "" +#line 14747 "" s_cat(hdlndq, a__4, i__7, &c__6, (ftnlen)59); -#line 14753 "" +#line 14748 "" lhead = 27; /* else */ /* hdlndq = sq//'toppageno{' */ /* lhead = 11 */ /* end if */ -#line 14758 "" +#line 14753 "" if (npg1 < 10) { /* Note we are overwriting the last "{" */ -#line 14762 "" +#line 14757 "" ici__1.icierr = 0; -#line 14762 "" +#line 14757 "" ici__1.icirnum = 1; -#line 14762 "" +#line 14757 "" ici__1.icirlen = 1; -#line 14762 "" +#line 14757 "" ici__1.iciunit = hdlndq + (lhead - 1); -#line 14762 "" +#line 14757 "" ici__1.icifmt = "(i1)"; -#line 14762 "" +#line 14757 "" s_wsfi(&ici__1); -#line 14762 "" +#line 14757 "" do_fio(&c__1, (char *)&npg1, (ftnlen)sizeof(integer)); -#line 14762 "" +#line 14757 "" e_wsfi(); -#line 14763 "" +#line 14758 "" } else if (npg1 < 100) { -#line 14764 "" +#line 14759 "" lhead += 3; -#line 14765 "" +#line 14760 "" i__1 = lhead - 3; -#line 14765 "" +#line 14760 "" ici__1.icierr = 0; -#line 14765 "" +#line 14760 "" ici__1.icirnum = 1; -#line 14765 "" +#line 14760 "" ici__1.icirlen = lhead - i__1; -#line 14765 "" +#line 14760 "" ici__1.iciunit = hdlndq + i__1; -#line 14765 "" +#line 14760 "" ici__1.icifmt = "(i2,a1)"; -#line 14765 "" +#line 14760 "" s_wsfi(&ici__1); -#line 14765 "" +#line 14760 "" do_fio(&c__1, (char *)&npg1, (ftnlen)sizeof(integer)); -#line 14765 "" +#line 14760 "" do_fio(&c__1, "}", (ftnlen)1); -#line 14765 "" +#line 14760 "" e_wsfi(); -#line 14766 "" +#line 14761 "" } else { -#line 14767 "" +#line 14762 "" lhead += 4; -#line 14768 "" +#line 14763 "" i__1 = lhead - 4; -#line 14768 "" +#line 14763 "" ici__1.icierr = 0; -#line 14768 "" +#line 14763 "" ici__1.icirnum = 1; -#line 14768 "" +#line 14763 "" ici__1.icirlen = lhead - i__1; -#line 14768 "" +#line 14763 "" ici__1.iciunit = hdlndq + i__1; -#line 14768 "" +#line 14763 "" ici__1.icifmt = "(i3,a1)"; -#line 14768 "" +#line 14763 "" s_wsfi(&ici__1); -#line 14768 "" +#line 14763 "" do_fio(&c__1, (char *)&npg1, (ftnlen)sizeof(integer)); -#line 14768 "" +#line 14763 "" do_fio(&c__1, "}", (ftnlen)1); -#line 14768 "" +#line 14763 "" e_wsfi(); -#line 14769 "" +#line 14764 "" } /* Writing concatenation */ -#line 14770 "" +#line 14765 "" i__6[0] = lhead, a__3[0] = hdlndq; -#line 14770 "" +#line 14765 "" i__1 = ipg1r + 48; -#line 14770 "" +#line 14765 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 14770 "" +#line 14765 "" i__6[1] = 1, a__3[1] = ch__1; -#line 14770 "" +#line 14765 "" i__6[2] = 1, a__3[2] = "{"; -#line 14770 "" +#line 14765 "" s_cat(hdlndq, a__3, i__6, &c__3, (ftnlen)59); -#line 14771 "" +#line 14766 "" lhead += 2; /* if (ipage.gt.1 .or. nsystp(1).gt.1) then */ -#line 14773 "" +#line 14768 "" if (ltopnam == 0) { -#line 14774 "" +#line 14769 "" if (comlast_1.islast) { -#line 14774 "" - s_wsfe(&io___857); +#line 14769 "" + s_wsfe(&io___853); /* Writing concatenation */ -#line 14774 "" +#line 14769 "" i__5[0] = lhead, a__2[0] = hdlndq; -#line 14774 "" +#line 14769 "" i__5[1] = 3, a__2[1] = "}}%"; -#line 14774 "" +#line 14769 "" s_cat(ch__17, a__2, i__5, &c__2, (ftnlen)62); -#line 14774 "" +#line 14769 "" do_fio(&c__1, ch__17, lhead + 3); -#line 14774 "" +#line 14769 "" e_wsfe(); -#line 14774 "" +#line 14769 "" } -#line 14775 "" +#line 14770 "" } else { -#line 14776 "" +#line 14771 "" if (comlast_1.islast) { -#line 14776 "" - s_wsfe(&io___858); +#line 14771 "" + s_wsfe(&io___854); /* Writing concatenation */ -#line 14776 "" +#line 14771 "" i__6[0] = lhead, a__3[0] = hdlndq; -#line 14776 "" +#line 14771 "" i__6[1] = ltopnam, a__3[1] = comtrans_1.cheadq; -#line 14776 "" +#line 14771 "" i__6[2] = 3, a__3[2] = "}}%"; -#line 14776 "" +#line 14771 "" s_cat(ch__18, a__3, i__6, &c__3, (ftnlen)122); -#line 14776 "" +#line 14771 "" do_fio(&c__1, ch__18, lhead + ltopnam + 3); -#line 14776 "" +#line 14771 "" e_wsfe(); -#line 14776 "" +#line 14771 "" } -#line 14778 "" +#line 14773 "" } /* else */ /* if (ltopnam .eq. 0) then */ @@ -35079,859 +35023,859 @@ L36: /* * write(11,'(a)')hdlndq(1:lhead)//cheadq(1:ltopnam)//'}%' */ /* end if */ /* end if */ -#line 14787 "" +#line 14782 "" } else if (*(unsigned char *)charq == 'W') { /* Just eat the number that must follow, it was used in pmxa */ -#line 14791 "" +#line 14786 "" ++all_1.iccount; -#line 14792 "" +#line 14787 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 14793 "" +#line 14788 "" } else if (*(unsigned char *)charq == 'T') { -#line 14794 "" +#line 14789 "" comtitl_1.headlog = TRUE_; -#line 14795 "" +#line 14790 "" comtitl_1.inhead = 0; -#line 14796 "" +#line 14791 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14797 "" +#line 14792 "" if (*(unsigned char *)durq == 'i') { -#line 14798 "" +#line 14793 "" getbuf_(comtitl_1.instrq, (ftnlen)120); /* A kluge for parts from separate score file for later movements. */ -#line 14802 "" +#line 14797 "" if (*(unsigned char *)comtitl_1.instrq == ' ') { -#line 14802 "" +#line 14797 "" comtitl_1.headlog = FALSE_; -#line 14802 "" +#line 14797 "" } -#line 14803 "" +#line 14798 "" s_copy(comtrans_1.cheadq, comtitl_1.instrq, (ftnlen)60, (ftnlen) 60); -#line 14804 "" +#line 14799 "" } else if (*(unsigned char *)durq == 't') { -#line 14805 "" +#line 14800 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); /* Optionally can include extra vertical \internotes above inbothd */ -#line 14809 "" +#line 14804 "" if (i_indx("-+0123456789", durq, (ftnlen)12, (ftnlen)1) > 0) { -#line 14810 "" +#line 14805 "" ipm = 1; -#line 14811 "" +#line 14806 "" if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Don't trust readnum to round this negative integer properly */ -#line 14815 "" +#line 14810 "" ++all_1.iccount; -#line 14816 "" +#line 14811 "" if (*(unsigned char *)durq == '-') { -#line 14816 "" +#line 14811 "" ipm = -1; -#line 14816 "" +#line 14811 "" } -#line 14817 "" +#line 14812 "" } -#line 14818 "" +#line 14813 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 14819 "" +#line 14814 "" comtitl_1.inhead = ipm * i_nint(&fnum); -#line 14820 "" +#line 14815 "" } -#line 14821 "" +#line 14816 "" getbuf_(comtitl_1.titleq, (ftnlen)120); -#line 14822 "" +#line 14817 "" } else { -#line 14823 "" +#line 14818 "" getbuf_(comtitl_1.compoq, (ftnlen)120); -#line 14824 "" +#line 14819 "" } -#line 14825 "" +#line 14820 "" comtitl_1.inhead += cominbot_1.inbothd; -#line 14826 "" +#line 14821 "" all_1.iccount = 128; -#line 14827 "" +#line 14822 "" } else if (*(unsigned char *)charq == 'A') { /* Accidental handling etc. */ -#line 14831 "" +#line 14826 "" L27: -#line 14831 "" +#line 14826 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14832 "" +#line 14827 "" if (*(unsigned char *)durq == 'r') { -#line 14833 "" +#line 14828 "" if (comlast_1.islast) { -#line 14834 "" +#line 14829 "" commidi_1.relacc = TRUE_; -#line 14835 "" - s_wsfe(&io___859); +#line 14830 "" + s_wsfe(&io___855); /* Writing concatenation */ -#line 14835 "" +#line 14830 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14835 "" +#line 14830 "" i__5[1] = 14, a__2[1] = "relativeaccid%"; -#line 14835 "" +#line 14830 "" s_cat(ch__19, a__2, i__5, &c__2, (ftnlen)15); -#line 14835 "" +#line 14830 "" do_fio(&c__1, ch__19, (ftnlen)15); -#line 14835 "" +#line 14830 "" e_wsfe(); -#line 14836 "" +#line 14831 "" } -#line 14837 "" +#line 14832 "" } else if (*(unsigned char *)durq == 's') { -#line 14838 "" +#line 14833 "" spfacs_1.bacfac = 1e6f; -#line 14839 "" +#line 14834 "" } else if (*(unsigned char *)durq == 'b') { -#line 14840 "" +#line 14835 "" if (comlast_1.islast) { -#line 14840 "" - s_wsfe(&io___860); +#line 14835 "" + s_wsfe(&io___856); /* Writing concatenation */ -#line 14840 "" +#line 14835 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14840 "" +#line 14835 "" i__5[1] = 9, a__2[1] = "bigaccid%"; -#line 14840 "" +#line 14835 "" s_cat(ch__3, a__2, i__5, &c__2, (ftnlen)10); -#line 14840 "" +#line 14835 "" do_fio(&c__1, ch__3, (ftnlen)10); -#line 14840 "" +#line 14835 "" e_wsfe(); -#line 14840 "" +#line 14835 "" } -#line 14841 "" +#line 14836 "" spfacs_1.accfac = spfacs_1.bacfac; -#line 14842 "" +#line 14837 "" } else if (*(unsigned char *)durq == 'a') { -#line 14843 "" +#line 14838 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14844 "" +#line 14839 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, (ftnlen) 1); -#line 14845 "" +#line 14840 "" --all_1.iccount; -#line 14846 "" +#line 14841 "" } else if (*(unsigned char *)durq == 'i') { -#line 14847 "" +#line 14842 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14848 "" +#line 14843 "" readnum_(lineq, &all_1.iccount, durq, &tintstf, (ftnlen)128, ( ftnlen)1); -#line 14849 "" +#line 14844 "" if (! all_1.firstgulp) { -#line 14849 "" +#line 14844 "" comget_1.fintstf = tintstf; -#line 14849 "" +#line 14844 "" } /* Local corrections for first page were handled by pmxa */ -#line 14853 "" +#line 14848 "" --all_1.iccount; -#line 14854 "" +#line 14849 "" } else if (*(unsigned char *)durq == 'I') { -#line 14855 "" +#line 14850 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14856 "" +#line 14851 "" readnum_(lineq, &all_1.iccount, durq, &comget_1.gintstf, (ftnlen) 128, (ftnlen)1); -#line 14857 "" +#line 14852 "" --all_1.iccount; -#line 14858 "" +#line 14853 "" } else if (*(unsigned char *)durq == 'd') { -#line 14859 "" +#line 14854 "" comarp_1.lowdot = TRUE_; -#line 14860 "" +#line 14855 "" } else if (*(unsigned char *)durq == 'o') { -#line 14862 "" +#line 14857 "" } else if (*(unsigned char *)durq == 'S') { -#line 14863 "" +#line 14858 "" i__1 = comkeys_2.noinst; -#line 14863 "" +#line 14858 "" for (iiv = 1; iiv <= i__1; ++iiv) { -#line 14864 "" +#line 14859 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14865 "" +#line 14860 "" if (i_indx("-s", durq, (ftnlen)2, (ftnlen)1) > 0) { -#line 14866 "" +#line 14861 "" comfig_1.fullsize[iiv - 1] = .8f; -#line 14867 "" +#line 14862 "" } else if (*(unsigned char *)durq == 't') { -#line 14868 "" +#line 14863 "" comfig_1.fullsize[iiv - 1] = .64f; -#line 14869 "" +#line 14864 "" } else { /* fullsize(ivx) = 1.0 */ -#line 14871 "" +#line 14866 "" comfig_1.fullsize[iiv - 1] = 1.f; -#line 14872 "" +#line 14867 "" } -#line 14873 "" +#line 14868 "" /* L50: */ -#line 14873 "" +#line 14868 "" } -#line 14874 "" +#line 14869 "" } else if (*(unsigned char *)durq == 'e') { /* Line-spacing equalization */ -#line 14878 "" +#line 14873 "" comget_1.equalize = TRUE_; /* The following redefinition of \parskip was put into pmx.tex in version 2.25 or so. */ /* But it causes problems with some older scores and when excerpts are combined */ /* with LaTeX. So as of 2.352 we write it here. */ -#line 14884 "" - s_wsfe(&io___862); +#line 14879 "" + s_wsfe(&io___858); /* Writing concatenation */ -#line 14884 "" +#line 14879 "" i__8[0] = 1, a__5[0] = all_1.sq; -#line 14884 "" +#line 14879 "" i__8[1] = 6, a__5[1] = "global"; -#line 14884 "" +#line 14879 "" i__8[2] = 1, a__5[2] = all_1.sq; -#line 14884 "" +#line 14879 "" i__8[3] = 19, a__5[3] = "parskip 0pt plus 12"; -#line 14884 "" +#line 14879 "" i__8[4] = 1, a__5[4] = all_1.sq; -#line 14884 "" +#line 14879 "" i__8[5] = 19, a__5[5] = "Interligne minus 99"; -#line 14884 "" +#line 14879 "" i__8[6] = 1, a__5[6] = all_1.sq; -#line 14884 "" +#line 14879 "" i__8[7] = 11, a__5[7] = "Interligne%"; -#line 14884 "" +#line 14879 "" s_cat(ch__20, a__5, i__8, &c__8, (ftnlen)59); -#line 14884 "" +#line 14879 "" do_fio(&c__1, ch__20, (ftnlen)59); -#line 14884 "" +#line 14879 "" e_wsfe(); -#line 14886 "" +#line 14881 "" s_copy(tempq, all_1.sepsymq, (ftnlen)24, (ftnlen)1); -#line 14887 "" +#line 14882 "" lentemp = 1; -#line 14888 "" +#line 14883 "" i__1 = all_1.nv - 1; -#line 14888 "" +#line 14883 "" for (iiv = 2; iiv <= i__1; ++iiv) { /* Writing concatenation */ -#line 14889 "" +#line 14884 "" i__5[0] = lentemp, a__2[0] = tempq; -#line 14889 "" +#line 14884 "" i__5[1] = 1, a__2[1] = all_1.sepsymq + (iiv - 1); -#line 14889 "" +#line 14884 "" s_cat(tempq, a__2, i__5, &c__2, (ftnlen)24); -#line 14890 "" +#line 14885 "" ++lentemp; -#line 14891 "" +#line 14886 "" /* L51: */ -#line 14891 "" +#line 14886 "" } -#line 14892 "" - s_wsfe(&io___865); +#line 14887 "" + s_wsfe(&io___861); /* Writing concatenation */ -#line 14892 "" +#line 14887 "" i__9[0] = 1, a__6[0] = all_1.sq; -#line 14892 "" +#line 14887 "" i__9[1] = 3, a__6[1] = "def"; -#line 14892 "" +#line 14887 "" i__9[2] = 1, a__6[2] = all_1.sq; -#line 14892 "" +#line 14887 "" i__9[3] = 8, a__6[3] = "upstrut{"; -#line 14892 "" +#line 14887 "" i__9[4] = 1, a__6[4] = all_1.sq; -#line 14892 "" +#line 14887 "" i__9[5] = 6, a__6[5] = "znotes"; -#line 14892 "" +#line 14887 "" i__9[6] = lentemp, a__6[6] = tempq; -#line 14892 "" +#line 14887 "" i__9[7] = 1, a__6[7] = all_1.sq; -#line 14892 "" +#line 14887 "" i__9[8] = 10, a__6[8] = "zcharnote{"; -#line 14892 "" +#line 14887 "" i__9[9] = 1, a__6[9] = all_1.sq; -#line 14892 "" +#line 14887 "" i__9[10] = 9, a__6[10] = "upamt}{~}"; -#line 14892 "" +#line 14887 "" i__9[11] = 1, a__6[11] = all_1.sq; -#line 14892 "" +#line 14887 "" i__9[12] = 4, a__6[12] = "en}%"; -#line 14892 "" +#line 14887 "" s_cat(ch__21, a__6, i__9, &c__13, (ftnlen)70); -#line 14892 "" +#line 14887 "" do_fio(&c__1, ch__21, lentemp + 46); -#line 14892 "" +#line 14887 "" e_wsfe(); -#line 14895 "" +#line 14890 "" } else if (*(unsigned char *)durq == 'v') { /* Toggle usevshrink */ -#line 14899 "" +#line 14894 "" comlast_1.usevshrink = ! comlast_1.usevshrink; -#line 14900 "" +#line 14895 "" } else if (*(unsigned char *)durq == 'p') { /* Postscript slurs. fontslur is already false (set in g1etnote) */ -#line 14904 "" +#line 14899 "" if (! comslur_1.wrotepsslurdefaults) { /* Set postscrirpt slur adjustment defaults */ -#line 14908 "" - s_wsfe(&io___866); +#line 14903 "" + s_wsfe(&io___862); /* Writing concatenation */ -#line 14908 "" +#line 14903 "" i__7[0] = 1, a__4[0] = all_1.sq; -#line 14908 "" +#line 14903 "" i__7[1] = 12, a__4[1] = "Nosluradjust"; -#line 14908 "" +#line 14903 "" i__7[2] = 1, a__4[2] = all_1.sq; -#line 14908 "" +#line 14903 "" i__7[3] = 11, a__4[3] = "Notieadjust"; -#line 14908 "" +#line 14903 "" i__7[4] = 1, a__4[4] = all_1.sq; -#line 14908 "" +#line 14903 "" i__7[5] = 10, a__4[5] = "nohalfties"; -#line 14908 "" +#line 14903 "" s_cat(ch__22, a__4, i__7, &c__6, (ftnlen)36); -#line 14908 "" +#line 14903 "" do_fio(&c__1, ch__22, (ftnlen)36); -#line 14908 "" +#line 14903 "" e_wsfe(); -#line 14910 "" +#line 14905 "" comslur_1.wrotepsslurdefaults = TRUE_; -#line 14911 "" +#line 14906 "" } -#line 14912 "" +#line 14907 "" L52: -#line 14913 "" +#line 14908 "" g1etchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); /* might be "+", "-", "h" or */ -#line 14914 "" +#line 14909 "" if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Characters to change defaults for ps slurs */ -#line 14918 "" +#line 14913 "" g1etchar_(lineq, &all_1.iccount, charq, (ftnlen)128, (ftnlen) 1); /* charq will be "s,t,h,c */ -#line 14919 "" +#line 14914 "" if (*(unsigned char *)durq == '+') { -#line 14920 "" +#line 14915 "" if (*(unsigned char *)charq == 's') { -#line 14921 "" - s_wsfe(&io___867); +#line 14916 "" + s_wsfe(&io___863); /* Writing concatenation */ -#line 14921 "" +#line 14916 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14921 "" +#line 14916 "" i__5[1] = 10, a__2[1] = "Sluradjust"; -#line 14921 "" +#line 14916 "" s_cat(ch__10, a__2, i__5, &c__2, (ftnlen)11); -#line 14921 "" +#line 14916 "" do_fio(&c__1, ch__10, (ftnlen)11); -#line 14921 "" +#line 14916 "" e_wsfe(); -#line 14922 "" +#line 14917 "" } else if (*(unsigned char *)charq == 't') { -#line 14923 "" - s_wsfe(&io___868); +#line 14918 "" + s_wsfe(&io___864); /* Writing concatenation */ -#line 14923 "" +#line 14918 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14923 "" +#line 14918 "" i__5[1] = 9, a__2[1] = "Tieadjust"; -#line 14923 "" +#line 14918 "" s_cat(ch__3, a__2, i__5, &c__2, (ftnlen)10); -#line 14923 "" +#line 14918 "" do_fio(&c__1, ch__3, (ftnlen)10); -#line 14923 "" +#line 14918 "" e_wsfe(); -#line 14924 "" +#line 14919 "" } else if (*(unsigned char *)charq == 'h') { -#line 14925 "" - s_wsfe(&io___869); +#line 14920 "" + s_wsfe(&io___865); /* Writing concatenation */ -#line 14925 "" +#line 14920 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14925 "" +#line 14920 "" i__5[1] = 8, a__2[1] = "halfties"; -#line 14925 "" +#line 14920 "" s_cat(ch__12, a__2, i__5, &c__2, (ftnlen)9); -#line 14925 "" +#line 14920 "" do_fio(&c__1, ch__12, (ftnlen)9); -#line 14925 "" +#line 14920 "" e_wsfe(); -#line 14926 "" +#line 14921 "" } else { -#line 14927 "" +#line 14922 "" comslur_1.slurcurve += 1; -#line 14928 "" +#line 14923 "" if (comslur_1.slurcurve > 3.1f) { -#line 14929 "" +#line 14924 "" printl_("WARNING!", (ftnlen)8); -#line 14930 "" +#line 14925 "" printl_("Default slur curvature advanced past HH"\ ", resetting", (ftnlen)50); -#line 14932 "" +#line 14927 "" comslur_1.slurcurve = 3.f; -#line 14933 "" +#line 14928 "" } -#line 14934 "" +#line 14929 "" } -#line 14935 "" +#line 14930 "" } else { -#line 14936 "" +#line 14931 "" if (*(unsigned char *)charq == 's') { -#line 14937 "" - s_wsfe(&io___870); +#line 14932 "" + s_wsfe(&io___866); /* Writing concatenation */ -#line 14937 "" +#line 14932 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14937 "" +#line 14932 "" i__5[1] = 12, a__2[1] = "Nosluradjust"; -#line 14937 "" +#line 14932 "" s_cat(ch__4, a__2, i__5, &c__2, (ftnlen)13); -#line 14937 "" +#line 14932 "" do_fio(&c__1, ch__4, (ftnlen)13); -#line 14937 "" +#line 14932 "" e_wsfe(); -#line 14938 "" +#line 14933 "" } else if (*(unsigned char *)charq == 't') { -#line 14939 "" - s_wsfe(&io___871); +#line 14934 "" + s_wsfe(&io___867); /* Writing concatenation */ -#line 14939 "" +#line 14934 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14939 "" +#line 14934 "" i__5[1] = 11, a__2[1] = "Notieadjust"; -#line 14939 "" +#line 14934 "" s_cat(ch__2, a__2, i__5, &c__2, (ftnlen)12); -#line 14939 "" +#line 14934 "" do_fio(&c__1, ch__2, (ftnlen)12); -#line 14939 "" +#line 14934 "" e_wsfe(); -#line 14940 "" +#line 14935 "" } else if (*(unsigned char *)charq == 'h') { -#line 14941 "" - s_wsfe(&io___872); +#line 14936 "" + s_wsfe(&io___868); /* Writing concatenation */ -#line 14941 "" +#line 14936 "" i__5[0] = 1, a__2[0] = all_1.sq; -#line 14941 "" +#line 14936 "" i__5[1] = 10, a__2[1] = "nohalfties"; -#line 14941 "" +#line 14936 "" s_cat(ch__10, a__2, i__5, &c__2, (ftnlen)11); -#line 14941 "" +#line 14936 "" do_fio(&c__1, ch__10, (ftnlen)11); -#line 14941 "" +#line 14936 "" e_wsfe(); -#line 14942 "" +#line 14937 "" } else { -#line 14943 "" +#line 14938 "" comslur_1.slurcurve += -1; -#line 14944 "" +#line 14939 "" if (comslur_1.slurcurve < -1.1f) { -#line 14945 "" +#line 14940 "" printl_("WARNING!", (ftnlen)8); -#line 14946 "" +#line 14941 "" printl_("Default slur curvature decremented belo"\ "w f, resetting", (ftnlen)53); -#line 14948 "" +#line 14943 "" comslur_1.slurcurve = -1.f; -#line 14949 "" +#line 14944 "" } -#line 14950 "" +#line 14945 "" } -#line 14951 "" +#line 14946 "" } -#line 14952 "" +#line 14947 "" goto L52; /* Check for another set of default changes */ -#line 14953 "" +#line 14948 "" } else if (*(unsigned char *)durq == 'l') { /* Set optional linebreak ties */ -#line 14957 "" +#line 14952 "" comnotes_1.optlinebreakties = TRUE_; -#line 14958 "" +#line 14953 "" goto L52; -#line 14959 "" +#line 14954 "" } else if (*(unsigned char *)durq == 'h') { /* Set flag to write header special on every page */ -#line 14963 "" +#line 14958 "" comnotes_1.headerspecial = TRUE_; -#line 14964 "" +#line 14959 "" goto L52; -#line 14965 "" +#line 14960 "" } else { -#line 14966 "" +#line 14961 "" --all_1.iccount; -#line 14967 "" +#line 14962 "" } -#line 14968 "" +#line 14963 "" } else if (*(unsigned char *)durq == 'K') { /* Toggle keyboard rest placement flag */ -#line 14972 "" +#line 14967 "" comkbdrests_1.kbdrests = ! comkbdrests_1.kbdrests; -#line 14973 "" +#line 14968 "" } else if (*(unsigned char *)durq == 'c') { -#line 14974 "" +#line 14969 "" g1etchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); /* Just eat the input; it was used in pmxa */ -#line 14978 "" +#line 14973 "" goto L27; -#line 14979 "" +#line 14974 "" } else if (*(unsigned char *)durq == 'V') { -#line 14980 "" +#line 14975 "" combottop_1.bottopgap = TRUE_; -#line 14981 "" +#line 14976 "" combottop_1.topamt = 0.f; -#line 14982 "" +#line 14977 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14983 "" +#line 14978 "" pmfac = (real) (i_indx("- +", durq, (ftnlen)3, (ftnlen)1) - 2); -#line 14984 "" +#line 14979 "" g1etchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14985 "" +#line 14980 "" readnum_(lineq, &all_1.iccount, durq, &combottop_1.botamt, ( ftnlen)128, (ftnlen)1); -#line 14986 "" +#line 14981 "" combottop_1.botamt *= pmfac; -#line 14987 "" +#line 14982 "" pmfac = (real) (i_indx("- +", durq, (ftnlen)3, (ftnlen)1) - 2); -#line 14988 "" +#line 14983 "" g1etchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 14989 "" +#line 14984 "" readnum_(lineq, &all_1.iccount, durq, &combottop_1.topamt, ( ftnlen)128, (ftnlen)1); -#line 14990 "" +#line 14985 "" combottop_1.topamt *= pmfac; -#line 14991 "" +#line 14986 "" --all_1.iccount; -#line 14992 "" +#line 14987 "" goto L27; -#line 14993 "" +#line 14988 "" } -#line 14994 "" +#line 14989 "" if (i_indx("NR", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Override default part names for scor2prt, or normal include file. */ /* Just bypass rest of input line */ -#line 14999 "" +#line 14994 "" all_1.iccount = 128; -#line 15000 "" +#line 14995 "" } else if (*(unsigned char *)durq != ' ') { -#line 15001 "" +#line 14996 "" goto L27; -#line 15002 "" +#line 14997 "" } -#line 15003 "" +#line 14998 "" } else if (*(unsigned char *)charq == 'K') { -#line 15004 "" +#line 14999 "" L77: -#line 15005 "" +#line 15000 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15006 "" +#line 15001 "" if (*(unsigned char *)durq == 'n') { -#line 15007 "" +#line 15002 "" comignorenats_1.ignorenats = TRUE_; -#line 15008 "" +#line 15003 "" goto L77; -#line 15009 "" +#line 15004 "" } -#line 15010 "" +#line 15005 "" if (*(unsigned char *)durq != 'i') { /* Normal, full-score key change and/or transposition */ -#line 15014 "" +#line 15009 "" num1 = 44 - *(unsigned char *)durq; -#line 15015 "" +#line 15010 "" ++all_1.iccount; -#line 15016 "" +#line 15011 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, (ftnlen) 1); -#line 15017 "" +#line 15012 "" num1 *= i_nint(&fnum); /* On exit, durq='+','-'. But only need isig if after start, else done in pmxa */ -#line 15021 "" +#line 15016 "" ++all_1.iccount; -#line 15022 "" +#line 15017 "" readnum_(lineq, &all_1.iccount, charq, &fnum, (ftnlen)128, ( ftnlen)1); -#line 15023 "" +#line 15018 "" if (commidi_1.ismidi) { -#line 15024 "" +#line 15019 "" commidisig_1.midisig = i_nint(&fnum); -#line 15025 "" +#line 15020 "" if (*(unsigned char *)durq == '-') { -#line 15025 "" +#line 15020 "" commidisig_1.midisig = -commidisig_1.midisig; -#line 15025 "" +#line 15020 "" } /* 130317 */ -#line 15027 "" +#line 15022 "" commidisig_1.midisig += comtop_1.idsig; -#line 15028 "" +#line 15023 "" midievent_("k", &commidisig_1.midisig, &c__0, (ftnlen)1); -#line 15030 "" +#line 15025 "" } /* 70 continue */ -#line 15032 "" +#line 15027 "" if (num1 == 0) { /* Key change, not transposition. */ -#line 15036 "" +#line 15031 "" all_1.ipl[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25] = bit_set(all_1.ipl[commvl_1.ivx + ( all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25],28); -#line 15037 "" +#line 15032 "" comtop_1.lastisig = comtop_1.isig; -#line 15038 "" +#line 15033 "" comtop_1.isig = i_nint(&fnum); -#line 15039 "" +#line 15034 "" if (*(unsigned char *)durq == '-') { -#line 15039 "" +#line 15034 "" comtop_1.isig = -comtop_1.isig; -#line 15039 "" +#line 15034 "" } -#line 15040 "" +#line 15035 "" comtop_1.isig += comtop_1.idsig; -#line 15041 "" +#line 15036 "" if (commidi_1.ismidi) { -#line 15041 "" +#line 15036 "" midievent_("k", &comtop_1.isig, &c__0, (ftnlen)1); -#line 15041 "" +#line 15036 "" } -#line 15042 "" +#line 15037 "" } else { /* num1 .ne. 0, so transposition, so must be at beginning. isig came with K... */ /* but was passed to pmxb through pmxtex.dat. isig0 comes from setup data */ /* (signature before transposition). idsig must be added to future key changes. */ -#line 15048 "" +#line 15043 "" jv = 0; -#line 15049 "" +#line 15044 "" while(jv < 24) { -#line 15050 "" +#line 15045 "" ++jv; -#line 15051 "" +#line 15046 "" cominsttrans_1.itransamt[jv - 1] = num1; -#line 15052 "" +#line 15047 "" } -#line 15053 "" +#line 15048 "" comtop_1.idsig = comtop_1.isig - comtop_1.isig0; -#line 15054 "" +#line 15049 "" } -#line 15055 "" +#line 15050 "" } else { /* Instrument specific transposition. */ -#line 15059 "" +#line 15054 "" getitransinfo_(&c_false, &combibarcnt_1.ibarcnt, lineq, & all_1.iccount, &ibaroff, &all_1.nbars, &comkeys_2.noinst, (ftnlen)128); /* The sig parameters will have been set 1st time but that's OK */ -#line 15064 "" +#line 15059 "" } -#line 15065 "" +#line 15060 "" } else if (*(unsigned char *)charq == '/') { -#line 15066 "" +#line 15061 "" if (bit_test(all_1.iornq[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 1],26)) { /* There was a hardspace followed by end of block. Remove it from the hardspace */ /* list, store with shifts instead, set special bit. This code also at '|' */ -#line 15071 "" +#line 15066 "" all_1.irest[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = bit_set(all_1.irest[commvl_1.ivx + all_1.nnl[ commvl_1.ivx - 1] * 24 - 25],18); -#line 15072 "" +#line 15067 "" ++comudsp_1.nudoff[commvl_1.ivx - 1]; -#line 15073 "" +#line 15068 "" comudsp_1.udoff[commvl_1.ivx + comudsp_1.nudoff[commvl_1.ivx - 1] * 24 - 25] = comudsp_1.udsp[comudsp_1.nudsp - 1]; -#line 15074 "" +#line 15069 "" --comudsp_1.nudsp; -#line 15075 "" +#line 15070 "" all_1.iornq[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 1] = bit_clear(all_1.iornq[commvl_1.ivx + (all_1.nnl[ commvl_1.ivx - 1] + 1) * 24 - 1],26); -#line 15076 "" +#line 15071 "" } -#line 15077 "" +#line 15072 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); /* Save ending note level: */ -#line 15081 "" +#line 15076 "" if (commvl_1.ivx <= all_1.nv) { /* This is the first line of music on this staff. If previous block had only 1 */ /* voice, save last pitch from line 1 of prev. block to line 2, in case a */ /* 2nd line is started just below */ -#line 15087 "" +#line 15082 "" if (! comnotes_1.was2[all_1.iv - 1]) { -#line 15087 "" +#line 15082 "" comnotes_1.ndlev[all_1.iv + 23] = comnotes_1.ndlev[all_1.iv - 1]; -#line 15087 "" +#line 15082 "" } -#line 15088 "" +#line 15083 "" comnotes_1.was2[all_1.iv - 1] = FALSE_; -#line 15089 "" +#line 15084 "" comnotes_1.ndlev[all_1.iv - 1] = comnotes_1.lastlev; -#line 15090 "" +#line 15085 "" } else { /* This is the 2nd line of music on this staff. */ -#line 15094 "" +#line 15089 "" comnotes_1.was2[all_1.iv - 1] = TRUE_; -#line 15095 "" +#line 15090 "" comnotes_1.ndlev[all_1.iv + 23] = comnotes_1.lastlev; -#line 15096 "" +#line 15091 "" } -#line 15097 "" +#line 15092 "" if (*(unsigned char *)durq == ' ' && all_1.iv == all_1.nv) { /* End of input block */ -#line 15101 "" +#line 15096 "" *loop = FALSE_; -#line 15102 "" +#line 15097 "" } else { /* Start a new line of music */ -#line 15106 "" +#line 15101 "" if (all_1.lenb0 != 0 && all_1.firstgulp) { -#line 15106 "" +#line 15101 "" all_1.lenbar = all_1.lenb0; -#line 15106 "" +#line 15101 "" } -#line 15107 "" +#line 15102 "" all_1.nbars = 0; -#line 15108 "" +#line 15103 "" if (*(unsigned char *)durq == ' ') { /* New line of music is on next staff */ -#line 15112 "" +#line 15107 "" ++all_1.iv; -#line 15113 "" +#line 15108 "" commvl_1.ivx = all_1.iv; -#line 15114 "" +#line 15109 "" } else { /* durq must be 2nd '/'. New line of music is on same staff. Set up for it */ -#line 15118 "" +#line 15113 "" commvl_1.ivx = all_1.nv + 1; -#line 15119 "" +#line 15114 "" i__1 = all_1.nv; -#line 15119 "" +#line 15114 "" for (iiv = 1; iiv <= i__1; ++iiv) { -#line 15120 "" +#line 15115 "" if (commvl_1.nvmx[iiv - 1] == 2) { -#line 15120 "" +#line 15115 "" ++commvl_1.ivx; -#line 15120 "" +#line 15115 "" } -#line 15121 "" +#line 15116 "" /* L23: */ -#line 15121 "" +#line 15116 "" } -#line 15122 "" +#line 15117 "" commvl_1.nvmx[all_1.iv - 1] = 2; -#line 15123 "" +#line 15118 "" commvl_1.ivmx[all_1.iv + 23] = commvl_1.ivx; -#line 15124 "" +#line 15119 "" all_1.itsofar[commvl_1.ivx - 1] = 0; -#line 15125 "" +#line 15120 "" all_1.nnl[commvl_1.ivx - 1] = 0; -#line 15126 "" +#line 15121 "" comfb_1.nfb[commvl_1.ivx - 1] = 0; -#line 15127 "" +#line 15122 "" comudsp_1.nudoff[commvl_1.ivx - 1] = 0; -#line 15128 "" +#line 15123 "" comcc_1.ndotmv[commvl_1.ivx - 1] = 0; -#line 15129 "" +#line 15124 "" for (j = 1; j <= 200; ++j) { -#line 15130 "" +#line 15125 "" all_1.irest[commvl_1.ivx + j * 24 - 25] = 0; -#line 15131 "" +#line 15126 "" all_1.islur[commvl_1.ivx + j * 24 - 25] = 0; -#line 15132 "" +#line 15127 "" all_1.nacc[commvl_1.ivx + j * 24 - 25] = 0; -#line 15133 "" +#line 15128 "" all_1.iornq[commvl_1.ivx + j * 24 - 1] = 0; -#line 15134 "" +#line 15129 "" all_1.ipl[commvl_1.ivx + j * 24 - 25] = 0; -#line 15135 "" +#line 15130 "" all_1.mult[commvl_1.ivx + j * 24 - 25] = 0; -#line 15136 "" +#line 15131 "" /* L24: */ -#line 15136 "" +#line 15131 "" } /* Go back and lower the rests in voice "a" that don't have over-ridden heights */ -#line 15140 "" +#line 15135 "" i__1 = all_1.nnl[all_1.iv - 1]; -#line 15140 "" +#line 15135 "" for (j = 1; j <= i__1; ++j) { -#line 15141 "" +#line 15136 "" if (bit_test(all_1.irest[all_1.iv + j * 24 - 25],0) && all_1.nolev[all_1.iv + j * 24 - 25] == 0) { -#line 15141 "" +#line 15136 "" all_1.nolev[all_1.iv + j * 24 - 25] = -4; -#line 15141 "" +#line 15136 "" } -#line 15143 "" +#line 15138 "" /* L26: */ -#line 15143 "" +#line 15138 "" } -#line 15144 "" +#line 15139 "" } -#line 15145 "" +#line 15140 "" } -#line 15146 "" +#line 15141 "" all_1.iccount = 128; -#line 15147 "" +#line 15142 "" } else if (*(unsigned char *)charq == 'X') { /* 3rd arg is only for termination of group shifts. Use "max" to avoid zero index, */ @@ -35939,9 +35883,9 @@ L77: /* keep group shifts for crossing block boundaries. */ /* Computing MAX */ -#line 15153 "" +#line 15148 "" i__1 = 1, i__2 = all_1.nnl[commvl_1.ivx - 1]; -#line 15153 "" +#line 15148 "" getx_(lineq, &all_1.iccount, &all_1.irest[commvl_1.ivx + max(i__1, i__2) * 24 - 25], &comnotes_1.shifton, &comask_1.wheadpt, & all_1.iornq[commvl_1.ivx + (all_1.nnl[commvl_1.ivx - 1] + 1) * @@ -35949,146 +35893,139 @@ L77: all_1.nnl[commvl_1.ivx - 1] + 1) * 24 - 25], &all_1.itsofar[ commvl_1.ivx - 1], &c__0, &c__0, &c__0, " ", &ndoub, (ftnlen) 128, (ftnlen)1); -#line 15156 "" +#line 15151 "" } else if (*(unsigned char *)charq == 'I') { /* Midi controls. */ -#line 15160 "" - s_wsle(&io___878); -#line 15160 "" - do_lio(&c__9, &c__1, "#14928 Calling getmidi from getnote", (ftnlen) - 35); -#line 15160 "" - e_wsle(); -#line 15161 "" +#line 15155 "" getmidi_(&comkeys_2.noinst, lineq, &all_1.iccount, & combibarcnt_1.ibarcnt, &ibaroff, &all_1.nbars, &all_1.lenbar, &all_1.mtrdenl, &all_1.nv, &c_false, (ftnlen)128); -#line 15163 "" +#line 15157 "" } else if (*(unsigned char *)charq == 'M') { /* Macro action */ -#line 15167 "" +#line 15161 "" getchar_(lineq, &all_1.iccount, charq, (ftnlen)128, (ftnlen)1); -#line 15168 "" +#line 15162 "" if (i_indx("RS", charq, (ftnlen)2, (ftnlen)1) > 0) { /* Record or save a macro. Get the number of the macro. */ -#line 15172 "" +#line 15166 "" getchar_(lineq, &all_1.iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15173 "" +#line 15167 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, (ftnlen) 1); -#line 15174 "" +#line 15168 "" commac_1.macnum = i_nint(&fnum); -#line 15175 "" +#line 15169 "" commac_1.macuse = bit_set(commac_1.macuse,commac_1.macnum); -#line 15176 "" +#line 15170 "" if (*(unsigned char *)charq == 'R') { -#line 15177 "" +#line 15171 "" mrec1_(lineq, &all_1.iccount, &ndxm, (ftnlen)128); -#line 15178 "" +#line 15172 "" } else { /* Save (Record but don't activate) */ -#line 15182 "" +#line 15176 "" L5: -#line 15182 "" +#line 15176 "" mrec1_(lineq, &all_1.iccount, &ndxm, (ftnlen)128); -#line 15183 "" +#line 15177 "" if (commac_1.mrecord) { -#line 15184 "" +#line 15178 "" getbuf_(lineq, (ftnlen)128); -#line 15185 "" +#line 15179 "" all_1.iccount = 0; -#line 15186 "" +#line 15180 "" goto L5; -#line 15187 "" +#line 15181 "" } -#line 15188 "" +#line 15182 "" all_1.iccount = all_1.iccount + ndxm + 1; -#line 15189 "" +#line 15183 "" } -#line 15190 "" +#line 15184 "" } else if (*(unsigned char *)charq == 'P') { /* Playback the macro */ -#line 15194 "" +#line 15188 "" getchar_(lineq, &all_1.iccount, charq, (ftnlen)128, (ftnlen)1); -#line 15195 "" +#line 15189 "" readnum_(lineq, &all_1.iccount, durq, &fnum, (ftnlen)128, (ftnlen) 1); -#line 15196 "" +#line 15190 "" commac_1.macnum = i_nint(&fnum); -#line 15197 "" +#line 15191 "" commac_1.icchold = all_1.iccount; -#line 15198 "" +#line 15192 "" s_copy(commac_1.lnholdq, lineq, (ftnlen)128, (ftnlen)128); -#line 15199 "" +#line 15193 "" all_1.iccount = 128; -#line 15200 "" +#line 15194 "" c1ommac_1.ilmac = c1ommac_1.il1mac[commac_1.macnum - 1]; -#line 15201 "" +#line 15195 "" commac_1.mplay = TRUE_; -#line 15202 "" +#line 15196 "" } -#line 15203 "" +#line 15197 "" } else if (i_indx(",.", charq, (ftnlen)2, (ftnlen)1) > 0) { /* Continued rhythmic shortcut */ -#line 15207 "" +#line 15201 "" idotform = i_indx(". ,", charq, (ftnlen)3, (ftnlen)1); -#line 15208 "" +#line 15202 "" if (idotform == 1) { /* Check for start of forced beam on 2nd member of dotform=1 shortcut */ -#line 15212 "" +#line 15206 "" if (comget_1.fbon) { -#line 15213 "" +#line 15207 "" if (comfb_1.t1fb[commvl_1.ivx + comfb_1.nfb[commvl_1.ivx - 1] * 24 - 25] == (real) all_1.itsofar[commvl_1.ivx - 1]) { -#line 15213 "" +#line 15207 "" comfb_1.t1fb[commvl_1.ivx + comfb_1.nfb[commvl_1.ivx - 1] * 24 - 25] += all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] / 2; -#line 15213 "" +#line 15207 "" } -#line 15216 "" +#line 15210 "" } /* Change duration of prior note */ -#line 15220 "" +#line 15214 "" all_1.itsofar[commvl_1.ivx - 1] -= all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25]; -#line 15221 "" +#line 15215 "" all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] = all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25] * 3 / 2; -#line 15222 "" +#line 15216 "" all_1.itsofar[commvl_1.ivx - 1] += all_1.nodur[commvl_1.ivx + all_1.nnl[commvl_1.ivx - 1] * 24 - 25]; -#line 15223 "" +#line 15217 "" } -#line 15224 "" +#line 15218 "" ++idotform; -#line 15225 "" +#line 15219 "" numnum = 1; -#line 15226 "" +#line 15220 "" cdot = TRUE_; -#line 15227 "" +#line 15221 "" goto L1; -#line 15228 "" +#line 15222 "" } -#line 15229 "" +#line 15223 "" return 0; } /* getnote_ */ @@ -36123,7 +36060,7 @@ L5: static real xofforn; /* Fortran I/O blocks */ - static cilist io___886 = { 0, 6, 0, 0, 0 }; + static cilist io___881 = { 0, 6, 0, 0, 0 }; @@ -36137,9 +36074,9 @@ L5: /* Bits 0-13: (stmgx+Tupf._), 14: Down fermata, was F, 15: Trill w/o "tr", was U */ /* 16-18 Editorial sharp, flat, natural "oes,f,n"; 19-20: >^, 21 ? for ed. accid. */ -#line 15253 "" +#line 15247 "" getchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); -#line 15254 "" +#line 15248 "" if (i_indx("bc", charq, (ftnlen)2, (ftnlen)1) > 0) { /* caesura or breath, handle specially and exit. Set up data in ibcdata(1...nbc) */ @@ -36149,117 +36086,117 @@ L5: /* bit 27 = 0 if caesura, 1 if breath */ /* bit 28: 5th bit of ivx */ -#line 15263 "" +#line 15257 "" *iornq = bit_set(*iornq,28); -#line 15264 "" +#line 15258 "" ++comcb_1.nbc; /* ibcdata(nbc) = ivx+16*ip */ -#line 15266 "" +#line 15260 "" comcb_1.ibcdata[comcb_1.nbc - 1] = *ivx % 16 + (*ip << 4); -#line 15267 "" +#line 15261 "" if (*ivx >= 16) { -#line 15267 "" +#line 15261 "" comcb_1.ibcdata[comcb_1.nbc - 1] = bit_set(comcb_1.ibcdata[ comcb_1.nbc - 1],28); -#line 15267 "" +#line 15261 "" } -#line 15268 "" +#line 15262 "" if (*(unsigned char *)charq == 'b') { -#line 15268 "" +#line 15262 "" comcb_1.ibcdata[comcb_1.nbc - 1] = bit_set(comcb_1.ibcdata[ comcb_1.nbc - 1],27); -#line 15268 "" +#line 15262 "" } -#line 15269 "" +#line 15263 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15270 "" +#line 15264 "" if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { /* We have a vertical shift, get it */ -#line 15274 "" +#line 15268 "" ++(*iccount); -#line 15275 "" +#line 15269 "" readnum_(lineq, iccount, charq, &fnum, (ftnlen)128, (ftnlen)1); -#line 15276 "" +#line 15270 "" if (*(unsigned char *)durq == '-') { -#line 15276 "" +#line 15270 "" fnum = -fnum; -#line 15276 "" +#line 15270 "" } -#line 15277 "" +#line 15271 "" r__1 = fnum + 32; -#line 15277 "" +#line 15271 "" i__1 = i_nint(&r__1); -#line 15277 "" +#line 15271 "" setbits_(&comcb_1.ibcdata[comcb_1.nbc - 1], &c__6, &c__13, &i__1); -#line 15278 "" +#line 15272 "" if (i_indx("+-", charq, (ftnlen)2, (ftnlen)1) > 0) { /* Horizontal shift, get it */ -#line 15282 "" +#line 15276 "" ++(*iccount); -#line 15283 "" +#line 15277 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 15284 "" +#line 15278 "" if (*(unsigned char *)charq == '-') { -#line 15284 "" +#line 15278 "" fnum = -fnum; -#line 15284 "" +#line 15278 "" } -#line 15285 "" +#line 15279 "" r__1 = fnum * 10; -#line 15285 "" +#line 15279 "" i__1 = i_nint(&r__1) + 128; -#line 15285 "" +#line 15279 "" setbits_(&comcb_1.ibcdata[comcb_1.nbc - 1], &c__8, &c__19, & i__1); -#line 15286 "" +#line 15280 "" } -#line 15287 "" +#line 15281 "" } -#line 15288 "" +#line 15282 "" return 0; -#line 15289 "" +#line 15283 "" } /* Set signal on main note that some note at this time has ornament. ONLY used */ /* in beamstrt to activate further tests for whether ihornb is needed. */ -#line 15294 "" +#line 15288 "" *iornq = bit_set(*iornq,23); /* Isolate 21 bits defining exisiting ornaments */ -#line 15298 "" +#line 15292 "" if (*notcrd) { /* iorni = iand(4194303,iornq) */ /* iorni = iand(541065215,iornq) */ -#line 15301 "" +#line 15295 "" iorni = 1614807039 & *iornq; -#line 15302 "" +#line 15296 "" } else { -#line 15303 "" +#line 15297 "" iorni = 4194303 & comtrill_1.icrdorn[comtrill_1.ncrd - 1]; -#line 15304 "" +#line 15298 "" } /* korn = index('stmgx+Tupf._)e:XXX>^',charq) */ -#line 15306 "" +#line 15300 "" korn = i_indx("stmgx+Tupf._)e:XXX>^XXXXXXXXCG", charq, (ftnlen)30, ( ftnlen)1); -#line 15307 "" +#line 15301 "" if (korn != 15) { -#line 15307 "" +#line 15301 "" iorni = bit_set(iorni,korn); -#line 15307 "" +#line 15301 "" } /* Note that korn=0 => charq='(', and we set bit 0. if "e" (14), alter later */ /* as follows: korn=16-18 for sfn, and or 21 for bare ?. */ /* When this if-block is done, korn will = bit# of actual ornament (unless "?"). */ -#line 15313 "" +#line 15307 "" if (korn == 15) { /* c Turn off repeated ornament ('o:'), Replicate bits 0-3,5-15,19-20 prev iornq */ @@ -36269,236 +36206,236 @@ L5: /* iorni = ior(iorni,iand(iornq0,1638383)) */ /* iorni = ior(iorni,iand(iornq0,3735535)) */ /* iorni = ior(iorni,iand(iornq0,540606447)) */ -#line 15322 "" +#line 15316 "" iorni |= *iornq0 & 1614348271; -#line 15323 "" +#line 15317 "" *ornrpt = FALSE_; -#line 15324 "" +#line 15318 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); /* durq will be ' ' */ -#line 15328 "" +#line 15322 "" } else if (korn == 14) { /* Editorial accidental */ -#line 15332 "" +#line 15326 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); /* korn = 15+index('sfn',durq) */ -#line 15334 "" +#line 15328 "" korn = i_indx("sfn?", durq, (ftnlen)4, (ftnlen)1) + 15; -#line 15335 "" +#line 15329 "" if (korn == 19) { -#line 15335 "" +#line 15329 "" korn = 21; -#line 15335 "" +#line 15329 "" } -#line 15336 "" +#line 15330 "" iorni = bit_set(bit_clear(iorni,14),korn); -#line 15337 "" +#line 15331 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15338 "" +#line 15332 "" if (*(unsigned char *)durq == '?') { /* This is "oe[s|f|n]?". Set 21st bit also. */ -#line 15342 "" +#line 15336 "" iorni = bit_set(iorni,21); -#line 15343 "" +#line 15337 "" korn += 6; -#line 15344 "" +#line 15338 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15345 "" +#line 15339 "" } /* iorni = ibset(ibclr(iorni,14),korn) */ -#line 15347 "" +#line 15341 "" } else if (korn == 4 && *noxtup) { /* segno. Check in pmxa for just 1/block & notcrd. Get horiz. offset in points */ -#line 15351 "" +#line 15345 "" *noffseg = 0; -#line 15352 "" +#line 15346 "" negseg = FALSE_; -#line 15353 "" +#line 15347 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15354 "" +#line 15348 "" if (*(unsigned char *)durq != ' ') { /* Segno shift is specified */ -#line 15358 "" +#line 15352 "" if (*(unsigned char *)durq == '-') { -#line 15359 "" +#line 15353 "" negseg = TRUE_; -#line 15360 "" +#line 15354 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15361 "" +#line 15355 "" } -#line 15362 "" +#line 15356 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 15363 "" +#line 15357 "" *noffseg = (integer) fnum; -#line 15364 "" +#line 15358 "" if (negseg) { -#line 15364 "" +#line 15358 "" *noffseg = -(*noffseg); -#line 15364 "" +#line 15358 "" } -#line 15365 "" +#line 15359 "" } -#line 15366 "" +#line 15360 "" } else if (korn == 7) { /* Trill. Check in pmxa for notcrd. Default is 1 noteskip long, with "tr" */ -#line 15370 "" +#line 15364 "" ++comtrill_1.ntrill; -#line 15371 "" +#line 15365 "" comtrill_1.ivtrill[comtrill_1.ntrill - 1] = *ivx; -#line 15372 "" +#line 15366 "" comtrill_1.iptrill[comtrill_1.ntrill - 1] = *ip; -#line 15373 "" +#line 15367 "" comtrill_1.xnsktr[comtrill_1.ntrill - 1] = 1.f; -#line 15374 "" +#line 15368 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15375 "" +#line 15369 "" if (*(unsigned char *)durq == 't') { /* Convert to new internal symbol for non-'"tr" trill */ -#line 15379 "" +#line 15373 "" korn = 15; -#line 15380 "" +#line 15374 "" iorni = bit_set(bit_clear(iorni,7),15); -#line 15381 "" +#line 15375 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15382 "" +#line 15376 "" } -#line 15383 "" +#line 15377 "" if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) > 0) { /* We have a number for the length */ -#line 15387 "" +#line 15381 "" readnum_(lineq, iccount, durq, &comtrill_1.xnsktr[ comtrill_1.ntrill - 1], (ftnlen)128, (ftnlen)1); -#line 15388 "" +#line 15382 "" } -#line 15389 "" +#line 15383 "" } else if (korn == 10 && *noxtup) { /* Fermata */ -#line 15393 "" +#line 15387 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15394 "" +#line 15388 "" if (*(unsigned char *)durq == 'd') { -#line 15395 "" +#line 15389 "" korn = 14; -#line 15396 "" +#line 15390 "" iorni = bit_set(bit_clear(iorni,10),14); -#line 15397 "" +#line 15391 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15398 "" +#line 15392 "" } -#line 15399 "" +#line 15393 "" } else { -#line 15400 "" +#line 15394 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 15401 "" +#line 15395 "" } -#line 15402 "" +#line 15396 "" if (i_indx("+- :", durq, (ftnlen)4, (ftnlen)1) == 0) { -#line 15403 "" - s_wsle(&io___886); -#line 15403 "" +#line 15397 "" + s_wsle(&io___881); +#line 15397 "" do_lio(&c__9, &c__1, "Unexpected character at end of ornament: ", ( ftnlen)41); -#line 15403 "" +#line 15397 "" do_lio(&c__9, &c__1, durq, (ftnlen)1); -#line 15403 "" +#line 15397 "" e_wsle(); -#line 15404 "" +#line 15398 "" stop1_(); -#line 15405 "" +#line 15399 "" } -#line 15406 "" +#line 15400 "" if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Shift ornament up or down */ -#line 15410 "" +#line 15404 "" ++comtrill_1.nudorn; /* Set bit 25 in iorni as a signal. This may not really be necessary. */ -#line 15414 "" +#line 15408 "" iorni = bit_set(iorni,25); /* Assemble info to put in kudorn(nudorn) Bits 0-7:ip, 8-11:ivx, 12-18:nolev, */ /* 19-24: type of ornament to be shifted, 25-30: shift+32, 31:h-shft present */ -#line 15419 "" +#line 15413 "" xofforn = (real) (44 - *(unsigned char *)durq); -#line 15420 "" +#line 15414 "" ++(*iccount); -#line 15421 "" +#line 15415 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 15422 "" +#line 15416 "" r__1 = xofforn * fnum; -#line 15422 "" +#line 15416 "" iofforn = i_nint(&r__1); -#line 15423 "" +#line 15417 "" comtrill_1.kudorn[comtrill_1.nudorn - 1] = *ip + (*ivx % 16 << 8) + (* nole << 12) + (korn << 19) + (iofforn + 32 << 25); -#line 15425 "" +#line 15419 "" comivxudorn_1.ivxudorn[comtrill_1.nudorn - 1] = *ivx; -#line 15426 "" +#line 15420 "" if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { /* Horizontal shift */ -#line 15430 "" +#line 15424 "" comtrill_1.kudorn[comtrill_1.nudorn - 1] = bit_set( comtrill_1.kudorn[comtrill_1.nudorn - 1],31); -#line 15431 "" +#line 15425 "" xofforn = (real) (44 - *(unsigned char *)durq); -#line 15432 "" +#line 15426 "" ++(*iccount); -#line 15433 "" +#line 15427 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); /* 141226 ornhshft(nudorn) = nint(xofforn*fnum) */ -#line 15435 "" +#line 15429 "" comtrill_1.ornhshft[comtrill_1.nudorn - 1] = xofforn * fnum; -#line 15436 "" +#line 15430 "" } -#line 15437 "" +#line 15431 "" } else if (*(unsigned char *)durq == ':') { /* Turn on repeated ornaments */ -#line 15441 "" +#line 15435 "" *ornrpt = TRUE_; /* Save the ornament value just set */ -#line 15445 "" +#line 15439 "" *iornq0 = iorni; -#line 15446 "" +#line 15440 "" } -#line 15447 "" +#line 15441 "" if (*notcrd) { -#line 15448 "" +#line 15442 "" *iornq |= iorni; -#line 15449 "" +#line 15443 "" } else { -#line 15450 "" +#line 15444 "" comtrill_1.icrdorn[comtrill_1.ncrd - 1] |= iorni; -#line 15451 "" +#line 15445 "" } -#line 15452 "" +#line 15446 "" return 0; } /* getorn_ */ @@ -36534,9 +36471,9 @@ L5: static char lnholdq[128]; /* Fortran I/O blocks */ - static cilist io___892 = { 0, 6, 0, 0, 0 }; - static cilist io___893 = { 0, 15, 0, "()", 0 }; - static cilist io___897 = { 0, 18, 1, "(a)", 0 }; + static cilist io___887 = { 0, 6, 0, 0, 0 }; + static cilist io___888 = { 0, 15, 0, "()", 0 }; + static cilist io___892 = { 0, 18, 1, "(a)", 0 }; @@ -36559,410 +36496,410 @@ L5: /* ipbufmod = points to last character of most recent inserted line */ /* from pmx.mod */ -#line 15486 "" +#line 15480 "" c1omget_1.line1pmxmod = inbuff_1.ilbuf; -#line 15487 "" +#line 15481 "" if (! (*global)) { -#line 15488 "" +#line 15482 "" ioin__1.inerr = 0; -#line 15488 "" +#line 15482 "" ioin__1.infilen = includeq_len; -#line 15488 "" +#line 15482 "" ioin__1.infile = includeq; -#line 15488 "" +#line 15482 "" ioin__1.inex = &fexist; -#line 15488 "" +#line 15482 "" ioin__1.inopen = 0; -#line 15488 "" +#line 15482 "" ioin__1.innum = 0; -#line 15488 "" +#line 15482 "" ioin__1.innamed = 0; -#line 15488 "" +#line 15482 "" ioin__1.inname = 0; -#line 15488 "" +#line 15482 "" ioin__1.inacc = 0; -#line 15488 "" +#line 15482 "" ioin__1.inseq = 0; -#line 15488 "" +#line 15482 "" ioin__1.indir = 0; -#line 15488 "" +#line 15482 "" ioin__1.infmt = 0; -#line 15488 "" +#line 15482 "" ioin__1.inform = 0; -#line 15488 "" +#line 15482 "" ioin__1.inunf = 0; -#line 15488 "" +#line 15482 "" ioin__1.inrecl = 0; -#line 15488 "" +#line 15482 "" ioin__1.innrec = 0; -#line 15488 "" +#line 15482 "" ioin__1.inblank = 0; -#line 15488 "" +#line 15482 "" f_inqu(&ioin__1); /* Transfer includeq to temporary char variable with known length */ -#line 15492 "" +#line 15486 "" s_copy(pmxmoddirq, includeq, (ftnlen)80, includeq_len); -#line 15493 "" +#line 15487 "" lpmxmoddirq = lenstr_(pmxmoddirq, &c__80, (ftnlen)80); -#line 15494 "" - s_wsle(&io___892); -#line 15494 "" +#line 15488 "" + s_wsle(&io___887); +#line 15488 "" e_wsle(); -#line 15495 "" - s_wsfe(&io___893); -#line 15495 "" +#line 15489 "" + s_wsfe(&io___888); +#line 15489 "" e_wsfe(); -#line 15496 "" +#line 15490 "" if (! fexist) { /* Writing concatenation */ -#line 15497 "" +#line 15491 "" i__1[0] = 15, a__1[0] = "Could not find "; -#line 15497 "" +#line 15491 "" i__1[1] = lpmxmoddirq, a__1[1] = pmxmoddirq; -#line 15497 "" +#line 15491 "" i__1[2] = 19, a__1[2] = ", checking further."; -#line 15497 "" +#line 15491 "" s_cat(ch__1, a__1, i__1, &c__3, (ftnlen)114); -#line 15497 "" +#line 15491 "" printl_(ch__1, lpmxmoddirq + 34); /* File named includeq doesn't not exist. Get directory from PMXMODDIR and */ /* see if it's there */ -#line 15503 "" +#line 15497 "" getenv_("PMXMODDIR", pmxmoddirq, (ftnlen)9, (ftnlen)80); -#line 15504 "" +#line 15498 "" lpmxmoddirq = lenstr_(pmxmoddirq, &c__80, (ftnlen)80); -#line 15505 "" +#line 15499 "" if (lpmxmoddirq > 0) { /* Writing concatenation */ -#line 15506 "" +#line 15500 "" i__2[0] = lpmxmoddirq, a__2[0] = pmxmoddirq; -#line 15506 "" +#line 15500 "" i__2[1] = includeq_len, a__2[1] = includeq; -#line 15506 "" +#line 15500 "" s_cat(pmxmoddirq, a__2, i__2, &c__2, (ftnlen)80); -#line 15507 "" +#line 15501 "" lpmxmoddirq = lenstr_(pmxmoddirq, &c__80, (ftnlen)80); -#line 15508 "" +#line 15502 "" } else { -#line 15509 "" +#line 15503 "" printl_("No other directory defined by PMXMODDIR, stopping", ( ftnlen)49); -#line 15511 "" +#line 15505 "" stop1_(); -#line 15512 "" +#line 15506 "" } -#line 15513 "" +#line 15507 "" ioin__1.inerr = 0; -#line 15513 "" +#line 15507 "" ioin__1.infilen = 80; -#line 15513 "" +#line 15507 "" ioin__1.infile = pmxmoddirq; -#line 15513 "" +#line 15507 "" ioin__1.inex = &fexist; -#line 15513 "" +#line 15507 "" ioin__1.inopen = 0; -#line 15513 "" +#line 15507 "" ioin__1.innum = 0; -#line 15513 "" +#line 15507 "" ioin__1.innamed = 0; -#line 15513 "" +#line 15507 "" ioin__1.inname = 0; -#line 15513 "" +#line 15507 "" ioin__1.inacc = 0; -#line 15513 "" +#line 15507 "" ioin__1.inseq = 0; -#line 15513 "" +#line 15507 "" ioin__1.indir = 0; -#line 15513 "" +#line 15507 "" ioin__1.infmt = 0; -#line 15513 "" +#line 15507 "" ioin__1.inform = 0; -#line 15513 "" +#line 15507 "" ioin__1.inunf = 0; -#line 15513 "" +#line 15507 "" ioin__1.inrecl = 0; -#line 15513 "" +#line 15507 "" ioin__1.innrec = 0; -#line 15513 "" +#line 15507 "" ioin__1.inblank = 0; -#line 15513 "" +#line 15507 "" f_inqu(&ioin__1); -#line 15514 "" +#line 15508 "" if (! fexist) { /* Writing concatenation */ -#line 15515 "" +#line 15509 "" i__1[0] = 15, a__1[0] = "Could not find "; -#line 15515 "" +#line 15509 "" i__1[1] = lpmxmoddirq, a__1[1] = pmxmoddirq; -#line 15515 "" +#line 15509 "" i__1[2] = 11, a__1[2] = ", stopping."; -#line 15515 "" +#line 15509 "" s_cat(ch__2, a__1, i__1, &c__3, (ftnlen)106); -#line 15515 "" +#line 15509 "" printl_(ch__2, lpmxmoddirq + 26); -#line 15517 "" +#line 15511 "" stop1_(); -#line 15518 "" +#line 15512 "" } -#line 15519 "" +#line 15513 "" } /* Writing concatenation */ -#line 15520 "" +#line 15514 "" i__2[0] = 28, a__2[0] = "Opening normal include file "; -#line 15520 "" +#line 15514 "" i__2[1] = lpmxmoddirq, a__2[1] = pmxmoddirq; -#line 15520 "" +#line 15514 "" s_cat(ch__3, a__2, i__2, &c__2, (ftnlen)108); -#line 15520 "" +#line 15514 "" printl_(ch__3, lpmxmoddirq + 28); -#line 15522 "" +#line 15516 "" o__1.oerr = 0; -#line 15522 "" +#line 15516 "" o__1.ounit = 18; -#line 15522 "" +#line 15516 "" o__1.ofnmlen = 80; -#line 15522 "" +#line 15516 "" o__1.ofnm = pmxmoddirq; -#line 15522 "" +#line 15516 "" o__1.orl = 0; -#line 15522 "" +#line 15516 "" o__1.osta = 0; -#line 15522 "" +#line 15516 "" o__1.oacc = 0; -#line 15522 "" +#line 15516 "" o__1.ofm = 0; -#line 15522 "" +#line 15516 "" o__1.oblnk = 0; -#line 15522 "" +#line 15516 "" f_open(&o__1); -#line 15523 "" +#line 15517 "" } else { /* Check for existence of pmx.mod */ -#line 15527 "" +#line 15521 "" getenv_("PMXMODDIR", pmxmoddirq, (ftnlen)9, (ftnlen)80); -#line 15528 "" +#line 15522 "" lpmxmoddirq = lenstr_(pmxmoddirq, &c__80, (ftnlen)80); -#line 15529 "" +#line 15523 "" if (lpmxmoddirq == 0) { -#line 15529 "" +#line 15523 "" return 0; -#line 15529 "" +#line 15523 "" } /* Writing concatenation */ -#line 15530 "" +#line 15524 "" i__2[0] = lpmxmoddirq, a__2[0] = pmxmoddirq; -#line 15530 "" +#line 15524 "" i__2[1] = 7, a__2[1] = "pmx.mod"; -#line 15530 "" +#line 15524 "" s_cat(pmxmoddirq, a__2, i__2, &c__2, (ftnlen)80); -#line 15531 "" +#line 15525 "" lpmxmoddirq += 7; -#line 15532 "" +#line 15526 "" ioin__1.inerr = 0; -#line 15532 "" +#line 15526 "" ioin__1.infilen = 80; -#line 15532 "" +#line 15526 "" ioin__1.infile = pmxmoddirq; -#line 15532 "" +#line 15526 "" ioin__1.inex = &fexist; -#line 15532 "" +#line 15526 "" ioin__1.inopen = 0; -#line 15532 "" +#line 15526 "" ioin__1.innum = 0; -#line 15532 "" +#line 15526 "" ioin__1.innamed = 0; -#line 15532 "" +#line 15526 "" ioin__1.inname = 0; -#line 15532 "" +#line 15526 "" ioin__1.inacc = 0; -#line 15532 "" +#line 15526 "" ioin__1.inseq = 0; -#line 15532 "" +#line 15526 "" ioin__1.indir = 0; -#line 15532 "" +#line 15526 "" ioin__1.infmt = 0; -#line 15532 "" +#line 15526 "" ioin__1.inform = 0; -#line 15532 "" +#line 15526 "" ioin__1.inunf = 0; -#line 15532 "" +#line 15526 "" ioin__1.inrecl = 0; -#line 15532 "" +#line 15526 "" ioin__1.innrec = 0; -#line 15532 "" +#line 15526 "" ioin__1.inblank = 0; -#line 15532 "" +#line 15526 "" f_inqu(&ioin__1); -#line 15533 "" +#line 15527 "" if (! fexist) { -#line 15533 "" +#line 15527 "" return 0; -#line 15533 "" +#line 15527 "" } /* Writing concatenation */ -#line 15534 "" +#line 15528 "" i__2[0] = 28, a__2[0] = "Opening global include file "; -#line 15534 "" +#line 15528 "" i__2[1] = lpmxmoddirq, a__2[1] = pmxmoddirq; -#line 15534 "" +#line 15528 "" s_cat(ch__3, a__2, i__2, &c__2, (ftnlen)108); -#line 15534 "" +#line 15528 "" printl_(ch__3, lpmxmoddirq + 28); -#line 15536 "" +#line 15530 "" o__1.oerr = 0; -#line 15536 "" +#line 15530 "" o__1.ounit = 18; -#line 15536 "" +#line 15530 "" o__1.ofnmlen = lpmxmoddirq; -#line 15536 "" +#line 15530 "" o__1.ofnm = pmxmoddirq; -#line 15536 "" +#line 15530 "" o__1.orl = 0; -#line 15536 "" +#line 15530 "" o__1.osta = 0; -#line 15536 "" +#line 15530 "" o__1.oacc = 0; -#line 15536 "" +#line 15530 "" o__1.ofm = 0; -#line 15536 "" +#line 15530 "" o__1.oblnk = 0; -#line 15536 "" +#line 15530 "" f_open(&o__1); -#line 15537 "" +#line 15531 "" } -#line 15538 "" +#line 15532 "" printl_("Adding include data", (ftnlen)19); /* Read lines in from pmx.mod one at a time */ -#line 15542 "" +#line 15536 "" ipbufmod = inbuff_1.ipbuf; -#line 15543 "" +#line 15537 "" lenbufmod = c1omget_1.lenbuf0; -#line 15544 "" +#line 15538 "" for (ilbufmod = inbuff_1.ilbuf; ilbufmod <= 9600; ++ilbufmod) { -#line 15545 "" - i__3 = s_rsfe(&io___897); -#line 15545 "" +#line 15539 "" + i__3 = s_rsfe(&io___892); +#line 15539 "" if (i__3 != 0) { -#line 15545 "" +#line 15539 "" goto L3; -#line 15545 "" +#line 15539 "" } -#line 15545 "" +#line 15539 "" i__3 = do_fio(&c__1, lnholdq, (ftnlen)128); -#line 15545 "" +#line 15539 "" if (i__3 != 0) { -#line 15545 "" +#line 15539 "" goto L3; -#line 15545 "" +#line 15539 "" } -#line 15545 "" +#line 15539 "" i__3 = e_rsfe(); -#line 15545 "" +#line 15539 "" if (i__3 != 0) { -#line 15545 "" +#line 15539 "" goto L3; -#line 15545 "" +#line 15539 "" } /* A line was read. Slide all existing lengths from here forward ahead by 1 */ -#line 15549 "" +#line 15543 "" i__3 = ilbufmod; -#line 15549 "" +#line 15543 "" for (ilbuff = inbuff_1.nlbuf; ilbuff >= i__3; --ilbuff) { -#line 15550 "" +#line 15544 "" inbuff_1.lbuf[ilbuff] = inbuff_1.lbuf[ilbuff - 1]; -#line 15551 "" +#line 15545 "" /* L2: */ -#line 15551 "" +#line 15545 "" } /* Get length of line from include file */ -#line 15555 "" +#line 15549 "" lenmodline = lenstr_(lnholdq, &c__128, (ftnlen)128); -#line 15556 "" +#line 15550 "" if (lenmodline == 0) { /* Blank line. Make it a single blank with length 1 */ -#line 15560 "" +#line 15554 "" lenmodline = 1; -#line 15561 "" +#line 15555 "" s_copy(lnholdq, " ", (ftnlen)128, (ftnlen)1); -#line 15562 "" +#line 15556 "" } -#line 15563 "" +#line 15557 "" inbuff_1.lbuf[ilbufmod - 1] = (shortint) lenmodline; -#line 15564 "" +#line 15558 "" printl_(lnholdq, lenmodline); /* Insert new stuff into bufq */ -#line 15568 "" +#line 15562 "" i__3 = ipbufmod; /* Writing concatenation */ -#line 15568 "" +#line 15562 "" i__1[0] = ipbufmod, a__1[0] = inbuff_1.bufq; -#line 15568 "" +#line 15562 "" i__1[1] = lenmodline, a__1[1] = lnholdq; -#line 15568 "" +#line 15562 "" i__1[2] = lenbufmod - i__3, a__1[2] = inbuff_1.bufq + i__3; -#line 15568 "" +#line 15562 "" s_cat(inbuff_1.bufq, a__1, i__1, &c__3, (ftnlen)131072); /* Update internal parameters */ -#line 15573 "" +#line 15567 "" ipbufmod += inbuff_1.lbuf[ilbufmod - 1]; -#line 15574 "" +#line 15568 "" lenbufmod += inbuff_1.lbuf[ilbufmod - 1]; -#line 15575 "" +#line 15569 "" ++inbuff_1.nlbuf; -#line 15576 "" +#line 15570 "" /* L1: */ -#line 15576 "" +#line 15570 "" } -#line 15577 "" +#line 15571 "" L3: /* Writing concatenation */ -#line 15578 "" +#line 15572 "" i__2[0] = 8, a__2[0] = "Closing "; -#line 15578 "" +#line 15572 "" i__2[1] = lpmxmoddirq, a__2[1] = pmxmoddirq; -#line 15578 "" +#line 15572 "" s_cat(ch__4, a__2, i__2, &c__2, (ftnlen)88); -#line 15578 "" +#line 15572 "" printl_(ch__4, lpmxmoddirq + 8); -#line 15579 "" +#line 15573 "" cl__1.cerr = 0; -#line 15579 "" +#line 15573 "" cl__1.cunit = 18; -#line 15579 "" +#line 15573 "" cl__1.csta = 0; -#line 15579 "" +#line 15573 "" f_clos(&cl__1); -#line 15580 "" +#line 15574 "" c1omget_1.linesinpmxmod = c1omget_1.linesinpmxmod + ilbufmod - inbuff_1.ilbuf; -#line 15581 "" +#line 15575 "" c1omget_1.lenbuf0 = lenbufmod; /* Fix Andre's error reporting problem 101211 leading to log(neg#) due */ /* to nline being 2 bigger than it should be */ -#line 15586 "" +#line 15580 "" c1omget_1.nline += -2; -#line 15588 "" +#line 15582 "" return 0; } /* getpmxmod_ */ @@ -36993,144 +36930,144 @@ L3: static integer iccount, nvsofar; /* Fortran I/O blocks */ - static cilist io___903 = { 0, 17, 0, "(a)", 0 }; + static cilist io___898 = { 0, 17, 0, "(a)", 0 }; /* Get the first line */ -#line 15604 "" +#line 15598 "" /* Parameter adjustments */ -#line 15604 "" +#line 15598 "" --sepsymq; -#line 15604 "" +#line 15598 "" --clefq; -#line 15604 "" +#line 15598 "" inameq -= 79; -#line 15604 "" +#line 15598 "" -#line 15604 "" +#line 15598 "" /* Function Body */ -#line 15604 "" +#line 15598 "" iccount = 0; -#line 15605 "" +#line 15599 "" L9: -#line 15605 "" +#line 15599 "" getbuf_(lineq, (ftnlen)128); -#line 15606 "" +#line 15600 "" if (*(unsigned char *)lineq == '%') { -#line 15606 "" +#line 15600 "" goto L9; -#line 15606 "" +#line 15600 "" } -#line 15607 "" +#line 15601 "" *istype0 = s_cmp(lineq, "---", (ftnlen)3, (ftnlen)3) == 0; -#line 15608 "" +#line 15602 "" if (*istype0) { /* Have TeX input until next line that starts with '---'. Save in scratch. */ -#line 15612 "" +#line 15606 "" o__1.oerr = 0; -#line 15612 "" +#line 15606 "" o__1.ounit = 17; -#line 15612 "" +#line 15606 "" o__1.ofnm = 0; -#line 15612 "" +#line 15606 "" o__1.orl = 0; -#line 15612 "" +#line 15606 "" o__1.osta = "SCRATCH"; -#line 15612 "" +#line 15606 "" o__1.oacc = 0; -#line 15612 "" +#line 15606 "" o__1.ofm = 0; -#line 15612 "" +#line 15606 "" o__1.oblnk = 0; -#line 15612 "" +#line 15606 "" f_open(&o__1); -#line 15613 "" +#line 15607 "" L3: -#line 15613 "" +#line 15607 "" getbuf_(lineq, (ftnlen)128); -#line 15614 "" +#line 15608 "" if (s_cmp(lineq, "---", (ftnlen)3, (ftnlen)3) != 0) { -#line 15615 "" - s_wsfe(&io___903); -#line 15615 "" +#line 15609 "" + s_wsfe(&io___898); +#line 15609 "" do_fio(&c__1, lineq, (ftnlen)128); -#line 15615 "" +#line 15609 "" e_wsfe(); -#line 15616 "" +#line 15610 "" goto L3; -#line 15617 "" +#line 15611 "" } /* Force a new line read on first call to readin */ -#line 15621 "" +#line 15615 "" iccount = 128; -#line 15622 "" +#line 15616 "" } /* Here, lineq is first line w/ numerical setup data. */ -#line 15626 "" +#line 15620 "" r__1 = readin_(lineq, &iccount, &nline, (ftnlen)128); -#line 15626 "" +#line 15620 "" *nv = i_nint(&r__1); -#line 15627 "" +#line 15621 "" r__1 = readin_(lineq, &iccount, &nline, (ftnlen)128); -#line 15627 "" +#line 15621 "" *noinst = i_nint(&r__1); -#line 15628 "" +#line 15622 "" newway = *noinst <= 0; -#line 15629 "" +#line 15623 "" if (newway) { -#line 15629 "" +#line 15623 "" *noinst = -(*noinst); -#line 15629 "" +#line 15623 "" } -#line 15630 "" +#line 15624 "" i__1 = *noinst; -#line 15630 "" +#line 15624 "" for (iinst = 1; iinst <= i__1; ++iinst) { /* Seve # of staves per inst in case later drop some inst's. */ -#line 15634 "" +#line 15628 "" if (newway) { /* Read in nvi for each instrument */ -#line 15638 "" +#line 15632 "" r__1 = readin_(lineq, &iccount, &nline, (ftnlen)128); -#line 15638 "" +#line 15632 "" comnvi_1.nsperi[iinst - 1] = i_nint(&r__1); -#line 15639 "" +#line 15633 "" } else if (iinst > 1) { -#line 15640 "" +#line 15634 "" comnvi_1.nsperi[iinst - 1] = 1; -#line 15641 "" +#line 15635 "" } else { -#line 15642 "" +#line 15636 "" comnvi_1.nsperi[iinst - 1] = *nv - *noinst + 1; -#line 15643 "" +#line 15637 "" } -#line 15644 "" +#line 15638 "" comnvi_1.iiorig[iinst - 1] = iinst; -#line 15645 "" +#line 15639 "" comnvi_1.nspern[iinst - 1] = comnvi_1.nsperi[iinst - 1]; -#line 15646 "" +#line 15640 "" /* L2: */ -#line 15646 "" +#line 15640 "" } -#line 15647 "" +#line 15641 "" r__1 = readin_(lineq, &iccount, &nline, (ftnlen)128); -#line 15647 "" +#line 15641 "" *mtrnuml = i_nint(&r__1); -#line 15648 "" +#line 15642 "" r__1 = readin_(lineq, &iccount, &nline, (ftnlen)128); -#line 15648 "" +#line 15642 "" *mtrdenl = i_nint(&r__1); /* c */ /* c Kluge to make mtrdenl work */ @@ -37139,147 +37076,147 @@ L3: /* mtrdenl = 2 */ /* mtrnuml = mtrnuml*2 */ /* end if */ -#line 15656 "" +#line 15650 "" r__1 = readin_(lineq, &iccount, &nline, (ftnlen)128); -#line 15656 "" +#line 15650 "" *mtrnmp = i_nint(&r__1); -#line 15657 "" +#line 15651 "" r__1 = readin_(lineq, &iccount, &nline, (ftnlen)128); -#line 15657 "" +#line 15651 "" *mtrdnp = i_nint(&r__1); -#line 15658 "" +#line 15652 "" *xmtrnum0 = readin_(lineq, &iccount, &nline, (ftnlen)128); /* Original key sig (before any trnasposition) in next position. Transposed */ /* sig for topfile was transferred thru pmxtex.dat. Need isig0 for key */ /* changes if transposed. */ -#line 15664 "" +#line 15658 "" r__1 = readin_(lineq, &iccount, &nline, (ftnlen)128); -#line 15664 "" +#line 15658 "" *isig0 = i_nint(&r__1); /* 130316 */ /* do 11 iinst = 1 , noinst */ /* midisig(iinst) = isig0 */ -#line 15668 "" +#line 15662 "" commidisig_1.midisig = *isig0; /* 11 continue */ -#line 15670 "" +#line 15664 "" r__1 = readin_(lineq, &iccount, &nline, (ftnlen)128); -#line 15670 "" +#line 15664 "" *npages = i_nint(&r__1); -#line 15671 "" +#line 15665 "" r__1 = readin_(lineq, &iccount, &nline, (ftnlen)128); -#line 15671 "" +#line 15665 "" *nsyst = i_nint(&r__1); -#line 15672 "" +#line 15666 "" r__1 = readin_(lineq, &iccount, &nline, (ftnlen)128); -#line 15672 "" +#line 15666 "" *musicsize = i_nint(&r__1); -#line 15673 "" +#line 15667 "" *fracindent = readin_(lineq, &iccount, &nline, (ftnlen)128); /* Next noinst non-comment lines are names of instruments. */ -#line 15677 "" +#line 15671 "" i__1 = *noinst; -#line 15677 "" +#line 15671 "" for (i__ = 1; i__ <= i__1; ++i__) { -#line 15678 "" +#line 15672 "" L5: -#line 15678 "" +#line 15672 "" getbuf_(inameq + i__ * 79, (ftnlen)79); -#line 15679 "" +#line 15673 "" if (*(unsigned char *)&inameq[i__ * 79] == '%') { -#line 15679 "" +#line 15673 "" goto L5; -#line 15679 "" +#line 15673 "" } -#line 15680 "" +#line 15674 "" /* L4: */ -#line 15680 "" +#line 15674 "" } /* Next non-comment line has nv clef names */ -#line 15684 "" +#line 15678 "" L6: -#line 15684 "" +#line 15678 "" getbuf_(lineq, (ftnlen)128); -#line 15685 "" +#line 15679 "" if (*(unsigned char *)lineq == '%') { -#line 15685 "" +#line 15679 "" goto L6; -#line 15685 "" +#line 15679 "" } -#line 15686 "" +#line 15680 "" iv = 0; -#line 15687 "" +#line 15681 "" nvsofar = 0; -#line 15688 "" +#line 15682 "" i__1 = *noinst; -#line 15688 "" +#line 15682 "" for (jinst = 1; jinst <= i__1; ++jinst) { -#line 15689 "" +#line 15683 "" nvsofar += comnvi_1.nsperi[jinst - 1]; -#line 15690 "" +#line 15684 "" i__2 = comnvi_1.nsperi[jinst - 1]; -#line 15690 "" +#line 15684 "" for (ivi = 1; ivi <= i__2; ++ivi) { -#line 15691 "" +#line 15685 "" ++iv; -#line 15692 "" +#line 15686 "" *(unsigned char *)&clefq[iv] = *(unsigned char *)&lineq[iv - 1]; -#line 15693 "" +#line 15687 "" if (iv == nvsofar) { -#line 15694 "" +#line 15688 "" *(unsigned char *)&sepsymq[iv] = '&'; -#line 15695 "" +#line 15689 "" } else { -#line 15696 "" +#line 15690 "" *(unsigned char *)&sepsymq[iv] = '|'; -#line 15697 "" +#line 15691 "" } -#line 15698 "" +#line 15692 "" /* L10: */ -#line 15698 "" +#line 15692 "" } -#line 15699 "" +#line 15693 "" /* L1: */ -#line 15699 "" +#line 15693 "" } /* Mext non-comment line has path name */ -#line 15703 "" +#line 15697 "" L8: -#line 15703 "" +#line 15697 "" getbuf_(pathnameq, (ftnlen)40); -#line 15704 "" +#line 15698 "" if (*(unsigned char *)pathnameq == '%') { -#line 15704 "" +#line 15698 "" goto L8; -#line 15704 "" +#line 15698 "" } -#line 15705 "" +#line 15699 "" *lpath = i_indx(pathnameq, " ", (ftnlen)40, (ftnlen)1) - 1; /* 160130 Replace '\' by '/' */ -#line 15709 "" +#line 15703 "" L12: -#line 15709 "" +#line 15703 "" ipos = i_indx(pathnameq, "\\", (ftnlen)40, (ftnlen)1); -#line 15710 "" +#line 15704 "" if (ipos > 0) { -#line 15711 "" +#line 15705 "" *(unsigned char *)&pathnameq[ipos - 1] = '/'; /* print*,'Changed pathname to ',pathnameq(1:lpath) */ -#line 15713 "" +#line 15707 "" goto L12; -#line 15714 "" +#line 15708 "" } -#line 15715 "" +#line 15709 "" return 0; } /* getset_ */ @@ -37303,55 +37240,55 @@ doublereal getsquez_(integer *n, integer *ntot, real *space, real *tnote, /* Since notes are ordered by increasing start times, as soon as we find one */ /* that starts too late, we are done checking. */ -#line 15729 "" +#line 15723 "" /* Parameter adjustments */ -#line 15729 "" +#line 15723 "" --to; -#line 15729 "" +#line 15723 "" --tnote; -#line 15729 "" +#line 15723 "" -#line 15729 "" +#line 15723 "" /* Function Body */ -#line 15729 "" +#line 15723 "" tgovern = 1e3f; -#line 15730 "" +#line 15724 "" tend = to[*n] + *space; -#line 15731 "" +#line 15725 "" i__1 = *ntot; -#line 15731 "" +#line 15725 "" for (in = 1; in <= i__1; ++in) { /* Since to() is ordered by start times, exit loop after first note that */ /* starts later than note of interest. */ -#line 15736 "" +#line 15730 "" if (to[in] > to[*n] + comtol_1.tol) { -#line 15736 "" +#line 15730 "" goto L2; -#line 15736 "" +#line 15730 "" } -#line 15737 "" +#line 15731 "" if (to[in] + tnote[in] > tend - comtol_1.tol) { /* If here, this note overlaps and must be tested. */ /* Computing MIN */ -#line 15741 "" +#line 15735 "" r__1 = tgovern, r__2 = tnote[in]; -#line 15741 "" +#line 15735 "" tgovern = dmin(r__1,r__2); -#line 15742 "" +#line 15736 "" } -#line 15743 "" +#line 15737 "" /* L1: */ -#line 15743 "" +#line 15737 "" } -#line 15744 "" +#line 15738 "" L2: -#line 15745 "" +#line 15739 "" ret_val = *space / tgovern; -#line 15746 "" +#line 15740 "" return ret_val; } /* getsquez_ */ @@ -37382,140 +37319,140 @@ L2: /* during xtups, we use itup and ntup to get actual time. On entry, ntup=0 if */ /* not in xtup. */ -#line 15762 "" +#line 15756 "" colon = FALSE_; -#line 15763 "" +#line 15757 "" ess = FALSE_; -#line 15764 "" +#line 15758 "" number = FALSE_; -#line 15765 "" +#line 15759 "" nextbl = *iccount + i_indx(lineq + (*iccount - 1), " ", 128 - (*iccount - 1), (ftnlen)1) - 1; -#line 15766 "" +#line 15760 "" if (i_indx(lineq + (*iccount - 1), "P", nextbl - (*iccount - 1), (ftnlen) 1) > 0) { /* "Parts only", ignore entire symbol */ -#line 15770 "" +#line 15764 "" *iccount = nextbl; -#line 15771 "" +#line 15765 "" return 0; -#line 15772 "" +#line 15766 "" } -#line 15773 "" +#line 15767 "" L1: -#line 15773 "" +#line 15767 "" getchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); -#line 15774 "" +#line 15768 "" if (*(unsigned char *)charq == 'B') { /* "Both parts and score," ignore character */ -#line 15778 "" +#line 15772 "" goto L1; -#line 15779 "" +#line 15773 "" } else if (*(unsigned char *)charq == ':') { -#line 15780 "" +#line 15774 "" colon = TRUE_; -#line 15781 "" +#line 15775 "" goto L1; -#line 15782 "" +#line 15776 "" } else if (*(unsigned char *)charq == 'S') { -#line 15783 "" +#line 15777 "" ess = TRUE_; -#line 15784 "" +#line 15778 "" goto L1; -#line 15785 "" +#line 15779 "" } else if (i_indx("+-.0123456789", charq, (ftnlen)13, (ftnlen)1) > 0) { -#line 15786 "" +#line 15780 "" number = TRUE_; -#line 15787 "" +#line 15781 "" if (*(unsigned char *)charq == '-') { -#line 15787 "" +#line 15781 "" ++(*iccount); -#line 15787 "" +#line 15781 "" } -#line 15788 "" +#line 15782 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 15789 "" +#line 15783 "" if (*(unsigned char *)charq == '-') { -#line 15789 "" +#line 15783 "" fnum = -fnum; -#line 15789 "" +#line 15783 "" } -#line 15790 "" +#line 15784 "" if (*(unsigned char *)durq != 'p') { -#line 15791 "" +#line 15785 "" fnum *= *wheadpt; -#line 15792 "" +#line 15786 "" --(*iccount); -#line 15793 "" +#line 15787 "" } -#line 15794 "" +#line 15788 "" goto L1; -#line 15795 "" +#line 15789 "" } /* charq must be blank, so done parsing */ -#line 15799 "" +#line 15793 "" if (! ess && ! colon) { /* Ordinary hardspace. Goes before next note. */ /* (Later, at "|" or "/", check for presence and switch to udoff if there!) */ -#line 15804 "" +#line 15798 "" ++comudsp_1.nudsp; -#line 15805 "" +#line 15799 "" *iornq1 = bit_set(*iornq1,26); -#line 15806 "" +#line 15800 "" comudsp_1.udsp[comudsp_1.nudsp - 1] = fnum; -#line 15807 "" +#line 15801 "" comudsp_1.tudsp[comudsp_1.nudsp - 1] = (real) (*itsofar); -#line 15808 "" +#line 15802 "" if (*ntup > 0) { -#line 15808 "" +#line 15802 "" comudsp_1.tudsp[comudsp_1.nudsp - 1] += (real) (*itup - 1 + * ndoub) / *ntup * ifnodur_(nnodur, dotq, (ftnlen)1); -#line 15808 "" +#line 15802 "" } /* * +float(itup-1)/ntup*ifnodur(nnodur,dotq) */ -#line 15811 "" +#line 15805 "" } else if (! number) { /* Must be "X:" End a group offset. */ -#line 15815 "" +#line 15809 "" *irest = bit_set(*irest,17); -#line 15816 "" +#line 15810 "" *shifton = FALSE_; -#line 15817 "" +#line 15811 "" return 0; -#line 15818 "" +#line 15812 "" } else { /* Only other possibility is start offset, "S" for single, ':' for multiple */ -#line 15822 "" +#line 15816 "" ++comudsp_1.nudoff[*ivx - 1]; -#line 15823 "" +#line 15817 "" comudsp_1.udoff[*ivx + comudsp_1.nudoff[*ivx - 1] * 24 - 25] = fnum; -#line 15824 "" +#line 15818 "" if (ess) { -#line 15825 "" +#line 15819 "" *irest1 = bit_set(*irest1,15); -#line 15826 "" +#line 15820 "" } else { -#line 15827 "" +#line 15821 "" *irest1 = bit_set(*irest1,16); -#line 15828 "" +#line 15822 "" *shifton = TRUE_; -#line 15829 "" +#line 15823 "" } -#line 15830 "" +#line 15824 "" } -#line 15831 "" +#line 15825 "" return 0; } /* getx_ */ @@ -37532,75 +37469,75 @@ integer i1fnodur_(integer *idur, char *dotq, ftnlen dotq_len) extern /* Subroutine */ int stop1_(void); /* Fortran I/O blocks */ - static cilist io___923 = { 0, 6, 0, 0, 0 }; - static cilist io___924 = { 0, 6, 0, 0, 0 }; + static cilist io___918 = { 0, 6, 0, 0, 0 }; + static cilist io___919 = { 0, 6, 0, 0, 0 }; -#line 15835 "" +#line 15829 "" if (*idur == 6) { -#line 15836 "" +#line 15830 "" ret_val = 1; -#line 15837 "" +#line 15831 "" } else if (*idur == 3) { -#line 15838 "" +#line 15832 "" ret_val = 2; -#line 15839 "" +#line 15833 "" } else if (*idur == 1) { -#line 15840 "" +#line 15834 "" ret_val = 4; -#line 15841 "" +#line 15835 "" } else if (*idur == 8) { -#line 15842 "" +#line 15836 "" ret_val = 8; -#line 15843 "" +#line 15837 "" } else if (*idur == 4) { -#line 15844 "" +#line 15838 "" ret_val = 16; -#line 15845 "" +#line 15839 "" } else if (*idur == 2) { -#line 15846 "" +#line 15840 "" ret_val = 32; -#line 15847 "" +#line 15841 "" } else if (*idur == 0) { -#line 15848 "" +#line 15842 "" ret_val = 64; -#line 15849 "" +#line 15843 "" } else if (*idur == 16) { /* Only used for denominator of time signatures, not for notes */ -#line 15853 "" +#line 15847 "" ret_val = 4; -#line 15854 "" +#line 15848 "" } else if (*idur == 9) { -#line 15855 "" +#line 15849 "" ret_val = 128; -#line 15856 "" +#line 15850 "" } else { -#line 15857 "" - s_wsle(&io___923); -#line 15857 "" +#line 15851 "" + s_wsle(&io___918); +#line 15851 "" e_wsle(); -#line 15858 "" - s_wsle(&io___924); -#line 15858 "" +#line 15852 "" + s_wsle(&io___919); +#line 15852 "" do_lio(&c__9, &c__1, "You entered an invalid note-length value:", ( ftnlen)41); -#line 15858 "" +#line 15852 "" do_lio(&c__3, &c__1, (char *)&(*idur), (ftnlen)sizeof(integer)); -#line 15858 "" +#line 15852 "" e_wsle(); -#line 15859 "" +#line 15853 "" stop1_(); -#line 15860 "" +#line 15854 "" } -#line 15861 "" +#line 15855 "" if (*(unsigned char *)dotq == 'd') { -#line 15861 "" +#line 15855 "" ret_val = ret_val * 3 / 2; -#line 15861 "" +#line 15855 "" } -#line 15862 "" +#line 15856 "" return ret_val; } /* i1fnodur_ */ @@ -37618,9 +37555,9 @@ integer iashft_(integer *nacc) /* System generated locals */ integer ret_val; -#line 15872 "" +#line 15866 "" ret_val = ias[(0 + (0 + (*nacc - 1 << 2))) / 4]; -#line 15873 "" +#line 15867 "" return ret_val; } /* iashft_ */ @@ -37635,67 +37572,67 @@ integer ifnodur_(integer *idur, char *dotq, ftnlen dotq_len) /* Subroutine */ int s_stop(char *, ftnlen); /* Fortran I/O blocks */ - static cilist io___926 = { 0, 6, 0, 0, 0 }; + static cilist io___921 = { 0, 6, 0, 0, 0 }; -#line 15877 "" +#line 15871 "" if (*idur == 6) { -#line 15878 "" +#line 15872 "" ret_val = 1; -#line 15879 "" +#line 15873 "" } else if (*idur == 3) { -#line 15880 "" +#line 15874 "" ret_val = 2; -#line 15881 "" +#line 15875 "" } else if (*idur == 1) { -#line 15882 "" +#line 15876 "" ret_val = 4; -#line 15883 "" +#line 15877 "" } else if (*idur == 8) { -#line 15884 "" +#line 15878 "" ret_val = 8; -#line 15885 "" +#line 15879 "" } else if (*idur == 4) { -#line 15886 "" +#line 15880 "" ret_val = 16; -#line 15887 "" +#line 15881 "" } else if (*idur == 2) { -#line 15888 "" +#line 15882 "" ret_val = 32; -#line 15889 "" +#line 15883 "" } else if (*idur == 0) { -#line 15890 "" +#line 15884 "" ret_val = 64; -#line 15891 "" +#line 15885 "" } else if (*idur == 9) { -#line 15892 "" +#line 15886 "" ret_val = 128; -#line 15893 "" +#line 15887 "" } else if (*idur == 16) { /* Only used for denominator of time signatures, not for notes */ -#line 15897 "" +#line 15891 "" ret_val = 4; -#line 15898 "" +#line 15892 "" } else { -#line 15899 "" - s_wsle(&io___926); -#line 15899 "" +#line 15893 "" + s_wsle(&io___921); +#line 15893 "" do_lio(&c__9, &c__1, "You entered an invalid note value", (ftnlen)33); -#line 15899 "" +#line 15893 "" e_wsle(); -#line 15900 "" +#line 15894 "" s_stop("", (ftnlen)0); -#line 15901 "" +#line 15895 "" } -#line 15902 "" +#line 15896 "" if (*(unsigned char *)dotq == 'd') { -#line 15902 "" +#line 15896 "" ret_val = ret_val * 3 / 2; -#line 15902 "" +#line 15896 "" } -#line 15903 "" +#line 15897 "" return ret_val; } /* ifnodur_ */ @@ -37704,9 +37641,9 @@ integer ifnolev_(char *noq, integer *oct, integer *ntrans, ftnlen noq_len) /* System generated locals */ integer ret_val; -#line 15908 "" +#line 15902 "" ret_val = *oct * 7 + (*(unsigned char *)noq - 92) % 7 + 1 + *ntrans; -#line 15909 "" +#line 15903 "" return ret_val; } /* ifnolev_ */ @@ -37750,9 +37687,9 @@ integer igetbits_(integer *isdata, integer *iwidbit, integer *ishift) /* Extracts integer given by iwidbit bits of isdata, shifted by ishift, and */ /* then added to ioff */ -#line 15944 "" +#line 15938 "" ret_val = pow_ii(&c__2, iwidbit) - 1 & lbit_shift(*isdata, -(*ishift)); -#line 15945 "" +#line 15939 "" return ret_val; } /* igetbits_ */ @@ -37770,46 +37707,46 @@ integer igetvarlen_(shortint *mmidi, integer *icm, integer *imidi, integer * extern /* Subroutine */ int stop1_(void); /* Fortran I/O blocks */ - static cilist io___927 = { 0, 6, 0, 0, 0 }; + static cilist io___922 = { 0, 6, 0, 0, 0 }; /* Gets variable-length integer starting in mmidi at imidi+1. Returns nbytes. */ -#line 15953 "" +#line 15947 "" /* Parameter adjustments */ -#line 15953 "" +#line 15947 "" mmidi -= 25; -#line 15953 "" +#line 15947 "" -#line 15953 "" +#line 15947 "" /* Function Body */ -#line 15953 "" +#line 15947 "" ret_val = 0; -#line 15954 "" +#line 15948 "" for (*nbytes = 1; *nbytes <= 4; ++(*nbytes)) { -#line 15955 "" +#line 15949 "" ret_val = (ret_val << 7) + (127 & mmidi[*icm + (*imidi + *nbytes) * 25]); -#line 15957 "" +#line 15951 "" if (! bit_test(mmidi[*icm + (*imidi + *nbytes) * 25],7)) { -#line 15957 "" +#line 15951 "" return ret_val; -#line 15957 "" +#line 15951 "" } -#line 15958 "" +#line 15952 "" /* L1: */ -#line 15958 "" +#line 15952 "" } -#line 15959 "" - s_wsle(&io___927); -#line 15959 "" +#line 15953 "" + s_wsle(&io___922); +#line 15953 "" do_lio(&c__9, &c__1, "Messup in igetvarlen", (ftnlen)20); -#line 15959 "" +#line 15953 "" e_wsle(); -#line 15960 "" +#line 15954 "" stop1_(); -#line 15961 "" +#line 15955 "" return ret_val; } /* igetvarlen_ */ @@ -37826,41 +37763,41 @@ logical isdotted_(integer *nodur, integer *ivx, integer *ip) /* Function returns true if note is dotted or double-dotted. */ /* Return false for any xtuplet. */ -#line 15970 "" +#line 15964 "" /* Parameter adjustments */ -#line 15970 "" +#line 15964 "" nodur -= 25; -#line 15970 "" +#line 15964 "" -#line 15970 "" +#line 15964 "" /* Function Body */ -#line 15970 "" +#line 15964 "" if (nodur[*ivx + *ip * 24] == 0) { -#line 15971 "" +#line 15965 "" ret_val = FALSE_; -#line 15972 "" +#line 15966 "" return ret_val; -#line 15973 "" +#line 15967 "" } else if (*ip > 1) { -#line 15974 "" +#line 15968 "" if (nodur[*ivx + (*ip - 1) * 24] == 0) { -#line 15975 "" +#line 15969 "" ret_val = FALSE_; -#line 15976 "" +#line 15970 "" return ret_val; -#line 15977 "" +#line 15971 "" } -#line 15978 "" +#line 15972 "" } /* Ruled out all xtups, so is dotted or double-dotted if not a power of 2. */ -#line 15982 "" +#line 15976 "" r__1 = log((real) nodur[*ivx + *ip * 24]) / .69314718f + comtol_1.tol * .5f; -#line 15982 "" +#line 15976 "" ret_val = r_mod(&r__1, &c_b1053) > comtol_1.tol; -#line 15984 "" +#line 15978 "" return ret_val; } /* isdotted_ */ @@ -37879,46 +37816,46 @@ integer isetvarlen_(integer *idur, integer *nbytes) static integer itemp; /* Fortran I/O blocks */ - static cilist io___929 = { 0, 6, 0, 0, 0 }; + static cilist io___924 = { 0, 6, 0, 0, 0 }; -#line 15987 "" +#line 15981 "" ret_val = 0; -#line 15988 "" +#line 15982 "" itemp = *idur; -#line 15989 "" +#line 15983 "" for (*nbytes = 1; *nbytes <= 4; ++(*nbytes)) { -#line 15990 "" +#line 15984 "" i__1 = *nbytes - 1; -#line 15990 "" +#line 15984 "" ret_val += (itemp & 127) * pow_ii(&c__256, &i__1); -#line 15991 "" +#line 15985 "" itemp = lbit_shift(itemp, (ftnlen)-7); -#line 15992 "" +#line 15986 "" if (itemp > 0) { -#line 15993 "" +#line 15987 "" i__1 = (*nbytes << 3) + 7; -#line 15993 "" +#line 15987 "" ret_val += pow_ii(&c__2, &i__1); -#line 15994 "" +#line 15988 "" } else { -#line 15995 "" +#line 15989 "" return ret_val; -#line 15996 "" +#line 15990 "" } -#line 15997 "" +#line 15991 "" /* L1: */ -#line 15997 "" +#line 15991 "" } -#line 15998 "" - s_wsle(&io___929); -#line 15998 "" +#line 15992 "" + s_wsle(&io___924); +#line 15992 "" do_lio(&c__9, &c__1, "Problem in fn. isetvarlen", (ftnlen)25); -#line 15998 "" +#line 15992 "" e_wsle(); -#line 15999 "" +#line 15993 "" stop1_(); -#line 16000 "" +#line 15994 "" return ret_val; } /* isetvarlen_ */ @@ -37943,75 +37880,75 @@ integer isetvarlen_(integer *idur, integer *nbytes) /* Returns string with integer only if length is 1, otherwise enclosed in */ /* brackets. */ -#line 16007 "" +#line 16001 "" if (*i__ != 0) { -#line 16008 "" +#line 16002 "" r__1 = abs(*i__) * 1.0001f; -#line 16008 "" +#line 16002 "" *len = r_lg10(&r__1) + 1; -#line 16009 "" +#line 16003 "" if (*i__ < 0) { -#line 16009 "" +#line 16003 "" ++(*len); -#line 16009 "" +#line 16003 "" } -#line 16010 "" +#line 16004 "" } else { -#line 16011 "" +#line 16005 "" s_copy(string, "0", string_len, (ftnlen)1); -#line 16012 "" +#line 16006 "" *len = 1; -#line 16013 "" +#line 16007 "" return 0; -#line 16014 "" +#line 16008 "" } -#line 16015 "" +#line 16009 "" if (*len == 1) { -#line 16016 "" +#line 16010 "" *(unsigned char *)&ch__1[0] = *i__ + 48; -#line 16016 "" +#line 16010 "" s_copy(string, ch__1, string_len, (ftnlen)1); -#line 16017 "" +#line 16011 "" } else { -#line 16018 "" +#line 16012 "" s_copy(string, "{", string_len, (ftnlen)1); -#line 16019 "" +#line 16013 "" ici__1.icierr = 0; -#line 16019 "" +#line 16013 "" ici__1.icirnum = 1; -#line 16019 "" +#line 16013 "" ici__1.icirlen = *len; -#line 16019 "" +#line 16013 "" ici__1.iciunit = string + 1; /* Writing concatenation */ -#line 16019 "" +#line 16013 "" i__1[0] = 2, a__1[0] = "(i"; -#line 16019 "" +#line 16013 "" *(unsigned char *)&ch__1[0] = *len + 48; -#line 16019 "" +#line 16013 "" i__1[1] = 1, a__1[1] = ch__1; -#line 16019 "" +#line 16013 "" i__1[2] = 1, a__1[2] = ")"; -#line 16019 "" +#line 16013 "" ici__1.icifmt = (s_cat(ch__2, a__1, i__1, &c__3, (ftnlen)4), ch__2); -#line 16019 "" +#line 16013 "" s_wsfi(&ici__1); -#line 16019 "" +#line 16013 "" do_fio(&c__1, (char *)&(*i__), (ftnlen)sizeof(integer)); -#line 16019 "" +#line 16013 "" e_wsfi(); /* Writing concatenation */ -#line 16020 "" +#line 16014 "" i__2[0] = *len + 1, a__2[0] = string; -#line 16020 "" +#line 16014 "" i__2[1] = 1, a__2[1] = "}"; -#line 16020 "" +#line 16014 "" s_cat(string, a__2, i__2, &c__2, string_len); -#line 16021 "" +#line 16015 "" *len += 2; -#line 16022 "" +#line 16016 "" } -#line 16023 "" +#line 16017 "" return 0; } /* istring_ */ @@ -38020,21 +37957,21 @@ integer lenstr_(char *string, integer *n, ftnlen string_len) /* System generated locals */ integer ret_val; -#line 16027 "" +#line 16021 "" for (ret_val = *n; ret_val >= 1; --ret_val) { -#line 16028 "" +#line 16022 "" if (*(unsigned char *)&string[ret_val - 1] != ' ') { -#line 16028 "" +#line 16022 "" return ret_val; -#line 16028 "" +#line 16022 "" } -#line 16029 "" +#line 16023 "" /* L1: */ -#line 16029 "" +#line 16023 "" } -#line 16030 "" +#line 16024 "" ret_val = 0; -#line 16031 "" +#line 16025 "" return ret_val; } /* lenstr_ */ @@ -38051,45 +37988,45 @@ integer levrn_(integer *nolev, integer *irest, integer *iud, integer *ncm, /* Used for placing numbers in xtups. Returns note level if not a rest, */ /* else level of top or bottom of rest symbol opposite beam. iud=-1 for upstm. */ -#line 16039 "" +#line 16033 "" if (! bit_test(*irest,0)) { -#line 16040 "" +#line 16034 "" ret_val = *nolev; -#line 16041 "" +#line 16035 "" } else { /* Restlevel is -4, 0, 2 or 100+offset. First get offset from 1-voice default. */ -#line 16045 "" +#line 16039 "" if (*mult > 0) { -#line 16046 "" +#line 16040 "" if (*mult == 2) { -#line 16047 "" +#line 16041 "" ioff = (*iud << 1) - 1; -#line 16048 "" +#line 16042 "" } else if (*mult != 4) { -#line 16049 "" +#line 16043 "" ioff = *iud * *mult; -#line 16050 "" +#line 16044 "" } else { -#line 16051 "" +#line 16045 "" ioff = (*iud << 2) + 1; -#line 16052 "" +#line 16046 "" } -#line 16053 "" +#line 16047 "" } else { /* May need to futz with this later for non-beamed xtups (quarter, half rests) */ -#line 16057 "" +#line 16051 "" ioff = *iud << 1; -#line 16058 "" +#line 16052 "" } -#line 16059 "" +#line 16053 "" ret_val = (*nolev + 20) % 100 - 20 + *ncm + ioff; -#line 16060 "" +#line 16054 "" } -#line 16061 "" +#line 16055 "" return ret_val; } /* levrn_ */ @@ -38109,29 +38046,29 @@ integer lfmt1_(real *x) /* Computes total length of an "f" format with one decimal place. */ /* First round to nearest 0.1 */ -#line 16068 "" +#line 16062 "" if (dabs(*x) < .001f) { -#line 16069 "" +#line 16063 "" ret_val = 2; -#line 16070 "" +#line 16064 "" } else { -#line 16071 "" +#line 16065 "" r__1 = (integer) (dabs(*x) * 10 + .5f) * .1f; -#line 16071 "" +#line 16065 "" y = r_sign(&r__1, x); -#line 16072 "" +#line 16066 "" r__1 = dabs(y) * 1000 + .001f; -#line 16072 "" +#line 16066 "" ret_val = (integer) r_lg10(&r__1); -#line 16073 "" +#line 16067 "" if (y < 0.f) { -#line 16073 "" +#line 16067 "" ++ret_val; -#line 16073 "" +#line 16067 "" } -#line 16074 "" +#line 16068 "" } -#line 16075 "" +#line 16069 "" return ret_val; } /* lfmt1_ */ @@ -38168,7 +38105,7 @@ integer lfmt1_(real *x) static char notexq[128]; /* Fortran I/O blocks */ - static cilist io___951 = { 0, 11, 0, "(a)", 0 }; + static cilist io___946 = { 0, 11, 0, "(a)", 0 }; @@ -38183,300 +38120,300 @@ integer lfmt1_(real *x) /* closing of full tie are not used except for shape alterations. */ /* do 1 ndx = 0 , 11 */ -#line 16100 "" +#line 16094 "" /* Parameter adjustments */ -#line 16100 "" +#line 16094 "" --sepsymq; -#line 16100 "" +#line 16094 "" --isdat4; -#line 16100 "" +#line 16094 "" --isdat3; -#line 16100 "" +#line 16094 "" --isdat2; -#line 16100 "" +#line 16094 "" --isdat1; -#line 16100 "" +#line 16094 "" -#line 16100 "" +#line 16094 "" /* Function Body */ -#line 16100 "" +#line 16094 "" for (ndx = 0; ndx <= 23; ++ndx) { -#line 16101 "" +#line 16095 "" if (bit_test(comslur_1.listslur,ndx)) { /* Slur or tie with index ndx is open. Find the one with right ndxb, see if tie */ -#line 16105 "" +#line 16099 "" i__1 = *nsdat; -#line 16105 "" +#line 16099 "" for (isdat = 1; isdat <= i__1; ++isdat) { /* if (igetbits(isdat1(isdat),4,28) .ne. ndx) go to 2 ! Wrong index */ -#line 16107 "" +#line 16101 "" if (igetbits_(&isdat1[isdat], &c__4, &c__28) + (igetbits_(& isdat1[isdat], &c__1, &c__18) << 4) != ndx) { -#line 16107 "" +#line 16101 "" goto L2; -#line 16107 "" +#line 16101 "" } /* Wron */ -#line 16109 "" +#line 16103 "" if (! bit_test(isdat1[isdat],11)) { -#line 16109 "" +#line 16103 "" goto L2; -#line 16109 "" +#line 16103 "" } /* Bypass if stop */ -#line 16110 "" +#line 16104 "" if (bit_test(isdat2[isdat],3)) { -#line 16110 "" +#line 16104 "" goto L3; -#line 16110 "" +#line 16104 "" } /* "st" */ -#line 16111 "" +#line 16105 "" idcode = igetbits_(&isdat1[isdat], &c__7, &c__19); -#line 16112 "" +#line 16106 "" if (idcode == 1) { -#line 16112 "" +#line 16106 "" goto L3; -#line 16112 "" +#line 16106 "" } /* "t" */ -#line 16113 "" +#line 16107 "" tie = FALSE_; -#line 16114 "" +#line 16108 "" goto L5; -#line 16115 "" +#line 16109 "" L2: -#line 16115 "" +#line 16109 "" ; -#line 16115 "" +#line 16109 "" } -#line 16116 "" +#line 16110 "" } -#line 16117 "" +#line 16111 "" goto L1; -#line 16118 "" +#line 16112 "" L3: -#line 16119 "" +#line 16113 "" tie = TRUE_; -#line 16120 "" +#line 16114 "" L5: /* A slur or tie is open, with index ndx */ -#line 16124 "" +#line 16118 "" iv = igetbits_(&isdat1[isdat], &c__5, &c__13); -#line 16125 "" +#line 16119 "" kv = igetbits_(&isdat1[isdat], &c__1, &c__12) + 1; -#line 16126 "" +#line 16120 "" *(unsigned char *)udq = 'd'; -#line 16127 "" +#line 16121 "" if (bit_test(isdat1[isdat],27)) { -#line 16127 "" +#line 16121 "" *(unsigned char *)udq = 'u'; -#line 16127 "" +#line 16121 "" } /* Writing concatenation */ -#line 16128 "" +#line 16122 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16128 "" +#line 16122 "" i__2[0] = 1, a__1[0] = ch__1; -#line 16128 "" +#line 16122 "" i__2[1] = 6, a__1[1] = "znotes"; -#line 16128 "" +#line 16122 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)128); -#line 16129 "" +#line 16123 "" lnote = 7; -#line 16130 "" +#line 16124 "" i__1 = iv - 1; -#line 16130 "" +#line 16124 "" for (iiv = 1; iiv <= i__1; ++iiv) { /* Writing concatenation */ -#line 16131 "" +#line 16125 "" i__2[0] = lnote, a__1[0] = notexq; -#line 16131 "" +#line 16125 "" i__2[1] = 1, a__1[1] = sepsymq + iiv; -#line 16131 "" +#line 16125 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)128); -#line 16132 "" +#line 16126 "" ++lnote; -#line 16133 "" +#line 16127 "" /* L4: */ -#line 16133 "" +#line 16127 "" } -#line 16134 "" +#line 16128 "" if (kv == 2) { /* Writing concatenation */ -#line 16135 "" +#line 16129 "" i__3[0] = lnote, a__2[0] = notexq; -#line 16135 "" +#line 16129 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16135 "" +#line 16129 "" i__3[1] = 1, a__2[1] = ch__1; -#line 16135 "" +#line 16129 "" i__3[2] = 9, a__2[2] = "nextvoice"; -#line 16135 "" +#line 16129 "" s_cat(notexq, a__2, i__3, &c__3, (ftnlen)128); -#line 16136 "" +#line 16130 "" lnote += 10; -#line 16137 "" +#line 16131 "" } /* Compute horiz and vert offsets */ /* nolev = igetbits(isdat2(isdat),7,19) */ -#line 16142 "" +#line 16136 "" islhgt = igetbits_(&isdat3[isdat], &c__8, &c__14); -#line 16143 "" +#line 16137 "" ilb12 = 0; -#line 16144 "" +#line 16138 "" if (*ispstie) { -#line 16144 "" +#line 16138 "" ilb12 = 1; -#line 16144 "" +#line 16138 "" } -#line 16145 "" +#line 16139 "" i__1 = ilb12 << 4; -#line 16145 "" +#line 16139 "" ivoff = igetbits_(&isdat4[isdat], &c__6, &i__1) - 32; -#line 16146 "" +#line 16140 "" if (ivoff == -32) { -#line 16146 "" +#line 16140 "" ivoff = 0; -#line 16146 "" +#line 16140 "" } /* nolev = nolev+ivoff */ -#line 16148 "" +#line 16142 "" islhgt += ivoff; -#line 16149 "" +#line 16143 "" i__1 = (ilb12 << 4) + 6; -#line 16149 "" +#line 16143 "" ihoff = igetbits_(&isdat4[isdat], &c__7, &i__1) - 64; /* This is 10X */ -#line 16150 "" +#line 16144 "" if (ihoff == -64) { -#line 16150 "" +#line 16144 "" ihoff = 0; -#line 16150 "" +#line 16144 "" } /* Add starting stuff for command */ -#line 16154 "" +#line 16148 "" if (! (*ispstie)) { /* End 1st segment */ /* Writing concatenation */ -#line 16155 "" +#line 16149 "" i__3[0] = lnote, a__2[0] = notexq; -#line 16155 "" +#line 16149 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16155 "" +#line 16149 "" i__3[1] = 1, a__2[1] = ch__1; -#line 16155 "" +#line 16149 "" i__3[2] = 8, a__2[2] = "roffset{"; -#line 16155 "" +#line 16149 "" s_cat(notexq, a__2, i__3, &c__3, (ftnlen)128); -#line 16156 "" +#line 16150 "" lnote += 9; /* hoff = ihoff*.1-.5 */ /* hoff = ihoff*.1-.8 */ -#line 16159 "" +#line 16153 "" hoff = ihoff * .1f - .4f; -#line 16160 "" +#line 16154 "" if (hoff < 0.f) { -#line 16161 "" +#line 16155 "" hoff = -hoff; /* Writing concatenation */ -#line 16162 "" +#line 16156 "" i__2[0] = lnote, a__1[0] = notexq; -#line 16162 "" +#line 16156 "" i__2[1] = 1, a__1[1] = "-"; -#line 16162 "" +#line 16156 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)128); -#line 16163 "" +#line 16157 "" ++lnote; -#line 16164 "" +#line 16158 "" } -#line 16165 "" +#line 16159 "" writflot_(&hoff, notexq, &lnote, (ftnlen)128); /* Writing concatenation */ -#line 16166 "" +#line 16160 "" i__2[0] = lnote, a__1[0] = notexq; -#line 16166 "" +#line 16160 "" i__2[1] = 2, a__1[1] = "}{"; -#line 16166 "" +#line 16160 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)128); -#line 16167 "" +#line 16161 "" lnote += 2; -#line 16168 "" +#line 16162 "" } else { /* Writing concatenation */ -#line 16169 "" +#line 16163 "" i__4[0] = lnote, a__3[0] = notexq; -#line 16169 "" +#line 16163 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16169 "" +#line 16163 "" i__4[1] = 1, a__3[1] = ch__1; -#line 16169 "" +#line 16163 "" i__4[2] = 5, a__3[2] = "off{-"; -#line 16169 "" +#line 16163 "" chax_(ch__2, (ftnlen)1, &c__92); -#line 16169 "" +#line 16163 "" i__4[3] = 1, a__3[3] = ch__2; -#line 16169 "" +#line 16163 "" i__4[4] = 14, a__3[4] = "afterruleskip}"; -#line 16169 "" +#line 16163 "" s_cat(notexq, a__3, i__4, &c__5, (ftnlen)128); -#line 16171 "" +#line 16165 "" lnote += 21; /* 091025 add dotting for 2nd segment if needed */ -#line 16175 "" +#line 16169 "" if (bit_test(isdat2[isdat],4)) { /* Writing concatenation */ -#line 16176 "" +#line 16170 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16176 "" +#line 16170 "" i__3[0] = 1, a__2[0] = ch__1; -#line 16176 "" +#line 16170 "" i__3[1] = 6, a__2[1] = "dotted"; -#line 16176 "" +#line 16170 "" i__3[2] = lnote, a__2[2] = notexq; -#line 16176 "" +#line 16170 "" s_cat(notexq, a__2, i__3, &c__3, (ftnlen)128); -#line 16177 "" +#line 16171 "" lnote += 7; -#line 16178 "" +#line 16172 "" } -#line 16179 "" +#line 16173 "" } -#line 16180 "" +#line 16174 "" if (*ispstie && tie) { /* Writing concatenation */ -#line 16181 "" +#line 16175 "" i__5[0] = lnote, a__4[0] = notexq; -#line 16181 "" +#line 16175 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16181 "" +#line 16175 "" i__5[1] = 1, a__4[1] = ch__1; -#line 16181 "" +#line 16175 "" i__5[2] = 8, a__4[2] = "tieforis"; -#line 16181 "" +#line 16175 "" i__5[3] = 1, a__4[3] = udq; -#line 16181 "" +#line 16175 "" s_cat(notexq, a__4, i__5, &c__4, (ftnlen)128); -#line 16182 "" +#line 16176 "" lnote += 10; -#line 16183 "" +#line 16177 "" } -#line 16184 "" +#line 16178 "" if (bit_test(isdat3[isdat],0)) { /* Curvature tweak on termination of 1st seg */ -#line 16188 "" +#line 16182 "" imid = igetbits_(&isdat3[isdat], &c__6, &c__2) - 32; /* Invoke macro (from pmx.tex) that redefines \tslur as r'qd. mapping: */ @@ -38487,82 +38424,82 @@ L5: /* 6 HH */ /* Writing concatenation */ -#line 16197 "" +#line 16191 "" i__5[0] = lnote, a__4[0] = notexq; -#line 16197 "" +#line 16191 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16197 "" +#line 16191 "" i__5[1] = 1, a__4[1] = ch__1; -#line 16197 "" +#line 16191 "" i__5[2] = 7, a__4[2] = "psforts"; -#line 16197 "" +#line 16191 "" i__1 = imid + 48; -#line 16197 "" +#line 16191 "" chax_(ch__2, (ftnlen)1, &i__1); -#line 16197 "" +#line 16191 "" i__5[3] = 1, a__4[3] = ch__2; -#line 16197 "" +#line 16191 "" s_cat(notexq, a__4, i__5, &c__4, (ftnlen)128); -#line 16198 "" +#line 16192 "" lnote += 9; /* Zero out the flag in case there's a different curv on term of 2nd, */ -#line 16202 "" +#line 16196 "" isdat3[isdat] = bit_clear(isdat3[isdat],0); -#line 16203 "" +#line 16197 "" } /* Add the command name */ -#line 16207 "" +#line 16201 "" if (*ispstie) { /* Writing concatenation */ -#line 16208 "" +#line 16202 "" i__5[0] = lnote, a__4[0] = notexq; -#line 16208 "" +#line 16202 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16208 "" +#line 16202 "" i__5[1] = 1, a__4[1] = ch__1; -#line 16208 "" +#line 16202 "" i__5[2] = 2, a__4[2] = "is"; -#line 16208 "" +#line 16202 "" i__5[3] = 1, a__4[3] = udq; -#line 16208 "" +#line 16202 "" s_cat(notexq, a__4, i__5, &c__4, (ftnlen)128); -#line 16209 "" +#line 16203 "" lnote += 4; -#line 16210 "" +#line 16204 "" } else if (tie) { /* Writing concatenation */ -#line 16211 "" +#line 16205 "" i__3[0] = lnote, a__2[0] = notexq; -#line 16211 "" +#line 16205 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16211 "" +#line 16205 "" i__3[1] = 1, a__2[1] = ch__1; -#line 16211 "" +#line 16205 "" i__3[2] = 4, a__2[2] = "ttie"; -#line 16211 "" +#line 16205 "" s_cat(notexq, a__2, i__3, &c__3, (ftnlen)128); -#line 16212 "" +#line 16206 "" lnote += 5; -#line 16213 "" +#line 16207 "" } else { /* Writing concatenation */ -#line 16214 "" +#line 16208 "" i__3[0] = lnote, a__2[0] = notexq; -#line 16214 "" +#line 16208 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16214 "" +#line 16208 "" i__3[1] = 1, a__2[1] = ch__1; -#line 16214 "" +#line 16208 "" i__3[2] = 5, a__2[2] = "tslur"; -#line 16214 "" +#line 16208 "" s_cat(notexq, a__2, i__3, &c__3, (ftnlen)128); -#line 16215 "" +#line 16209 "" lnote += 6; -#line 16216 "" +#line 16210 "" } /* Add index */ @@ -38574,214 +38511,214 @@ L5: /* notexq = notexq(1:lnote)//'{1'//chax(49-ndx)//'}' */ /* lnote = lnote+4 */ /* end if */ -#line 16227 "" +#line 16221 "" if (23 - ndx < 10) { /* Writing concatenation */ -#line 16228 "" +#line 16222 "" i__2[0] = lnote, a__1[0] = notexq; -#line 16228 "" +#line 16222 "" i__1 = 71 - ndx; -#line 16228 "" +#line 16222 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 16228 "" +#line 16222 "" i__2[1] = 1, a__1[1] = ch__1; -#line 16228 "" +#line 16222 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)128); -#line 16229 "" +#line 16223 "" ++lnote; -#line 16230 "" +#line 16224 "" } else if (23 - ndx < 20) { /* Writing concatenation */ -#line 16231 "" +#line 16225 "" i__5[0] = lnote, a__4[0] = notexq; -#line 16231 "" +#line 16225 "" i__5[1] = 2, a__4[1] = "{1"; -#line 16231 "" +#line 16225 "" i__1 = 61 - ndx; -#line 16231 "" +#line 16225 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 16231 "" +#line 16225 "" i__5[2] = 1, a__4[2] = ch__1; -#line 16231 "" +#line 16225 "" i__5[3] = 1, a__4[3] = "}"; -#line 16231 "" +#line 16225 "" s_cat(notexq, a__4, i__5, &c__4, (ftnlen)128); -#line 16232 "" +#line 16226 "" lnote += 4; -#line 16233 "" +#line 16227 "" } else { /* Writing concatenation */ -#line 16234 "" +#line 16228 "" i__5[0] = lnote, a__4[0] = notexq; -#line 16234 "" +#line 16228 "" i__5[1] = 2, a__4[1] = "{2"; -#line 16234 "" +#line 16228 "" i__1 = 51 - ndx; -#line 16234 "" +#line 16228 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 16234 "" +#line 16228 "" i__5[2] = 1, a__4[2] = ch__1; -#line 16234 "" +#line 16228 "" i__5[3] = 1, a__4[3] = "}"; -#line 16234 "" +#line 16228 "" s_cat(notexq, a__4, i__5, &c__4, (ftnlen)128); -#line 16235 "" +#line 16229 "" lnote += 4; -#line 16236 "" +#line 16230 "" } -#line 16237 "" +#line 16231 "" if (*ispstie || ! tie) { /* Add note name for slur height */ -#line 16241 "" +#line 16235 "" comoct_1.noctup = 0; -#line 16242 "" +#line 16236 "" ncm = igetbits_(&isdat3[isdat], &c__8, &c__22); -#line 16243 "" +#line 16237 "" if (ncm == 23) { -#line 16243 "" +#line 16237 "" comoct_1.noctup = -2; -#line 16243 "" +#line 16237 "" } /* call notefq(noteq,lnoten,nolev,ncm) */ -#line 16245 "" +#line 16239 "" notefq_(noteq, &lnoten, &islhgt, &ncm, (ftnlen)8); /* Writing concatenation */ -#line 16246 "" +#line 16240 "" i__5[0] = lnote, a__4[0] = notexq; -#line 16246 "" +#line 16240 "" i__5[1] = 1, a__4[1] = "{"; -#line 16246 "" +#line 16240 "" i__5[2] = lnoten, a__4[2] = noteq; -#line 16246 "" +#line 16240 "" i__5[3] = 1, a__4[3] = "}"; -#line 16246 "" +#line 16240 "" s_cat(notexq, a__4, i__5, &c__4, (ftnlen)128); -#line 16247 "" +#line 16241 "" lnote = lnote + 1 + lnoten + 1; -#line 16248 "" +#line 16242 "" } -#line 16249 "" +#line 16243 "" if (*ispstie) { /* Horizontal shift start of new thing */ /* Writing concatenation */ -#line 16253 "" +#line 16247 "" i__2[0] = lnote, a__1[0] = notexq; -#line 16253 "" +#line 16247 "" i__2[1] = 1, a__1[1] = "{"; -#line 16253 "" +#line 16247 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)128); -#line 16254 "" +#line 16248 "" ++lnote; /* ihoff = ihoff-13 */ -#line 16256 "" +#line 16250 "" if (tie) { -#line 16257 "" +#line 16251 "" ihoff += -12; -#line 16258 "" +#line 16252 "" } else { -#line 16259 "" +#line 16253 "" ihoff += -7; -#line 16260 "" +#line 16254 "" } -#line 16261 "" +#line 16255 "" if (ihoff < 0) { -#line 16262 "" +#line 16256 "" ihoff = -ihoff; /* Writing concatenation */ -#line 16263 "" +#line 16257 "" i__2[0] = lnote, a__1[0] = notexq; -#line 16263 "" +#line 16257 "" i__2[1] = 1, a__1[1] = "-"; -#line 16263 "" +#line 16257 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)128); -#line 16264 "" +#line 16258 "" ++lnote; -#line 16265 "" +#line 16259 "" } -#line 16266 "" +#line 16260 "" r__1 = ihoff * .1f; -#line 16266 "" +#line 16260 "" writflot_(&r__1, notexq, &lnote, (ftnlen)128); /* Writing concatenation */ -#line 16267 "" +#line 16261 "" i__2[0] = lnote, a__1[0] = notexq; -#line 16267 "" +#line 16261 "" i__2[1] = 1, a__1[1] = "}"; -#line 16267 "" +#line 16261 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)128); -#line 16268 "" +#line 16262 "" ++lnote; -#line 16269 "" +#line 16263 "" } /* Add closing stuff */ -#line 16273 "" +#line 16267 "" if (*ispstie) { /* Writing concatenation */ -#line 16274 "" +#line 16268 "" i__4[0] = lnote, a__3[0] = notexq; -#line 16274 "" +#line 16268 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16274 "" +#line 16268 "" i__4[1] = 1, a__3[1] = ch__1; -#line 16274 "" +#line 16268 "" i__4[2] = 4, a__3[2] = "off{"; -#line 16274 "" +#line 16268 "" chax_(ch__2, (ftnlen)1, &c__92); -#line 16274 "" +#line 16268 "" i__4[3] = 1, a__3[3] = ch__2; -#line 16274 "" +#line 16268 "" i__4[4] = 14, a__3[4] = "afterruleskip}"; -#line 16274 "" +#line 16268 "" s_cat(notexq, a__3, i__4, &c__5, (ftnlen)128); -#line 16276 "" +#line 16270 "" lnote += 20; -#line 16277 "" +#line 16271 "" } else { /* Writing concatenation */ -#line 16278 "" +#line 16272 "" i__2[0] = lnote, a__1[0] = notexq; -#line 16278 "" +#line 16272 "" i__2[1] = 1, a__1[1] = "}"; -#line 16278 "" +#line 16272 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)128); -#line 16279 "" +#line 16273 "" ++lnote; -#line 16280 "" +#line 16274 "" } /* Writing concatenation */ -#line 16281 "" +#line 16275 "" i__3[0] = lnote, a__2[0] = notexq; -#line 16281 "" +#line 16275 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16281 "" +#line 16275 "" i__3[1] = 1, a__2[1] = ch__1; -#line 16281 "" +#line 16275 "" i__3[2] = 3, a__2[2] = "en%"; -#line 16281 "" +#line 16275 "" s_cat(notexq, a__2, i__3, &c__3, (ftnlen)128); -#line 16282 "" +#line 16276 "" lnote += 4; -#line 16283 "" - s_wsfe(&io___951); -#line 16283 "" +#line 16277 "" + s_wsfe(&io___946); +#line 16277 "" do_fio(&c__1, notexq, lnote); -#line 16283 "" +#line 16277 "" e_wsfe(); -#line 16284 "" +#line 16278 "" L1: -#line 16284 "" +#line 16278 "" ; -#line 16284 "" +#line 16278 "" } -#line 16285 "" +#line 16279 "" *ispstie = ! (*ispstie); -#line 16286 "" +#line 16280 "" return 0; } /* linebreakties_ */ @@ -38810,250 +38747,250 @@ L1: ftnlen); /* Fortran I/O blocks */ - static cilist io___955 = { 0, 6, 0, 0, 0 }; - static cilist io___956 = { 0, 6, 0, 0, 0 }; - static cilist io___957 = { 0, 15, 0, "(/,a)", 0 }; - static cilist io___958 = { 0, 11, 0, "(a)", 0 }; - static cilist io___959 = { 0, 16, 0, "(a)", 0 }; + static cilist io___950 = { 0, 6, 0, 0, 0 }; + static cilist io___951 = { 0, 6, 0, 0, 0 }; + static cilist io___952 = { 0, 15, 0, "(/,a)", 0 }; + static cilist io___953 = { 0, 11, 0, "(a)", 0 }; + static cilist io___954 = { 0, 16, 0, "(a)", 0 }; -#line 16304 "" +#line 16298 "" /* Parameter adjustments */ -#line 16304 "" +#line 16298 "" islur -= 25; -#line 16304 "" +#line 16298 "" -#line 16304 "" +#line 16298 "" /* Function Body */ -#line 16304 "" +#line 16298 "" merge = FALSE_; -#line 16305 "" +#line 16299 "" if (comgrace_1.nlit > 0) { -#line 16306 "" +#line 16300 "" merge = *iv == comgrace_1.ivlit[comgrace_1.nlit - 1] && *nnl == comgrace_1.iplit[comgrace_1.nlit - 1]; -#line 16307 "" +#line 16301 "" } -#line 16308 "" +#line 16302 "" ++comgrace_1.nlit; -#line 16309 "" +#line 16303 "" comgrace_1.ivlit[comgrace_1.nlit - 1] = *iv; -#line 16310 "" +#line 16304 "" comgrace_1.iplit[comgrace_1.nlit - 1] = *nnl; -#line 16311 "" +#line 16305 "" itype = 1; -#line 16312 "" +#line 16306 "" L17: -#line 16312 "" +#line 16306 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 16313 "" +#line 16307 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16313 "" +#line 16307 "" if (*(unsigned char *)durq == *(unsigned char *)&ch__1[0]) { -#line 16314 "" +#line 16308 "" ++itype; -#line 16315 "" +#line 16309 "" goto L17; -#line 16316 "" +#line 16310 "" } /* Writing concatenation */ -#line 16317 "" +#line 16311 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16317 "" +#line 16311 "" i__1[0] = 1, a__1[0] = ch__1; -#line 16317 "" +#line 16311 "" i__1[1] = 1, a__1[1] = durq; -#line 16317 "" +#line 16311 "" s_cat(comgrace_1.litq + (comgrace_1.nlit - 1 << 7), a__1, i__1, &c__2, ( ftnlen)128); -#line 16318 "" +#line 16312 "" comgrace_1.lenlit[comgrace_1.nlit - 1] = 2; -#line 16319 "" +#line 16313 "" L18: -#line 16319 "" +#line 16313 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 16320 "" +#line 16314 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16320 "" +#line 16314 "" if (*(unsigned char *)durq == *(unsigned char *)&ch__1[0]) { -#line 16321 "" +#line 16315 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 16322 "" +#line 16316 "" if (*(unsigned char *)durq != ' ') { /* Starting a new tex command within the string */ /* Writing concatenation */ -#line 16326 "" +#line 16320 "" i__2[0] = comgrace_1.lenlit[comgrace_1.nlit - 1], a__2[0] = comgrace_1.litq + (comgrace_1.nlit - 1 << 7); -#line 16326 "" +#line 16320 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 16326 "" +#line 16320 "" i__2[1] = 1, a__2[1] = ch__1; -#line 16326 "" +#line 16320 "" i__2[2] = 1, a__2[2] = durq; -#line 16326 "" +#line 16320 "" s_cat(comgrace_1.litq + (comgrace_1.nlit - 1 << 7), a__2, i__2, & c__3, (ftnlen)128); -#line 16327 "" +#line 16321 "" comgrace_1.lenlit[comgrace_1.nlit - 1] += 2; -#line 16328 "" +#line 16322 "" goto L18; -#line 16329 "" +#line 16323 "" } -#line 16330 "" +#line 16324 "" } else { /* Writing concatenation */ -#line 16331 "" +#line 16325 "" i__1[0] = comgrace_1.lenlit[comgrace_1.nlit - 1], a__1[0] = comgrace_1.litq + (comgrace_1.nlit - 1 << 7); -#line 16331 "" +#line 16325 "" i__1[1] = 1, a__1[1] = durq; -#line 16331 "" +#line 16325 "" s_cat(comgrace_1.litq + (comgrace_1.nlit - 1 << 7), a__1, i__1, &c__2, (ftnlen)128); -#line 16332 "" +#line 16326 "" ++comgrace_1.lenlit[comgrace_1.nlit - 1]; -#line 16333 "" +#line 16327 "" goto L18; -#line 16334 "" +#line 16328 "" } /* If here, just read backslash-blank so string is done */ -#line 16338 "" +#line 16332 "" if (itype == 1) { -#line 16339 "" +#line 16333 "" islur[*iv + *nnl * 24] = bit_set(islur[*iv + *nnl * 24],16); -#line 16340 "" +#line 16334 "" if (merge) { /* There are 2 separate strings on the same note, so merge them. */ -#line 16344 "" +#line 16338 "" --comgrace_1.nlit; /* Writing concatenation */ -#line 16345 "" +#line 16339 "" i__1[0] = comgrace_1.lenlit[comgrace_1.nlit - 1], a__1[0] = comgrace_1.litq + (comgrace_1.nlit - 1 << 7); -#line 16345 "" +#line 16339 "" i__1[1] = comgrace_1.lenlit[comgrace_1.nlit], a__1[1] = comgrace_1.litq + (comgrace_1.nlit << 7); -#line 16345 "" +#line 16339 "" s_cat(comgrace_1.litq + (comgrace_1.nlit - 1 << 7), a__1, i__1, & c__2, (ftnlen)128); -#line 16347 "" +#line 16341 "" comgrace_1.lenlit[comgrace_1.nlit - 1] += comgrace_1.lenlit[ comgrace_1.nlit]; -#line 16348 "" +#line 16342 "" if (comgrace_1.lenlit[comgrace_1.nlit - 1] > 128) { -#line 16349 "" - s_wsle(&io___955); -#line 16349 "" +#line 16343 "" + s_wsle(&io___950); +#line 16343 "" e_wsle(); -#line 16350 "" - s_wsle(&io___956); -#line 16350 "" +#line 16344 "" + s_wsle(&io___951); +#line 16344 "" do_lio(&c__9, &c__1, "Merged type-1 TeX strings longer than "\ "128 characters", (ftnlen)52); -#line 16350 "" +#line 16344 "" e_wsle(); -#line 16352 "" - s_wsfe(&io___957); -#line 16352 "" +#line 16346 "" + s_wsfe(&io___952); +#line 16346 "" do_fio(&c__1, "Merged type-1 TeX strings longer than 128 cha"\ "racters", (ftnlen)52); -#line 16352 "" +#line 16346 "" e_wsfe(); -#line 16354 "" +#line 16348 "" stop1_(); -#line 16355 "" +#line 16349 "" } -#line 16356 "" +#line 16350 "" } -#line 16357 "" +#line 16351 "" } else { /* Type 2 or 3. */ -#line 16361 "" +#line 16355 "" if (itype == 3) { /* Write the string NOW */ -#line 16365 "" +#line 16359 "" if (comlast_1.islast) { -#line 16365 "" - s_wsfe(&io___958); +#line 16359 "" + s_wsfe(&io___953); /* Writing concatenation */ -#line 16365 "" +#line 16359 "" i__1[0] = comgrace_1.lenlit[comgrace_1.nlit - 1], a__1[0] = comgrace_1.litq + (comgrace_1.nlit - 1 << 7); -#line 16365 "" +#line 16359 "" i__1[1] = 1, a__1[1] = "%"; -#line 16365 "" +#line 16359 "" s_cat(ch__2, a__1, i__1, &c__2, (ftnlen)129); -#line 16365 "" +#line 16359 "" do_fio(&c__1, ch__2, comgrace_1.lenlit[comgrace_1.nlit - 1] + 1); -#line 16365 "" +#line 16359 "" e_wsfe(); -#line 16365 "" +#line 16359 "" } -#line 16367 "" +#line 16361 "" } else { /* Must go at top */ -#line 16371 "" +#line 16365 "" if (! (*topmods)) { -#line 16372 "" +#line 16366 "" *topmods = TRUE_; -#line 16373 "" +#line 16367 "" o__1.oerr = 0; -#line 16373 "" +#line 16367 "" o__1.ounit = 16; -#line 16373 "" +#line 16367 "" o__1.ofnm = 0; -#line 16373 "" +#line 16367 "" o__1.orl = 0; -#line 16373 "" +#line 16367 "" o__1.osta = "SCRATCH"; -#line 16373 "" +#line 16367 "" o__1.oacc = 0; -#line 16373 "" +#line 16367 "" o__1.ofm = 0; -#line 16373 "" +#line 16367 "" o__1.oblnk = 0; -#line 16373 "" +#line 16367 "" f_open(&o__1); -#line 16374 "" +#line 16368 "" } /* Must write '%' here rather than later, in case string ends with blank. */ -#line 16378 "" - s_wsfe(&io___959); +#line 16372 "" + s_wsfe(&io___954); /* Writing concatenation */ -#line 16378 "" +#line 16372 "" i__1[0] = comgrace_1.lenlit[comgrace_1.nlit - 1], a__1[0] = comgrace_1.litq + (comgrace_1.nlit - 1 << 7); -#line 16378 "" +#line 16372 "" i__1[1] = 1, a__1[1] = "%"; -#line 16378 "" +#line 16372 "" s_cat(ch__2, a__1, i__1, &c__2, (ftnlen)129); -#line 16378 "" +#line 16372 "" do_fio(&c__1, ch__2, comgrace_1.lenlit[comgrace_1.nlit - 1] + 1); -#line 16378 "" +#line 16372 "" e_wsfe(); -#line 16379 "" +#line 16373 "" } -#line 16380 "" +#line 16374 "" --comgrace_1.nlit; -#line 16381 "" +#line 16375 "" } -#line 16382 "" +#line 16376 "" return 0; } /* littex_ */ @@ -39062,19 +38999,19 @@ integer llen_(char *strq, integer *n, ftnlen strq_len) /* System generated locals */ integer ret_val; -#line 16386 "" +#line 16380 "" for (ret_val = *n; ret_val >= 0; --ret_val) { -#line 16387 "" +#line 16381 "" if (*(unsigned char *)&strq[ret_val - 1] != ' ') { -#line 16387 "" +#line 16381 "" return ret_val; -#line 16387 "" +#line 16381 "" } -#line 16388 "" +#line 16382 "" /* L1: */ -#line 16388 "" +#line 16382 "" } -#line 16389 "" +#line 16383 "" return ret_val; } /* llen_ */ @@ -39091,9 +39028,9 @@ integer log2_(integer *n) /* log2 = alog(1.*n)/0.6931472+.0001 */ /* log2 = dlog(1.d0*n)/0.693147181d0+.00000001d0 */ -#line 16396 "" +#line 16390 "" ret_val = (integer) (log(*n * 1.) / .693147181 + 2e-8); -#line 16397 "" +#line 16391 "" return ret_val; } /* log2_ */ @@ -39121,242 +39058,242 @@ integer log2_(integer *n) extern /* Subroutine */ int setbits_(integer *, integer *, integer *, integer *); -#line 16416 "" +#line 16410 "" all_1.ibm1[commvl_1.ivx + *numnew * 24 - 25] = *nip1; -#line 16417 "" +#line 16411 "" all_1.ibm2[commvl_1.ivx + *numnew * 24 - 25] = *nip2; -#line 16418 "" +#line 16412 "" numnow = *numnew; -#line 16419 "" +#line 16413 "" if (*numnew > 1) { /* If it starts before any others, must put it in order */ -#line 16423 "" +#line 16417 "" for (ib = *numnew - 1; ib >= 1; --ib) { -#line 16424 "" +#line 16418 "" if (all_1.ibm1[commvl_1.ivx + ib * 24 - 25] < *nip1) { -#line 16424 "" +#line 16418 "" goto L12; -#line 16424 "" +#line 16418 "" } -#line 16425 "" +#line 16419 "" all_1.ibm1[commvl_1.ivx + (ib + 1) * 24 - 25] = all_1.ibm1[ commvl_1.ivx + ib * 24 - 25]; -#line 16426 "" +#line 16420 "" all_1.ibm2[commvl_1.ivx + (ib + 1) * 24 - 25] = all_1.ibm2[ commvl_1.ivx + ib * 24 - 25]; -#line 16427 "" +#line 16421 "" *(unsigned char *)&all_1.ulq[commvl_1.ivx + (ib + 1) * 24 - 25] = *(unsigned char *)&all_1.ulq[commvl_1.ivx + ib * 24 - 25]; -#line 16428 "" +#line 16422 "" all_1.ibm1[commvl_1.ivx + ib * 24 - 25] = *nip1; -#line 16429 "" +#line 16423 "" all_1.ibm2[commvl_1.ivx + ib * 24 - 25] = *nip2; -#line 16430 "" +#line 16424 "" numnow = ib; -#line 16431 "" +#line 16425 "" /* L11: */ -#line 16431 "" +#line 16425 "" } -#line 16432 "" +#line 16426 "" L12: -#line 16433 "" +#line 16427 "" ; -#line 16433 "" +#line 16427 "" } -#line 16434 "" +#line 16428 "" sum = 0.f; /* Beam has non-xtup within */ -#line 16438 "" +#line 16432 "" nrests = 0; -#line 16439 "" +#line 16433 "" isxtup = FALSE_; -#line 16440 "" +#line 16434 "" i__1 = *nip2; -#line 16440 "" +#line 16434 "" for (iip = *nip1; iip <= i__1; ++iip) { -#line 16441 "" +#line 16435 "" if (bit_test(all_1.islur[commvl_1.ivx + *nip1 * 24 - 25],21)) { /* Forced multiplicity */ -#line 16445 "" +#line 16439 "" i__2 = igetbits_(&all_1.islur[commvl_1.ivx + *nip1 * 24 - 25], & c__3, &c__22) + 8; -#line 16445 "" +#line 16439 "" setbits_(&all_1.mult[commvl_1.ivx + iip * 24 - 25], &c__4, &c__0, &i__2); -#line 16447 "" +#line 16441 "" } else if (! isxtup) { -#line 16448 "" +#line 16442 "" if (all_1.nodur[commvl_1.ivx + iip * 24 - 25] > 0) { -#line 16449 "" +#line 16443 "" i__2 = 4 - log2_(&all_1.nodur[commvl_1.ivx + iip * 24 - 25]) + 8; -#line 16449 "" +#line 16443 "" setbits_(&all_1.mult[commvl_1.ivx + iip * 24 - 25], &c__4, & c__0, &i__2); -#line 16450 "" +#line 16444 "" } else { /* Start xtup within forced beam */ -#line 16454 "" +#line 16448 "" isxtup = TRUE_; -#line 16455 "" +#line 16449 "" iip1 = iip; -#line 16456 "" +#line 16450 "" } -#line 16457 "" +#line 16451 "" } else if (isxtup && all_1.nodur[commvl_1.ivx + iip * 24 - 25] > 0) { /* End of xtup within forced beam. Must count doubled notes */ -#line 16461 "" +#line 16455 "" ndoub = 0; -#line 16462 "" +#line 16456 "" i__2 = iip; -#line 16462 "" +#line 16456 "" for (iiip = iip1; iiip <= i__2; ++iiip) { -#line 16463 "" +#line 16457 "" if (bit_test(all_1.nacc[commvl_1.ivx + iiip * 24 - 25],18)) { -#line 16463 "" +#line 16457 "" ++ndoub; -#line 16463 "" +#line 16457 "" } -#line 16464 "" +#line 16458 "" /* L1: */ -#line 16464 "" +#line 16458 "" } -#line 16465 "" +#line 16459 "" multx = (integer) ((log(iip + 1.f - iip1 + ndoub) * .952f - log( all_1.nodur[commvl_1.ivx + iip * 24 - 25] / 2.f)) / .69315f + 13.429f) - 10; -#line 16467 "" +#line 16461 "" i__2 = iip; -#line 16467 "" +#line 16461 "" for (iiip = iip1; iiip <= i__2; ++iiip) { -#line 16468 "" +#line 16462 "" i__3 = multx + 8; -#line 16468 "" +#line 16462 "" setbits_(&all_1.mult[commvl_1.ivx + iiip * 24 - 25], &c__4, & c__0, &i__3); /* Note the following still works after making mult only the 1st 4 bits. */ -#line 16472 "" +#line 16466 "" if (bit_test(all_1.nacc[commvl_1.ivx + iiip * 24 - 25],18)) { -#line 16472 "" +#line 16466 "" --all_1.mult[commvl_1.ivx + iiip * 24 - 25]; -#line 16472 "" +#line 16466 "" } -#line 16474 "" +#line 16468 "" if (bit_test(all_1.nacc[commvl_1.ivx + iiip * 24 - 25],19)) { -#line 16475 "" +#line 16469 "" ++all_1.mult[commvl_1.ivx + iiip * 24 - 25]; -#line 16476 "" +#line 16470 "" } else if (iiip > 1) { -#line 16477 "" +#line 16471 "" if (bit_test(all_1.nacc[commvl_1.ivx + (iiip - 1) * 24 - 25],19)) { -#line 16477 "" +#line 16471 "" ++all_1.mult[commvl_1.ivx + iiip * 24 - 25]; -#line 16477 "" +#line 16471 "" } -#line 16479 "" +#line 16473 "" } -#line 16480 "" +#line 16474 "" /* L74: */ -#line 16480 "" +#line 16474 "" } -#line 16481 "" +#line 16475 "" isxtup = FALSE_; -#line 16482 "" +#line 16476 "" } -#line 16483 "" +#line 16477 "" if (bit_test(all_1.irest[commvl_1.ivx + iip * 24 - 25],0)) { -#line 16484 "" +#line 16478 "" ++nrests; -#line 16485 "" +#line 16479 "" } else { -#line 16486 "" +#line 16480 "" sum += all_1.nolev[commvl_1.ivx + iip * 24 - 25]; -#line 16487 "" +#line 16481 "" } -#line 16488 "" +#line 16482 "" /* L9: */ -#line 16488 "" +#line 16482 "" } /* Set beam up-down-ness */ -#line 16492 "" +#line 16486 "" if (comfb_1.ifb > 0 && *(unsigned char *)&comfb_1.ulfbq[commvl_1.ivx + max(1,comfb_1.ifb) * 24 - 25] != 'x') { -#line 16493 "" +#line 16487 "" if (*(unsigned char *)&comfb_1.ulfbq[commvl_1.ivx + comfb_1.ifb * 24 - 25] == 'f') { /* Get default, then trade "l" and "u" */ -#line 16497 "" +#line 16491 "" r__1 = sum / (*nip2 - *nip1 + 1 - nrests); -#line 16497 "" +#line 16491 "" i__1 = ncmid_(&all_1.iv, nip1); -#line 16497 "" +#line 16491 "" ulfq_(ch__1, (ftnlen)1, &r__1, &i__1); -#line 16497 "" +#line 16491 "" *(unsigned char *)&all_1.ulq[commvl_1.ivx + numnow * 24 - 25] = ( char) (225 - *(unsigned char *)&ch__1[0]); -#line 16499 "" +#line 16493 "" } else { -#line 16500 "" +#line 16494 "" *(unsigned char *)&all_1.ulq[commvl_1.ivx + comfb_1.ifb * 24 - 25] = *(unsigned char *)&comfb_1.ulfbq[commvl_1.ivx + comfb_1.ifb * 24 - 25]; -#line 16501 "" +#line 16495 "" } /* This probably works only because forced beams are done first, so they */ /* don't have to be re-sorted within each voice. ???? */ -#line 16506 "" +#line 16500 "" } else if (commvl_1.nvmx[all_1.iv - 1] == 2) { /* Multi-voice per staff */ -#line 16510 "" +#line 16504 "" if (commvl_1.ivx <= all_1.nv) { -#line 16511 "" +#line 16505 "" *(unsigned char *)&all_1.ulq[commvl_1.ivx + numnow * 24 - 25] = 'l'; -#line 16512 "" +#line 16506 "" } else { -#line 16513 "" +#line 16507 "" *(unsigned char *)&all_1.ulq[commvl_1.ivx + numnow * 24 - 25] = 'u'; -#line 16514 "" +#line 16508 "" } -#line 16515 "" +#line 16509 "" } else { /* Defaults */ -#line 16519 "" +#line 16513 "" r__1 = sum / (*nip2 - *nip1 + 1 - nrests); -#line 16519 "" +#line 16513 "" i__1 = ncmid_(&all_1.iv, nip1); -#line 16519 "" +#line 16513 "" ulfq_(ch__1, (ftnlen)1, &r__1, &i__1); -#line 16519 "" +#line 16513 "" *(unsigned char *)&all_1.ulq[commvl_1.ivx + numnow * 24 - 25] = *( unsigned char *)&ch__1[0]; -#line 16521 "" +#line 16515 "" } -#line 16522 "" +#line 16516 "" return 0; } /* logbeam_ */ @@ -39379,73 +39316,73 @@ L12: /* This is called when (a) macro recording is just starting and */ /* (b) at the start of a new line, if recording is on */ -#line 16538 "" +#line 16532 "" inbuff_1.lbuf[0] = inbuff_1.lbuf[0]; -#line 16539 "" +#line 16533 "" if (! commac_1.mrecord) { /* Starting the macro */ -#line 16543 "" +#line 16537 "" c1ommac_1.ip1mac[commac_1.macnum - 1] = inbuff_1.ipbuf - inbuff_1.lbuf[inbuff_1.ilbuf - 2] + *iccount; -#line 16544 "" +#line 16538 "" c1ommac_1.il1mac[commac_1.macnum - 1] = inbuff_1.ilbuf - 1; -#line 16545 "" +#line 16539 "" c1ommac_1.ic1mac[commac_1.macnum - 1] = *iccount; -#line 16546 "" +#line 16540 "" commac_1.mrecord = TRUE_; -#line 16547 "" +#line 16541 "" } -#line 16548 "" +#line 16542 "" if (*iccount < 128) { -#line 16549 "" +#line 16543 "" i__1 = *iccount; -#line 16549 "" +#line 16543 "" *ndxm = i_indx(lineq + i__1, "M", 128 - i__1, (ftnlen)1); -#line 16550 "" +#line 16544 "" if (*ndxm > 0) { -#line 16550 "" +#line 16544 "" i__1 = *iccount; -#line 16550 "" +#line 16544 "" i__2 = 128 - *iccount; -#line 16550 "" +#line 16544 "" *ndxm = ntindex_(lineq + i__1, "M", &i__2, 128 - i__1, (ftnlen)1); -#line 16550 "" +#line 16544 "" } -#line 16552 "" +#line 16546 "" if (*ndxm > 0) { /* This line ends the macro. */ -#line 16556 "" +#line 16550 "" i__1 = *iccount + *ndxm; -#line 16556 "" +#line 16550 "" if (s_cmp(lineq + i__1, " ", *iccount + *ndxm + 1 - i__1, (ftnlen) 1) != 0) { -#line 16557 "" +#line 16551 "" i__1 = *iccount + *ndxm + 1; -#line 16557 "" +#line 16551 "" i__2 = *ibarcnt - *ibaroff + *nbars + 1; -#line 16557 "" +#line 16551 "" errmsg_(lineq, &i__1, &i__2, "Improper macro termination!", ( ftnlen)128, (ftnlen)27); -#line 16559 "" +#line 16553 "" stop1_(); -#line 16560 "" +#line 16554 "" } -#line 16561 "" +#line 16555 "" c1ommac_1.ip2mac[commac_1.macnum - 1] = inbuff_1.ipbuf - inbuff_1.lbuf[inbuff_1.ilbuf - 2] + *iccount + *ndxm; -#line 16562 "" +#line 16556 "" c1ommac_1.il2mac[commac_1.macnum - 1] = inbuff_1.ilbuf - 1; -#line 16563 "" +#line 16557 "" commac_1.mrecord = FALSE_; -#line 16564 "" +#line 16558 "" } -#line 16565 "" +#line 16559 "" } -#line 16566 "" +#line 16560 "" return 0; } /* m1rec1_ */ @@ -39494,182 +39431,182 @@ L12: setbits_(integer *, integer *, integer *, integer *); /* Fortran I/O blocks */ - static cilist io___1004 = { 0, 6, 0, 0, 0 }; - static cilist io___1005 = { 0, 6, 0, 0, 0 }; - static cilist io___1006 = { 0, 15, 0, "(/a)", 0 }; + static cilist io___999 = { 0, 6, 0, 0, 0 }; + static cilist io___1000 = { 0, 6, 0, 0, 0 }; + static cilist io___1001 = { 0, 15, 0, "(/a)", 0 }; /* Above are factors for grace note, clef spacing. (fraction of wheadpt) */ /* In 1.04, moved to block data subprogram */ -#line 16658 "" +#line 16652 "" /* Parameter adjustments */ -#line 16658 "" +#line 16652 "" --istart; -#line 16658 "" +#line 16652 "" --numbms; -#line 16658 "" +#line 16652 "" --istop; -#line 16658 "" +#line 16652 "" --squez; -#line 16658 "" +#line 16652 "" --cwrest; -#line 16658 "" +#line 16652 "" --tstart; -#line 16658 "" +#line 16652 "" -#line 16658 "" +#line 16652 "" /* Function Body */ -#line 16658 "" +#line 16652 "" if (commidi_1.ismidi) { /* Initialize for this bar the accidental counter for the midi file. */ /* naccim(icm) = # of accidentals from earlier in the bar */ -#line 16663 "" +#line 16657 "" i__1 = all_1.nv; -#line 16663 "" +#line 16657 "" for (all_1.iv = 1; all_1.iv <= i__1; ++all_1.iv) { -#line 16664 "" +#line 16658 "" i__2 = commvl_1.nvmx[all_1.iv - 1]; -#line 16664 "" +#line 16658 "" for (kv = 1; kv <= i__2; ++kv) { -#line 16665 "" +#line 16659 "" commidi_1.naccim[commidi_1.midchan[all_1.iv + kv * 24 - 25]] = 0; -#line 16666 "" +#line 16660 "" /* L45: */ -#line 16666 "" +#line 16660 "" } -#line 16666 "" +#line 16660 "" } -#line 16667 "" +#line 16661 "" } /* Time from start of gulp to end of bar, used with forced beams */ -#line 16671 "" +#line 16665 "" tglp2 = (real) (all_1.lenb0 + all_1.ibar * all_1.lenb1); -#line 16672 "" +#line 16666 "" if (all_1.lenb0 > 0) { -#line 16672 "" +#line 16666 "" tglp2 -= all_1.lenb1; -#line 16672 "" +#line 16666 "" } -#line 16673 "" +#line 16667 "" *tglp1 = tglp2 - all_1.lenbar; /* infbmx will only be true if in xtup that is NOT in explicit forced beam. */ -#line 16677 "" +#line 16671 "" i__2 = all_1.nv; -#line 16677 "" +#line 16671 "" for (all_1.iv = 1; all_1.iv <= i__2; ++all_1.iv) { -#line 16678 "" +#line 16672 "" i__1 = commvl_1.nvmx[all_1.iv - 1]; -#line 16678 "" +#line 16672 "" for (kv = 1; kv <= i__1; ++kv) { -#line 16679 "" +#line 16673 "" commvl_1.ivx = commvl_1.ivmx[all_1.iv + kv * 24 - 25]; -#line 16680 "" +#line 16674 "" cwrest[commvl_1.ivx] = FALSE_; -#line 16681 "" +#line 16675 "" infbmx[commvl_1.ivx - 1] = FALSE_; -#line 16682 "" +#line 16676 "" inxtup[commvl_1.ivx - 1] = FALSE_; -#line 16683 "" +#line 16677 "" if (all_1.ibar > 1) { -#line 16684 "" +#line 16678 "" all_1.nn[commvl_1.ivx - 1] = all_1.nib[commvl_1.ivx + all_1.ibar * 24 - 25] - all_1.nib[commvl_1.ivx + ( all_1.ibar - 1) * 24 - 25]; -#line 16685 "" +#line 16679 "" } else { -#line 16686 "" +#line 16680 "" all_1.nn[commvl_1.ivx - 1] = all_1.nib[commvl_1.ivx + all_1.ibar * 24 - 25]; -#line 16687 "" +#line 16681 "" } -#line 16688 "" +#line 16682 "" /* L1: */ -#line 16688 "" +#line 16682 "" } -#line 16688 "" +#line 16682 "" } /* initialize list note counter, time(iv), curr. note(iv). The loop to 4 */ /* ONLY initializes each voice. */ -#line 16693 "" +#line 16687 "" in = 1; -#line 16694 "" +#line 16688 "" nxtup = 0; -#line 16695 "" +#line 16689 "" comarp_1.narp = 0; -#line 16696 "" +#line 16690 "" i__1 = all_1.nv; -#line 16696 "" +#line 16690 "" for (all_1.iv = 1; all_1.iv <= i__1; ++all_1.iv) { -#line 16697 "" +#line 16691 "" i__2 = commvl_1.nvmx[all_1.iv - 1]; -#line 16697 "" +#line 16691 "" for (kv = 1; kv <= i__2; ++kv) { -#line 16698 "" +#line 16692 "" commvl_1.ivx = commvl_1.ivmx[all_1.iv + kv * 24 - 25]; -#line 16699 "" +#line 16693 "" comcwrf_1.cwrferm[commvl_1.ivx - 1] = FALSE_; -#line 16700 "" +#line 16694 "" cnn[commvl_1.ivx - 1] = 1; -#line 16701 "" +#line 16695 "" all_1.ivxo[in - 1] = commvl_1.ivx; -#line 16702 "" +#line 16696 "" all_1.ipo[in - 1] = cnn[commvl_1.ivx - 1]; -#line 16703 "" +#line 16697 "" all_1.tnote[in - 1] = fnote_(all_1.nodur, &commvl_1.ivx, &c__1, all_1.nacc); -#line 16704 "" +#line 16698 "" all_1.to[in - 1] = 0.f; -#line 16705 "" +#line 16699 "" xit[commvl_1.ivx - 1] = all_1.tnote[in - 1]; /* Note that xit(ivx) is to END of note in voice, but it1xtup is start time. */ -#line 16709 "" +#line 16703 "" if (all_1.nodur[commvl_1.ivx + all_1.ipo[in - 1] * 24 - 25] == 0) { /* First note of xtuplet at start of bar in voice ivx. */ -#line 16713 "" +#line 16707 "" ++nxtup; -#line 16714 "" +#line 16708 "" nxtnow[commvl_1.ivx - 1] = nxtup; -#line 16715 "" +#line 16709 "" inxtup[commvl_1.ivx - 1] = TRUE_; -#line 16716 "" +#line 16710 "" t1xtup[nxtup - 1] = 0.f; /* Xtup at start of bar. If no explicit forced beam, start one, set */ /* signal infbmx, and save number ifbnow for use at termination. */ -#line 16721 "" +#line 16715 "" if (comfb_1.nfb[commvl_1.ivx - 1] > 0) { -#line 16722 "" +#line 16716 "" i__3 = comfb_1.nfb[commvl_1.ivx - 1]; -#line 16722 "" +#line 16716 "" for (comfb_1.ifb = 1; comfb_1.ifb <= i__3; ++comfb_1.ifb) { -#line 16723 "" +#line 16717 "" if (comfb_1.t1fb[commvl_1.ivx + comfb_1.ifb * 24 - 25] > *tglp1 + xit[commvl_1.ivx - 1] + comtol_1.tol) { /* No explicit fb here; so exit loop and insert one. */ -#line 16727 "" +#line 16721 "" goto L61; -#line 16728 "" +#line 16722 "" } else if (comfb_1.t1fb[commvl_1.ivx + comfb_1.ifb * 24 - 25] < *tglp1 + xit[commvl_1.ivx - 1] + comtol_1.tol && comfb_1.t2fb[commvl_1.ivx + @@ -39678,156 +39615,156 @@ L12: /* IS explicit fb here; must NOT insert one */ -#line 16733 "" +#line 16727 "" goto L62; -#line 16734 "" +#line 16728 "" } -#line 16735 "" +#line 16729 "" /* L60: */ -#line 16735 "" +#line 16729 "" } -#line 16736 "" +#line 16730 "" } -#line 16737 "" +#line 16731 "" L61: /* If here, xtup isn't in explicit fb, so must insert one */ -#line 16741 "" +#line 16735 "" infbmx[commvl_1.ivx - 1] = TRUE_; -#line 16742 "" +#line 16736 "" r__1 = t1xtup[nxtup - 1] + *tglp1; -#line 16742 "" +#line 16736 "" addfb_(comfb_1.nfb, &commvl_1.ivx, &r__1, comfb_1.t1fb, comfb_1.t2fb, comfb_1.ulfbq, &ifbadd, (ftnlen)1); -#line 16744 "" +#line 16738 "" ifbnow[commvl_1.ivx - 1] = ifbadd; -#line 16745 "" +#line 16739 "" } -#line 16746 "" +#line 16740 "" L62: -#line 16747 "" +#line 16741 "" if ((r__1 = xit[commvl_1.ivx - 1] - all_1.lenbar, dabs(r__1)) < comtol_1.tol) { -#line 16747 "" +#line 16741 "" xit[commvl_1.ivx - 1] = 1e3f; -#line 16747 "" +#line 16741 "" } -#line 16748 "" +#line 16742 "" ++in; -#line 16749 "" +#line 16743 "" /* L4: */ -#line 16749 "" +#line 16743 "" } -#line 16749 "" +#line 16743 "" } /* Build the list: This is a manual loop starting at 5 */ -#line 16753 "" +#line 16747 "" L5: /* Determine which voice comes next from end of notes done so far. */ /* tmin is the earliest ending time of notes done so far */ -#line 16758 "" +#line 16752 "" tmin = 1e3f; -#line 16759 "" +#line 16753 "" i__2 = all_1.nv; -#line 16759 "" +#line 16753 "" for (iiv = 1; iiv <= i__2; ++iiv) { -#line 16760 "" +#line 16754 "" i__1 = commvl_1.nvmx[iiv - 1]; -#line 16760 "" +#line 16754 "" for (kv = 1; kv <= i__1; ++kv) { -#line 16761 "" +#line 16755 "" iivx = commvl_1.ivmx[iiv + kv * 24 - 25]; /* Computing MIN */ -#line 16762 "" +#line 16756 "" r__1 = tmin, r__2 = xit[iivx - 1]; -#line 16762 "" +#line 16756 "" tminn = dmin(r__1,r__2); -#line 16763 "" +#line 16757 "" if (tminn < tmin - comtol_1.tol) { -#line 16764 "" +#line 16758 "" tmin = tminn; -#line 16765 "" +#line 16759 "" commvl_1.ivx = iivx; -#line 16766 "" +#line 16760 "" } -#line 16767 "" +#line 16761 "" /* L6: */ -#line 16767 "" +#line 16761 "" } -#line 16767 "" +#line 16761 "" } -#line 16768 "" +#line 16762 "" if ((r__1 = tmin - 1e3f, dabs(r__1)) < comtol_1.tol) { -#line 16768 "" +#line 16762 "" goto L7; -#line 16768 "" +#line 16762 "" } -#line 16769 "" +#line 16763 "" all_1.ivxo[in - 1] = commvl_1.ivx; -#line 16770 "" +#line 16764 "" ++cnn[commvl_1.ivx - 1]; -#line 16771 "" +#line 16765 "" all_1.ipo[in - 1] = cnn[commvl_1.ivx - 1]; -#line 16772 "" +#line 16766 "" all_1.to[in - 1] = tmin; /* Check if this voice is done */ -#line 16776 "" +#line 16770 "" all_1.tnote[in - 1] = fnote_(all_1.nodur, &commvl_1.ivx, &cnn[ commvl_1.ivx - 1], all_1.nacc); -#line 16777 "" +#line 16771 "" if (cnn[commvl_1.ivx - 1] == all_1.nn[commvl_1.ivx - 1]) { -#line 16778 "" +#line 16772 "" xit[commvl_1.ivx - 1] = 1e3f; -#line 16779 "" +#line 16773 "" } else { -#line 16780 "" +#line 16774 "" xit[commvl_1.ivx - 1] += all_1.tnote[in - 1]; -#line 16781 "" +#line 16775 "" } /* Flag xtups */ -#line 16785 "" +#line 16779 "" if (all_1.nodur[commvl_1.ivx + cnn[commvl_1.ivx - 1] * 24 - 25] == 0) { -#line 16786 "" +#line 16780 "" if (! inxtup[commvl_1.ivx - 1]) { /* First note of xtup, not at start of bar. */ -#line 16790 "" +#line 16784 "" ++nxtup; -#line 16791 "" +#line 16785 "" nxtnow[commvl_1.ivx - 1] = nxtup; -#line 16792 "" +#line 16786 "" inxtup[commvl_1.ivx - 1] = TRUE_; -#line 16793 "" +#line 16787 "" t1xtup[nxtup - 1] = xit[commvl_1.ivx - 1] - all_1.tnote[in - 1]; /* (Note: can't be on last note in voice, so xit(ivx) <> 1000) */ /* Put xtuplet in a forced beam if not already in forced beam */ -#line 16798 "" +#line 16792 "" if (comfb_1.nfb[commvl_1.ivx - 1] > 0) { -#line 16799 "" +#line 16793 "" i__1 = comfb_1.nfb[commvl_1.ivx - 1]; -#line 16799 "" +#line 16793 "" for (comfb_1.ifb = 1; comfb_1.ifb <= i__1; ++comfb_1.ifb) { -#line 16800 "" +#line 16794 "" if (comfb_1.t1fb[commvl_1.ivx + comfb_1.ifb * 24 - 25] > * tglp1 + xit[commvl_1.ivx - 1] + comtol_1.tol) { /* NO explicit bm; put one in */ -#line 16804 "" +#line 16798 "" goto L71; -#line 16805 "" +#line 16799 "" } else if (comfb_1.t1fb[commvl_1.ivx + comfb_1.ifb * 24 - 25] < *tglp1 + xit[commvl_1.ivx - 1] + comtol_1.tol && comfb_1.t2fb[commvl_1.ivx + @@ -39836,59 +39773,59 @@ L5: /* IS explicit bm. Don't put one */ -#line 16810 "" +#line 16804 "" goto L72; -#line 16811 "" +#line 16805 "" } -#line 16812 "" +#line 16806 "" /* L70: */ -#line 16812 "" +#line 16806 "" } -#line 16813 "" +#line 16807 "" } -#line 16814 "" +#line 16808 "" L71: /* If here, no explicit bm, so put one in */ -#line 16818 "" +#line 16812 "" infbmx[commvl_1.ivx - 1] = TRUE_; -#line 16819 "" +#line 16813 "" r__1 = t1xtup[nxtup - 1] + *tglp1; -#line 16819 "" +#line 16813 "" addfb_(comfb_1.nfb, &commvl_1.ivx, &r__1, comfb_1.t1fb, comfb_1.t2fb, comfb_1.ulfbq, &ifbadd, (ftnlen)1); -#line 16821 "" +#line 16815 "" ifbnow[commvl_1.ivx - 1] = ifbadd; -#line 16822 "" +#line 16816 "" } -#line 16823 "" +#line 16817 "" L72: -#line 16824 "" +#line 16818 "" ; -#line 16824 "" +#line 16818 "" } else if (inxtup[commvl_1.ivx - 1]) { /* This test is sufficient because already know nodur>0 */ -#line 16828 "" +#line 16822 "" inxtup[commvl_1.ivx - 1] = FALSE_; -#line 16829 "" +#line 16823 "" if (infbmx[commvl_1.ivx - 1]) { /* Xtup is in auto-forced beam, so end it */ -#line 16833 "" +#line 16827 "" comfb_1.t2fb[commvl_1.ivx + ifbnow[commvl_1.ivx - 1] * 24 - 25] = t1xtup[nxtnow[commvl_1.ivx - 1] - 1] + all_1.nodur[ commvl_1.ivx + cnn[commvl_1.ivx - 1] * 24 - 25] + *tglp1; -#line 16835 "" +#line 16829 "" infbmx[commvl_1.ivx - 1] = FALSE_; -#line 16836 "" +#line 16830 "" } -#line 16837 "" +#line 16831 "" } -#line 16838 "" +#line 16832 "" if (bit_test(all_1.irest[all_1.ivxo[in - 1] + all_1.ipo[in - 1] * 24 - 25] ,24) || bit_test(all_1.irest[all_1.ivxo[in - 1] + all_1.ipo[in - 1] * 24 - 25],30)) { @@ -39896,62 +39833,62 @@ L72: /* For staff jumped beam, flag the first note (lowest voice) at same time. */ /* Later will start new notes group here. */ -#line 16844 "" +#line 16838 "" inj = in; -#line 16845 "" +#line 16839 "" if (all_1.ivxo[in - 1] > 1) { -#line 16846 "" +#line 16840 "" for (iin = in - 1; iin >= 1; --iin) { -#line 16847 "" +#line 16841 "" if (all_1.to[iin - 1] + comtol_1.tol < all_1.to[in - 1]) { -#line 16847 "" +#line 16841 "" goto L41; -#line 16847 "" +#line 16841 "" } -#line 16848 "" +#line 16842 "" if ((r__1 = all_1.to[iin - 1] - all_1.to[in - 1], dabs(r__1)) < comtol_1.tol) { -#line 16849 "" +#line 16843 "" inj = iin; -#line 16850 "" +#line 16844 "" goto L40; -#line 16851 "" +#line 16845 "" } -#line 16852 "" +#line 16846 "" L40: -#line 16852 "" +#line 16846 "" ; -#line 16852 "" +#line 16846 "" } -#line 16853 "" +#line 16847 "" } -#line 16854 "" +#line 16848 "" L41: -#line 16855 "" +#line 16849 "" all_1.irest[all_1.ivxo[inj - 1] + all_1.ipo[inj - 1] * 24 - 25] = bit_set(all_1.irest[all_1.ivxo[inj - 1] + all_1.ipo[inj - 1] * 24 - 25],29); -#line 16856 "" +#line 16850 "" } -#line 16857 "" +#line 16851 "" ++in; -#line 16858 "" +#line 16852 "" goto L5; -#line 16859 "" +#line 16853 "" L7: -#line 16860 "" +#line 16854 "" comntot_1.ntot = in - 1; -#line 16861 "" +#line 16855 "" i__1 = comntot_1.ntot - 1; -#line 16861 "" +#line 16855 "" for (in = 1; in <= i__1; ++in) { -#line 16862 "" +#line 16856 "" all_1.tno[in - 1] = all_1.to[in] - all_1.to[in - 1]; -#line 16863 "" +#line 16857 "" /* L8: */ -#line 16863 "" +#line 16857 "" } -#line 16864 "" +#line 16858 "" all_1.tno[comntot_1.ntot - 1] = all_1.tnote[comntot_1.ntot - 1]; /* Debug writes */ @@ -39967,32 +39904,32 @@ L7: /* Done w/ list. Loop for parsing into note blocks: */ -#line 16879 "" +#line 16873 "" ib = 1; -#line 16880 "" +#line 16874 "" istart[1] = 1; -#line 16881 "" +#line 16875 "" comnsp_2.space[0] = 0.f; -#line 16882 "" +#line 16876 "" in = 1; /* A manual loop to set space(ib) and istop(ib) */ -#line 16886 "" +#line 16880 "" L9: /* Computing MIN */ -#line 16888 "" +#line 16882 "" i__1 = in + 1; -#line 16888 "" +#line 16882 "" commvl_1.ivx = all_1.ivxo[min(i__1,comntot_1.ntot) - 1]; /* Computing MIN */ -#line 16889 "" +#line 16883 "" i__1 = in + 1; -#line 16889 "" +#line 16883 "" ip = all_1.ipo[min(i__1,comntot_1.ntot) - 1]; -#line 16890 "" +#line 16884 "" isl = all_1.islur[commvl_1.ivx + ip * 24 - 25]; -#line 16891 "" +#line 16885 "" if (in == comntot_1.ntot || (commvl_1.ivx == 1 && ((isl & 67109216) > 0 || bit_test(all_1.ipl[ip * 24 - 24],28) || bit_test(all_1.iornq[ip * 24],4)) || bit_test(isl,15)) || bit_test(all_1.irest[ @@ -40014,353 +39951,353 @@ L9: /* 5/25/98: This stuff causes trouble with just "c2 Ct c", maybe when clef */ /* changes on last note in the list? */ -#line 16912 "" +#line 16906 "" if (bit_test(isl,15) && in < comntot_1.ntot) { -#line 16913 "" +#line 16907 "" for (iin = in; iin >= 1; --iin) { -#line 16914 "" +#line 16908 "" if (all_1.tno[iin - 1] > comtol_1.tol) { -#line 16915 "" +#line 16909 "" in = iin; -#line 16916 "" +#line 16910 "" all_1.islur[commvl_1.ivx + ip * 24 - 25] = bit_clear( all_1.islur[commvl_1.ivx + ip * 24 - 25],15); -#line 16917 "" +#line 16911 "" all_1.islur[all_1.ivxo[in] + all_1.ipo[in] * 24 - 25] = bit_set(all_1.islur[all_1.ivxo[in] + all_1.ipo[in] * 24 - 25],15); -#line 16919 "" +#line 16913 "" goto L51; -#line 16920 "" +#line 16914 "" } -#line 16921 "" +#line 16915 "" /* L50: */ -#line 16921 "" +#line 16915 "" } -#line 16922 "" +#line 16916 "" L51: -#line 16923 "" +#line 16917 "" ; -#line 16923 "" +#line 16917 "" } -#line 16924 "" +#line 16918 "" if (comnsp_2.space[ib - 1] < comtol_1.tol) { -#line 16925 "" +#line 16919 "" comnsp_2.space[ib - 1] = all_1.tno[in - 1]; -#line 16926 "" +#line 16920 "" squez[ib] = 1.f; -#line 16927 "" +#line 16921 "" } -#line 16928 "" +#line 16922 "" istop[ib] = in; -#line 16929 "" +#line 16923 "" } else if (comnsp_2.space[ib - 1] < comtol_1.tol) { /* space hasn't been set yet, so tentatively set: */ -#line 16933 "" +#line 16927 "" comnsp_2.space[ib - 1] = all_1.tno[in - 1]; -#line 16934 "" +#line 16928 "" if (comnsp_2.space[ib - 1] < comtol_1.tol) { -#line 16935 "" +#line 16929 "" ++in; -#line 16936 "" +#line 16930 "" } else { -#line 16937 "" +#line 16931 "" squez[ib] = getsquez_(&in, &comntot_1.ntot, &comnsp_2.space[ib - 1], all_1.tnote, all_1.to); -#line 16938 "" +#line 16932 "" istop[ib] = in; -#line 16939 "" +#line 16933 "" } -#line 16940 "" +#line 16934 "" goto L9; -#line 16941 "" +#line 16935 "" } else if (all_1.tno[in] < comtol_1.tol) { /* This is not the last note in the group, so */ -#line 16945 "" +#line 16939 "" ++in; -#line 16946 "" +#line 16940 "" goto L9; -#line 16947 "" +#line 16941 "" } else if ((r__1 = all_1.tno[in] - comnsp_2.space[ib - 1], dabs(r__1)) < comtol_1.tol) { -#line 16948 "" +#line 16942 "" i__1 = in + 1; -#line 16948 "" +#line 16942 "" xsquez = getsquez_(&i__1, &comntot_1.ntot, &comnsp_2.space[ib - 1], all_1.tnote, all_1.to); -#line 16949 "" +#line 16943 "" if ((r__1 = xsquez - squez[ib], dabs(r__1)) < comtol_1.tol) { /* Keep spacing the same, update tentative stop point */ -#line 16953 "" +#line 16947 "" ++in; -#line 16954 "" +#line 16948 "" istop[ib] = in; -#line 16955 "" +#line 16949 "" goto L9; -#line 16956 "" +#line 16950 "" } -#line 16957 "" +#line 16951 "" } /* At this point istart and istop are good, so finalize block */ -#line 16961 "" +#line 16955 "" tstart[ib] = all_1.to[istart[ib] - 1]; -#line 16962 "" +#line 16956 "" if (istop[ib] == comntot_1.ntot) { -#line 16962 "" +#line 16956 "" goto L15; -#line 16962 "" +#line 16956 "" } -#line 16963 "" +#line 16957 "" ++ib; -#line 16964 "" +#line 16958 "" istart[ib] = istop[ib - 1] + 1; -#line 16965 "" +#line 16959 "" in = istart[ib]; /* Set tentative block space and squeeze-factor for upcoming block */ -#line 16969 "" +#line 16963 "" comnsp_2.space[ib - 1] = all_1.tno[in - 1]; -#line 16970 "" +#line 16964 "" if (comnsp_2.space[ib - 1] > comtol_1.tol) { -#line 16970 "" +#line 16964 "" squez[ib] = getsquez_(&in, &comntot_1.ntot, &comnsp_2.space[ib - 1], all_1.tnote, all_1.to); -#line 16970 "" +#line 16964 "" } -#line 16972 "" +#line 16966 "" istop[ib] = in; -#line 16973 "" +#line 16967 "" goto L9; -#line 16974 "" +#line 16968 "" L15: -#line 16975 "" +#line 16969 "" comnsp_2.nb = ib; /* Invert the list of places into ipl(0-7), making it easier to analyze a voice */ -#line 16979 "" +#line 16973 "" i__1 = comntot_1.ntot; -#line 16979 "" +#line 16973 "" for (in = 1; in <= i__1; ++in) { /* ??? This may fix extra \loff's (bit 8 of ipl) in measures with >255 notes. */ /* ipl(ivxo(in),ipo(in)) = ior(ipl(ivxo(in),ipo(in)),in) */ -#line 16984 "" +#line 16978 "" comipl2_1.ipl2[all_1.ivxo[in - 1] + all_1.ipo[in - 1] * 24 - 25] = in; -#line 16985 "" +#line 16979 "" /* L13: */ -#line 16985 "" +#line 16979 "" } /* Compute elemskips from start of bar to each note in the bar, for beam slopes */ -#line 16989 "" +#line 16983 "" eskzb = 0.f; -#line 16990 "" +#line 16984 "" ib = 1; -#line 16991 "" +#line 16985 "" i__1 = comntot_1.ntot; -#line 16991 "" +#line 16985 "" for (in = 1; in <= i__1; ++in) { -#line 16992 "" +#line 16986 "" if (in == istart[ib]) { -#line 16993 "" +#line 16987 "" r__1 = comnsp_2.space[ib - 1] / squez[ib]; -#line 16993 "" +#line 16987 "" deskb = squez[ib] * feon_(&r__1); -#line 16994 "" +#line 16988 "" } else if (all_1.tno[in - 2] > comtol_1.tol) { -#line 16995 "" +#line 16989 "" eskzb += deskb; -#line 16996 "" +#line 16990 "" } -#line 16997 "" +#line 16991 "" all_1.eskz[all_1.ivxo[in - 1] + all_1.ipo[in - 1] * 24 - 25] = eskzb; -#line 16998 "" +#line 16992 "" comeskz2_1.eskz2[all_1.ivxo[in - 1] + all_1.ipo[in - 1] * 24 - 25] = eskzb; -#line 16999 "" +#line 16993 "" if (in == istop[ib]) { -#line 17000 "" +#line 16994 "" eskzb += deskb; -#line 17001 "" +#line 16995 "" ++ib; -#line 17002 "" +#line 16996 "" } -#line 17003 "" +#line 16997 "" /* L30: */ -#line 17003 "" +#line 16997 "" } /* Analyze for beams. */ -#line 17007 "" +#line 17001 "" i__1 = all_1.nv; -#line 17007 "" +#line 17001 "" for (all_1.iv = 1; all_1.iv <= i__1; ++all_1.iv) { -#line 17008 "" +#line 17002 "" i__2 = commvl_1.nvmx[all_1.iv - 1]; -#line 17008 "" +#line 17002 "" for (kv = 1; kv <= i__2; ++kv) { -#line 17009 "" +#line 17003 "" commvl_1.ivx = commvl_1.ivmx[all_1.iv + kv * 24 - 25]; -#line 17010 "" +#line 17004 "" numbms[commvl_1.ivx] = 0; -#line 17011 "" +#line 17005 "" mapfb[0] = 0; -#line 17012 "" +#line 17006 "" mapfb[1] = 0; -#line 17013 "" +#line 17007 "" mapfb[2] = 0; -#line 17014 "" +#line 17008 "" mapfb[3] = 0; /* First forced beams. */ -#line 17018 "" +#line 17012 "" if (comfb_1.nfb[commvl_1.ivx - 1] > 0) { /* tglp2 is time from start of gulp to end of current bar. */ -#line 17022 "" +#line 17016 "" nfbbar = 0; -#line 17023 "" +#line 17017 "" i__3 = comfb_1.nfb[commvl_1.ivx - 1]; -#line 17023 "" +#line 17017 "" for (comfb_1.ifb = 1; comfb_1.ifb <= i__3; ++comfb_1.ifb) { -#line 17024 "" +#line 17018 "" if (comfb_1.t1fb[commvl_1.ivx + comfb_1.ifb * 24 - 25] > tglp2 - comtol_1.tol) { -#line 17024 "" +#line 17018 "" goto L81; -#line 17024 "" +#line 17018 "" } -#line 17025 "" +#line 17019 "" ++nfbbar; -#line 17026 "" +#line 17020 "" ++numbms[commvl_1.ivx]; -#line 17027 "" +#line 17021 "" numnew = numbms[commvl_1.ivx]; /* Times from beginning of bar */ -#line 17031 "" +#line 17025 "" itbb1 = (integer) (comfb_1.t1fb[commvl_1.ivx + comfb_1.ifb * 24 - 25] - *tglp1 + comtol_1.tol); -#line 17032 "" +#line 17026 "" itbb2 = (integer) (comfb_1.t2fb[commvl_1.ivx + comfb_1.ifb * 24 - 25] - *tglp1 + comtol_1.tol); -#line 17033 "" +#line 17027 "" i__4 = all_1.nn[commvl_1.ivx - 1]; -#line 17033 "" +#line 17027 "" for (ip = 1; ip <= i__4; ++ip) { -#line 17034 "" +#line 17028 "" if ((integer) (all_1.to[comipl2_1.ipl2[commvl_1.ivx + ip * 24 - 25] - 1] + comtol_1.tol) == itbb1) { -#line 17035 "" +#line 17029 "" nip1fb = ip; -#line 17036 "" +#line 17030 "" i__5 = all_1.nn[commvl_1.ivx - 1]; -#line 17036 "" +#line 17030 "" for (ip1 = ip; ip1 <= i__5; ++ip1) { -#line 17037 "" +#line 17031 "" inip1 = comipl2_1.ipl2[commvl_1.ivx + ip1 * 24 - 25]; -#line 17038 "" +#line 17032 "" if ((r__1 = all_1.to[inip1 - 1] + all_1.tnote[ inip1 - 1] - itbb2, dabs(r__1)) < comtol_1.tol) { -#line 17039 "" +#line 17033 "" nip2fb = ip1; -#line 17040 "" +#line 17034 "" itbb3 = itbb2 - 2; -#line 17041 "" +#line 17035 "" goto L85; -#line 17042 "" +#line 17036 "" } -#line 17043 "" +#line 17037 "" /* L84: */ -#line 17043 "" +#line 17037 "" } -#line 17044 "" +#line 17038 "" } -#line 17045 "" +#line 17039 "" /* L83: */ -#line 17045 "" +#line 17039 "" } -#line 17046 "" - s_wsle(&io___1004); -#line 17046 "" +#line 17040 "" + s_wsle(&io___999); +#line 17040 "" e_wsle(); -#line 17047 "" - s_wsle(&io___1005); -#line 17047 "" +#line 17041 "" + s_wsle(&io___1000); +#line 17041 "" do_lio(&c__9, &c__1, "Timing problem w/ forced beams", ( ftnlen)30); -#line 17047 "" +#line 17041 "" e_wsle(); -#line 17048 "" - s_wsfe(&io___1006); -#line 17048 "" +#line 17042 "" + s_wsfe(&io___1001); +#line 17042 "" do_fio(&c__1, "Timing problem w/ forced beams", (ftnlen) 30); -#line 17048 "" +#line 17042 "" e_wsfe(); -#line 17049 "" +#line 17043 "" L85: -#line 17050 "" +#line 17044 "" logbeam_(&numnew, &nip1fb, &nip2fb); /* Set up mapfb for forced beam just logged: */ -#line 17054 "" +#line 17048 "" ib1 = itbb1 / 2; -#line 17055 "" +#line 17049 "" ib2 = itbb3 / 2; -#line 17056 "" +#line 17050 "" ibrep = all_1.lenbar / *ibmrep / 2; -#line 17057 "" +#line 17051 "" i__4 = *ibmrep; -#line 17057 "" +#line 17051 "" for (irep = 1; irep <= i__4; ++irep) { /* Computing MAX */ -#line 17058 "" +#line 17052 "" i__5 = 0, i__6 = ib1 - (irep - 1) * ibrep; -#line 17058 "" +#line 17052 "" ib1now = max(i__5,i__6); /* Computing MIN */ -#line 17059 "" +#line 17053 "" i__5 = irep * ibrep - 1, i__6 = ib2 - (irep - 1) * ibrep; -#line 17059 "" +#line 17053 "" ib2now = min(i__5,i__6); -#line 17060 "" +#line 17054 "" mapnow = 0; -#line 17061 "" +#line 17055 "" i__5 = ib2now; -#line 17061 "" +#line 17055 "" for (ib = ib1now; ib <= i__5; ++ib) { -#line 17062 "" +#line 17056 "" mapnow = bit_set(mapnow,ib); -#line 17063 "" +#line 17057 "" /* L87: */ -#line 17063 "" +#line 17057 "" } -#line 17064 "" +#line 17058 "" mapfb[irep - 1] |= mapnow; -#line 17065 "" +#line 17059 "" /* L86: */ -#line 17065 "" +#line 17059 "" } /* Since we are cycling thru forced beams, for those that start with a rest and */ @@ -40368,91 +40305,91 @@ L85: /* 060924: Copy to ALL later notes in fb, in case there's more than 1 rest at */ /* start of beam */ -#line 17072 "" +#line 17066 "" if (bit_test(all_1.irest[commvl_1.ivx + nip1fb * 24 - 25], 0)) { -#line 17073 "" +#line 17067 "" i__4 = nip2fb; -#line 17073 "" +#line 17067 "" for (kp = nip1fb + 1; kp <= i__4; ++kp) { -#line 17074 "" +#line 17068 "" i__5 = igetbits_(&all_1.ipl[commvl_1.ivx + nip1fb * 24 - 25], &c__6, &c__11); -#line 17074 "" +#line 17068 "" setbits_(&all_1.ipl[commvl_1.ivx + kp * 24 - 25], &c__6, &c__11, &i__5); -#line 17076 "" +#line 17070 "" i__5 = igetbits_(&all_1.ipl[commvl_1.ivx + nip1fb * 24 - 25], &c__6, &c__17); -#line 17076 "" +#line 17070 "" setbits_(&all_1.ipl[commvl_1.ivx + kp * 24 - 25], &c__6, &c__17, &i__5); -#line 17078 "" +#line 17072 "" i__5 = igetbits_(&all_1.islur[commvl_1.ivx + nip1fb * 24 - 25], &c__2, &c__27); -#line 17078 "" +#line 17072 "" setbits_(&all_1.islur[commvl_1.ivx + kp * 24 - 25] , &c__2, &c__27, &i__5); -#line 17080 "" +#line 17074 "" /* L88: */ -#line 17080 "" +#line 17074 "" } -#line 17081 "" +#line 17075 "" } -#line 17082 "" +#line 17076 "" /* L80: */ -#line 17082 "" +#line 17076 "" } -#line 17083 "" +#line 17077 "" L81: /* Slide down, reduce nfb(ivx). This lets us count up from 1 for each new bar. */ /* Remember, makeabar is called 1/bar, and it calls findbeam once per voice. */ -#line 17088 "" +#line 17082 "" if (nfbbar > 0) { -#line 17089 "" +#line 17083 "" comfb_1.nfb[commvl_1.ivx - 1] -= nfbbar; -#line 17090 "" +#line 17084 "" i__3 = comfb_1.nfb[commvl_1.ivx - 1]; -#line 17090 "" +#line 17084 "" for (comfb_1.ifb = 1; comfb_1.ifb <= i__3; ++comfb_1.ifb) { -#line 17091 "" +#line 17085 "" comfb_1.t1fb[commvl_1.ivx + comfb_1.ifb * 24 - 25] = comfb_1.t1fb[commvl_1.ivx + (comfb_1.ifb + nfbbar) * 24 - 25]; -#line 17092 "" +#line 17086 "" comfb_1.t2fb[commvl_1.ivx + comfb_1.ifb * 24 - 25] = comfb_1.t2fb[commvl_1.ivx + (comfb_1.ifb + nfbbar) * 24 - 25]; -#line 17093 "" +#line 17087 "" *(unsigned char *)&comfb_1.ulfbq[commvl_1.ivx + comfb_1.ifb * 24 - 25] = *(unsigned char *)& comfb_1.ulfbq[commvl_1.ivx + (comfb_1.ifb + nfbbar) * 24 - 25]; -#line 17094 "" +#line 17088 "" /* L82: */ -#line 17094 "" +#line 17088 "" } -#line 17095 "" +#line 17089 "" } -#line 17096 "" +#line 17090 "" } -#line 17097 "" +#line 17091 "" comfb_1.ifb = 0; /* Done with forced beam masks for this bar and voice. Now get normal beams. */ -#line 17101 "" +#line 17095 "" findbeam_(ibmrep, &numbms[1], mapfb); -#line 17102 "" +#line 17096 "" /* L20: */ -#line 17102 "" +#line 17096 "" } -#line 17102 "" +#line 17096 "" } -#line 17103 "" +#line 17097 "" return 0; } /* make1bar_ */ @@ -40559,7 +40496,7 @@ L81: ftnlen); static logical iscacc; extern /* Subroutine */ int addask_(real *, real *, real *, real *, real * - , real *, logical *); + , real *, real *, logical *); static logical isclef, isflag, isaccs, bspend, isgaft; static real ptclef[24]; static integer ihornb[576] /* was [24][24] */; @@ -40621,50 +40558,50 @@ L81: char *, integer *, ftnlen), notex_(char *, integer *, ftnlen); /* Fortran I/O blocks */ - static icilist io___1026 = { 0, noteq, 0, "(1H{,i3,1H})", 5, 1 }; - static icilist io___1028 = { 0, noteq, 0, "(1H{,i2,1H})", 4, 1 }; - static icilist io___1029 = { 0, noteq, 0, "(i1)", 1, 1 }; - static cilist io___1032 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1033 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1038 = { 0, 6, 0, 0, 0 }; - static cilist io___1039 = { 0, 6, 0, 0, 0 }; - static cilist io___1040 = { 0, 11, 0, "(a20,i1,a)", 0 }; - static cilist io___1041 = { 0, 11, 0, "(a20,i2,a)", 0 }; - static cilist io___1042 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1045 = { 0, soutq+8, 0, "(f4.1)", 4, 1 }; - static icilist io___1046 = { 0, soutq+8, 0, "(f4.2)", 4, 1 }; - static icilist io___1047 = { 0, soutq+10, 0, "(i2)", 2, 1 }; - static icilist io___1048 = { 0, soutq+11, 0, "(i1)", 1, 1 }; - static cilist io___1053 = { 0, 6, 0, 0, 0 }; - static cilist io___1054 = { 0, 6, 0, 0, 0 }; - static cilist io___1074 = { 0, 6, 0, 0, 0 }; - static cilist io___1090 = { 0, 11, 0, "(a)", 0 }; + static icilist io___1021 = { 0, noteq, 0, "(1H{,i3,1H})", 5, 1 }; + static icilist io___1023 = { 0, noteq, 0, "(1H{,i2,1H})", 4, 1 }; + static icilist io___1024 = { 0, noteq, 0, "(i1)", 1, 1 }; + static cilist io___1027 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1028 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1033 = { 0, 6, 0, 0, 0 }; + static cilist io___1034 = { 0, 6, 0, 0, 0 }; + static cilist io___1035 = { 0, 11, 0, "(a20,i1,a)", 0 }; + static cilist io___1036 = { 0, 11, 0, "(a20,i2,a)", 0 }; + static cilist io___1037 = { 0, 11, 0, "(a)", 0 }; + static icilist io___1040 = { 0, soutq+8, 0, "(f4.1)", 4, 1 }; + static icilist io___1041 = { 0, soutq+8, 0, "(f4.2)", 4, 1 }; + static icilist io___1042 = { 0, soutq+10, 0, "(i2)", 2, 1 }; + static icilist io___1043 = { 0, soutq+11, 0, "(i1)", 1, 1 }; + static cilist io___1048 = { 0, 6, 0, 0, 0 }; + static cilist io___1049 = { 0, 6, 0, 0, 0 }; + static cilist io___1069 = { 0, 6, 0, 0, 0 }; + static cilist io___1085 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1086 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1087 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1088 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1089 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1090 = { 0, 6, 0, 0, 0 }; static cilist io___1091 = { 0, 11, 0, "(a)", 0 }; static cilist io___1092 = { 0, 11, 0, "(a)", 0 }; static cilist io___1093 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1094 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1095 = { 0, 6, 0, 0, 0 }; - static cilist io___1096 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1097 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1098 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1102 = { 0, notexq+11, 0, "(i2)", 2, 1 }; - static icilist io___1108 = { 0, notexq+6, 0, "(f3.1)", 3, 1 }; - static icilist io___1109 = { 0, notexq+6, 0, "(f4.1)", 4, 1 }; - static icilist io___1111 = { 0, notexq+5, 0, "(f3.1)", 3, 1 }; - static icilist io___1112 = { 0, notexq+5, 0, "(f4.1)", 4, 1 }; - static cilist io___1114 = { 0, 6, 0, 0, 0 }; - static cilist io___1115 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1116 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1124 = { 0, notexq, 0, "(f4.1)", 79, 1 }; - static icilist io___1132 = { 0, noteq, 0, "(a1,i2,a1)", 8, 1 }; - static cilist io___1133 = { 0, 6, 0, 0, 0 }; - static cilist io___1146 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1149 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1150 = { 0, soutq+12, 0, "(i3)", 3, 1 }; - static icilist io___1151 = { 0, soutq+12, 0, "(i2)", 2, 1 }; + static icilist io___1097 = { 0, notexq+11, 0, "(i2)", 2, 1 }; + static icilist io___1103 = { 0, notexq+6, 0, "(f3.1)", 3, 1 }; + static icilist io___1104 = { 0, notexq+6, 0, "(f4.1)", 4, 1 }; + static icilist io___1106 = { 0, notexq+5, 0, "(f3.1)", 3, 1 }; + static icilist io___1107 = { 0, notexq+5, 0, "(f4.1)", 4, 1 }; + static cilist io___1109 = { 0, 6, 0, 0, 0 }; + static cilist io___1110 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1111 = { 0, 11, 0, "(a)", 0 }; + static icilist io___1119 = { 0, notexq, 0, "(f4.1)", 79, 1 }; + static icilist io___1127 = { 0, noteq, 0, "(a1,i2,a1)", 8, 1 }; + static cilist io___1128 = { 0, 6, 0, 0, 0 }; + static cilist io___1141 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1144 = { 0, 11, 0, "(a)", 0 }; + static icilist io___1145 = { 0, soutq+12, 0, "(i3)", 3, 1 }; + static icilist io___1146 = { 0, soutq+12, 0, "(i2)", 2, 1 }; + static cilist io___1147 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1150 = { 0, 11, 0, "(a)", 0 }; static cilist io___1152 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1155 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1157 = { 0, 11, 0, "(a)", 0 }; @@ -40672,458 +40609,458 @@ L81: /* In 1.04, moved to block data subprogram */ /* 130316 */ -#line 17232 "" +#line 17226 "" /* Parameter adjustments */ -#line 17232 "" +#line 17226 "" --clefq; -#line 17232 "" +#line 17226 "" --istart; -#line 17232 "" +#line 17226 "" --numbms; -#line 17232 "" +#line 17226 "" --istop; -#line 17232 "" +#line 17226 "" --squez; -#line 17232 "" +#line 17226 "" --cwrest; -#line 17232 "" +#line 17226 "" --tstart; -#line 17232 "" +#line 17226 "" -#line 17232 "" +#line 17226 "" /* Function Body */ -#line 17232 "" +#line 17226 "" xjbeambrests_1.nbrests = 0; /* Set up main ib loop within which a block (notes group) is written */ -#line 17236 "" +#line 17230 "" i__1 = all_1.nv; -#line 17236 "" +#line 17230 "" for (all_1.iv = 1; all_1.iv <= i__1; ++all_1.iv) { -#line 17237 "" +#line 17231 "" i__2 = commvl_1.nvmx[all_1.iv - 1]; -#line 17237 "" +#line 17231 "" for (kv = 1; kv <= i__2; ++kv) { -#line 17238 "" +#line 17232 "" commvl_1.ivx = commvl_1.ivmx[all_1.iv + kv * 24 - 25]; -#line 17239 "" +#line 17233 "" all_1.ibmcnt[commvl_1.ivx - 1] = 1; -#line 17240 "" +#line 17234 "" ibmcnt1[commvl_1.ivx - 1] = 1; -#line 17241 "" +#line 17235 "" all_1.beamon[commvl_1.ivx - 1] = FALSE_; -#line 17242 "" +#line 17236 "" beamon1[commvl_1.ivx - 1] = FALSE_; -#line 17243 "" +#line 17237 "" nornb[commvl_1.ivx - 1] = 0; -#line 17244 "" +#line 17238 "" iaskb[commvl_1.ivx - 1] = 1; -#line 17245 "" +#line 17239 "" comxtup_1.vxtup[commvl_1.ivx - 1] = FALSE_; -#line 17246 "" +#line 17240 "" comdraw_1.drawbm[commvl_1.ivx - 1] = TRUE_; -#line 17247 "" +#line 17241 "" /* L25: */ -#line 17247 "" +#line 17241 "" } -#line 17247 "" +#line 17241 "" } -#line 17248 "" +#line 17242 "" comas1_1.naskb = 0; -#line 17249 "" +#line 17243 "" ifig[0] = 1; -#line 17250 "" +#line 17244 "" ifig[1] = 1; -#line 17251 "" +#line 17245 "" comxtup_1.ixtup = 0; -#line 17252 "" +#line 17246 "" bspend = FALSE_; -#line 17253 "" +#line 17247 "" iscwr = FALSE_; -#line 17254 "" +#line 17248 "" rpndot = FALSE_; -#line 17255 "" +#line 17249 "" i__2 = comnsp_2.nb; -#line 17255 "" +#line 17249 "" for (ib = 1; ib <= i__2; ++ib) { /* Check for segno */ -#line 17259 "" +#line 17253 "" if (bit_test(all_1.iornq[all_1.ipo[istart[ib] - 1] * 24],4) && all_1.ivxo[istart[ib] - 1] == 1) { -#line 17261 "" +#line 17255 "" if (comgrace_1.noffseg <= -10) { -#line 17262 "" - s_wsfi(&io___1026); -#line 17262 "" +#line 17256 "" + s_wsfi(&io___1021); +#line 17256 "" do_fio(&c__1, (char *)&comgrace_1.noffseg, (ftnlen)sizeof( integer)); -#line 17262 "" +#line 17256 "" e_wsfi(); -#line 17263 "" +#line 17257 "" lnoten = 5; -#line 17264 "" +#line 17258 "" } else if (comgrace_1.noffseg < 0 || comgrace_1.noffseg >= 10) { -#line 17265 "" - s_wsfi(&io___1028); -#line 17265 "" +#line 17259 "" + s_wsfi(&io___1023); +#line 17259 "" do_fio(&c__1, (char *)&comgrace_1.noffseg, (ftnlen)sizeof( integer)); -#line 17265 "" +#line 17259 "" e_wsfi(); -#line 17266 "" +#line 17260 "" lnoten = 4; -#line 17267 "" +#line 17261 "" } else { -#line 17268 "" - s_wsfi(&io___1029); -#line 17268 "" +#line 17262 "" + s_wsfi(&io___1024); +#line 17262 "" do_fio(&c__1, (char *)&comgrace_1.noffseg, (ftnlen)sizeof( integer)); -#line 17268 "" +#line 17262 "" e_wsfi(); -#line 17269 "" +#line 17263 "" lnoten = 1; -#line 17270 "" +#line 17264 "" } /* Writing concatenation */ -#line 17271 "" +#line 17265 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 17271 "" +#line 17265 "" i__3[1] = 6, a__1[1] = "znotes"; -#line 17271 "" +#line 17265 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 17271 "" +#line 17265 "" i__3[3] = 6, a__1[3] = "segnoo"; -#line 17271 "" +#line 17265 "" i__3[4] = lnoten, a__1[4] = noteq; -#line 17271 "" +#line 17265 "" i__3[5] = 1, a__1[5] = "9"; -#line 17271 "" +#line 17265 "" s_cat(notexq, a__1, i__3, &c__6, (ftnlen)79); -#line 17272 "" +#line 17266 "" lnote = lnoten + 15; -#line 17273 "" +#line 17267 "" i__1 = all_1.nv; -#line 17273 "" +#line 17267 "" for (all_1.iv = 2; all_1.iv <= i__1; ++all_1.iv) { -#line 17274 "" +#line 17268 "" if (lnote > 60) { -#line 17275 "" +#line 17269 "" if (comlast_1.islast) { -#line 17275 "" - s_wsfe(&io___1032); +#line 17269 "" + s_wsfe(&io___1027); /* Writing concatenation */ -#line 17275 "" +#line 17269 "" i__4[0] = lnote, a__2[0] = notexq; -#line 17275 "" +#line 17269 "" i__4[1] = 1, a__2[1] = "%"; -#line 17275 "" +#line 17269 "" s_cat(ch__1, a__2, i__4, &c__2, (ftnlen)80); -#line 17275 "" +#line 17269 "" do_fio(&c__1, ch__1, lnote + 1); -#line 17275 "" +#line 17269 "" e_wsfe(); -#line 17275 "" +#line 17269 "" } /* Writing concatenation */ -#line 17276 "" +#line 17270 "" i__5[0] = 1, a__3[0] = all_1.sepsymq + (all_1.iv - 2); -#line 17276 "" +#line 17270 "" i__5[1] = 1, a__3[1] = all_1.sq; -#line 17276 "" +#line 17270 "" i__5[2] = 6, a__3[2] = "segnoo"; -#line 17276 "" +#line 17270 "" i__5[3] = lnoten, a__3[3] = noteq; -#line 17276 "" +#line 17270 "" i__5[4] = 1, a__3[4] = "9"; -#line 17276 "" +#line 17270 "" s_cat(notexq, a__3, i__5, &c__5, (ftnlen)79); -#line 17278 "" +#line 17272 "" lnote = lnoten + 9; -#line 17279 "" +#line 17273 "" } else { /* Writing concatenation */ -#line 17280 "" +#line 17274 "" i__3[0] = lnote, a__1[0] = notexq; -#line 17280 "" +#line 17274 "" i__3[1] = 1, a__1[1] = all_1.sepsymq + (all_1.iv - 2); -#line 17280 "" +#line 17274 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 17280 "" +#line 17274 "" i__3[3] = 6, a__1[3] = "segnoo"; -#line 17280 "" +#line 17274 "" i__3[4] = lnoten, a__1[4] = noteq; -#line 17280 "" +#line 17274 "" i__3[5] = 1, a__1[5] = "9"; -#line 17280 "" +#line 17274 "" s_cat(notexq, a__1, i__3, &c__6, (ftnlen)79); -#line 17282 "" +#line 17276 "" lnote = lnote + lnoten + 9; -#line 17283 "" +#line 17277 "" } -#line 17284 "" +#line 17278 "" /* L130: */ -#line 17284 "" +#line 17278 "" } -#line 17285 "" +#line 17279 "" if (comlast_1.islast) { -#line 17285 "" - s_wsfe(&io___1033); +#line 17279 "" + s_wsfe(&io___1028); /* Writing concatenation */ -#line 17285 "" +#line 17279 "" i__6[0] = lnote, a__4[0] = notexq; -#line 17285 "" +#line 17279 "" i__6[1] = 1, a__4[1] = all_1.sq; -#line 17285 "" +#line 17279 "" i__6[2] = 2, a__4[2] = "en"; -#line 17285 "" +#line 17279 "" s_cat(ch__2, a__4, i__6, &c__3, (ftnlen)82); -#line 17285 "" +#line 17279 "" do_fio(&c__1, ch__2, lnote + 3); -#line 17285 "" +#line 17279 "" e_wsfe(); -#line 17285 "" +#line 17279 "" } -#line 17286 "" +#line 17280 "" lnote = 0; -#line 17287 "" +#line 17281 "" } /* Check for new clefs */ -#line 17291 "" +#line 17285 "" isclef = FALSE_; -#line 17292 "" +#line 17286 "" if (bit_test(all_1.islur[all_1.ivxo[istart[ib] - 1] + all_1.ipo[ istart[ib] - 1] * 24 - 25],15)) { /* In preceding line, fl32 gave wrong result for ... .gt.0 !!! */ -#line 17297 "" +#line 17291 "" i__1 = istop[ib]; -#line 17297 "" +#line 17291 "" for (in = istart[ib]; in <= i__1; ++in) { -#line 17298 "" +#line 17292 "" if (bit_test(all_1.islur[all_1.ivxo[in - 1] + all_1.ipo[in - 1] * 24 - 25],11)) { -#line 17299 "" +#line 17293 "" i__7 = lbit_shift(all_1.islur[all_1.ivxo[in - 1] + all_1.ipo[in - 1] * 24 - 25], (ftnlen)-12) & 7; -#line 17299 "" +#line 17293 "" wsclef_(&all_1.ivxo[in - 1], ninow, &i__7); /* If clefq = '8', must add eg \settrebleclefsymbol3\treblelowoct% */ /* if (clefq(ivxo(in)) .eq. '8') then */ -#line 17305 "" +#line 17299 "" if (bit_test(all_1.ipl[all_1.ivxo[in - 1] + all_1.ipo[in - 1] * 24 - 25],2)) { /* Find instrument number for voice ivso(in) */ -#line 17309 "" +#line 17303 "" iv1 = 1; -#line 17310 "" +#line 17304 "" i__7 = *ninow; -#line 17310 "" +#line 17304 "" for (iinst = 1; iinst <= i__7; ++iinst) { -#line 17311 "" +#line 17305 "" if (all_1.ivxo[in - 1] < iv1 + comnvi_1.nspern[ iinst - 1]) { -#line 17311 "" +#line 17305 "" goto L2222; -#line 17311 "" +#line 17305 "" } -#line 17312 "" +#line 17306 "" iv1 += comnvi_1.nspern[iinst - 1]; -#line 17313 "" +#line 17307 "" /* L1111: */ -#line 17313 "" +#line 17307 "" } -#line 17314 "" - s_wsle(&io___1038); -#line 17314 "" +#line 17308 "" + s_wsle(&io___1033); +#line 17308 "" e_wsle(); -#line 17315 "" - s_wsle(&io___1039); -#line 17315 "" +#line 17309 "" + s_wsle(&io___1034); +#line 17309 "" do_lio(&c__9, &c__1, "Should not be here in make2bar!" , (ftnlen)31); -#line 17315 "" +#line 17309 "" e_wsle(); -#line 17316 "" +#line 17310 "" stop1_(); -#line 17317 "" +#line 17311 "" L2222: -#line 17318 "" +#line 17312 "" if (iinst <= 9) { -#line 17319 "" - s_wsfe(&io___1040); +#line 17313 "" + s_wsfe(&io___1035); /* Writing concatenation */ -#line 17319 "" +#line 17313 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17319 "" +#line 17313 "" i__4[1] = 19, a__2[1] = "settrebleclefsymbol"; -#line 17319 "" +#line 17313 "" s_cat(ch__3, a__2, i__4, &c__2, (ftnlen)20); -#line 17319 "" +#line 17313 "" do_fio(&c__1, ch__3, (ftnlen)20); -#line 17319 "" +#line 17313 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof( integer)); /* Writing concatenation */ -#line 17319 "" +#line 17313 "" i__8[0] = 1, a__5[0] = all_1.sq; -#line 17319 "" +#line 17313 "" i__8[1] = 13, a__5[1] = "treblelowoct%"; -#line 17319 "" +#line 17313 "" s_cat(ch__4, a__5, i__8, &c__2, (ftnlen)14); -#line 17319 "" +#line 17313 "" do_fio(&c__1, ch__4, (ftnlen)14); -#line 17319 "" +#line 17313 "" e_wsfe(); -#line 17321 "" +#line 17315 "" } else { -#line 17322 "" - s_wsfe(&io___1041); +#line 17316 "" + s_wsfe(&io___1036); /* Writing concatenation */ -#line 17322 "" +#line 17316 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17322 "" +#line 17316 "" i__4[1] = 19, a__2[1] = "settrebleclefsymbol"; -#line 17322 "" +#line 17316 "" s_cat(ch__3, a__2, i__4, &c__2, (ftnlen)20); -#line 17322 "" +#line 17316 "" do_fio(&c__1, ch__3, (ftnlen)20); -#line 17322 "" +#line 17316 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof( integer)); /* Writing concatenation */ -#line 17322 "" +#line 17316 "" i__8[0] = 1, a__5[0] = all_1.sq; -#line 17322 "" +#line 17316 "" i__8[1] = 13, a__5[1] = "treblelowoct%"; -#line 17322 "" +#line 17316 "" s_cat(ch__4, a__5, i__8, &c__2, (ftnlen)14); -#line 17322 "" +#line 17316 "" do_fio(&c__1, ch__4, (ftnlen)14); -#line 17322 "" +#line 17316 "" e_wsfe(); -#line 17324 "" +#line 17318 "" } -#line 17325 "" +#line 17319 "" comc8flag_1.c8flag[all_1.ivxo[in - 1] - 1] = TRUE_; -#line 17326 "" +#line 17320 "" } -#line 17327 "" +#line 17321 "" } -#line 17328 "" +#line 17322 "" /* L140: */ -#line 17328 "" +#line 17322 "" } -#line 17329 "" +#line 17323 "" if (comlast_1.islast) { -#line 17329 "" - s_wsfe(&io___1042); +#line 17323 "" + s_wsfe(&io___1037); /* Writing concatenation */ -#line 17329 "" +#line 17323 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17329 "" +#line 17323 "" i__4[1] = 11, a__2[1] = "pmxnewclefs"; -#line 17329 "" +#line 17323 "" s_cat(ch__5, a__2, i__4, &c__2, (ftnlen)12); -#line 17329 "" +#line 17323 "" do_fio(&c__1, ch__5, (ftnlen)12); -#line 17329 "" +#line 17323 "" e_wsfe(); -#line 17329 "" +#line 17323 "" } -#line 17330 "" +#line 17324 "" isclef = TRUE_; -#line 17331 "" +#line 17325 "" } /* Start a notes group. We're just gonna define every one using pnotes{n}, */ /* where \def\pnotes#1{\vnotes#1\elemskip} */ /* Writing concatenation */ -#line 17336 "" +#line 17330 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17336 "" +#line 17330 "" i__4[1] = 7, a__2[1] = "pnotes{"; -#line 17336 "" +#line 17330 "" s_cat(soutq, a__2, i__4, &c__2, (ftnlen)80); -#line 17337 "" +#line 17331 "" r__1 = comnsp_2.space[ib - 1] / squez[ib]; -#line 17337 "" +#line 17331 "" eonsqz = squez[ib] * feon_(&r__1); -#line 17338 "" +#line 17332 "" if (eonsqz > 9.995f) { -#line 17339 "" - s_wsfi(&io___1045); -#line 17339 "" +#line 17333 "" + s_wsfi(&io___1040); +#line 17333 "" do_fio(&c__1, (char *)&eonsqz, (ftnlen)sizeof(real)); -#line 17339 "" +#line 17333 "" e_wsfi(); -#line 17340 "" +#line 17334 "" } else if (eonsqz > .995f) { -#line 17341 "" - s_wsfi(&io___1046); -#line 17341 "" +#line 17335 "" + s_wsfi(&io___1041); +#line 17335 "" do_fio(&c__1, (char *)&eonsqz, (ftnlen)sizeof(real)); -#line 17341 "" +#line 17335 "" e_wsfi(); -#line 17342 "" +#line 17336 "" } else if (eonsqz > .095f) { /* Writing concatenation */ -#line 17343 "" +#line 17337 "" i__4[0] = 8, a__2[0] = soutq; -#line 17343 "" +#line 17337 "" i__4[1] = 2, a__2[1] = "0."; -#line 17343 "" +#line 17337 "" s_cat(soutq, a__2, i__4, &c__2, (ftnlen)80); -#line 17344 "" - s_wsfi(&io___1047); -#line 17344 "" +#line 17338 "" + s_wsfi(&io___1042); +#line 17338 "" r__1 = eonsqz * 100; -#line 17344 "" +#line 17338 "" i__1 = i_nint(&r__1); -#line 17344 "" +#line 17338 "" do_fio(&c__1, (char *)&i__1, (ftnlen)sizeof(integer)); -#line 17344 "" +#line 17338 "" e_wsfi(); -#line 17345 "" +#line 17339 "" } else { /* Writing concatenation */ -#line 17346 "" +#line 17340 "" i__4[0] = 8, a__2[0] = soutq; -#line 17346 "" +#line 17340 "" i__4[1] = 3, a__2[1] = "0.0"; -#line 17346 "" +#line 17340 "" s_cat(soutq, a__2, i__4, &c__2, (ftnlen)80); -#line 17347 "" - s_wsfi(&io___1048); -#line 17347 "" +#line 17341 "" + s_wsfi(&io___1043); +#line 17341 "" r__1 = eonsqz * 100; -#line 17347 "" +#line 17341 "" i__1 = i_nint(&r__1); -#line 17347 "" +#line 17341 "" do_fio(&c__1, (char *)&i__1, (ftnlen)sizeof(integer)); -#line 17347 "" +#line 17341 "" e_wsfi(); -#line 17348 "" +#line 17342 "" } /* Writing concatenation */ -#line 17349 "" +#line 17343 "" i__4[0] = 12, a__2[0] = soutq; -#line 17349 "" +#line 17343 "" i__4[1] = 1, a__2[1] = "}"; -#line 17349 "" +#line 17343 "" s_cat(soutq, a__2, i__4, &c__2, (ftnlen)80); -#line 17350 "" +#line 17344 "" lsout = 13; /* Check whole block, flag accidentals etc that are too close, one per *time*. */ @@ -41131,87 +41068,87 @@ L2222: /* (fbar*wheadpt) following, but rpts seem to occupy some of that gap, so */ /* (dotsfac*wheadpt) is presumed to be filled up. */ -#line 17357 "" +#line 17351 "" in = istart[ib] - 1; -#line 17358 "" +#line 17352 "" itrpt = -1; -#line 17359 "" +#line 17353 "" itsig = -1; /* Begin big manual loop over notes in this block; ends at 112 */ -#line 17363 "" +#line 17357 "" L111: -#line 17363 "" +#line 17357 "" ++in; -#line 17364 "" +#line 17358 "" if (in > istop[ib]) { -#line 17364 "" +#line 17358 "" goto L112; -#line 17364 "" +#line 17358 "" } -#line 17365 "" +#line 17359 "" ip = all_1.ipo[in - 1]; -#line 17366 "" +#line 17360 "" commvl_1.ivx = all_1.ivxo[in - 1]; -#line 17367 "" +#line 17361 "" if (commvl_1.ivx <= all_1.nv) { -#line 17368 "" +#line 17362 "" all_1.iv = commvl_1.ivx; -#line 17369 "" +#line 17363 "" } else { -#line 17370 "" +#line 17364 "" i__1 = all_1.nv; -#line 17370 "" +#line 17364 "" for (all_1.iv = 1; all_1.iv <= i__1; ++all_1.iv) { -#line 17371 "" +#line 17365 "" if (commvl_1.nvmx[all_1.iv - 1] == 2 && commvl_1.ivmx[ all_1.iv + 23] == commvl_1.ivx) { -#line 17371 "" +#line 17365 "" goto L129; -#line 17371 "" +#line 17365 "" } -#line 17372 "" +#line 17366 "" /* L128: */ -#line 17372 "" +#line 17366 "" } -#line 17373 "" - s_wsle(&io___1053); -#line 17373 "" +#line 17367 "" + s_wsle(&io___1048); +#line 17367 "" do_lio(&c__9, &c__1, "Trouble finding iv!, ivx,nvmx,ivmx:", ( ftnlen)35); -#line 17373 "" +#line 17367 "" do_lio(&c__3, &c__1, (char *)&commvl_1.ivx, (ftnlen)sizeof( integer)); -#line 17373 "" +#line 17367 "" do_lio(&c__3, &c__1, (char *)&commvl_1.nvmx[0], (ftnlen)sizeof( integer)); -#line 17373 "" +#line 17367 "" do_lio(&c__3, &c__1, (char *)&commvl_1.nvmx[1], (ftnlen)sizeof( integer)); -#line 17373 "" +#line 17367 "" e_wsle(); -#line 17374 "" - s_wsle(&io___1054); -#line 17374 "" +#line 17368 "" + s_wsle(&io___1049); +#line 17368 "" do_lio(&c__3, &c__1, (char *)&commvl_1.ivmx[0], (ftnlen)sizeof( integer)); -#line 17374 "" +#line 17368 "" do_lio(&c__3, &c__1, (char *)&commvl_1.ivmx[24], (ftnlen)sizeof( integer)); -#line 17374 "" +#line 17368 "" do_lio(&c__3, &c__1, (char *)&commvl_1.ivmx[1], (ftnlen)sizeof( integer)); -#line 17374 "" +#line 17368 "" do_lio(&c__3, &c__1, (char *)&commvl_1.ivmx[25], (ftnlen)sizeof( integer)); -#line 17374 "" +#line 17368 "" e_wsle(); -#line 17375 "" +#line 17369 "" s_stop("", (ftnlen)0); -#line 17376 "" +#line 17370 "" } -#line 17377 "" +#line 17371 "" L129: /* Call precrd here so we know how much space to add for accid's in chords */ @@ -41225,65 +41162,65 @@ L129: /* * .and. ibm1(ivx,ibmcnt(ivx)) .eq. ip) .or. */ /* * btest(nacc(ivx,ip),21)) then */ /* if (.not.btest(irest(ivx,ip),24)) then */ -#line 17390 "" +#line 17384 "" if (numbms[commvl_1.ivx] > 0 && ibmcnt1[commvl_1.ivx - 1] <= numbms[ commvl_1.ivx] && all_1.ibm1[commvl_1.ivx + ibmcnt1[ commvl_1.ivx - 1] * 24 - 25] == ip) { -#line 17392 "" +#line 17386 "" beamon1[commvl_1.ivx - 1] = TRUE_; -#line 17393 "" +#line 17387 "" } -#line 17394 "" +#line 17388 "" icashft = 0; -#line 17395 "" +#line 17389 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],10)) { /* There is a chord on this note. Need up-down-ness in precrd to auto shift for 2nds. */ -#line 17399 "" +#line 17393 "" if (beamon1[commvl_1.ivx - 1]) { -#line 17400 "" +#line 17394 "" precrd_(&commvl_1.ivx, &ip, &all_1.nolev[commvl_1.ivx + ip * 24 - 25], &all_1.nacc[commvl_1.ivx + ip * 24 - 25], & all_1.ipl[commvl_1.ivx + ip * 24 - 25], &all_1.irest[ commvl_1.ivx + ip * 24 - 25], all_1.ulq + ( commvl_1.ivx + ibmcnt1[commvl_1.ivx - 1] * 24 - 25), & c_false, &icashft, (ftnlen)1); -#line 17403 "" +#line 17397 "" } else { -#line 17404 "" +#line 17398 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 17404 "" +#line 17398 "" udqq_(ch__6, (ftnlen)1, &all_1.nolev[commvl_1.ivx + ip * 24 - 25], &i__1, &all_1.islur[commvl_1.ivx + ip * 24 - 25], &commvl_1.nvmx[all_1.iv - 1], &commvl_1.ivx, & all_1.nv); -#line 17404 "" +#line 17398 "" precrd_(&commvl_1.ivx, &ip, &all_1.nolev[commvl_1.ivx + ip * 24 - 25], &all_1.nacc[commvl_1.ivx + ip * 24 - 25], & all_1.ipl[commvl_1.ivx + ip * 24 - 25], &all_1.irest[ commvl_1.ivx + ip * 24 - 25], ch__6, &c_false, & icashft, (ftnlen)1); -#line 17408 "" +#line 17402 "" } -#line 17409 "" +#line 17403 "" } /* Turn beam off? */ -#line 17413 "" +#line 17407 "" if (beamon1[commvl_1.ivx - 1] && all_1.ibm2[commvl_1.ivx + ibmcnt1[ commvl_1.ivx - 1] * 24 - 25] == ip) { -#line 17414 "" +#line 17408 "" beamon1[commvl_1.ivx - 1] = FALSE_; -#line 17415 "" +#line 17409 "" ++ibmcnt1[commvl_1.ivx - 1]; -#line 17416 "" +#line 17410 "" } /* Remember, rpts & internal sigs can only come at start of (internal) block */ -#line 17420 "" +#line 17414 "" isacc = (all_1.nacc[commvl_1.ivx + ip * 24 - 25] & 3) > 0 && ! bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],17) && ! bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],10); @@ -41292,7 +41229,7 @@ L129: /* !!! Need to do this for chord notes too. Maybe in chkarp? */ -#line 17428 "" +#line 17422 "" isaccs = isacc || bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],0); /* 5/15/02 Add check for ) ornament of prior note. */ @@ -41300,154 +41237,154 @@ L129: /* if (ip .gt. 1) then */ /* isaccs = isaccs .or. btest(iornq(ivx,ip-1),13) */ /* end if */ -#line 17435 "" +#line 17429 "" isarp = bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],27); -#line 17436 "" +#line 17430 "" iscacc = FALSE_; -#line 17437 "" +#line 17431 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],10)) { /* There is a chord here; check for arpeggios and accidentals. Note accid shifts are */ /* not of concern here, only whether there's an accid, whick causes iscacc=.true. */ -#line 17442 "" +#line 17436 "" iscacc = igetbits_(&all_1.nacc[commvl_1.ivx + ip * 24 - 25], & c__3, &c__0) > 0 && ! bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],17); -#line 17444 "" +#line 17438 "" chkarp_(&comtrill_1.ncrd, comtrill_1.icrdat, &commvl_1.ivx, &ip, & iscacc, &isarp); -#line 17445 "" +#line 17439 "" } /* When we get motivated, will do spacing for arpeggios here. */ -#line 17449 "" +#line 17443 "" if (commvl_1.ivx == 1 && (all_1.islur[commvl_1.ivx + ip * 24 - 25] & 96) > 0) { -#line 17449 "" +#line 17443 "" itrpt = i_nint(&all_1.to[in - 1]); -#line 17449 "" +#line 17443 "" } -#line 17451 "" +#line 17445 "" issig = bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],28); -#line 17452 "" +#line 17446 "" if (commvl_1.ivx == 1 && issig) { -#line 17452 "" +#line 17446 "" itsig = i_nint(&all_1.to[in - 1]); -#line 17452 "" +#line 17446 "" } -#line 17453 "" +#line 17447 "" isgrace = bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],4) && ! bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],29) && ! bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],31); -#line 17455 "" +#line 17449 "" isgaft = FALSE_; -#line 17456 "" +#line 17450 "" if (ip > 1) { -#line 17457 "" +#line 17451 "" xnd = all_1.tnote[comipl2_1.ipl2[commvl_1.ivx + (ip - 1) * 24 - 25] - 1]; -#line 17458 "" +#line 17452 "" isgaft = bit_test(all_1.ipl[commvl_1.ivx + (ip - 1) * 24 - 25],29) || bit_test(all_1.ipl[commvl_1.ivx + (ip - 1) * 24 - 25], 31); -#line 17459 "" +#line 17453 "" isgrace = isgrace || isgaft; -#line 17460 "" +#line 17454 "" } -#line 17461 "" +#line 17455 "" iscln = isclef && bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25], 11); /* Is prev. note non-beamed, up-stemmed, & flagged? Recall if ip>1, have nd */ -#line 17465 "" +#line 17459 "" isflag = ip > 1 && xnd > comtol_1.tol && xnd < 16.f - comtol_1.tol; -#line 17466 "" +#line 17460 "" if (isflag) { -#line 17466 "" +#line 17460 "" i__7 = ip - 1; -#line 17466 "" +#line 17460 "" i__1 = ncmid_(&all_1.iv, &i__7); -#line 17466 "" +#line 17460 "" udqq_(ch__6, (ftnlen)1, &all_1.nolev[commvl_1.ivx + (ip - 1) * 24 - 25], &i__1, &all_1.islur[commvl_1.ivx + (ip - 1) * 24 - 25], &commvl_1.nvmx[all_1.iv - 1], &commvl_1.ivx, & all_1.nv); -#line 17466 "" +#line 17460 "" isflag = ! bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25] ,0) && *(unsigned char *)&ch__6[0] == 'u'; -#line 17466 "" +#line 17460 "" } -#line 17470 "" +#line 17464 "" if (isflag) { -#line 17471 "" +#line 17465 "" i__1 = numbms[commvl_1.ivx]; -#line 17471 "" +#line 17465 "" for (ibmchk = 1; ibmchk <= i__1; ++ibmchk) { -#line 17472 "" +#line 17466 "" if (ip - 1 < all_1.ibm1[commvl_1.ivx + ibmchk * 24 - 25]) { -#line 17473 "" +#line 17467 "" goto L117; /* Add check for non-beamed xtuplets. May be problem with stem direction. */ -#line 17477 "" +#line 17471 "" } else if (ip - 1 <= all_1.ibm2[commvl_1.ivx + ibmchk * 24 - 25] && ! bit_test(all_1.islur[commvl_1.ivx + all_1.ibm1[commvl_1.ivx + ibmchk * 24 - 25] * 24 - 25] ,18)) { -#line 17479 "" +#line 17473 "" isflag = FALSE_; -#line 17480 "" +#line 17474 "" goto L117; -#line 17481 "" +#line 17475 "" } -#line 17482 "" +#line 17476 "" /* L116: */ -#line 17482 "" +#line 17476 "" } -#line 17483 "" +#line 17477 "" } -#line 17484 "" +#line 17478 "" L117: /* If isflag, then won't need to check for dot on prev. note. */ /* 5/16/02 ??? Try using this for ) ornament. */ -#line 17490 "" +#line 17484 "" isflag = isflag || bit_test(all_1.iornq[commvl_1.ivx + (ip - 1) * 24 - 1],13); -#line 17491 "" +#line 17485 "" isdot = ip > 1; -#line 17492 "" +#line 17486 "" if (isdot) { -#line 17492 "" +#line 17486 "" i__1 = ip - 1; -#line 17492 "" +#line 17486 "" isdot = isdotted_(all_1.nodur, &commvl_1.ivx, &i__1); -#line 17492 "" +#line 17486 "" } -#line 17493 "" +#line 17487 "" isrshft = ip > 1; -#line 17494 "" +#line 17488 "" if (isrshft) { -#line 17494 "" +#line 17488 "" isrshft = bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25], 20); -#line 17494 "" +#line 17488 "" } -#line 17495 "" +#line 17489 "" if (! (isaccs || isgrace || iscln || isflag || isrshft || isdot || bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],26) || bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],21) || isarp || bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],27) || iscacc)) { -#line 17495 "" +#line 17489 "" goto L111; -#line 17495 "" +#line 17489 "" } /* Here is an accid,grace,clef,flag,rtshft,dot,udsp,arpeg,left-shift. */ @@ -41455,71 +41392,71 @@ L117: /* 130324 */ /* wheadpt1 = wheadpt*fullsize(iv) */ -#line 17505 "" +#line 17499 "" wheadpt1 = comask_1.wheadpt * comfig_1.fullsize[cominsttrans_1.instno[ all_1.iv - 1] - 1]; -#line 17506 "" +#line 17500 "" pts = wheadpt1; /* Set up for possible cautionary accidental here */ -#line 17510 "" +#line 17504 "" if (isaccs || iscacc) { -#line 17511 "" +#line 17505 "" if (! bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],31)) { -#line 17512 "" +#line 17506 "" taccfac = spfacs_1.accfac; -#line 17513 "" +#line 17507 "" } else { -#line 17514 "" +#line 17508 "" taccfac = spfacs_1.accfac * 1.4f; /* cautionary accidental */ -#line 17515 "" +#line 17509 "" } -#line 17516 "" +#line 17510 "" } -#line 17517 "" +#line 17511 "" if (isgrace) { -#line 17518 "" +#line 17512 "" secondgrace = FALSE_; -#line 17519 "" +#line 17513 "" i__1 = comgrace_1.ngrace; -#line 17519 "" +#line 17513 "" for (ig = 1; ig <= i__1; ++ig) { -#line 17520 "" +#line 17514 "" if (! isgaft) { -#line 17521 "" +#line 17515 "" if (comgrace_1.ipg[ig - 1] == ip && comgrace_1.ivg[ig - 1] == commvl_1.ivx) { -#line 17521 "" +#line 17515 "" goto L123; -#line 17521 "" +#line 17515 "" } -#line 17522 "" +#line 17516 "" } else if (ip > 1) { -#line 17523 "" +#line 17517 "" if (comgrace_1.ipg[ig - 1] == ip - 1 && comgrace_1.ivg[ig - 1] == commvl_1.ivx) { -#line 17523 "" +#line 17517 "" goto L123; -#line 17523 "" +#line 17517 "" } -#line 17524 "" +#line 17518 "" } -#line 17525 "" +#line 17519 "" /* L122: */ -#line 17525 "" +#line 17519 "" } -#line 17526 "" - s_wsle(&io___1074); -#line 17526 "" +#line 17520 "" + s_wsle(&io___1069); +#line 17520 "" do_lio(&c__9, &c__1, "Problem finding grace index in makeabar", ( ftnlen)39); -#line 17526 "" +#line 17520 "" e_wsle(); -#line 17527 "" +#line 17521 "" s_stop("", (ftnlen)0); -#line 17528 "" +#line 17522 "" L123: /* wgr = distance to backspace (in headwidths), less main acc. */ @@ -41527,146 +41464,146 @@ L123: /* spgr = total space needed (w/o main acc). */ /* Also, spgr is same for b4 or after, but xb4fac-space will be in diff. place. */ -#line 17535 "" +#line 17529 "" if (comgrace_1.nng[ig - 1] == 1) { -#line 17536 "" +#line 17530 "" wgr = spfacs_1.grafac; -#line 17537 "" +#line 17531 "" if (comgrace_1.multg[ig - 1] == 0) { -#line 17537 "" +#line 17531 "" wgr += -.4f; -#line 17537 "" +#line 17531 "" } -#line 17538 "" +#line 17532 "" } else { -#line 17539 "" +#line 17533 "" wgr = comgrace_1.nng[ig - 1] * spfacs_1.emgfac; -#line 17540 "" +#line 17534 "" i__1 = comgrace_1.nng[ig - 1]; -#line 17540 "" +#line 17534 "" for (ing = 2; ing <= i__1; ++ing) { -#line 17541 "" +#line 17535 "" if (comgrace_1.naccg[comgrace_1.ngstrt[ig - 1] - 1 + ing - 1] > 0) { -#line 17541 "" +#line 17535 "" wgr += spfacs_1.acgfac; -#line 17541 "" +#line 17535 "" } -#line 17542 "" +#line 17536 "" /* L126: */ -#line 17542 "" +#line 17536 "" } -#line 17543 "" +#line 17537 "" } -#line 17544 "" +#line 17538 "" if (comgrace_1.graspace[ig - 1] > 0.f) { /* User-defined space before grace */ -#line 17548 "" +#line 17542 "" wgr += comgrace_1.graspace[ig - 1]; -#line 17549 "" +#line 17543 "" } -#line 17550 "" +#line 17544 "" ptgr[ig - 1] = wgr * wheadpt1; -#line 17551 "" +#line 17545 "" spgr = ptgr[ig - 1] + spfacs_1.xb4fac * wheadpt1; /* !!! May need to mod for chord accid's */ -#line 17555 "" +#line 17549 "" if (isaccs || iscacc) { -#line 17555 "" +#line 17549 "" ptgr[ig - 1] += taccfac * wheadpt1; -#line 17555 "" +#line 17549 "" } -#line 17556 "" +#line 17550 "" if (comgrace_1.naccg[comgrace_1.ngstrt[ig - 1] - 1] > 0) { -#line 17556 "" +#line 17550 "" spgr += wheadpt1 * spfacs_1.agc1fac; -#line 17556 "" +#line 17550 "" } -#line 17557 "" +#line 17551 "" pts += spgr; /* Special check for after-grace on ip-1 and normal on ip. Must go back thru */ /* loop again for the normal grace. */ -#line 17562 "" +#line 17556 "" if (isgaft && ig < comgrace_1.ngrace && ! secondgrace) { -#line 17563 "" +#line 17557 "" if (comgrace_1.ipg[ig] == ip) { -#line 17564 "" +#line 17558 "" secondgrace = TRUE_; -#line 17565 "" +#line 17559 "" ++ig; -#line 17566 "" +#line 17560 "" goto L123; -#line 17567 "" +#line 17561 "" } -#line 17568 "" +#line 17562 "" } -#line 17569 "" +#line 17563 "" } -#line 17570 "" +#line 17564 "" if (iscln) { -#line 17571 "" +#line 17565 "" pts += spfacs_1.clefac * wheadpt1; /* How far to backspace when printing the clef */ -#line 17575 "" +#line 17569 "" ptclef[commvl_1.ivx - 1] = 0.f; /* !!! May need to mod for chord accid's */ -#line 17579 "" +#line 17573 "" if (isaccs || iscacc) { -#line 17579 "" +#line 17573 "" ptclef[commvl_1.ivx - 1] += taccfac * wheadpt1; -#line 17579 "" +#line 17573 "" } -#line 17581 "" +#line 17575 "" if (isgrace) { -#line 17581 "" +#line 17575 "" ptclef[commvl_1.ivx - 1] += spgr; -#line 17581 "" +#line 17575 "" } -#line 17582 "" +#line 17576 "" } -#line 17583 "" +#line 17577 "" if (isrshft) { -#line 17584 "" +#line 17578 "" pts += spfacs_1.rtshfac * wheadpt1; -#line 17585 "" +#line 17579 "" } else if (isflag) { -#line 17586 "" +#line 17580 "" pts += spfacs_1.flagfac * wheadpt1; -#line 17587 "" +#line 17581 "" } else if (isdot) { -#line 17588 "" +#line 17582 "" pts += spfacs_1.dotfac * wheadpt1; -#line 17589 "" +#line 17583 "" } -#line 17590 "" +#line 17584 "" if ((r__1 = all_1.to[in - 1] - itrpt, dabs(r__1)) < comtol_1.tol) { /* Repeat, need a little extra space */ -#line 17594 "" +#line 17588 "" pts += spfacs_1.dotsfac * wheadpt1; -#line 17595 "" +#line 17589 "" } -#line 17596 "" +#line 17590 "" if (isarp) { -#line 17597 "" +#line 17591 "" pts += spfacs_1.arpfac * wheadpt1; -#line 17598 "" +#line 17592 "" } /* Add in padding space */ -#line 17602 "" +#line 17596 "" pts += spfacs_1.xspfac * wheadpt1; /* Now done with all items needing space except accidentals, */ @@ -41675,37 +41612,37 @@ L123: /* Get available space in elemskips (esk) */ -#line 17610 "" +#line 17604 "" isfirst = ip == 1 || (r__1 = all_1.to[in - 1] - itrpt, dabs(r__1)) < comtol_1.tol || (r__2 = all_1.to[in - 1] - itsig, dabs(r__2)) < comtol_1.tol; -#line 17612 "" +#line 17606 "" if (isfirst) { /* At start of bar or after repeat sign or new signature */ -#line 17616 "" +#line 17610 "" if ((r__1 = all_1.to[in - 1] - itsig, dabs(r__1)) < comtol_1.tol) { -#line 17617 "" +#line 17611 "" esk = 0.f; -#line 17618 "" +#line 17612 "" } else { -#line 17619 "" +#line 17613 "" esk = comask_1.fbar; -#line 17620 "" +#line 17614 "" } -#line 17621 "" +#line 17615 "" } else { /* Not 1st note of bar */ -#line 17625 "" +#line 17619 "" esk = all_1.eskz[commvl_1.ivx + ip * 24 - 25] - all_1.eskz[ commvl_1.ivx + (ip - 1) * 24 - 25]; -#line 17626 "" +#line 17620 "" } -#line 17627 "" +#line 17621 "" if (isgrace) { /* Since graces can be very long, cannot assume no interference if prior */ @@ -41715,1063 +41652,1062 @@ L123: /* 10/8/05 Kluge to not zero out esk if in xtup */ -#line 17636 "" +#line 17630 "" esksav = esk; /* Computing MAX */ -#line 17637 "" +#line 17631 "" i__1 = 1, i__7 = ip - 2; -#line 17637 "" +#line 17631 "" if ((ip <= 2 || all_1.nodur[commvl_1.ivx + max(i__1,i__7) * 24 - 25] > 0) && (r__1 = all_1.to[in - 1] - itsig, dabs(r__1)) > comtol_1.tol) { -#line 17637 "" +#line 17631 "" eskb4_(&ip, &commvl_1.ivx, &in, &ib, comnsp_2.space, &tstart[ 1], &comask_1.fbar, &itrpt, &esk); -#line 17637 "" +#line 17631 "" } /* * to(in).ne.itsig) */ -#line 17641 "" +#line 17635 "" if (dabs(esk) < comtol_1.tol) { -#line 17641 "" +#line 17635 "" esk = esksav; -#line 17641 "" +#line 17635 "" } -#line 17642 "" +#line 17636 "" } /* Done getting available elemskips. Remove headwidth if first. Must do here */ /* rather than earlier since check uses isfirst */ -#line 17647 "" +#line 17641 "" if (isfirst) { -#line 17647 "" +#line 17641 "" pts -= wheadpt1; -#line 17647 "" +#line 17641 "" } /* Deal with accidental shifts and left-notehead shifts */ -#line 17651 "" +#line 17645 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],10)) { /* In a chord */ -#line 17655 "" +#line 17649 "" ptsl = 0.f; -#line 17656 "" +#line 17650 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],27)) { -#line 17656 "" +#line 17650 "" ptsl = wheadpt1; -#line 17656 "" +#line 17650 "" } /* Computing MAX */ -#line 17657 "" +#line 17651 "" r__1 = ptsl, r__2 = icashft * .05f * wheadpt1; -#line 17657 "" +#line 17651 "" ptsadd = dmax(r__1,r__2); /* Note: may have icashft=-20000 (if shftmin=-1000 in crdacc) but that's OK */ -#line 17661 "" +#line 17655 "" } else { /* Not in a chord */ -#line 17665 "" +#line 17659 "" ihshft = 0; -#line 17666 "" +#line 17660 "" if (isaccs) { -#line 17667 "" +#line 17661 "" ihshft = igetbits_(&all_1.nacc[commvl_1.ivx + ip * 24 - 25], & c__7, &c__10); /* if (ihshft .ne. 0) ihshft = max(0,64-ihshft) */ -#line 17669 "" +#line 17663 "" if (ihshft != 0) { /* Computing MAX */ -#line 17669 "" +#line 17663 "" i__1 = 0, i__7 = 107 - ihshft; -#line 17669 "" +#line 17663 "" ihshft = max(i__1,i__7); -#line 17669 "" +#line 17663 "" } -#line 17670 "" +#line 17664 "" } /* Check for left-shifted main note */ -#line 17674 "" +#line 17668 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],8)) { -#line 17674 "" +#line 17668 "" ihshft = max(20,ihshft); -#line 17674 "" +#line 17668 "" } -#line 17675 "" +#line 17669 "" ptsadd = ihshft * .05f * wheadpt1; -#line 17676 "" +#line 17670 "" } -#line 17677 "" +#line 17671 "" pts += ptsadd; -#line 17678 "" +#line 17672 "" if (isgrace) { -#line 17678 "" +#line 17672 "" ptgr[ig - 1] += ptsadd; -#line 17678 "" +#line 17672 "" } -#line 17679 "" +#line 17673 "" if (iscln) { -#line 17679 "" +#line 17673 "" ptclef[commvl_1.ivx - 1] += ptsadd; -#line 17679 "" +#line 17673 "" } /* Left-shifted, non-chord note before? */ -#line 17683 "" +#line 17677 "" if (ip > 1) { -#line 17684 "" +#line 17678 "" if (! bit_test(all_1.ipl[commvl_1.ivx + (ip - 1) * 24 - 25],10) && bit_test(all_1.irest[commvl_1.ivx + (ip - 1) * 24 - 25], 27)) { -#line 17684 "" +#line 17678 "" pts -= wheadpt1; -#line 17684 "" +#line 17678 "" } -#line 17686 "" +#line 17680 "" } /* Try big accidentals first */ -#line 17690 "" +#line 17684 "" ptbneed = pts; -#line 17691 "" +#line 17685 "" if (isaccs || iscacc) { -#line 17692 "" +#line 17686 "" ptbneed += wheadpt1 * spfacs_1.bacfac; -#line 17693 "" +#line 17687 "" } -#line 17694 "" +#line 17688 "" if (comshort_1.poefa[all_1.iline - 1] * comask_1.poenom * esk > ptbneed) { /* Set flag for big accidental */ -#line 17698 "" +#line 17692 "" if (isacc) { -#line 17698 "" +#line 17692 "" all_1.nacc[commvl_1.ivx + ip * 24 - 25] = bit_set(all_1.nacc[ commvl_1.ivx + ip * 24 - 25],3); -#line 17698 "" +#line 17692 "" } -#line 17699 "" +#line 17693 "" goto L99; -#line 17700 "" +#line 17694 "" } /* Cannot use big, so try small */ -#line 17704 "" +#line 17698 "" ptsneed = pts; -#line 17705 "" +#line 17699 "" if (isaccs || iscacc) { -#line 17706 "" +#line 17700 "" ptsneed += taccfac * wheadpt1; -#line 17707 "" +#line 17701 "" } -#line 17708 "" +#line 17702 "" if (comshort_1.poefa[all_1.iline - 1] * comask_1.poenom * esk < ptsneed) { -#line 17709 "" +#line 17703 "" r__1 = comshort_1.poefa[all_1.iline - 1] * esk; -#line 17709 "" - r__2 = comshort_1.poefa[all_1.iline - 1] * comask_1.scaldold; -#line 17709 "" +#line 17703 "" addask_(&all_1.to[in - 1], &ptsneed, &r__1, &comask_1.fixednew, & - r__2, &c_b1008, &c_false); -#line 17711 "" + comask_1.scaldold, &c_b1008, &comshort_1.poefa[ + all_1.iline - 1], &c_false); +#line 17705 "" } -#line 17712 "" +#line 17706 "" L99: -#line 17713 "" +#line 17707 "" if (bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],26)) { /* User-defined space. Warning, "zero" may change value in addask! */ -#line 17717 "" +#line 17711 "" zero = 0.f; -#line 17718 "" +#line 17712 "" addask_(&all_1.to[in - 1], &ptsneed, &zero, &comask_1.fixednew, & - comask_1.scaldold, tglp1, &c_true); -#line 17720 "" + comask_1.scaldold, tglp1, &c_b1053, &c_true); +#line 17714 "" } /* End of big manual loop over "in" for accidental checking */ -#line 17724 "" +#line 17718 "" goto L111; -#line 17725 "" +#line 17719 "" L112: /* End of ask analysis for this block. */ /* Adjust eskz if there are added spaces. Corrects length of xtup brackets. */ -#line 17731 "" +#line 17725 "" if (comas1_1.naskb > 0) { -#line 17731 "" +#line 17725 "" adjusteskz_(&ib, &istart[1], &comask_1.poenom); -#line 17731 "" +#line 17725 "" } /* Check for internal repeat or sig change. */ -#line 17735 "" +#line 17729 "" if (ib > 1 && all_1.ivxo[istart[ib] - 1] == 1) { -#line 17736 "" +#line 17730 "" iirpt = all_1.islur[all_1.ipo[istart[ib] - 1] * 24 - 24] & 67109216; -#line 17737 "" +#line 17731 "" if (iirpt > 0) { /* Internal repeat */ -#line 17741 "" +#line 17735 "" if (comlast_1.islast) { -#line 17741 "" - s_wsfe(&io___1090); +#line 17735 "" + s_wsfe(&io___1085); /* Writing concatenation */ -#line 17741 "" +#line 17735 "" i__9[0] = 1, a__6[0] = all_1.sq; -#line 17741 "" +#line 17735 "" i__9[1] = 7, a__6[1] = "advance"; -#line 17741 "" +#line 17735 "" i__9[2] = 1, a__6[2] = all_1.sq; -#line 17741 "" +#line 17735 "" i__9[3] = 8, a__6[3] = "barno-1%"; -#line 17741 "" +#line 17735 "" s_cat(ch__7, a__6, i__9, &c__4, (ftnlen)17); -#line 17741 "" +#line 17735 "" do_fio(&c__1, ch__7, (ftnlen)17); -#line 17741 "" +#line 17735 "" e_wsfe(); -#line 17741 "" +#line 17735 "" } -#line 17742 "" +#line 17736 "" if (iirpt == 96) { -#line 17743 "" +#line 17737 "" if (comlast_1.islast) { -#line 17743 "" - s_wsfe(&io___1091); +#line 17737 "" + s_wsfe(&io___1086); /* Writing concatenation */ -#line 17743 "" +#line 17737 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17743 "" +#line 17737 "" i__4[1] = 15, a__2[1] = "leftrightrepeat"; -#line 17743 "" +#line 17737 "" s_cat(ch__8, a__2, i__4, &c__2, (ftnlen)16); -#line 17743 "" +#line 17737 "" do_fio(&c__1, ch__8, (ftnlen)16); -#line 17743 "" +#line 17737 "" e_wsfe(); -#line 17743 "" +#line 17737 "" } -#line 17744 "" +#line 17738 "" comask_1.fixednew += spfacs_1.lrrptfac * comask_1.wheadpt; -#line 17745 "" +#line 17739 "" } else if (bit_test(iirpt,5)) { -#line 17746 "" +#line 17740 "" if (comlast_1.islast) { -#line 17746 "" - s_wsfe(&io___1092); +#line 17740 "" + s_wsfe(&io___1087); /* Writing concatenation */ -#line 17746 "" +#line 17740 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17746 "" +#line 17740 "" i__4[1] = 10, a__2[1] = "leftrepeat"; -#line 17746 "" +#line 17740 "" s_cat(ch__9, a__2, i__4, &c__2, (ftnlen)11); -#line 17746 "" +#line 17740 "" do_fio(&c__1, ch__9, (ftnlen)11); -#line 17746 "" +#line 17740 "" e_wsfe(); -#line 17746 "" +#line 17740 "" } -#line 17747 "" +#line 17741 "" comask_1.fixednew += spfacs_1.rptfac * comask_1.wheadpt; -#line 17748 "" +#line 17742 "" } else if (bit_test(iirpt,6)) { -#line 17749 "" +#line 17743 "" if (comlast_1.islast) { -#line 17749 "" - s_wsfe(&io___1093); +#line 17743 "" + s_wsfe(&io___1088); /* Writing concatenation */ -#line 17749 "" +#line 17743 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17749 "" +#line 17743 "" i__4[1] = 11, a__2[1] = "rightrepeat"; -#line 17749 "" +#line 17743 "" s_cat(ch__5, a__2, i__4, &c__2, (ftnlen)12); -#line 17749 "" +#line 17743 "" do_fio(&c__1, ch__5, (ftnlen)12); -#line 17749 "" +#line 17743 "" e_wsfe(); -#line 17749 "" +#line 17743 "" } -#line 17750 "" +#line 17744 "" comask_1.fixednew += spfacs_1.rptfac * comask_1.wheadpt; -#line 17751 "" +#line 17745 "" } else if (bit_test(iirpt,8)) { -#line 17752 "" +#line 17746 "" if (comlast_1.islast) { -#line 17752 "" - s_wsfe(&io___1094); +#line 17746 "" + s_wsfe(&io___1089); /* Writing concatenation */ -#line 17752 "" +#line 17746 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17752 "" +#line 17746 "" i__4[1] = 9, a__2[1] = "doublebar"; -#line 17752 "" +#line 17746 "" s_cat(ch__10, a__2, i__4, &c__2, (ftnlen)10); -#line 17752 "" +#line 17746 "" do_fio(&c__1, ch__10, (ftnlen)10); -#line 17752 "" +#line 17746 "" e_wsfe(); -#line 17752 "" +#line 17746 "" } -#line 17753 "" +#line 17747 "" } else { -#line 17754 "" - s_wsle(&io___1095); -#line 17754 "" +#line 17748 "" + s_wsle(&io___1090); +#line 17748 "" do_lio(&c__9, &c__1, "Unexpected mid-bar repeat command "\ "R*", (ftnlen)36); -#line 17754 "" +#line 17748 "" e_wsle(); -#line 17755 "" +#line 17749 "" stop1_(); -#line 17756 "" +#line 17750 "" } -#line 17757 "" +#line 17751 "" comask_1.scaldold -= comask_1.fbar; -#line 17758 "" +#line 17752 "" } -#line 17759 "" +#line 17753 "" if (bit_test(all_1.ipl[all_1.ipo[istart[ib] - 1] * 24 - 24],28)) { /* Internal signature change. */ /* Writing concatenation */ -#line 17763 "" +#line 17757 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17763 "" +#line 17757 "" i__4[1] = 17, a__2[1] = "generalsignature{"; -#line 17763 "" +#line 17757 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 17764 "" +#line 17758 "" lnote = 18; -#line 17765 "" +#line 17759 "" if (comtop_1.isig < 0) { /* Writing concatenation */ -#line 17766 "" +#line 17760 "" i__4[0] = lnote, a__2[0] = notexq; -#line 17766 "" +#line 17760 "" i__4[1] = 1, a__2[1] = "-"; -#line 17766 "" +#line 17760 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 17767 "" +#line 17761 "" ++lnote; -#line 17768 "" +#line 17762 "" } -#line 17769 "" +#line 17763 "" if (comlast_1.islast) { -#line 17769 "" - s_wsfe(&io___1096); +#line 17763 "" + s_wsfe(&io___1091); /* Writing concatenation */ -#line 17769 "" +#line 17763 "" i__6[0] = lnote, a__4[0] = notexq; -#line 17769 "" +#line 17763 "" i__1 = abs(comtop_1.isig) + 48; -#line 17769 "" +#line 17763 "" chax_(ch__6, (ftnlen)1, &i__1); -#line 17769 "" +#line 17763 "" i__6[1] = 1, a__4[1] = ch__6; -#line 17769 "" +#line 17763 "" i__6[2] = 2, a__4[2] = "}%"; -#line 17769 "" +#line 17763 "" s_cat(ch__2, a__4, i__6, &c__3, (ftnlen)82); -#line 17769 "" +#line 17763 "" do_fio(&c__1, ch__2, lnote + 3); -#line 17769 "" +#line 17763 "" e_wsfe(); -#line 17769 "" +#line 17763 "" } -#line 17771 "" +#line 17765 "" if (comlast_1.islast && comignorenats_1.ignorenats) { -#line 17771 "" - s_wsfe(&io___1097); +#line 17765 "" + s_wsfe(&io___1092); /* Writing concatenation */ -#line 17771 "" +#line 17765 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17771 "" +#line 17765 "" i__4[1] = 11, a__2[1] = "ignorenats%"; -#line 17771 "" +#line 17765 "" s_cat(ch__5, a__2, i__4, &c__2, (ftnlen)12); -#line 17771 "" +#line 17765 "" do_fio(&c__1, ch__5, (ftnlen)12); -#line 17771 "" +#line 17765 "" e_wsfe(); -#line 17771 "" +#line 17765 "" } -#line 17773 "" +#line 17767 "" if (comlast_1.islast) { -#line 17773 "" - s_wsfe(&io___1098); +#line 17767 "" + s_wsfe(&io___1093); /* Writing concatenation */ -#line 17773 "" +#line 17767 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 17773 "" +#line 17767 "" i__3[1] = 14, a__1[1] = "zchangecontext"; -#line 17773 "" +#line 17767 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 17773 "" +#line 17767 "" i__3[3] = 12, a__1[3] = "addspace{-.5"; -#line 17773 "" +#line 17767 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 17773 "" +#line 17767 "" i__3[5] = 15, a__1[5] = "afterruleskip}%"; -#line 17773 "" +#line 17767 "" s_cat(ch__11, a__1, i__3, &c__6, (ftnlen)44); -#line 17773 "" +#line 17767 "" do_fio(&c__1, ch__11, (ftnlen)44); -#line 17773 "" +#line 17767 "" e_wsfe(); -#line 17773 "" +#line 17767 "" } -#line 17775 "" +#line 17769 "" lnote = 0; -#line 17776 "" +#line 17770 "" } -#line 17777 "" +#line 17771 "" } -#line 17778 "" +#line 17772 "" comnsp_2.flgndb = FALSE_; /* Done with start-of-block stuff. Begin main loop over voices. */ -#line 17782 "" +#line 17776 "" i__1 = all_1.nv; -#line 17782 "" +#line 17776 "" for (all_1.iv = 1; all_1.iv <= i__1; ++all_1.iv) { -#line 17783 "" +#line 17777 "" i__7 = commvl_1.nvmx[all_1.iv - 1]; -#line 17783 "" +#line 17777 "" for (kv = 1; kv <= i__7; ++kv) { -#line 17784 "" +#line 17778 "" commvl_1.ivx = commvl_1.ivmx[all_1.iv + kv * 24 - 25]; -#line 17785 "" +#line 17779 "" icm = commidi_1.midchan[all_1.iv + kv * 24 - 25]; /* A rather klugey way to set flag for figure in this voice */ /* Must always check figbass before figchk. */ -#line 17790 "" +#line 17784 "" if (all_1.figbass) { -#line 17791 "" +#line 17785 "" ivf = 0; -#line 17792 "" +#line 17786 "" if (commvl_1.ivx == 1) { -#line 17793 "" +#line 17787 "" ivf = 1; -#line 17794 "" +#line 17788 "" } else if (commvl_1.ivx == comfig_1.ivxfig2) { -#line 17795 "" +#line 17789 "" ivf = 2; -#line 17796 "" +#line 17790 "" } -#line 17797 "" +#line 17791 "" if (ivf > 0) { -#line 17797 "" +#line 17791 "" all_1.figchk[ivf - 1] = comfig_1.nfigs[ivf - 1] > 0; -#line 17797 "" +#line 17791 "" } -#line 17798 "" +#line 17792 "" } -#line 17799 "" +#line 17793 "" if (commvl_1.ivx > 1) { -#line 17800 "" +#line 17794 "" if (commvl_1.ivx <= all_1.nv) { -#line 17801 "" +#line 17795 "" addstr_(all_1.sepsymq + (all_1.iv - 2), &c__1, soutq, &lsout, (ftnlen)1, (ftnlen)80); -#line 17802 "" +#line 17796 "" } else { /* Writing concatenation */ -#line 17803 "" +#line 17797 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17803 "" +#line 17797 "" i__4[1] = 9, a__2[1] = "nextvoice"; -#line 17803 "" +#line 17797 "" s_cat(ch__10, a__2, i__4, &c__2, (ftnlen)10); -#line 17803 "" +#line 17797 "" addstr_(ch__10, &c__10, soutq, &lsout, (ftnlen)10, ( ftnlen)80); -#line 17804 "" +#line 17798 "" } -#line 17805 "" +#line 17799 "" } -#line 17806 "" +#line 17800 "" if (comhead_1.ihdht > 0 && commvl_1.ivx == all_1.nv) { /* Write header. First adjust height if needed to miss barno. */ -#line 17810 "" +#line 17804 "" if (comask_1.bar1syst && all_1.iline != 1) { -#line 17811 "" +#line 17805 "" comhead_1.ihdht = comsln_1.irzbnd + 15 + comsln_1.isnx; -#line 17812 "" +#line 17806 "" } /* Add user-defined vertical shift */ -#line 17816 "" +#line 17810 "" comhead_1.ihdht += comhead_1.ihdvrt; -#line 17817 "" +#line 17811 "" lchead = lenstr_(comhead_1.headrq, &c__80, (ftnlen)80); /* Writing concatenation */ -#line 17818 "" +#line 17812 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17818 "" +#line 17812 "" i__4[1] = 10, a__2[1] = "zcharnote{"; -#line 17818 "" +#line 17812 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 17819 "" - s_wsfi(&io___1102); -#line 17819 "" +#line 17813 "" + s_wsfi(&io___1097); +#line 17813 "" do_fio(&c__1, (char *)&comhead_1.ihdht, (ftnlen)sizeof( integer)); -#line 17819 "" +#line 17813 "" e_wsfi(); /* Writing concatenation */ -#line 17820 "" +#line 17814 "" i__3[0] = 13, a__1[0] = notexq; -#line 17820 "" +#line 17814 "" i__3[1] = 2, a__1[1] = "}{"; -#line 17820 "" +#line 17814 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 17820 "" +#line 17814 "" i__3[3] = 7, a__1[3] = "bigfont"; -#line 17820 "" +#line 17814 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 17820 "" +#line 17814 "" i__3[5] = 10, a__1[5] = "kern-30pt "; -#line 17820 "" +#line 17814 "" s_cat(notexq, a__1, i__3, &c__6, (ftnlen)79); -#line 17821 "" +#line 17815 "" addstr_(notexq, &c__34, soutq, &lsout, (ftnlen)79, ( ftnlen)80); /* Writing concatenation */ -#line 17822 "" +#line 17816 "" i__4[0] = lchead, a__2[0] = comhead_1.headrq; -#line 17822 "" +#line 17816 "" i__4[1] = 1, a__2[1] = "}"; -#line 17822 "" +#line 17816 "" s_cat(ch__12, a__2, i__4, &c__2, (ftnlen)81); -#line 17822 "" +#line 17816 "" i__10 = lchead + 1; -#line 17822 "" +#line 17816 "" addstr_(ch__12, &i__10, soutq, &lsout, lchead + 1, ( ftnlen)80); -#line 17823 "" +#line 17817 "" comhead_1.ihdht = 0; -#line 17824 "" +#line 17818 "" } -#line 17825 "" +#line 17819 "" if (comhead_1.lower && commvl_1.ivx == all_1.nv) { -#line 17826 "" +#line 17820 "" lclow = lenstr_(comhead_1.lowerq, &c__80, (ftnlen)80); /* Writing concatenation */ -#line 17827 "" +#line 17821 "" i__11[0] = 1, a__7[0] = all_1.sq; -#line 17827 "" +#line 17821 "" i__11[1] = 14, a__7[1] = "zcharnote{-6}{"; -#line 17827 "" +#line 17821 "" i__11[2] = 1, a__7[2] = all_1.sq; -#line 17827 "" +#line 17821 "" i__11[3] = 5, a__7[3] = "tempo"; -#line 17827 "" +#line 17821 "" i__11[4] = 1, a__7[4] = all_1.sq; -#line 17827 "" +#line 17821 "" i__11[5] = 10, a__7[5] = "kern-10pt "; -#line 17827 "" +#line 17821 "" i__11[6] = lclow, a__7[6] = comhead_1.lowerq; -#line 17827 "" +#line 17821 "" i__11[7] = 1, a__7[7] = "}"; -#line 17827 "" +#line 17821 "" s_cat(ch__13, a__7, i__11, &c__8, (ftnlen)113); -#line 17827 "" +#line 17821 "" i__10 = lclow + 33; -#line 17827 "" +#line 17821 "" addstr_(ch__13, &i__10, soutq, &lsout, lclow + 33, ( ftnlen)80); -#line 17830 "" +#line 17824 "" comhead_1.lower = FALSE_; -#line 17831 "" +#line 17825 "" } -#line 17832 "" +#line 17826 "" tnow = tstart[ib]; -#line 17833 "" +#line 17827 "" nofirst = TRUE_; /* Done setting up voice ivx for start of block ib. Loop over notes in voice. */ -#line 17837 "" +#line 17831 "" i__10 = istop[ib]; -#line 17837 "" +#line 17831 "" for (all_1.jn = istart[ib]; all_1.jn <= i__10; ++all_1.jn) { -#line 17838 "" +#line 17832 "" if (all_1.ivxo[all_1.jn - 1] != commvl_1.ivx) { -#line 17838 "" +#line 17832 "" goto L10; -#line 17838 "" +#line 17832 "" } -#line 17839 "" +#line 17833 "" ip = all_1.ipo[all_1.jn - 1]; /* May have problem with not initializing islhgt, so do it here */ -#line 17843 "" +#line 17837 "" islhgt = 0; -#line 17845 "" +#line 17839 "" if (nofirst) { -#line 17846 "" +#line 17840 "" comoct_1.noctup = 0; -#line 17847 "" +#line 17841 "" if (ncmid_(&all_1.iv, &ip) == 23) { -#line 17847 "" +#line 17841 "" comoct_1.noctup = -2; -#line 17847 "" +#line 17841 "" } -#line 17848 "" +#line 17842 "" nofirst = FALSE_; -#line 17849 "" +#line 17843 "" } /* Check for internal floating figure (before last note of group). */ -#line 17853 "" +#line 17847 "" L12: -#line 17853 "" +#line 17847 "" if (all_1.figbass) { -#line 17854 "" +#line 17848 "" if (commvl_1.ivx == 1 || commvl_1.ivx == comfig_1.ivxfig2) { -#line 17855 "" +#line 17849 "" ivf = 1; -#line 17856 "" +#line 17850 "" if (commvl_1.ivx > 1) { -#line 17856 "" +#line 17850 "" ivf = 2; -#line 17856 "" +#line 17850 "" } -#line 17857 "" +#line 17851 "" if (all_1.figchk[ivf - 1] && (real) comfig_1.itfig[ivf + (ifig[ivf - 1] << 1) - 3] < tnow - comtol_1.tol) { /* Bypassed figure location. Backup, place fig, return. */ -#line 17862 "" +#line 17856 "" offnsk = (tnow - comfig_1.itfig[ivf + (ifig[ ivf - 1] << 1) - 3]) / comnsp_2.space[ ib - 1]; -#line 17863 "" +#line 17857 "" putfig_(&ivf, &ifig[ivf - 1], &offnsk, & all_1.figchk[ivf - 1], soutq, &lsout, (ftnlen)80); -#line 17865 "" +#line 17859 "" goto L12; -#line 17866 "" +#line 17860 "" } -#line 17867 "" +#line 17861 "" } -#line 17868 "" +#line 17862 "" } /* Put in \sk if needed */ -#line 17872 "" +#line 17866 "" if (all_1.to[all_1.jn - 1] > tnow + comtol_1.tol) { /* Writing concatenation */ -#line 17873 "" +#line 17867 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17873 "" +#line 17867 "" i__4[1] = 2, a__2[1] = "sk"; -#line 17873 "" +#line 17867 "" s_cat(ch__14, a__2, i__4, &c__2, (ftnlen)3); -#line 17873 "" +#line 17867 "" addstr_(ch__14, &c__3, soutq, &lsout, (ftnlen)3, ( ftnlen)80); -#line 17874 "" +#line 17868 "" tnow += comnsp_2.space[ib - 1]; -#line 17875 "" +#line 17869 "" goto L12; -#line 17876 "" +#line 17870 "" } /* Check for user-defined shifts */ -#line 17880 "" +#line 17874 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],15) || bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],16)) { -#line 17880 "" +#line 17874 "" putshft_(&commvl_1.ivx, &c_true, soutq, &lsout, ( ftnlen)80); -#line 17880 "" +#line 17874 "" } -#line 17882 "" +#line 17876 "" L21: -#line 17882 "" +#line 17876 "" if (iaskb[commvl_1.ivx - 1] <= comas1_1.naskb && tnow > comas1_1.task[iaskb[commvl_1.ivx - 1] - 1] - comtol_1.tol) { -#line 17884 "" +#line 17878 "" if (comas1_1.task[iaskb[commvl_1.ivx - 1] - 1] > tstart[ib] - comtol_1.tol) { /* Insert placeholder for accidental skip */ /* Writing concatenation */ -#line 17888 "" +#line 17882 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17888 "" +#line 17882 "" i__4[1] = 8, a__2[1] = "ask "; -#line 17888 "" +#line 17882 "" s_cat(ch__15, a__2, i__4, &c__2, (ftnlen)9); -#line 17888 "" +#line 17882 "" addstr_(ch__15, &c__9, soutq, &lsout, (ftnlen)9, ( ftnlen)80); -#line 17889 "" +#line 17883 "" ++comas2_1.nasksys; -#line 17890 "" +#line 17884 "" comas2_1.wasksys[comas2_1.nasksys - 1] = comas1_1.wask[iaskb[commvl_1.ivx - 1] - 1] ; -#line 17891 "" +#line 17885 "" if (comas1_1.wask[iaskb[commvl_1.ivx - 1] - 1] > 0.f) { -#line 17892 "" +#line 17886 "" comas2_1.elasksys[comas2_1.nasksys - 1] = comas1_1.elask[iaskb[commvl_1.ivx - 1] - 1]; -#line 17893 "" +#line 17887 "" } else { /* This is a signal to permit negative ask's. Should really have elask>=0. */ -#line 17897 "" +#line 17891 "" comas2_1.elasksys[comas2_1.nasksys - 1] = -comas1_1.elask[iaskb[commvl_1.ivx - 1] - 1]; -#line 17898 "" +#line 17892 "" } -#line 17899 "" +#line 17893 "" } /* May have skipped some task's in earlier blocks (due to void voice) */ -#line 17903 "" +#line 17897 "" ++iaskb[commvl_1.ivx - 1]; -#line 17904 "" +#line 17898 "" goto L21; -#line 17905 "" +#line 17899 "" } -#line 17906 "" +#line 17900 "" if (all_1.figbass) { -#line 17907 "" +#line 17901 "" if (commvl_1.ivx == 1 || commvl_1.ivx == comfig_1.ivxfig2) { -#line 17908 "" +#line 17902 "" ivf = 1; -#line 17909 "" +#line 17903 "" if (commvl_1.ivx > 1) { -#line 17909 "" +#line 17903 "" ivf = 2; -#line 17909 "" +#line 17903 "" } -#line 17910 "" +#line 17904 "" if (all_1.figchk[ivf - 1] && (r__1 = comfig_1.itfig[ivf + (ifig[ivf - 1] << 1) - 3] - tnow, dabs(r__1)) < comtol_1.tol) { /* Figure on a note. NB: later special check for late figs. */ -#line 17915 "" +#line 17909 "" putfig_(&ivf, &ifig[ivf - 1], &c_b1008, & all_1.figchk[ivf - 1], soutq, &lsout, (ftnlen)80); -#line 17916 "" +#line 17910 "" } -#line 17917 "" +#line 17911 "" } -#line 17918 "" +#line 17912 "" } /* Check for new clef here. */ -#line 17922 "" +#line 17916 "" if (isclef && bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],11)) { -#line 17923 "" +#line 17917 "" if (ptclef[all_1.iv - 1] > 0.f) { /* Writing concatenation */ -#line 17924 "" +#line 17918 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17924 "" +#line 17918 "" i__4[1] = 5, a__2[1] = "off{-"; -#line 17924 "" +#line 17918 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 17925 "" +#line 17919 "" if (ptclef[all_1.iv - 1] < 9.95f) { -#line 17926 "" - s_wsfi(&io___1108); -#line 17926 "" +#line 17920 "" + s_wsfi(&io___1103); +#line 17920 "" do_fio(&c__1, (char *)&ptclef[all_1.iv - 1], ( ftnlen)sizeof(real)); -#line 17926 "" +#line 17920 "" e_wsfi(); -#line 17927 "" +#line 17921 "" lnote = 9; -#line 17928 "" +#line 17922 "" } else { -#line 17929 "" - s_wsfi(&io___1109); -#line 17929 "" +#line 17923 "" + s_wsfi(&io___1104); +#line 17923 "" do_fio(&c__1, (char *)&ptclef[all_1.iv - 1], ( ftnlen)sizeof(real)); -#line 17929 "" +#line 17923 "" e_wsfi(); -#line 17930 "" +#line 17924 "" lnote = 10; -#line 17931 "" +#line 17925 "" } /* Writing concatenation */ -#line 17932 "" +#line 17926 "" i__4[0] = lnote, a__2[0] = notexq; -#line 17932 "" +#line 17926 "" i__4[1] = 3, a__2[1] = "pt}"; -#line 17932 "" +#line 17926 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 17933 "" +#line 17927 "" lnote += 3; -#line 17934 "" +#line 17928 "" addstr_(notexq, &lnote, soutq, &lsout, (ftnlen)79, (ftnlen)80); -#line 17935 "" +#line 17929 "" } -#line 17936 "" +#line 17930 "" clefsym_(&all_1.islur[all_1.iv + ip * 24 - 25], notexq, &lnote, &nclef, (ftnlen)79); /* 151220 If clef is treblelowoct, change '0' in pos'n 9 to '8' */ -#line 17940 "" +#line 17934 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],2) ) { /* Writing concatenation */ -#line 17940 "" +#line 17934 "" i__6[0] = 8, a__4[0] = notexq; -#line 17940 "" +#line 17934 "" i__6[1] = 1, a__4[1] = "8"; -#line 17940 "" +#line 17934 "" i__6[2] = 1, a__4[2] = notexq + 9; -#line 17940 "" +#line 17934 "" s_cat(notexq, a__4, i__6, &c__3, (ftnlen)79); -#line 17940 "" +#line 17934 "" } -#line 17942 "" +#line 17936 "" addstr_(notexq, &lnote, soutq, &lsout, (ftnlen)79, ( ftnlen)80); -#line 17943 "" +#line 17937 "" if (ptclef[all_1.iv - 1] > 0.f) { /* Writing concatenation */ -#line 17944 "" +#line 17938 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 17944 "" +#line 17938 "" i__4[1] = 4, a__2[1] = "off{"; -#line 17944 "" +#line 17938 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 17945 "" +#line 17939 "" if (ptclef[all_1.iv - 1] < 9.95f) { -#line 17946 "" - s_wsfi(&io___1111); -#line 17946 "" +#line 17940 "" + s_wsfi(&io___1106); +#line 17940 "" do_fio(&c__1, (char *)&ptclef[all_1.iv - 1], ( ftnlen)sizeof(real)); -#line 17946 "" +#line 17940 "" e_wsfi(); -#line 17947 "" +#line 17941 "" lnote = 8; -#line 17948 "" +#line 17942 "" } else { -#line 17949 "" - s_wsfi(&io___1112); -#line 17949 "" +#line 17943 "" + s_wsfi(&io___1107); +#line 17943 "" do_fio(&c__1, (char *)&ptclef[all_1.iv - 1], ( ftnlen)sizeof(real)); -#line 17949 "" +#line 17943 "" e_wsfi(); -#line 17950 "" +#line 17944 "" lnote = 9; -#line 17951 "" +#line 17945 "" } /* Writing concatenation */ -#line 17952 "" +#line 17946 "" i__4[0] = lnote, a__2[0] = notexq; -#line 17952 "" +#line 17946 "" i__4[1] = 3, a__2[1] = "pt}"; -#line 17952 "" +#line 17946 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 17953 "" +#line 17947 "" lnote += 3; -#line 17954 "" +#line 17948 "" addstr_(notexq, &lnote, soutq, &lsout, (ftnlen)79, (ftnlen)80); -#line 17955 "" +#line 17949 "" } -#line 17956 "" +#line 17950 "" } /* Checking for literal TeX string BEFORE starting beams!! */ -#line 17960 "" +#line 17954 "" if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],16)) { -#line 17961 "" +#line 17955 "" i__12 = comgrace_1.nlit; -#line 17961 "" +#line 17955 "" for (il = 1; il <= i__12; ++il) { -#line 17962 "" +#line 17956 "" if (comgrace_1.iplit[il - 1] == ip && comgrace_1.ivlit[il - 1] == commvl_1.ivx) { -#line 17962 "" +#line 17956 "" goto L125; -#line 17962 "" +#line 17956 "" } -#line 17963 "" +#line 17957 "" /* L124: */ -#line 17963 "" +#line 17957 "" } -#line 17964 "" - s_wsle(&io___1114); -#line 17964 "" +#line 17958 "" + s_wsle(&io___1109); +#line 17958 "" do_lio(&c__9, &c__1, "Problem finding index for lite"\ "ral string", (ftnlen)40); -#line 17964 "" +#line 17958 "" e_wsle(); -#line 17965 "" +#line 17959 "" stop1_(); -#line 17966 "" +#line 17960 "" L125: /* Write a type 1 tex string. */ -#line 17970 "" +#line 17964 "" if (comgrace_1.lenlit[il - 1] < 71) { /* Add normally */ -#line 17974 "" +#line 17968 "" addstr_(comgrace_1.litq + (il - 1 << 7), & comgrace_1.lenlit[il - 1], soutq, &lsout, (ftnlen)128, (ftnlen)80); -#line 17975 "" +#line 17969 "" } else { /* Longer than 71. Write souq, Write string, start new soutq. */ -#line 17979 "" +#line 17973 "" if (comlast_1.islast) { -#line 17979 "" - s_wsfe(&io___1115); +#line 17973 "" + s_wsfe(&io___1110); /* Writing concatenation */ -#line 17979 "" +#line 17973 "" i__4[0] = lsout, a__2[0] = soutq; -#line 17979 "" +#line 17973 "" i__4[1] = 1, a__2[1] = "%"; -#line 17979 "" +#line 17973 "" s_cat(ch__12, a__2, i__4, &c__2, (ftnlen)81); -#line 17979 "" +#line 17973 "" do_fio(&c__1, ch__12, lsout + 1); -#line 17979 "" +#line 17973 "" e_wsfe(); -#line 17979 "" +#line 17973 "" } -#line 17980 "" +#line 17974 "" if (comlast_1.islast) { -#line 17980 "" - s_wsfe(&io___1116); +#line 17974 "" + s_wsfe(&io___1111); /* Writing concatenation */ -#line 17980 "" +#line 17974 "" i__4[0] = comgrace_1.lenlit[il - 1], a__2[0] = comgrace_1.litq + (il - 1 << 7); -#line 17980 "" +#line 17974 "" i__4[1] = 1, a__2[1] = "%"; -#line 17980 "" +#line 17974 "" s_cat(ch__16, a__2, i__4, &c__2, (ftnlen)129); -#line 17980 "" +#line 17974 "" do_fio(&c__1, ch__16, comgrace_1.lenlit[il - 1] + 1); -#line 17980 "" +#line 17974 "" e_wsfe(); -#line 17980 "" +#line 17974 "" } -#line 17981 "" +#line 17975 "" lsout = 0; -#line 17982 "" +#line 17976 "" } -#line 17983 "" +#line 17977 "" } /* Arpeggio on a main (non-chordal) note? */ -#line 17987 "" +#line 17981 "" if (bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],27)) { /* call putarp(tnow,iv,ip,nolev(ivx,ip),ncmid(iv,ip), */ -#line 17989 "" +#line 17983 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 17989 "" +#line 17983 "" putarp_(&tnow, &commvl_1.ivx, &ip, &all_1.nolev[ commvl_1.ivx + ip * 24 - 25], &i__12, soutq, & lsout, (ftnlen)80); -#line 17991 "" +#line 17985 "" } /* See if a beam starts here */ -#line 17995 "" +#line 17989 "" if (numbms[commvl_1.ivx] > 0 && all_1.ibmcnt[commvl_1.ivx - 1] <= numbms[commvl_1.ivx] && all_1.ibm1[ commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25] == ip || bit_test(all_1.nacc[ commvl_1.ivx + ip * 24 - 25],21)) { -#line 17998 "" +#line 17992 "" if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],24)) { /* Not a jump start */ -#line 18002 "" +#line 17996 "" if (comkbdrests_1.kbdrests && bit_test( all_1.irest[commvl_1.ivx + ip * 24 - 25], 0) && ! bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],29) && commvl_1.nvmx[ all_1.iv - 1] == 2 && all_1.nolev[ commvl_1.ivx + ip * 24 - 25] <= 50) { -#line 18002 "" +#line 17996 "" chkkbdrests_(&ip, &all_1.iv, &commvl_1.ivx, all_1.nn, all_1.islur, all_1.irest, all_1.nolev, commvl_1.ivmx, all_1.nib, @@ -42780,117 +42716,117 @@ L125: comkbdrests_1.levtopr, comkbdrests_1.levbotr, all_1.mult, all_1.ipl); -#line 18002 "" +#line 17996 "" } -#line 18008 "" +#line 18002 "" beamstrt_(notexq, &lnote, nornb, ihornb, comnsp_2.space, &squez[1], &ib, (ftnlen) 79); /* Shift beam start if notehead was shifted */ -#line 18012 "" +#line 18006 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],8)) { /* Writing concatenation */ -#line 18013 "" +#line 18007 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18013 "" +#line 18007 "" i__4[1] = 5, a__2[1] = "loff{"; -#line 18013 "" +#line 18007 "" s_cat(ch__17, a__2, i__4, &c__2, (ftnlen)6); -#line 18013 "" +#line 18007 "" addstr_(ch__17, &c__6, soutq, &lsout, (ftnlen) 6, (ftnlen)80); -#line 18014 "" +#line 18008 "" } else if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],9)) { /* Writing concatenation */ -#line 18015 "" +#line 18009 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18015 "" +#line 18009 "" i__4[1] = 5, a__2[1] = "roff{"; -#line 18015 "" +#line 18009 "" s_cat(ch__17, a__2, i__4, &c__2, (ftnlen)6); -#line 18015 "" +#line 18009 "" addstr_(ch__17, &c__6, soutq, &lsout, (ftnlen) 6, (ftnlen)80); -#line 18016 "" +#line 18010 "" } -#line 18017 "" +#line 18011 "" if (lnote > 0) { -#line 18017 "" +#line 18011 "" addstr_(notexq, &lnote, soutq, &lsout, ( ftnlen)79, (ftnlen)80); -#line 18017 "" +#line 18011 "" } -#line 18018 "" +#line 18012 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],8) || bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],9)) { -#line 18018 "" +#line 18012 "" addstr_("}", &c__1, soutq, &lsout, (ftnlen)1, (ftnlen)80); -#line 18018 "" +#line 18012 "" } -#line 18020 "" +#line 18014 "" } else { /* Jump start. Set marker for second part of a jump beam. Note ivbj2 was set */ /* to 0 at end of first part of jump beam */ -#line 18025 "" +#line 18019 "" combjmp_1.ivbj2 = commvl_1.ivx; /* Check for xtup since we bypassed beamstrt wherein vxtup is normally set */ -#line 18029 "" +#line 18023 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],28) && strtmid_1.ixrest[commvl_1.ivx - 1] != 2) { -#line 18029 "" +#line 18023 "" comxtup_1.vxtup[commvl_1.ivx - 1] = TRUE_; -#line 18029 "" +#line 18023 "" } /* Since beamstrt is not called, and drawbm is normally set there, need to set */ /* it here. This could cause problems if someone tries a staff-jumping, */ /* unbarred beam, which I'll deal with when it comes up. */ -#line 18036 "" +#line 18030 "" comdraw_1.drawbm[commvl_1.ivx - 1] = TRUE_; -#line 18037 "" +#line 18031 "" } -#line 18038 "" +#line 18032 "" if (strtmid_1.ixrest[commvl_1.ivx - 1] == 0) { -#line 18039 "" +#line 18033 "" all_1.beamon[commvl_1.ivx - 1] = TRUE_; -#line 18040 "" +#line 18034 "" bspend = TRUE_; -#line 18041 "" +#line 18035 "" if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],24)) { -#line 18041 "" +#line 18035 "" bspend = TRUE_; -#line 18041 "" +#line 18035 "" } -#line 18042 "" +#line 18036 "" } -#line 18043 "" +#line 18037 "" } /* Setup for chords and possible slurs in chords */ -#line 18047 "" +#line 18041 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],10)) { /* There is a chord on this note. Just rerun precrd. Klunky, but saves */ /* me from tracking down errors instroduced when I moved 1st call */ /* forward for accidental spacing analysis. */ -#line 18053 "" +#line 18047 "" if (all_1.beamon[commvl_1.ivx - 1]) { -#line 18054 "" +#line 18048 "" precrd_(&commvl_1.ivx, &ip, &all_1.nolev[ commvl_1.ivx + ip * 24 - 25], &all_1.nacc[ commvl_1.ivx + ip * 24 - 25], &all_1.ipl[ @@ -42899,57 +42835,57 @@ L125: all_1.ulq + (commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25), &c_true, & icashft, (ftnlen)1); -#line 18057 "" +#line 18051 "" } else { -#line 18058 "" +#line 18052 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18058 "" +#line 18052 "" udqq_(ch__6, (ftnlen)1, &all_1.nolev[commvl_1.ivx + ip * 24 - 25], &i__12, &all_1.islur[ commvl_1.ivx + ip * 24 - 25], & commvl_1.nvmx[all_1.iv - 1], & commvl_1.ivx, &all_1.nv); -#line 18058 "" +#line 18052 "" precrd_(&commvl_1.ivx, &ip, &all_1.nolev[ commvl_1.ivx + ip * 24 - 25], &all_1.nacc[ commvl_1.ivx + ip * 24 - 25], &all_1.ipl[ commvl_1.ivx + ip * 24 - 25], & all_1.irest[commvl_1.ivx + ip * 24 - 25], ch__6, &c_true, &icashft, (ftnlen)1); -#line 18062 "" +#line 18056 "" } -#line 18063 "" +#line 18057 "" } /* Is there slur or grace activity? */ -#line 18067 "" +#line 18061 "" isgrace = bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],4); -#line 18068 "" +#line 18062 "" if (ip > 1) { -#line 18068 "" +#line 18062 "" isgrace = isgrace || bit_test(all_1.ipl[commvl_1.ivx + (ip - 1) * 24 - 25],31); -#line 18068 "" +#line 18062 "" } /* isgrace if not 1st note in bar and previous note has Way-after grace. */ -#line 18072 "" +#line 18066 "" if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],0) || isgrace) { -#line 18073 "" +#line 18067 "" if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25], 0)) { -#line 18074 "" +#line 18068 "" if (comslur_1.fontslur) { /* Call routine for non-postscript slurs */ -#line 18078 "" +#line 18072 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18078 "" +#line 18072 "" doslur_(&all_1.nolev[commvl_1.ivx + ip * 24 - 25], all_1.isdat1, all_1.isdat2, all_1.isdat3, &all_1.nsdat, &ip, & @@ -42966,14 +42902,14 @@ L125: - 25] - 1], &all_1.nacc[commvl_1.ivx + ip * 24 - 25], (ftnlen)80, (ftnlen) 1); -#line 18083 "" +#line 18077 "" } else { /* Postscript slurs */ -#line 18087 "" +#line 18081 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18087 "" +#line 18081 "" dopsslur_(&all_1.nolev[commvl_1.ivx + ip * 24 - 25], all_1.isdat1, all_1.isdat2, all_1.isdat3, all_1.isdat4, & @@ -42990,33 +42926,33 @@ L125: commvl_1.ivx + ip * 24 - 25] - 1], & all_1.nacc[commvl_1.ivx + ip * 24 - 25], (ftnlen)80, (ftnlen)1); -#line 18093 "" +#line 18087 "" } -#line 18094 "" +#line 18088 "" } -#line 18095 "" +#line 18089 "" if (isgrace) { /* Grace note. */ -#line 18099 "" +#line 18093 "" iphold = ip; -#line 18100 "" +#line 18094 "" isgrace = FALSE_; -#line 18101 "" +#line 18095 "" if (ip > 1) { -#line 18101 "" +#line 18095 "" isgrace = bit_test(all_1.ipl[commvl_1.ivx + ( ip - 1) * 24 - 25],31); -#line 18101 "" +#line 18095 "" } -#line 18102 "" +#line 18096 "" if (isgrace) { -#line 18102 "" +#line 18096 "" --iphold; -#line 18102 "" +#line 18096 "" } -#line 18103 "" +#line 18097 "" isgrace = isgrace || ! bit_test(all_1.ipl[ commvl_1.ivx + ip * 24 - 25],31) && ! bit_test(all_1.ipl[commvl_1.ivx + ip * 24 @@ -43025,13 +42961,13 @@ L125: /* Place grace now if (a) Way-after from prev note and ip>1 or (b) Pre-grace */ /* on current note. Do A-grace on current note, and W-grace at barend, later. */ -#line 18109 "" +#line 18103 "" if (isgrace) { -#line 18110 "" +#line 18104 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18110 "" +#line 18104 "" i__13 = ncmid_(&all_1.iv, &ip); -#line 18110 "" +#line 18104 "" dograce_(&commvl_1.ivx, &iphold, ptgr, soutq, &lsout, &i__12, &all_1.nacc[ commvl_1.ivx + ip * 24 - 25], &ig, & @@ -43048,233 +42984,233 @@ L125: all_1.iv - 1], (ftnlen)80, (ftnlen)1); /* 130324 */ /* * tnote(ipl2(ivx,ip)),ulq) */ -#line 18117 "" +#line 18111 "" if (comgrace_1.slurg[ig - 1]) { /* Terminate slur started in dograce. Get direction of main note stem */ -#line 18121 "" +#line 18115 "" if (! all_1.beamon[commvl_1.ivx - 1]) { /* Separate note. Get stem direction. */ -#line 18125 "" +#line 18119 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18125 "" +#line 18119 "" udqq_(ch__6, (ftnlen)1, &all_1.nolev[ commvl_1.ivx + ip * 24 - 25], &i__12, &all_1.islur[ commvl_1.ivx + ip * 24 - 25], &commvl_1.nvmx[all_1.iv - 1], &commvl_1.ivx, &all_1.nv); -#line 18125 "" +#line 18119 "" stemup = *(unsigned char *)&ch__6[0] == 'u'; -#line 18127 "" +#line 18121 "" } else { /* In a beam */ -#line 18131 "" +#line 18125 "" stemup = *(unsigned char *)&all_1.ulq[ commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25] == 'u'; -#line 18132 "" +#line 18126 "" } /* Stop the shift if whole note */ -#line 18136 "" +#line 18130 "" stemup = stemup || all_1.tnote[ comipl2_1.ipl2[commvl_1.ivx + ip * 24 - 25] - 1] > 63.f; -#line 18138 "" +#line 18132 "" L__1 = ! comgrace_1.upg[ig - 1]; -#line 18138 "" +#line 18132 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18138 "" +#line 18132 "" endslur_(&stemup, &L__1, &all_1.nolev[ commvl_1.ivx + ip * 24 - 25], & c__0, &comslur_1.ndxslur, &c__0, & i__12, soutq, &lsout, & comslur_1.fontslur, (ftnlen)80); -#line 18140 "" +#line 18134 "" } -#line 18141 "" +#line 18135 "" } -#line 18142 "" +#line 18136 "" } -#line 18143 "" +#line 18137 "" if (bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1], 24)) { /* Start slur on main note for After- or Way-after-grace. */ /* ???? ndxslur = log2(33554431-listslur) */ -#line 18148 "" +#line 18142 "" i__12 = 16777215 - comslur_1.listslur; -#line 18148 "" +#line 18142 "" comslur_1.ndxslur = log2_(&i__12); /* Get note name */ -#line 18152 "" +#line 18146 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18152 "" +#line 18146 "" notefq_(noteq, &lnoten, &all_1.nolev[commvl_1.ivx + ip * 24 - 25], &i__12, (ftnlen)8); /* Get slur direction */ -#line 18156 "" +#line 18150 "" *(unsigned char *)slurudq = 'u'; -#line 18157 "" +#line 18151 "" if (! all_1.beamon[commvl_1.ivx - 1]) { -#line 18158 "" +#line 18152 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18158 "" +#line 18152 "" udqq_(ch__6, (ftnlen)1, &all_1.nolev[ commvl_1.ivx + ip * 24 - 25], &i__12, &all_1.islur[commvl_1.ivx + ip * 24 - 25], &commvl_1.nvmx[all_1.iv - 1], & commvl_1.ivx, &all_1.nv); -#line 18158 "" +#line 18152 "" if (*(unsigned char *)&ch__6[0] == 'u') { -#line 18158 "" +#line 18152 "" *(unsigned char *)slurudq = 'd'; -#line 18158 "" +#line 18152 "" } -#line 18160 "" +#line 18154 "" } else { -#line 18161 "" +#line 18155 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25] == 'u') { -#line 18161 "" +#line 18155 "" *(unsigned char *)slurudq = 'd'; -#line 18161 "" +#line 18155 "" } -#line 18162 "" +#line 18156 "" } /* c Replace ndxslur by 11-ndxslur when printing only. */ /* Replace ndxslur by 23-ndxslur when printing only. */ /* if (11-ndxslur .lt. 10) then */ -#line 18168 "" +#line 18162 "" if (23 - comslur_1.ndxslur < 10) { /* notexq = sq//'islur'//slurudq//chax(59-ndxslur) */ /* Writing concatenation */ -#line 18170 "" +#line 18164 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 18170 "" +#line 18164 "" i__5[1] = 5, a__3[1] = "islur"; -#line 18170 "" +#line 18164 "" i__5[2] = 1, a__3[2] = slurudq; -#line 18170 "" +#line 18164 "" i__12 = 71 - comslur_1.ndxslur; -#line 18170 "" +#line 18164 "" chax_(ch__6, (ftnlen)1, &i__12); -#line 18170 "" +#line 18164 "" i__5[3] = 1, a__3[3] = ch__6; -#line 18170 "" +#line 18164 "" i__5[4] = lnoten, a__3[4] = noteq; -#line 18170 "" +#line 18164 "" s_cat(notexq, a__3, i__5, &c__5, (ftnlen)79); -#line 18172 "" +#line 18166 "" i__12 = lnoten + 8; -#line 18172 "" +#line 18166 "" addstr_(notexq, &i__12, soutq, &lsout, ( ftnlen)79, (ftnlen)80); -#line 18173 "" +#line 18167 "" } else if (23 - comslur_1.ndxslur < 20) { /* Writing concatenation */ -#line 18174 "" +#line 18168 "" i__14[0] = 1, a__8[0] = all_1.sq; -#line 18174 "" +#line 18168 "" i__14[1] = 5, a__8[1] = "islur"; -#line 18174 "" +#line 18168 "" i__14[2] = 1, a__8[2] = slurudq; -#line 18174 "" +#line 18168 "" i__14[3] = 2, a__8[3] = "{1"; -#line 18174 "" +#line 18168 "" i__12 = 61 - comslur_1.ndxslur; -#line 18174 "" +#line 18168 "" chax_(ch__6, (ftnlen)1, &i__12); -#line 18174 "" +#line 18168 "" i__14[4] = 1, a__8[4] = ch__6; -#line 18174 "" +#line 18168 "" i__14[5] = 1, a__8[5] = "}"; -#line 18174 "" +#line 18168 "" i__14[6] = lnoten, a__8[6] = noteq; -#line 18174 "" +#line 18168 "" s_cat(notexq, a__8, i__14, &c__7, (ftnlen)79); -#line 18176 "" +#line 18170 "" i__12 = lnoten + 11; -#line 18176 "" +#line 18170 "" addstr_(notexq, &i__12, soutq, &lsout, ( ftnlen)79, (ftnlen)80); -#line 18177 "" +#line 18171 "" } else { /* Writing concatenation */ -#line 18178 "" +#line 18172 "" i__14[0] = 1, a__8[0] = all_1.sq; -#line 18178 "" +#line 18172 "" i__14[1] = 5, a__8[1] = "islur"; -#line 18178 "" +#line 18172 "" i__14[2] = 1, a__8[2] = slurudq; -#line 18178 "" +#line 18172 "" i__14[3] = 2, a__8[3] = "{2"; -#line 18178 "" +#line 18172 "" i__12 = 51 - comslur_1.ndxslur; -#line 18178 "" +#line 18172 "" chax_(ch__6, (ftnlen)1, &i__12); -#line 18178 "" +#line 18172 "" i__14[4] = 1, a__8[4] = ch__6; -#line 18178 "" +#line 18172 "" i__14[5] = 1, a__8[5] = "}"; -#line 18178 "" +#line 18172 "" i__14[6] = lnoten, a__8[6] = noteq; -#line 18178 "" +#line 18172 "" s_cat(notexq, a__8, i__14, &c__7, (ftnlen)79); -#line 18180 "" +#line 18174 "" i__12 = lnoten + 11; -#line 18180 "" +#line 18174 "" addstr_(notexq, &i__12, soutq, &lsout, ( ftnlen)79, (ftnlen)80); -#line 18181 "" +#line 18175 "" } /* call setbits(ipl(ivx,ip),4,23,ndxslur) */ -#line 18183 "" +#line 18177 "" setbits_(&all_1.ipl[commvl_1.ivx + ip * 24 - 25], &c__5, &c__23, &comslur_1.ndxslur); -#line 18184 "" +#line 18178 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],31)) { -#line 18184 "" +#line 18178 "" comslur_1.listslur = bit_set( comslur_1.listslur,comslur_1.ndxslur); -#line 18184 "" +#line 18178 "" } /* Starting slur on W-grace on THIS note. Record ndxslur. */ -#line 18189 "" +#line 18183 "" } -#line 18190 "" +#line 18184 "" } /* Process dynamic marks */ -#line 18194 "" +#line 18188 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],26)) { -#line 18195 "" +#line 18189 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18195 "" +#line 18189 "" L__1 = all_1.nodur[commvl_1.ivx + ip * 24 - 25] >= 64; -#line 18195 "" +#line 18189 "" dodyn_(&commvl_1.ivx, &ip, &all_1.nolev[commvl_1.ivx + ip * 24 - 25], &i__12, &all_1.ipl[ commvl_1.ivx + ip * 24 - 25], &all_1.islur[ @@ -43284,64 +43220,64 @@ L125: commvl_1.ivx - 1], ihornb, nornb, all_1.ulq, & all_1.ibmcnt[commvl_1.ivx - 1], &L__1, soutq, &lsout, (ftnlen)1, (ftnlen)80); -#line 18199 "" +#line 18193 "" } /* Check for chord notes. Moved up from below, 10/27/96 so chord orns done 1st. */ -#line 18203 "" +#line 18197 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],10)) { /* Need a duration to set type of note head */ /* Clumsy test, but vxtup is not set until main note is processed. */ -#line 18209 "" +#line 18203 "" if (! (comxtup_1.vxtup[commvl_1.ivx - 1] || bit_test( all_1.irest[commvl_1.ivx + ip * 24 - 25],28))) { -#line 18210 "" +#line 18204 "" nodu = all_1.nodur[commvl_1.ivx + ip * 24 - 25]; -#line 18211 "" +#line 18205 "" } else if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],2) || ip > 1 && bit_test(all_1.irest[ commvl_1.ivx + (ip - 1) * 24 - 25],2)) { /* In a 2-note tremolo */ -#line 18216 "" +#line 18210 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],2)) { /* First note of tremolo, duration is on next note */ -#line 18220 "" +#line 18214 "" nodu = all_1.nodur[commvl_1.ivx + (ip + 1) * 24 - 25]; -#line 18221 "" +#line 18215 "" } else { -#line 18222 "" +#line 18216 "" nodu = all_1.nodur[commvl_1.ivx + ip * 24 - 25]; -#line 18223 "" +#line 18217 "" } -#line 18224 "" +#line 18218 "" } else if ((all_1.mult[commvl_1.ivx + ip * 24 - 25] & 15) - 8 < 0) { -#line 18225 "" +#line 18219 "" nodu = 32; -#line 18226 "" +#line 18220 "" } else { -#line 18227 "" +#line 18221 "" nodu = 16; -#line 18228 "" +#line 18222 "" } -#line 18229 "" +#line 18223 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18229 "" +#line 18223 "" L__1 = bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],27); -#line 18229 "" +#line 18223 "" docrd_(&commvl_1.ivx, &ip, &nodu, &i__12, &all_1.iv, & tnow, soutq, &lsout, all_1.ulq, &all_1.ibmcnt[ commvl_1.ivx - 1], &all_1.islur[commvl_1.ivx @@ -43351,42 +43287,42 @@ L125: ihornb, nornb, &all_1.stemlen, &L__1, & all_1.nacc[commvl_1.ivx + ip * 24 - 25], all_1.irest, (ftnlen)80, (ftnlen)1); -#line 18234 "" +#line 18228 "" } /* Now that chords are done, add stuff to midi file */ -#line 18238 "" +#line 18232 "" if (commidi_1.ismidi) { -#line 18238 "" +#line 18232 "" i__12 = all_1.nolev[commvl_1.ivx + ip * 24 - 25] + commvel_1.miditran[cominsttrans_1.instno[ all_1.iv - 1] - 1]; -#line 18238 "" +#line 18232 "" i__13 = all_1.nacc[commvl_1.ivx + ip * 24 - 25] & 7; -#line 18238 "" +#line 18232 "" L__1 = bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0); -#line 18238 "" +#line 18232 "" addmidi_(&icm, &i__12, &i__13, &commidisig_1.midisig, &all_1.tnote[comipl2_1.ipl2[commvl_1.ivx + ip * 24 - 25] - 1], &L__1, &c_false); -#line 18238 "" +#line 18232 "" } /* 130316 */ /* Check for breath or caesura */ -#line 18247 "" +#line 18241 "" if (bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],28)) { -#line 18248 "" +#line 18242 "" putcb_(&commvl_1.ivx, &ip, notexq, &lnote, (ftnlen)79) ; -#line 18249 "" +#line 18243 "" addstr_(notexq, &lnote, soutq, &lsout, (ftnlen)79, ( ftnlen)80); -#line 18250 "" +#line 18244 "" } /* Check for main-note ornaments. ')' on dotted notes go in with note, not here. */ @@ -43395,73 +43331,73 @@ L125: /* isacc = iand(iornq(ivx,ip),4194287) .gt. 0 */ /* isacc = iand(iornq(ivx,ip),541065199) .gt. 0 */ -#line 18258 "" +#line 18252 "" isacc = (all_1.iornq[commvl_1.ivx + ip * 24 - 1] & 1614807023) > 0; /* isacc=.true. if any ornament except segno */ -#line 18262 "" +#line 18256 "" if (bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],13) && all_1.nodur[commvl_1.ivx + ip * 24 - 25] > 0) { /* If ). is only ornament, bypass. If with others, temporarirly zero the bit. */ -#line 18266 "" +#line 18260 "" i__12 = log2_(&all_1.nodur[commvl_1.ivx + ip * 24 - 25]); -#line 18266 "" +#line 18260 "" if (pow_ii(&c__2, &i__12) != all_1.nodur[commvl_1.ivx + ip * 24 - 25]) { -#line 18267 "" +#line 18261 "" if ((all_1.iornq[commvl_1.ivx + ip * 24 - 1] & 516079) == 0) { /* ). is the only non-segno ornament */ -#line 18271 "" +#line 18265 "" isacc = FALSE_; -#line 18272 "" +#line 18266 "" } else { /* There are other ornaments in addition */ -#line 18276 "" +#line 18270 "" rpndot = TRUE_; -#line 18277 "" +#line 18271 "" all_1.iornq[commvl_1.ivx + ip * 24 - 1] = bit_clear(all_1.iornq[commvl_1.ivx + ip * 24 - 1],13); -#line 18278 "" +#line 18272 "" } -#line 18279 "" +#line 18273 "" } -#line 18280 "" +#line 18274 "" } -#line 18281 "" +#line 18275 "" if (isacc && ! comcwrf_1.cwrferm[commvl_1.ivx - 1]) { /* Check for centered whole-bar rest with fermata (bits 10 or 14). */ -#line 18285 "" +#line 18279 "" if ((all_1.iornq[commvl_1.ivx + ip * 24 - 1] & 17408) > 0 && bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0) && all_1.nodur[commvl_1.ivx + ip * 24 - 25] == all_1.lenbar && ! ( all_1.firstgulp && all_1.ibar == 1 && all_1.lenb0 > 0)) { -#line 18289 "" +#line 18283 "" comcwrf_1.cwrferm[commvl_1.ivx - 1] = TRUE_; -#line 18290 "" +#line 18284 "" goto L30; -#line 18291 "" +#line 18285 "" } -#line 18292 "" +#line 18286 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18292 "" +#line 18286 "" L__1 = bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25] ,10); -#line 18292 "" +#line 18286 "" putorn_(&all_1.iornq[commvl_1.ivx + ip * 24 - 1], & all_1.nolev[commvl_1.ivx + ip * 24 - 25], & all_1.nolev[commvl_1.ivx + ip * 24 - 25], & @@ -43473,66 +43409,66 @@ L125: all_1.stemlen, notexq, &lnote, &ip, &islhgt, & all_1.beamon[commvl_1.ivx - 1], &L__1, ( ftnlen)1, (ftnlen)79); -#line 18297 "" +#line 18291 "" addstr_(notexq, &lnote, soutq, &lsout, (ftnlen)79, ( ftnlen)80); -#line 18298 "" +#line 18292 "" } -#line 18299 "" +#line 18293 "" if (rpndot) { -#line 18300 "" +#line 18294 "" all_1.iornq[commvl_1.ivx + ip * 24 - 1] = bit_set( all_1.iornq[commvl_1.ivx + ip * 24 - 1],13); -#line 18301 "" +#line 18295 "" rpndot = FALSE_; -#line 18302 "" +#line 18296 "" } -#line 18303 "" +#line 18297 "" L30: /* Check for main note accidental */ -#line 18307 "" +#line 18301 "" if ((all_1.nacc[commvl_1.ivx + ip * 24 - 25] & 3) > 0 && ! bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25], 17)) { -#line 18309 "" +#line 18303 "" ihshft = igetbits_(&all_1.nacc[commvl_1.ivx + ip * 24 - 25], &c__7, &c__10); -#line 18310 "" +#line 18304 "" if (ihshft != 0) { -#line 18310 "" +#line 18304 "" ihshft += -107; -#line 18310 "" +#line 18304 "" } -#line 18311 "" +#line 18305 "" if (! bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25], 10) && bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],8)) { -#line 18311 "" +#line 18305 "" ihshft += -20; -#line 18311 "" +#line 18305 "" } /* Not a chord, and left-shifted main note, so left-shift accid */ -#line 18316 "" +#line 18310 "" i__12 = igetbits_(&all_1.nacc[commvl_1.ivx + ip * 24 - 25], &c__6, &c__4); -#line 18316 "" +#line 18310 "" i__13 = ncmid_(&all_1.iv, &ip); -#line 18316 "" +#line 18310 "" L__1 = bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],31); -#line 18316 "" +#line 18310 "" doacc_(&ihshft, &i__12, notexq, &lnote, &all_1.nacc[ commvl_1.ivx + ip * 24 - 25], &all_1.nolev[ commvl_1.ivx + ip * 24 - 25], &i__13, &L__1, ( ftnlen)79); -#line 18319 "" +#line 18313 "" addstr_(notexq, &lnote, soutq, &lsout, (ftnlen)79, ( ftnlen)80); -#line 18320 "" +#line 18314 "" } /* Lower dot for lower-voice notes. Conditions are: */ @@ -43543,168 +43479,168 @@ L30: /* . 5. Flag (lowdot) is set to true */ /* 6. Not in an xtuplet */ -#line 18330 "" +#line 18324 "" if (comarp_1.lowdot && commvl_1.nvmx[all_1.iv - 1] == 2 && commvl_1.ivx <= all_1.nv && all_1.nodur[ commvl_1.ivx + ip * 24 - 25] != 0) { -#line 18332 "" +#line 18326 "" i__12 = log2_(&all_1.nodur[commvl_1.ivx + ip * 24 - 25]); -#line 18332 "" +#line 18326 "" if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0) && pow_ii(&c__2, &i__12) != all_1.nodur[commvl_1.ivx + ip * 24 - 25] && ( all_1.nolev[commvl_1.ivx + ip * 24 - 25] - ncmid_(&commvl_1.ivx, &ip)) % 2 == 0) { -#line 18335 "" +#line 18329 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],19)) { /* Note already in movdot list. Drop by 2. */ -#line 18339 "" +#line 18333 "" comcc_1.updot[commvl_1.ivx + (comcc_1.ndotmv[ commvl_1.ivx - 1] + 1) * 24 - 25] += -2.f; -#line 18341 "" +#line 18335 "" } else { /* Not in list so just move it right now */ -#line 18345 "" +#line 18339 "" i__12 = igetbits_(&all_1.islur[commvl_1.ivx + ip * 24 - 25], &c__1, &c__3); -#line 18345 "" +#line 18339 "" dotmov_(&c_b1007, &c_b1008, soutq, &lsout, & i__12, (ftnlen)80); -#line 18347 "" +#line 18341 "" } -#line 18348 "" +#line 18342 "" } -#line 18349 "" +#line 18343 "" } /* Check for dotted main notes with moved dots. Chord notes done elsewhere. */ /* Added check rules out special chordal 2nds, but later must check */ /* substituted chord note for dot shift that now applies to main note. */ -#line 18355 "" +#line 18349 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],19)) { -#line 18356 "" +#line 18350 "" ++comcc_1.ndotmv[commvl_1.ivx - 1]; -#line 18357 "" +#line 18351 "" i__12 = igetbits_(&all_1.islur[commvl_1.ivx + ip * 24 - 25], &c__1, &c__3); -#line 18357 "" +#line 18351 "" dotmov_(&comcc_1.updot[commvl_1.ivx + comcc_1.ndotmv[ commvl_1.ivx - 1] * 24 - 25], &comcc_1.rtdot[ commvl_1.ivx + comcc_1.ndotmv[commvl_1.ivx - 1] * 24 - 25], soutq, &lsout, &i__12, (ftnlen) 80); -#line 18359 "" +#line 18353 "" } /* Stemlength changes */ -#line 18363 "" +#line 18357 "" if (bit_test(all_1.mult[commvl_1.ivx + ip * 24 - 25],27)) { -#line 18364 "" +#line 18358 "" dstemlen = igetbits_(&all_1.mult[commvl_1.ivx + ip * 24 - 25], &c__6, &c__10) * .5f - 4.f; /* Writing concatenation */ -#line 18365 "" +#line 18359 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18365 "" +#line 18359 "" i__4[1] = 12, a__2[1] = "stdstemfalse"; -#line 18365 "" +#line 18359 "" s_cat(ch__18, a__2, i__4, &c__2, (ftnlen)13); -#line 18365 "" +#line 18359 "" addstr_(ch__18, &c__13, soutq, &lsout, (ftnlen)13, ( ftnlen)80); -#line 18366 "" +#line 18360 "" stemshort = dstemlen * .667f + 4.66f; /* Writing concatenation */ -#line 18367 "" +#line 18361 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18367 "" +#line 18361 "" i__4[1] = 11, a__2[1] = "stemlength{"; -#line 18367 "" +#line 18361 "" s_cat(ch__5, a__2, i__4, &c__2, (ftnlen)12); -#line 18367 "" +#line 18361 "" addstr_(ch__5, &c__12, soutq, &lsout, (ftnlen)12, ( ftnlen)80); -#line 18368 "" - s_wsfi(&io___1124); -#line 18368 "" +#line 18362 "" + s_wsfi(&io___1119); +#line 18362 "" do_fio(&c__1, (char *)&stemshort, (ftnlen)sizeof(real) ); -#line 18368 "" +#line 18362 "" e_wsfi(); /* Writing concatenation */ -#line 18369 "" +#line 18363 "" i__4[0] = 4, a__2[0] = notexq; -#line 18369 "" +#line 18363 "" i__4[1] = 1, a__2[1] = "}"; -#line 18369 "" +#line 18363 "" s_cat(ch__19, a__2, i__4, &c__2, (ftnlen)5); -#line 18369 "" +#line 18363 "" addstr_(ch__19, &c__5, soutq, &lsout, (ftnlen)5, ( ftnlen)80); -#line 18370 "" +#line 18364 "" } else if (ip > 1) { -#line 18371 "" +#line 18365 "" if (bit_test(all_1.mult[commvl_1.ivx + (ip - 1) * 24 - 25],27)) { /* Writing concatenation */ -#line 18371 "" +#line 18365 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18371 "" +#line 18365 "" i__4[1] = 16, a__2[1] = "stemlength{4.66}"; -#line 18371 "" +#line 18365 "" s_cat(ch__7, a__2, i__4, &c__2, (ftnlen)17); -#line 18371 "" +#line 18365 "" addstr_(ch__7, &c__17, soutq, &lsout, (ftnlen)17, (ftnlen)80); -#line 18371 "" +#line 18365 "" } /* Cancel shortening. Looks like it gets automatically restored if new inst. or */ /* new line, so no need to worry about affecting other lines */ -#line 18377 "" +#line 18371 "" } /* Zero out slur-height marker for raising ornaments */ -#line 18381 "" +#line 18375 "" islhgt = 0; /* Now start with spacing notes. Is a beam start pending? */ -#line 18385 "" +#line 18379 "" if (bspend && all_1.ibm2[commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25] > all_1.ibm1[ commvl_1.ivx + all_1.ibmcnt[commvl_1.ivx - 1] * 24 - 25]) { -#line 18387 "" +#line 18381 "" if (strtmid_1.ixrest[commvl_1.ivx - 1] == 4) { /* Special path for single note at end of otherwise beamed xtup */ -#line 18391 "" +#line 18385 "" strtmid_1.ixrest[commvl_1.ivx - 1] = 0; -#line 18392 "" +#line 18386 "" } else { -#line 18393 "" +#line 18387 "" if (comkbdrests_1.kbdrests && bit_test( all_1.irest[commvl_1.ivx + ip * 24 - 25], 0) && ! bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],29) && commvl_1.nvmx[ all_1.iv - 1] == 2 && all_1.nolev[ commvl_1.ivx + ip * 24 - 25] <= 50) { -#line 18393 "" +#line 18387 "" chkkbdrests_(&ip, &all_1.iv, &commvl_1.ivx, all_1.nn, all_1.islur, all_1.irest, all_1.nolev, commvl_1.ivmx, all_1.nib, @@ -43713,29 +43649,29 @@ L30: comkbdrests_1.levtopr, comkbdrests_1.levbotr, all_1.mult, all_1.ipl); -#line 18393 "" +#line 18387 "" } -#line 18399 "" +#line 18393 "" if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],29) && bit_test(all_1.irest[ commvl_1.ivx + ip * 24 - 25],24)) { /* Writing concatenation */ -#line 18401 "" +#line 18395 "" chax_(ch__6, (ftnlen)1, &c__92); -#line 18401 "" +#line 18395 "" i__4[0] = 1, a__2[0] = ch__6; -#line 18401 "" +#line 18395 "" i__4[1] = 2, a__2[1] = "sk"; -#line 18401 "" +#line 18395 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 18402 "" +#line 18396 "" lnote = 3; -#line 18403 "" +#line 18397 "" } else { -#line 18404 "" +#line 18398 "" beamn1_(notexq, &lnote, (ftnlen)79); /* if (isbjmp .and. */ -#line 18406 "" +#line 18400 "" if (combjmp_1.isbjmp && combjmp_1.ivbj2 != 0 && (all_1.mult[commvl_1.ivx + ip * 24 - 25] & 15) - 8 > combjmp_1.multbj1) { @@ -43746,263 +43682,263 @@ L30: /* Try adding e.g. \nbbu1 if needed to increase multiplicity. Add */ /* character in reverse order to start of notexq. */ -#line 18415 "" +#line 18409 "" if (combjmp_1.ivbj1 < 9) { /* Writing concatenation */ -#line 18416 "" +#line 18410 "" *(unsigned char *)&ch__6[0] = combjmp_1.ivbj1 + 48; -#line 18416 "" +#line 18410 "" i__4[0] = 1, a__2[0] = ch__6; -#line 18416 "" +#line 18410 "" i__4[1] = lnote, a__2[1] = notexq; -#line 18416 "" +#line 18410 "" s_cat(notexq, a__2, i__4, &c__2, ( ftnlen)79); -#line 18417 "" +#line 18411 "" ++lnote; -#line 18418 "" +#line 18412 "" } else { /* Writing concatenation */ -#line 18419 "" +#line 18413 "" i__9[0] = 2, a__6[0] = "{1"; -#line 18419 "" +#line 18413 "" *(unsigned char *)&ch__6[0] = combjmp_1.ivbj1 + 38; -#line 18419 "" +#line 18413 "" i__9[1] = 1, a__6[1] = ch__6; -#line 18419 "" +#line 18413 "" i__9[2] = 1, a__6[2] = "}"; -#line 18419 "" +#line 18413 "" i__9[3] = lnote, a__6[3] = notexq; -#line 18419 "" +#line 18413 "" s_cat(notexq, a__6, i__9, &c__4, ( ftnlen)79); -#line 18421 "" +#line 18415 "" lnote += 4; -#line 18422 "" +#line 18416 "" } /* Writing concatenation */ -#line 18423 "" +#line 18417 "" i__6[0] = 2, a__4[0] = "bb"; -#line 18423 "" +#line 18417 "" i__6[1] = 1, a__4[1] = all_1.ulq + ( combjmp_1.ivbj1 + (all_1.ibmcnt[ combjmp_1.ivbj1 - 1] - 1) * 24 - 25); -#line 18423 "" +#line 18417 "" i__6[2] = lnote, a__4[2] = notexq; -#line 18423 "" +#line 18417 "" s_cat(notexq, a__4, i__6, &c__3, (ftnlen) 79); -#line 18425 "" +#line 18419 "" lnote += 3; -#line 18426 "" +#line 18420 "" if ((15 & all_1.mult[commvl_1.ivx + ip * 24 - 25]) - 8 == 3) { /* Writing concatenation */ -#line 18427 "" +#line 18421 "" i__4[0] = 1, a__2[0] = "b"; -#line 18427 "" +#line 18421 "" i__4[1] = lnote, a__2[1] = notexq; -#line 18427 "" +#line 18421 "" s_cat(notexq, a__2, i__4, &c__2, ( ftnlen)79); -#line 18428 "" +#line 18422 "" ++lnote; -#line 18429 "" +#line 18423 "" } /* Writing concatenation */ -#line 18430 "" +#line 18424 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 18430 "" +#line 18424 "" i__6[1] = 1, a__4[1] = "n"; -#line 18430 "" +#line 18424 "" i__6[2] = lnote, a__4[2] = notexq; -#line 18430 "" +#line 18424 "" s_cat(notexq, a__4, i__6, &c__3, (ftnlen) 79); -#line 18431 "" +#line 18425 "" lnote += 2; -#line 18432 "" +#line 18426 "" } -#line 18433 "" +#line 18427 "" } -#line 18434 "" +#line 18428 "" } -#line 18435 "" +#line 18429 "" bspend = FALSE_; /* Is a beam ending? */ -#line 18439 "" +#line 18433 "" } else if (numbms[commvl_1.ivx] > 0 && all_1.ibmcnt[ commvl_1.ivx - 1] <= numbms[commvl_1.ivx] && ( all_1.ibm2[commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25] == ip || bit_test( all_1.nacc[commvl_1.ivx + ip * 24 - 25],20))) { -#line 18442 "" +#line 18436 "" if (bspend) { /* Must be a single-note ending of a jump-beam */ -#line 18446 "" +#line 18440 "" bspend = FALSE_; -#line 18447 "" +#line 18441 "" } -#line 18448 "" +#line 18442 "" beamend_(notexq, &lnote, (ftnlen)79); -#line 18449 "" +#line 18443 "" if (combjmp_1.isbjmp && commvl_1.ivx == combjmp_1.ivbj1) { /* Jump beam segment is ending, check if multiplicity DECREASES */ -#line 18453 "" +#line 18447 "" if (comnsp_2.space[ib] > comnsp_2.space[ib - 1]) { /* Decrease multiplicity 3-1, 3-2, or 2-1. Spaces are 2,4, or 8. */ -#line 18457 "" +#line 18451 "" if (commvl_1.ivx < 10) { -#line 18458 "" +#line 18452 "" *(unsigned char *)&ch__6[0] = commvl_1.ivx + 48; -#line 18458 "" +#line 18452 "" s_copy(ivxq, ch__6, (ftnlen)4, (ftnlen)1); -#line 18459 "" +#line 18453 "" livx = 1; -#line 18460 "" +#line 18454 "" } else { /* Writing concatenation */ -#line 18461 "" +#line 18455 "" i__6[0] = 2, a__4[0] = "{1"; -#line 18461 "" +#line 18455 "" *(unsigned char *)&ch__6[0] = commvl_1.ivx - 10; -#line 18461 "" +#line 18455 "" i__6[1] = 1, a__4[1] = ch__6; -#line 18461 "" +#line 18455 "" i__6[2] = 1, a__4[2] = "}"; -#line 18461 "" +#line 18455 "" s_cat(ivxq, a__4, i__6, &c__3, (ftnlen)4); -#line 18462 "" +#line 18456 "" livx = 4; -#line 18463 "" +#line 18457 "" } /* Changes to get staffcrossall.pmx to work. Not clear how. */ /* if (nint(space(ib+1)-space(ib)) .eq. 6) then */ -#line 18466 "" +#line 18460 "" if (comnsp_2.space[ib] == 8.f && comnsp_2.space[ib - 1] == 2.f) { /* Writing concatenation */ -#line 18467 "" +#line 18461 "" i__15[0] = 1, a__9[0] = all_1.sq; -#line 18467 "" +#line 18461 "" i__15[1] = 4, a__9[1] = "tbbb"; -#line 18467 "" +#line 18461 "" i__15[2] = 1, a__9[2] = all_1.ulq + ( commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25); -#line 18467 "" +#line 18461 "" i__15[3] = livx, a__9[3] = ivxq; -#line 18467 "" +#line 18461 "" i__15[4] = 1, a__9[4] = all_1.sq; -#line 18467 "" +#line 18461 "" i__15[5] = 3, a__9[5] = "tbb"; -#line 18467 "" +#line 18461 "" i__15[6] = 1, a__9[6] = all_1.ulq + ( commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25); -#line 18467 "" +#line 18461 "" i__15[7] = livx, a__9[7] = ivxq; -#line 18467 "" +#line 18461 "" i__15[8] = lnote, a__9[8] = notexq; -#line 18467 "" +#line 18461 "" s_cat(notexq, a__9, i__15, &c__9, (ftnlen) 79); -#line 18470 "" +#line 18464 "" lnote = lnote + 11 + (livx << 1); /* else if (nint(space(ib+1)-space(ib)) .eq. 4) then */ -#line 18472 "" +#line 18466 "" } else if (comnsp_2.space[ib] == 8.f && comnsp_2.space[ib - 1] == 4.f) { /* Writing concatenation */ -#line 18473 "" +#line 18467 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 18473 "" +#line 18467 "" i__5[1] = 3, a__3[1] = "tbb"; -#line 18473 "" +#line 18467 "" i__5[2] = 1, a__3[2] = all_1.ulq + ( commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25); -#line 18473 "" +#line 18467 "" i__5[3] = livx, a__3[3] = ivxq; -#line 18473 "" +#line 18467 "" i__5[4] = lnote, a__3[4] = notexq; -#line 18473 "" +#line 18467 "" s_cat(notexq, a__3, i__5, &c__5, (ftnlen) 79); -#line 18475 "" +#line 18469 "" lnote = lnote + 5 + livx; /* else */ -#line 18477 "" +#line 18471 "" } else if (comnsp_2.space[ib] == 4.f && comnsp_2.space[ib - 1] == 2.f) { /* Writing concatenation */ -#line 18478 "" +#line 18472 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 18478 "" +#line 18472 "" i__5[1] = 4, a__3[1] = "tbbb"; -#line 18478 "" +#line 18472 "" i__5[2] = 1, a__3[2] = all_1.ulq + ( commvl_1.ivx + all_1.ibmcnt[ commvl_1.ivx - 1] * 24 - 25); -#line 18478 "" +#line 18472 "" i__5[3] = livx, a__3[3] = ivxq; -#line 18478 "" +#line 18472 "" i__5[4] = lnote, a__3[4] = notexq; -#line 18478 "" +#line 18472 "" s_cat(notexq, a__3, i__5, &c__5, (ftnlen) 79); -#line 18480 "" +#line 18474 "" lnote = lnote + 6 + livx; -#line 18481 "" +#line 18475 "" } -#line 18482 "" +#line 18476 "" } -#line 18483 "" +#line 18477 "" } -#line 18484 "" +#line 18478 "" if (! bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25] ,20)) { -#line 18485 "" +#line 18479 "" comxtup_1.vxtup[commvl_1.ivx - 1] = FALSE_; -#line 18486 "" +#line 18480 "" nornb[commvl_1.ivx - 1] = 0; -#line 18487 "" +#line 18481 "" ++all_1.ibmcnt[commvl_1.ivx - 1]; -#line 18488 "" +#line 18482 "" all_1.beamon[commvl_1.ivx - 1] = FALSE_; -#line 18489 "" +#line 18483 "" } /* Or if we're in the middle of a beam */ -#line 18493 "" +#line 18487 "" } else if (numbms[commvl_1.ivx] > 0 && all_1.beamon[ commvl_1.ivx - 1]) { /* Added 130127 */ -#line 18497 "" +#line 18491 "" if (comkbdrests_1.kbdrests && bit_test(all_1.irest[ commvl_1.ivx + ip * 24 - 25],0) && ! bit_test( all_1.islur[commvl_1.ivx + ip * 24 - 25],29) && commvl_1.nvmx[all_1.iv - 1] == 2 && all_1.nolev[commvl_1.ivx + ip * 24 - 25] <= 50) { -#line 18497 "" +#line 18491 "" chkkbdrests_(&ip, &all_1.iv, &commvl_1.ivx, all_1.nn, all_1.islur, all_1.irest, all_1.nolev, commvl_1.ivmx, all_1.nib, & @@ -44011,14 +43947,14 @@ L30: comkbdrests_1.levtopr, comkbdrests_1.levbotr, all_1.mult, all_1.ipl); -#line 18497 "" +#line 18491 "" } -#line 18503 "" +#line 18497 "" beamid_(notexq, &lnote, (ftnlen)79); /* Or whole-bar rest */ -#line 18507 "" +#line 18501 "" } else if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0) && all_1.nodur[commvl_1.ivx + ip * 24 - 25] == all_1.lenbar && ! (all_1.firstgulp && @@ -44029,18 +43965,18 @@ L30: /* Rule out pickup bar, blank rests, non-centered. Remember islur b19=> rp */ -#line 18515 "" +#line 18509 "" cwrest[commvl_1.ivx] = TRUE_; -#line 18516 "" +#line 18510 "" iscwr = TRUE_; -#line 18517 "" +#line 18511 "" notex_(cwrq + (commvl_1.ivx - 1) * 79, &lcwr[ commvl_1.ivx - 1], (ftnlen)79); -#line 18518 "" +#line 18512 "" tnow += all_1.lenbar; -#line 18519 "" +#line 18513 "" goto L10; -#line 18520 "" +#line 18514 "" } else if (strtmid_1.ixrest[commvl_1.ivx - 1] == 0) { /* Before writing note or rest, check for keyboard rest height adjustment. */ @@ -44049,14 +43985,14 @@ L30: /* 2. There are two voices on the staff */ /* 3. No user-def height adjustments have been applied (nolev<50) */ -#line 18528 "" +#line 18522 "" if (comkbdrests_1.kbdrests && bit_test(all_1.irest[ commvl_1.ivx + ip * 24 - 25],0) && ! bit_test( all_1.islur[commvl_1.ivx + ip * 24 - 25],29) && commvl_1.nvmx[all_1.iv - 1] == 2 && all_1.nolev[commvl_1.ivx + ip * 24 - 25] <= 50) { -#line 18531 "" +#line 18525 "" chkkbdrests_(&ip, &all_1.iv, &commvl_1.ivx, all_1.nn, all_1.islur, all_1.irest, all_1.nolev, commvl_1.ivmx, all_1.nib, & @@ -44065,199 +44001,199 @@ L30: comkbdrests_1.levtopr, comkbdrests_1.levbotr, all_1.mult, all_1.ipl); -#line 18534 "" +#line 18528 "" } -#line 18535 "" +#line 18529 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],4) ) { /* Deal with single stem tremolo */ /* Get up-downness, borrowed from notex */ -#line 18540 "" +#line 18534 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18540 "" +#line 18534 "" udqq_(ch__6, (ftnlen)1, &all_1.nolev[commvl_1.ivx + ip * 24 - 25], &i__12, &all_1.islur[ commvl_1.ivx + ip * 24 - 25], & commvl_1.nvmx[all_1.iv - 1], & commvl_1.ivx, &all_1.nv); -#line 18540 "" +#line 18534 "" if (*(unsigned char *)&ch__6[0] == 'u') { -#line 18542 "" +#line 18536 "" *(unsigned char *)udq = 'u'; -#line 18543 "" +#line 18537 "" } else { -#line 18544 "" +#line 18538 "" *(unsigned char *)udq = 'l'; -#line 18545 "" +#line 18539 "" } -#line 18546 "" +#line 18540 "" multtrem = igetbits_(&all_1.ipl[commvl_1.ivx + ip * 24 - 25], &c__2, &c__5) + 1; -#line 18547 "" +#line 18541 "" if (all_1.nodur[commvl_1.ivx + ip * 24 - 25] < 64) { /* Writing concatenation */ -#line 18548 "" +#line 18542 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18548 "" +#line 18542 "" i__4[1] = 2, a__2[1] = "tr"; -#line 18548 "" +#line 18542 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 18549 "" +#line 18543 "" } else { /* Writing concatenation */ -#line 18550 "" +#line 18544 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18550 "" +#line 18544 "" i__4[1] = 2, a__2[1] = "Tr"; -#line 18550 "" +#line 18544 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 18551 "" +#line 18545 "" } -#line 18552 "" +#line 18546 "" lnote = 3; -#line 18553 "" +#line 18547 "" if (multtrem == 2) { /* Writing concatenation */ -#line 18554 "" +#line 18548 "" i__4[0] = 3, a__2[0] = notexq; -#line 18554 "" +#line 18548 "" i__4[1] = 1, a__2[1] = "r"; -#line 18554 "" +#line 18548 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 18555 "" +#line 18549 "" lnote = 4; -#line 18556 "" +#line 18550 "" } else if (multtrem == 3) { /* Writing concatenation */ -#line 18557 "" +#line 18551 "" i__4[0] = 3, a__2[0] = notexq; -#line 18557 "" +#line 18551 "" i__4[1] = 2, a__2[1] = "rr"; -#line 18557 "" +#line 18551 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 18558 "" +#line 18552 "" lnote = 5; -#line 18559 "" +#line 18553 "" } /* Get a numerical pitch argument */ -#line 18563 "" +#line 18557 "" lineno = all_1.nolev[commvl_1.ivx + ip * 24 - 25] - ncmid_(&all_1.iv, &ip) + 4; -#line 18564 "" +#line 18558 "" if (lineno < 0 || lineno > 9) { -#line 18565 "" - s_wsfi(&io___1132); -#line 18565 "" +#line 18559 "" + s_wsfi(&io___1127); +#line 18559 "" do_fio(&c__1, "{", (ftnlen)1); -#line 18565 "" +#line 18559 "" do_fio(&c__1, (char *)&lineno, (ftnlen)sizeof( integer)); -#line 18565 "" +#line 18559 "" do_fio(&c__1, "}", (ftnlen)1); -#line 18565 "" +#line 18559 "" e_wsfi(); -#line 18566 "" +#line 18560 "" lnoten = 4; -#line 18567 "" +#line 18561 "" } else { -#line 18568 "" +#line 18562 "" *(unsigned char *)&ch__6[0] = lineno + 48; -#line 18568 "" +#line 18562 "" s_copy(noteq, ch__6, (ftnlen)8, (ftnlen)1); -#line 18569 "" +#line 18563 "" lnoten = 1; -#line 18570 "" +#line 18564 "" } /* Writing concatenation */ -#line 18571 "" +#line 18565 "" i__9[0] = lnote, a__6[0] = notexq; -#line 18571 "" +#line 18565 "" i__9[1] = 1, a__6[1] = "m"; -#line 18571 "" +#line 18565 "" i__9[2] = 1, a__6[2] = udq; -#line 18571 "" +#line 18565 "" i__9[3] = lnoten, a__6[3] = noteq; -#line 18571 "" +#line 18565 "" s_cat(notexq, a__6, i__9, &c__4, (ftnlen)79); -#line 18572 "" +#line 18566 "" lnote = lnote + 2 + lnoten; -#line 18573 "" +#line 18567 "" addstr_(notexq, &lnote, soutq, &lsout, (ftnlen)79, (ftnlen)80); -#line 18574 "" +#line 18568 "" } /* Get code for a separate note or rest */ /* If nacc(ivx,ip)(30-31)=1 (dotted chordal 2nd including main note), */ /* pitch will be shifted +/-1 inside notex. */ -#line 18580 "" +#line 18574 "" notex_(notexq, &lnote, (ftnlen)79); -#line 18581 "" +#line 18575 "" } /* Right offset? This may cause trouble */ -#line 18585 "" +#line 18579 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],8)) { /* Writing concatenation */ -#line 18586 "" +#line 18580 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18586 "" +#line 18580 "" i__4[1] = 5, a__2[1] = "loff{"; -#line 18586 "" +#line 18580 "" s_cat(ch__17, a__2, i__4, &c__2, (ftnlen)6); -#line 18586 "" +#line 18580 "" addstr_(ch__17, &c__6, soutq, &lsout, (ftnlen)6, ( ftnlen)80); -#line 18587 "" +#line 18581 "" } else if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25] ,9)) { /* Writing concatenation */ -#line 18588 "" +#line 18582 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18588 "" +#line 18582 "" i__4[1] = 5, a__2[1] = "roff{"; -#line 18588 "" +#line 18582 "" s_cat(ch__17, a__2, i__4, &c__2, (ftnlen)6); -#line 18588 "" +#line 18582 "" addstr_(ch__17, &c__6, soutq, &lsout, (ftnlen)6, ( ftnlen)80); -#line 18589 "" +#line 18583 "" } -#line 18590 "" +#line 18584 "" if (strtmid_1.ixrest[commvl_1.ivx - 1] == 0 && lnote > 0) { -#line 18591 "" +#line 18585 "" addstr_(notexq, &lnote, soutq, &lsout, (ftnlen)79, ( ftnlen)80); -#line 18592 "" +#line 18586 "" } -#line 18593 "" +#line 18587 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],8) || bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],9) ) { -#line 18593 "" +#line 18587 "" addstr_("}", &c__1, soutq, &lsout, (ftnlen)1, (ftnlen) 80); -#line 18593 "" +#line 18587 "" } /* Terminate user-defined offsets. Fix format */ -#line 18598 "" +#line 18592 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],15) || bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],17)) { -#line 18598 "" +#line 18592 "" putshft_(&commvl_1.ivx, &c_false, soutq, &lsout, ( ftnlen)80); -#line 18598 "" +#line 18592 "" } /* Deal with After- and Way-after-graces. First, if end of bar, compute space */ @@ -44265,137 +44201,137 @@ L30: /* rq'd, convert GW to GA. Therefore GW at end of bar never needs extra sp. */ /* But will still need to add extra space as hardspace. */ -#line 18606 "" +#line 18600 "" if (ip == all_1.nn[commvl_1.ivx - 1] && (bit_test( all_1.ipl[commvl_1.ivx + ip * 24 - 25],31) || bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25], 29))) { -#line 18608 "" +#line 18602 "" i__12 = comgrace_1.ngrace; -#line 18608 "" +#line 18602 "" for (ig = 1; ig <= i__12; ++ig) { -#line 18609 "" +#line 18603 "" if (comgrace_1.ipg[ig - 1] == ip && comgrace_1.ivg[ig - 1] == commvl_1.ivx) { -#line 18609 "" +#line 18603 "" goto L78; -#line 18609 "" +#line 18603 "" } -#line 18610 "" +#line 18604 "" /* L77: */ -#line 18610 "" +#line 18604 "" } -#line 18611 "" - s_wsle(&io___1133); -#line 18611 "" +#line 18605 "" + s_wsle(&io___1128); +#line 18605 "" do_lio(&c__9, &c__1, "Problem finding grace index "\ "at \"do 77\"", (ftnlen)38); -#line 18611 "" +#line 18605 "" e_wsle(); -#line 18612 "" +#line 18606 "" stop1_(); -#line 18613 "" +#line 18607 "" L78: /* Get elemskip to end of bar. WON'T WORK IF XTUPS !! */ -#line 18617 "" +#line 18611 "" esk = 0.f; -#line 18618 "" +#line 18612 "" i__12 = comnsp_2.nb; -#line 18618 "" +#line 18612 "" for (iib = ib; iib <= i__12; ++iib) { -#line 18619 "" +#line 18613 "" if (iib == ib) { -#line 18620 "" +#line 18614 "" itleft = i_nint(&all_1.to[comipl2_1.ipl2[ commvl_1.ivx + ip * 24 - 25] - 1]); -#line 18621 "" +#line 18615 "" } else { -#line 18622 "" +#line 18616 "" itleft = i_nint(&tstart[ib]); -#line 18623 "" +#line 18617 "" } -#line 18624 "" +#line 18618 "" if (iib < comnsp_2.nb) { -#line 18625 "" +#line 18619 "" itright = i_nint(&tstart[iib + 1]); -#line 18626 "" +#line 18620 "" } else { -#line 18627 "" +#line 18621 "" itright = all_1.lenbar; -#line 18628 "" +#line 18622 "" } -#line 18629 "" +#line 18623 "" esk += feon_(&comnsp_2.space[ib - 1]) * (itright - itleft) / comnsp_2.space[ib - 1]; -#line 18631 "" +#line 18625 "" /* L40: */ -#line 18631 "" +#line 18625 "" } -#line 18632 "" +#line 18626 "" ptsavail = comask_1.poenom * esk - comask_1.wheadpt; -#line 18633 "" +#line 18627 "" if (comgrace_1.nng[ig - 1] == 1) { -#line 18634 "" +#line 18628 "" wgr = spfacs_1.grafac; -#line 18635 "" +#line 18629 "" } else { -#line 18636 "" +#line 18630 "" wgr = comgrace_1.nng[ig - 1] * spfacs_1.emgfac; -#line 18637 "" +#line 18631 "" i__12 = comgrace_1.nng[ig - 1]; -#line 18637 "" +#line 18631 "" for (ing = 1; ing <= i__12; ++ing) { -#line 18638 "" +#line 18632 "" if (comgrace_1.naccg[comgrace_1.ngstrt[ig - 1] - 1 + ing - 1] > 0) { -#line 18638 "" +#line 18632 "" wgr += spfacs_1.acgfac; -#line 18638 "" +#line 18632 "" } -#line 18639 "" +#line 18633 "" /* L41: */ -#line 18639 "" +#line 18633 "" } -#line 18640 "" +#line 18634 "" } -#line 18641 "" +#line 18635 "" ptgr[ig - 1] = wgr * comask_1.wheadpt; -#line 18642 "" +#line 18636 "" ptsneed = (wgr + .5f) * comask_1.wheadpt; -#line 18643 "" +#line 18637 "" ptsndg[commvl_1.ivx - 1] = 0.f; -#line 18644 "" +#line 18638 "" if (ptsavail < ptsneed) { -#line 18645 "" +#line 18639 "" ptsndg[commvl_1.ivx - 1] = ptsneed; -#line 18646 "" +#line 18640 "" eskndg[commvl_1.ivx - 1] = esk; -#line 18647 "" +#line 18641 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],31)) { /* Convert GW to GA */ -#line 18651 "" +#line 18645 "" all_1.ipl[commvl_1.ivx + ip * 24 - 25] = bit_set(bit_clear(all_1.ipl[ commvl_1.ivx + ip * 24 - 25],31),29); -#line 18652 "" +#line 18646 "" } -#line 18653 "" +#line 18647 "" } -#line 18654 "" +#line 18648 "" } /* Check for GA */ -#line 18658 "" +#line 18652 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],29)) { -#line 18658 "" +#line 18652 "" i__12 = ncmid_(&all_1.iv, &ip); -#line 18658 "" +#line 18652 "" dograce_(&commvl_1.ivx, &ip, ptgr, soutq, &lsout, & i__12, &all_1.nacc[commvl_1.ivx + ip * 24 - 25], &ig, &all_1.ipl[commvl_1.ivx + ip * 24 - @@ -44403,87 +44339,87 @@ L78: &c__0, &c__0, &c__0, &c_b1008, all_1.ulq, & cominsttrans_1.instno[all_1.iv - 1], (ftnlen) 80, (ftnlen)1); -#line 18658 "" +#line 18652 "" } /* 130324 */ /* * .false.,0,0,0,0,0,0,0.,ulq) */ /* Update running time */ -#line 18667 "" +#line 18661 "" tnow += comnsp_2.space[ib - 1]; -#line 18668 "" +#line 18662 "" L10: -#line 18668 "" +#line 18662 "" ; -#line 18668 "" +#line 18662 "" } /* Have finished last note in this voice and block */ -#line 18672 "" +#line 18666 "" r__1 = all_1.to[istop[ib] - 1] + comnsp_2.space[ib - 1]; -#line 18672 "" +#line 18666 "" itendb = i_nint(&r__1); -#line 18673 "" +#line 18667 "" if (all_1.figbass && commvl_1.ivx == 1 || commvl_1.ivx == comfig_1.ivxfig2) { -#line 18674 "" +#line 18668 "" ivf = 1; -#line 18675 "" +#line 18669 "" if (commvl_1.ivx > 1) { -#line 18675 "" +#line 18669 "" ivf = 2; -#line 18675 "" +#line 18669 "" } -#line 18676 "" +#line 18670 "" L17: -#line 18676 "" +#line 18670 "" if (all_1.figchk[ivf - 1] && comfig_1.itfig[ivf + (ifig[ ivf - 1] << 1) - 3] < itendb) { /* There's at least one figure left. offnsk could be <0 */ -#line 18680 "" +#line 18674 "" offnsk = (tnow - comfig_1.itfig[ivf + (ifig[ivf - 1] << 1) - 3]) / comnsp_2.space[ib - 1]; -#line 18681 "" +#line 18675 "" putfig_(&ivf, &ifig[ivf - 1], &offnsk, &all_1.figchk[ ivf - 1], soutq, &lsout, (ftnlen)80); -#line 18682 "" +#line 18676 "" goto L17; -#line 18683 "" +#line 18677 "" } -#line 18684 "" +#line 18678 "" } /* Check for flag, dot, or upstem on last note of bar. */ -#line 18688 "" +#line 18682 "" if (ib == comnsp_2.nb) { -#line 18689 "" +#line 18683 "" ip = all_1.ipo[comipl2_1.ipl2[commvl_1.ivx + all_1.nn[ commvl_1.ivx - 1] * 24 - 25] - 1]; -#line 18690 "" +#line 18684 "" comnsp_2.flgndv[commvl_1.ivx - 1] = 0.f; -#line 18691 "" +#line 18685 "" if ((r__1 = all_1.tnote[comipl2_1.ipl2[commvl_1.ivx + ip * 24 - 25] - 1] - comnsp_2.space[ib - 1], dabs( r__1)) < comtol_1.tol) { -#line 18692 "" +#line 18686 "" if (comnsp_2.space[ib - 1] < 16.f - comtol_1.tol) { /* Note in last space, smaller than a quarter note. */ -#line 18696 "" +#line 18690 "" i__10 = ncmid_(&all_1.iv, &ip); -#line 18696 "" +#line 18690 "" udqq_(ch__6, (ftnlen)1, &all_1.nolev[commvl_1.ivx + ip * 24 - 25], &i__10, &all_1.islur[ commvl_1.ivx + ip * 24 - 25], & commvl_1.nvmx[all_1.iv - 1], & commvl_1.ivx, &all_1.nv); -#line 18696 "" +#line 18690 "" if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0) && *(unsigned char *)&ch__6[0] == 'u' || isdotted_(all_1.nodur, & @@ -44492,9 +44428,9 @@ L17: /* Upstem non-rest, or dotted */ /* Computing MAX */ -#line 18703 "" +#line 18697 "" i__10 = 1, i__12 = numbms[commvl_1.ivx]; -#line 18703 "" +#line 18697 "" if (numbms[commvl_1.ivx] > 0 && ip == all_1.ibm2[commvl_1.ivx + max(i__10, i__12) * 24 - 25] && ! isdotted_( @@ -44502,70 +44438,70 @@ L17: /* In beam and not dotted, so use smaller space */ -#line 18710 "" +#line 18704 "" comnsp_2.flgndv[commvl_1.ivx - 1] = spfacs_1.upstmfac; -#line 18711 "" +#line 18705 "" } else { -#line 18712 "" +#line 18706 "" comnsp_2.flgndv[commvl_1.ivx - 1] = spfacs_1.flagfac; -#line 18713 "" +#line 18707 "" } -#line 18714 "" +#line 18708 "" } -#line 18715 "" +#line 18709 "" } else { /* Last space, nonflagged (no beam) only worry dot or up */ -#line 18719 "" +#line 18713 "" if (isdotted_(all_1.nodur, &commvl_1.ivx, &ip)) { -#line 18720 "" +#line 18714 "" comnsp_2.flgndv[commvl_1.ivx - 1] = spfacs_1.flagfac; -#line 18721 "" +#line 18715 "" } else /* if(complicated condition) */ { -#line 18721 "" +#line 18715 "" i__10 = ncmid_(&all_1.iv, &ip); -#line 18721 "" +#line 18715 "" udqq_(ch__6, (ftnlen)1, &all_1.nolev[ commvl_1.ivx + ip * 24 - 25], &i__10, &all_1.islur[commvl_1.ivx + ip * 24 - 25], &commvl_1.nvmx[all_1.iv - 1], & commvl_1.ivx, &all_1.nv); -#line 18721 "" +#line 18715 "" if (all_1.tnote[comipl2_1.ipl2[commvl_1.ivx + ip * 24 - 25] - 1] < 64.f && *( unsigned char *)&ch__6[0] == 'u') { /* Upstem on last note , non-flagged */ -#line 18727 "" +#line 18721 "" comnsp_2.flgndv[commvl_1.ivx - 1] = spfacs_1.upstmfac; -#line 18728 "" +#line 18722 "" } -#line 18728 "" +#line 18722 "" } -#line 18729 "" +#line 18723 "" } -#line 18730 "" +#line 18724 "" } /* Check for right-shifted chordal note */ -#line 18734 "" +#line 18728 "" if (bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],20)) { -#line 18734 "" +#line 18728 "" comnsp_2.flgndv[commvl_1.ivx - 1] = spfacs_1.rtshfac; -#line 18734 "" +#line 18728 "" } -#line 18735 "" +#line 18729 "" comnsp_2.flgndb = comnsp_2.flgndb || comnsp_2.flgndv[ commvl_1.ivx - 1] > 0.f; -#line 18736 "" +#line 18730 "" if (commidi_1.ismidi) { /* For midi, set flags for accidentals on last note of bar. Assume they affect */ @@ -44577,102 +44513,102 @@ L17: /* c Old old lbacc(icm) = iand(nacc(ivx,ip),7) */ /* New old if (lbacc(icm).eq.0) lbacc(icm) = iand(nacc(ivx,ip),7) */ -#line 18747 "" +#line 18741 "" if ((all_1.nacc[commvl_1.ivx + ip * 24 - 25] & 7) > 0) { /* Explicit accidental on last main note in bar */ -#line 18751 "" +#line 18745 "" i__10 = comslm_1.naccbl[icm]; -#line 18751 "" +#line 18745 "" for (kacc = 1; kacc <= i__10; ++kacc) { -#line 18752 "" +#line 18746 "" if (comslm_1.laccbl[icm + kacc * 25 - 25] == all_1.nolev[commvl_1.ivx + ip * 24 - 25]) { -#line 18752 "" +#line 18746 "" goto L56; -#line 18752 "" +#line 18746 "" } -#line 18753 "" +#line 18747 "" /* L55: */ -#line 18753 "" +#line 18747 "" } -#line 18754 "" +#line 18748 "" ++comslm_1.naccbl[icm]; -#line 18755 "" +#line 18749 "" comslm_1.laccbl[icm + comslm_1.naccbl[icm] * 25 - 25] = all_1.nolev[commvl_1.ivx + ip * 24 - 25]; -#line 18756 "" +#line 18750 "" i__10 = all_1.nacc[commvl_1.ivx + ip * 24 - 25] & 7; -#line 18756 "" +#line 18750 "" comslm_1.jaccbl[icm + comslm_1.naccbl[icm] * 25 - 25] = iashft_(&i__10); -#line 18757 "" +#line 18751 "" } -#line 18758 "" +#line 18752 "" L56: -#line 18759 "" +#line 18753 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25], 10) && commidi_1.crdacc) { -#line 18760 "" +#line 18754 "" i__10 = comtrill_1.icrd2; -#line 18760 "" +#line 18754 "" for (icrd = comtrill_1.icrd1; icrd <= i__10; ++icrd) { -#line 18761 "" +#line 18755 "" iacc = igetbits_(&comtrill_1.icrdat[icrd - 1], &c__3, &c__20); -#line 18762 "" +#line 18756 "" if (iacc > 0) { /* Explicit accidental on chord note at end of bar */ -#line 18766 "" +#line 18760 "" nolevc = igetbits_(&comtrill_1.icrdat[ icrd - 1], &c__7, &c__12); -#line 18767 "" +#line 18761 "" i__12 = comslm_1.naccbl[icm]; -#line 18767 "" +#line 18761 "" for (kacc = 1; kacc <= i__12; ++kacc) { -#line 18768 "" +#line 18762 "" if (comslm_1.laccbl[icm + kacc * 25 - 25] == nolevc) { -#line 18768 "" +#line 18762 "" goto L59; -#line 18768 "" +#line 18762 "" } -#line 18769 "" +#line 18763 "" /* L58: */ -#line 18769 "" +#line 18763 "" } -#line 18770 "" +#line 18764 "" ++comslm_1.naccbl[icm]; -#line 18771 "" +#line 18765 "" comslm_1.laccbl[icm + comslm_1.naccbl[icm] * 25 - 25] = nolevc; -#line 18772 "" +#line 18766 "" comslm_1.jaccbl[icm + comslm_1.naccbl[icm] * 25 - 25] = iashft_(&iacc); -#line 18773 "" +#line 18767 "" } -#line 18774 "" +#line 18768 "" L59: -#line 18775 "" +#line 18769 "" /* L57: */ -#line 18775 "" +#line 18769 "" ; -#line 18775 "" +#line 18769 "" } -#line 18776 "" +#line 18770 "" } /* if (lbacc(icm).eq.0 .and. accb4(icm)) then */ -#line 18778 "" +#line 18772 "" i__10 = commidi_1.naccim[icm]; -#line 18778 "" +#line 18772 "" for (kacc = 1; kacc <= i__10; ++kacc) { /* If naccim(icm)>0, */ @@ -44681,205 +44617,205 @@ L59: /* explicit action from just above. Assuming any accid on last note in bar, */ /* either explicit or implicit, has same effect on 1st note of next bar. */ -#line 18786 "" +#line 18780 "" if (all_1.nolev[commvl_1.ivx + ip * 24 - 25] == commidi_1.laccim[icm + kacc * 25 - 25]) { -#line 18786 "" +#line 18780 "" goto L66; -#line 18786 "" +#line 18780 "" } -#line 18787 "" +#line 18781 "" if (bit_test(all_1.ipl[commvl_1.ivx + ip * 24 - 25],10)) { -#line 18788 "" +#line 18782 "" i__12 = comtrill_1.icrd2; -#line 18788 "" +#line 18782 "" for (icrd = comtrill_1.icrd1; icrd <= i__12; ++icrd) { -#line 18789 "" +#line 18783 "" if ((lbit_shift(comtrill_1.icrdat[icrd - 1], (ftnlen)-12) & 127) == commidi_1.laccim[icm + kacc * 25 - 25]) { -#line 18789 "" +#line 18783 "" goto L66; -#line 18789 "" +#line 18783 "" } -#line 18791 "" +#line 18785 "" /* L67: */ -#line 18791 "" +#line 18785 "" } -#line 18792 "" +#line 18786 "" } -#line 18793 "" +#line 18787 "" goto L65; -#line 18794 "" +#line 18788 "" L66: /* So far we know there is a main or chord note at level laccim(icm,kacc). So */ /* it will get a bl-accid if it didn't just already get one. */ -#line 18799 "" +#line 18793 "" i__12 = comslm_1.naccbl[icm]; -#line 18799 "" +#line 18793 "" for (macc = 1; macc <= i__12; ++macc) { -#line 18800 "" +#line 18794 "" if (comslm_1.laccbl[icm + macc * 25 - 25] == commidi_1.laccim[icm + kacc * 25 - 25] ) { -#line 18800 "" +#line 18794 "" goto L65; -#line 18800 "" +#line 18794 "" } -#line 18801 "" +#line 18795 "" /* L68: */ -#line 18801 "" +#line 18795 "" } -#line 18802 "" +#line 18796 "" ++comslm_1.naccbl[icm]; -#line 18803 "" +#line 18797 "" comslm_1.laccbl[icm + comslm_1.naccbl[icm] * 25 - 25] = commidi_1.laccim[icm + kacc * 25 - 25]; -#line 18804 "" +#line 18798 "" comslm_1.jaccbl[icm + comslm_1.naccbl[icm] * 25 - 25] = commidi_1.jaccim[icm + kacc * 25 - 25]; -#line 18805 "" +#line 18799 "" L65: -#line 18805 "" +#line 18799 "" ; -#line 18805 "" +#line 18799 "" } -#line 18806 "" +#line 18800 "" } -#line 18807 "" +#line 18801 "" } -#line 18808 "" +#line 18802 "" /* L11: */ -#line 18808 "" +#line 18802 "" } -#line 18808 "" +#line 18802 "" } /* Close out the notes group */ /* Writing concatenation */ -#line 18812 "" +#line 18806 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18812 "" +#line 18806 "" i__4[1] = 2, a__2[1] = "en"; -#line 18812 "" +#line 18806 "" s_cat(ch__14, a__2, i__4, &c__2, (ftnlen)3); -#line 18812 "" +#line 18806 "" addstr_(ch__14, &c__3, soutq, &lsout, (ftnlen)3, (ftnlen)80); -#line 18813 "" +#line 18807 "" if (comlast_1.islast && lsout > 0) { -#line 18813 "" - s_wsfe(&io___1146); +#line 18807 "" + s_wsfe(&io___1141); /* Writing concatenation */ -#line 18813 "" +#line 18807 "" i__4[0] = lsout, a__2[0] = soutq; -#line 18813 "" +#line 18807 "" i__4[1] = 1, a__2[1] = "%"; -#line 18813 "" +#line 18807 "" s_cat(ch__12, a__2, i__4, &c__2, (ftnlen)81); -#line 18813 "" +#line 18807 "" do_fio(&c__1, ch__12, lsout + 1); -#line 18813 "" +#line 18807 "" e_wsfe(); -#line 18813 "" +#line 18807 "" } -#line 18814 "" +#line 18808 "" /* L16: */ -#line 18814 "" +#line 18808 "" } /* Check for way-after graces at end of bar. We could not link these to notes */ /* as in midbar since there is no note following grace! Also, set flag if */ /* hardspace is needed. Also, save nvmx, ivmx for use in space checks on reloop. */ -#line 18820 "" +#line 18814 "" isgrace = FALSE_; -#line 18821 "" +#line 18815 "" i__2 = all_1.nv; -#line 18821 "" +#line 18815 "" for (all_1.iv = 1; all_1.iv <= i__2; ++all_1.iv) { -#line 18822 "" +#line 18816 "" comnsp_2.nvmxsav[all_1.iv - 1] = commvl_1.nvmx[all_1.iv - 1]; -#line 18823 "" +#line 18817 "" i__7 = commvl_1.nvmx[all_1.iv - 1]; -#line 18823 "" +#line 18817 "" for (kv = 1; kv <= i__7; ++kv) { -#line 18824 "" +#line 18818 "" comnsp_2.ivmxsav[all_1.iv + kv * 24 - 25] = commvl_1.ivmx[ all_1.iv + kv * 24 - 25]; -#line 18825 "" +#line 18819 "" commvl_1.ivx = commvl_1.ivmx[all_1.iv + kv * 24 - 25]; -#line 18826 "" +#line 18820 "" comnsp_2.ptsgnd = 0.f; -#line 18827 "" +#line 18821 "" if ((bit_test(all_1.ipl[commvl_1.ivx + all_1.nn[commvl_1.ivx - 1] * 24 - 25],29) || bit_test(all_1.ipl[commvl_1.ivx + all_1.nn[commvl_1.ivx - 1] * 24 - 25],31)) && ptsndg[ commvl_1.ivx - 1] > 0.f) { -#line 18829 "" +#line 18823 "" comnsp_2.flgndb = TRUE_; -#line 18830 "" +#line 18824 "" if (ptsndg[commvl_1.ivx - 1] > comnsp_2.ptsgnd) { -#line 18831 "" +#line 18825 "" comnsp_2.ptsgnd = ptsndg[commvl_1.ivx - 1]; -#line 18832 "" +#line 18826 "" comnsp_2.eskgnd = eskndg[commvl_1.ivx - 1]; -#line 18833 "" +#line 18827 "" } -#line 18834 "" +#line 18828 "" } -#line 18835 "" +#line 18829 "" if (bit_test(all_1.ipl[commvl_1.ivx + all_1.nn[commvl_1.ivx - 1] * 24 - 25],31)) { /* This voice has a way-after grace here at end of bar */ -#line 18839 "" +#line 18833 "" if (! isgrace) { /* This is the first one, so set up the string */ -#line 18843 "" +#line 18837 "" isgrace = TRUE_; -#line 18844 "" +#line 18838 "" ivlast = 1; /* Writing concatenation */ -#line 18845 "" +#line 18839 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18845 "" +#line 18839 "" i__4[1] = 6, a__2[1] = "znotes"; -#line 18845 "" +#line 18839 "" s_cat(soutq, a__2, i__4, &c__2, (ftnlen)80); -#line 18846 "" +#line 18840 "" lsout = 7; -#line 18847 "" +#line 18841 "" } -#line 18848 "" +#line 18842 "" i__1 = all_1.iv - 1; -#line 18848 "" +#line 18842 "" for (iiv = ivlast; iiv <= i__1; ++iiv) { -#line 18849 "" +#line 18843 "" addstr_(all_1.sepsymq + (iiv - 1), &c__1, soutq, &lsout, ( ftnlen)1, (ftnlen)80); -#line 18850 "" +#line 18844 "" /* L76: */ -#line 18850 "" +#line 18844 "" } -#line 18851 "" +#line 18845 "" ivlast = all_1.iv; /* No need to put in 'nextvoice', even if 2 lines/staff */ -#line 18855 "" +#line 18849 "" i__1 = ncmid_(&all_1.iv, &all_1.nn[commvl_1.ivx - 1]); -#line 18855 "" +#line 18849 "" dograce_(&commvl_1.ivx, &all_1.nn[commvl_1.ivx - 1], ptgr, soutq, &lsout, &i__1, &all_1.nacc[commvl_1.ivx + all_1.nn[commvl_1.ivx - 1] * 24 - 25], &ig, & @@ -44890,437 +44826,437 @@ L65: ftnlen)1); /* 130324 */ /* * .false.,0,0,0,0,0,0,0.,ulq) */ -#line 18860 "" +#line 18854 "" } -#line 18861 "" +#line 18855 "" /* L75: */ -#line 18861 "" +#line 18855 "" } -#line 18861 "" +#line 18855 "" } -#line 18862 "" +#line 18856 "" if (isgrace) { /* Writing concatenation */ -#line 18863 "" +#line 18857 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18863 "" +#line 18857 "" i__4[1] = 3, a__2[1] = "en%"; -#line 18863 "" +#line 18857 "" s_cat(ch__20, a__2, i__4, &c__2, (ftnlen)4); -#line 18863 "" +#line 18857 "" addstr_(ch__20, &c__4, soutq, &lsout, (ftnlen)4, (ftnlen)80); -#line 18864 "" +#line 18858 "" if (comlast_1.islast && lsout > 0) { -#line 18864 "" - s_wsfe(&io___1149); -#line 18864 "" +#line 18858 "" + s_wsfe(&io___1144); +#line 18858 "" do_fio(&c__1, soutq, lsout); -#line 18864 "" +#line 18858 "" e_wsfe(); -#line 18864 "" +#line 18858 "" } -#line 18865 "" +#line 18859 "" } -#line 18866 "" +#line 18860 "" lsout = 0; /* Write multibar rest. Assuming nv = 1 and do not worry about cwbrest */ /* This has to be the only use of atnextbar */ -#line 18871 "" +#line 18865 "" if (all_1.ibar == comgrace_1.ibarmbr && comlast_1.islast) { -#line 18872 "" +#line 18866 "" if (comignorenats_1.newmbrhgt) { /* Writing concatenation */ -#line 18873 "" +#line 18867 "" i__9[0] = 1, a__6[0] = all_1.sq; -#line 18873 "" +#line 18867 "" i__9[1] = 3, a__6[1] = "def"; -#line 18873 "" +#line 18867 "" i__9[2] = 1, a__6[2] = all_1.sq; -#line 18873 "" +#line 18867 "" i__9[3] = 7, a__6[3] = "mbrhgt{"; -#line 18873 "" +#line 18867 "" s_cat(soutq, a__6, i__9, &c__4, (ftnlen)80); -#line 18874 "" +#line 18868 "" if (comignorenats_1.mbrhgt <= -10) { -#line 18875 "" - s_wsfi(&io___1150); -#line 18875 "" +#line 18869 "" + s_wsfi(&io___1145); +#line 18869 "" do_fio(&c__1, (char *)&comignorenats_1.mbrhgt, (ftnlen)sizeof( integer)); -#line 18875 "" +#line 18869 "" e_wsfi(); -#line 18876 "" +#line 18870 "" lsout = 15; -#line 18877 "" +#line 18871 "" } else if (comignorenats_1.mbrhgt >= 10 || comignorenats_1.mbrhgt <= -1) { -#line 18878 "" - s_wsfi(&io___1151); -#line 18878 "" +#line 18872 "" + s_wsfi(&io___1146); +#line 18872 "" do_fio(&c__1, (char *)&comignorenats_1.mbrhgt, (ftnlen)sizeof( integer)); -#line 18878 "" +#line 18872 "" e_wsfi(); -#line 18879 "" +#line 18873 "" lsout = 14; -#line 18880 "" +#line 18874 "" } else { /* Writing concatenation */ -#line 18881 "" +#line 18875 "" i__4[0] = 12, a__2[0] = soutq; -#line 18881 "" +#line 18875 "" *(unsigned char *)&ch__6[0] = comignorenats_1.mbrhgt + 48; -#line 18881 "" +#line 18875 "" i__4[1] = 1, a__2[1] = ch__6; -#line 18881 "" +#line 18875 "" s_cat(soutq, a__2, i__4, &c__2, (ftnlen)80); -#line 18882 "" +#line 18876 "" lsout = 13; -#line 18883 "" +#line 18877 "" } /* Writing concatenation */ -#line 18884 "" +#line 18878 "" i__4[0] = lsout, a__2[0] = soutq; -#line 18884 "" +#line 18878 "" i__4[1] = 2, a__2[1] = "}%"; -#line 18884 "" +#line 18878 "" s_cat(soutq, a__2, i__4, &c__2, (ftnlen)80); -#line 18885 "" - s_wsfe(&io___1152); -#line 18885 "" +#line 18879 "" + s_wsfe(&io___1147); +#line 18879 "" do_fio(&c__1, soutq, lsout + 2); -#line 18885 "" +#line 18879 "" e_wsfe(); -#line 18886 "" +#line 18880 "" comignorenats_1.newmbrhgt = FALSE_; -#line 18887 "" +#line 18881 "" } /* Writing concatenation */ -#line 18888 "" +#line 18882 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 18888 "" +#line 18882 "" i__3[1] = 3, a__1[1] = "def"; -#line 18888 "" +#line 18882 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 18888 "" +#line 18882 "" i__3[3] = 10, a__1[3] = "atnextbar{"; -#line 18888 "" +#line 18882 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 18888 "" +#line 18882 "" i__3[5] = 6, a__1[5] = "znotes"; -#line 18888 "" +#line 18882 "" s_cat(soutq, a__1, i__3, &c__6, (ftnlen)80); -#line 18889 "" +#line 18883 "" lsout = 22; /* Writing concatenation */ -#line 18890 "" +#line 18884 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18890 "" +#line 18884 "" i__4[1] = 6, a__2[1] = "mbrest"; -#line 18890 "" +#line 18884 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 18891 "" +#line 18885 "" lnote = 7; -#line 18892 "" +#line 18886 "" istring_(&comgrace_1.mbrest, noteq, &len, (ftnlen)8); /* Writing concatenation */ -#line 18893 "" +#line 18887 "" i__4[0] = lnote, a__2[0] = notexq; -#line 18893 "" +#line 18887 "" i__4[1] = len, a__2[1] = noteq; -#line 18893 "" +#line 18887 "" s_cat(notexq, a__2, i__4, &c__2, (ftnlen)79); -#line 18894 "" +#line 18888 "" lnote += len; -#line 18895 "" +#line 18889 "" mtrspc = i_nint(&comgrace_1.xb4mbr); -#line 18896 "" +#line 18890 "" comgrace_1.xb4mbr = 0.f; -#line 18897 "" +#line 18891 "" istring_(&mtrspc, noteq, &len, (ftnlen)8); /* Writing concatenation */ -#line 18898 "" +#line 18892 "" i__6[0] = lnote, a__4[0] = notexq; -#line 18898 "" +#line 18892 "" i__6[1] = len, a__4[1] = noteq; -#line 18898 "" +#line 18892 "" i__6[2] = 1, a__4[2] = "0"; -#line 18898 "" +#line 18892 "" s_cat(notexq, a__4, i__6, &c__3, (ftnlen)79); -#line 18899 "" +#line 18893 "" lnote = lnote + len + 1; -#line 18900 "" +#line 18894 "" i__7 = all_1.nv; -#line 18900 "" +#line 18894 "" for (all_1.iv = 1; all_1.iv <= i__7; ++all_1.iv) { -#line 18901 "" +#line 18895 "" addstr_(notexq, &lnote, soutq, &lsout, (ftnlen)79, (ftnlen)80); -#line 18902 "" +#line 18896 "" if (all_1.iv < all_1.nv) { -#line 18902 "" +#line 18896 "" addstr_(all_1.sepsymq + (all_1.iv - 1), &c__1, soutq, &lsout, (ftnlen)1, (ftnlen)80); -#line 18902 "" +#line 18896 "" } -#line 18903 "" +#line 18897 "" /* L62: */ -#line 18903 "" +#line 18897 "" } /* Writing concatenation */ -#line 18904 "" +#line 18898 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18904 "" +#line 18898 "" i__4[1] = 4, a__2[1] = "en}%"; -#line 18904 "" +#line 18898 "" s_cat(ch__19, a__2, i__4, &c__2, (ftnlen)5); -#line 18904 "" +#line 18898 "" addstr_(ch__19, &c__5, soutq, &lsout, (ftnlen)5, (ftnlen)80); -#line 18905 "" - s_wsfe(&io___1155); -#line 18905 "" +#line 18899 "" + s_wsfe(&io___1150); +#line 18899 "" do_fio(&c__1, soutq, lsout); -#line 18905 "" +#line 18899 "" e_wsfe(); -#line 18906 "" +#line 18900 "" lsout = 0; -#line 18907 "" +#line 18901 "" if (comshort_1.ishort > 0) { -#line 18908 "" +#line 18902 "" comshort_1.mbrsum += comgrace_1.mbrest; -#line 18909 "" +#line 18903 "" ++comshort_1.nmbr; -#line 18910 "" +#line 18904 "" } -#line 18911 "" +#line 18905 "" if (comgrace_1.mbrest > 1) { -#line 18912 "" +#line 18906 "" r__1 = comgrace_1.mbrest - 1 + .01f; -#line 18912 "" +#line 18906 "" ndig = (integer) r_lg10(&r__1) + 1; -#line 18913 "" +#line 18907 "" ci__1.cierr = 0; -#line 18913 "" +#line 18907 "" ci__1.ciunit = 11; /* Writing concatenation */ -#line 18913 "" +#line 18907 "" i__6[0] = 6, a__4[0] = "(a14,i"; -#line 18913 "" +#line 18907 "" i__7 = ndig + 48; -#line 18913 "" +#line 18907 "" chax_(ch__6, (ftnlen)1, &i__7); -#line 18913 "" +#line 18907 "" i__6[1] = 1, a__4[1] = ch__6; -#line 18913 "" +#line 18907 "" i__6[2] = 4, a__4[2] = ",a1)"; -#line 18913 "" +#line 18907 "" ci__1.cifmt = (s_cat(ch__9, a__4, i__6, &c__3, (ftnlen)11), ch__9) ; -#line 18913 "" +#line 18907 "" s_wsfe(&ci__1); /* Writing concatenation */ -#line 18913 "" +#line 18907 "" i__9[0] = 1, a__6[0] = all_1.sq; -#line 18913 "" +#line 18907 "" i__9[1] = 7, a__6[1] = "advance"; -#line 18913 "" +#line 18907 "" i__9[2] = 1, a__6[2] = all_1.sq; -#line 18913 "" +#line 18907 "" i__9[3] = 5, a__6[3] = "barno"; -#line 18913 "" +#line 18907 "" s_cat(ch__4, a__6, i__9, &c__4, (ftnlen)14); -#line 18913 "" +#line 18907 "" do_fio(&c__1, ch__4, (ftnlen)14); -#line 18913 "" +#line 18907 "" i__2 = comgrace_1.mbrest - 1; -#line 18913 "" +#line 18907 "" do_fio(&c__1, (char *)&i__2, (ftnlen)sizeof(integer)); -#line 18913 "" +#line 18907 "" do_fio(&c__1, "%", (ftnlen)1); -#line 18913 "" +#line 18907 "" e_wsfe(); -#line 18915 "" +#line 18909 "" } -#line 18916 "" +#line 18910 "" } else if (iscwr) { /* Centered whole-bar rests. Set flag to pass to pmxb at start of NEXT bar */ /* to check for new clef and add space by redefining \CenterBar */ -#line 18921 "" +#line 18915 "" comclefrests_1.centrests = TRUE_; /* Writing concatenation */ -#line 18922 "" +#line 18916 "" i__9[0] = 1, a__6[0] = all_1.sq; -#line 18922 "" +#line 18916 "" i__9[1] = 3, a__6[1] = "def"; -#line 18922 "" +#line 18916 "" i__9[2] = 1, a__6[2] = all_1.sq; -#line 18922 "" +#line 18916 "" i__9[3] = 8, a__6[3] = "value{0}"; -#line 18922 "" +#line 18916 "" s_cat(ch__18, a__6, i__9, &c__4, (ftnlen)13); -#line 18922 "" +#line 18916 "" addstr_(ch__18, &c__13, soutq, &lsout, (ftnlen)13, (ftnlen)80); /* Writing concatenation */ -#line 18923 "" +#line 18917 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 18923 "" +#line 18917 "" i__3[1] = 3, a__1[1] = "def"; -#line 18923 "" +#line 18917 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 18923 "" +#line 18917 "" i__3[3] = 10, a__1[3] = "atnextbar{"; -#line 18923 "" +#line 18917 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 18923 "" +#line 18917 "" i__3[5] = 6, a__1[5] = "znotes"; -#line 18923 "" +#line 18917 "" s_cat(ch__21, a__1, i__3, &c__6, (ftnlen)22); -#line 18923 "" +#line 18917 "" addstr_(ch__21, &c__22, soutq, &lsout, (ftnlen)22, (ftnlen)80); -#line 18925 "" +#line 18919 "" i__7 = all_1.nv; -#line 18925 "" +#line 18919 "" for (all_1.iv = 1; all_1.iv <= i__7; ++all_1.iv) { /* added */ -#line 18927 "" +#line 18921 "" lnote = 0; -#line 18929 "" +#line 18923 "" i__2 = commvl_1.nvmx[all_1.iv - 1]; -#line 18929 "" +#line 18923 "" for (kv = 1; kv <= i__2; ++kv) { -#line 18930 "" +#line 18924 "" commvl_1.ivx = commvl_1.ivmx[all_1.iv + kv * 24 - 25]; -#line 18931 "" +#line 18925 "" if (cwrest[commvl_1.ivx]) { /* Writing concatenation */ -#line 18932 "" +#line 18926 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18932 "" +#line 18926 "" i__4[1] = 10, a__2[1] = "CenterBar{"; -#line 18932 "" +#line 18926 "" s_cat(ch__9, a__2, i__4, &c__2, (ftnlen)11); -#line 18932 "" +#line 18926 "" addstr_(ch__9, &c__11, soutq, &lsout, (ftnlen)11, (ftnlen) 80); -#line 18933 "" +#line 18927 "" if (! comcwrf_1.cwrferm[commvl_1.ivx - 1]) { -#line 18934 "" +#line 18928 "" if (lcwr[commvl_1.ivx - 1] >= 11 && *(unsigned char *) &cwrq[(commvl_1.ivx - 1) * 79 + 10] != 'p') { /* Kluge to use new definitions for centered, stacked rests */ -#line 18938 "" +#line 18932 "" if (s_cmp(cwrq + ((commvl_1.ivx - 1) * 79 + 1), "liftpause", (ftnlen)9, (ftnlen)9) == 0 || s_cmp(cwrq + ((commvl_1.ivx - 1) * 79 + 1), "liftPAuse", (ftnlen)9, (ftnlen)9) == 0) { -#line 18938 "" +#line 18932 "" *(unsigned char *)&cwrq[(commvl_1.ivx - 1) * 79 + 9] = 'c'; -#line 18938 "" +#line 18932 "" } -#line 18941 "" +#line 18935 "" } -#line 18942 "" +#line 18936 "" addstr_(cwrq + (commvl_1.ivx - 1) * 79, &lcwr[ commvl_1.ivx - 1], soutq, &lsout, lcwr[ commvl_1.ivx - 1], (ftnlen)80); /* Writing concatenation */ -#line 18944 "" +#line 18938 "" i__6[0] = 6, a__4[0] = "}{-2}{"; -#line 18944 "" +#line 18938 "" i__6[1] = 1, a__4[1] = all_1.sq; -#line 18944 "" +#line 18938 "" i__6[2] = 6, a__4[2] = "value}"; -#line 18944 "" +#line 18938 "" s_cat(ch__18, a__4, i__6, &c__3, (ftnlen)13); -#line 18944 "" +#line 18938 "" addstr_(ch__18, &c__13, soutq, &lsout, (ftnlen)13, ( ftnlen)80); -#line 18945 "" +#line 18939 "" } else { /* Fermata on centered rest. Will need to fix up level. */ /* 12/6/07 shift it left so it's centered over rest */ /* Writing concatenation */ -#line 18950 "" +#line 18944 "" i__15[0] = lnote, a__9[0] = notexq; -#line 18950 "" +#line 18944 "" i__15[1] = 1, a__9[1] = all_1.sq; -#line 18950 "" +#line 18944 "" i__15[2] = 13, a__9[2] = "loffset{.33}{"; -#line 18950 "" +#line 18944 "" i__15[3] = 1, a__9[3] = all_1.sq; -#line 18950 "" +#line 18944 "" i__15[4] = 11, a__9[4] = "fermataup7}"; -#line 18950 "" +#line 18944 "" i__15[5] = lcwr[commvl_1.ivx - 1], a__9[5] = cwrq + ( commvl_1.ivx - 1) * 79; -#line 18950 "" +#line 18944 "" i__15[6] = 6, a__9[6] = "}{-2}{"; -#line 18950 "" +#line 18944 "" i__15[7] = 1, a__9[7] = all_1.sq; -#line 18950 "" +#line 18944 "" i__15[8] = 6, a__9[8] = "value}"; -#line 18950 "" +#line 18944 "" s_cat(notexq, a__9, i__15, &c__9, (ftnlen)79); -#line 18953 "" +#line 18947 "" lnote = lnote + 26 + lcwr[commvl_1.ivx - 1] + 13; -#line 18954 "" +#line 18948 "" addstr_(notexq, &lnote, soutq, &lsout, (ftnlen)79, ( ftnlen)80); -#line 18955 "" +#line 18949 "" comcwrf_1.cwrferm[commvl_1.ivx - 1] = FALSE_; -#line 18956 "" +#line 18950 "" } -#line 18957 "" +#line 18951 "" } -#line 18958 "" +#line 18952 "" /* L61: */ -#line 18958 "" +#line 18952 "" } -#line 18959 "" +#line 18953 "" if (all_1.iv != all_1.nv) { -#line 18959 "" +#line 18953 "" addstr_(all_1.sepsymq + (all_1.iv - 1), &c__1, soutq, &lsout, (ftnlen)1, (ftnlen)80); -#line 18959 "" +#line 18953 "" } -#line 18960 "" +#line 18954 "" /* L60: */ -#line 18960 "" +#line 18954 "" } -#line 18961 "" +#line 18955 "" if (comlast_1.islast) { /* Writing concatenation */ -#line 18962 "" +#line 18956 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 18962 "" +#line 18956 "" i__4[1] = 4, a__2[1] = "en}%"; -#line 18962 "" +#line 18956 "" s_cat(ch__19, a__2, i__4, &c__2, (ftnlen)5); -#line 18962 "" +#line 18956 "" addstr_(ch__19, &c__5, soutq, &lsout, (ftnlen)5, (ftnlen)80); -#line 18963 "" +#line 18957 "" if (lsout > 0) { -#line 18963 "" - s_wsfe(&io___1157); -#line 18963 "" +#line 18957 "" + s_wsfe(&io___1152); +#line 18957 "" do_fio(&c__1, soutq, lsout); -#line 18963 "" +#line 18957 "" e_wsfe(); -#line 18963 "" +#line 18957 "" } -#line 18964 "" +#line 18958 "" } -#line 18965 "" +#line 18959 "" } /* End of block for centered whole-bar rests and multi-bar rests */ @@ -45328,52 +45264,52 @@ L65: /* If at end of block, save durations of last notes in bar, for possible use */ /* if clef changes at start of next bar */ -#line 18972 "" +#line 18966 "" if (all_1.ibar == all_1.nbars) { -#line 18973 "" +#line 18967 "" i__7 = all_1.nv; -#line 18973 "" +#line 18967 "" for (all_1.iv = 1; all_1.iv <= i__7; ++all_1.iv) { -#line 18974 "" +#line 18968 "" i__2 = commvl_1.nvmx[all_1.iv - 1]; -#line 18974 "" +#line 18968 "" for (kv = 1; kv <= i__2; ++kv) { -#line 18975 "" +#line 18969 "" commvl_1.ivx = commvl_1.ivmx[all_1.iv + kv * 24 - 25]; -#line 18976 "" +#line 18970 "" comnsp_2.prevtn[commvl_1.ivx - 1] = all_1.tnote[ comipl2_1.ipl2[commvl_1.ivx + all_1.nn[commvl_1.ivx - 1] * 24 - 25] - 1]; -#line 18977 "" +#line 18971 "" /* L63: */ -#line 18977 "" +#line 18971 "" } -#line 18977 "" +#line 18971 "" } -#line 18978 "" +#line 18972 "" } /* Update time for midi. This is only used for the event track */ -#line 18982 "" +#line 18976 "" if (commidi_1.ismidi) { -#line 18983 "" +#line 18977 "" comevent_1.miditime += all_1.lenbar * 15; /* If pickup, write the real time signature to the event track. Cannot use */ /* mtrnuml since it was reset to 0, have to recompute it */ -#line 18988 "" +#line 18982 "" if (all_1.lenb0 == all_1.lenbar) { -#line 18988 "" +#line 18982 "" i__2 = all_1.mtrdenl * all_1.lenb1 / 64; -#line 18988 "" +#line 18982 "" midievent_("m", &i__2, &all_1.mtrdenl, (ftnlen)1); -#line 18988 "" +#line 18982 "" } -#line 18990 "" +#line 18984 "" } -#line 18991 "" +#line 18985 "" return 0; } /* make2bar_ */ @@ -45439,185 +45375,185 @@ L65: /* * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) */ /* logical rest,firstline,newmeter,gotclef */ -#line 19040 "" +#line 19034 "" linecom_1.elskb = 0.f; -#line 19041 "" +#line 19035 "" linecom_1.tnminb[c1omnotes_1.ibarcnt - 1] = 1e3f; -#line 19042 "" +#line 19036 "" i__1 = a1ll_2.nv; -#line 19042 "" +#line 19036 "" for (a1ll_2.iv = 1; a1ll_2.iv <= i__1; ++a1ll_2.iv) { -#line 19043 "" +#line 19037 "" i__2 = c1ommvl_1.nvmx[a1ll_2.iv - 1]; -#line 19043 "" +#line 19037 "" for (kv = 1; kv <= i__2; ++kv) { -#line 19044 "" +#line 19038 "" c1ommvl_1.ivx = c1ommvl_1.ivmx[a1ll_2.iv + kv * 24 - 25]; -#line 19045 "" +#line 19039 "" if (a1ll_2.ibar > 1) { -#line 19046 "" +#line 19040 "" a1ll_2.nn[c1ommvl_1.ivx - 1] = a1ll_2.nib[c1ommvl_1.ivx + a1ll_2.ibar * 24 - 25] - a1ll_2.nib[c1ommvl_1.ivx + ( a1ll_2.ibar - 1) * 24 - 25]; -#line 19047 "" +#line 19041 "" } else { -#line 19048 "" +#line 19042 "" a1ll_2.nn[c1ommvl_1.ivx - 1] = a1ll_2.nib[c1ommvl_1.ivx + a1ll_2.ibar * 24 - 25]; -#line 19049 "" +#line 19043 "" } -#line 19050 "" +#line 19044 "" /* L1: */ -#line 19050 "" +#line 19044 "" } -#line 19050 "" +#line 19044 "" } /* initialize list note counter, time(iv), curr. note(iv) */ -#line 19054 "" +#line 19048 "" ilnc = 1; -#line 19055 "" +#line 19049 "" i__2 = a1ll_2.nv; -#line 19055 "" +#line 19049 "" for (a1ll_2.iv = 1; a1ll_2.iv <= i__2; ++a1ll_2.iv) { -#line 19056 "" +#line 19050 "" i__1 = c1ommvl_1.nvmx[a1ll_2.iv - 1]; -#line 19056 "" +#line 19050 "" for (kv = 1; kv <= i__1; ++kv) { -#line 19057 "" +#line 19051 "" c1ommvl_1.ivx = c1ommvl_1.ivmx[a1ll_2.iv + kv * 24 - 25]; -#line 19058 "" +#line 19052 "" cnn[c1ommvl_1.ivx - 1] = 1; -#line 19059 "" +#line 19053 "" a1ll_2.ivxo[ilnc - 1] = c1ommvl_1.ivx; -#line 19060 "" +#line 19054 "" a1ll_2.ipo[ilnc - 1] = 1; -#line 19061 "" +#line 19055 "" a1ll_2.to[ilnc - 1] = 0.f; -#line 19062 "" +#line 19056 "" tnote[ilnc - 1] = fnote_(a1ll_2.nodur, &c1ommvl_1.ivx, &c__1, c1ommvl_1.nacc); -#line 19063 "" +#line 19057 "" xit[c1ommvl_1.ivx - 1] = tnote[ilnc - 1]; -#line 19064 "" +#line 19058 "" if ((r__1 = xit[c1ommvl_1.ivx - 1] - a1ll_2.lenbar, dabs(r__1)) < comtol_1.tol) { -#line 19064 "" +#line 19058 "" xit[c1ommvl_1.ivx - 1] = 1e3f; -#line 19064 "" +#line 19058 "" } -#line 19065 "" +#line 19059 "" ++ilnc; -#line 19066 "" +#line 19060 "" /* L4: */ -#line 19066 "" +#line 19060 "" } -#line 19066 "" +#line 19060 "" } /* Build the list */ -#line 19070 "" +#line 19064 "" L5: /* Determine which voice comes next from end of notes done so far. */ /* tmin is the earliest ending time of notes done so far */ -#line 19075 "" +#line 19069 "" tmin = 1e3f; -#line 19076 "" +#line 19070 "" i__1 = a1ll_2.nv; -#line 19076 "" +#line 19070 "" for (a1ll_2.iv = 1; a1ll_2.iv <= i__1; ++a1ll_2.iv) { -#line 19077 "" +#line 19071 "" i__2 = c1ommvl_1.nvmx[a1ll_2.iv - 1]; -#line 19077 "" +#line 19071 "" for (kv = 1; kv <= i__2; ++kv) { -#line 19078 "" +#line 19072 "" c1ommvl_1.ivx = c1ommvl_1.ivmx[a1ll_2.iv + kv * 24 - 25]; /* Computing MIN */ -#line 19079 "" +#line 19073 "" r__1 = tmin, r__2 = xit[c1ommvl_1.ivx - 1]; -#line 19079 "" +#line 19073 "" tminn = dmin(r__1,r__2); -#line 19080 "" +#line 19074 "" if (tminn < tmin) { -#line 19081 "" +#line 19075 "" tmin = tminn; -#line 19082 "" +#line 19076 "" ivnext = c1ommvl_1.ivx; -#line 19083 "" +#line 19077 "" } -#line 19084 "" +#line 19078 "" /* L6: */ -#line 19084 "" +#line 19078 "" } -#line 19084 "" +#line 19078 "" } -#line 19085 "" +#line 19079 "" if (tmin > 999.f) { -#line 19085 "" +#line 19079 "" goto L7; -#line 19085 "" +#line 19079 "" } -#line 19086 "" +#line 19080 "" a1ll_2.ivxo[ilnc - 1] = ivnext; -#line 19087 "" +#line 19081 "" ++cnn[ivnext - 1]; -#line 19088 "" +#line 19082 "" a1ll_2.ipo[ilnc - 1] = cnn[ivnext - 1]; -#line 19089 "" +#line 19083 "" a1ll_2.to[ilnc - 1] = tmin; /* Check if this voice is done */ -#line 19093 "" +#line 19087 "" tnote[ilnc - 1] = fnote_(a1ll_2.nodur, &ivnext, &cnn[ivnext - 1], c1ommvl_1.nacc); -#line 19094 "" +#line 19088 "" if (cnn[ivnext - 1] == a1ll_2.nn[ivnext - 1]) { -#line 19095 "" +#line 19089 "" xit[ivnext - 1] = 1e3f; -#line 19096 "" +#line 19090 "" } else { -#line 19097 "" +#line 19091 "" xit[ivnext - 1] += tnote[ilnc - 1]; -#line 19098 "" +#line 19092 "" } -#line 19099 "" +#line 19093 "" ++ilnc; -#line 19100 "" +#line 19094 "" goto L5; -#line 19101 "" +#line 19095 "" L7: -#line 19102 "" +#line 19096 "" ntot = ilnc - 1; -#line 19103 "" +#line 19097 "" if (ntot > 600) { -#line 19104 "" +#line 19098 "" printl_(" ", (ftnlen)1); -#line 19105 "" +#line 19099 "" printl_("Cannot have more than 600 notes per bar, stopping", (ftnlen) 49); -#line 19106 "" +#line 19100 "" stop1_(); -#line 19107 "" +#line 19101 "" } -#line 19108 "" +#line 19102 "" i__2 = ntot - 1; -#line 19108 "" +#line 19102 "" for (in = 1; in <= i__2; ++in) { -#line 19109 "" +#line 19103 "" a1ll_2.tno[in - 1] = a1ll_2.to[in] - a1ll_2.to[in - 1]; -#line 19110 "" +#line 19104 "" /* L8: */ -#line 19110 "" +#line 19104 "" } -#line 19111 "" +#line 19105 "" a1ll_2.tno[ntot - 1] = fnote_(a1ll_2.nodur, &a1ll_2.ivxo[ntot - 1], & a1ll_2.ipo[ntot - 1], c1ommvl_1.nacc); -#line 19112 "" +#line 19106 "" tnote[ntot - 1] = a1ll_2.tno[ntot - 1]; /* Debug writes */ @@ -45632,198 +45568,198 @@ L7: /* Done w/ list. Initialize loop for building note blocks: */ -#line 19126 "" +#line 19120 "" ib = 1; -#line 19127 "" +#line 19121 "" istart[0] = 1; -#line 19128 "" +#line 19122 "" space[0] = 0.f; -#line 19129 "" +#line 19123 "" in = 1; /* Start the loop */ -#line 19133 "" +#line 19127 "" L9: -#line 19134 "" +#line 19128 "" if (in == ntot) { -#line 19135 "" +#line 19129 "" if (space[ib - 1] < comtol_1.tol) { -#line 19136 "" +#line 19130 "" space[ib - 1] = a1ll_2.tno[in - 1]; /* Last gap in bar is spanned by a note, so cannot need a squeeze. */ -#line 19140 "" +#line 19134 "" squez[ib - 1] = 1.f; -#line 19141 "" +#line 19135 "" } -#line 19142 "" +#line 19136 "" istop[ib - 1] = ntot; /* From here flow out of this if block and into block-setup */ -#line 19146 "" +#line 19140 "" } else if (space[ib - 1] < comtol_1.tol) { /* space hasn't been set yet, so tentatively set: */ -#line 19150 "" +#line 19144 "" space[ib - 1] = a1ll_2.tno[in - 1]; -#line 19151 "" +#line 19145 "" if (space[ib - 1] < comtol_1.tol) { -#line 19152 "" +#line 19146 "" ++in; -#line 19153 "" +#line 19147 "" } else { /* Tentative space tno(in) is non-zero. Set squez, which will be kept (since */ /* it is a unique property of the particular increment starting here) : */ -#line 19158 "" +#line 19152 "" squez[ib - 1] = getsquez_(&in, &ntot, &space[ib - 1], tnote, a1ll_2.to); -#line 19159 "" +#line 19153 "" istop[ib - 1] = in; -#line 19160 "" +#line 19154 "" } -#line 19161 "" +#line 19155 "" goto L9; -#line 19162 "" +#line 19156 "" } else if (a1ll_2.tno[in] < comtol_1.tol) { /* This is not the last note in the space, so */ -#line 19166 "" +#line 19160 "" ++in; -#line 19167 "" +#line 19161 "" goto L9; -#line 19168 "" +#line 19162 "" } else if ((r__1 = a1ll_2.tno[in] - space[ib - 1], dabs(r__1)) < comtol_1.tol) { /* Next increment has same space. Does it have same squez? */ -#line 19172 "" +#line 19166 "" i__2 = in + 1; -#line 19172 "" +#line 19166 "" xsquez = getsquez_(&i__2, &ntot, &space[ib - 1], tnote, a1ll_2.to); /* If it does have the same squez, loop, otherwise flow out */ -#line 19176 "" +#line 19170 "" if ((r__1 = xsquez - squez[ib - 1], dabs(r__1)) < comtol_1.tol) { /* Keep spacing the same, update tentative stop point */ -#line 19180 "" +#line 19174 "" ++in; -#line 19181 "" +#line 19175 "" istop[ib - 1] = in; -#line 19182 "" +#line 19176 "" goto L9; -#line 19183 "" +#line 19177 "" } -#line 19184 "" +#line 19178 "" } /* At this point istart, istop, space, and squez are good, so close out block */ -#line 19188 "" +#line 19182 "" tstart[ib - 1] = a1ll_2.to[istart[ib - 1] - 1]; /* Compute elemskips assuming no flattening to increase min space. The formula */ /* is only correct if f1eon(t) = sqrt(t/2); more generally (after possible */ /* flattening in pmxb), elsperns = squez*feon(space/squez) */ -#line 19194 "" +#line 19188 "" r__1 = space[ib - 1] * squez[ib - 1]; -#line 19194 "" +#line 19188 "" elsperns = f1eon_(&r__1); -#line 19195 "" +#line 19189 "" if (istop[ib - 1] == ntot) { -#line 19196 "" +#line 19190 "" r__1 = (a1ll_2.lenbar - tstart[ib - 1]) / space[ib - 1]; -#line 19196 "" +#line 19190 "" nnsk = i_nint(&r__1); -#line 19197 "" +#line 19191 "" } else { -#line 19198 "" +#line 19192 "" r__1 = (a1ll_2.to[istop[ib - 1]] - tstart[ib - 1]) / space[ib - 1]; -#line 19198 "" +#line 19192 "" nnsk = i_nint(&r__1); -#line 19199 "" +#line 19193 "" } -#line 19200 "" +#line 19194 "" linecom_1.elskb += elsperns * nnsk; -#line 19201 "" +#line 19195 "" if (c1omnotes_1.nptr[c1omnotes_1.ibarcnt] > c1omnotes_1.nptr[ c1omnotes_1.ibarcnt - 1]) { -#line 19202 "" +#line 19196 "" catspace_(&space[ib - 1], &squez[ib - 1], &nnsk); -#line 19203 "" +#line 19197 "" } else { /* This is the first entry for this bar */ -#line 19207 "" +#line 19201 "" c1omnotes_1.nnpd[c1omnotes_1.nptr[c1omnotes_1.ibarcnt - 1] - 1] = nnsk; -#line 19208 "" +#line 19202 "" c1omnotes_1.durb[c1omnotes_1.nptr[c1omnotes_1.ibarcnt - 1] - 1] = space[ib - 1]; -#line 19209 "" +#line 19203 "" c1omnotes_1.sqzb[c1omnotes_1.nptr[c1omnotes_1.ibarcnt - 1] - 1] = squez[ib - 1]; -#line 19210 "" +#line 19204 "" ++c1omnotes_1.nptr[c1omnotes_1.ibarcnt]; -#line 19211 "" +#line 19205 "" } /* Update minimum space spanned by a note */ -#line 19215 "" +#line 19209 "" if ((r__1 = squez[ib - 1] - 1, dabs(r__1)) < comtol_1.tol) { /* Computing MIN */ -#line 19215 "" +#line 19209 "" r__2 = linecom_1.tnminb[c1omnotes_1.ibarcnt - 1], r__3 = space[ib - 1] ; -#line 19215 "" +#line 19209 "" linecom_1.tnminb[c1omnotes_1.ibarcnt - 1] = dmin(r__2,r__3); -#line 19215 "" +#line 19209 "" } -#line 19217 "" +#line 19211 "" if (istop[ib - 1] == ntot) { -#line 19217 "" +#line 19211 "" goto L15; -#line 19217 "" +#line 19211 "" } /* End of spatial accounting for now */ -#line 19221 "" +#line 19215 "" ++ib; -#line 19222 "" +#line 19216 "" istart[ib - 1] = istop[ib - 2] + 1; -#line 19223 "" +#line 19217 "" in = istart[ib - 1]; /* Set tentative block space for new block */ -#line 19227 "" +#line 19221 "" space[ib - 1] = a1ll_2.tno[in - 1]; -#line 19228 "" +#line 19222 "" if (space[ib - 1] > comtol_1.tol) { -#line 19228 "" +#line 19222 "" squez[ib - 1] = getsquez_(&in, &ntot, &space[ib - 1], tnote, a1ll_2.to); -#line 19228 "" +#line 19222 "" } -#line 19230 "" +#line 19224 "" istop[ib - 1] = in; -#line 19231 "" +#line 19225 "" goto L9; -#line 19232 "" +#line 19226 "" L15: /* nb = ib */ @@ -45834,7 +45770,7 @@ L15: /* write(*,'(16f5.1)')(space(ib),ib=1,nb) */ /* write(*,'(16f5.1)')(squez(ib),ib=1,nb) */ -#line 19242 "" +#line 19236 "" return 0; } /* makeabar_ */ @@ -45857,136 +45793,136 @@ L15: static integer nbytes, misperq; /* Fortran I/O blocks */ - static cilist io___1181 = { 0, 6, 0, 0, 0 }; + static cilist io___1176 = { 0, 6, 0, 0, 0 }; /* We now store "conductor" events in mmidi(numchan,.), and count bytes */ /* with imidi(numchan) */ -#line 19261 "" +#line 19255 "" i__1 = comevent_1.miditime - comevent_1.lasttime; -#line 19261 "" +#line 19255 "" idur = isetvarlen_(&i__1, &nbytes); -#line 19262 "" +#line 19256 "" commidi_1.imidi[commidi_1.numchan] = commidi_1.imidi[commidi_1.numchan] + nbytes + 1; -#line 19263 "" +#line 19257 "" i__1 = nbytes; -#line 19263 "" +#line 19257 "" for (i__ = 1; i__ <= i__1; ++i__) { -#line 19264 "" +#line 19258 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] - i__) * 25 - 25] = (shortint) (idur % 256) ; -#line 19265 "" +#line 19259 "" idur = lbit_shift(idur, (ftnlen)-8); -#line 19266 "" +#line 19260 "" /* L1: */ -#line 19266 "" +#line 19260 "" } -#line 19267 "" +#line 19261 "" commidi_1.mmidi[commidi_1.numchan + commidi_1.imidi[commidi_1.numchan] * 25 - 25] = 255; -#line 19268 "" +#line 19262 "" if (*(unsigned char *)typeq == 't') { /* Tempo event. in1 = quarters per minute (integer) */ -#line 19272 "" +#line 19266 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 1) * 25 - 25] = 81; -#line 19273 "" +#line 19267 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 2) * 25 - 25] = 3; -#line 19274 "" +#line 19268 "" r__1 = 6e7f / *in1; -#line 19274 "" +#line 19268 "" misperq = i_nint(&r__1); -#line 19275 "" +#line 19269 "" for (i__ = 1; i__ <= 3; ++i__) { -#line 19276 "" +#line 19270 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 6 - i__) * 25 - 25] = (shortint) ( misperq % 256); -#line 19277 "" +#line 19271 "" misperq = lbit_shift(misperq, (ftnlen)-8); -#line 19278 "" +#line 19272 "" /* L2: */ -#line 19278 "" +#line 19272 "" } -#line 19279 "" +#line 19273 "" commidi_1.imidi[commidi_1.numchan] += 5; -#line 19280 "" +#line 19274 "" } else if (*(unsigned char *)typeq == 'm') { /* Meter event. in1=numerator, in2=denom (power of 2) */ -#line 19284 "" +#line 19278 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 1) * 25 - 25] = 88; -#line 19285 "" +#line 19279 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 2) * 25 - 25] = 4; -#line 19286 "" +#line 19280 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 3) * 25 - 25] = (shortint) (*in1); -#line 19287 "" +#line 19281 "" if (*in2 > 0) { -#line 19288 "" +#line 19282 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 4) * 25 - 25] = (shortint) log2_(in2) ; -#line 19289 "" +#line 19283 "" } else { -#line 19290 "" +#line 19284 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 4) * 25 - 25] = 0; -#line 19291 "" +#line 19285 "" } -#line 19292 "" +#line 19286 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 5) * 25 - 25] = 24; -#line 19293 "" +#line 19287 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 6) * 25 - 25] = 8; -#line 19294 "" +#line 19288 "" commidi_1.imidi[commidi_1.numchan] += 6; -#line 19295 "" +#line 19289 "" } else if (*(unsigned char *)typeq == 'k') { /* Keychange event. in1 = isig */ -#line 19299 "" +#line 19293 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 1) * 25 - 25] = 89; -#line 19300 "" +#line 19294 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 2) * 25 - 25] = 2; -#line 19301 "" +#line 19295 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 3) * 25 - 25] = (shortint) ((*in1 + 256) % 256); -#line 19302 "" +#line 19296 "" commidi_1.mmidi[commidi_1.numchan + (commidi_1.imidi[ commidi_1.numchan] + 4) * 25 - 25] = 0; -#line 19303 "" +#line 19297 "" commidi_1.imidi[commidi_1.numchan] += 4; -#line 19304 "" +#line 19298 "" } else { -#line 19305 "" - s_wsle(&io___1181); -#line 19305 "" +#line 19299 "" + s_wsle(&io___1176); +#line 19299 "" do_lio(&c__9, &c__1, "Program flameout in midievent", (ftnlen)29); -#line 19305 "" +#line 19299 "" e_wsle(); -#line 19306 "" +#line 19300 "" stop1_(); -#line 19307 "" +#line 19301 "" } -#line 19308 "" +#line 19302 "" comevent_1.lasttime = comevent_1.miditime; -#line 19309 "" +#line 19303 "" return 0; } /* midievent_ */ @@ -46005,55 +45941,55 @@ L15: static integer lenout; /* Fortran I/O blocks */ - static cilist io___1182 = { 0, 0, 1, "(a)", 0 }; - static cilist io___1185 = { 0, 0, 0, "(a)", 0 }; + static cilist io___1177 = { 0, 0, 1, "(a)", 0 }; + static cilist io___1180 = { 0, 0, 0, "(a)", 0 }; -#line 19314 "" +#line 19308 "" *done = FALSE_; -#line 19315 "" - io___1182.ciunit = *iuin; -#line 19315 "" - i__1 = s_rsfe(&io___1182); -#line 19315 "" +#line 19309 "" + io___1177.ciunit = *iuin; +#line 19309 "" + i__1 = s_rsfe(&io___1177); +#line 19309 "" if (i__1 != 0) { -#line 19315 "" +#line 19309 "" goto L1; -#line 19315 "" +#line 19309 "" } -#line 19315 "" +#line 19309 "" i__1 = do_fio(&c__1, outq, (ftnlen)129); -#line 19315 "" +#line 19309 "" if (i__1 != 0) { -#line 19315 "" +#line 19309 "" goto L1; -#line 19315 "" +#line 19309 "" } -#line 19315 "" +#line 19309 "" i__1 = e_rsfe(); -#line 19315 "" +#line 19309 "" if (i__1 != 0) { -#line 19315 "" +#line 19309 "" goto L1; -#line 19315 "" +#line 19309 "" } -#line 19316 "" +#line 19310 "" lenout = llen_(outq, &c__129, (ftnlen)129); -#line 19317 "" - io___1185.ciunit = *iuout; -#line 19317 "" - s_wsfe(&io___1185); -#line 19317 "" +#line 19311 "" + io___1180.ciunit = *iuout; +#line 19311 "" + s_wsfe(&io___1180); +#line 19311 "" do_fio(&c__1, outq, lenout); -#line 19317 "" +#line 19311 "" e_wsfe(); -#line 19318 "" +#line 19312 "" return 0; -#line 19319 "" +#line 19313 "" L1: -#line 19319 "" +#line 19313 "" *done = TRUE_; -#line 19320 "" +#line 19314 "" return 0; } /* moveln_ */ @@ -46073,55 +46009,55 @@ L1: /* This is called when (a) macro recording is just starting and */ /* (b) at the start of a new line, if recording is on */ -#line 19336 "" +#line 19330 "" if (! commac_1.mrecord) { /* Starting the macro */ -#line 19340 "" +#line 19334 "" c1ommac_1.ip1mac[commac_1.macnum - 1] = inbuff_1.ipbuf - inbuff_1.lbuf[inbuff_1.ilbuf - 2] + *iccount; -#line 19341 "" +#line 19335 "" c1ommac_1.il1mac[commac_1.macnum - 1] = inbuff_1.ilbuf - 1; -#line 19342 "" +#line 19336 "" c1ommac_1.ic1mac[commac_1.macnum - 1] = *iccount; -#line 19343 "" +#line 19337 "" commac_1.mrecord = TRUE_; -#line 19344 "" +#line 19338 "" } -#line 19345 "" +#line 19339 "" if (*iccount < 128) { -#line 19346 "" +#line 19340 "" i__1 = *iccount; -#line 19346 "" +#line 19340 "" *ndxm = i_indx(lineq + i__1, "M", 128 - i__1, (ftnlen)1); -#line 19347 "" +#line 19341 "" if (*ndxm > 0) { -#line 19347 "" +#line 19341 "" i__1 = *iccount; -#line 19347 "" +#line 19341 "" i__2 = 128 - *iccount; -#line 19347 "" +#line 19341 "" *ndxm = ntindex_(lineq + i__1, "M", &i__2, 128 - i__1, (ftnlen)1); -#line 19347 "" +#line 19341 "" } -#line 19349 "" +#line 19343 "" if (*ndxm > 0) { /* This line ends the macro. */ -#line 19353 "" +#line 19347 "" c1ommac_1.ip2mac[commac_1.macnum - 1] = inbuff_1.ipbuf - inbuff_1.lbuf[inbuff_1.ilbuf - 2] + *iccount + *ndxm; -#line 19354 "" +#line 19348 "" c1ommac_1.il2mac[commac_1.macnum - 1] = inbuff_1.ilbuf - 1; -#line 19355 "" +#line 19349 "" commac_1.mrecord = FALSE_; -#line 19356 "" +#line 19350 "" } -#line 19357 "" +#line 19351 "" } -#line 19358 "" +#line 19352 "" return 0; } /* mrec1_ */ @@ -46140,42 +46076,42 @@ integer ncmid_(integer *iv, integer *ip) static real xtime; /* Fortran I/O blocks */ - static cilist io___1188 = { 0, 6, 0, 0, 0 }; + static cilist io___1183 = { 0, 6, 0, 0, 0 }; -#line 19378 "" +#line 19372 "" if (comcc_1.ncc[*iv - 1] == 1) { -#line 19379 "" +#line 19373 "" ret_val = comcc_1.ncmidcc[*iv - 1]; -#line 19380 "" +#line 19374 "" } else { -#line 19381 "" +#line 19375 "" xtime = all_2.to[comipl2_1.ipl2[commvl_1.ivx + *ip * 24 - 25] - 1]; -#line 19382 "" +#line 19376 "" for (icc = comcc_1.ncc[*iv - 1]; icc >= 1; --icc) { -#line 19383 "" +#line 19377 "" if (xtime > comcc_1.tcc[*iv + icc * 24 - 25] - comtol_1.tol) { -#line 19384 "" +#line 19378 "" ret_val = comcc_1.ncmidcc[*iv + icc * 24 - 25]; -#line 19385 "" +#line 19379 "" return ret_val; -#line 19386 "" +#line 19380 "" } -#line 19387 "" +#line 19381 "" /* L1: */ -#line 19387 "" +#line 19381 "" } -#line 19388 "" - s_wsle(&io___1188); -#line 19388 "" +#line 19382 "" + s_wsle(&io___1183); +#line 19382 "" do_lio(&c__9, &c__1, "Problem in ncmid()", (ftnlen)18); -#line 19388 "" +#line 19382 "" e_wsle(); -#line 19389 "" +#line 19383 "" s_stop("", (ftnlen)0); -#line 19390 "" +#line 19384 "" } -#line 19391 "" +#line 19385 "" return ret_val; } /* ncmid_ */ @@ -46190,21 +46126,21 @@ integer ncmidf_(char *clefq, ftnlen clefq_len) /* Return middle line of a clef */ -#line 19397 "" +#line 19391 "" if (*(unsigned char *)clefq == '8') { /* treblelowoct; will treat as treble for this purpose */ -#line 19401 "" +#line 19395 "" ret_val = 35; -#line 19402 "" +#line 19396 "" } else { -#line 19403 "" +#line 19397 "" ret_val = (i_indx(" b6r5n4a3m2s1t0f7", clefq, (ftnlen)17, (ftnlen)1) / 2 << 1) + 21; -#line 19404 "" +#line 19398 "" } -#line 19405 "" +#line 19399 "" return ret_val; } /* ncmidf_ */ @@ -46214,60 +46150,60 @@ integer ncmidf_(char *clefq, ftnlen clefq_len) static integer j; extern integer ncmidf_(char *, ftnlen); -#line 19428 "" +#line 19422 "" commvl_1.nvmx[*jv - 1] = 1; -#line 19429 "" +#line 19423 "" commvl_1.ivmx[*jv - 1] = *jv; -#line 19430 "" +#line 19424 "" all_1.itsofar[*jv - 1] = 0; -#line 19431 "" +#line 19425 "" all_1.nnl[*jv - 1] = 0; -#line 19432 "" +#line 19426 "" comfb_1.nfb[*jv - 1] = 0; -#line 19433 "" +#line 19427 "" if (all_1.firstgulp || *change) { -#line 19434 "" +#line 19428 "" comcc_1.ncmidcc[*jv - 1] = ncmidf_(clefq, (ftnlen)1); -#line 19435 "" +#line 19429 "" } else { -#line 19436 "" +#line 19430 "" comcc_1.ncmidcc[*jv - 1] = comcc_1.ncmidcc[*jv + comcc_1.ncc[*jv - 1] * 24 - 25]; -#line 19437 "" +#line 19431 "" } -#line 19438 "" +#line 19432 "" comcc_1.tcc[*jv - 1] = 0.f; -#line 19439 "" +#line 19433 "" comcc_1.ncc[*jv - 1] = 1; -#line 19440 "" +#line 19434 "" comudsp_1.nudoff[*jv - 1] = 0; -#line 19441 "" +#line 19435 "" comcc_1.ndotmv[*jv - 1] = 0; -#line 19442 "" +#line 19436 "" for (j = 1; j <= 200; ++j) { -#line 19443 "" +#line 19437 "" all_1.irest[*jv + j * 24 - 25] = 0; -#line 19444 "" +#line 19438 "" all_1.islur[*jv + j * 24 - 25] = 0; -#line 19445 "" +#line 19439 "" all_1.ipl[*jv + j * 24 - 25] = 0; -#line 19446 "" +#line 19440 "" all_1.nacc[*jv + j * 24 - 25] = 0; -#line 19447 "" +#line 19441 "" all_1.iornq[*jv + j * 24 - 1] = 0; -#line 19448 "" +#line 19442 "" all_1.mult[*jv + j * 24 - 25] = 0; -#line 19449 "" +#line 19443 "" if (*jv <= 2) { -#line 19449 "" +#line 19443 "" all_1.isfig[*jv + (j << 1) - 3] = FALSE_; -#line 19449 "" +#line 19443 "" } -#line 19450 "" +#line 19444 "" /* L5: */ -#line 19450 "" +#line 19444 "" } -#line 19451 "" +#line 19445 "" return 0; } /* newvoice_ */ @@ -46294,118 +46230,118 @@ integer ncmidf_(char *clefq, ftnlen clefq_len) /* Returns name of note level with octave transpositions, updates noctup. */ -#line 19460 "" +#line 19454 "" nupfroma = (*nolev + 1) % 7; -#line 19461 "" +#line 19455 "" iname = nupfroma + 97; -#line 19462 "" +#line 19456 "" ioctup = (*nolev + 1) / 7 - 4; -#line 19463 "" +#line 19457 "" chax_(ch__1, (ftnlen)1, &iname); -#line 19463 "" +#line 19457 "" *(unsigned char *)noteqt = *(unsigned char *)&ch__1[0]; -#line 19464 "" +#line 19458 "" if (*ncmid == 23) { -#line 19464 "" +#line 19458 "" upcaseq_(ch__1, (ftnlen)1, noteqt, (ftnlen)1); -#line 19464 "" +#line 19458 "" *(unsigned char *)noteqt = *(unsigned char *)&ch__1[0]; -#line 19464 "" +#line 19458 "" } -#line 19465 "" +#line 19459 "" if (ioctup == comoct_1.noctup) { -#line 19466 "" +#line 19460 "" s_copy(noteq, noteqt, (ftnlen)8, (ftnlen)1); -#line 19467 "" +#line 19461 "" *lnote = 1; /* Must ALWAYS check if lnote=1 for use with functions requiring a blank */ -#line 19471 "" +#line 19465 "" } else if (ioctup > comoct_1.noctup) { /* Raise octave. Encase in {} */ -#line 19475 "" +#line 19469 "" ici__1.icierr = 0; -#line 19475 "" +#line 19469 "" ici__1.icirnum = 1; -#line 19475 "" +#line 19469 "" ici__1.icirlen = 8; -#line 19475 "" +#line 19469 "" ici__1.iciunit = noteq; -#line 19475 "" +#line 19469 "" ici__1.icifmt = "(8a1)"; -#line 19475 "" +#line 19469 "" s_wsfi(&ici__1); -#line 19475 "" +#line 19469 "" do_fio(&c__1, "{", (ftnlen)1); -#line 19475 "" +#line 19469 "" i__1 = ioctup - 1; -#line 19475 "" +#line 19469 "" for (i__ = comoct_1.noctup; i__ <= i__1; ++i__) { -#line 19475 "" +#line 19469 "" chax_(ch__2, (ftnlen)1, &c__39); -#line 19475 "" +#line 19469 "" *(unsigned char *)&ch__1[0] = *(unsigned char *)&ch__2[0]; -#line 19475 "" +#line 19469 "" do_fio(&c__1, ch__1, (ftnlen)1); -#line 19475 "" +#line 19469 "" } -#line 19475 "" +#line 19469 "" do_fio(&c__1, noteqt, (ftnlen)1); -#line 19475 "" +#line 19469 "" do_fio(&c__1, "}", (ftnlen)1); -#line 19475 "" +#line 19469 "" e_wsfi(); -#line 19477 "" +#line 19471 "" *lnote = ioctup + 3 - comoct_1.noctup; -#line 19478 "" +#line 19472 "" comoct_1.noctup = ioctup; -#line 19479 "" +#line 19473 "" } else { /* Lower octave */ -#line 19483 "" +#line 19477 "" ici__1.icierr = 0; -#line 19483 "" +#line 19477 "" ici__1.icirnum = 1; -#line 19483 "" +#line 19477 "" ici__1.icirlen = 8; -#line 19483 "" +#line 19477 "" ici__1.iciunit = noteq; -#line 19483 "" +#line 19477 "" ici__1.icifmt = "(8a1)"; -#line 19483 "" +#line 19477 "" s_wsfi(&ici__1); -#line 19483 "" +#line 19477 "" do_fio(&c__1, "{", (ftnlen)1); -#line 19483 "" +#line 19477 "" i__1 = comoct_1.noctup - 1; -#line 19483 "" +#line 19477 "" for (i__ = ioctup; i__ <= i__1; ++i__) { -#line 19483 "" +#line 19477 "" chax_(ch__2, (ftnlen)1, &c__96); -#line 19483 "" +#line 19477 "" *(unsigned char *)&ch__1[0] = *(unsigned char *)&ch__2[0]; -#line 19483 "" +#line 19477 "" do_fio(&c__1, ch__1, (ftnlen)1); -#line 19483 "" +#line 19477 "" } -#line 19483 "" +#line 19477 "" do_fio(&c__1, noteqt, (ftnlen)1); -#line 19483 "" +#line 19477 "" do_fio(&c__1, "}", (ftnlen)1); -#line 19483 "" +#line 19477 "" e_wsfi(); -#line 19485 "" +#line 19479 "" *lnote = comoct_1.noctup + 3 - ioctup; -#line 19486 "" +#line 19480 "" comoct_1.noctup = ioctup; -#line 19487 "" +#line 19481 "" } -#line 19488 "" +#line 19482 "" return 0; } /* notefq_ */ @@ -46448,114 +46384,144 @@ integer ncmidf_(char *clefq, ftnlen clefq_len) static integer lnoten; /* Fortran I/O blocks */ - static icilist io___1207 = { 0, noteq, 0, "(i2)", 2, 1 }; - static icilist io___1211 = { 0, numq, 0, "(i2)", 2, 1 }; - static icilist io___1212 = { 0, noteq+1, 0, "(i2)", 2, 1 }; - static icilist io___1213 = { 0, noteq+1, 0, "(i3)", 3, 1 }; + static icilist io___1202 = { 0, noteq, 0, "(i2)", 2, 1 }; + static icilist io___1206 = { 0, numq, 0, "(i2)", 2, 1 }; + static icilist io___1207 = { 0, noteq+1, 0, "(i2)", 2, 1 }; + static icilist io___1208 = { 0, noteq+1, 0, "(i3)", 3, 1 }; /* Returns non-beamed full note name */ -#line 19518 "" +#line 19512 "" ip = all_1.ipo[all_1.jn - 1]; -#line 19519 "" +#line 19513 "" nole = all_1.nolev[commvl_1.ivx + ip * 24 - 25]; /* Check for special situations with 2nds (see precrd) */ -#line 19523 "" +#line 19517 "" if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],30)) { -#line 19524 "" +#line 19518 "" --nole; -#line 19525 "" +#line 19519 "" } else if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],31)) { -#line 19526 "" +#line 19520 "" ++nole; -#line 19527 "" +#line 19521 "" } -#line 19528 "" +#line 19522 "" nodu = all_1.nodur[commvl_1.ivx + ip * 24 - 25]; -#line 19529 "" +#line 19523 "" if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { -#line 19530 "" +#line 19524 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 19530 "" +#line 19524 "" udqq_(ch__1, (ftnlen)1, &nole, &i__1, &all_1.islur[commvl_1.ivx + ip * 24 - 25], &commvl_1.nvmx[all_1.iv - 1], &commvl_1.ivx, & all_1.nv); -#line 19530 "" +#line 19524 "" *(unsigned char *)udq = *(unsigned char *)&ch__1[0]; -#line 19532 "" +#line 19526 "" } /* Check figure level */ /* if (figbass .and. isfig(ivx,ip) */ /* * .and. .not.btest(irest(ivx,ip),0)) then */ -#line 19538 "" +#line 19532 "" if (all_1.figbass && ! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25], 0) && (commvl_1.ivx == 1 && all_1.isfig[(ip << 1) - 2] || commvl_1.ivx == comfig_1.ivxfig2 && all_1.isfig[(ip << 1) - 1])) { -#line 19541 "" +#line 19535 "" if (*(unsigned char *)udq == 'u' || nodu >= 64) { /* Upper or no stem, fnole (in noleunits) set by notehead */ -#line 19545 "" +#line 19539 "" fnole = (real) nole; -#line 19546 "" +#line 19540 "" } else { /* Lower stem, fnole set by bottom of stem */ -#line 19550 "" +#line 19544 "" fnole = nole - all_1.stemlen; -#line 19551 "" +#line 19545 "" } -#line 19552 "" +#line 19546 "" zmin = fnole - ncmid_(&commvl_1.ivx, &ip) + 4; -#line 19553 "" +#line 19547 "" if (commvl_1.ivx == 1) { /* Computing MAX */ -#line 19554 "" +#line 19548 "" r__1 = 4 - zmin; -#line 19554 "" +#line 19548 "" i__1 = all_1.ifigdr[(all_1.iline << 1) - 2], i__2 = i_nint(&r__1); -#line 19554 "" +#line 19548 "" all_1.ifigdr[(all_1.iline << 1) - 2] = max(i__1,i__2); -#line 19555 "" +#line 19549 "" } else { /* Computing MAX */ -#line 19556 "" +#line 19550 "" r__1 = 4 - zmin; -#line 19556 "" +#line 19550 "" i__1 = all_1.ifigdr[(all_1.iline << 1) - 1], i__2 = i_nint(&r__1); -#line 19556 "" +#line 19550 "" all_1.ifigdr[(all_1.iline << 1) - 1] = max(i__1,i__2); -#line 19557 "" +#line 19551 "" } -#line 19558 "" +#line 19552 "" } -#line 19559 "" +#line 19553 "" if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { -#line 19560 "" +#line 19554 "" i__1 = ncmid_(&all_1.iv, &ip); -#line 19560 "" +#line 19554 "" notefq_(noteq, &lnoten, &nole, &i__1, (ftnlen)8); -#line 19561 "" +#line 19555 "" if (lnoten == 1) { -#line 19561 "" +#line 19555 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 19561 "" +#line 19555 "" } -#line 19562 "" +#line 19556 "" if (nodu == 1) { /* Writing concatenation */ +#line 19557 "" + i__3[0] = 1, a__1[0] = all_1.sq; +#line 19557 "" + i__3[1] = 4, a__1[1] = "cccc"; +#line 19557 "" + i__3[2] = 1, a__1[2] = udq; +#line 19557 "" + i__3[3] = lnoten, a__1[3] = noteq; +#line 19557 "" + s_cat(notexq, a__1, i__3, &c__4, (ftnlen)79); +#line 19558 "" + *lnote = lnoten + 6; +#line 19559 "" + } else if (nodu == 2) { +/* Writing concatenation */ +#line 19560 "" + i__3[0] = 1, a__1[0] = all_1.sq; +#line 19560 "" + i__3[1] = 3, a__1[1] = "ccc"; +#line 19560 "" + i__3[2] = 1, a__1[2] = udq; +#line 19560 "" + i__3[3] = lnoten, a__1[3] = noteq; +#line 19560 "" + s_cat(notexq, a__1, i__3, &c__4, (ftnlen)79); +#line 19561 "" + *lnote = lnoten + 5; +#line 19562 "" + } else if (nodu == 4) { +/* Writing concatenation */ #line 19563 "" i__3[0] = 1, a__1[0] = all_1.sq; #line 19563 "" - i__3[1] = 4, a__1[1] = "cccc"; + i__3[1] = 2, a__1[1] = "cc"; #line 19563 "" i__3[2] = 1, a__1[2] = udq; #line 19563 "" @@ -46563,14 +46529,14 @@ integer ncmidf_(char *clefq, ftnlen clefq_len) #line 19563 "" s_cat(notexq, a__1, i__3, &c__4, (ftnlen)79); #line 19564 "" - *lnote = lnoten + 6; + *lnote = lnoten + 4; #line 19565 "" - } else if (nodu == 2) { + } else if (nodu == 8) { /* Writing concatenation */ #line 19566 "" i__3[0] = 1, a__1[0] = all_1.sq; #line 19566 "" - i__3[1] = 3, a__1[1] = "ccc"; + i__3[1] = 1, a__1[1] = "c"; #line 19566 "" i__3[2] = 1, a__1[2] = udq; #line 19566 "" @@ -46578,14 +46544,14 @@ integer ncmidf_(char *clefq, ftnlen clefq_len) #line 19566 "" s_cat(notexq, a__1, i__3, &c__4, (ftnlen)79); #line 19567 "" - *lnote = lnoten + 5; + *lnote = lnoten + 3; #line 19568 "" - } else if (nodu == 4) { + } else if (nodu == 16) { /* Writing concatenation */ #line 19569 "" i__3[0] = 1, a__1[0] = all_1.sq; #line 19569 "" - i__3[1] = 2, a__1[1] = "cc"; + i__3[1] = 1, a__1[1] = "q"; #line 19569 "" i__3[2] = 1, a__1[2] = udq; #line 19569 "" @@ -46593,14 +46559,14 @@ integer ncmidf_(char *clefq, ftnlen clefq_len) #line 19569 "" s_cat(notexq, a__1, i__3, &c__4, (ftnlen)79); #line 19570 "" - *lnote = lnoten + 4; + *lnote = lnoten + 3; #line 19571 "" - } else if (nodu == 8) { + } else if (nodu == 32) { /* Writing concatenation */ #line 19572 "" i__3[0] = 1, a__1[0] = all_1.sq; #line 19572 "" - i__3[1] = 1, a__1[1] = "c"; + i__3[1] = 1, a__1[1] = "h"; #line 19572 "" i__3[2] = 1, a__1[2] = udq; #line 19572 "" @@ -46610,818 +46576,788 @@ integer ncmidf_(char *clefq, ftnlen clefq_len) #line 19573 "" *lnote = lnoten + 3; #line 19574 "" - } else if (nodu == 16) { + } else if (nodu == 64) { /* Writing concatenation */ #line 19575 "" - i__3[0] = 1, a__1[0] = all_1.sq; -#line 19575 "" - i__3[1] = 1, a__1[1] = "q"; + i__4[0] = 1, a__2[0] = all_1.sq; #line 19575 "" - i__3[2] = 1, a__1[2] = udq; + i__4[1] = 2, a__2[1] = "wh"; #line 19575 "" - i__3[3] = lnoten, a__1[3] = noteq; + i__4[2] = lnoten, a__2[2] = noteq; #line 19575 "" - s_cat(notexq, a__1, i__3, &c__4, (ftnlen)79); + s_cat(notexq, a__2, i__4, &c__3, (ftnlen)79); #line 19576 "" *lnote = lnoten + 3; #line 19577 "" - } else if (nodu == 32) { -/* Writing concatenation */ -#line 19578 "" - i__3[0] = 1, a__1[0] = all_1.sq; -#line 19578 "" - i__3[1] = 1, a__1[1] = "h"; -#line 19578 "" - i__3[2] = 1, a__1[2] = udq; -#line 19578 "" - i__3[3] = lnoten, a__1[3] = noteq; -#line 19578 "" - s_cat(notexq, a__1, i__3, &c__4, (ftnlen)79); -#line 19579 "" - *lnote = lnoten + 3; -#line 19580 "" - } else if (nodu == 64) { -/* Writing concatenation */ -#line 19581 "" - i__4[0] = 1, a__2[0] = all_1.sq; -#line 19581 "" - i__4[1] = 2, a__2[1] = "wh"; -#line 19581 "" - i__4[2] = lnoten, a__2[2] = noteq; -#line 19581 "" - s_cat(notexq, a__2, i__4, &c__3, (ftnlen)79); -#line 19582 "" - *lnote = lnoten + 3; -#line 19583 "" } else if (nodu == 128) { /* notexq =sq//'zbreve'//noteq(1:lnoten)//sq//'sk' */ /* lnote = lnoten+10 */ /* Writing concatenation */ -#line 19586 "" +#line 19580 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 19586 "" +#line 19580 "" i__4[1] = 5, a__2[1] = "breve"; -#line 19586 "" +#line 19580 "" i__4[2] = lnoten, a__2[2] = noteq; -#line 19586 "" +#line 19580 "" s_cat(notexq, a__2, i__4, &c__3, (ftnlen)79); -#line 19587 "" +#line 19581 "" *lnote = lnoten + 6; -#line 19588 "" +#line 19582 "" } else { -#line 19589 "" +#line 19583 "" s_copy(dotq, "p", (ftnlen)4, (ftnlen)1); -#line 19590 "" +#line 19584 "" ldot = 1; -#line 19591 "" +#line 19585 "" if (bit_test(all_1.iornq[commvl_1.ivx + ip * 24 - 1],13)) { /* Dotted note with ')' ornament */ -#line 19595 "" +#line 19589 "" s_copy(dotq, "m", (ftnlen)4, (ftnlen)1); -#line 19596 "" +#line 19590 "" } else if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],3)) { /* Double dot */ -#line 19600 "" +#line 19594 "" s_copy(dotq, "pp", (ftnlen)4, (ftnlen)2); -#line 19601 "" +#line 19595 "" ldot = 2; -#line 19602 "" +#line 19596 "" } -#line 19603 "" +#line 19597 "" if (nodu >= 192) { /* Writing concatenation */ -#line 19604 "" +#line 19598 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 19604 "" +#line 19598 "" i__3[1] = 5, a__1[1] = "breve"; -#line 19604 "" +#line 19598 "" i__3[2] = ldot, a__1[2] = dotq; -#line 19604 "" +#line 19598 "" i__3[3] = lnoten, a__1[3] = noteq; -#line 19604 "" +#line 19598 "" s_cat(notexq, a__1, i__3, &c__4, (ftnlen)79); -#line 19605 "" +#line 19599 "" *lnote = lnoten + 6 + ldot; -#line 19606 "" +#line 19600 "" } else if (nodu >= 96) { /* Writing concatenation */ -#line 19607 "" +#line 19601 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 19607 "" +#line 19601 "" i__3[1] = 2, a__1[1] = "wh"; -#line 19607 "" +#line 19601 "" i__3[2] = ldot, a__1[2] = dotq; -#line 19607 "" +#line 19601 "" i__3[3] = lnoten, a__1[3] = noteq; -#line 19607 "" +#line 19601 "" s_cat(notexq, a__1, i__3, &c__4, (ftnlen)79); -#line 19608 "" +#line 19602 "" *lnote = lnoten + 3 + ldot; -#line 19609 "" +#line 19603 "" } else if (nodu >= 48) { /* Writing concatenation */ -#line 19610 "" +#line 19604 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 19610 "" +#line 19604 "" i__5[1] = 1, a__3[1] = "h"; -#line 19610 "" +#line 19604 "" i__5[2] = 1, a__3[2] = udq; -#line 19610 "" +#line 19604 "" i__5[3] = ldot, a__3[3] = dotq; -#line 19610 "" +#line 19604 "" i__5[4] = lnoten, a__3[4] = noteq; -#line 19610 "" +#line 19604 "" s_cat(notexq, a__3, i__5, &c__5, (ftnlen)79); -#line 19611 "" +#line 19605 "" *lnote = lnoten + 3 + ldot; -#line 19612 "" +#line 19606 "" } else if (nodu >= 24) { /* Writing concatenation */ -#line 19613 "" +#line 19607 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 19613 "" +#line 19607 "" i__5[1] = 1, a__3[1] = "q"; -#line 19613 "" +#line 19607 "" i__5[2] = 1, a__3[2] = udq; -#line 19613 "" +#line 19607 "" i__5[3] = ldot, a__3[3] = dotq; -#line 19613 "" +#line 19607 "" i__5[4] = lnoten, a__3[4] = noteq; -#line 19613 "" +#line 19607 "" s_cat(notexq, a__3, i__5, &c__5, (ftnlen)79); -#line 19614 "" +#line 19608 "" *lnote = lnoten + 3 + ldot; -#line 19615 "" +#line 19609 "" } else if (nodu >= 12) { /* Writing concatenation */ -#line 19616 "" +#line 19610 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 19616 "" +#line 19610 "" i__5[1] = 1, a__3[1] = "c"; -#line 19616 "" +#line 19610 "" i__5[2] = 1, a__3[2] = udq; -#line 19616 "" +#line 19610 "" i__5[3] = ldot, a__3[3] = dotq; -#line 19616 "" +#line 19610 "" i__5[4] = lnoten, a__3[4] = noteq; -#line 19616 "" +#line 19610 "" s_cat(notexq, a__3, i__5, &c__5, (ftnlen)79); -#line 19617 "" +#line 19611 "" *lnote = lnoten + 3 + ldot; -#line 19618 "" +#line 19612 "" } else if (nodu >= 6) { /* Writing concatenation */ -#line 19619 "" +#line 19613 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 19619 "" +#line 19613 "" i__5[1] = 2, a__3[1] = "cc"; -#line 19619 "" +#line 19613 "" i__5[2] = 1, a__3[2] = udq; -#line 19619 "" +#line 19613 "" i__5[3] = ldot, a__3[3] = dotq; -#line 19619 "" +#line 19613 "" i__5[4] = lnoten, a__3[4] = noteq; -#line 19619 "" +#line 19613 "" s_cat(notexq, a__3, i__5, &c__5, (ftnlen)79); -#line 19620 "" +#line 19614 "" *lnote = lnoten + 4 + ldot; -#line 19621 "" +#line 19615 "" compoi_1.ispoi = TRUE_; -#line 19622 "" +#line 19616 "" } else { /* Writing concatenation */ -#line 19623 "" +#line 19617 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 19623 "" +#line 19617 "" i__5[1] = 3, a__3[1] = "ccc"; -#line 19623 "" +#line 19617 "" i__5[2] = 1, a__3[2] = udq; -#line 19623 "" +#line 19617 "" i__5[3] = ldot, a__3[3] = dotq; -#line 19623 "" +#line 19617 "" i__5[4] = lnoten, a__3[4] = noteq; -#line 19623 "" +#line 19617 "" s_cat(notexq, a__3, i__5, &c__5, (ftnlen)79); -#line 19624 "" +#line 19618 "" *lnote = lnoten + 5 + ldot; -#line 19625 "" +#line 19619 "" compoi_1.ispoi = TRUE_; -#line 19626 "" +#line 19620 "" } -#line 19627 "" +#line 19621 "" if (*(unsigned char *)dotq == 'm') { /* Need another call to the note, in case the first one has octave shifts */ -#line 19631 "" +#line 19625 "" if (lnoten == 2) { /* Writing concatenation */ -#line 19632 "" +#line 19626 "" i__3[0] = *lnote, a__1[0] = notexq; -#line 19632 "" +#line 19626 "" i__3[1] = 1, a__1[1] = "{"; -#line 19632 "" +#line 19626 "" i__3[2] = 1, a__1[2] = noteq + 1; -#line 19632 "" +#line 19626 "" i__3[3] = 1, a__1[3] = "}"; -#line 19632 "" +#line 19626 "" s_cat(notexq, a__1, i__3, &c__4, (ftnlen)79); -#line 19633 "" +#line 19627 "" *lnote += 3; -#line 19634 "" +#line 19628 "" } else { -#line 19635 "" +#line 19629 "" i__1 = lnoten - 2; /* Writing concatenation */ -#line 19635 "" +#line 19629 "" i__6[0] = *lnote, a__4[0] = notexq; -#line 19635 "" +#line 19629 "" i__6[1] = lnoten - 1 - i__1, a__4[1] = noteq + i__1; -#line 19635 "" +#line 19629 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19636 "" +#line 19630 "" ++(*lnote); -#line 19637 "" +#line 19631 "" } -#line 19638 "" +#line 19632 "" } -#line 19639 "" +#line 19633 "" } -#line 19640 "" +#line 19634 "" } else if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],29)) { /* Blank rest */ /* Writing concatenation */ -#line 19644 "" +#line 19638 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19644 "" +#line 19638 "" i__6[1] = 2, a__4[1] = "sk"; -#line 19644 "" +#line 19638 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19645 "" +#line 19639 "" *lnote = 3; -#line 19646 "" +#line 19640 "" } else { /* Non-blank rest */ -#line 19650 "" +#line 19644 "" *lnote = 0; -#line 19651 "" +#line 19645 "" nole = (nole + 20) % 100 - 20; /* Kluge to get pause symbol for rp: */ -#line 19655 "" +#line 19649 "" if (bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25],19)) { -#line 19655 "" +#line 19649 "" nodu = 64; -#line 19655 "" +#line 19649 "" } -#line 19656 "" +#line 19650 "" if (nodu <= 28) { /* Normal rest < or = double-dotted quarter */ -#line 19660 "" +#line 19654 "" lrest = 3; -#line 19661 "" +#line 19655 "" if (nodu > 14) { /* Writing concatenation */ -#line 19662 "" +#line 19656 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19662 "" +#line 19656 "" i__6[1] = 2, a__4[1] = "qp"; -#line 19662 "" +#line 19656 "" s_cat(restq, a__4, i__6, &c__2, (ftnlen)40); -#line 19663 "" +#line 19657 "" } else if (nodu > 7) { /* Writing concatenation */ -#line 19664 "" +#line 19658 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19664 "" +#line 19658 "" i__6[1] = 2, a__4[1] = "ds"; -#line 19664 "" +#line 19658 "" s_cat(restq, a__4, i__6, &c__2, (ftnlen)40); -#line 19665 "" +#line 19659 "" } else if (nodu > 3) { /* Writing concatenation */ -#line 19666 "" +#line 19660 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19666 "" +#line 19660 "" i__6[1] = 2, a__4[1] = "qs"; -#line 19666 "" +#line 19660 "" s_cat(restq, a__4, i__6, &c__2, (ftnlen)40); -#line 19667 "" +#line 19661 "" } else if (nodu > 1) { /* Writing concatenation */ -#line 19668 "" +#line 19662 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19668 "" +#line 19662 "" i__6[1] = 2, a__4[1] = "hs"; -#line 19668 "" +#line 19662 "" s_cat(restq, a__4, i__6, &c__2, (ftnlen)40); -#line 19669 "" +#line 19663 "" } else { /* Writing concatenation */ -#line 19670 "" +#line 19664 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19670 "" +#line 19664 "" i__6[1] = 3, a__4[1] = "qqs"; -#line 19670 "" +#line 19664 "" s_cat(restq, a__4, i__6, &c__2, (ftnlen)40); -#line 19671 "" +#line 19665 "" lrest = 4; -#line 19672 "" +#line 19666 "" } /* Special case for rest at start of F-tuplet inside a forced beam */ -#line 19676 "" +#line 19670 "" if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],18) && bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],19)) { /* Writing concatenation */ -#line 19678 "" +#line 19672 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 19678 "" +#line 19672 "" i__4[1] = 3, a__2[1] = "pt4"; -#line 19678 "" +#line 19672 "" i__4[2] = lrest, a__2[2] = restq; -#line 19678 "" +#line 19672 "" s_cat(restq, a__2, i__4, &c__3, (ftnlen)40); -#line 19679 "" +#line 19673 "" lrest += 4; -#line 19680 "" +#line 19674 "" } -#line 19681 "" +#line 19675 "" s_copy(notexq, restq, (ftnlen)79, (ftnlen)40); -#line 19682 "" +#line 19676 "" *lnote = lrest; /* At this point notexq=restq,lnote=lrest are name of rest. Now raise if necc. */ -#line 19686 "" +#line 19680 "" if (nole != 0) { -#line 19687 "" +#line 19681 "" if (abs(nole) < 10) { -#line 19688 "" +#line 19682 "" i__1 = abs(nole) + 48; -#line 19688 "" +#line 19682 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 19688 "" +#line 19682 "" s_copy(noteq, ch__1, (ftnlen)8, (ftnlen)1); -#line 19689 "" +#line 19683 "" lnoten = 1; -#line 19690 "" +#line 19684 "" } else { -#line 19691 "" - s_wsfi(&io___1207); -#line 19691 "" +#line 19685 "" + s_wsfi(&io___1202); +#line 19685 "" i__1 = abs(nole); -#line 19691 "" +#line 19685 "" do_fio(&c__1, (char *)&i__1, (ftnlen)sizeof(integer)); -#line 19691 "" +#line 19685 "" e_wsfi(); -#line 19692 "" +#line 19686 "" lnoten = 2; -#line 19693 "" +#line 19687 "" } -#line 19694 "" +#line 19688 "" if (nole > 0) { /* Writing concatenation */ -#line 19695 "" +#line 19689 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 19695 "" +#line 19689 "" i__5[1] = 5, a__3[1] = "raise"; -#line 19695 "" +#line 19689 "" i__5[2] = lnoten, a__3[2] = noteq; -#line 19695 "" +#line 19689 "" i__5[3] = 1, a__3[3] = all_1.sq; -#line 19695 "" +#line 19689 "" i__5[4] = 9, a__3[4] = "internote"; -#line 19695 "" +#line 19689 "" s_cat(notexq, a__3, i__5, &c__5, (ftnlen)79); -#line 19696 "" +#line 19690 "" } else { /* Writing concatenation */ -#line 19697 "" +#line 19691 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 19697 "" +#line 19691 "" i__5[1] = 5, a__3[1] = "lower"; -#line 19697 "" +#line 19691 "" i__5[2] = lnoten, a__3[2] = noteq; -#line 19697 "" +#line 19691 "" i__5[3] = 1, a__3[3] = all_1.sq; -#line 19697 "" +#line 19691 "" i__5[4] = 9, a__3[4] = "internote"; -#line 19697 "" +#line 19691 "" s_cat(notexq, a__3, i__5, &c__5, (ftnlen)79); -#line 19698 "" +#line 19692 "" } -#line 19699 "" +#line 19693 "" *lnote = lnoten + 16; /* Writing concatenation */ -#line 19700 "" +#line 19694 "" i__6[0] = *lnote, a__4[0] = notexq; -#line 19700 "" +#line 19694 "" i__6[1] = lrest, a__4[1] = restq; -#line 19700 "" +#line 19694 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19701 "" +#line 19695 "" *lnote += lrest; -#line 19702 "" +#line 19696 "" } -#line 19703 "" +#line 19697 "" i__1 = log2_(&nodu); -#line 19703 "" +#line 19697 "" if (pow_ii(&c__2, &i__1) != nodu) { /* Deal with dots (on rests shorter than half rest) */ /* Writing concatenation */ -#line 19707 "" +#line 19701 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19707 "" +#line 19701 "" i__6[1] = 2, a__4[1] = "pt"; -#line 19707 "" +#line 19701 "" s_cat(restq, a__4, i__6, &c__2, (ftnlen)40); -#line 19708 "" +#line 19702 "" lrest = 3; -#line 19709 "" +#line 19703 "" i__1 = log2_(&nodu); -#line 19709 "" +#line 19703 "" if (nodu << 1 > pow_ii(&c__2, &i__1) * 3) { /* Writing concatenation */ -#line 19710 "" +#line 19704 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19710 "" +#line 19704 "" i__6[1] = 3, a__4[1] = "ppt"; -#line 19710 "" +#line 19704 "" s_cat(restq, a__4, i__6, &c__2, (ftnlen)40); -#line 19711 "" +#line 19705 "" lrest = 4; -#line 19712 "" +#line 19706 "" } -#line 19713 "" +#line 19707 "" nole += 4; -#line 19714 "" +#line 19708 "" raisedot = 0.f; /* Tweak dot positions for special cases */ -#line 19718 "" +#line 19712 "" even = (nole + 100) % 2 == 0; /* if (.not.even.and.nodu.gt.8.and. */ /* * (nole.lt.0.or.nole.gt.8)) then */ -#line 19721 "" +#line 19715 "" if (! even && (nole < 0 || nole > 8)) { -#line 19722 "" +#line 19716 "" raisedot = 1.f; -#line 19723 "" +#line 19717 "" } -#line 19724 "" +#line 19718 "" if (nole >= 10 || nole <= -1) { -#line 19725 "" - s_wsfi(&io___1211); -#line 19725 "" +#line 19719 "" + s_wsfi(&io___1206); +#line 19719 "" do_fio(&c__1, (char *)&nole, (ftnlen)sizeof(integer)); -#line 19725 "" +#line 19719 "" e_wsfi(); /* Writing concatenation */ -#line 19726 "" +#line 19720 "" i__3[0] = lrest, a__1[0] = restq; -#line 19726 "" +#line 19720 "" i__3[1] = 1, a__1[1] = "{"; -#line 19726 "" +#line 19720 "" i__3[2] = 2, a__1[2] = numq; -#line 19726 "" +#line 19720 "" i__3[3] = 1, a__1[3] = "}"; -#line 19726 "" +#line 19720 "" s_cat(restq, a__1, i__3, &c__4, (ftnlen)40); -#line 19727 "" +#line 19721 "" lrest += 4; -#line 19728 "" +#line 19722 "" } else { /* Writing concatenation */ -#line 19729 "" +#line 19723 "" i__6[0] = lrest, a__4[0] = restq; -#line 19729 "" +#line 19723 "" i__1 = nole + 48; -#line 19729 "" +#line 19723 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 19729 "" +#line 19723 "" i__6[1] = 1, a__4[1] = ch__1; -#line 19729 "" +#line 19723 "" s_cat(restq, a__4, i__6, &c__2, (ftnlen)40); -#line 19730 "" +#line 19724 "" ++lrest; -#line 19731 "" +#line 19725 "" } -#line 19732 "" +#line 19726 "" if (raisedot > 0.f) { /* Writing concatenation */ -#line 19733 "" +#line 19727 "" i__7[0] = 1, a__5[0] = all_1.sq; -#line 19733 "" +#line 19727 "" i__7[1] = 5, a__5[1] = "raise"; -#line 19733 "" +#line 19727 "" i__7[2] = 1, a__5[2] = all_1.sq; -#line 19733 "" +#line 19727 "" i__7[3] = 9, a__5[3] = "internote"; -#line 19733 "" +#line 19727 "" i__7[4] = 1, a__5[4] = all_1.sq; -#line 19733 "" +#line 19727 "" i__7[5] = 5, a__5[5] = "hbox{"; -#line 19733 "" +#line 19727 "" i__7[6] = lrest, a__5[6] = restq; -#line 19733 "" +#line 19727 "" i__7[7] = 1, a__5[7] = "}"; -#line 19733 "" +#line 19727 "" s_cat(restq, a__5, i__7, &c__8, (ftnlen)40); -#line 19735 "" +#line 19729 "" lrest += 23; -#line 19736 "" +#line 19730 "" } /* Writing concatenation */ -#line 19737 "" +#line 19731 "" i__6[0] = lrest, a__4[0] = restq; -#line 19737 "" +#line 19731 "" i__6[1] = *lnote, a__4[1] = notexq; -#line 19737 "" +#line 19731 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19738 "" +#line 19732 "" *lnote += lrest; -#line 19739 "" +#line 19733 "" } -#line 19740 "" +#line 19734 "" } else { /* Half rest or longer */ -#line 19744 "" +#line 19738 "" if (nole == 0) { /* Half or longer rest is not raised or lowered */ -#line 19748 "" +#line 19742 "" if (nodu <= 56) { /* Writing concatenation */ -#line 19749 "" +#line 19743 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19749 "" +#line 19743 "" i__6[1] = 6, a__4[1] = "hpause"; -#line 19749 "" +#line 19743 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19750 "" +#line 19744 "" *lnote = 7; -#line 19751 "" +#line 19745 "" } else if (nodu <= 112) { -#line 19752 "" +#line 19746 "" if (! bit_test(all_1.islur[commvl_1.ivx + ip * 24 - 25], 19) || bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],25)) { /* Writing concatenation */ -#line 19754 "" +#line 19748 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19754 "" +#line 19748 "" i__6[1] = 5, a__4[1] = "pause"; -#line 19754 "" +#line 19748 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19755 "" +#line 19749 "" } else { /* Writing concatenation */ -#line 19756 "" +#line 19750 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19756 "" +#line 19750 "" i__6[1] = 5, a__4[1] = "pausc"; -#line 19756 "" +#line 19750 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19757 "" +#line 19751 "" } -#line 19758 "" +#line 19752 "" *lnote = 6; -#line 19759 "" +#line 19753 "" } else { /* Writing concatenation */ -#line 19760 "" +#line 19754 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19760 "" +#line 19754 "" i__6[1] = 5, a__4[1] = "PAuse"; -#line 19760 "" +#line 19754 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19761 "" +#line 19755 "" *lnote = 6; -#line 19762 "" +#line 19756 "" } -#line 19763 "" +#line 19757 "" i__1 = log2_(&nodu); -#line 19763 "" +#line 19757 "" if (pow_ii(&c__2, &i__1) != nodu) { /* Dotted rest, hpause or longer */ /* Writing concatenation */ -#line 19767 "" +#line 19761 "" i__6[0] = *lnote, a__4[0] = notexq; -#line 19767 "" +#line 19761 "" i__6[1] = 1, a__4[1] = "p"; -#line 19767 "" +#line 19761 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19768 "" +#line 19762 "" ++(*lnote); -#line 19769 "" +#line 19763 "" i__1 = log2_(&nodu); -#line 19769 "" +#line 19763 "" if (nodu << 1 > pow_ii(&c__2, &i__1) * 3) { /* Double dotted long rest */ /* Writing concatenation */ -#line 19773 "" +#line 19767 "" i__6[0] = *lnote, a__4[0] = notexq; -#line 19773 "" +#line 19767 "" i__6[1] = 1, a__4[1] = "p"; -#line 19773 "" +#line 19767 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19774 "" +#line 19768 "" ++(*lnote); -#line 19775 "" +#line 19769 "" } -#line 19776 "" +#line 19770 "" } -#line 19777 "" +#line 19771 "" } else { /* Raised or lowered half or whole rest */ -#line 19781 "" +#line 19775 "" if (nodu == 32) { /* Writing concatenation */ -#line 19782 "" +#line 19776 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19782 "" +#line 19776 "" i__6[1] = 10, a__4[1] = "lifthpause"; -#line 19782 "" +#line 19776 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19783 "" +#line 19777 "" *lnote = 11; -#line 19784 "" +#line 19778 "" } else if (nodu == 48) { /* Writing concatenation */ -#line 19785 "" +#line 19779 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19785 "" +#line 19779 "" i__6[1] = 11, a__4[1] = "lifthpausep"; -#line 19785 "" +#line 19779 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19786 "" +#line 19780 "" *lnote = 12; -#line 19787 "" +#line 19781 "" } else if (nodu == 56) { /* Writing concatenation */ -#line 19788 "" +#line 19782 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19788 "" +#line 19782 "" i__6[1] = 12, a__4[1] = "lifthpausepp"; -#line 19788 "" +#line 19782 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19789 "" +#line 19783 "" *lnote = 13; -#line 19790 "" +#line 19784 "" } else if (nodu == 64) { /* Writing concatenation */ -#line 19791 "" +#line 19785 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19791 "" +#line 19785 "" i__6[1] = 9, a__4[1] = "liftpause"; -#line 19791 "" +#line 19785 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19792 "" +#line 19786 "" *lnote = 10; -#line 19793 "" +#line 19787 "" } else if (nodu == 96) { /* Writing concatenation */ -#line 19794 "" +#line 19788 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19794 "" +#line 19788 "" i__6[1] = 10, a__4[1] = "liftpausep"; -#line 19794 "" +#line 19788 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19795 "" +#line 19789 "" *lnote = 11; -#line 19796 "" +#line 19790 "" } else if (nodu == 112) { /* Writing concatenation */ -#line 19797 "" +#line 19791 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19797 "" +#line 19791 "" i__6[1] = 11, a__4[1] = "liftpausepp"; -#line 19797 "" +#line 19791 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19798 "" +#line 19792 "" *lnote = 12; -#line 19799 "" +#line 19793 "" } else if (nodu == 128) { /* Writing concatenation */ -#line 19800 "" +#line 19794 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19800 "" +#line 19794 "" i__6[1] = 9, a__4[1] = "liftPAuse"; -#line 19800 "" +#line 19794 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19801 "" +#line 19795 "" *lnote = 10; -#line 19802 "" +#line 19796 "" } else { /* Assume dotted double whole rest */ /* Writing concatenation */ -#line 19806 "" +#line 19800 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 19806 "" +#line 19800 "" i__6[1] = 10, a__4[1] = "liftPAusep"; -#line 19806 "" +#line 19800 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19807 "" +#line 19801 "" *lnote = 11; -#line 19808 "" +#line 19802 "" } /* Set up height spec */ -#line 19812 "" +#line 19806 "" i__1 = abs(nole) / 2; -#line 19812 "" +#line 19806 "" nole = i_sign(&i__1, &nole); -#line 19813 "" +#line 19807 "" if (nole <= 9 && nole >= 0) { -#line 19814 "" +#line 19808 "" i__1 = nole + 48; -#line 19814 "" +#line 19808 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 19814 "" +#line 19808 "" s_copy(noteq, ch__1, (ftnlen)8, (ftnlen)1); -#line 19815 "" +#line 19809 "" lnoten = 1; -#line 19816 "" +#line 19810 "" } else { -#line 19817 "" +#line 19811 "" s_copy(noteq, "{", (ftnlen)8, (ftnlen)1); -#line 19818 "" +#line 19812 "" if (nole >= -9) { -#line 19819 "" - s_wsfi(&io___1212); -#line 19819 "" +#line 19813 "" + s_wsfi(&io___1207); +#line 19813 "" do_fio(&c__1, (char *)&nole, (ftnlen)sizeof(integer)); -#line 19819 "" +#line 19813 "" e_wsfi(); -#line 19820 "" +#line 19814 "" lnoten = 3; -#line 19821 "" +#line 19815 "" } else { -#line 19822 "" - s_wsfi(&io___1213); -#line 19822 "" +#line 19816 "" + s_wsfi(&io___1208); +#line 19816 "" do_fio(&c__1, (char *)&nole, (ftnlen)sizeof(integer)); -#line 19822 "" +#line 19816 "" e_wsfi(); -#line 19823 "" +#line 19817 "" lnoten = 4; -#line 19824 "" +#line 19818 "" } /* Writing concatenation */ -#line 19825 "" +#line 19819 "" i__6[0] = lnoten, a__4[0] = noteq; -#line 19825 "" +#line 19819 "" i__6[1] = 1, a__4[1] = "}"; -#line 19825 "" +#line 19819 "" s_cat(noteq, a__4, i__6, &c__2, (ftnlen)8); -#line 19826 "" +#line 19820 "" ++lnoten; -#line 19827 "" +#line 19821 "" } /* Writing concatenation */ -#line 19828 "" +#line 19822 "" i__6[0] = *lnote, a__4[0] = notexq; -#line 19828 "" +#line 19822 "" i__6[1] = lnoten, a__4[1] = noteq; -#line 19828 "" +#line 19822 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 19829 "" +#line 19823 "" *lnote += lnoten; -#line 19830 "" +#line 19824 "" } -#line 19831 "" +#line 19825 "" } -#line 19832 "" +#line 19826 "" } -#line 19833 "" +#line 19827 "" return 0; } /* notex_ */ @@ -47448,98 +47384,98 @@ integer ntindex_(char *line, char *s2q, integer *lenline, ftnlen line_len, /* Returns index(line,s2q) if NOT in TeX string, 0 otherwise */ -#line 19842 "" +#line 19836 "" ndxs2 = i_indx(line, s2q, line_len, s2q_len); -#line 19843 "" +#line 19837 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 19843 "" +#line 19837 "" ndxbs = i_indx(line, ch__1, line_len, (ftnlen)1); -#line 19844 "" +#line 19838 "" if (ndxbs == 0 || ndxs2 < ndxbs) { -#line 19845 "" +#line 19839 "" ret_val = ndxs2; -#line 19846 "" +#line 19840 "" } else { /* There are both bs and s2q, and bs is to the left of sq2. So check bs's to */ /* right of first: End is '\ ', start is ' \' */ -#line 19851 "" +#line 19845 "" len = lenstr_(line, lenline, line_len); -#line 19852 "" +#line 19846 "" intex = TRUE_; -#line 19853 "" +#line 19847 "" i__1 = len; -#line 19853 "" +#line 19847 "" for (ic = ndxbs + 1; ic <= i__1; ++ic) { -#line 19854 "" +#line 19848 "" if (ic == ndxs2) { -#line 19855 "" +#line 19849 "" if (intex) { -#line 19856 "" +#line 19850 "" ret_val = 0; -#line 19857 "" +#line 19851 "" i__2 = ic; -#line 19857 "" +#line 19851 "" ndxs2 = i_indx(line + i__2, s2q, len - i__2, s2q_len) + ic; -#line 19858 "" +#line 19852 "" } else { -#line 19859 "" +#line 19853 "" ret_val = ndxs2; -#line 19860 "" +#line 19854 "" return ret_val; -#line 19861 "" +#line 19855 "" } -#line 19862 "" +#line 19856 "" } else /* if(complicated condition) */ { -#line 19862 "" +#line 19856 "" i__2 = ic; /* Writing concatenation */ -#line 19862 "" +#line 19856 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 19862 "" +#line 19856 "" i__3[0] = 1, a__1[0] = ch__1; -#line 19862 "" +#line 19856 "" i__3[1] = 1, a__1[1] = " "; -#line 19862 "" +#line 19856 "" s_cat(ch__2, a__1, i__3, &c__2, (ftnlen)2); -#line 19862 "" +#line 19856 "" if (intex && s_cmp(line + i__2, ch__2, ic + 2 - i__2, (ftnlen) 2) == 0) { -#line 19863 "" +#line 19857 "" intex = FALSE_; -#line 19864 "" +#line 19858 "" } else /* if(complicated condition) */ { -#line 19864 "" +#line 19858 "" i__2 = ic; /* Writing concatenation */ -#line 19864 "" +#line 19858 "" i__3[0] = 1, a__1[0] = " "; -#line 19864 "" +#line 19858 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 19864 "" +#line 19858 "" i__3[1] = 1, a__1[1] = ch__1; -#line 19864 "" +#line 19858 "" s_cat(ch__2, a__1, i__3, &c__2, (ftnlen)2); -#line 19864 "" +#line 19858 "" if (! intex && s_cmp(line + i__2, ch__2, ic + 2 - i__2, ( ftnlen)2) == 0) { -#line 19866 "" +#line 19860 "" intex = TRUE_; -#line 19867 "" +#line 19861 "" } -#line 19867 "" +#line 19861 "" } -#line 19867 "" +#line 19861 "" } -#line 19868 "" +#line 19862 "" /* L1: */ -#line 19868 "" +#line 19862 "" } -#line 19869 "" +#line 19863 "" } -#line 19870 "" +#line 19864 "" return ret_val; } /* ntindex_ */ @@ -47566,56 +47502,56 @@ integer ntindex_(char *line, char *s2q, integer *lenline, ftnlen line_len, /* This appends to notexq e.g. '\ibbbu1' */ -#line 19881 "" +#line 19875 "" if (*n >= 5) { -#line 19881 "" +#line 19875 "" combbm_1.isbbm = TRUE_; -#line 19881 "" +#line 19875 "" } -#line 19882 "" +#line 19876 "" if (*lnote > 0) { /* Writing concatenation */ -#line 19883 "" +#line 19877 "" i__1[0] = *lnote, a__1[0] = notexq; -#line 19883 "" +#line 19877 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 19883 "" +#line 19877 "" i__1[1] = 1, a__1[1] = ch__1; -#line 19883 "" +#line 19877 "" i__1[2] = 1, a__1[2] = char1q; -#line 19883 "" +#line 19877 "" s_cat(notexq, a__1, i__1, &c__3, (ftnlen)79); -#line 19884 "" +#line 19878 "" } else { /* Writing concatenation */ -#line 19885 "" +#line 19879 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 19885 "" +#line 19879 "" i__2[0] = 1, a__2[0] = ch__1; -#line 19885 "" +#line 19879 "" i__2[1] = 1, a__2[1] = char1q; -#line 19885 "" +#line 19879 "" s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); -#line 19886 "" +#line 19880 "" } -#line 19887 "" +#line 19881 "" *lnote += 2; -#line 19888 "" +#line 19882 "" i__3 = *n; -#line 19888 "" +#line 19882 "" for (im = 1; im <= i__3; ++im) { /* Writing concatenation */ -#line 19889 "" +#line 19883 "" i__2[0] = *lnote, a__2[0] = notexq; -#line 19889 "" +#line 19883 "" i__2[1] = 1, a__2[1] = "b"; -#line 19889 "" +#line 19883 "" s_cat(notexq, a__2, i__2, &c__2, (ftnlen)79); -#line 19890 "" +#line 19884 "" ++(*lnote); -#line 19891 "" +#line 19885 "" /* L3: */ -#line 19891 "" +#line 19885 "" } /* add the number, 0 if 12 */ @@ -47623,36 +47559,36 @@ integer ntindex_(char *line, char *s2q, integer *lenline, ftnlen line_len, /* 5/25/08 Allow >12 */ /* call istring(mod(iv,12),tempq,len) */ -#line 19898 "" +#line 19892 "" if (*iv < 24) { -#line 19899 "" +#line 19893 "" istring_(iv, tempq, &len, (ftnlen)4); -#line 19900 "" +#line 19894 "" } else if (*iv == 24) { -#line 19901 "" +#line 19895 "" *(unsigned char *)tempq = '0'; -#line 19902 "" +#line 19896 "" len = 1; -#line 19903 "" +#line 19897 "" } else { -#line 19904 "" +#line 19898 "" printl_("Sorry, too man open beams", (ftnlen)25); -#line 19905 "" +#line 19899 "" stop1_(); -#line 19906 "" +#line 19900 "" } /* Writing concatenation */ -#line 19907 "" +#line 19901 "" i__1[0] = *lnote, a__1[0] = notexq; -#line 19907 "" +#line 19901 "" i__1[1] = 1, a__1[1] = ulqq; -#line 19907 "" +#line 19901 "" i__1[2] = len, a__1[2] = tempq; -#line 19907 "" +#line 19901 "" s_cat(notexq, a__1, i__1, &c__3, (ftnlen)79); -#line 19908 "" +#line 19902 "" *lnote = *lnote + 1 + len; -#line 19909 "" +#line 19903 "" return 0; } /* ntrbbb_ */ @@ -47670,27 +47606,27 @@ integer numclef_(char *clefq, ftnlen clefq_len) /* 7 f 9 */ /* 8 0 */ -#line 19919 "" +#line 19913 "" if (*(unsigned char *)clefq < 55) { /* if (ichar(clefq) .le. 55) then */ -#line 19921 "" +#line 19915 "" ret_val = *(unsigned char *)clefq - 48; /* if (numclef .eq. 7) numclef = 9 */ -#line 19923 "" +#line 19917 "" } else if (*(unsigned char *)clefq == '7') { -#line 19924 "" +#line 19918 "" ret_val = 9; -#line 19925 "" +#line 19919 "" } else if (*(unsigned char *)clefq == '8') { -#line 19926 "" +#line 19920 "" ret_val = 0; -#line 19927 "" +#line 19921 "" } else { -#line 19928 "" +#line 19922 "" ret_val = i_indx("tsmanrbxxf", clefq, (ftnlen)10, (ftnlen)1) - 1; -#line 19929 "" +#line 19923 "" } -#line 19930 "" +#line 19924 "" return ret_val; } /* numclef_ */ @@ -47712,121 +47648,121 @@ integer numclef_(char *clefq, ftnlen clefq_len) extern /* Character */ VOID chax_(char *, ftnlen, integer *); static integer nfmt; -#line 19934 "" +#line 19928 "" r__1 = *i__ + .5f; -#line 19934 "" +#line 19928 "" nfmt = r_lg10(&r__1) + 2; -#line 19935 "" +#line 19929 "" if (*jlast + 5 + nfmt < 80) { -#line 19936 "" +#line 19930 "" ci__1.cierr = 0; -#line 19936 "" +#line 19930 "" ci__1.ciunit = 6; /* Writing concatenation */ -#line 19936 "" +#line 19930 "" i__1[0] = 5, a__1[0] = "(a5,i"; -#line 19936 "" +#line 19930 "" i__2 = nfmt + 48; -#line 19936 "" +#line 19930 "" chax_(ch__2, (ftnlen)1, &i__2); -#line 19936 "" +#line 19930 "" i__1[1] = 1, a__1[1] = ch__2; -#line 19936 "" +#line 19930 "" i__1[2] = 3, a__1[2] = ",$)"; -#line 19936 "" +#line 19930 "" ci__1.cifmt = (s_cat(ch__1, a__1, i__1, &c__3, (ftnlen)9), ch__1); -#line 19936 "" +#line 19930 "" s_wsfe(&ci__1); -#line 19936 "" +#line 19930 "" do_fio(&c__1, " Bar", (ftnlen)5); -#line 19936 "" +#line 19930 "" do_fio(&c__1, (char *)&(*i__), (ftnlen)sizeof(integer)); -#line 19936 "" +#line 19930 "" e_wsfe(); -#line 19937 "" +#line 19931 "" ci__1.cierr = 0; -#line 19937 "" +#line 19931 "" ci__1.ciunit = 15; /* Writing concatenation */ -#line 19937 "" +#line 19931 "" i__1[0] = 5, a__1[0] = "(a5,i"; -#line 19937 "" +#line 19931 "" i__2 = nfmt + 48; -#line 19937 "" +#line 19931 "" chax_(ch__2, (ftnlen)1, &i__2); -#line 19937 "" +#line 19931 "" i__1[1] = 1, a__1[1] = ch__2; -#line 19937 "" +#line 19931 "" i__1[2] = 3, a__1[2] = ",$)"; -#line 19937 "" +#line 19931 "" ci__1.cifmt = (s_cat(ch__1, a__1, i__1, &c__3, (ftnlen)9), ch__1); -#line 19937 "" +#line 19931 "" s_wsfe(&ci__1); -#line 19937 "" +#line 19931 "" do_fio(&c__1, " Bar", (ftnlen)5); -#line 19937 "" +#line 19931 "" do_fio(&c__1, (char *)&(*i__), (ftnlen)sizeof(integer)); -#line 19937 "" +#line 19931 "" e_wsfe(); -#line 19938 "" +#line 19932 "" *jlast = *jlast + 5 + nfmt; -#line 19939 "" +#line 19933 "" } else { -#line 19940 "" +#line 19934 "" ci__1.cierr = 0; -#line 19940 "" +#line 19934 "" ci__1.ciunit = 6; /* Writing concatenation */ -#line 19940 "" +#line 19934 "" i__1[0] = 7, a__1[0] = "(/,a5,i"; -#line 19940 "" +#line 19934 "" i__2 = nfmt + 48; -#line 19940 "" +#line 19934 "" chax_(ch__2, (ftnlen)1, &i__2); -#line 19940 "" +#line 19934 "" i__1[1] = 1, a__1[1] = ch__2; -#line 19940 "" +#line 19934 "" i__1[2] = 3, a__1[2] = ",$)"; -#line 19940 "" +#line 19934 "" ci__1.cifmt = (s_cat(ch__3, a__1, i__1, &c__3, (ftnlen)11), ch__3); -#line 19940 "" +#line 19934 "" s_wsfe(&ci__1); -#line 19940 "" +#line 19934 "" do_fio(&c__1, " Bar", (ftnlen)5); -#line 19940 "" +#line 19934 "" do_fio(&c__1, (char *)&(*i__), (ftnlen)sizeof(integer)); -#line 19940 "" +#line 19934 "" e_wsfe(); -#line 19941 "" +#line 19935 "" ci__1.cierr = 0; -#line 19941 "" +#line 19935 "" ci__1.ciunit = 15; /* Writing concatenation */ -#line 19941 "" +#line 19935 "" i__1[0] = 7, a__1[0] = "(/,a5,i"; -#line 19941 "" +#line 19935 "" i__2 = nfmt + 48; -#line 19941 "" +#line 19935 "" chax_(ch__2, (ftnlen)1, &i__2); -#line 19941 "" +#line 19935 "" i__1[1] = 1, a__1[1] = ch__2; -#line 19941 "" +#line 19935 "" i__1[2] = 3, a__1[2] = ",$)"; -#line 19941 "" +#line 19935 "" ci__1.cifmt = (s_cat(ch__3, a__1, i__1, &c__3, (ftnlen)11), ch__3); -#line 19941 "" +#line 19935 "" s_wsfe(&ci__1); -#line 19941 "" +#line 19935 "" do_fio(&c__1, " Bar", (ftnlen)5); -#line 19941 "" +#line 19935 "" do_fio(&c__1, (char *)&(*i__), (ftnlen)sizeof(integer)); -#line 19941 "" +#line 19935 "" e_wsfe(); -#line 19942 "" +#line 19936 "" *jlast = nfmt + 5; -#line 19943 "" +#line 19937 "" } -#line 19944 "" +#line 19938 "" return 0; } /* outbar_ */ @@ -47916,32 +47852,32 @@ integer numclef_(char *clefq, ftnlen clefq_len) static integer instnow, nsystpp; /* Fortran I/O blocks */ - static cilist io___1227 = { 0, 6, 0, 0, 0 }; - static cilist io___1228 = { 0, 6, 0, 0, 0 }; - static cilist io___1229 = { 0, 15, 0, "(a)", 0 }; - static cilist io___1230 = { 0, 19, 0, "(i6)", 0 }; - static cilist io___1242 = { 0, 6, 0, 0, 0 }; - static cilist io___1246 = { 0, 6, 0, 0, 0 }; - static cilist io___1252 = { 0, 15, 0, "(/,a20,i4,a1,i4)", 0 }; - static cilist io___1253 = { 0, 6, 0, "(/,a20,i4,a1,i4)", 0 }; - static cilist io___1258 = { 0, 6, 0, 0, 0 }; - static cilist io___1260 = { 0, 6, 0, 0, 0 }; - static cilist io___1261 = { 0, 6, 0, 0, 0 }; - static cilist io___1262 = { 0, 6, 0, 0, 0 }; - static cilist io___1263 = { 0, 15, 0, "(a,2i5)", 0 }; - static cilist io___1264 = { 0, 15, 0, "(a)", 0 }; - static cilist io___1266 = { 0, 12, 0, "(a)", 0 }; - static cilist io___1267 = { 0, 12, 0, 0, 0 }; - static cilist io___1268 = { 0, 12, 0, "(6f10.5/f10.5,3i5)", 0 }; - static cilist io___1269 = { 0, 12, 0, 0, 0 }; - static cilist io___1288 = { 0, 12, 0, 0, 0 }; - static cilist io___1303 = { 0, 12, 0, "(i5)", 0 }; - static cilist io___1321 = { 0, 12, 0, "(1pe12.5/i5,5e12.3)", 0 }; - static cilist io___1322 = { 0, 13, 0, "(i5)", 0 }; - static cilist io___1323 = { 0, 6, 0, "(/,a)", 0 }; - static cilist io___1324 = { 0, 6, 0, 0, 0 }; - static cilist io___1325 = { 0, 15, 0, "(/,a)", 0 }; - static cilist io___1326 = { 0, 15, 0, "()", 0 }; + static cilist io___1222 = { 0, 6, 0, 0, 0 }; + static cilist io___1223 = { 0, 6, 0, 0, 0 }; + static cilist io___1224 = { 0, 15, 0, "(a)", 0 }; + static cilist io___1225 = { 0, 19, 0, "(i6)", 0 }; + static cilist io___1237 = { 0, 6, 0, 0, 0 }; + static cilist io___1241 = { 0, 6, 0, 0, 0 }; + static cilist io___1247 = { 0, 15, 0, "(/,a20,i4,a1,i4)", 0 }; + static cilist io___1248 = { 0, 6, 0, "(/,a20,i4,a1,i4)", 0 }; + static cilist io___1253 = { 0, 6, 0, 0, 0 }; + static cilist io___1255 = { 0, 6, 0, 0, 0 }; + static cilist io___1256 = { 0, 6, 0, 0, 0 }; + static cilist io___1257 = { 0, 6, 0, 0, 0 }; + static cilist io___1258 = { 0, 15, 0, "(a,2i5)", 0 }; + static cilist io___1259 = { 0, 15, 0, "(a)", 0 }; + static cilist io___1261 = { 0, 12, 0, "(a)", 0 }; + static cilist io___1262 = { 0, 12, 0, 0, 0 }; + static cilist io___1263 = { 0, 12, 0, "(6f10.5/f10.5,3i5)", 0 }; + static cilist io___1264 = { 0, 12, 0, 0, 0 }; + static cilist io___1283 = { 0, 12, 0, 0, 0 }; + static cilist io___1298 = { 0, 12, 0, "(i5)", 0 }; + static cilist io___1316 = { 0, 12, 0, "(1pe12.5/i5,5e12.3)", 0 }; + static cilist io___1317 = { 0, 13, 0, "(i5)", 0 }; + static cilist io___1318 = { 0, 6, 0, "(/,a)", 0 }; + static cilist io___1319 = { 0, 6, 0, 0, 0 }; + static cilist io___1320 = { 0, 15, 0, "(/,a)", 0 }; + static cilist io___1321 = { 0, 15, 0, "()", 0 }; /* ccccccccccccccccccccccccccccccccccccccccccccccc */ @@ -47975,372 +47911,372 @@ integer numclef_(char *clefq, ftnlen clefq_len) /* cccccccccccccccccccccccccccccccccc */ /* * ibaroff,udsp(nkb),wheadpt,gotclef,sqzb(maxblks) */ /* logical mrecord,mplay,endmac,gotclef,cstuplet */ -#line 20033 "" +#line 20027 "" /* Parameter adjustments */ -#line 20033 "" +#line 20027 "" --nbarss; -#line 20033 "" +#line 20027 "" -#line 20033 "" +#line 20027 "" /* Function Body */ /* data poefa /125*1./ */ /* This corrected a problem in Bob Tennent's compilation of pmx2.94 */ -#line 20038 "" +#line 20032 "" for (i__ = 1; i__ <= 125; ++i__) { -#line 20039 "" +#line 20033 "" comshort_1.poefa[i__ - 1] = 1.f; -#line 20040 "" +#line 20034 "" /* L97: */ -#line 20040 "" +#line 20034 "" } -#line 20041 "" +#line 20035 "" comis4bignv_1.is4bignv = FALSE_; -#line 20042 "" +#line 20036 "" comis4bignv_1.aiset = FALSE_; -#line 20043 "" +#line 20037 "" commus_1.whead20 = .3f; -#line 20044 "" +#line 20038 "" comshort_1.ishort = 0; -#line 20045 "" +#line 20039 "" if (! (*optimize)) { -#line 20046 "" - s_wsle(&io___1227); -#line 20046 "" +#line 20040 "" + s_wsle(&io___1222); +#line 20040 "" e_wsle(); -#line 20047 "" - s_wsle(&io___1228); -#line 20047 "" +#line 20041 "" + s_wsle(&io___1223); +#line 20041 "" do_lio(&c__9, &c__1, "Starting first PMX pass", (ftnlen)23); -#line 20047 "" +#line 20041 "" e_wsle(); -#line 20048 "" - s_wsfe(&io___1229); -#line 20048 "" +#line 20042 "" + s_wsfe(&io___1224); +#line 20042 "" do_fio(&c__1, " Starting first PMX pass", (ftnlen)24); -#line 20048 "" +#line 20042 "" e_wsfe(); -#line 20049 "" +#line 20043 "" } -#line 20050 "" +#line 20044 "" if (*isfirst) { -#line 20051 "" +#line 20045 "" o__1.oerr = 0; -#line 20051 "" +#line 20045 "" o__1.ounit = 19; -#line 20051 "" +#line 20045 "" o__1.ofnmlen = 11; -#line 20051 "" +#line 20045 "" o__1.ofnm = "pmxaerr.dat"; -#line 20051 "" +#line 20045 "" o__1.orl = 0; -#line 20051 "" +#line 20045 "" o__1.osta = 0; -#line 20051 "" +#line 20045 "" o__1.oacc = 0; -#line 20051 "" +#line 20045 "" o__1.ofm = 0; -#line 20051 "" +#line 20045 "" o__1.oblnk = 0; -#line 20051 "" +#line 20045 "" f_open(&o__1); -#line 20052 "" - s_wsfe(&io___1230); -#line 20052 "" +#line 20046 "" + s_wsfe(&io___1225); +#line 20046 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 20052 "" +#line 20046 "" e_wsfe(); -#line 20053 "" +#line 20047 "" cl__1.cerr = 0; -#line 20053 "" +#line 20047 "" cl__1.cunit = 19; -#line 20053 "" +#line 20047 "" cl__1.csta = 0; -#line 20053 "" +#line 20047 "" f_clos(&cl__1); -#line 20054 "" +#line 20048 "" } -#line 20055 "" +#line 20049 "" if (! (*optimize)) { -#line 20055 "" +#line 20049 "" jprntb = 81; -#line 20055 "" +#line 20049 "" } -#line 20056 "" +#line 20050 "" commac_1.macuse = 0; -#line 20057 "" +#line 20051 "" comkeys_1.ornrpt = FALSE_; -#line 20058 "" +#line 20052 "" comkeys_1.stickys = FALSE_; -#line 20059 "" +#line 20053 "" commac_1.mrecord = FALSE_; -#line 20060 "" +#line 20054 "" commac_1.mplay = FALSE_; -#line 20061 "" +#line 20055 "" c1omget_1.lastchar = FALSE_; -#line 20062 "" +#line 20056 "" comnvst_2.novshrinktop = FALSE_; -#line 20063 "" +#line 20057 "" cstuplet = FALSE_; -#line 20064 "" +#line 20058 "" comslur_1.fontslur = TRUE_; -#line 20065 "" +#line 20059 "" comligfont_1.isligfont = FALSE_; -#line 20066 "" +#line 20060 "" fulltrans = FALSE_; -#line 20067 "" +#line 20061 "" for (c1omnotes_1.ibarcnt = 1; c1omnotes_1.ibarcnt <= 3999; ++c1omnotes_1.ibarcnt) { -#line 20068 "" +#line 20062 "" c1omnotes_1.udsp[c1omnotes_1.ibarcnt - 1] = 0.f; -#line 20069 "" +#line 20063 "" c1omnotes_1.wminnh[c1omnotes_1.ibarcnt - 1] = -1.f; -#line 20070 "" +#line 20064 "" /* L42: */ -#line 20070 "" +#line 20064 "" } /* Initialize input buffer */ -#line 20074 "" +#line 20068 "" c1omget_1.lenbuf0 = inbuff_1.ipbuf; -#line 20075 "" +#line 20069 "" inbuff_1.ipbuf = 0; -#line 20076 "" +#line 20070 "" inbuff_1.ilbuf = 1; -#line 20077 "" +#line 20071 "" g1etset_(&a1ll_2.nv, &comkeys_1.noinst, &a1ll_2.mtrnuml, &mtrdenl, & mtrnmp, &mtrdnp, &xmtrnum0, comkeys_1.newkey, &compage_1.npages, & compage_1.nsyst, &commus_1.musize, &bottreb); /* Set up list of instrument numbers (iv) */ -#line 20082 "" +#line 20076 "" ivnow = 0; -#line 20083 "" +#line 20077 "" i__1 = comkeys_1.noinst; -#line 20083 "" +#line 20077 "" for (instnow = 1; instnow <= i__1; ++instnow) { -#line 20084 "" +#line 20078 "" i__2 = c1omget_1.nsperi[instnow - 1]; -#line 20084 "" +#line 20078 "" for (iscount = 1; iscount <= i__2; ++iscount) { -#line 20085 "" +#line 20079 "" ++ivnow; -#line 20086 "" +#line 20080 "" cominsttrans_1.instno[ivnow - 1] = instnow; -#line 20087 "" +#line 20081 "" /* L14: */ -#line 20087 "" +#line 20081 "" } -#line 20088 "" +#line 20082 "" /* L13: */ -#line 20088 "" +#line 20082 "" } /* Save initial meter for midi */ -#line 20092 "" +#line 20086 "" if (! (*isfirst) && compage_1.npages == 0) { -#line 20093 "" - s_wsle(&io___1242); -#line 20093 "" +#line 20087 "" + s_wsle(&io___1237); +#line 20087 "" do_lio(&c__9, &c__1, "Sorry, must have npages>0 for optimization.", ( ftnlen)43); -#line 20093 "" +#line 20087 "" e_wsle(); -#line 20094 "" +#line 20088 "" stop1_(); -#line 20095 "" +#line 20089 "" } -#line 20096 "" +#line 20090 "" *nsyout = compage_1.nsyst; /* isig1 will be changed in getnote if there is a transposition */ -#line 20100 "" +#line 20094 "" comkeys_1.isig1 = comkeys_1.newkey[0]; -#line 20101 "" +#line 20095 "" if (compage_1.npages > compage_1.nsyst) { -#line 20102 "" +#line 20096 "" printl_("npages > nsyst in input. Please fix the input.", (ftnlen)47) ; -#line 20103 "" +#line 20097 "" stop1_(); -#line 20104 "" +#line 20098 "" } /* fbar = afterruleskip/elemskip */ /* apt = width of small accidental + space in points (= 6 at 20pt) =wheadpt */ -#line 20109 "" +#line 20103 "" c1ommvl_1.fbar = 1.f; -#line 20110 "" +#line 20104 "" c1omnotes_1.wheadpt = commus_1.whead20 * commus_1.musize; -#line 20111 "" +#line 20105 "" ifig = 0; -#line 20112 "" +#line 20106 "" compage_1.usefig = TRUE_; -#line 20113 "" +#line 20107 "" lenbeat = i1fnodur_(&mtrdenl, "x", (ftnlen)1); -#line 20114 "" +#line 20108 "" lenmult = 1; -#line 20115 "" +#line 20109 "" if (mtrdenl == 2) { -#line 20116 "" +#line 20110 "" lenbeat = 16; -#line 20117 "" +#line 20111 "" lenmult = 2; -#line 20118 "" +#line 20112 "" } -#line 20119 "" +#line 20113 "" a1ll_2.lenbr1 = lenmult * a1ll_2.mtrnuml * lenbeat; -#line 20120 "" +#line 20114 "" r__1 = lenmult * xmtrnum0 * lenbeat; -#line 20120 "" +#line 20114 "" a1ll_2.lenbr0 = i_nint(&r__1); -#line 20121 "" +#line 20115 "" a1ll_2.mtrnuml = 0; -#line 20122 "" +#line 20116 "" if (a1ll_2.lenbr0 != 0) { -#line 20123 "" +#line 20117 "" c1omnotes_1.ibaroff = 1; -#line 20124 "" +#line 20118 "" a1ll_2.lenbar = a1ll_2.lenbr0; -#line 20125 "" +#line 20119 "" } else { -#line 20126 "" +#line 20120 "" c1omnotes_1.ibaroff = 0; -#line 20127 "" +#line 20121 "" a1ll_2.lenbar = a1ll_2.lenbr1; -#line 20128 "" +#line 20122 "" } -#line 20129 "" +#line 20123 "" c1omnotes_1.ibarcnt = 0; -#line 20130 "" +#line 20124 "" c1omnotes_1.nptr[0] = 1; -#line 20131 "" +#line 20125 "" a1ll_2.iccount = 128; -#line 20132 "" +#line 20126 "" compage_1.nmovbrk = 0; -#line 20133 "" +#line 20127 "" compage_1.nflb = 0; -#line 20134 "" +#line 20128 "" compage_1.nfpb = 0; -#line 20135 "" +#line 20129 "" compage_1.ipagfpb[0] = 1; -#line 20136 "" +#line 20130 "" compage_1.isysfpb[0] = 1; -#line 20137 "" +#line 20131 "" compage_1.ibarflb[0] = 1; -#line 20138 "" +#line 20132 "" compage_1.isysflb[0] = 1; -#line 20139 "" +#line 20133 "" compage_1.nistaff[0] = a1ll_2.nv - 1; /* Check for pmx.mod */ -#line 20143 "" +#line 20137 "" c1omget_1.linesinpmxmod = 0; /* line1pmxmod = ilbuf */ -#line 20145 "" +#line 20139 "" getpmxmod_(&c_true, " ", (ftnlen)1); -#line 20146 "" +#line 20140 "" if (! (*isfirst) && c1omget_1.linesinpmxmod > 0) { -#line 20147 "" - s_wsle(&io___1246); -#line 20147 "" +#line 20141 "" + s_wsle(&io___1241); +#line 20141 "" do_lio(&c__9, &c__1, "Sorry, cannot optimize if there is a pmx.mod f"\ "ile", (ftnlen)49); -#line 20147 "" +#line 20141 "" e_wsle(); -#line 20148 "" +#line 20142 "" stop1_(); -#line 20149 "" +#line 20143 "" } /* Initialize for loop over lines */ -#line 20153 "" +#line 20147 "" comkeys_1.nkeys = 1; -#line 20154 "" +#line 20148 "" comkeys_1.ibrkch[0] = 1; -#line 20155 "" +#line 20149 "" comkeys_1.mbrestsav = 0; -#line 20156 "" +#line 20150 "" comkeys_1.shifton = FALSE_; -#line 20157 "" +#line 20151 "" a1ll_2.firstline = TRUE_; -#line 20158 "" +#line 20152 "" a1ll_2.newmeter = FALSE_; -#line 20159 "" +#line 20153 "" c1omget_1.ihead = 0; -#line 20160 "" +#line 20154 "" c1omget_1.isheadr = FALSE_; /* gotclef = .false. */ -#line 20162 "" +#line 20156 "" comkeys_1.idsig = 0; -#line 20163 "" +#line 20157 "" c1omnotes_1.iddot = 0; -#line 20164 "" +#line 20158 "" compage_1.fintstf = -1.f; -#line 20165 "" +#line 20159 "" compage_1.gintstf = 1.f; -#line 20166 "" +#line 20160 "" listcresc = 0; -#line 20167 "" +#line 20161 "" listdecresc = 0; -#line 20168 "" +#line 20162 "" L30: -#line 20168 "" +#line 20162 "" loop = TRUE_; -#line 20169 "" +#line 20163 "" comkeys_1.iskchb = FALSE_; -#line 20170 "" +#line 20164 "" c1omget_1.issegno = FALSE_; -#line 20171 "" +#line 20165 "" a1ll_2.nbars = 0; -#line 20172 "" +#line 20166 "" c1omnotes_1.ibarmbr = 0; -#line 20173 "" +#line 20167 "" i__1 = a1ll_2.nv; -#line 20173 "" +#line 20167 "" for (a1ll_2.iv = 1; a1ll_2.iv <= i__1; ++a1ll_2.iv) { -#line 20174 "" +#line 20168 "" c1ommvl_1.nvmx[a1ll_2.iv - 1] = 1; -#line 20175 "" +#line 20169 "" c1ommvl_1.ivmx[a1ll_2.iv - 1] = a1ll_2.iv; -#line 20176 "" +#line 20170 "" a1ll_2.itsofar[a1ll_2.iv - 1] = 0; -#line 20177 "" +#line 20171 "" a1ll_2.nnl[a1ll_2.iv - 1] = 0; -#line 20178 "" +#line 20172 "" for (j = 1; j <= 200; ++j) { -#line 20179 "" +#line 20173 "" a1ll_2.rest[a1ll_2.iv + j * 24 - 25] = FALSE_; -#line 20180 "" +#line 20174 "" c1ommvl_1.nacc[a1ll_2.iv + j * 24 - 25] = 0.f; -#line 20181 "" +#line 20175 "" /* L5: */ -#line 20181 "" +#line 20175 "" } -#line 20182 "" +#line 20176 "" /* L4: */ -#line 20182 "" +#line 20176 "" } -#line 20183 "" +#line 20177 "" a1ll_2.iv = 1; -#line 20184 "" +#line 20178 "" c1ommvl_1.ivx = 1; -#line 20185 "" +#line 20179 "" c1omget_1.fbon = FALSE_; -#line 20186 "" +#line 20180 "" comkeys_1.barend = FALSE_; -#line 20187 "" +#line 20181 "" c1omget_1.isvolt = FALSE_; -#line 20188 "" +#line 20182 "" L2: -#line 20188 "" +#line 20182 "" if (loop) { /* Within this short loop, nv voices are filled up for the duration of a block. */ @@ -48348,525 +48284,525 @@ L2: /* nodur(..),rest(..). nnl will later be */ /* increased and things slid around as accidental skips are added. */ -#line 20195 "" +#line 20189 "" g1etnote_(&loop, &ifig, optimize, &fulltrans); -#line 20196 "" +#line 20190 "" if (c1omget_1.lastchar) { -#line 20196 "" +#line 20190 "" goto L20; -#line 20196 "" +#line 20190 "" } -#line 20197 "" +#line 20191 "" goto L2; -#line 20198 "" +#line 20192 "" } -#line 20199 "" +#line 20193 "" if (comkeys_1.mbrestsav > 0) { -#line 20200 "" +#line 20194 "" printl_(" ", (ftnlen)1); -#line 20201 "" +#line 20195 "" printl_("You must enter the same multibar rest in ALL parts", (ftnlen) 50); -#line 20203 "" +#line 20197 "" stop1_(); -#line 20204 "" +#line 20198 "" } -#line 20205 "" +#line 20199 "" i__1 = a1ll_2.nbars; -#line 20205 "" +#line 20199 "" for (a1ll_2.ibar = 1; a1ll_2.ibar <= i__1; ++a1ll_2.ibar) { -#line 20206 "" +#line 20200 "" ++c1omnotes_1.ibarcnt; /* The following is just a signal to start a new bar when cataloging spaces */ /* for catspace(...) */ -#line 20211 "" +#line 20205 "" c1omnotes_1.nptr[c1omnotes_1.ibarcnt] = c1omnotes_1.nptr[ c1omnotes_1.ibarcnt - 1]; -#line 20212 "" +#line 20206 "" newmb[c1omnotes_1.ibarcnt - 1] = FALSE_; -#line 20213 "" +#line 20207 "" if (a1ll_2.newmeter && a1ll_2.ibar == 1) { -#line 20213 "" +#line 20207 "" newmb[c1omnotes_1.ibarcnt - 1] = TRUE_; -#line 20213 "" +#line 20207 "" } /* Above is only for spacing calcs later on. Remember new meter can only occur */ /* at START of a new input line (ibar = 1) */ -#line 20218 "" +#line 20212 "" if (a1ll_2.ibar != c1omnotes_1.ibarmbr) { -#line 20219 "" +#line 20213 "" if (! (*optimize)) { -#line 20219 "" +#line 20213 "" i__2 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff; -#line 20219 "" +#line 20213 "" outbar_(&i__2, &jprntb); -#line 20219 "" +#line 20213 "" } -#line 20220 "" +#line 20214 "" } else { -#line 20221 "" +#line 20215 "" if (! (*optimize)) { -#line 20222 "" - s_wsfe(&io___1252); -#line 20222 "" +#line 20216 "" + s_wsfe(&io___1247); +#line 20216 "" do_fio(&c__1, " Multibar rest, bars", (ftnlen)20); -#line 20222 "" +#line 20216 "" i__2 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff; -#line 20222 "" +#line 20216 "" do_fio(&c__1, (char *)&i__2, (ftnlen)sizeof(integer)); -#line 20222 "" +#line 20216 "" do_fio(&c__1, "-", (ftnlen)1); -#line 20222 "" +#line 20216 "" i__3 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + c1omnotes_1.mbrest - 1; -#line 20222 "" +#line 20216 "" do_fio(&c__1, (char *)&i__3, (ftnlen)sizeof(integer)); -#line 20222 "" +#line 20216 "" e_wsfe(); -#line 20224 "" - s_wsfe(&io___1253); -#line 20224 "" +#line 20218 "" + s_wsfe(&io___1248); +#line 20218 "" do_fio(&c__1, " Multibar rest, bars", (ftnlen)20); -#line 20224 "" +#line 20218 "" i__2 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff; -#line 20224 "" +#line 20218 "" do_fio(&c__1, (char *)&i__2, (ftnlen)sizeof(integer)); -#line 20224 "" +#line 20218 "" do_fio(&c__1, "-", (ftnlen)1); -#line 20224 "" +#line 20218 "" i__3 = c1omnotes_1.ibarcnt - c1omnotes_1.ibaroff + c1omnotes_1.mbrest - 1; -#line 20224 "" +#line 20218 "" do_fio(&c__1, (char *)&i__3, (ftnlen)sizeof(integer)); -#line 20224 "" +#line 20218 "" e_wsfe(); -#line 20226 "" +#line 20220 "" jprntb = 0; -#line 20227 "" +#line 20221 "" } -#line 20228 "" +#line 20222 "" c1omnotes_1.ibaroff = c1omnotes_1.ibaroff - c1omnotes_1.mbrest + 1; -#line 20229 "" +#line 20223 "" } -#line 20230 "" +#line 20224 "" if (a1ll_2.firstline && a1ll_2.lenbr0 != 0) { -#line 20231 "" +#line 20225 "" if (a1ll_2.ibar == 1) { -#line 20232 "" +#line 20226 "" a1ll_2.lenbar = a1ll_2.lenbr0; -#line 20233 "" +#line 20227 "" } else { -#line 20234 "" +#line 20228 "" a1ll_2.lenbar = a1ll_2.lenbr1; -#line 20235 "" +#line 20229 "" } -#line 20236 "" +#line 20230 "" } -#line 20237 "" +#line 20231 "" if (a1ll_2.ibar > 1) { /* For bars after first, slide all stuff down to beginning of arrays */ -#line 20241 "" +#line 20235 "" i__2 = a1ll_2.nv; -#line 20241 "" +#line 20235 "" for (a1ll_2.iv = 1; a1ll_2.iv <= i__2; ++a1ll_2.iv) { -#line 20242 "" +#line 20236 "" i__3 = c1ommvl_1.nvmx[a1ll_2.iv - 1]; -#line 20242 "" +#line 20236 "" for (kv = 1; kv <= i__3; ++kv) { -#line 20243 "" +#line 20237 "" c1ommvl_1.ivx = c1ommvl_1.ivmx[a1ll_2.iv + kv * 24 - 25]; -#line 20244 "" +#line 20238 "" ioff = a1ll_2.nib[c1ommvl_1.ivx + (a1ll_2.ibar - 1) * 24 - 25]; -#line 20245 "" +#line 20239 "" i__4 = a1ll_2.nib[c1ommvl_1.ivx + a1ll_2.ibar * 24 - 25] - ioff; -#line 20245 "" +#line 20239 "" for (ip = 1; ip <= i__4; ++ip) { -#line 20246 "" +#line 20240 "" a1ll_2.nodur[c1ommvl_1.ivx + ip * 24 - 25] = a1ll_2.nodur[c1ommvl_1.ivx + (ip + ioff) * 24 - 25]; -#line 20247 "" +#line 20241 "" a1ll_2.rest[c1ommvl_1.ivx + ip * 24 - 25] = a1ll_2.rest[c1ommvl_1.ivx + (ip + ioff) * 24 - 25]; -#line 20248 "" +#line 20242 "" c1ommvl_1.nacc[c1ommvl_1.ivx + ip * 24 - 25] = c1ommvl_1.nacc[c1ommvl_1.ivx + (ip + ioff) * 24 - 25]; -#line 20249 "" +#line 20243 "" /* L12: */ -#line 20249 "" +#line 20243 "" } -#line 20250 "" +#line 20244 "" /* L11: */ -#line 20250 "" +#line 20244 "" } -#line 20250 "" +#line 20244 "" } -#line 20251 "" +#line 20245 "" } -#line 20252 "" +#line 20246 "" i__3 = a1ll_2.nv; -#line 20252 "" +#line 20246 "" for (a1ll_2.iv = 1; a1ll_2.iv <= i__3; ++a1ll_2.iv) { -#line 20253 "" +#line 20247 "" i__2 = c1ommvl_1.nvmx[a1ll_2.iv - 1]; -#line 20253 "" +#line 20247 "" for (kv = 1; kv <= i__2; ++kv) { -#line 20254 "" +#line 20248 "" ioff = 0; -#line 20255 "" +#line 20249 "" if (a1ll_2.ibar > 1) { -#line 20255 "" +#line 20249 "" ioff = a1ll_2.nib[c1ommvl_1.ivmx[a1ll_2.iv + kv * 24 - 25] + (a1ll_2.ibar - 1) * 24 - 25]; -#line 20255 "" +#line 20249 "" } -#line 20256 "" +#line 20250 "" /* L67: */ -#line 20256 "" +#line 20250 "" } -#line 20256 "" +#line 20250 "" } -#line 20257 "" +#line 20251 "" makeabar_(); -#line 20258 "" +#line 20252 "" elsk[c1omnotes_1.ibarcnt - 1] = linecom_1.elskb + c1ommvl_1.fbar; -#line 20259 "" +#line 20253 "" /* L10: */ -#line 20259 "" +#line 20253 "" } -#line 20260 "" +#line 20254 "" a1ll_2.newmeter = FALSE_; -#line 20261 "" +#line 20255 "" a1ll_2.firstline = FALSE_; -#line 20262 "" +#line 20256 "" goto L30; -#line 20263 "" +#line 20257 "" L20: /* Vertical analysis. */ -#line 20267 "" +#line 20261 "" if (compage_1.npages == 0) { -#line 20268 "" +#line 20262 "" if (compage_1.nsyst == 0) { -#line 20269 "" - s_wsle(&io___1258); -#line 20269 "" +#line 20263 "" + s_wsle(&io___1253); +#line 20263 "" do_lio(&c__9, &c__1, "When npages=0, must set nsyst=bars/syst, n"\ "ot 0", (ftnlen)46); -#line 20269 "" +#line 20263 "" e_wsle(); -#line 20270 "" +#line 20264 "" stop1_(); -#line 20271 "" +#line 20265 "" } -#line 20272 "" +#line 20266 "" compage_1.nsyst = (c1omnotes_1.ibarcnt - 1) / compage_1.nsyst + 1; -#line 20273 "" +#line 20267 "" if (a1ll_2.nv == 1) { -#line 20274 "" +#line 20268 "" nsystpp = 12; -#line 20275 "" +#line 20269 "" } else if (a1ll_2.nv == 2) { -#line 20276 "" +#line 20270 "" nsystpp = 7; -#line 20277 "" +#line 20271 "" } else if (a1ll_2.nv == 3) { -#line 20278 "" +#line 20272 "" nsystpp = 5; -#line 20279 "" +#line 20273 "" } else if (a1ll_2.nv == 4) { -#line 20280 "" +#line 20274 "" nsystpp = 3; -#line 20281 "" +#line 20275 "" } else if (a1ll_2.nv <= 7) { -#line 20282 "" +#line 20276 "" nsystpp = 2; -#line 20283 "" +#line 20277 "" } else { -#line 20284 "" +#line 20278 "" nsystpp = 1; -#line 20285 "" +#line 20279 "" } -#line 20286 "" +#line 20280 "" compage_1.npages = (compage_1.nsyst - 1) / nsystpp + 1; -#line 20287 "" +#line 20281 "" } /* Check nsyst vs ibarcnt */ -#line 20291 "" +#line 20285 "" if (compage_1.nsyst > c1omnotes_1.ibarcnt) { -#line 20292 "" - s_wsle(&io___1260); -#line 20292 "" +#line 20286 "" + s_wsle(&io___1255); +#line 20286 "" e_wsle(); -#line 20293 "" - s_wsle(&io___1261); -#line 20293 "" +#line 20287 "" + s_wsle(&io___1256); +#line 20287 "" do_lio(&c__9, &c__1, "nsyst,ibarcnt:", (ftnlen)14); -#line 20293 "" +#line 20287 "" do_lio(&c__3, &c__1, (char *)&compage_1.nsyst, (ftnlen)sizeof(integer) ); -#line 20293 "" +#line 20287 "" do_lio(&c__3, &c__1, (char *)&c1omnotes_1.ibarcnt, (ftnlen)sizeof( integer)); -#line 20293 "" +#line 20287 "" e_wsle(); -#line 20294 "" - s_wsle(&io___1262); -#line 20294 "" +#line 20288 "" + s_wsle(&io___1257); +#line 20288 "" do_lio(&c__9, &c__1, "There are more systems than bars.", (ftnlen)33); -#line 20294 "" +#line 20288 "" e_wsle(); -#line 20295 "" - s_wsfe(&io___1263); -#line 20295 "" +#line 20289 "" + s_wsfe(&io___1258); +#line 20289 "" do_fio(&c__1, " nsyst,ibarcnt:", (ftnlen)15); -#line 20295 "" +#line 20289 "" do_fio(&c__1, (char *)&compage_1.nsyst, (ftnlen)sizeof(integer)); -#line 20295 "" +#line 20289 "" do_fio(&c__1, (char *)&c1omnotes_1.ibarcnt, (ftnlen)sizeof(integer)); -#line 20295 "" +#line 20289 "" e_wsfe(); -#line 20296 "" - s_wsfe(&io___1264); -#line 20296 "" +#line 20290 "" + s_wsfe(&io___1259); +#line 20290 "" do_fio(&c__1, " There are more systems than bars.", (ftnlen)34); -#line 20296 "" +#line 20290 "" e_wsfe(); -#line 20297 "" +#line 20291 "" stop1_(); -#line 20298 "" +#line 20292 "" } /* Set up dummy forced line & page breaks after last real one */ -#line 20302 "" +#line 20296 "" ++compage_1.nflb; -#line 20303 "" +#line 20297 "" compage_1.ibarflb[compage_1.nflb] = c1omnotes_1.ibarcnt + 1; -#line 20304 "" +#line 20298 "" compage_1.isysflb[compage_1.nflb] = compage_1.nsyst + 1; -#line 20305 "" +#line 20299 "" ++compage_1.nfpb; -#line 20306 "" +#line 20300 "" compage_1.ipagfpb[compage_1.nfpb] = compage_1.npages + 1; -#line 20307 "" +#line 20301 "" compage_1.isysfpb[compage_1.nfpb] = compage_1.nsyst + 1; -#line 20308 "" +#line 20302 "" heightil = compage_1.ptheight * 4.f / commus_1.musize; -#line 20309 "" +#line 20303 "" o__1.oerr = 0; -#line 20309 "" +#line 20303 "" o__1.ounit = 12; -#line 20309 "" +#line 20303 "" o__1.ofnm = 0; -#line 20309 "" +#line 20303 "" o__1.orl = 0; -#line 20309 "" +#line 20303 "" o__1.osta = "SCRATCH"; -#line 20309 "" +#line 20303 "" o__1.oacc = 0; -#line 20309 "" +#line 20303 "" o__1.ofm = 0; -#line 20309 "" +#line 20303 "" o__1.oblnk = 0; -#line 20309 "" +#line 20303 "" f_open(&o__1); -#line 20310 "" - s_wsfe(&io___1266); -#line 20310 "" +#line 20304 "" + s_wsfe(&io___1261); +#line 20304 "" do_fio(&c__1, basenameq, (*lbase)); -#line 20310 "" +#line 20304 "" e_wsfe(); -#line 20311 "" - s_wsle(&io___1267); -#line 20311 "" +#line 20305 "" + s_wsle(&io___1262); +#line 20305 "" do_lio(&c__3, &c__1, (char *)&(*lbase), (ftnlen)sizeof(integer)); -#line 20311 "" +#line 20305 "" e_wsle(); /* Pass to pmxb the initial signature, including effect of transposition. */ -#line 20315 "" - s_wsfe(&io___1268); -#line 20315 "" +#line 20309 "" + s_wsfe(&io___1263); +#line 20309 "" do_fio(&c__1, (char *)&c1ommvl_1.fbar, (ftnlen)sizeof(real)); -#line 20315 "" +#line 20309 "" do_fio(&c__1, (char *)&c1omnotes_1.wheadpt, (ftnlen)sizeof(real)); -#line 20315 "" +#line 20309 "" do_fio(&c__1, (char *)&cblock_1.etait, (ftnlen)sizeof(real)); -#line 20315 "" +#line 20309 "" do_fio(&c__1, (char *)&cblock_1.etatc, (ftnlen)sizeof(real)); -#line 20315 "" +#line 20309 "" do_fio(&c__1, (char *)&cblock_1.etacs1, (ftnlen)sizeof(real)); -#line 20315 "" +#line 20309 "" do_fio(&c__1, (char *)&cblock_1.etatop, (ftnlen)sizeof(real)); -#line 20315 "" +#line 20309 "" do_fio(&c__1, (char *)&cblock_1.etabot, (ftnlen)sizeof(real)); -#line 20315 "" +#line 20309 "" do_fio(&c__1, (char *)&cominbot_1.inbothd, (ftnlen)sizeof(integer)); -#line 20315 "" +#line 20309 "" do_fio(&c__1, (char *)&cblock_1.inhnoh, (ftnlen)sizeof(integer)); -#line 20315 "" +#line 20309 "" do_fio(&c__1, (char *)&comkeys_1.isig1, (ftnlen)sizeof(integer)); -#line 20315 "" +#line 20309 "" e_wsfe(); -#line 20317 "" - s_wsle(&io___1269); -#line 20317 "" +#line 20311 "" + s_wsle(&io___1264); +#line 20311 "" do_lio(&c__3, &c__1, (char *)&compage_1.npages, (ftnlen)sizeof(integer)); -#line 20317 "" +#line 20311 "" do_lio(&c__4, &c__1, (char *)&compage_1.widthpt, (ftnlen)sizeof(real)); -#line 20317 "" +#line 20311 "" do_lio(&c__4, &c__1, (char *)&compage_1.ptheight, (ftnlen)sizeof(real)); -#line 20317 "" +#line 20311 "" do_lio(&c__4, &c__1, (char *)&compage_1.hoffpt, (ftnlen)sizeof(real)); -#line 20317 "" +#line 20311 "" do_lio(&c__4, &c__1, (char *)&compage_1.voffpt, (ftnlen)sizeof(real)); -#line 20317 "" +#line 20311 "" do_lio(&c__3, &c__1, (char *)&compage_1.nsyst, (ftnlen)sizeof(integer)); -#line 20317 "" +#line 20311 "" e_wsle(); -#line 20318 "" +#line 20312 "" iflbnow = -1; -#line 20319 "" +#line 20313 "" isysb4 = 0; -#line 20320 "" +#line 20314 "" i__1 = compage_1.nfpb; -#line 20320 "" +#line 20314 "" for (ifpb = 1; ifpb <= i__1; ++ifpb) { /* Each time thru this loop is like a single score with several pages */ -#line 20324 "" +#line 20318 "" compage_1.npages = compage_1.ipagfpb[ifpb] - compage_1.ipagfpb[ifpb - 1]; -#line 20325 "" +#line 20319 "" compage_1.nsyst = compage_1.isysfpb[ifpb] - compage_1.isysfpb[ifpb - 1]; -#line 20326 "" +#line 20320 "" nomnsystp = (compage_1.nsyst - 1) / compage_1.npages + 1; -#line 20327 "" +#line 20321 "" nshort = nomnsystp * compage_1.npages - compage_1.nsyst; -#line 20328 "" +#line 20322 "" i__2 = compage_1.npages; -#line 20328 "" +#line 20322 "" for (ipage = 1; ipage <= i__2; ++ipage) { -#line 20329 "" +#line 20323 "" nsystp = nomnsystp; -#line 20330 "" +#line 20324 "" if (ipage <= nshort) { -#line 20330 "" +#line 20324 "" --nsystp; -#line 20330 "" +#line 20324 "" } /* Last system number on this page: */ -#line 20333 "" +#line 20327 "" isysendpg = isysb4 + nsystp; -#line 20334 "" +#line 20328 "" nintpg = 0; -#line 20335 "" +#line 20329 "" i__3 = isysendpg; -#line 20335 "" +#line 20329 "" for (isy = isysb4 + 1; isy <= i__3; ++isy) { -#line 20336 "" +#line 20330 "" if (compage_1.isysflb[iflbnow + 1] == isy) { -#line 20336 "" +#line 20330 "" ++iflbnow; -#line 20336 "" +#line 20330 "" } -#line 20337 "" +#line 20331 "" nintpg += compage_1.nistaff[iflbnow]; -#line 20338 "" +#line 20332 "" /* L15: */ -#line 20338 "" +#line 20332 "" } -#line 20339 "" +#line 20333 "" xilfrac = 0.f; -#line 20340 "" +#line 20334 "" xiltxt = 0.f; -#line 20341 "" +#line 20335 "" if (ipage == 1 && c1omget_1.ihead > 0) { /* Needn't zero out ihead after printing titles if we only allow titles at top? */ -#line 20345 "" +#line 20339 "" if ((c1omget_1.ihead & 1) == 1) { -#line 20346 "" +#line 20340 "" xiltxt += cblock_1.hgtin * 4 / commus_1.musize; -#line 20347 "" +#line 20341 "" xilfrac += cblock_1.etait; -#line 20348 "" +#line 20342 "" } -#line 20349 "" +#line 20343 "" if ((c1omget_1.ihead & 2) == 2) { -#line 20350 "" +#line 20344 "" xiltxt += cblock_1.hgtti * 4 / commus_1.musize; -#line 20351 "" +#line 20345 "" xilfrac += cblock_1.etatc; -#line 20352 "" +#line 20346 "" } -#line 20353 "" +#line 20347 "" if ((c1omget_1.ihead & 4) == 4) { -#line 20354 "" +#line 20348 "" xiltxt += cblock_1.hgtco * 4 / commus_1.musize; -#line 20355 "" +#line 20349 "" xilfrac += cblock_1.etacs1; -#line 20356 "" +#line 20350 "" } else { /* Use double the title-composer space if there is no composer */ -#line 20360 "" +#line 20354 "" xilfrac += cblock_1.etatc; -#line 20361 "" +#line 20355 "" } -#line 20362 "" +#line 20356 "" } -#line 20363 "" +#line 20357 "" d__ = xilfrac + nsystp - 1 + cblock_1.etatop + cblock_1.etabot; /* C = nsystp*(nv-1) */ -#line 20365 "" +#line 20359 "" c__ = (real) nintpg; /* xN = heightil - xiltxt - 4*nsystp*nv - (nsystp-1)*xilbn */ -#line 20367 "" +#line 20361 "" xn = heightil - xiltxt - (nintpg + nsystp << 2) - (nsystp - 1) * cblock_1.xilbn; -#line 20368 "" +#line 20362 "" if (bottreb) { -#line 20368 "" +#line 20362 "" xn -= (nsystp - 1) * cblock_1.xilbtc; -#line 20368 "" +#line 20362 "" } -#line 20369 "" +#line 20363 "" if (c1omget_1.ihead == 0 && c1omget_1.isheadr) { -#line 20369 "" +#line 20363 "" xn -= cblock_1.xilhdr; -#line 20369 "" +#line 20363 "" } -#line 20370 "" +#line 20364 "" if (ifig == 1) { -#line 20371 "" +#line 20365 "" xn -= nsystp * cblock_1.xilfig; -#line 20372 "" +#line 20366 "" } -#line 20373 "" +#line 20367 "" glueil = (xn - cblock_1.b * c__) / (d__ + cblock_1.a * c__); -#line 20374 "" +#line 20368 "" omegag = (cblock_1.b * d__ + cblock_1.a * xn) / (d__ + cblock_1.a * c__); @@ -48895,573 +48831,573 @@ L20: /* Only the first page will get local adjustment now if needed, others in pmxb */ -#line 20401 "" +#line 20395 "" if (ifpb == 1 && ipage == 1 && compage_1.fintstf > 0.f) { -#line 20402 "" +#line 20396 "" facins = compage_1.fintstf; -#line 20403 "" +#line 20397 "" compage_1.fintstf = -1.f; -#line 20404 "" +#line 20398 "" } else { /* gintstf = 1.0 by default, but may be changed with AI */ -#line 20408 "" +#line 20402 "" facins = compage_1.gintstf; -#line 20409 "" +#line 20403 "" } -#line 20410 "" - s_wsle(&io___1288); -#line 20410 "" +#line 20404 "" + s_wsle(&io___1283); +#line 20404 "" do_lio(&c__3, &c__1, (char *)&nsystp, (ftnlen)sizeof(integer)); /* Computing MAX */ -#line 20410 "" +#line 20404 "" r__2 = 0.f, r__3 = cblock_1.etatop * glueil; -#line 20410 "" +#line 20404 "" r__1 = dmax(r__2,r__3); -#line 20410 "" +#line 20404 "" do_lio(&c__4, &c__1, (char *)&r__1, (ftnlen)sizeof(real)); -#line 20410 "" +#line 20404 "" r__4 = facins * (omegag + 4); -#line 20410 "" +#line 20404 "" do_lio(&c__4, &c__1, (char *)&r__4, (ftnlen)sizeof(real)); -#line 20410 "" +#line 20404 "" e_wsle(); -#line 20411 "" +#line 20405 "" c1omget_1.ihead = 0; -#line 20412 "" +#line 20406 "" c1omget_1.isheadr = FALSE_; -#line 20413 "" +#line 20407 "" isysb4 = isysendpg; -#line 20414 "" +#line 20408 "" /* L7: */ -#line 20414 "" +#line 20408 "" } -#line 20415 "" +#line 20409 "" /* L8: */ -#line 20415 "" +#line 20409 "" } /* Done with vertical, now do horizontals */ -#line 20419 "" +#line 20413 "" celsk[1] = elsk[0]; -#line 20420 "" +#line 20414 "" i__1 = c1omnotes_1.ibarcnt; -#line 20420 "" +#line 20414 "" for (a1ll_2.ibar = 2; a1ll_2.ibar <= i__1; ++a1ll_2.ibar) { -#line 20421 "" +#line 20415 "" celsk[a1ll_2.ibar] = celsk[a1ll_2.ibar - 1] + elsk[a1ll_2.ibar - 1]; -#line 20422 "" +#line 20416 "" /* L21: */ -#line 20422 "" +#line 20416 "" } -#line 20423 "" +#line 20417 "" lastbar[0] = 0; -#line 20424 "" +#line 20418 "" ibar1 = 1; -#line 20425 "" +#line 20419 "" wmins = -1.f; -#line 20426 "" +#line 20420 "" iflb = 1; -#line 20427 "" +#line 20421 "" imovbrk = 0; -#line 20428 "" +#line 20422 "" ikey = 1; /* Return nsyst to its *total* value */ -#line 20432 "" +#line 20426 "" compage_1.nsyst = compage_1.isysfpb[compage_1.nfpb] - 1; -#line 20433 "" +#line 20427 "" i__1 = compage_1.nsyst; -#line 20433 "" +#line 20427 "" for (isyst = 1; isyst <= i__1; ++isyst) { -#line 20434 "" +#line 20428 "" if (isyst == compage_1.isysflb[iflb]) { -#line 20434 "" +#line 20428 "" ++iflb; -#line 20434 "" +#line 20428 "" } -#line 20435 "" +#line 20429 "" if (compage_1.nmovbrk > 0 && imovbrk < compage_1.nmovbrk) { -#line 20436 "" +#line 20430 "" if (isyst == compage_1.isysmb[imovbrk + 1]) { -#line 20436 "" +#line 20430 "" ++imovbrk; -#line 20436 "" +#line 20430 "" } -#line 20437 "" +#line 20431 "" } -#line 20438 "" +#line 20432 "" ibarb4 = lastbar[isyst - 1]; -#line 20439 "" +#line 20433 "" if (isyst == 1) { -#line 20440 "" +#line 20434 "" if (*isfirst) { -#line 20440 "" +#line 20434 "" elsstarg = celsk[compage_1.ibarflb[1] - 1] / ( compage_1.isysflb[1] - 1 - c1omget_1.fracindent) * (1 - c1omget_1.fracindent); -#line 20440 "" +#line 20434 "" } -#line 20442 "" +#line 20436 "" celskb4 = 0.f; -#line 20443 "" +#line 20437 "" } else { -#line 20444 "" +#line 20438 "" celskb4 = celsk[ibarb4]; /* Must dimension isysmb(0:*) just so I can execute this test! */ -#line 20448 "" +#line 20442 "" if (*isfirst) { -#line 20449 "" +#line 20443 "" if (compage_1.nmovbrk > 0 && isyst == compage_1.isysmb[ imovbrk]) { /* First syst after forced line break. There may be indentation. */ -#line 20453 "" +#line 20447 "" elsstarg = (celsk[compage_1.ibarflb[iflb] - 1] - celskb4) / (compage_1.isysflb[iflb] - isyst - compage_1.fracsys[imovbrk - 1]) * (1 - compage_1.fracsys[imovbrk - 1]); -#line 20456 "" +#line 20450 "" } else { /* There is no indentation to deal with */ -#line 20460 "" +#line 20454 "" elsstarg = (celsk[compage_1.ibarflb[iflb] - 1] - celskb4) / (compage_1.isysflb[iflb] - isyst); -#line 20462 "" +#line 20456 "" } -#line 20463 "" +#line 20457 "" } -#line 20464 "" +#line 20458 "" } -#line 20465 "" +#line 20459 "" if (*isfirst) { -#line 20466 "" +#line 20460 "" diff1 = (r__1 = elsstarg - elsk[ibarb4], dabs(r__1)); -#line 20467 "" +#line 20461 "" i__2 = c1omnotes_1.ibarcnt; -#line 20467 "" +#line 20461 "" for (a1ll_2.ibar = ibarb4 + 2; a1ll_2.ibar <= i__2; ++a1ll_2.ibar) { -#line 20468 "" +#line 20462 "" diff = elsstarg - (celsk[a1ll_2.ibar] - celskb4); -#line 20469 "" +#line 20463 "" if (dabs(diff) >= diff1) { -#line 20469 "" +#line 20463 "" goto L24; -#line 20469 "" +#line 20463 "" } -#line 20470 "" +#line 20464 "" diff1 = dabs(diff); -#line 20471 "" +#line 20465 "" /* L23: */ -#line 20471 "" +#line 20465 "" } -#line 20472 "" +#line 20466 "" L24: -#line 20472 "" +#line 20466 "" --a1ll_2.ibar; -#line 20473 "" +#line 20467 "" lastbar[isyst] = a1ll_2.ibar; -#line 20474 "" +#line 20468 "" nbarss[isyst] = a1ll_2.ibar - ibarb4; -#line 20475 "" +#line 20469 "" } else { /* nbarss is given as an input, must compute lastbar and ibar */ -#line 20479 "" +#line 20473 "" lastbar[isyst] = nbarss[isyst] + ibarb4; -#line 20480 "" +#line 20474 "" a1ll_2.ibar = lastbar[isyst]; -#line 20481 "" +#line 20475 "" } /* elss is # of elemskip in the syst. from notes & ars's, not ruleskips, ask's. */ -#line 20485 "" +#line 20479 "" elss[isyst - 1] = celsk[a1ll_2.ibar] - celskb4; -#line 20486 "" - s_wsfe(&io___1303); -#line 20486 "" +#line 20480 "" + s_wsfe(&io___1298); +#line 20480 "" i__2 = lastbar[isyst - 1] + 1; -#line 20486 "" +#line 20480 "" do_fio(&c__1, (char *)&i__2, (ftnlen)sizeof(integer)); -#line 20486 "" +#line 20480 "" e_wsfe(); /* Transposed sigs are isig1, newkey(2,3,...). */ -#line 20490 "" +#line 20484 "" if (ikey == 1) { -#line 20491 "" +#line 20485 "" key1 = comkeys_1.isig1; -#line 20492 "" +#line 20486 "" } else { -#line 20493 "" +#line 20487 "" key1 = comkeys_1.newkey[ikey - 1]; -#line 20494 "" +#line 20488 "" } -#line 20495 "" +#line 20489 "" fsyst = wclef + abs(key1) * wkeysig + 2.f / commus_1.musize; -#line 20496 "" +#line 20490 "" xelsk = 0.f; -#line 20497 "" +#line 20491 "" L1: -#line 20497 "" +#line 20491 "" if (ikey < comkeys_1.nkeys) { -#line 20498 "" +#line 20492 "" if (comkeys_1.ibrkch[ikey] <= lastbar[isyst]) { /* Add space for all key changes */ -#line 20502 "" +#line 20496 "" ++ikey; -#line 20503 "" +#line 20497 "" key2 = comkeys_1.newkey[ikey - 1]; /* Computing MAX */ /* Computing MAX */ -#line 20504 "" +#line 20498 "" i__5 = abs(key1), i__6 = abs(key2); -#line 20504 "" +#line 20498 "" i__3 = (i__2 = key2 - key1, abs(i__2)), i__4 = max(i__5,i__6); -#line 20504 "" +#line 20498 "" naccs = max(i__3,i__4); -#line 20505 "" +#line 20499 "" fsyst += naccs * wkeysig; /* Account for afterruleskips (fbar) */ -#line 20509 "" +#line 20503 "" xelsk += c1ommvl_1.fbar / 2; -#line 20510 "" +#line 20504 "" if (comkeys_1.ibrkch[ikey - 1] < lastbar[isyst] && ! comkeys_1.kchmid[ikey - 1]) { -#line 20510 "" +#line 20504 "" xelsk += -1.f; -#line 20510 "" +#line 20504 "" } -#line 20512 "" +#line 20506 "" key1 = key2; -#line 20513 "" +#line 20507 "" goto L1; -#line 20514 "" +#line 20508 "" } -#line 20515 "" +#line 20509 "" } /* Add extra fixed space for double bar */ -#line 20519 "" +#line 20513 "" if (isyst == compage_1.nsyst) { -#line 20520 "" +#line 20514 "" fsyst += 4.5f / commus_1.musize; -#line 20521 "" +#line 20515 "" } /* Add extra fixed space for initial time signature */ -#line 20525 "" +#line 20519 "" if (isyst == 1) { -#line 20526 "" +#line 20520 "" fsyst += wtimesig; -#line 20527 "" +#line 20521 "" } /* Add extra fixed space for time signature changes & user-defined spaces */ -#line 20531 "" +#line 20525 "" i__2 = lastbar[isyst]; -#line 20531 "" +#line 20525 "" for (ibars = ibarb4 + 1; ibars <= i__2; ++ibars) { -#line 20532 "" +#line 20526 "" if (newmb[ibars - 1]) { -#line 20532 "" +#line 20526 "" fsyst += wtimesig; -#line 20532 "" +#line 20526 "" } -#line 20533 "" +#line 20527 "" fsyst += c1omnotes_1.udsp[ibars - 1] / commus_1.musize; -#line 20534 "" +#line 20528 "" /* L26: */ -#line 20534 "" +#line 20528 "" } -#line 20535 "" +#line 20529 "" if (isyst == 1) { -#line 20536 "" +#line 20530 "" wdpt = compage_1.widthpt * (1 - c1omget_1.fracindent); -#line 20537 "" +#line 20531 "" } else { -#line 20538 "" +#line 20532 "" if (compage_1.nmovbrk > 0 && imovbrk > 0 && isyst == compage_1.isysmb[imovbrk]) { -#line 20540 "" +#line 20534 "" wdpt = compage_1.widthpt * (1 - compage_1.fracsys[imovbrk - 1] ); -#line 20541 "" +#line 20535 "" } else { -#line 20542 "" +#line 20536 "" wdpt = compage_1.widthpt; -#line 20543 "" +#line 20537 "" } -#line 20544 "" +#line 20538 "" } -#line 20545 "" +#line 20539 "" wsyspt = wdpt - fsyst * commus_1.musize - nbarss[isyst] * .4f; /* Checks for min spacing */ /* Get min allowable space */ -#line 20550 "" +#line 20544 "" dtmin = 1e3f; -#line 20551 "" +#line 20545 "" i__2 = ibar1 + nbarss[isyst] - 1; -#line 20551 "" +#line 20545 "" for (a1ll_2.ibar = ibar1; a1ll_2.ibar <= i__2; ++a1ll_2.ibar) { /* Computing MIN */ -#line 20552 "" +#line 20546 "" r__1 = dtmin, r__2 = linecom_1.tnminb[a1ll_2.ibar - 1]; -#line 20552 "" +#line 20546 "" dtmin = dmin(r__1,r__2); -#line 20553 "" +#line 20547 "" if (c1omnotes_1.wminnh[a1ll_2.ibar - 1] >= 0.f) { -#line 20553 "" +#line 20547 "" wmins = c1omnotes_1.wminnh[a1ll_2.ibar - 1]; -#line 20553 "" +#line 20547 "" } -#line 20554 "" +#line 20548 "" /* L45: */ -#line 20554 "" +#line 20548 "" } -#line 20555 "" +#line 20549 "" if (wmins < 0.f) { -#line 20555 "" +#line 20549 "" wmins = .3f; -#line 20555 "" +#line 20549 "" } -#line 20556 "" +#line 20550 "" wminpt = (wmins + 1) * .3f * commus_1.musize; /* Find max duration & # of notes for this system */ -#line 20560 "" +#line 20554 "" dtmax = 0.f; -#line 20561 "" +#line 20555 "" nns = 0; -#line 20562 "" +#line 20556 "" i__2 = c1omnotes_1.nptr[ibar1 + nbarss[isyst] - 1] - 1; -#line 20562 "" +#line 20556 "" for (iptr = c1omnotes_1.nptr[ibar1 - 1]; iptr <= i__2; ++iptr) { /* Computing MAX */ -#line 20563 "" +#line 20557 "" r__1 = dtmax, r__2 = c1omnotes_1.durb[iptr - 1]; -#line 20563 "" +#line 20557 "" dtmax = dmax(r__1,r__2); -#line 20564 "" +#line 20558 "" nns += c1omnotes_1.nnpd[iptr - 1]; -#line 20565 "" +#line 20559 "" /* L43: */ -#line 20565 "" +#line 20559 "" } -#line 20566 "" +#line 20560 "" elmin0 = wsyspt * f1eon_(&dtmin) / (elss[isyst - 1] + xelsk); -#line 20567 "" +#line 20561 "" if (elmin0 >= wminpt) { /* Subtract out fbar stuff to keep old way of passing sumelsk to pmxb; */ /* there is no need to "flatten" */ -#line 20572 "" +#line 20566 "" sumelsk = elss[isyst - 1] - c1ommvl_1.fbar * nbarss[isyst]; -#line 20573 "" +#line 20567 "" comeon_1.eonk = 0.f; -#line 20574 "" +#line 20568 "" comeon_1.ewmxk = 1.f; -#line 20575 "" +#line 20569 "" } else { -#line 20576 "" +#line 20570 "" elmin1 = wsyspt / ((c1ommvl_1.fbar * nbarss[isyst] + xelsk) / f1eon_(&dtmax) + nns); -#line 20577 "" +#line 20571 "" if (elmin1 <= wminpt) { /* print* */ /* print*,'In system #',isyst,' cannot meet min. space rqmt' */ /* write(15,'(/a,i5,a)') */ /* * 'In system #',isyst,' cannot meet min. space rqmt' */ -#line 20582 "" +#line 20576 "" comeon_1.eonk = .9f; -#line 20583 "" +#line 20577 "" } else { /* Find eonk by Newton method */ -#line 20587 "" +#line 20581 "" i__2 = c1omnotes_1.nptr[ibar1 + nbarss[isyst] - 1] - 1; -#line 20587 "" +#line 20581 "" r__1 = wsyspt / wminpt; -#line 20587 "" +#line 20581 "" r__2 = c1ommvl_1.fbar * nbarss[isyst] + xelsk; -#line 20587 "" +#line 20581 "" r__3 = (wminpt - elmin0) / (elmin1 - elmin0); -#line 20587 "" +#line 20581 "" findeonk_(&c1omnotes_1.nptr[ibar1 - 1], &i__2, &r__1, &r__2, & dtmin, &dtmax, &r__3); -#line 20590 "" +#line 20584 "" comeon_1.eonk = dmin(.9f,comeon_1.eonk); -#line 20591 "" +#line 20585 "" } -#line 20592 "" +#line 20586 "" d__1 = (doublereal) f1eon_(&dtmax); -#line 20592 "" +#line 20586 "" d__2 = (doublereal) comeon_1.eonk; -#line 20592 "" +#line 20586 "" comeon_1.ewmxk = pow_dd(&d__1, &d__2); /* Recompute poenom! */ -#line 20596 "" +#line 20590 "" sumelsk = 0.f; -#line 20597 "" +#line 20591 "" i__2 = c1omnotes_1.nptr[ibar1 + nbarss[isyst] - 1] - 1; -#line 20597 "" +#line 20591 "" for (iptr = c1omnotes_1.nptr[ibar1 - 1]; iptr <= i__2; ++iptr) { -#line 20598 "" +#line 20592 "" r__1 = c1omnotes_1.durb[iptr - 1] / c1omnotes_1.sqzb[iptr - 1] ; -#line 20598 "" +#line 20592 "" sumelsk += c1omnotes_1.nnpd[iptr - 1] * c1omnotes_1.sqzb[iptr - 1] * feon_(&r__1); -#line 20600 "" +#line 20594 "" /* L44: */ -#line 20600 "" +#line 20594 "" } -#line 20601 "" +#line 20595 "" } -#line 20602 "" +#line 20596 "" poenom = wsyspt / (sumelsk + c1ommvl_1.fbar * nbarss[isyst] + xelsk); /* Set fracindent for output: orig if isyst=1, fracsys(imovbrk) if movbrk, else 0 */ -#line 20606 "" +#line 20600 "" if (isyst > 0) { -#line 20607 "" +#line 20601 "" if (compage_1.nmovbrk > 0 && imovbrk > 0 && isyst == compage_1.isysmb[imovbrk]) { -#line 20609 "" +#line 20603 "" c1omget_1.fracindent = compage_1.fracsys[imovbrk - 1]; -#line 20610 "" +#line 20604 "" } else { -#line 20611 "" +#line 20605 "" c1omget_1.fracindent = 0.f; -#line 20612 "" +#line 20606 "" } -#line 20613 "" +#line 20607 "" } -#line 20614 "" - s_wsfe(&io___1321); -#line 20614 "" +#line 20608 "" + s_wsfe(&io___1316); +#line 20608 "" do_fio(&c__1, (char *)&poenom, (ftnlen)sizeof(real)); -#line 20614 "" +#line 20608 "" do_fio(&c__1, (char *)&nbarss[isyst], (ftnlen)sizeof(integer)); -#line 20614 "" +#line 20608 "" do_fio(&c__1, (char *)&sumelsk, (ftnlen)sizeof(real)); -#line 20614 "" +#line 20608 "" do_fio(&c__1, (char *)&fsyst, (ftnlen)sizeof(real)); -#line 20614 "" +#line 20608 "" do_fio(&c__1, (char *)&c1omget_1.fracindent, (ftnlen)sizeof(real)); -#line 20614 "" +#line 20608 "" do_fio(&c__1, (char *)&comeon_1.eonk, (ftnlen)sizeof(real)); -#line 20614 "" +#line 20608 "" do_fio(&c__1, (char *)&comeon_1.ewmxk, (ftnlen)sizeof(real)); -#line 20614 "" +#line 20608 "" e_wsfe(); -#line 20616 "" +#line 20610 "" ibar1 += nbarss[isyst]; -#line 20617 "" +#line 20611 "" /* L22: */ -#line 20617 "" +#line 20611 "" } -#line 20618 "" +#line 20612 "" al__1.aerr = 0; -#line 20618 "" +#line 20612 "" al__1.aunit = 12; -#line 20618 "" +#line 20612 "" f_rew(&al__1); -#line 20619 "" +#line 20613 "" o__1.oerr = 0; -#line 20619 "" +#line 20613 "" o__1.ounit = 13; -#line 20619 "" +#line 20613 "" o__1.ofnm = 0; -#line 20619 "" +#line 20613 "" o__1.orl = 0; -#line 20619 "" +#line 20613 "" o__1.osta = "SCRATCH"; -#line 20619 "" +#line 20613 "" o__1.oacc = 0; -#line 20619 "" +#line 20613 "" o__1.ofm = 0; -#line 20619 "" +#line 20613 "" o__1.oblnk = 0; -#line 20619 "" +#line 20613 "" f_open(&o__1); -#line 20620 "" - s_wsfe(&io___1322); -#line 20620 "" +#line 20614 "" + s_wsfe(&io___1317); +#line 20614 "" do_fio(&c__1, (char *)&ifig, (ftnlen)sizeof(integer)); -#line 20620 "" +#line 20614 "" e_wsfe(); -#line 20621 "" +#line 20615 "" al__1.aerr = 0; -#line 20621 "" +#line 20615 "" al__1.aunit = 13; -#line 20621 "" +#line 20615 "" f_rew(&al__1); -#line 20622 "" +#line 20616 "" inbuff_1.ilbuf = 1; -#line 20623 "" +#line 20617 "" inbuff_1.ipbuf = 0; -#line 20624 "" +#line 20618 "" if (! (*optimize)) { -#line 20625 "" - s_wsfe(&io___1323); -#line 20625 "" +#line 20619 "" + s_wsfe(&io___1318); +#line 20619 "" do_fio(&c__1, " Done with first pass", (ftnlen)21); -#line 20625 "" +#line 20619 "" e_wsfe(); -#line 20626 "" - s_wsle(&io___1324); -#line 20626 "" +#line 20620 "" + s_wsle(&io___1319); +#line 20620 "" e_wsle(); -#line 20627 "" - s_wsfe(&io___1325); -#line 20627 "" +#line 20621 "" + s_wsfe(&io___1320); +#line 20621 "" do_fio(&c__1, " Done with first pass", (ftnlen)21); -#line 20627 "" +#line 20621 "" e_wsfe(); -#line 20628 "" - s_wsfe(&io___1326); -#line 20628 "" +#line 20622 "" + s_wsfe(&io___1321); +#line 20622 "" e_wsfe(); -#line 20629 "" +#line 20623 "" } /* Following syntax is needed since pmxa is called with literal argument .false. */ -#line 20633 "" +#line 20627 "" if (*isfirst) { -#line 20633 "" +#line 20627 "" *isfirst = FALSE_; -#line 20633 "" +#line 20627 "" } -#line 20634 "" +#line 20628 "" return 0; } /* pmxa_ */ @@ -49610,87 +49546,92 @@ L1: integer *, real *, logical *, logical *); /* Fortran I/O blocks */ - static cilist io___1327 = { 0, 6, 0, 0, 0 }; - static cilist io___1328 = { 0, 6, 0, 0, 0 }; - static cilist io___1329 = { 0, 6, 0, 0, 0 }; - static cilist io___1330 = { 0, 15, 0, "(a)", 0 }; - static cilist io___1334 = { 0, 12, 0, "(a)", 0 }; - static cilist io___1336 = { 0, 12, 0, 0, 0 }; - static cilist io___1338 = { 0, 12, 0, 0, 0 }; - static cilist io___1354 = { 0, 6, 0, 0, 0 }; - static cilist io___1355 = { 0, 12, 0, 0, 0 }; - static cilist io___1361 = { 0, 13, 0, 0, 0 }; - static cilist io___1363 = { 0, 14, 0, "(a)", 0 }; + static cilist io___1322 = { 0, 6, 0, 0, 0 }; + static cilist io___1323 = { 0, 6, 0, 0, 0 }; + static cilist io___1324 = { 0, 6, 0, 0, 0 }; + static cilist io___1325 = { 0, 15, 0, "(a)", 0 }; + static cilist io___1329 = { 0, 12, 0, "(a)", 0 }; + static cilist io___1331 = { 0, 12, 0, 0, 0 }; + static cilist io___1333 = { 0, 12, 0, 0, 0 }; + static cilist io___1349 = { 0, 6, 0, 0, 0 }; + static cilist io___1350 = { 0, 12, 0, 0, 0 }; + static cilist io___1356 = { 0, 13, 0, 0, 0 }; + static cilist io___1358 = { 0, 14, 0, "(a)", 0 }; + static cilist io___1361 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1362 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1363 = { 0, 11, 0, "(a)", 0 }; static cilist io___1366 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1367 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1368 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1371 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1382 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1384 = { 0, 6, 0, "(/,a20,i4,a1,i4)", 0 }; - static cilist io___1385 = { 0, 15, 0, "(/,a20,i4,a1,i4)", 0 }; - static cilist io___1389 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1390 = { 0, 11, 0, "(a14,f4.1,a)", 0 }; - static cilist io___1399 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1408 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1411 = { 0, 6, 0, 0, 0 }; - static cilist io___1412 = { 0, 6, 0, 0, 0 }; - static cilist io___1413 = { 0, 11, 0, "(a20,i1,a)", 0 }; - static cilist io___1414 = { 0, 11, 0, "(a20,i2,a)", 0 }; - static cilist io___1415 = { 0, 11, 0, "(a20)", 0 }; - static cilist io___1416 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1418 = { 0, 11, 0, "(a11,i2,a2)", 0 }; - static cilist io___1419 = { 0, 11, 0, "(a11,i1,a2)", 0 }; - static cilist io___1420 = { 0, 12, 0, 0, 0 }; - static cilist io___1423 = { 0, 6, 0, 0, 0 }; - static cilist io___1424 = { 0, 6, 0, 0, 0 }; + static cilist io___1377 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1379 = { 0, 6, 0, "(/,a20,i4,a1,i4)", 0 }; + static cilist io___1380 = { 0, 15, 0, "(/,a20,i4,a1,i4)", 0 }; + static cilist io___1384 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1385 = { 0, 11, 0, "(a14,f4.1,a)", 0 }; + static cilist io___1394 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1403 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1406 = { 0, 6, 0, 0, 0 }; + static cilist io___1407 = { 0, 6, 0, 0, 0 }; + static cilist io___1408 = { 0, 11, 0, "(a20,i1,a)", 0 }; + static cilist io___1409 = { 0, 11, 0, "(a20,i2,a)", 0 }; + static cilist io___1410 = { 0, 11, 0, "(a20)", 0 }; + static cilist io___1411 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1413 = { 0, 11, 0, "(a11,i2,a2)", 0 }; + static cilist io___1414 = { 0, 11, 0, "(a11,i1,a2)", 0 }; + static cilist io___1415 = { 0, 12, 0, 0, 0 }; + static cilist io___1418 = { 0, 6, 0, 0, 0 }; + static cilist io___1419 = { 0, 6, 0, 0, 0 }; + static cilist io___1422 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1423 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1424 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1425 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1426 = { 0, 11, 0, "(a)", 0 }; static cilist io___1427 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1428 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1429 = { 0, 11, 0, "(a)", 0 }; static cilist io___1430 = { 0, 11, 0, "(a)", 0 }; static cilist io___1431 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1432 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1435 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1436 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1438 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1439 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1448 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1449 = { 0, 12, 0, 0, 0 }; - static cilist io___1451 = { 0, 14, 0, "(a9,i2,a10,i2,1x,a4)", 0 }; - static cilist io___1454 = { 0, 11, 0, fmtq, 0 }; - static cilist io___1456 = { 0, 6, 0, 0, 0 }; - static cilist io___1457 = { 0, 6, 0, 0, 0 }; + static cilist io___1433 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1434 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1443 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1444 = { 0, 12, 0, 0, 0 }; + static cilist io___1446 = { 0, 14, 0, "(a9,i2,a10,i2,1x,a4)", 0 }; + static cilist io___1449 = { 0, 11, 0, fmtq, 0 }; + static cilist io___1451 = { 0, 6, 0, 0, 0 }; + static cilist io___1452 = { 0, 6, 0, 0, 0 }; + static cilist io___1453 = { 0, 11, 0, "(a)", 0 }; + static icilist io___1456 = { 0, nmq+12, 0, "(2i1)", 2, 1 }; + static icilist io___1457 = { 0, nmq+12, 0, "(a1,i2,a1,i1)", 5, 1 }; static cilist io___1458 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1461 = { 0, nmq+12, 0, "(2i1)", 2, 1 }; - static icilist io___1462 = { 0, nmq+12, 0, "(a1,i2,a1,i1)", 5, 1 }; - static cilist io___1463 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1464 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1465 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1466 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1467 = { 0, 11, 0, "(a6,i2,a11)", 0 }; - static cilist io___1468 = { 0, 11, 0, "(a6,i1,a11)", 0 }; - static cilist io___1469 = { 0, 11, 0, "(a8,i1,a3)", 0 }; - static cilist io___1470 = { 0, 11, 0, "(a9,i2,a4)", 0 }; - static cilist io___1471 = { 0, 11, 0, "(a18,i1,a2)", 0 }; - static cilist io___1472 = { 0, 11, 0, "(a18,i2,a2)", 0 }; - static cilist io___1474 = { 0, 11, 0, "(a11,i1,a2)", 0 }; - static cilist io___1475 = { 0, 11, 0, "(a11,i2,a2)", 0 }; - static cilist io___1476 = { 0, 11, 0, "(a11,i3,a2)", 0 }; + static cilist io___1459 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1460 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1461 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1462 = { 0, 11, 0, "(a6,i2,a11)", 0 }; + static cilist io___1463 = { 0, 11, 0, "(a6,i1,a11)", 0 }; + static cilist io___1464 = { 0, 11, 0, "(a8,i1,a3)", 0 }; + static cilist io___1465 = { 0, 11, 0, "(a9,i2,a4)", 0 }; + static cilist io___1466 = { 0, 11, 0, "(a18,i1,a2)", 0 }; + static cilist io___1467 = { 0, 11, 0, "(a18,i2,a2)", 0 }; + static cilist io___1469 = { 0, 11, 0, "(a11,i1,a2)", 0 }; + static cilist io___1470 = { 0, 11, 0, "(a11,i2,a2)", 0 }; + static cilist io___1471 = { 0, 11, 0, "(a11,i3,a2)", 0 }; + static cilist io___1472 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1473 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1475 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1476 = { 0, 11, 0, "(a)", 0 }; static cilist io___1477 = { 0, 11, 0, "(a)", 0 }; static cilist io___1478 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1480 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1481 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1482 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1483 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1484 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1489 = { 0, shortfraq, 0, "(i2)", 2, 1 }; - static cilist io___1490 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1479 = { 0, 11, 0, "(a)", 0 }; + static icilist io___1484 = { 0, shortfraq, 0, "(i2)", 2, 1 }; + static cilist io___1485 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1486 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1487 = { 0, 11, 0, fmtq, 0 }; + static cilist io___1489 = { 0, 11, 0, fmtq, 0 }; + static cilist io___1490 = { 0, 11, 0, fmtq, 0 }; static cilist io___1491 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1492 = { 0, 11, 0, fmtq, 0 }; - static cilist io___1494 = { 0, 11, 0, fmtq, 0 }; - static cilist io___1495 = { 0, 11, 0, fmtq, 0 }; + static cilist io___1492 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1493 = { 0, 11, 0, fmtq, 0 }; + static cilist io___1494 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1495 = { 0, 11, 0, "(a)", 0 }; static cilist io___1496 = { 0, 11, 0, "(a)", 0 }; static cilist io___1497 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1498 = { 0, 11, 0, fmtq, 0 }; + static cilist io___1498 = { 0, 11, 0, "(a)", 0 }; static cilist io___1499 = { 0, 11, 0, "(a)", 0 }; static cilist io___1500 = { 0, 11, 0, "(a)", 0 }; static cilist io___1501 = { 0, 11, 0, "(a)", 0 }; @@ -49699,81 +49640,76 @@ L1: static cilist io___1504 = { 0, 11, 0, "(a)", 0 }; static cilist io___1505 = { 0, 11, 0, "(a)", 0 }; static cilist io___1506 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1507 = { 0, 11, 0, "(a)", 0 }; + static icilist io___1507 = { 0, shortfraq, 0, "(f3.2)", 3, 1 }; static cilist io___1508 = { 0, 11, 0, "(a)", 0 }; static cilist io___1509 = { 0, 11, 0, "(a)", 0 }; static cilist io___1510 = { 0, 11, 0, "(a)", 0 }; static cilist io___1511 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1512 = { 0, shortfraq, 0, "(f3.2)", 3, 1 }; - static cilist io___1513 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1512 = { 0, 11, 0, "(a)", 0 }; + static icilist io___1513 = { 0, shortfraq, 0, "(i2)", 2, 1 }; static cilist io___1514 = { 0, 11, 0, "(a)", 0 }; static cilist io___1515 = { 0, 11, 0, "(a)", 0 }; static cilist io___1516 = { 0, 11, 0, "(a)", 0 }; static cilist io___1517 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1518 = { 0, shortfraq, 0, "(i2)", 2, 1 }; - static cilist io___1519 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1518 = { 0, 11, 0, "(a)", 0 }; + static icilist io___1519 = { 0, shortfraq, 0, "(f3.2)", 3, 1 }; static cilist io___1520 = { 0, 11, 0, "(a)", 0 }; static cilist io___1521 = { 0, 11, 0, "(a)", 0 }; static cilist io___1522 = { 0, 11, 0, "(a)", 0 }; static cilist io___1523 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1524 = { 0, shortfraq, 0, "(f3.2)", 3, 1 }; + static icilist io___1524 = { 0, shortfraq, 0, "(i2)", 2, 1 }; static cilist io___1525 = { 0, 11, 0, "(a)", 0 }; static cilist io___1526 = { 0, 11, 0, "(a)", 0 }; static cilist io___1527 = { 0, 11, 0, "(a)", 0 }; static cilist io___1528 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1529 = { 0, shortfraq, 0, "(i2)", 2, 1 }; + static cilist io___1529 = { 0, 11, 0, "(a)", 0 }; static cilist io___1530 = { 0, 11, 0, "(a)", 0 }; static cilist io___1531 = { 0, 11, 0, "(a)", 0 }; static cilist io___1532 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1533 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1533 = { 0, 11, 0, "(a16,i1,a14)", 0 }; static cilist io___1534 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1535 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1536 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1537 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1538 = { 0, 11, 0, "(a16,i1,a14)", 0 }; + static cilist io___1535 = { 0, 12, 1, 0, 0 }; + static cilist io___1538 = { 0, 11, 0, "(a)", 0 }; static cilist io___1539 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1540 = { 0, 12, 1, 0, 0 }; + static cilist io___1540 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1542 = { 0, 11, 0, "(a)", 0 }; static cilist io___1543 = { 0, 11, 0, "(a)", 0 }; static cilist io___1544 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1545 = { 0, 11, 0, "(a)", 0 }; + static icilist io___1545 = { 0, shortfraq, 0, "(i2)", 2, 1 }; + static cilist io___1546 = { 0, 11, 0, "(a)", 0 }; static cilist io___1547 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1548 = { 0, 11, 0, "(a)", 0 }; + static icilist io___1548 = { 0, shortfraq, 0, "(f3.2)", 3, 1 }; static cilist io___1549 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1550 = { 0, shortfraq, 0, "(i2)", 2, 1 }; + static cilist io___1550 = { 0, 11, 0, "(a)", 0 }; static cilist io___1551 = { 0, 11, 0, "(a)", 0 }; static cilist io___1552 = { 0, 11, 0, "(a)", 0 }; - static icilist io___1553 = { 0, shortfraq, 0, "(f3.2)", 3, 1 }; + static cilist io___1553 = { 0, 11, 0, "(a,2i1,a)", 0 }; static cilist io___1554 = { 0, 11, 0, "(a)", 0 }; static cilist io___1555 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1556 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1557 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1558 = { 0, 11, 0, "(a,2i1,a)", 0 }; - static cilist io___1559 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1560 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1576 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1577 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1585 = { 0, 11, 0, "(a11,f5.1,a4)", 0 }; + static cilist io___1571 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1572 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1580 = { 0, 11, 0, "(a11,f5.1,a4)", 0 }; + static cilist io___1581 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1583 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1584 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1585 = { 0, 11, 0, "(a)", 0 }; static cilist io___1586 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1588 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1589 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1587 = { 0, 6, 0, 0, 0 }; + static cilist io___1588 = { 0, 6, 0, 0, 0 }; + static cilist io___1589 = { 0, 15, 0, 0, 0 }; static cilist io___1590 = { 0, 11, 0, "(a)", 0 }; static cilist io___1591 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1592 = { 0, 6, 0, 0, 0 }; - static cilist io___1593 = { 0, 6, 0, 0, 0 }; - static cilist io___1594 = { 0, 15, 0, 0, 0 }; + static cilist io___1592 = { 0, 11, 0, fmtq, 0 }; + static cilist io___1593 = { 0, 11, 0, fmtq, 0 }; + static cilist io___1594 = { 0, 11, 0, "(a)", 0 }; static cilist io___1595 = { 0, 11, 0, "(a)", 0 }; static cilist io___1596 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1597 = { 0, 11, 0, fmtq, 0 }; - static cilist io___1598 = { 0, 11, 0, fmtq, 0 }; - static cilist io___1599 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1600 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1601 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1602 = { 0, 14, 0, "(a9,i2,a10,i2,1x,a5)", 0 }; - static cilist io___1603 = { 0, 6, 0, 0, 0 }; - static cilist io___1604 = { 0, 6, 0, 0, 0 }; - static cilist io___1605 = { 0, 6, 0, 0, 0 }; - static cilist io___1606 = { 0, 15, 0, "(/,a)", 0 }; - static cilist io___1607 = { 0, 15, 0, "(a)", 0 }; + static cilist io___1597 = { 0, 14, 0, "(a9,i2,a10,i2,1x,a5)", 0 }; + static cilist io___1598 = { 0, 6, 0, 0, 0 }; + static cilist io___1599 = { 0, 6, 0, 0, 0 }; + static cilist io___1600 = { 0, 6, 0, 0, 0 }; + static cilist io___1601 = { 0, 15, 0, "(/,a)", 0 }; + static cilist io___1602 = { 0, 15, 0, "(a)", 0 }; /* ccccccccccccccccccccccccc */ @@ -50097,124 +50033,124 @@ L1: /* Bits in icrdorn are same as in iornq, even tho most orns won't go in crds. */ /* ccccccccccccccccccccccccccccccc */ -#line 21100 "" +#line 21094 "" /* Parameter adjustments */ -#line 21100 "" +#line 21094 "" --poevec; -#line 21100 "" +#line 21094 "" -#line 21100 "" +#line 21094 "" /* Function Body */ -#line 21100 "" +#line 21094 "" combottop_1.bottopgap = FALSE_; -#line 21101 "" +#line 21095 "" comlyr_1.inputmlyr = FALSE_; -#line 21102 "" +#line 21096 "" comhair_2.idhairuse = 0; -#line 21103 "" +#line 21097 "" if (! (*optimize)) { -#line 21104 "" - s_wsle(&io___1327); -#line 21104 "" +#line 21098 "" + s_wsle(&io___1322); +#line 21098 "" e_wsle(); -#line 21105 "" - s_wsle(&io___1328); -#line 21105 "" +#line 21099 "" + s_wsle(&io___1323); +#line 21099 "" do_lio(&c__9, &c__1, "Starting second PMX pass", (ftnlen)24); -#line 21105 "" +#line 21099 "" e_wsle(); -#line 21106 "" - s_wsle(&io___1329); -#line 21106 "" +#line 21100 "" + s_wsle(&io___1324); +#line 21100 "" e_wsle(); -#line 21107 "" - s_wsfe(&io___1330); -#line 21107 "" +#line 21101 "" + s_wsfe(&io___1325); +#line 21101 "" do_fio(&c__1, "Starting second PMX pass", (ftnlen)24); -#line 21107 "" +#line 21101 "" e_wsfe(); -#line 21108 "" +#line 21102 "" } -#line 21109 "" +#line 21103 "" newclef = FALSE_; -#line 21110 "" +#line 21104 "" comclefrests_1.centrests = FALSE_; -#line 21111 "" +#line 21105 "" ++(*ncalls); -#line 21112 "" +#line 21106 "" comlast_1.islast = *inlast; -#line 21113 "" +#line 21107 "" commac_1.macuse = 0; -#line 21114 "" +#line 21108 "" isyscnt = 0; -#line 21115 "" +#line 21109 "" all_1.stemmax = 8.2f; -#line 21116 "" +#line 21110 "" all_1.stemmin = 3.9f; -#line 21117 "" +#line 21111 "" all_1.stemlen = 6.f; -#line 21118 "" +#line 21112 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 21118 "" +#line 21112 "" *(unsigned char *)all_1.sq = *(unsigned char *)&ch__1[0]; -#line 21119 "" +#line 21113 "" comignorenats_1.ignorenats = FALSE_; -#line 21120 "" +#line 21114 "" comignorenats_1.newmbrhgt = FALSE_; -#line 21121 "" +#line 21115 "" combc_1.bcspec = TRUE_; -#line 21122 "" +#line 21116 "" comas3_1.topmods = FALSE_; -#line 21123 "" +#line 21117 "" ismbr = FALSE_; -#line 21124 "" - s_rsfe(&io___1334); -#line 21124 "" +#line 21118 "" + s_rsfe(&io___1329); +#line 21118 "" do_fio(&c__1, basenameq, (ftnlen)44); -#line 21124 "" +#line 21118 "" e_rsfe(); -#line 21125 "" - s_rsle(&io___1336); -#line 21125 "" +#line 21119 "" + s_rsle(&io___1331); +#line 21119 "" do_lio(&c__3, &c__1, (char *)&lbase, (ftnlen)sizeof(integer)); -#line 21125 "" +#line 21119 "" e_rsle(); -#line 21126 "" - s_rsle(&io___1338); -#line 21126 "" +#line 21120 "" + s_rsle(&io___1333); +#line 21120 "" do_lio(&c__4, &c__1, (char *)&comask_1.fbar, (ftnlen)sizeof(real)); -#line 21126 "" +#line 21120 "" do_lio(&c__4, &c__1, (char *)&comask_1.wheadpt, (ftnlen)sizeof(real)); -#line 21126 "" +#line 21120 "" do_lio(&c__4, &c__1, (char *)&etait, (ftnlen)sizeof(real)); -#line 21126 "" +#line 21120 "" do_lio(&c__4, &c__1, (char *)&etatc, (ftnlen)sizeof(real)); -#line 21126 "" +#line 21120 "" do_lio(&c__4, &c__1, (char *)&etacs1, (ftnlen)sizeof(real)); -#line 21126 "" +#line 21120 "" do_lio(&c__4, &c__1, (char *)&etatop, (ftnlen)sizeof(real)); -#line 21126 "" +#line 21120 "" do_lio(&c__4, &c__1, (char *)&etabot, (ftnlen)sizeof(real)); -#line 21126 "" +#line 21120 "" do_lio(&c__3, &c__1, (char *)&cominbot_1.inbothd, (ftnlen)sizeof(integer)) ; -#line 21126 "" +#line 21120 "" do_lio(&c__3, &c__1, (char *)&inhnoh, (ftnlen)sizeof(integer)); -#line 21126 "" +#line 21120 "" do_lio(&c__3, &c__1, (char *)&comtop_1.isig, (ftnlen)sizeof(integer)); -#line 21126 "" +#line 21120 "" e_rsle(); -#line 21128 "" +#line 21122 "" inbuff_1.ilbuf = 1; -#line 21129 "" +#line 21123 "" inbuff_1.ipbuf = 0; -#line 21130 "" +#line 21124 "" getset_(&all_1.nv, &noinst, &all_1.mtrnuml, &all_1.mtrdenl, &all_1.mtrnmp, &all_1.mtrdnp, &xmtrnum0, &npages, &nsyst, &all_1.musicsize, & comtop_1.fracindent, &istype0, comtop_1.inameq, comclefq_1.clefq, all_1.sepsymq, pathnameq, &lpath, &comtop_1.isig0, (ftnlen)79, ( ftnlen)1, (ftnlen)1, (ftnlen)40); -#line 21133 "" +#line 21127 "" if (commidi_1.ismidi) { /* Initial key signature and meter for pickup bar */ @@ -50227,199 +50163,199 @@ L1: /* Above is probably cosmetic */ /* call midievent('k',midisig,0) */ -#line 21145 "" +#line 21139 "" if (xmtrnum0 > comtol_1.tol) { /* We have a pickup. Some tricky stuff to get a meter: */ -#line 21149 "" +#line 21143 "" xntrial = xmtrnum0; -#line 21150 "" +#line 21144 "" for (ip2 = 0; ip2 <= 5; ++ip2) { -#line 21151 "" +#line 21145 "" if ((r__1 = r_mod(&xntrial, &c_b1053), dabs(r__1)) < comtol_1.tol) { -#line 21151 "" +#line 21145 "" goto L6; -#line 21151 "" +#line 21145 "" } -#line 21152 "" +#line 21146 "" xntrial *= 2; -#line 21153 "" +#line 21147 "" /* L5: */ -#line 21153 "" +#line 21147 "" } -#line 21154 "" - s_wsle(&io___1354); -#line 21154 "" +#line 21148 "" + s_wsle(&io___1349); +#line 21148 "" do_lio(&c__9, &c__1, "Problem finding meter for pickup bar", ( ftnlen)36); -#line 21154 "" +#line 21148 "" e_wsle(); -#line 21155 "" +#line 21149 "" xntrial = 1.f; -#line 21156 "" +#line 21150 "" ip2 = 0; -#line 21157 "" +#line 21151 "" L6: -#line 21158 "" +#line 21152 "" i__1 = i_nint(&xntrial); -#line 21158 "" +#line 21152 "" i__2 = pow_ii(&c__2, &ip2) * all_1.mtrdenl; -#line 21158 "" +#line 21152 "" midievent_("m", &i__1, &i__2, (ftnlen)1); -#line 21159 "" +#line 21153 "" } else { /* No pickup, enter the starting meter */ -#line 21163 "" +#line 21157 "" midievent_("m", &all_1.mtrnuml, &all_1.mtrdenl, (ftnlen)1); -#line 21164 "" +#line 21158 "" } -#line 21165 "" +#line 21159 "" } /* Set musicsize from value passed in common, due to possible reset by S[n]m16 */ -#line 21169 "" +#line 21163 "" all_1.musicsize = commus_1.musize; -#line 21170 "" - s_rsle(&io___1355); -#line 21170 "" +#line 21164 "" + s_rsle(&io___1350); +#line 21164 "" do_lio(&c__3, &c__1, (char *)&npages, (ftnlen)sizeof(integer)); -#line 21170 "" +#line 21164 "" do_lio(&c__4, &c__1, (char *)&comtop_1.widthpt, (ftnlen)sizeof(real)); -#line 21170 "" +#line 21164 "" do_lio(&c__4, &c__1, (char *)&comtop_1.height, (ftnlen)sizeof(real)); -#line 21170 "" +#line 21164 "" do_lio(&c__4, &c__1, (char *)&comtop_1.hoffpt, (ftnlen)sizeof(real)); -#line 21170 "" +#line 21164 "" do_lio(&c__4, &c__1, (char *)&comtop_1.voffpt, (ftnlen)sizeof(real)); -#line 21170 "" +#line 21164 "" do_lio(&c__3, &c__1, (char *)&nsyst, (ftnlen)sizeof(integer)); -#line 21170 "" +#line 21164 "" i__1 = npages; -#line 21170 "" +#line 21164 "" for (ipa = 1; ipa <= i__1; ++ipa) { -#line 21170 "" +#line 21164 "" do_lio(&c__3, &c__1, (char *)&comnotes_1.nsystp[ipa - 1], (ftnlen) sizeof(integer)); -#line 21170 "" +#line 21164 "" do_lio(&c__4, &c__1, (char *)&xnsttop[ipa - 1], (ftnlen)sizeof(real)); -#line 21170 "" +#line 21164 "" do_lio(&c__4, &c__1, (char *)&xintstaff[ipa - 1], (ftnlen)sizeof(real) ); -#line 21170 "" +#line 21164 "" } -#line 21170 "" +#line 21164 "" do_lio(&c__3, &c__1, (char *)&iauto, (ftnlen)sizeof(integer)); -#line 21170 "" +#line 21164 "" e_rsle(); /* If default width ever changes, must adjust this stmt. */ -#line 21175 "" +#line 21169 "" slfac1 = 2.98156f / comtop_1.widthpt; -#line 21176 "" +#line 21170 "" all_1.figbass = FALSE_; -#line 21177 "" - s_rsle(&io___1361); -#line 21177 "" +#line 21171 "" + s_rsle(&io___1356); +#line 21171 "" do_lio(&c__3, &c__1, (char *)&ifig, (ftnlen)sizeof(integer)); -#line 21177 "" +#line 21171 "" e_rsle(); -#line 21178 "" +#line 21172 "" if (ifig == 1) { -#line 21179 "" +#line 21173 "" all_1.figbass = TRUE_; -#line 21180 "" +#line 21174 "" o__1.oerr = 0; -#line 21180 "" +#line 21174 "" o__1.ounit = 14; -#line 21180 "" +#line 21174 "" o__1.ofnm = 0; -#line 21180 "" +#line 21174 "" o__1.orl = 0; -#line 21180 "" +#line 21174 "" o__1.osta = "SCRATCH"; -#line 21180 "" +#line 21174 "" o__1.oacc = 0; -#line 21180 "" +#line 21174 "" o__1.ofm = 0; -#line 21180 "" +#line 21174 "" o__1.oblnk = 0; -#line 21180 "" +#line 21174 "" f_open(&o__1); -#line 21181 "" - s_wsfe(&io___1363); +#line 21175 "" + s_wsfe(&io___1358); /* Writing concatenation */ -#line 21181 "" +#line 21175 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 21181 "" +#line 21175 "" i__3[1] = 3, a__1[1] = "def"; -#line 21181 "" +#line 21175 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 21181 "" +#line 21175 "" i__3[3] = 8, a__1[3] = "fixdrop{"; -#line 21181 "" +#line 21175 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 21181 "" +#line 21175 "" i__3[5] = 7, a__1[5] = "advance"; -#line 21181 "" +#line 21175 "" i__3[6] = 1, a__1[6] = all_1.sq; -#line 21181 "" +#line 21175 "" i__3[7] = 10, a__1[7] = "sysno by 1"; -#line 21181 "" +#line 21175 "" i__3[8] = 1, a__1[8] = all_1.sq; -#line 21181 "" +#line 21175 "" i__3[9] = 6, a__1[9] = "ifcase"; -#line 21181 "" +#line 21175 "" i__3[10] = 1, a__1[10] = all_1.sq; -#line 21181 "" +#line 21175 "" i__3[11] = 6, a__1[11] = "sysno%"; -#line 21181 "" +#line 21175 "" s_cat(ch__2, a__1, i__3, &c__12, (ftnlen)46); -#line 21181 "" +#line 21175 "" do_fio(&c__1, ch__2, (ftnlen)46); -#line 21181 "" +#line 21175 "" e_wsfe(); -#line 21183 "" +#line 21177 "" } -#line 21184 "" +#line 21178 "" comget_1.lastchar = FALSE_; -#line 21185 "" +#line 21179 "" ibcoff = 0; -#line 21186 "" +#line 21180 "" if (xmtrnum0 > 0.f) { -#line 21186 "" +#line 21180 "" ibcoff = -1; -#line 21186 "" +#line 21180 "" } -#line 21187 "" +#line 21181 "" o__1.oerr = 0; -#line 21187 "" +#line 21181 "" o__1.ounit = 11; -#line 21187 "" +#line 21181 "" o__1.ofnm = 0; -#line 21187 "" +#line 21181 "" o__1.orl = 0; -#line 21187 "" +#line 21181 "" o__1.osta = "SCRATCH"; -#line 21187 "" +#line 21181 "" o__1.oacc = 0; -#line 21187 "" +#line 21181 "" o__1.ofm = 0; -#line 21187 "" +#line 21181 "" o__1.oblnk = 0; -#line 21187 "" +#line 21181 "" f_open(&o__1); /* vshrink for the first page is calculated in topfile, */ /* and if true set interstaff=10. vshrink affects Titles. */ /* Must also save vshrink for page ending. */ -#line 21193 "" +#line 21187 "" topfile_(basenameq, &lbase, &all_1.nv, comclefq_1.clefq, &noinst, & all_1.musicsize, xintstaff, &all_1.mtrnmp, &all_1.mtrdnp, & vshrink, &comask_1.fbar, &comslur_1.fontslur, (ftnlen)44, (ftnlen) @@ -50427,404 +50363,404 @@ L6: /* ninow is working value of # of instruments. noinst is max #, and # at start. */ -#line 21198 "" +#line 21192 "" comnotes_1.ninow = noinst; /* Save original printed meter in case movement breaks */ -#line 21202 "" +#line 21196 "" comget_1.movnmp = all_1.mtrnmp; -#line 21203 "" +#line 21197 "" comget_1.movdnp = all_1.mtrdnp; -#line 21205 "" +#line 21199 "" if (comlast_1.islast && all_1.figbass && all_1.musicsize == 16) { -#line 21205 "" - s_wsfe(&io___1366); +#line 21199 "" + s_wsfe(&io___1361); /* Writing concatenation */ -#line 21205 "" +#line 21199 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 21205 "" +#line 21199 "" i__4[1] = 3, a__2[1] = "def"; -#line 21205 "" +#line 21199 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 21205 "" +#line 21199 "" i__4[3] = 8, a__2[3] = "figfont{"; -#line 21205 "" +#line 21199 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 21205 "" +#line 21199 "" i__4[5] = 9, a__2[5] = "eightrm}%"; -#line 21205 "" +#line 21199 "" s_cat(ch__3, a__2, i__4, &c__6, (ftnlen)23); -#line 21205 "" +#line 21199 "" do_fio(&c__1, ch__3, (ftnlen)23); -#line 21205 "" +#line 21199 "" e_wsfe(); -#line 21205 "" +#line 21199 "" } -#line 21208 "" +#line 21202 "" if (comlast_1.islast && comligfont_1.isligfont) { -#line 21209 "" +#line 21203 "" if (all_1.musicsize == 16) { -#line 21210 "" - s_wsfe(&io___1367); +#line 21204 "" + s_wsfe(&io___1362); /* Writing concatenation */ -#line 21210 "" +#line 21204 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 21210 "" +#line 21204 "" i__5[1] = 4, a__3[1] = "font"; -#line 21210 "" +#line 21204 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 21210 "" +#line 21204 "" i__5[3] = 20, a__3[3] = "ligfont=cmrj at 8pt%"; -#line 21210 "" +#line 21204 "" s_cat(ch__4, a__3, i__5, &c__4, (ftnlen)26); -#line 21210 "" +#line 21204 "" do_fio(&c__1, ch__4, (ftnlen)26); -#line 21210 "" +#line 21204 "" e_wsfe(); -#line 21211 "" +#line 21205 "" } else { -#line 21212 "" - s_wsfe(&io___1368); +#line 21206 "" + s_wsfe(&io___1363); /* Writing concatenation */ -#line 21212 "" +#line 21206 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 21212 "" +#line 21206 "" i__5[1] = 4, a__3[1] = "font"; -#line 21212 "" +#line 21206 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 21212 "" +#line 21206 "" i__5[3] = 21, a__3[3] = "ligfont=cmrj at 10pt%"; -#line 21212 "" +#line 21206 "" s_cat(ch__5, a__3, i__5, &c__4, (ftnlen)27); -#line 21212 "" +#line 21206 "" do_fio(&c__1, ch__5, (ftnlen)27); -#line 21212 "" +#line 21206 "" e_wsfe(); -#line 21213 "" +#line 21207 "" } -#line 21214 "" +#line 21208 "" } -#line 21215 "" +#line 21209 "" lenbeat = ifnodur_(&all_1.mtrdenl, "x", (ftnlen)1); -#line 21216 "" +#line 21210 "" if (all_1.mtrdenl == 2) { -#line 21216 "" +#line 21210 "" lenbeat = 16; -#line 21216 "" +#line 21210 "" } -#line 21217 "" +#line 21211 "" all_1.lenb1 = all_1.mtrnuml * lenbeat; -#line 21218 "" +#line 21212 "" if (all_1.mtrdenl == 2) { -#line 21218 "" +#line 21212 "" all_1.lenb1 <<= 1; -#line 21218 "" +#line 21212 "" } -#line 21219 "" +#line 21213 "" setmeter_(&all_1.mtrnuml, &all_1.mtrdenl, &combeam_1.ibmtyp, &ibmrep); -#line 21220 "" +#line 21214 "" r__1 = xmtrnum0 * lenbeat; -#line 21220 "" +#line 21214 "" all_1.lenb0 = i_nint(&r__1); -#line 21221 "" +#line 21215 "" if (all_1.mtrdenl == 2) { -#line 21221 "" +#line 21215 "" all_1.lenb0 <<= 1; -#line 21221 "" +#line 21215 "" } -#line 21222 "" +#line 21216 "" if (all_1.lenb0 != 0) { -#line 21223 "" +#line 21217 "" if (comlast_1.islast) { -#line 21223 "" - s_wsfe(&io___1371); +#line 21217 "" + s_wsfe(&io___1366); /* Writing concatenation */ -#line 21223 "" +#line 21217 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 21223 "" +#line 21217 "" i__5[1] = 7, a__3[1] = "advance"; -#line 21223 "" +#line 21217 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 21223 "" +#line 21217 "" i__5[3] = 11, a__3[3] = "barno by -1"; -#line 21223 "" +#line 21217 "" s_cat(ch__6, a__3, i__5, &c__4, (ftnlen)20); -#line 21223 "" +#line 21217 "" do_fio(&c__1, ch__6, (ftnlen)20); -#line 21223 "" +#line 21217 "" e_wsfe(); -#line 21223 "" +#line 21217 "" } -#line 21224 "" +#line 21218 "" all_1.lenbar = all_1.lenb0; -#line 21225 "" +#line 21219 "" } else { -#line 21226 "" +#line 21220 "" all_1.lenbar = all_1.lenb1; -#line 21227 "" +#line 21221 "" } /* Initialize full-program variables */ -#line 21231 "" +#line 21225 "" comask_1.fixednew = 0.f; -#line 21232 "" +#line 21226 "" comask_1.scaldold = 0.f; -#line 21233 "" +#line 21227 "" comget_1.fintstf = -1.f; -#line 21234 "" +#line 21228 "" comget_1.gintstf = 1.f; -#line 21235 "" +#line 21229 "" comas2_1.nasksys = 0; -#line 21236 "" +#line 21230 "" combibarcnt_1.ibarcnt = 0; -#line 21237 "" +#line 21231 "" all_1.iline = 0; -#line 21238 "" +#line 21232 "" comget_1.movbrk = 0; -#line 21239 "" +#line 21233 "" isystpg = 0; -#line 21240 "" +#line 21234 "" comnotes_1.ipage = 1; -#line 21241 "" +#line 21235 "" all_1.iccount = 128; -#line 21242 "" +#line 21236 "" comas3_1.iask = 0; -#line 21243 "" +#line 21237 "" nhstot = 0; -#line 21244 "" +#line 21238 "" comnsp_2.nb = 1; -#line 21245 "" +#line 21239 "" if (! (*optimize)) { -#line 21245 "" +#line 21239 "" jprntb = 81; -#line 21245 "" +#line 21239 "" } -#line 21246 "" +#line 21240 "" comtop_1.idsig = 0; -#line 21247 "" +#line 21241 "" iflagbot = 0; /* Next 5 are raise-barno parameters. irzbnd is integer part of default level. */ -#line 21251 "" +#line 21245 "" comsln_1.irzbnd = 3; -#line 21252 "" +#line 21246 "" if (comtop_1.isig == 3 && *(unsigned char *)&comclefq_1.clefq[all_1.nv - 1] == 't') { -#line 21252 "" +#line 21246 "" comsln_1.irzbnd = 4; -#line 21252 "" +#line 21246 "" } -#line 21253 "" +#line 21247 "" comsln_1.is1n1 = 0; -#line 21254 "" +#line 21248 "" comsln_1.isnx = 0; -#line 21255 "" +#line 21249 "" comslur_1.slurcurve = 0.f; -#line 21256 "" +#line 21250 "" comshort_1.ishort = 0; -#line 21257 "" +#line 21251 "" comshort_1.nocodabn = FALSE_; -#line 21258 "" +#line 21252 "" comshort_1.mbrsum = 0; -#line 21259 "" +#line 21253 "" comshort_1.nmbr = 0; /* 111109 Made global rather than per gulp */ -#line 21263 "" +#line 21257 "" comdyn_1.ndyn = 0; -#line 21264 "" +#line 21258 "" compoi_1.ispoi = FALSE_; -#line 21265 "" +#line 21259 "" slint = FALSE_; -#line 21266 "" +#line 21260 "" lrptpend = FALSE_; -#line 21267 "" +#line 21261 "" comget_1.rptnd1 = FALSE_; -#line 21268 "" +#line 21262 "" *(unsigned char *)comget_1.rptfq2 = 'E'; -#line 21269 "" +#line 21263 "" comget_1.rptprev = FALSE_; -#line 21270 "" +#line 21264 "" onvolt = FALSE_; -#line 21271 "" +#line 21265 "" comnsp_2.flgndb = FALSE_; -#line 21272 "" +#line 21266 "" comget_1.fbon = FALSE_; -#line 21273 "" +#line 21267 "" comnotes_1.shifton = FALSE_; -#line 21274 "" +#line 21268 "" comget_1.ornrpt = FALSE_; -#line 21275 "" +#line 21269 "" comnotes_1.setis = FALSE_; -#line 21276 "" +#line 21270 "" comarp_1.lowdot = FALSE_; -#line 21277 "" +#line 21271 "" comnvi_1.rename = FALSE_; -#line 21278 "" +#line 21272 "" comnotes_1.nobar1 = FALSE_; -#line 21279 "" +#line 21273 "" comget_1.equalize = FALSE_; -#line 21280 "" +#line 21274 "" comlast_1.usevshrink = TRUE_; -#line 21281 "" +#line 21275 "" comslur_1.wrotepsslurdefaults = FALSE_; -#line 21282 "" +#line 21276 "" comnotes_1.optlinebreakties = FALSE_; -#line 21283 "" +#line 21277 "" comnotes_1.headerspecial = FALSE_; /* vshrink is initialized in topfile */ -#line 21287 "" +#line 21281 "" comget_1.stickys = FALSE_; /* ixrest = 1 or 2 if xtup has started with a rest */ -#line 21291 "" +#line 21285 "" for (commvl_1.ivx = 1; commvl_1.ivx <= 24; ++commvl_1.ivx) { -#line 21292 "" +#line 21286 "" strtmid_1.ixrest[commvl_1.ivx - 1] = 0; -#line 21293 "" +#line 21287 "" comfig_1.fullsize[commvl_1.ivx - 1] = 1.f; /* Set legacy note level to middle c as default */ -#line 21297 "" +#line 21291 "" comnotes_1.ndlev[commvl_1.ivx - 1] = 29; -#line 21298 "" +#line 21292 "" comnotes_1.ndlev[commvl_1.ivx + 23] = 29; -#line 21299 "" +#line 21293 "" /* L1: */ -#line 21299 "" +#line 21293 "" } -#line 21300 "" +#line 21294 "" comnotes_1.npreslur = 0; -#line 21301 "" +#line 21295 "" nhssys = 0; -#line 21302 "" +#line 21296 "" comslur_1.listslur = 0; -#line 21303 "" +#line 21297 "" for (i__ = 1; i__ <= 202; ++i__) { -#line 21304 "" +#line 21298 "" all_1.isdat1[i__ - 1] = 0; -#line 21305 "" +#line 21299 "" all_1.isdat2[i__ - 1] = 0; -#line 21306 "" +#line 21300 "" /* L31: */ -#line 21306 "" +#line 21300 "" } -#line 21307 "" +#line 21301 "" all_1.nsdat = 0; /* Initialize flag for figures in any other voice than 1 */ -#line 21311 "" +#line 21305 "" comfig_1.ivxfig2 = 0; /* Initialize for loop over gulps */ -#line 21315 "" +#line 21309 "" all_1.firstgulp = TRUE_; /* Start a gulp */ -#line 21319 "" +#line 21313 "" L30: -#line 21319 "" +#line 21313 "" loop = TRUE_; -#line 21320 "" +#line 21314 "" comnotes_1.notcrd = TRUE_; -#line 21321 "" +#line 21315 "" combjmp_1.isbjmp = FALSE_; -#line 21322 "" +#line 21316 "" combjmp_1.isbj2 = FALSE_; -#line 21323 "" +#line 21317 "" comfb_1.autofbon = FALSE_; -#line 21324 "" +#line 21318 "" comfb_1.tautofb = 0.f; -#line 21325 "" +#line 21319 "" all_1.nbars = 0; -#line 21326 "" +#line 21320 "" comfig_1.nfigs[0] = 0; -#line 21327 "" +#line 21321 "" comfig_1.nfigs[1] = 0; -#line 21328 "" +#line 21322 "" comgrace_1.ngrace = 0; -#line 21329 "" +#line 21323 "" comtrill_1.ntrill = 0; -#line 21330 "" +#line 21324 "" comtrill_1.ncrd = 0; -#line 21331 "" +#line 21325 "" comtrill_1.nudorn = 0; -#line 21332 "" +#line 21326 "" comgrace_1.nlit = 0; -#line 21333 "" +#line 21327 "" comgrace_1.nvolt = 0; -#line 21334 "" +#line 21328 "" comgrace_1.ibarmbr = 0; -#line 21335 "" +#line 21329 "" comudsp_1.nudsp = 0; /* ndyn = 0 ! 111109 */ -#line 21337 "" +#line 21331 "" comdyn_1.ntxtdyn = 0; -#line 21338 "" +#line 21332 "" comcb_1.nbc = 0; -#line 21339 "" +#line 21333 "" comarpshift_1.numarpshift = 0; -#line 21340 "" +#line 21334 "" for (i__ = 1; i__ <= 37; ++i__) { -#line 21341 "" +#line 21335 "" comgrace_1.graspace[i__ - 1] = 0.f; -#line 21342 "" +#line 21336 "" /* L3: */ -#line 21342 "" +#line 21336 "" } /* Now initialize up to nv. Do it in getnote as r'qd for 2nd voices per syst. */ /* and also if nv increases in an 'M' directive. */ -#line 21347 "" +#line 21341 "" i__1 = all_1.nv; -#line 21347 "" +#line 21341 "" for (all_1.iv = 1; all_1.iv <= i__1; ++all_1.iv) { -#line 21348 "" +#line 21342 "" newvoice_(&all_1.iv, comclefq_1.clefq + (all_1.iv - 1), &c_false, ( ftnlen)1); -#line 21349 "" +#line 21343 "" /* L4: */ -#line 21349 "" +#line 21343 "" } /* Check if endsymbol was set earlier */ -#line 21353 "" +#line 21347 "" if (comget_1.rptnd1) { -#line 21354 "" +#line 21348 "" comget_1.rptnd1 = FALSE_; -#line 21355 "" +#line 21349 "" *(unsigned char *)comget_1.rptfq2 = *(unsigned char *)comget_1.rptfq1; -#line 21356 "" +#line 21350 "" } else { /* Only use if movbrk>0, to signal default ('RD') */ -#line 21360 "" +#line 21354 "" *(unsigned char *)comget_1.rptfq2 = 'E'; -#line 21361 "" +#line 21355 "" } -#line 21362 "" +#line 21356 "" all_1.iv = 1; -#line 21363 "" +#line 21357 "" commvl_1.ivx = 1; -#line 21364 "" +#line 21358 "" L2: -#line 21364 "" +#line 21358 "" if (loop) { /* Within this loop, nv voices are filled up for the duration of the block. */ @@ -50834,212 +50770,212 @@ L2: /* Only at the beginning of an input block will there be a possible mtr change, */ /* signalled by a nonzero mtrnuml. (which will be re-zeroed right after change) */ -#line 21373 "" +#line 21367 "" getnote_(&loop); -#line 21374 "" +#line 21368 "" if (comget_1.lastchar) { -#line 21374 "" +#line 21368 "" goto L40; -#line 21374 "" +#line 21368 "" } -#line 21375 "" +#line 21369 "" goto L2; -#line 21376 "" +#line 21370 "" } /* Finished an input block (gulp). */ -#line 21380 "" +#line 21374 "" if (commidi_1.ismidi) { /* Put rests into midi array for 2nd lines that were not used in this gulp. */ -#line 21384 "" +#line 21378 "" i__1 = all_1.nv; -#line 21384 "" +#line 21378 "" for (all_1.iv = 1; all_1.iv <= i__1; ++all_1.iv) { -#line 21385 "" +#line 21379 "" if (commidi_1.twoline[all_1.iv - 1] && commvl_1.nvmx[all_1.iv - 1] == 1) { -#line 21386 "" +#line 21380 "" if (all_1.firstgulp && all_1.lenb0 != 0) { -#line 21387 "" +#line 21381 "" r__1 = (all_1.nbars - 1.f) * all_1.lenbar + all_1.lenb0; -#line 21387 "" +#line 21381 "" addmidi_(&commidi_1.midchan[all_1.iv + 23], &c__0, &c__0, &c__0, &r__1, &c_true, &c_false); -#line 21389 "" +#line 21383 "" } else { -#line 21390 "" +#line 21384 "" r__1 = all_1.nbars * 1.f * all_1.lenbar; -#line 21390 "" +#line 21384 "" addmidi_(&commidi_1.midchan[all_1.iv + 23], &c__0, &c__0, &c__0, &r__1, &c_true, &c_false); -#line 21392 "" +#line 21386 "" } -#line 21393 "" +#line 21387 "" } -#line 21394 "" +#line 21388 "" /* L60: */ -#line 21394 "" +#line 21388 "" } -#line 21395 "" +#line 21389 "" } -#line 21396 "" +#line 21390 "" comgrace_1.nvolt = 0; -#line 21397 "" +#line 21391 "" for (all_1.iv = 1; all_1.iv <= 24; ++all_1.iv) { -#line 21398 "" +#line 21392 "" comudsp_1.nudoff[all_1.iv - 1] = 0; -#line 21399 "" +#line 21393 "" comcc_1.maxdotmv[all_1.iv - 1] = comcc_1.ndotmv[all_1.iv - 1]; -#line 21400 "" +#line 21394 "" comcc_1.ndotmv[all_1.iv - 1] = 0; -#line 21401 "" +#line 21395 "" /* L28: */ -#line 21401 "" +#line 21395 "" } /* Put stuff at top of p.1. Must wait until now to have read title info. */ -#line 21405 "" +#line 21399 "" if (combibarcnt_1.ibarcnt == 0) { -#line 21406 "" +#line 21400 "" puttitle_(&inhnoh, &xnsttop[comnotes_1.ipage - 1], &etatop, all_1.sq, &etait, &etatc, &etacs1, &all_1.nv, &vshrink, all_1.sepsymq, ( ftnlen)1, (ftnlen)1); -#line 21408 "" +#line 21402 "" if (comnotes_1.headerspecial) { -#line 21408 "" - s_wsfe(&io___1382); +#line 21402 "" + s_wsfe(&io___1377); /* Writing concatenation */ -#line 21408 "" +#line 21402 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 21408 "" +#line 21402 "" i__6[0] = 1, a__4[0] = ch__1; -#line 21408 "" +#line 21402 "" i__6[1] = 28, a__4[1] = "special{header=psslurs.pro}%"; -#line 21408 "" +#line 21402 "" s_cat(ch__7, a__4, i__6, &c__2, (ftnlen)29); -#line 21408 "" +#line 21402 "" do_fio(&c__1, ch__7, (ftnlen)29); -#line 21408 "" +#line 21402 "" e_wsfe(); -#line 21408 "" +#line 21402 "" } /* Write special header for first page */ -#line 21413 "" +#line 21407 "" } -#line 21414 "" +#line 21408 "" i__1 = all_1.nbars; -#line 21414 "" +#line 21408 "" for (all_1.ibar = 1; all_1.ibar <= i__1; ++all_1.ibar) { -#line 21415 "" +#line 21409 "" ++combibarcnt_1.ibarcnt; -#line 21416 "" +#line 21410 "" comask_1.bar1syst = combibarcnt_1.ibarcnt == iauto; /* Computing MAX */ -#line 21417 "" +#line 21411 "" r__1 = combibarcnt_1.ibarcnt + .001f + ibcoff; -#line 21417 "" +#line 21411 "" i__2 = 0, i__7 = (integer) r_lg10(&r__1); -#line 21417 "" +#line 21411 "" ndig = max(i__2,i__7); -#line 21418 "" +#line 21412 "" if (comlast_1.islast) { -#line 21418 "" +#line 21412 "" ci__1.cierr = 0; -#line 21418 "" +#line 21412 "" ci__1.ciunit = 11; /* Writing concatenation */ -#line 21418 "" +#line 21412 "" i__8[0] = 6, a__5[0] = "(a11,i"; -#line 21418 "" +#line 21412 "" i__2 = ndig + 50; -#line 21418 "" +#line 21412 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 21418 "" +#line 21412 "" i__8[1] = 1, a__5[1] = ch__1; -#line 21418 "" +#line 21412 "" i__8[2] = 1, a__5[2] = ")"; -#line 21418 "" +#line 21412 "" ci__1.cifmt = (s_cat(ch__8, a__5, i__8, &c__3, (ftnlen)8), ch__8); -#line 21418 "" +#line 21412 "" s_wsfe(&ci__1); -#line 21418 "" +#line 21412 "" do_fio(&c__1, "% Bar count", (ftnlen)11); -#line 21418 "" +#line 21412 "" i__7 = combibarcnt_1.ibarcnt + ibcoff; -#line 21418 "" +#line 21412 "" do_fio(&c__1, (char *)&i__7, (ftnlen)sizeof(integer)); -#line 21418 "" +#line 21412 "" e_wsfe(); -#line 21418 "" +#line 21412 "" } -#line 21421 "" +#line 21415 "" if (all_1.ibar != comgrace_1.ibarmbr) { -#line 21422 "" +#line 21416 "" if (! (*optimize)) { -#line 21422 "" +#line 21416 "" i__2 = combibarcnt_1.ibarcnt + ibcoff; -#line 21422 "" +#line 21416 "" outbar_(&i__2, &jprntb); -#line 21422 "" +#line 21416 "" } -#line 21423 "" +#line 21417 "" } else { -#line 21424 "" +#line 21418 "" if (! (*optimize)) { -#line 21425 "" - s_wsfe(&io___1384); -#line 21425 "" +#line 21419 "" + s_wsfe(&io___1379); +#line 21419 "" do_fio(&c__1, " Multibar rest, bars", (ftnlen)20); -#line 21425 "" +#line 21419 "" i__2 = combibarcnt_1.ibarcnt + ibcoff; -#line 21425 "" +#line 21419 "" do_fio(&c__1, (char *)&i__2, (ftnlen)sizeof(integer)); -#line 21425 "" +#line 21419 "" do_fio(&c__1, "-", (ftnlen)1); -#line 21425 "" +#line 21419 "" i__7 = combibarcnt_1.ibarcnt + ibcoff + comgrace_1.mbrest - 1; -#line 21425 "" +#line 21419 "" do_fio(&c__1, (char *)&i__7, (ftnlen)sizeof(integer)); -#line 21425 "" +#line 21419 "" e_wsfe(); -#line 21427 "" - s_wsfe(&io___1385); -#line 21427 "" +#line 21421 "" + s_wsfe(&io___1380); +#line 21421 "" do_fio(&c__1, " Multibar rest, bars", (ftnlen)20); -#line 21427 "" +#line 21421 "" i__2 = combibarcnt_1.ibarcnt + ibcoff; -#line 21427 "" +#line 21421 "" do_fio(&c__1, (char *)&i__2, (ftnlen)sizeof(integer)); -#line 21427 "" +#line 21421 "" do_fio(&c__1, "-", (ftnlen)1); -#line 21427 "" +#line 21421 "" i__7 = combibarcnt_1.ibarcnt + ibcoff + comgrace_1.mbrest - 1; -#line 21427 "" +#line 21421 "" do_fio(&c__1, (char *)&i__7, (ftnlen)sizeof(integer)); -#line 21427 "" +#line 21421 "" e_wsfe(); -#line 21429 "" +#line 21423 "" jprntb = 0; -#line 21430 "" +#line 21424 "" } -#line 21431 "" +#line 21425 "" ibcoff = ibcoff + comgrace_1.mbrest - 1; /* if (ibar.eq.1 .and. firstgulp .and. */ /* * .not.btest(islur(1,1),5)) xb4mbr = facmtr*musicsize */ -#line 21434 "" +#line 21428 "" if (all_1.ibar == 1 && all_1.firstgulp && ! bit_test(all_1.islur[ 0],5)) { -#line 21434 "" +#line 21428 "" comgrace_1.xb4mbr = all_1.musicsize * -.2f; -#line 21434 "" +#line 21428 "" } -#line 21436 "" +#line 21430 "" } /* Move the read to after end-of-bar hardspace checks, so we get right poenom */ @@ -51056,137 +50992,137 @@ L2: /* compute additional pts and store them in hpttot(1...nhstot). Finally in */ /* subroutine askfig, write true pts where placeholders are. */ -#line 21452 "" +#line 21446 "" ioff = 0; -#line 21453 "" +#line 21447 "" if (all_1.ibar > 1) { -#line 21453 "" +#line 21447 "" ioff = all_1.nib[(all_1.ibar - 1) * 24 - 24]; -#line 21453 "" +#line 21447 "" } -#line 21454 "" +#line 21448 "" clchb = bit_test(all_1.islur[(ioff + 1) * 24 - 24],15); -#line 21455 "" +#line 21449 "" putmbr = FALSE_; -#line 21456 "" +#line 21450 "" if (ismbr) { -#line 21457 "" +#line 21451 "" if (clchb) { /* cc */ /* cc Clef change and multi-bar rest coming up. Kluge to get space at end of rest. */ /* cc */ -#line 21461 "" - s_wsfe(&io___1389); +#line 21455 "" + s_wsfe(&io___1384); /* Writing concatenation */ -#line 21461 "" +#line 21455 "" i__9[0] = 1, a__6[0] = all_1.sq; -#line 21461 "" +#line 21455 "" i__9[1] = 3, a__6[1] = "let"; -#line 21461 "" +#line 21455 "" i__9[2] = 1, a__6[2] = all_1.sq; -#line 21461 "" +#line 21455 "" i__9[3] = 4, a__6[3] = "mbrt"; -#line 21461 "" +#line 21455 "" i__9[4] = 1, a__6[4] = all_1.sq; -#line 21461 "" +#line 21455 "" i__9[5] = 6, a__6[5] = "mbrest"; -#line 21461 "" +#line 21455 "" i__9[6] = 1, a__6[6] = all_1.sq; -#line 21461 "" +#line 21455 "" i__9[7] = 3, a__6[7] = "def"; -#line 21461 "" +#line 21455 "" i__9[8] = 1, a__6[8] = all_1.sq; -#line 21461 "" +#line 21455 "" i__9[9] = 14, a__6[9] = "mbrest#1#2#3{%"; -#line 21461 "" +#line 21455 "" s_cat(ch__9, a__6, i__9, &c__10, (ftnlen)35); -#line 21461 "" +#line 21455 "" do_fio(&c__1, ch__9, (ftnlen)35); -#line 21461 "" +#line 21455 "" e_wsfe(); -#line 21463 "" - s_wsfe(&io___1390); +#line 21457 "" + s_wsfe(&io___1385); /* Writing concatenation */ -#line 21463 "" +#line 21457 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21463 "" +#line 21457 "" i__6[1] = 13, a__4[1] = "mbrt{#1}{#2}{"; -#line 21463 "" +#line 21457 "" s_cat(ch__10, a__4, i__6, &c__2, (ftnlen)14); -#line 21463 "" +#line 21457 "" do_fio(&c__1, ch__10, (ftnlen)14); -#line 21463 "" +#line 21457 "" r__1 = all_1.musicsize * .55f; -#line 21463 "" +#line 21457 "" do_fio(&c__1, (char *)&r__1, (ftnlen)sizeof(real)); /* Writing concatenation */ -#line 21463 "" +#line 21457 "" i__10[0] = 1, a__7[0] = "}"; -#line 21463 "" +#line 21457 "" i__10[1] = 1, a__7[1] = all_1.sq; -#line 21463 "" +#line 21457 "" i__10[2] = 6, a__7[2] = "global"; -#line 21463 "" +#line 21457 "" i__10[3] = 1, a__7[3] = all_1.sq; -#line 21463 "" +#line 21457 "" i__10[4] = 3, a__7[4] = "let"; -#line 21463 "" +#line 21457 "" i__10[5] = 1, a__7[5] = all_1.sq; -#line 21463 "" +#line 21457 "" i__10[6] = 6, a__7[6] = "mbrest"; -#line 21463 "" +#line 21457 "" i__10[7] = 1, a__7[7] = all_1.sq; -#line 21463 "" +#line 21457 "" i__10[8] = 6, a__7[8] = "mbrt}%"; -#line 21463 "" +#line 21457 "" s_cat(ch__4, a__7, i__10, &c__9, (ftnlen)26); -#line 21463 "" +#line 21457 "" do_fio(&c__1, ch__4, (ftnlen)26); -#line 21463 "" +#line 21457 "" e_wsfe(); /* c */ /* c RDT suggestion is inset blank barline - 160103 Abandoned */ /* c */ /* write(11,'(a)')sq//'setemptybar'//sq//'bar'//sq//'qspace' */ /* * //sq//'advance'//sq//'barno-1' */ -#line 21470 "" +#line 21464 "" } -#line 21471 "" +#line 21465 "" ismbr = FALSE_; -#line 21472 "" +#line 21466 "" putmbr = TRUE_; -#line 21473 "" +#line 21467 "" } -#line 21474 "" +#line 21468 "" if (all_1.ibar == comgrace_1.ibarmbr) { -#line 21474 "" +#line 21468 "" ismbr = TRUE_; -#line 21474 "" +#line 21468 "" } /* Set flag here so at start of next bar, if there's a clef change, can add space */ /* after the mbr with the above kluge */ -#line 21479 "" +#line 21473 "" if (! (clchb || comnsp_2.flgndb)) { -#line 21479 "" +#line 21473 "" goto L23; -#line 21479 "" +#line 21473 "" } /* Must check available space */ -#line 21483 "" +#line 21477 "" ptsndb = 0.f; /* Zero out block signal */ -#line 21487 "" +#line 21481 "" if (clchb) { -#line 21487 "" +#line 21481 "" all_1.islur[(ioff + 1) * 24 - 24] = bit_clear(all_1.islur[(ioff + 1) * 24 - 24],15); -#line 21487 "" +#line 21481 "" } /* In this loop, we determine how much hardspace is needed (if any) */ @@ -51196,239 +51132,239 @@ L2: /* one. */ /* 4/18/98 Apparently nmxsav was a solution to the above problem */ -#line 21496 "" +#line 21490 "" i__2 = all_1.nv; -#line 21496 "" +#line 21490 "" for (all_1.iv = 1; all_1.iv <= i__2; ++all_1.iv) { -#line 21497 "" +#line 21491 "" i__7 = comnsp_2.nvmxsav[all_1.iv - 1]; -#line 21497 "" +#line 21491 "" for (kv = 1; kv <= i__7; ++kv) { -#line 21498 "" +#line 21492 "" commvl_1.ivx = comnsp_2.ivmxsav[all_1.iv + kv * 24 - 25]; -#line 21499 "" +#line 21493 "" ptsndv = comnsp_2.flgndv[commvl_1.ivx - 1] * comask_1.wheadpt; -#line 21500 "" +#line 21494 "" ioff = 0; -#line 21501 "" +#line 21495 "" if (all_1.ibar > 1) { -#line 21502 "" +#line 21496 "" ioff = all_1.nib[commvl_1.ivx + (all_1.ibar - 1) * 24 - 25]; -#line 21503 "" +#line 21497 "" ip = ioff; -#line 21504 "" +#line 21498 "" if (all_1.ibar > 2) { -#line 21504 "" +#line 21498 "" ip = ioff - all_1.nib[commvl_1.ivx + (all_1.ibar - 2) * 24 - 25]; -#line 21504 "" +#line 21498 "" } /* prevtn(ivx) = tnote(iand(ipl(ivx,ip),255)) */ -#line 21506 "" +#line 21500 "" comnsp_2.prevtn[commvl_1.ivx - 1] = all_1.tnote[ comipl2_1.ipl2[commvl_1.ivx + ip * 24 - 25] - 1]; /* If ibar=1 (1st bar in input block), prevtn(ivx) was set at end of makeabar. */ -#line 21510 "" +#line 21504 "" } /* Only allow clef changes when ivx <= nv */ -#line 21514 "" +#line 21508 "" if (commvl_1.ivx <= all_1.nv) { -#line 21515 "" +#line 21509 "" clchv[all_1.iv - 1] = clchb && bit_test(all_1.islur[ all_1.iv + (ioff + 1) * 24 - 25],11); -#line 21516 "" +#line 21510 "" if (clchv[all_1.iv - 1]) { /* Clef change in this voice. Turn off signal. Get space avail. */ -#line 21520 "" +#line 21514 "" all_1.islur[all_1.iv + (ioff + 1) * 24 - 25] = bit_clear(all_1.islur[all_1.iv + (ioff + 1) * 24 - 25],11); -#line 21521 "" +#line 21515 "" if ((r__1 = comnsp_2.prevtn[all_1.iv - 1] - comnsp_2.space[comnsp_2.nb - 1], dabs(r__1)) < comtol_1.tol) { -#line 21521 "" +#line 21515 "" ptsndv += combmh_1.clefend * comask_1.wheadpt; -#line 21521 "" +#line 21515 "" } -#line 21523 "" +#line 21517 "" } -#line 21524 "" +#line 21518 "" } /* Computing MAX */ -#line 21525 "" +#line 21519 "" r__1 = ptsndb, r__2 = ptsndv + comask_1.wheadpt * spfacs_1.xspfac; -#line 21525 "" +#line 21519 "" ptsndb = dmax(r__1,r__2); -#line 21526 "" +#line 21520 "" /* L16: */ -#line 21526 "" +#line 21520 "" } -#line 21526 "" +#line 21520 "" } /* ???? where is nb set??? nb probably in left over from makeabar */ -#line 21530 "" +#line 21524 "" r__1 = comnsp_2.space[comnsp_2.nb - 1] * squez[comnsp_2.nb - 1]; -#line 21530 "" +#line 21524 "" esk = feon_(&r__1); -#line 21531 "" +#line 21525 "" ptsdflt = esk * comask_1.poenom - comask_1.wheadpt; /* if ((ptsndb.gt.ptsdflt.or.ptsgnd.gt.0.) .and. movbrk.eq.0) then */ -#line 21533 "" +#line 21527 "" if ((ptsndb > ptsdflt || comnsp_2.ptsgnd > 0.f) && comget_1.movbrk == 0 && ! putmbr) { /* Must ADD hardspace! So put in a placeholder, and store params for later. */ -#line 21538 "" +#line 21532 "" if (comlast_1.islast) { -#line 21538 "" - s_wsfe(&io___1399); +#line 21532 "" + s_wsfe(&io___1394); /* Writing concatenation */ -#line 21538 "" +#line 21532 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21538 "" +#line 21532 "" i__6[1] = 18, a__4[1] = "xardspace{ pt}%"; -#line 21538 "" +#line 21532 "" s_cat(ch__11, a__4, i__6, &c__2, (ftnlen)19); -#line 21538 "" +#line 21532 "" do_fio(&c__1, ch__11, (ftnlen)19); -#line 21538 "" +#line 21532 "" e_wsfe(); -#line 21538 "" +#line 21532 "" } -#line 21539 "" +#line 21533 "" ++nhssys; -#line 21540 "" +#line 21534 "" if (ptsndb - ptsdflt > comnsp_2.ptsgnd - comask_1.poenom * comnsp_2.eskgnd) { -#line 21541 "" +#line 21535 "" hesk[nhssys - 1] = esk; -#line 21542 "" +#line 21536 "" hpts[nhssys - 1] = ptsndb + comask_1.wheadpt; -#line 21543 "" +#line 21537 "" } else { -#line 21544 "" +#line 21538 "" hesk[nhssys - 1] = comnsp_2.eskgnd; -#line 21545 "" +#line 21539 "" hpts[nhssys - 1] = comnsp_2.ptsgnd + comask_1.wheadpt; -#line 21546 "" +#line 21540 "" } -#line 21547 "" +#line 21541 "" comask_1.fixednew += hpts[nhssys - 1]; -#line 21548 "" +#line 21542 "" comask_1.scaldold += hesk[nhssys - 1]; -#line 21549 "" +#line 21543 "" } -#line 21550 "" +#line 21544 "" if (clchb) { -#line 21551 "" +#line 21545 "" i__7 = all_1.nv; -#line 21551 "" +#line 21545 "" for (all_1.iv = 1; all_1.iv <= i__7; ++all_1.iv) { -#line 21552 "" +#line 21546 "" if (clchv[all_1.iv - 1]) { /* Writing concatenation */ -#line 21553 "" +#line 21547 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21553 "" +#line 21547 "" i__6[1] = 6, a__4[1] = "znotes"; -#line 21553 "" +#line 21547 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 21554 "" +#line 21548 "" lnote = 7; -#line 21555 "" +#line 21549 "" i__2 = all_1.iv; -#line 21555 "" +#line 21549 "" for (iiv = 2; iiv <= i__2; ++iiv) { /* Writing concatenation */ -#line 21556 "" +#line 21550 "" i__6[0] = lnote, a__4[0] = notexq; -#line 21556 "" +#line 21550 "" i__6[1] = 1, a__4[1] = all_1.sepsymq + (iiv - 2); -#line 21556 "" +#line 21550 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 21557 "" +#line 21551 "" ++lnote; -#line 21558 "" +#line 21552 "" /* L24: */ -#line 21558 "" +#line 21552 "" } /* Recompute ioff since it will vary from voice to voice */ -#line 21562 "" +#line 21556 "" if (all_1.ibar == 1) { -#line 21563 "" +#line 21557 "" ioff = 0; -#line 21564 "" +#line 21558 "" } else { -#line 21565 "" +#line 21559 "" ioff = all_1.nib[all_1.iv + (all_1.ibar - 1) * 24 - 25]; -#line 21566 "" +#line 21560 "" } /* Must call clefsym to get nclef, even if there is a movement break */ -#line 21570 "" +#line 21564 "" clefsym_(&all_1.islur[all_1.iv + (ioff + 1) * 24 - 25], fmtq, &lclef, &nclef, (ftnlen)24); /* If clefq = '8', must change '0' in pos'n 9 to '8' */ -#line 21574 "" +#line 21568 "" if (bit_test(all_1.ipl[all_1.iv + (ioff + 1) * 24 - 25],2) ) { /* Writing concatenation */ -#line 21574 "" +#line 21568 "" i__8[0] = 8, a__5[0] = fmtq; -#line 21574 "" +#line 21568 "" i__8[1] = 1, a__5[1] = "8"; -#line 21574 "" +#line 21568 "" i__8[2] = 1, a__5[2] = fmtq + 9; -#line 21574 "" +#line 21568 "" s_cat(fmtq, a__5, i__8, &c__3, (ftnlen)24); -#line 21574 "" +#line 21568 "" } -#line 21576 "" +#line 21570 "" if (comget_1.movbrk == 0 && comlast_1.islast) { -#line 21576 "" - s_wsfe(&io___1408); +#line 21570 "" + s_wsfe(&io___1403); /* Writing concatenation */ -#line 21576 "" +#line 21570 "" i__5[0] = lnote, a__3[0] = notexq; -#line 21576 "" +#line 21570 "" i__5[1] = lclef, a__3[1] = fmtq; -#line 21576 "" +#line 21570 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 21576 "" +#line 21570 "" i__5[3] = 3, a__3[3] = "en%"; -#line 21576 "" +#line 21570 "" s_cat(ch__12, a__3, i__5, &c__4, (ftnlen)107); -#line 21576 "" +#line 21570 "" do_fio(&c__1, ch__12, lnote + lclef + 4); -#line 21576 "" +#line 21570 "" e_wsfe(); -#line 21576 "" +#line 21570 "" } -#line 21579 "" +#line 21573 "" wsclef_(&all_1.iv, &comnotes_1.ninow, &nclef); /* Set new flag to be used just outside this loop, to kluge */ /* any calls to \CenterBar for full-bar rests, to make room for clef. */ -#line 21584 "" +#line 21578 "" newclef = TRUE_; /* 151220 */ @@ -51438,614 +51374,614 @@ L2: /* and if we change from TLO to normal clef, need to resetclefsymbols */ /* if (clefq(iv) .eq. '8') then */ -#line 21593 "" +#line 21587 "" if (bit_test(all_1.ipl[all_1.iv + (ioff + 1) * 24 - 25],2) ) { /* Find instrument number for voice iv */ -#line 21597 "" +#line 21591 "" iv1 = 1; -#line 21598 "" +#line 21592 "" i__2 = comnotes_1.ninow; -#line 21598 "" +#line 21592 "" for (iinst = 1; iinst <= i__2; ++iinst) { -#line 21599 "" +#line 21593 "" if (all_1.iv < iv1 + comnvi_1.nspern[iinst - 1]) { -#line 21599 "" +#line 21593 "" goto L2222; -#line 21599 "" +#line 21593 "" } -#line 21600 "" +#line 21594 "" iv1 += comnvi_1.nspern[iinst - 1]; -#line 21601 "" +#line 21595 "" /* L1111: */ -#line 21601 "" +#line 21595 "" } -#line 21602 "" - s_wsle(&io___1411); -#line 21602 "" +#line 21596 "" + s_wsle(&io___1406); +#line 21596 "" e_wsle(); -#line 21603 "" - s_wsle(&io___1412); -#line 21603 "" +#line 21597 "" + s_wsle(&io___1407); +#line 21597 "" do_lio(&c__9, &c__1, "Should not be here in pmxb!", ( ftnlen)27); -#line 21603 "" +#line 21597 "" e_wsle(); -#line 21604 "" +#line 21598 "" stop1_(); -#line 21605 "" +#line 21599 "" L2222: -#line 21606 "" +#line 21600 "" if (iinst <= 9) { -#line 21607 "" - s_wsfe(&io___1413); +#line 21601 "" + s_wsfe(&io___1408); /* Writing concatenation */ -#line 21607 "" +#line 21601 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21607 "" +#line 21601 "" i__6[1] = 19, a__4[1] = "settrebleclefsymbol"; -#line 21607 "" +#line 21601 "" s_cat(ch__6, a__4, i__6, &c__2, (ftnlen)20); -#line 21607 "" +#line 21601 "" do_fio(&c__1, ch__6, (ftnlen)20); -#line 21607 "" +#line 21601 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof( integer)); /* Writing concatenation */ -#line 21607 "" +#line 21601 "" i__11[0] = 1, a__8[0] = all_1.sq; -#line 21607 "" +#line 21601 "" i__11[1] = 13, a__8[1] = "treblelowoct%"; -#line 21607 "" +#line 21601 "" s_cat(ch__10, a__8, i__11, &c__2, (ftnlen)14); -#line 21607 "" +#line 21601 "" do_fio(&c__1, ch__10, (ftnlen)14); -#line 21607 "" +#line 21601 "" e_wsfe(); -#line 21609 "" +#line 21603 "" } else { -#line 21610 "" - s_wsfe(&io___1414); +#line 21604 "" + s_wsfe(&io___1409); /* Writing concatenation */ -#line 21610 "" +#line 21604 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21610 "" +#line 21604 "" i__6[1] = 19, a__4[1] = "settrebleclefsymbol"; -#line 21610 "" +#line 21604 "" s_cat(ch__6, a__4, i__6, &c__2, (ftnlen)20); -#line 21610 "" +#line 21604 "" do_fio(&c__1, ch__6, (ftnlen)20); -#line 21610 "" +#line 21604 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof( integer)); /* Writing concatenation */ -#line 21610 "" +#line 21604 "" i__11[0] = 1, a__8[0] = all_1.sq; -#line 21610 "" +#line 21604 "" i__11[1] = 13, a__8[1] = "treblelowoct%"; -#line 21610 "" +#line 21604 "" s_cat(ch__10, a__8, i__11, &c__2, (ftnlen)14); -#line 21610 "" +#line 21604 "" do_fio(&c__1, ch__10, (ftnlen)14); -#line 21610 "" +#line 21604 "" e_wsfe(); -#line 21612 "" +#line 21606 "" } -#line 21613 "" +#line 21607 "" comc8flag_1.c8flag[all_1.iv - 1] = TRUE_; -#line 21614 "" +#line 21608 "" } else { -#line 21615 "" +#line 21609 "" if (*(unsigned char *)&comclefq_1.clefq[all_1.iv - 1] == '8') { -#line 21616 "" - s_wsfe(&io___1415); +#line 21610 "" + s_wsfe(&io___1410); /* Writing concatenation */ -#line 21616 "" +#line 21610 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21616 "" +#line 21610 "" i__6[1] = 16, a__4[1] = "resetclefsymbols"; -#line 21616 "" +#line 21610 "" s_cat(ch__13, a__4, i__6, &c__2, (ftnlen)17); -#line 21616 "" +#line 21610 "" do_fio(&c__1, ch__13, (ftnlen)17); -#line 21616 "" +#line 21610 "" e_wsfe(); -#line 21617 "" +#line 21611 "" } -#line 21618 "" +#line 21612 "" } -#line 21619 "" +#line 21613 "" } -#line 21620 "" +#line 21614 "" /* L17: */ -#line 21620 "" +#line 21614 "" } -#line 21621 "" +#line 21615 "" if (comlast_1.islast) { -#line 21621 "" - s_wsfe(&io___1416); +#line 21615 "" + s_wsfe(&io___1411); /* Writing concatenation */ -#line 21621 "" +#line 21615 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21621 "" +#line 21615 "" i__6[1] = 11, a__4[1] = "pmxnewclefs"; -#line 21621 "" +#line 21615 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen)12); -#line 21621 "" +#line 21615 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 21621 "" +#line 21615 "" e_wsfe(); -#line 21621 "" +#line 21615 "" } -#line 21622 "" +#line 21616 "" } -#line 21623 "" +#line 21617 "" L23: /* Kluge \CenterBar for whole bar rests if necessary */ -#line 21627 "" +#line 21621 "" if (newclef && comclefrests_1.centrests) { /* write(11,'(a)')sq//'def'//sq//'value{11}%' */ -#line 21629 "" +#line 21623 "" r__1 = all_1.musicsize * .55f; -#line 21629 "" +#line 21623 "" nvalue = i_nint(&r__1); -#line 21630 "" +#line 21624 "" if (nvalue > 10) { -#line 21631 "" - s_wsfe(&io___1418); +#line 21625 "" + s_wsfe(&io___1413); /* Writing concatenation */ -#line 21631 "" +#line 21625 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 21631 "" +#line 21625 "" i__5[1] = 3, a__3[1] = "def"; -#line 21631 "" +#line 21625 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 21631 "" +#line 21625 "" i__5[3] = 6, a__3[3] = "value{"; -#line 21631 "" +#line 21625 "" s_cat(ch__15, a__3, i__5, &c__4, (ftnlen)11); -#line 21631 "" +#line 21625 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 21631 "" +#line 21625 "" do_fio(&c__1, (char *)&nvalue, (ftnlen)sizeof(integer)); -#line 21631 "" +#line 21625 "" do_fio(&c__1, "}%", (ftnlen)2); -#line 21631 "" +#line 21625 "" e_wsfe(); -#line 21633 "" +#line 21627 "" } else { -#line 21634 "" - s_wsfe(&io___1419); +#line 21628 "" + s_wsfe(&io___1414); /* Writing concatenation */ -#line 21634 "" +#line 21628 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 21634 "" +#line 21628 "" i__5[1] = 3, a__3[1] = "def"; -#line 21634 "" +#line 21628 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 21634 "" +#line 21628 "" i__5[3] = 6, a__3[3] = "value{"; -#line 21634 "" +#line 21628 "" s_cat(ch__15, a__3, i__5, &c__4, (ftnlen)11); -#line 21634 "" +#line 21628 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 21634 "" +#line 21628 "" do_fio(&c__1, (char *)&nvalue, (ftnlen)sizeof(integer)); -#line 21634 "" +#line 21628 "" do_fio(&c__1, "}%", (ftnlen)2); -#line 21634 "" +#line 21628 "" e_wsfe(); -#line 21636 "" +#line 21630 "" } -#line 21637 "" +#line 21631 "" } -#line 21638 "" +#line 21632 "" newclef = FALSE_; -#line 21639 "" +#line 21633 "" comclefrests_1.centrests = FALSE_; /* End of loop for end-of-bar hardspaces and non-movbrk clef symbol. */ -#line 21643 "" +#line 21637 "" if (comask_1.bar1syst) { -#line 21644 "" - s_rsle(&io___1420); -#line 21644 "" +#line 21638 "" + s_rsle(&io___1415); +#line 21638 "" do_lio(&c__4, &c__1, (char *)&comask_1.poenom, (ftnlen)sizeof( real)); -#line 21644 "" +#line 21638 "" e_rsle(); -#line 21645 "" +#line 21639 "" } /* Repeat symbols. Haven't slid down yet, so use islur(1,nib(1,ibar-1)+1) */ -#line 21649 "" +#line 21643 "" if (all_1.ibar == 1) { -#line 21650 "" +#line 21644 "" islnow = all_1.islur[0]; /* iornqnow = iornq(1,1) */ -#line 21652 "" +#line 21646 "" iplnow = all_1.ipl[0]; -#line 21653 "" +#line 21647 "" } else { -#line 21654 "" +#line 21648 "" islnow = all_1.islur[(all_1.nib[(all_1.ibar - 1) * 24 - 24] + 1) * 24 - 24]; /* iornqnow = iornq(1,nib(1,ibar-1)+1) */ -#line 21656 "" +#line 21650 "" iplnow = all_1.ipl[(all_1.nib[(all_1.ibar - 1) * 24 - 24] + 1) * 24 - 24]; -#line 21657 "" +#line 21651 "" } /* Check for R-symbols set at end of prior input block */ -#line 21661 "" +#line 21655 "" if (comget_1.movbrk == 0 && *(unsigned char *)comget_1.rptfq2 != 'E') { -#line 21662 "" +#line 21656 "" if (*(unsigned char *)comget_1.rptfq2 == 'D') { -#line 21663 "" +#line 21657 "" islnow = bit_set(islnow,26); -#line 21664 "" +#line 21658 "" } else if (*(unsigned char *)comget_1.rptfq2 == 'r') { -#line 21665 "" +#line 21659 "" islnow = bit_set(islnow,6); -#line 21666 "" +#line 21660 "" } else if (*(unsigned char *)comget_1.rptfq2 == 'd') { -#line 21667 "" +#line 21661 "" islnow = bit_set(islnow,8); -#line 21668 "" +#line 21662 "" } else if (*(unsigned char *)comget_1.rptfq2 == 'b') { -#line 21669 "" +#line 21663 "" islnow = bit_set(islnow,25); -#line 21670 "" +#line 21664 "" } else { -#line 21671 "" - s_wsle(&io___1423); -#line 21671 "" +#line 21665 "" + s_wsle(&io___1418); +#line 21665 "" e_wsle(); -#line 21672 "" - s_wsle(&io___1424); -#line 21672 "" +#line 21666 "" + s_wsle(&io___1419); +#line 21666 "" do_lio(&c__9, &c__1, "Illegal symbol with \"R\" at end of in"\ "put block:", (ftnlen)46); -#line 21672 "" +#line 21666 "" do_lio(&c__9, &c__1, comget_1.rptfq2, (ftnlen)1); -#line 21672 "" +#line 21666 "" e_wsle(); -#line 21674 "" +#line 21668 "" stop1_(); -#line 21675 "" +#line 21669 "" } -#line 21676 "" +#line 21670 "" *(unsigned char *)comget_1.rptfq2 = 'E'; -#line 21677 "" +#line 21671 "" } -#line 21678 "" +#line 21672 "" if ((islnow & 352) != 0) { /* Bit 5(lrpt), 6(rrpt), or 8(doublebar) has been set */ -#line 21682 "" +#line 21676 "" lrpt = bit_test(islnow,5); -#line 21683 "" +#line 21677 "" rrpt = bit_test(islnow,6); -#line 21684 "" +#line 21678 "" lrptpend = lrpt && comask_1.bar1syst; -#line 21685 "" +#line 21679 "" if (lrpt && ! lrptpend) { -#line 21686 "" +#line 21680 "" if (rrpt) { -#line 21687 "" +#line 21681 "" if (comlast_1.islast) { -#line 21687 "" - s_wsfe(&io___1427); +#line 21681 "" + s_wsfe(&io___1422); /* Writing concatenation */ -#line 21687 "" +#line 21681 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21687 "" +#line 21681 "" i__6[1] = 18, a__4[1] = "setleftrightrepeat"; -#line 21687 "" +#line 21681 "" s_cat(ch__11, a__4, i__6, &c__2, (ftnlen)19); -#line 21687 "" +#line 21681 "" do_fio(&c__1, ch__11, (ftnlen)19); -#line 21687 "" +#line 21681 "" e_wsfe(); -#line 21687 "" +#line 21681 "" } -#line 21688 "" +#line 21682 "" comask_1.fixednew = comask_1.fixednew + comask_1.wheadpt * spfacs_1.lrrptfac - .4f; -#line 21689 "" +#line 21683 "" } else { -#line 21690 "" +#line 21684 "" if (comlast_1.islast) { -#line 21690 "" - s_wsfe(&io___1428); +#line 21684 "" + s_wsfe(&io___1423); /* Writing concatenation */ -#line 21690 "" +#line 21684 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21690 "" +#line 21684 "" i__6[1] = 13, a__4[1] = "setleftrepeat"; -#line 21690 "" +#line 21684 "" s_cat(ch__10, a__4, i__6, &c__2, (ftnlen)14); -#line 21690 "" +#line 21684 "" do_fio(&c__1, ch__10, (ftnlen)14); -#line 21690 "" +#line 21684 "" e_wsfe(); -#line 21690 "" +#line 21684 "" } -#line 21691 "" +#line 21685 "" comask_1.fixednew = comask_1.fixednew + comask_1.wheadpt * spfacs_1.rptfac - .4f; -#line 21692 "" +#line 21686 "" } -#line 21693 "" +#line 21687 "" } else if (rrpt) { -#line 21694 "" +#line 21688 "" if (comlast_1.islast) { -#line 21694 "" - s_wsfe(&io___1429); +#line 21688 "" + s_wsfe(&io___1424); /* Writing concatenation */ -#line 21694 "" +#line 21688 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21694 "" +#line 21688 "" i__6[1] = 14, a__4[1] = "setrightrepeat"; -#line 21694 "" +#line 21688 "" s_cat(ch__16, a__4, i__6, &c__2, (ftnlen)15); -#line 21694 "" +#line 21688 "" do_fio(&c__1, ch__16, (ftnlen)15); -#line 21694 "" +#line 21688 "" e_wsfe(); -#line 21694 "" +#line 21688 "" } -#line 21695 "" +#line 21689 "" comask_1.fixednew = comask_1.fixednew + comask_1.wheadpt * spfacs_1.rptfac - .4f; -#line 21696 "" +#line 21690 "" } else if (bit_test(islnow,8)) { -#line 21697 "" +#line 21691 "" if (comlast_1.islast) { -#line 21697 "" - s_wsfe(&io___1430); +#line 21691 "" + s_wsfe(&io___1425); /* Writing concatenation */ -#line 21697 "" +#line 21691 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21697 "" +#line 21691 "" i__6[1] = 12, a__4[1] = "setdoublebar"; -#line 21697 "" +#line 21691 "" s_cat(ch__17, a__4, i__6, &c__2, (ftnlen)13); -#line 21697 "" +#line 21691 "" do_fio(&c__1, ch__17, (ftnlen)13); -#line 21697 "" +#line 21691 "" e_wsfe(); -#line 21697 "" +#line 21691 "" } -#line 21698 "" +#line 21692 "" comask_1.fixednew = comask_1.fixednew + comask_1.wheadpt * spfacs_1.dbarfac - .4f; -#line 21699 "" +#line 21693 "" } -#line 21700 "" +#line 21694 "" } else if (bit_test(islnow,26)) { /* doubleBAR */ -#line 21704 "" +#line 21698 "" if (comlast_1.islast) { -#line 21704 "" - s_wsfe(&io___1431); +#line 21698 "" + s_wsfe(&io___1426); /* Writing concatenation */ -#line 21704 "" +#line 21698 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21704 "" +#line 21698 "" i__6[1] = 12, a__4[1] = "setdoubleBAR"; -#line 21704 "" +#line 21698 "" s_cat(ch__17, a__4, i__6, &c__2, (ftnlen)13); -#line 21704 "" +#line 21698 "" do_fio(&c__1, ch__17, (ftnlen)13); -#line 21704 "" +#line 21698 "" e_wsfe(); -#line 21704 "" +#line 21698 "" } -#line 21705 "" +#line 21699 "" comask_1.fixednew = comask_1.fixednew + comask_1.wheadpt * spfacs_1.ddbarfac - .4f; /* else if (btest(iornqnow,29)) then */ -#line 21707 "" +#line 21701 "" } else if (bit_test(iplnow,0)) { /* no bar line */ /* -- if (islast) write(11,'(a)')sq//'setzalaligne' */ /* ++ */ -#line 21713 "" +#line 21707 "" if (comlast_1.islast) { -#line 21714 "" +#line 21708 "" if (comget_1.movbrk == 0) { -#line 21715 "" - s_wsfe(&io___1432); +#line 21709 "" + s_wsfe(&io___1427); /* Writing concatenation */ -#line 21715 "" +#line 21709 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21715 "" +#line 21709 "" i__6[1] = 12, a__4[1] = "setzalaligne"; -#line 21715 "" +#line 21709 "" s_cat(ch__17, a__4, i__6, &c__2, (ftnlen)13); -#line 21715 "" +#line 21709 "" do_fio(&c__1, ch__17, (ftnlen)13); -#line 21715 "" +#line 21709 "" e_wsfe(); -#line 21716 "" +#line 21710 "" } else { /* Encountered "Rz" at start of input block at start of new movement, Must */ /* use newmovement macro with arg 4 rather than setzalaligne, since former */ /* already redefines stoppiece. */ -#line 21722 "" +#line 21716 "" *(unsigned char *)comget_1.rptfq2 = 'z'; -#line 21723 "" +#line 21717 "" } -#line 21724 "" +#line 21718 "" } /* ++ */ -#line 21726 "" +#line 21720 "" comask_1.fixednew += -.4f; -#line 21727 "" +#line 21721 "" } /* 1st and 2nd endings */ -#line 21731 "" +#line 21725 "" svolta = bit_test(islnow,7); -#line 21732 "" +#line 21726 "" evolta = bit_test(islnow,9); -#line 21733 "" +#line 21727 "" if (evolta) { -#line 21734 "" +#line 21728 "" if (bit_test(islnow,10)) { -#line 21735 "" +#line 21729 "" if (comlast_1.islast) { -#line 21735 "" - s_wsfe(&io___1435); +#line 21729 "" + s_wsfe(&io___1430); /* Writing concatenation */ -#line 21735 "" +#line 21729 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21735 "" +#line 21729 "" i__6[1] = 11, a__4[1] = "endvoltabox"; -#line 21735 "" +#line 21729 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen)12); -#line 21735 "" +#line 21729 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 21735 "" +#line 21729 "" e_wsfe(); -#line 21735 "" +#line 21729 "" } -#line 21736 "" +#line 21730 "" } else { -#line 21737 "" +#line 21731 "" if (comlast_1.islast) { -#line 21737 "" - s_wsfe(&io___1436); +#line 21731 "" + s_wsfe(&io___1431); /* Writing concatenation */ -#line 21737 "" +#line 21731 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21737 "" +#line 21731 "" i__6[1] = 8, a__4[1] = "endvolta"; -#line 21737 "" +#line 21731 "" s_cat(ch__18, a__4, i__6, &c__2, (ftnlen)9); -#line 21737 "" +#line 21731 "" do_fio(&c__1, ch__18, (ftnlen)9); -#line 21737 "" +#line 21731 "" e_wsfe(); -#line 21737 "" +#line 21731 "" } -#line 21738 "" +#line 21732 "" } -#line 21739 "" +#line 21733 "" onvolt = FALSE_; -#line 21740 "" +#line 21734 "" } -#line 21741 "" +#line 21735 "" if (svolta) { -#line 21742 "" +#line 21736 "" ++comgrace_1.nvolt; -#line 21743 "" +#line 21737 "" lvoltxt = i_indx(comgrace_1.voltxtq + (comgrace_1.nvolt - 1) * 20, " ", (ftnlen)20, (ftnlen)1) - 1; -#line 21744 "" +#line 21738 "" if (lvoltxt == 1) { -#line 21745 "" +#line 21739 "" if (comlast_1.islast) { -#line 21745 "" - s_wsfe(&io___1438); +#line 21739 "" + s_wsfe(&io___1433); /* Writing concatenation */ -#line 21745 "" +#line 21739 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 21745 "" +#line 21739 "" i__5[1] = 8, a__3[1] = "Setvolta"; -#line 21745 "" +#line 21739 "" i__5[2] = 1, a__3[2] = comgrace_1.voltxtq + ( comgrace_1.nvolt - 1) * 20; -#line 21745 "" +#line 21739 "" i__5[3] = 1, a__3[3] = "%"; -#line 21745 "" +#line 21739 "" s_cat(ch__15, a__3, i__5, &c__4, (ftnlen)11); -#line 21745 "" +#line 21739 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 21745 "" +#line 21739 "" e_wsfe(); -#line 21745 "" +#line 21739 "" } -#line 21747 "" +#line 21741 "" } else { -#line 21748 "" +#line 21742 "" if (comlast_1.islast) { -#line 21748 "" - s_wsfe(&io___1439); +#line 21742 "" + s_wsfe(&io___1434); /* Writing concatenation */ -#line 21748 "" +#line 21742 "" i__12[0] = 1, a__9[0] = all_1.sq; -#line 21748 "" +#line 21742 "" i__12[1] = 8, a__9[1] = "Setvolta"; -#line 21748 "" +#line 21742 "" i__12[2] = 1, a__9[2] = "{"; -#line 21748 "" +#line 21742 "" i__12[3] = lvoltxt, a__9[3] = comgrace_1.voltxtq + ( comgrace_1.nvolt - 1) * 20; -#line 21748 "" +#line 21742 "" i__12[4] = 2, a__9[4] = "}%"; -#line 21748 "" +#line 21742 "" s_cat(ch__19, a__9, i__12, &c__5, (ftnlen)32); -#line 21748 "" +#line 21742 "" do_fio(&c__1, ch__19, lvoltxt + 12); -#line 21748 "" +#line 21742 "" e_wsfe(); -#line 21748 "" +#line 21742 "" } -#line 21750 "" +#line 21744 "" } -#line 21751 "" +#line 21745 "" onvolt = TRUE_; -#line 21752 "" +#line 21746 "" } -#line 21753 "" +#line 21747 "" if (all_1.ibar > 1) { -#line 21754 "" +#line 21748 "" ipnow = all_1.nib[(all_1.ibar - 1) * 24 - 24] + 1; -#line 21755 "" +#line 21749 "" } else { -#line 21756 "" +#line 21750 "" ipnow = 1; -#line 21757 "" +#line 21751 "" } -#line 21758 "" +#line 21752 "" iplnow = all_1.ipl[ipnow * 24 - 24]; -#line 21759 "" +#line 21753 "" if (comask_1.bar1syst) { /* If listslur>0, then there is at least one slur or tie carried over the break */ -#line 21763 "" +#line 21757 "" ispstie = FALSE_; -#line 21764 "" +#line 21758 "" if (comnotes_1.optlinebreakties && ! comslur_1.fontslur && comslur_1.listslur != 0 && comlast_1.islast) { -#line 21764 "" +#line 21758 "" linebreakties_(all_1.isdat1, all_1.isdat2, all_1.isdat3, all_1.isdat4, &all_1.nsdat, &ispstie, all_1.sepsymq, ( ftnlen)1); -#line 21764 "" +#line 21758 "" } -#line 21768 "" +#line 21762 "" ++all_1.iline; /* End an old system, Start a new system */ @@ -52053,225 +51989,225 @@ L23: /* Reduce space before mbrest at start of system */ /* Need this even if no accidentals in key signature */ -#line 21775 "" +#line 21769 "" if (all_1.ibar == comgrace_1.ibarmbr) { -#line 21775 "" +#line 21769 "" comgrace_1.xb4mbr = all_1.musicsize * -.2f; -#line 21775 "" +#line 21769 "" } -#line 21777 "" +#line 21771 "" if (all_1.iline != 1) { /* Not first line. */ /* Get corrected poe = points/elemskip for *previous* system */ -#line 21782 "" +#line 21776 "" wdpt = comtop_1.widthpt * (1 - comtop_1.fracindent); -#line 21783 "" +#line 21777 "" poe = (wdpt - fsyst * all_1.musicsize - nbarss * .4f - comask_1.fixednew) / (elsktot + comask_1.fbar * nbarss - comask_1.scaldold); -#line 21785 "" +#line 21779 "" ++isyscnt; -#line 21786 "" +#line 21780 "" poevec[isyscnt] = poe; /* Transfer data for system into global arrays to hold until very end */ -#line 21790 "" +#line 21784 "" i__7 = comas2_1.nasksys; -#line 21790 "" +#line 21784 "" for (ia = 1; ia <= i__7; ++ia) { -#line 21791 "" +#line 21785 "" ++comas3_1.iask; -#line 21792 "" +#line 21786 "" comas3_1.ask[comas3_1.iask - 1] = (comas2_1.wasksys[ia - 1] / poe - (r__1 = comas2_1.elasksys[ia - 1], dabs(r__1))) / comshort_1.poefa[all_1.iline - 2]; /* Only admit negative ask if it was user-defined space, signalled by elask<=0. */ -#line 21797 "" +#line 21791 "" if (comas2_1.elasksys[ia - 1] > 0.f) { -#line 21797 "" +#line 21791 "" comas3_1.ask[comas3_1.iask - 1] = r_dim(&comas3_1.ask[ comas3_1.iask - 1], &c_b1008); -#line 21797 "" +#line 21791 "" } -#line 21798 "" +#line 21792 "" /* L9: */ -#line 21798 "" +#line 21792 "" } -#line 21799 "" +#line 21793 "" i__7 = nhssys; -#line 21799 "" +#line 21793 "" for (ia = 1; ia <= i__7; ++ia) { -#line 21800 "" +#line 21794 "" ++nhstot; /* Computing MAX */ -#line 21801 "" +#line 21795 "" r__1 = hpts[ia - 1] - hesk[ia - 1] * poe; -#line 21801 "" +#line 21795 "" comhsp_1.hpttot[nhstot - 1] = dmax(r__1,0.f); -#line 21802 "" +#line 21796 "" /* L25: */ -#line 21802 "" +#line 21796 "" } /* Reset counters for new system */ -#line 21806 "" +#line 21800 "" comask_1.scaldold = 0.f; -#line 21807 "" +#line 21801 "" comask_1.fixednew = 0.f; -#line 21808 "" +#line 21802 "" comas2_1.nasksys = 0; -#line 21809 "" +#line 21803 "" nhssys = 0; -#line 21810 "" +#line 21804 "" } /* End of if block for first bar of non-first system. Still 1st bar, any system */ -#line 21814 "" +#line 21808 "" if (comlast_1.islast && all_1.figbass) { -#line 21814 "" - s_wsfe(&io___1448); +#line 21808 "" + s_wsfe(&io___1443); /* Writing concatenation */ -#line 21814 "" +#line 21808 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21814 "" +#line 21808 "" i__6[1] = 8, a__4[1] = "fixdrop%"; -#line 21814 "" +#line 21808 "" s_cat(ch__18, a__4, i__6, &c__2, (ftnlen)9); -#line 21814 "" +#line 21808 "" do_fio(&c__1, ch__18, (ftnlen)9); -#line 21814 "" +#line 21808 "" e_wsfe(); -#line 21814 "" +#line 21808 "" } -#line 21815 "" +#line 21809 "" ++isystpg; /* Try moving the next stmt way down, to fix a bug and get \eject printed at */ /* end of single-system page. */ /* if (isystpg .eq. nsystp(ipage)) isystpg = 0 */ -#line 21820 "" - s_rsle(&io___1449); -#line 21820 "" +#line 21814 "" + s_rsle(&io___1444); +#line 21814 "" do_lio(&c__3, &c__1, (char *)&nbarss, (ftnlen)sizeof(integer)); -#line 21820 "" +#line 21814 "" do_lio(&c__4, &c__1, (char *)&elsktot, (ftnlen)sizeof(real)); -#line 21820 "" +#line 21814 "" do_lio(&c__4, &c__1, (char *)&fsyst, (ftnlen)sizeof(real)); -#line 21820 "" +#line 21814 "" do_lio(&c__4, &c__1, (char *)&frac, (ftnlen)sizeof(real)); -#line 21820 "" +#line 21814 "" do_lio(&c__4, &c__1, (char *)&comeon_1.eonk, (ftnlen)sizeof(real)) ; -#line 21820 "" +#line 21814 "" do_lio(&c__4, &c__1, (char *)&comeon_1.ewmxk, (ftnlen)sizeof(real) ); -#line 21820 "" +#line 21814 "" e_rsle(); -#line 21821 "" +#line 21815 "" if (all_1.iline > 1) { -#line 21821 "" +#line 21815 "" comtop_1.fracindent = frac; -#line 21821 "" +#line 21815 "" } -#line 21822 "" +#line 21816 "" if (all_1.figbass) { -#line 21823 "" +#line 21817 "" all_1.ifigdr[(all_1.iline << 1) - 2] = 4; -#line 21824 "" +#line 21818 "" all_1.ifigdr[(all_1.iline << 1) - 1] = 4; -#line 21825 "" +#line 21819 "" } -#line 21826 "" +#line 21820 "" all_1.slfac = slfac1 * all_1.musicsize * elsktot; -#line 21827 "" +#line 21821 "" if (all_1.iline != 1) { /* For the line just _finished_, put figdrop in separate file. */ -#line 21831 "" +#line 21825 "" if (all_1.figbass) { -#line 21831 "" - s_wsfe(&io___1451); +#line 21825 "" + s_wsfe(&io___1446); /* Writing concatenation */ -#line 21831 "" +#line 21825 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21831 "" +#line 21825 "" i__6[1] = 8, a__4[1] = "figdrop="; -#line 21831 "" +#line 21825 "" s_cat(ch__18, a__4, i__6, &c__2, (ftnlen)9); -#line 21831 "" +#line 21825 "" do_fio(&c__1, ch__18, (ftnlen)9); -#line 21831 "" +#line 21825 "" do_fio(&c__1, (char *)&all_1.ifigdr[(all_1.iline - 1 << 1) - 2], (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 21831 "" +#line 21825 "" i__8[0] = 1, a__5[0] = " "; -#line 21831 "" +#line 21825 "" i__8[1] = 1, a__5[1] = all_1.sq; -#line 21831 "" +#line 21825 "" i__8[2] = 8, a__5[2] = "figdtwo="; -#line 21831 "" +#line 21825 "" s_cat(ch__20, a__5, i__8, &c__3, (ftnlen)10); -#line 21831 "" +#line 21825 "" do_fio(&c__1, ch__20, (ftnlen)10); -#line 21831 "" +#line 21825 "" do_fio(&c__1, (char *)&all_1.ifigdr[(all_1.iline - 1 << 1) - 1], (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 21831 "" +#line 21825 "" i__11[0] = 1, a__8[0] = all_1.sq; -#line 21831 "" +#line 21825 "" i__11[1] = 3, a__8[1] = "or%"; -#line 21831 "" +#line 21825 "" s_cat(ch__21, a__8, i__11, &c__2, (ftnlen)4); -#line 21831 "" +#line 21825 "" do_fio(&c__1, ch__21, (ftnlen)4); -#line 21831 "" +#line 21825 "" e_wsfe(); -#line 21831 "" +#line 21825 "" } /* Check slurs in top staff for interference w/ barno. Only check when */ /* # if digits in barno >= |isig| But to keep on/off phasing, must ALWAYS */ /* keep track of ons and offs when |isig|<=3. */ -#line 21839 "" +#line 21833 "" r__1 = combibarcnt_1.ibarcnt + ibcoff + .01f; -#line 21839 "" +#line 21833 "" ndigbn = (integer) r_lg10(&r__1) + 1; -#line 21840 "" +#line 21834 "" comsln_1.isnx = 0; -#line 21841 "" +#line 21835 "" if (ndigbn >= abs(comtop_1.isig) && comsln_1.is1n1 > 0) { /* There's a slur in top voice over the line break, hgt=is1n1, idcode=is2n1 */ /* Look for termination in remainder of this input block. If not found, */ /* just use is1n1. Remember, haven't slid down yet. */ -#line 21847 "" +#line 21841 "" ioff = 0; -#line 21848 "" +#line 21842 "" if (all_1.ibar > 1) { -#line 21848 "" +#line 21842 "" ioff = all_1.nib[commvl_1.ivmx[all_1.nv + commvl_1.nvmx[all_1.nv - 1] * 24 - 25] + ( all_1.ibar - 1) * 24 - 25]; -#line 21848 "" +#line 21842 "" } -#line 21849 "" +#line 21843 "" i__7 = all_1.nsdat; -#line 21849 "" +#line 21843 "" for (isdat = 1; isdat <= i__7; ++isdat) { -#line 21850 "" +#line 21844 "" if (igetbits_(&all_1.isdat1[isdat - 1], &c__5, &c__13) == commvl_1.ivmx[all_1.nv + commvl_1.nvmx[ all_1.nv - 1] * 24 - 25] && ! bit_test( @@ -52283,82 +52219,82 @@ L23: /* is1n1 = max(is1n1,igetbits(isdat2(nsdat),7,19)) */ /* Computing MAX */ -#line 21857 "" +#line 21851 "" i__2 = comsln_1.is1n1, i__13 = igetbits_(& all_1.isdat2[isdat - 1], &c__7, &c__19); -#line 21857 "" +#line 21851 "" comsln_1.is1n1 = max(i__2,i__13); -#line 21858 "" +#line 21852 "" goto L51; -#line 21859 "" +#line 21853 "" } -#line 21860 "" +#line 21854 "" /* L50: */ -#line 21860 "" +#line 21854 "" } /* If exiting loop normally, did not find end of slur. c'est la vie. */ -#line 21864 "" +#line 21858 "" L51: -#line 21865 "" +#line 21859 "" i__7 = ncmid_(&all_1.nv, &c__1) + 1 + comsln_1.irzbnd; -#line 21865 "" +#line 21859 "" comsln_1.isnx = i_dim(&comsln_1.is1n1, &i__7); -#line 21866 "" +#line 21860 "" if (comsln_1.isnx > 0) { /* AHA! Slur likely to interfere with barno. */ /* Modified 090525 to use \bnrs */ -#line 21872 "" +#line 21866 "" slint = TRUE_; -#line 21873 "" +#line 21867 "" s_copy(fmtq, "(a16,i1,a14)", (ftnlen)24, (ftnlen)12); -#line 21874 "" +#line 21868 "" if (comsln_1.irzbnd + comsln_1.isnx > 9) { -#line 21874 "" +#line 21868 "" s_copy(fmtq, "(a16,i2,a14)", (ftnlen)24, (ftnlen) 12); -#line 21874 "" +#line 21868 "" } -#line 21875 "" +#line 21869 "" if (comlast_1.islast) { -#line 21875 "" - s_wsfe(&io___1454); +#line 21869 "" + s_wsfe(&io___1449); /* Writing concatenation */ -#line 21875 "" +#line 21869 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 21875 "" +#line 21869 "" i__5[1] = 3, a__3[1] = "def"; -#line 21875 "" +#line 21869 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 21875 "" +#line 21869 "" i__5[3] = 11, a__3[3] = "raisebarno{"; -#line 21875 "" +#line 21869 "" s_cat(ch__22, a__3, i__5, &c__4, (ftnlen)16); -#line 21875 "" +#line 21869 "" do_fio(&c__1, ch__22, (ftnlen)16); -#line 21875 "" +#line 21869 "" i__7 = comsln_1.irzbnd + comsln_1.isnx; -#line 21875 "" +#line 21869 "" do_fio(&c__1, (char *)&i__7, (ftnlen)sizeof( integer)); /* Writing concatenation */ -#line 21875 "" +#line 21869 "" i__8[0] = 2, a__5[0] = ".5"; -#line 21875 "" +#line 21869 "" i__8[1] = 1, a__5[1] = all_1.sq; -#line 21875 "" +#line 21869 "" i__8[2] = 11, a__5[2] = "internote}%"; -#line 21875 "" +#line 21869 "" s_cat(ch__10, a__5, i__8, &c__3, (ftnlen)14); -#line 21875 "" +#line 21869 "" do_fio(&c__1, ch__10, (ftnlen)14); -#line 21875 "" +#line 21869 "" e_wsfe(); -#line 21875 "" +#line 21869 "" } /* if (islast) then */ /* if (isnx .le. 9) then */ @@ -52368,11 +52304,11 @@ L51: /* end if */ /* end if */ -#line 21885 "" +#line 21879 "" } -#line 21886 "" +#line 21880 "" } -#line 21887 "" +#line 21881 "" if (comget_1.movbrk > 0) { /* movbrk = 0 */ @@ -52383,85 +52319,85 @@ L51: /* indsym = 0,1,2 for doubleBAR , doublebar, rightrepeat. */ /* This is passed to \newmovement. */ -#line 21897 "" +#line 21891 "" if (*(unsigned char *)comget_1.rptfq2 == 'E') { -#line 21897 "" +#line 21891 "" *(unsigned char *)comget_1.rptfq2 = 'D'; -#line 21897 "" +#line 21891 "" } -#line 21898 "" +#line 21892 "" indsym = i_indx("Ddrbz", comget_1.rptfq2, (ftnlen)5, ( ftnlen)1) - 1; -#line 21899 "" +#line 21893 "" *(unsigned char *)comget_1.rptfq2 = 'E'; /* Also check for Rd or Rr set the normal way */ -#line 21903 "" +#line 21897 "" if (bit_test(islnow,8)) { -#line 21904 "" +#line 21898 "" indsym = 1; -#line 21905 "" +#line 21899 "" } else if (bit_test(islnow,6)) { -#line 21906 "" +#line 21900 "" indsym = 2; -#line 21907 "" +#line 21901 "" } -#line 21908 "" +#line 21902 "" if (indsym < 0) { -#line 21909 "" - s_wsle(&io___1456); -#line 21909 "" +#line 21903 "" + s_wsle(&io___1451); +#line 21903 "" e_wsle(); -#line 21910 "" - s_wsle(&io___1457); -#line 21910 "" +#line 21904 "" + s_wsle(&io___1452); +#line 21904 "" do_lio(&c__9, &c__1, "Illegal end symbol before \"/\"" , (ftnlen)29); -#line 21910 "" +#line 21904 "" e_wsle(); -#line 21911 "" +#line 21905 "" stop1_(); -#line 21912 "" +#line 21906 "" } /* Check for continuation (no bar number reset) */ -#line 21916 "" +#line 21910 "" if (comlast_1.islast && comnotes_1.nobar1) { -#line 21917 "" - s_wsfe(&io___1458); +#line 21911 "" + s_wsfe(&io___1453); /* Writing concatenation */ -#line 21917 "" +#line 21911 "" i__9[0] = 1, a__6[0] = all_1.sq; -#line 21917 "" +#line 21911 "" i__9[1] = 7, a__6[1] = "advance"; -#line 21917 "" +#line 21911 "" i__9[2] = 1, a__6[2] = all_1.sq; -#line 21917 "" +#line 21911 "" i__9[3] = 6, a__6[3] = "barno1"; -#line 21917 "" +#line 21911 "" i__9[4] = 1, a__6[4] = all_1.sq; -#line 21917 "" +#line 21911 "" i__9[5] = 6, a__6[5] = "global"; -#line 21917 "" +#line 21911 "" i__9[6] = 1, a__6[6] = all_1.sq; -#line 21917 "" +#line 21911 "" i__9[7] = 10, a__6[7] = "startbarno"; -#line 21917 "" +#line 21911 "" i__9[8] = 1, a__6[8] = all_1.sq; -#line 21917 "" +#line 21911 "" i__9[9] = 6, a__6[9] = "barno%"; -#line 21917 "" +#line 21911 "" s_cat(ch__23, a__6, i__9, &c__10, (ftnlen)40); -#line 21917 "" +#line 21911 "" do_fio(&c__1, ch__23, (ftnlen)40); -#line 21917 "" +#line 21911 "" e_wsfe(); /* Need above for shortening case mcm with Mc */ -#line 21922 "" +#line 21916 "" } /* Per Rainer's suggestion, changing \nbinstruments via 3rd arg of \newmovement */ @@ -52473,528 +52409,528 @@ L51: /* if (islast) write(11,'(a13,i2,a1,i1,a1)') */ /* * sq//'newmovement{',movgap,'}',indsym,'%' */ /* end if */ -#line 21933 "" +#line 21927 "" if (comlast_1.islast) { /* Writing concatenation */ -#line 21934 "" +#line 21928 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21934 "" +#line 21928 "" i__6[1] = 11, a__4[1] = "newmovement"; -#line 21934 "" +#line 21928 "" s_cat(nmq, a__4, i__6, &c__2, (ftnlen)40); -#line 21935 "" +#line 21929 "" lnmq = 12; -#line 21936 "" +#line 21930 "" if (comget_1.movgap < 10) { -#line 21937 "" +#line 21931 "" lnmq = 14; -#line 21938 "" - s_wsfi(&io___1461); -#line 21938 "" +#line 21932 "" + s_wsfi(&io___1456); +#line 21932 "" do_fio(&c__1, (char *)&comget_1.movgap, (ftnlen) sizeof(integer)); -#line 21938 "" +#line 21932 "" do_fio(&c__1, (char *)&indsym, (ftnlen)sizeof( integer)); -#line 21938 "" +#line 21932 "" e_wsfi(); -#line 21939 "" +#line 21933 "" } else { -#line 21940 "" +#line 21934 "" lnmq = 17; -#line 21941 "" - s_wsfi(&io___1462); -#line 21941 "" +#line 21935 "" + s_wsfi(&io___1457); +#line 21935 "" do_fio(&c__1, "{", (ftnlen)1); -#line 21941 "" +#line 21935 "" do_fio(&c__1, (char *)&comget_1.movgap, (ftnlen) sizeof(integer)); -#line 21941 "" +#line 21935 "" do_fio(&c__1, "}", (ftnlen)1); -#line 21941 "" +#line 21935 "" do_fio(&c__1, (char *)&indsym, (ftnlen)sizeof( integer)); -#line 21941 "" +#line 21935 "" e_wsfi(); -#line 21942 "" +#line 21936 "" } -#line 21943 "" +#line 21937 "" if (comnotes_1.ninow < 10) { -#line 21944 "" +#line 21938 "" ++lnmq; -#line 21945 "" +#line 21939 "" ici__1.icierr = 0; -#line 21945 "" +#line 21939 "" ici__1.icirnum = 1; -#line 21945 "" +#line 21939 "" ici__1.icirlen = 1; -#line 21945 "" +#line 21939 "" ici__1.iciunit = nmq + (lnmq - 1); -#line 21945 "" +#line 21939 "" ici__1.icifmt = "(i1)"; -#line 21945 "" +#line 21939 "" s_wsfi(&ici__1); -#line 21945 "" +#line 21939 "" do_fio(&c__1, (char *)&comnotes_1.ninow, (ftnlen) sizeof(integer)); -#line 21945 "" +#line 21939 "" e_wsfi(); -#line 21946 "" +#line 21940 "" } else { -#line 21947 "" +#line 21941 "" lnmq += 4; -#line 21948 "" +#line 21942 "" i__7 = lnmq - 4; -#line 21948 "" +#line 21942 "" ici__1.icierr = 0; -#line 21948 "" +#line 21942 "" ici__1.icirnum = 1; -#line 21948 "" +#line 21942 "" ici__1.icirlen = lnmq - i__7; -#line 21948 "" +#line 21942 "" ici__1.iciunit = nmq + i__7; -#line 21948 "" +#line 21942 "" ici__1.icifmt = "(a1,i2,a1)"; -#line 21948 "" +#line 21942 "" s_wsfi(&ici__1); -#line 21948 "" +#line 21942 "" do_fio(&c__1, "{", (ftnlen)1); -#line 21948 "" +#line 21942 "" do_fio(&c__1, (char *)&comnotes_1.ninow, (ftnlen) sizeof(integer)); -#line 21948 "" +#line 21942 "" do_fio(&c__1, "}", (ftnlen)1); -#line 21948 "" +#line 21942 "" e_wsfi(); -#line 21949 "" +#line 21943 "" } -#line 21950 "" +#line 21944 "" ++lnmq; -#line 21951 "" +#line 21945 "" ici__1.icierr = 0; -#line 21951 "" +#line 21945 "" ici__1.icirnum = 1; -#line 21951 "" +#line 21945 "" ici__1.icirlen = 1; -#line 21951 "" +#line 21945 "" ici__1.iciunit = nmq + (lnmq - 1); -#line 21951 "" +#line 21945 "" ici__1.icifmt = "(a1)"; -#line 21951 "" +#line 21945 "" s_wsfi(&ici__1); -#line 21951 "" +#line 21945 "" do_fio(&c__1, "%", (ftnlen)1); -#line 21951 "" +#line 21945 "" e_wsfi(); -#line 21952 "" +#line 21946 "" if (comshort_1.ishort == 4) { /* Ending Short-blank-coda */ -#line 21956 "" - s_wsfe(&io___1463); +#line 21950 "" + s_wsfe(&io___1458); /* Writing concatenation */ -#line 21956 "" +#line 21950 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21956 "" +#line 21950 "" i__6[1] = 11, a__4[1] = "Endpiece}}%"; -#line 21956 "" +#line 21950 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen)12); -#line 21956 "" +#line 21950 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 21956 "" +#line 21950 "" e_wsfe(); -#line 21957 "" +#line 21951 "" } -#line 21958 "" - s_wsfe(&io___1464); -#line 21958 "" +#line 21952 "" + s_wsfe(&io___1459); +#line 21952 "" do_fio(&c__1, nmq, lnmq); -#line 21958 "" +#line 21952 "" e_wsfe(); -#line 21959 "" +#line 21953 "" if (comshort_1.ishort == 2) { -#line 21960 "" - s_wsfe(&io___1465); +#line 21954 "" + s_wsfe(&io___1460); /* Writing concatenation */ -#line 21960 "" +#line 21954 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21960 "" +#line 21954 "" i__6[1] = 12, a__4[1] = "stoppiece}}%"; -#line 21960 "" +#line 21954 "" s_cat(ch__17, a__4, i__6, &c__2, (ftnlen)13); -#line 21960 "" +#line 21954 "" do_fio(&c__1, ch__17, (ftnlen)13); -#line 21960 "" +#line 21954 "" e_wsfe(); -#line 21961 "" +#line 21955 "" comshort_1.ishort = 5; -#line 21962 "" +#line 21956 "" } else if (comshort_1.ishort == 4) { -#line 21963 "" - s_wsfe(&io___1466); +#line 21957 "" + s_wsfe(&io___1461); /* Writing concatenation */ -#line 21963 "" +#line 21957 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 21963 "" +#line 21957 "" i__4[1] = 3, a__2[1] = "let"; -#line 21963 "" +#line 21957 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 21963 "" +#line 21957 "" i__4[3] = 9, a__2[3] = "stoppiece"; -#line 21963 "" +#line 21957 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 21963 "" +#line 21957 "" i__4[5] = 9, a__2[5] = "holdstop%"; -#line 21963 "" +#line 21957 "" s_cat(ch__24, a__2, i__4, &c__6, (ftnlen)24); -#line 21963 "" +#line 21957 "" do_fio(&c__1, ch__24, (ftnlen)24); -#line 21963 "" +#line 21957 "" e_wsfe(); /* Since we bypass newmovement, need to set the vertical gap. */ -#line 21968 "" +#line 21962 "" if (comget_1.movgap > 10) { -#line 21969 "" - s_wsfe(&io___1467); +#line 21963 "" + s_wsfe(&io___1462); /* Writing concatenation */ -#line 21969 "" +#line 21963 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21969 "" +#line 21963 "" i__6[1] = 5, a__4[1] = "vskip"; -#line 21969 "" +#line 21963 "" s_cat(ch__25, a__4, i__6, &c__2, (ftnlen)6); -#line 21969 "" +#line 21963 "" do_fio(&c__1, ch__25, (ftnlen)6); -#line 21969 "" +#line 21963 "" do_fio(&c__1, (char *)&comget_1.movgap, ( ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 21969 "" +#line 21963 "" i__11[0] = 1, a__8[0] = all_1.sq; -#line 21969 "" +#line 21963 "" i__11[1] = 10, a__8[1] = "internote%"; -#line 21969 "" +#line 21963 "" s_cat(ch__15, a__8, i__11, &c__2, (ftnlen)11); -#line 21969 "" +#line 21963 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 21969 "" +#line 21963 "" e_wsfe(); -#line 21971 "" +#line 21965 "" } else if (comget_1.movgap > 0) { -#line 21972 "" - s_wsfe(&io___1468); +#line 21966 "" + s_wsfe(&io___1463); /* Writing concatenation */ -#line 21972 "" +#line 21966 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21972 "" +#line 21966 "" i__6[1] = 5, a__4[1] = "vskip"; -#line 21972 "" +#line 21966 "" s_cat(ch__25, a__4, i__6, &c__2, (ftnlen)6); -#line 21972 "" +#line 21966 "" do_fio(&c__1, ch__25, (ftnlen)6); -#line 21972 "" +#line 21966 "" do_fio(&c__1, (char *)&comget_1.movgap, ( ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 21972 "" +#line 21966 "" i__11[0] = 1, a__8[0] = all_1.sq; -#line 21972 "" +#line 21966 "" i__11[1] = 10, a__8[1] = "internote%"; -#line 21972 "" +#line 21966 "" s_cat(ch__15, a__8, i__11, &c__2, (ftnlen)11); -#line 21972 "" +#line 21966 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 21972 "" +#line 21966 "" e_wsfe(); -#line 21974 "" +#line 21968 "" } -#line 21975 "" +#line 21969 "" comshort_1.ishort = 6; -#line 21976 "" +#line 21970 "" } -#line 21977 "" +#line 21971 "" if ((comshort_1.ishort == 5 || comshort_1.ishort == 6) && ! comnvi_1.rename) { -#line 21978 "" +#line 21972 "" i__7 = comnotes_1.ninow; -#line 21978 "" +#line 21972 "" for (iinst = 1; iinst <= i__7; ++iinst) { -#line 21979 "" +#line 21973 "" if (comlast_1.islast) { -#line 21980 "" +#line 21974 "" if (iinst < 10) { -#line 21981 "" - s_wsfe(&io___1469); +#line 21975 "" + s_wsfe(&io___1464); /* Writing concatenation */ -#line 21981 "" +#line 21975 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21981 "" +#line 21975 "" i__6[1] = 7, a__4[1] = "setname"; -#line 21981 "" +#line 21975 "" s_cat(ch__8, a__4, i__6, &c__2, ( ftnlen)8); -#line 21981 "" +#line 21975 "" do_fio(&c__1, ch__8, (ftnlen)8); -#line 21981 "" +#line 21975 "" do_fio(&c__1, (char *)&iinst, (ftnlen) sizeof(integer)); -#line 21981 "" +#line 21975 "" do_fio(&c__1, "{}%", (ftnlen)3); -#line 21981 "" +#line 21975 "" e_wsfe(); -#line 21982 "" +#line 21976 "" } else { -#line 21983 "" - s_wsfe(&io___1470); +#line 21977 "" + s_wsfe(&io___1465); /* Writing concatenation */ -#line 21983 "" +#line 21977 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 21983 "" +#line 21977 "" i__6[1] = 8, a__4[1] = "setname{"; -#line 21983 "" +#line 21977 "" s_cat(ch__18, a__4, i__6, &c__2, ( ftnlen)9); -#line 21983 "" +#line 21977 "" do_fio(&c__1, ch__18, (ftnlen)9); -#line 21983 "" +#line 21977 "" do_fio(&c__1, (char *)&iinst, (ftnlen) sizeof(integer)); -#line 21983 "" +#line 21977 "" do_fio(&c__1, "}{}%", (ftnlen)4); -#line 21983 "" +#line 21977 "" e_wsfe(); -#line 21985 "" +#line 21979 "" } -#line 21986 "" +#line 21980 "" } -#line 21987 "" +#line 21981 "" /* L62: */ -#line 21987 "" +#line 21981 "" } -#line 21988 "" +#line 21982 "" } -#line 21989 "" +#line 21983 "" comnvi_1.rename = FALSE_; -#line 21990 "" +#line 21984 "" } /* Change generalmeter if necessary */ -#line 21994 "" +#line 21988 "" if (comlast_1.islast) { -#line 21995 "" +#line 21989 "" wgmeter_(&all_1.mtrnmp, &all_1.mtrdnp); -#line 21996 "" +#line 21990 "" } -#line 21997 "" +#line 21991 "" all_1.mtrnuml = 0; /* (Moved all name-writing to getnote, right when 'M' is detected) */ -#line 22001 "" +#line 21995 "" if (bit_test(iplnow,28)) { /* Key signature at movement break */ -#line 22005 "" +#line 21999 "" iplnow = bit_clear(iplnow,28); -#line 22006 "" +#line 22000 "" if (comtop_1.isig > 0) { -#line 22007 "" +#line 22001 "" if (comlast_1.islast) { -#line 22007 "" - s_wsfe(&io___1471); +#line 22001 "" + s_wsfe(&io___1466); /* Writing concatenation */ -#line 22007 "" +#line 22001 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22007 "" +#line 22001 "" i__6[1] = 17, a__4[1] = "generalsignature{"; -#line 22007 "" +#line 22001 "" s_cat(ch__26, a__4, i__6, &c__2, (ftnlen)18); -#line 22007 "" +#line 22001 "" do_fio(&c__1, ch__26, (ftnlen)18); -#line 22007 "" +#line 22001 "" do_fio(&c__1, (char *)&comtop_1.isig, (ftnlen) sizeof(integer)); -#line 22007 "" +#line 22001 "" do_fio(&c__1, "}%", (ftnlen)2); -#line 22007 "" +#line 22001 "" e_wsfe(); -#line 22007 "" +#line 22001 "" } -#line 22009 "" +#line 22003 "" } else { -#line 22010 "" +#line 22004 "" if (comlast_1.islast) { -#line 22010 "" - s_wsfe(&io___1472); +#line 22004 "" + s_wsfe(&io___1467); /* Writing concatenation */ -#line 22010 "" +#line 22004 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22010 "" +#line 22004 "" i__6[1] = 17, a__4[1] = "generalsignature{"; -#line 22010 "" +#line 22004 "" s_cat(ch__26, a__4, i__6, &c__2, (ftnlen)18); -#line 22010 "" +#line 22004 "" do_fio(&c__1, ch__26, (ftnlen)18); -#line 22010 "" +#line 22004 "" do_fio(&c__1, (char *)&comtop_1.isig, (ftnlen) sizeof(integer)); -#line 22010 "" +#line 22004 "" do_fio(&c__1, "}%", (ftnlen)2); -#line 22010 "" +#line 22004 "" e_wsfe(); -#line 22010 "" +#line 22004 "" } -#line 22012 "" +#line 22006 "" } -#line 22013 "" +#line 22007 "" if (comlast_1.islast && cominsttrans_1.laterinsttrans) { -#line 22014 "" +#line 22008 "" writesetsign_(&cominsttrans_1.ninsttrans, cominsttrans_1.iinsttrans, cominsttrans_1.itranskey, & cominsttrans_1.laterinsttrans); -#line 22016 "" +#line 22010 "" } -#line 22017 "" +#line 22011 "" } -#line 22018 "" +#line 22012 "" if (comget_1.parmov >= -.1f) { /* Resent paragraph indentation */ -#line 22022 "" +#line 22016 "" ipi = comget_1.parmov * comtop_1.widthpt + .1f; -#line 22023 "" +#line 22017 "" if (ipi < 10) { -#line 22024 "" +#line 22018 "" if (comlast_1.islast) { -#line 22024 "" - s_wsfe(&io___1474); +#line 22018 "" + s_wsfe(&io___1469); /* Writing concatenation */ -#line 22024 "" +#line 22018 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22024 "" +#line 22018 "" i__6[1] = 10, a__4[1] = "parindent "; -#line 22024 "" +#line 22018 "" s_cat(ch__15, a__4, i__6, &c__2, (ftnlen)11); -#line 22024 "" +#line 22018 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 22024 "" +#line 22018 "" do_fio(&c__1, (char *)&ipi, (ftnlen)sizeof( integer)); -#line 22024 "" +#line 22018 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 22024 "" +#line 22018 "" e_wsfe(); -#line 22024 "" +#line 22018 "" } -#line 22026 "" +#line 22020 "" } else if (ipi < 100) { -#line 22027 "" +#line 22021 "" if (comlast_1.islast) { -#line 22027 "" - s_wsfe(&io___1475); +#line 22021 "" + s_wsfe(&io___1470); /* Writing concatenation */ -#line 22027 "" +#line 22021 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22027 "" +#line 22021 "" i__6[1] = 10, a__4[1] = "parindent "; -#line 22027 "" +#line 22021 "" s_cat(ch__15, a__4, i__6, &c__2, (ftnlen)11); -#line 22027 "" +#line 22021 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 22027 "" +#line 22021 "" do_fio(&c__1, (char *)&ipi, (ftnlen)sizeof( integer)); -#line 22027 "" +#line 22021 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 22027 "" +#line 22021 "" e_wsfe(); -#line 22027 "" +#line 22021 "" } -#line 22029 "" +#line 22023 "" } else { -#line 22030 "" +#line 22024 "" if (comlast_1.islast) { -#line 22030 "" - s_wsfe(&io___1476); +#line 22024 "" + s_wsfe(&io___1471); /* Writing concatenation */ -#line 22030 "" +#line 22024 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22030 "" +#line 22024 "" i__6[1] = 10, a__4[1] = "parindent "; -#line 22030 "" +#line 22024 "" s_cat(ch__15, a__4, i__6, &c__2, (ftnlen)11); -#line 22030 "" +#line 22024 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 22030 "" +#line 22024 "" do_fio(&c__1, (char *)&ipi, (ftnlen)sizeof( integer)); -#line 22030 "" +#line 22024 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 22030 "" +#line 22024 "" e_wsfe(); -#line 22030 "" +#line 22024 "" } -#line 22032 "" +#line 22026 "" } -#line 22033 "" +#line 22027 "" } -#line 22034 "" +#line 22028 "" if (comshort_1.ishort == 6) { -#line 22035 "" +#line 22029 "" if (iflagbot == 1) { -#line 22036 "" - s_wsfe(&io___1477); +#line 22030 "" + s_wsfe(&io___1472); /* Writing concatenation */ -#line 22036 "" +#line 22030 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 22036 "" +#line 22030 "" i__5[1] = 5, a__3[1] = "vfill"; -#line 22036 "" +#line 22030 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 22036 "" +#line 22030 "" i__5[3] = 5, a__3[3] = "eject"; -#line 22036 "" +#line 22030 "" s_cat(ch__14, a__3, i__5, &c__4, (ftnlen)12); -#line 22036 "" +#line 22030 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22036 "" +#line 22030 "" e_wsfe(); /* iflagbot = 0 */ /* ishort = 0 */ -#line 22039 "" +#line 22033 "" } else { -#line 22040 "" - s_wsfe(&io___1478); +#line 22034 "" + s_wsfe(&io___1473); /* Writing concatenation */ -#line 22040 "" +#line 22034 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22040 "" +#line 22034 "" i__6[1] = 9, a__4[1] = "contpiece"; -#line 22040 "" +#line 22034 "" s_cat(ch__20, a__4, i__6, &c__2, (ftnlen)10); -#line 22040 "" +#line 22034 "" do_fio(&c__1, ch__20, (ftnlen)10); -#line 22040 "" +#line 22034 "" e_wsfe(); -#line 22041 "" +#line 22035 "" } /* Zero ishort later trying to write alaligne */ -#line 22045 "" +#line 22039 "" } -#line 22046 "" +#line 22040 "" } /* End of movement break stuff */ -#line 22047 "" +#line 22041 "" if (isystpg == 1) { /* First line on a page (not 1st page, still first bar). Tidy up old page */ @@ -53010,307 +52946,307 @@ L51: /* Check for meter change at start of a new PAGE */ -#line 22062 "" +#line 22056 "" if (all_1.mtrnuml > 0) { /* Meter change at start of a new page. Ugly repeated coding here. */ -#line 22066 "" +#line 22060 "" mtrnms = all_1.mtrnuml; -#line 22067 "" +#line 22061 "" setmeter_(&all_1.mtrnuml, &all_1.mtrdenl, & combeam_1.ibmtyp, &ibmrep); -#line 22068 "" +#line 22062 "" all_1.mtrnuml = mtrnms; -#line 22069 "" +#line 22063 "" if (comget_1.movbrk == 0 && comlast_1.islast) { -#line 22070 "" +#line 22064 "" wgmeter_(&all_1.mtrnmp, &all_1.mtrdnp); -#line 22071 "" +#line 22065 "" } -#line 22072 "" +#line 22066 "" } /* Key signature change? */ -#line 22076 "" +#line 22070 "" if (bit_test(iplnow,28) && comget_1.movbrk == 0) { /* Writing concatenation */ -#line 22077 "" +#line 22071 "" i__14[0] = 1, a__10[0] = all_1.sq; -#line 22077 "" +#line 22071 "" i__14[1] = 4, a__10[1] = "xbar"; -#line 22077 "" +#line 22071 "" i__14[2] = 1, a__10[2] = all_1.sq; -#line 22077 "" +#line 22071 "" i__14[3] = 10, a__10[3] = "addspace{-"; -#line 22077 "" +#line 22071 "" i__14[4] = 1, a__10[4] = all_1.sq; -#line 22077 "" +#line 22071 "" i__14[5] = 14, a__10[5] = "afterruleskip}"; -#line 22077 "" +#line 22071 "" i__14[6] = 1, a__10[6] = all_1.sq; -#line 22077 "" +#line 22071 "" i__14[7] = 17, a__10[7] = "generalsignature{"; -#line 22077 "" +#line 22071 "" s_cat(notexq, a__10, i__14, &c__8, (ftnlen)79); -#line 22079 "" +#line 22073 "" lnote = 49; -#line 22080 "" +#line 22074 "" if (comtop_1.isig < 0) { /* Writing concatenation */ -#line 22081 "" +#line 22075 "" i__6[0] = 49, a__4[0] = notexq; -#line 22081 "" +#line 22075 "" i__6[1] = 1, a__4[1] = "-"; -#line 22081 "" +#line 22075 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 22082 "" +#line 22076 "" lnote = 50; -#line 22083 "" +#line 22077 "" } -#line 22084 "" +#line 22078 "" if (comlast_1.islast) { -#line 22084 "" - s_wsfe(&io___1480); +#line 22078 "" + s_wsfe(&io___1475); /* Writing concatenation */ -#line 22084 "" +#line 22078 "" i__8[0] = lnote, a__5[0] = notexq; -#line 22084 "" +#line 22078 "" i__7 = abs(comtop_1.isig) + 48; -#line 22084 "" +#line 22078 "" chax_(ch__1, (ftnlen)1, &i__7); -#line 22084 "" +#line 22078 "" i__8[1] = 1, a__5[1] = ch__1; -#line 22084 "" +#line 22078 "" i__8[2] = 2, a__5[2] = "}%"; -#line 22084 "" +#line 22078 "" s_cat(ch__27, a__5, i__8, &c__3, (ftnlen)82); -#line 22084 "" +#line 22078 "" do_fio(&c__1, ch__27, lnote + 3); -#line 22084 "" +#line 22078 "" e_wsfe(); -#line 22084 "" +#line 22078 "" } -#line 22086 "" +#line 22080 "" if (comlast_1.islast && cominsttrans_1.laterinsttrans) { -#line 22087 "" +#line 22081 "" writesetsign_(&cominsttrans_1.ninsttrans, cominsttrans_1.iinsttrans, cominsttrans_1.itranskey, & cominsttrans_1.laterinsttrans); -#line 22089 "" +#line 22083 "" } -#line 22090 "" +#line 22084 "" if (comlast_1.islast && comignorenats_1.ignorenats) { -#line 22090 "" - s_wsfe(&io___1481); +#line 22084 "" + s_wsfe(&io___1476); /* Writing concatenation */ -#line 22090 "" +#line 22084 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22090 "" +#line 22084 "" i__6[1] = 11, a__4[1] = "ignorenats%"; -#line 22090 "" +#line 22084 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen)12); -#line 22090 "" +#line 22084 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22090 "" +#line 22084 "" e_wsfe(); -#line 22090 "" +#line 22084 "" } -#line 22092 "" +#line 22086 "" if (comlast_1.islast) { -#line 22092 "" - s_wsfe(&io___1482); +#line 22086 "" + s_wsfe(&io___1477); /* Writing concatenation */ -#line 22092 "" +#line 22086 "" i__9[0] = 1, a__6[0] = all_1.sq; -#line 22092 "" +#line 22086 "" i__9[1] = 14, a__6[1] = "zchangecontext"; -#line 22092 "" +#line 22086 "" i__9[2] = 1, a__6[2] = all_1.sq; -#line 22092 "" +#line 22086 "" i__9[3] = 10, a__6[3] = "addspace{-"; -#line 22092 "" +#line 22086 "" i__9[4] = 1, a__6[4] = all_1.sq; -#line 22092 "" +#line 22086 "" i__9[5] = 14, a__6[5] = "afterruleskip}"; -#line 22092 "" +#line 22086 "" i__9[6] = 1, a__6[6] = all_1.sq; -#line 22092 "" +#line 22086 "" i__9[7] = 10, a__6[7] = "zstoppiece"; -#line 22092 "" +#line 22086 "" i__9[8] = 1, a__6[8] = all_1.sq; -#line 22092 "" +#line 22086 "" i__9[9] = 13, a__6[9] = "PMXbarnotrue%"; -#line 22092 "" +#line 22086 "" s_cat(ch__28, a__6, i__9, &c__10, (ftnlen)66); -#line 22092 "" +#line 22086 "" do_fio(&c__1, ch__28, (ftnlen)66); -#line 22092 "" +#line 22086 "" e_wsfe(); -#line 22092 "" +#line 22086 "" } -#line 22095 "" +#line 22089 "" } else if (all_1.mtrnuml > 0 && comget_1.movbrk == 0) { /* Meter change but no signature change */ -#line 22099 "" +#line 22093 "" if (comlast_1.islast) { -#line 22099 "" - s_wsfe(&io___1483); +#line 22093 "" + s_wsfe(&io___1478); /* Writing concatenation */ -#line 22099 "" +#line 22093 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 22099 "" +#line 22093 "" i__3[1] = 14, a__1[1] = "xchangecontext"; -#line 22099 "" +#line 22093 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 22099 "" +#line 22093 "" i__3[3] = 10, a__1[3] = "addspace{-"; -#line 22099 "" +#line 22093 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 22099 "" +#line 22093 "" i__3[5] = 14, a__1[5] = "afterruleskip}"; -#line 22099 "" +#line 22093 "" i__3[6] = 1, a__1[6] = all_1.sq; -#line 22099 "" +#line 22093 "" i__3[7] = 3, a__1[7] = "let"; -#line 22099 "" +#line 22093 "" i__3[8] = 1, a__1[8] = all_1.sq; -#line 22099 "" +#line 22093 "" i__3[9] = 4, a__1[9] = "bnat"; -#line 22099 "" +#line 22093 "" i__3[10] = 1, a__1[10] = all_1.sq; -#line 22099 "" +#line 22093 "" i__3[11] = 9, a__1[11] = "barnoadd%"; -#line 22099 "" +#line 22093 "" s_cat(ch__29, a__1, i__3, &c__12, (ftnlen)60); -#line 22099 "" +#line 22093 "" do_fio(&c__1, ch__29, (ftnlen)60); -#line 22099 "" +#line 22093 "" e_wsfe(); -#line 22099 "" +#line 22093 "" } -#line 22103 "" +#line 22097 "" if (comlast_1.islast) { -#line 22103 "" - s_wsfe(&io___1484); +#line 22097 "" + s_wsfe(&io___1479); /* Writing concatenation */ -#line 22103 "" +#line 22097 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 22103 "" +#line 22097 "" i__3[1] = 3, a__1[1] = "def"; -#line 22103 "" +#line 22097 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 22103 "" +#line 22097 "" i__3[3] = 9, a__1[3] = "barnoadd{"; -#line 22103 "" +#line 22097 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 22103 "" +#line 22097 "" i__3[5] = 3, a__1[5] = "let"; -#line 22103 "" +#line 22097 "" i__3[6] = 1, a__1[6] = all_1.sq; -#line 22103 "" +#line 22097 "" i__3[7] = 8, a__1[7] = "barnoadd"; -#line 22103 "" +#line 22097 "" i__3[8] = 1, a__1[8] = all_1.sq; -#line 22103 "" +#line 22097 "" i__3[9] = 5, a__1[9] = "bnat}"; -#line 22103 "" +#line 22097 "" i__3[10] = 1, a__1[10] = all_1.sq; -#line 22103 "" +#line 22097 "" i__3[11] = 11, a__1[11] = "zstoppiece%"; -#line 22103 "" +#line 22097 "" s_cat(ch__30, a__1, i__3, &c__12, (ftnlen)45); -#line 22103 "" +#line 22097 "" do_fio(&c__1, ch__30, (ftnlen)45); -#line 22103 "" +#line 22097 "" e_wsfe(); -#line 22103 "" +#line 22097 "" } -#line 22106 "" +#line 22100 "" } else { -#line 22107 "" +#line 22101 "" if (comlast_1.islast) { -#line 22108 "" +#line 22102 "" if ((comshort_1.ishort == 4 || comshort_1.ishort == 2) && iflagbot == 1) { -#line 22110 "" +#line 22104 "" ntmp = combibarcnt_1.ibarcnt - ibarcnt0 - comshort_1.nmbr + comshort_1.mbrsum; -#line 22111 "" +#line 22105 "" if (ntmp <= 9) { -#line 22112 "" +#line 22106 "" *(unsigned char *)shortfraq = (char) ( ntmp + 48); -#line 22113 "" +#line 22107 "" lntmp = 1; -#line 22114 "" +#line 22108 "" } else { -#line 22115 "" - s_wsfi(&io___1489); -#line 22115 "" +#line 22109 "" + s_wsfi(&io___1484); +#line 22109 "" do_fio(&c__1, (char *)&ntmp, (ftnlen) sizeof(integer)); -#line 22115 "" +#line 22109 "" e_wsfi(); -#line 22116 "" +#line 22110 "" lntmp = 2; -#line 22117 "" +#line 22111 "" } -#line 22118 "" - s_wsfe(&io___1490); +#line 22112 "" + s_wsfe(&io___1485); /* Writing concatenation */ -#line 22118 "" +#line 22112 "" i__15[0] = 1, a__11[0] = all_1.sq; -#line 22118 "" +#line 22112 "" i__15[1] = 10, a__11[1] = "endpiece}}"; -#line 22118 "" +#line 22112 "" i__15[2] = 1, a__11[2] = all_1.sq; -#line 22118 "" +#line 22112 "" i__15[3] = 7, a__11[3] = "advance"; -#line 22118 "" +#line 22112 "" i__15[4] = 1, a__11[4] = all_1.sq; -#line 22118 "" +#line 22112 "" i__15[5] = 5, a__11[5] = "barno"; -#line 22118 "" +#line 22112 "" i__15[6] = lntmp, a__11[6] = shortfraq; -#line 22118 "" +#line 22112 "" s_cat(ch__31, a__11, i__15, &c__7, (ftnlen)28) ; -#line 22118 "" +#line 22112 "" do_fio(&c__1, ch__31, lntmp + 25); -#line 22118 "" +#line 22112 "" e_wsfe(); /* Move down so can insert fil@begin */ /* iflagbot = 0 */ /* ishort = 0 */ -#line 22125 "" +#line 22119 "" } else if (comshort_1.ishort != 6 && comshort_1.ishort != 2 || iflagbot != 1) { -#line 22127 "" - s_wsfe(&io___1491); +#line 22121 "" + s_wsfe(&io___1486); /* Writing concatenation */ -#line 22127 "" +#line 22121 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22127 "" +#line 22121 "" i__6[1] = 10, a__4[1] = "stoppiece%"; -#line 22127 "" +#line 22121 "" s_cat(ch__15, a__4, i__6, &c__2, (ftnlen)11); -#line 22127 "" +#line 22121 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 22127 "" +#line 22121 "" e_wsfe(); -#line 22128 "" +#line 22122 "" } -#line 22129 "" +#line 22123 "" } -#line 22130 "" +#line 22124 "" } /* This is the key spot when vshrink is used. Value of vshrink here comes from */ @@ -53324,1211 +53260,1211 @@ L51: /* second pass, vshrink at top of page one is dealt with in topfile, which is called */ /* *before* any reading in any "Av" at the top of the first input block. */ -#line 22143 "" +#line 22137 "" if (! vshrink) { -#line 22144 "" +#line 22138 "" if (comlast_1.islast && combottop_1.bottopgap) { -#line 22145 "" +#line 22139 "" if (dabs(combottop_1.botamt) > 1e-6f) { -#line 22146 "" +#line 22140 "" if (combottop_1.botamt > 9.95f) { -#line 22147 "" +#line 22141 "" s_copy(fmtq, "(a,f4.1,a)", (ftnlen)24, ( ftnlen)10); -#line 22148 "" +#line 22142 "" } else if (combottop_1.botamt > 0.f) { -#line 22149 "" +#line 22143 "" s_copy(fmtq, "(a,f3.1,a)", (ftnlen)24, ( ftnlen)10); -#line 22150 "" +#line 22144 "" } else if (combottop_1.botamt > -9.95f) { -#line 22151 "" +#line 22145 "" s_copy(fmtq, "(a,f4.1,a)", (ftnlen)24, ( ftnlen)10); -#line 22152 "" +#line 22146 "" } else { -#line 22153 "" +#line 22147 "" s_copy(fmtq, "(a,f5.1,a)", (ftnlen)24, ( ftnlen)10); -#line 22154 "" +#line 22148 "" } -#line 22155 "" - s_wsfe(&io___1492); +#line 22149 "" + s_wsfe(&io___1487); /* Writing concatenation */ -#line 22155 "" +#line 22149 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 22155 "" +#line 22149 "" i__5[1] = 4, a__3[1] = "null"; -#line 22155 "" +#line 22149 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 22155 "" +#line 22149 "" i__5[3] = 5, a__3[3] = "vskip"; -#line 22155 "" +#line 22149 "" s_cat(ch__15, a__3, i__5, &c__4, (ftnlen)11); -#line 22155 "" +#line 22149 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 22155 "" +#line 22149 "" do_fio(&c__1, (char *)&combottop_1.botamt, ( ftnlen)sizeof(real)); /* Writing concatenation */ -#line 22155 "" +#line 22149 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22155 "" +#line 22149 "" i__6[1] = 10, a__4[1] = "Internote%"; -#line 22155 "" +#line 22149 "" s_cat(ch__32, a__4, i__6, &c__2, (ftnlen)11); -#line 22155 "" +#line 22149 "" do_fio(&c__1, ch__32, (ftnlen)11); -#line 22155 "" +#line 22149 "" e_wsfe(); -#line 22157 "" +#line 22151 "" } -#line 22158 "" +#line 22152 "" } -#line 22159 "" +#line 22153 "" xnstbot = xnsttop[comnotes_1.ipage - 1] * etabot / etatop; -#line 22160 "" +#line 22154 "" if (xnstbot < 9.95f) { -#line 22161 "" +#line 22155 "" s_copy(fmtq, "(a,f3.1,a)", (ftnlen)24, (ftnlen)10) ; -#line 22162 "" +#line 22156 "" } else { -#line 22163 "" +#line 22157 "" s_copy(fmtq, "(a,f4.1,a)", (ftnlen)24, (ftnlen)10) ; -#line 22164 "" +#line 22158 "" } -#line 22165 "" +#line 22159 "" if (comlast_1.islast) { -#line 22165 "" - s_wsfe(&io___1494); +#line 22159 "" + s_wsfe(&io___1489); /* Writing concatenation */ -#line 22165 "" +#line 22159 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22165 "" +#line 22159 "" i__6[1] = 5, a__4[1] = "vskip"; -#line 22165 "" +#line 22159 "" s_cat(ch__25, a__4, i__6, &c__2, (ftnlen)6); -#line 22165 "" +#line 22159 "" do_fio(&c__1, ch__25, (ftnlen)6); -#line 22165 "" +#line 22159 "" do_fio(&c__1, (char *)&xnstbot, (ftnlen)sizeof( real)); /* Writing concatenation */ -#line 22165 "" +#line 22159 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 22165 "" +#line 22159 "" i__5[1] = 10, a__3[1] = "Interligne"; -#line 22165 "" +#line 22159 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 22165 "" +#line 22159 "" i__5[3] = 6, a__3[3] = "eject%"; -#line 22165 "" +#line 22159 "" s_cat(ch__26, a__3, i__5, &c__4, (ftnlen)18); -#line 22165 "" +#line 22159 "" do_fio(&c__1, ch__26, (ftnlen)18); -#line 22165 "" +#line 22159 "" e_wsfe(); -#line 22165 "" +#line 22159 "" } -#line 22167 "" +#line 22161 "" if (comlast_1.islast && combottop_1.bottopgap) { -#line 22168 "" +#line 22162 "" if (dabs(combottop_1.topamt) > 1e-6f) { -#line 22169 "" +#line 22163 "" if (combottop_1.topamt > 9.95f) { -#line 22170 "" +#line 22164 "" s_copy(fmtq, "(a,f4.1,a)", (ftnlen)24, ( ftnlen)10); -#line 22171 "" +#line 22165 "" } else if (combottop_1.topamt > 0.f) { -#line 22172 "" +#line 22166 "" s_copy(fmtq, "(a,f3.1,a)", (ftnlen)24, ( ftnlen)10); -#line 22173 "" +#line 22167 "" } else if (combottop_1.topamt > -9.95f) { -#line 22174 "" +#line 22168 "" s_copy(fmtq, "(a,f4.1,a)", (ftnlen)24, ( ftnlen)10); -#line 22175 "" +#line 22169 "" } else { -#line 22176 "" +#line 22170 "" s_copy(fmtq, "(a,f5.1,a)", (ftnlen)24, ( ftnlen)10); -#line 22177 "" +#line 22171 "" } -#line 22178 "" - s_wsfe(&io___1495); +#line 22172 "" + s_wsfe(&io___1490); /* Writing concatenation */ -#line 22178 "" +#line 22172 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 22178 "" +#line 22172 "" i__5[1] = 4, a__3[1] = "null"; -#line 22178 "" +#line 22172 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 22178 "" +#line 22172 "" i__5[3] = 5, a__3[3] = "vskip"; -#line 22178 "" +#line 22172 "" s_cat(ch__15, a__3, i__5, &c__4, (ftnlen)11); -#line 22178 "" +#line 22172 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 22178 "" +#line 22172 "" do_fio(&c__1, (char *)&combottop_1.topamt, ( ftnlen)sizeof(real)); /* Writing concatenation */ -#line 22178 "" +#line 22172 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22178 "" +#line 22172 "" i__6[1] = 10, a__4[1] = "Internote%"; -#line 22178 "" +#line 22172 "" s_cat(ch__32, a__4, i__6, &c__2, (ftnlen)11); -#line 22178 "" +#line 22172 "" do_fio(&c__1, ch__32, (ftnlen)11); -#line 22178 "" +#line 22172 "" e_wsfe(); -#line 22180 "" +#line 22174 "" } -#line 22181 "" +#line 22175 "" combottop_1.bottopgap = FALSE_; -#line 22182 "" +#line 22176 "" } -#line 22183 "" +#line 22177 "" } else { -#line 22184 "" +#line 22178 "" if (comlast_1.islast) { -#line 22185 "" +#line 22179 "" if (iflagbot == 1 && comshort_1.ishort == 6) { /* cleanup for case bcm only */ -#line 22189 "" +#line 22183 "" iflagbot = 0; -#line 22190 "" +#line 22184 "" comshort_1.ishort = 0; -#line 22191 "" +#line 22185 "" } else { -#line 22192 "" - s_wsfe(&io___1496); +#line 22186 "" + s_wsfe(&io___1491); /* Writing concatenation */ -#line 22192 "" +#line 22186 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 22192 "" +#line 22186 "" i__5[1] = 5, a__3[1] = "vfill"; -#line 22192 "" +#line 22186 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 22192 "" +#line 22186 "" i__5[3] = 6, a__3[3] = "eject%"; -#line 22192 "" +#line 22186 "" s_cat(ch__17, a__3, i__5, &c__4, (ftnlen)13); -#line 22192 "" +#line 22186 "" do_fio(&c__1, ch__17, (ftnlen)13); -#line 22192 "" +#line 22186 "" e_wsfe(); -#line 22193 "" +#line 22187 "" if (iflagbot == 1 && comshort_1.ishort == 2) { /* Clean up case bsl only */ -#line 22195 "" - s_wsfe(&io___1497); +#line 22189 "" + s_wsfe(&io___1492); /* Writing concatenation */ -#line 22195 "" +#line 22189 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22195 "" +#line 22189 "" i__4[1] = 12, a__2[1] = "makeatletter"; -#line 22195 "" +#line 22189 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22195 "" +#line 22189 "" i__4[3] = 9, a__2[3] = "fil@begin"; -#line 22195 "" +#line 22189 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22195 "" +#line 22189 "" i__4[5] = 11, a__2[5] = "makeatother"; -#line 22195 "" +#line 22189 "" s_cat(ch__9, a__2, i__4, &c__6, (ftnlen) 35); -#line 22195 "" +#line 22189 "" do_fio(&c__1, ch__9, (ftnlen)35); -#line 22195 "" +#line 22189 "" e_wsfe(); -#line 22197 "" +#line 22191 "" iflagbot = 0; -#line 22198 "" +#line 22192 "" comshort_1.ishort = 0; -#line 22199 "" +#line 22193 "" } -#line 22200 "" +#line 22194 "" } -#line 22201 "" +#line 22195 "" } -#line 22202 "" +#line 22196 "" } -#line 22203 "" +#line 22197 "" ++comnotes_1.ipage; /* Now that page is ejected, compute new vshrink */ -#line 22207 "" +#line 22201 "" vshrink = xintstaff[comnotes_1.ipage - 1] > 20.f && comlast_1.usevshrink; -#line 22208 "" +#line 22202 "" if (vshrink) { -#line 22209 "" +#line 22203 "" comarp_1.xinsnow = 10.f; -#line 22210 "" +#line 22204 "" } else { -#line 22211 "" +#line 22205 "" comarp_1.xinsnow = xintstaff[comnotes_1.ipage - 1]; -#line 22212 "" +#line 22206 "" } -#line 22213 "" +#line 22207 "" if (comget_1.fintstf > 0.f && comnotes_1.ipage > 1) { -#line 22214 "" +#line 22208 "" comarp_1.xinsnow = comarp_1.xinsnow * comget_1.fintstf / comget_1.gintstf; -#line 22215 "" +#line 22209 "" comget_1.fintstf = -1.f; -#line 22216 "" +#line 22210 "" } -#line 22217 "" +#line 22211 "" if (comarp_1.xinsnow < 9.95f) { -#line 22218 "" +#line 22212 "" s_copy(fmtq, "(a,f3.1,a)", (ftnlen)24, (ftnlen)10); -#line 22219 "" +#line 22213 "" } else if (comarp_1.xinsnow < 99.95f) { -#line 22220 "" +#line 22214 "" s_copy(fmtq, "(a,f4.1,a)", (ftnlen)24, (ftnlen)10); -#line 22221 "" +#line 22215 "" } else { -#line 22222 "" +#line 22216 "" s_copy(fmtq, "(a,f5.1,a)", (ftnlen)24, (ftnlen)10); -#line 22223 "" +#line 22217 "" } /* Vertical spacing parameters, then restart */ -#line 22227 "" +#line 22221 "" if (comis4bignv_1.is4bignv) { -#line 22227 "" +#line 22221 "" comarp_1.xinsnow *= .95f; -#line 22227 "" +#line 22221 "" } -#line 22228 "" +#line 22222 "" if (comlast_1.islast) { -#line 22229 "" - s_wsfe(&io___1498); +#line 22223 "" + s_wsfe(&io___1493); /* Writing concatenation */ -#line 22229 "" +#line 22223 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22229 "" +#line 22223 "" i__6[1] = 11, a__4[1] = "interstaff{"; -#line 22229 "" +#line 22223 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen)12); -#line 22229 "" +#line 22223 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22229 "" +#line 22223 "" do_fio(&c__1, (char *)&comarp_1.xinsnow, (ftnlen) sizeof(real)); /* Writing concatenation */ -#line 22229 "" +#line 22223 "" i__8[0] = 1, a__5[0] = "}"; -#line 22229 "" +#line 22223 "" i__8[1] = 1, a__5[1] = all_1.sq; -#line 22229 "" +#line 22223 "" i__8[2] = 9, a__5[2] = "contpiece"; -#line 22229 "" +#line 22223 "" s_cat(ch__15, a__5, i__8, &c__3, (ftnlen)11); -#line 22229 "" +#line 22223 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 22229 "" +#line 22223 "" e_wsfe(); -#line 22231 "" +#line 22225 "" } /* Check for meter change at start of a new PAGE */ -#line 22235 "" +#line 22229 "" if (all_1.mtrnuml > 0) { /* Meter change at start of a new page */ -#line 22239 "" +#line 22233 "" setmeter_(&all_1.mtrnuml, &all_1.mtrdenl, & combeam_1.ibmtyp, &ibmrep); -#line 22240 "" +#line 22234 "" if (comget_1.movbrk == 0) { -#line 22241 "" +#line 22235 "" if (comlast_1.islast) { -#line 22242 "" +#line 22236 "" wgmeter_(&all_1.mtrnmp, &all_1.mtrdnp); -#line 22243 "" +#line 22237 "" } -#line 22244 "" +#line 22238 "" if (all_1.mtrdnp > 0) { -#line 22245 "" +#line 22239 "" if (comlast_1.islast) { -#line 22245 "" - s_wsfe(&io___1499); +#line 22239 "" + s_wsfe(&io___1494); /* Writing concatenation */ -#line 22245 "" +#line 22239 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22245 "" +#line 22239 "" i__6[1] = 10, a__4[1] = "newtimes2%"; -#line 22245 "" +#line 22239 "" s_cat(ch__15, a__4, i__6, &c__2, (ftnlen) 11); -#line 22245 "" +#line 22239 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 22245 "" +#line 22239 "" e_wsfe(); -#line 22245 "" +#line 22239 "" } -#line 22246 "" +#line 22240 "" if (all_1.ibar == comgrace_1.ibarmbr) { -#line 22246 "" +#line 22240 "" comgrace_1.xb4mbr = all_1.musicsize * -.2f; -#line 22246 "" +#line 22240 "" } -#line 22247 "" +#line 22241 "" } -#line 22248 "" +#line 22242 "" } -#line 22249 "" +#line 22243 "" } /* If no real titles here, which there probably will never be, make vertical */ /* space at page top with \titles{...}. headlog=.false.<=>no real titles */ -#line 22254 "" +#line 22248 "" if (comshort_1.ishort == 4 && iflagbot == 1) { -#line 22255 "" +#line 22249 "" comshort_1.ishort = 0; -#line 22256 "" +#line 22250 "" iflagbot = 0; -#line 22257 "" - s_wsfe(&io___1500); +#line 22251 "" + s_wsfe(&io___1495); /* Writing concatenation */ -#line 22257 "" +#line 22251 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22257 "" +#line 22251 "" i__4[1] = 12, a__2[1] = "makeatletter"; -#line 22257 "" +#line 22251 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22257 "" +#line 22251 "" i__4[3] = 9, a__2[3] = "fil@begin"; -#line 22257 "" +#line 22251 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22257 "" +#line 22251 "" i__4[5] = 11, a__2[5] = "makeatother"; -#line 22257 "" +#line 22251 "" s_cat(ch__9, a__2, i__4, &c__6, (ftnlen)35); -#line 22257 "" +#line 22251 "" do_fio(&c__1, ch__9, (ftnlen)35); -#line 22257 "" +#line 22251 "" e_wsfe(); -#line 22259 "" +#line 22253 "" } -#line 22260 "" +#line 22254 "" puttitle_(&inhnoh, &xnsttop[comnotes_1.ipage - 1], & etatop, all_1.sq, &etait, &etatc, &etacs1, & all_1.nv, &vshrink, all_1.sepsymq, (ftnlen)1, ( ftnlen)1); -#line 22262 "" +#line 22256 "" if (comnotes_1.headerspecial) { -#line 22262 "" - s_wsfe(&io___1501); +#line 22256 "" + s_wsfe(&io___1496); /* Writing concatenation */ -#line 22262 "" +#line 22256 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 22262 "" +#line 22256 "" i__6[0] = 1, a__4[0] = ch__1; -#line 22262 "" +#line 22256 "" i__6[1] = 28, a__4[1] = "special{header=psslurs.pro}%" ; -#line 22262 "" +#line 22256 "" s_cat(ch__7, a__4, i__6, &c__2, (ftnlen)29); -#line 22262 "" +#line 22256 "" do_fio(&c__1, ch__7, (ftnlen)29); -#line 22262 "" +#line 22256 "" e_wsfe(); -#line 22262 "" +#line 22256 "" } /* Write special header for first page */ -#line 22267 "" +#line 22261 "" } else { /* First bar of system, not a new page, force line break */ -#line 22271 "" +#line 22265 "" if (bit_test(iplnow,28)) { /* Signature change */ /* Writing concatenation */ -#line 22275 "" +#line 22269 "" i__14[0] = 1, a__10[0] = all_1.sq; -#line 22275 "" +#line 22269 "" i__14[1] = 4, a__10[1] = "xbar"; -#line 22275 "" +#line 22269 "" i__14[2] = 1, a__10[2] = all_1.sq; -#line 22275 "" +#line 22269 "" i__14[3] = 10, a__10[3] = "addspace{-"; -#line 22275 "" +#line 22269 "" i__14[4] = 1, a__10[4] = all_1.sq; -#line 22275 "" +#line 22269 "" i__14[5] = 14, a__10[5] = "afterruleskip}"; -#line 22275 "" +#line 22269 "" i__14[6] = 1, a__10[6] = all_1.sq; -#line 22275 "" +#line 22269 "" i__14[7] = 17, a__10[7] = "generalsignature{"; -#line 22275 "" +#line 22269 "" s_cat(notexq, a__10, i__14, &c__8, (ftnlen)79); -#line 22277 "" +#line 22271 "" lnote = 49; -#line 22278 "" +#line 22272 "" if (comtop_1.isig < 0) { /* Writing concatenation */ -#line 22279 "" +#line 22273 "" i__6[0] = 49, a__4[0] = notexq; -#line 22279 "" +#line 22273 "" i__6[1] = 1, a__4[1] = "-"; -#line 22279 "" +#line 22273 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 22280 "" +#line 22274 "" lnote = 50; -#line 22281 "" +#line 22275 "" } -#line 22282 "" +#line 22276 "" if (comlast_1.islast) { -#line 22282 "" - s_wsfe(&io___1502); +#line 22276 "" + s_wsfe(&io___1497); /* Writing concatenation */ -#line 22282 "" +#line 22276 "" i__8[0] = lnote, a__5[0] = notexq; -#line 22282 "" +#line 22276 "" i__7 = abs(comtop_1.isig) + 48; -#line 22282 "" +#line 22276 "" chax_(ch__1, (ftnlen)1, &i__7); -#line 22282 "" +#line 22276 "" i__8[1] = 1, a__5[1] = ch__1; -#line 22282 "" +#line 22276 "" i__8[2] = 2, a__5[2] = "}%"; -#line 22282 "" +#line 22276 "" s_cat(ch__27, a__5, i__8, &c__3, (ftnlen)82); -#line 22282 "" +#line 22276 "" do_fio(&c__1, ch__27, lnote + 3); -#line 22282 "" +#line 22276 "" e_wsfe(); -#line 22282 "" +#line 22276 "" } -#line 22284 "" +#line 22278 "" if (comlast_1.islast && cominsttrans_1.laterinsttrans) { -#line 22285 "" +#line 22279 "" writesetsign_(&cominsttrans_1.ninsttrans, cominsttrans_1.iinsttrans, cominsttrans_1.itranskey, & cominsttrans_1.laterinsttrans); -#line 22287 "" +#line 22281 "" } -#line 22288 "" +#line 22282 "" if (comlast_1.islast) { -#line 22288 "" - s_wsfe(&io___1503); +#line 22282 "" + s_wsfe(&io___1498); /* Writing concatenation */ -#line 22288 "" +#line 22282 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 22288 "" +#line 22282 "" i__5[1] = 7, a__3[1] = "advance"; -#line 22288 "" +#line 22282 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 22288 "" +#line 22282 "" i__5[3] = 8, a__3[3] = "barno-1%"; -#line 22288 "" +#line 22282 "" s_cat(ch__13, a__3, i__5, &c__4, (ftnlen)17); -#line 22288 "" +#line 22282 "" do_fio(&c__1, ch__13, (ftnlen)17); -#line 22288 "" +#line 22282 "" e_wsfe(); -#line 22288 "" +#line 22282 "" } -#line 22289 "" +#line 22283 "" if (all_1.mtrnuml != 0) { /* Meter+sig change, new line, may need mods if movement break here. */ -#line 22293 "" +#line 22287 "" setmeter_(&all_1.mtrnuml, &all_1.mtrdenl, & combeam_1.ibmtyp, &ibmrep); -#line 22294 "" +#line 22288 "" if (comlast_1.islast) { -#line 22295 "" +#line 22289 "" wgmeter_(&all_1.mtrnmp, &all_1.mtrdnp); -#line 22296 "" +#line 22290 "" if (comignorenats_1.ignorenats) { -#line 22296 "" - s_wsfe(&io___1504); +#line 22290 "" + s_wsfe(&io___1499); /* Writing concatenation */ -#line 22296 "" +#line 22290 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22296 "" +#line 22290 "" i__6[1] = 11, a__4[1] = "ignorenats%"; -#line 22296 "" +#line 22290 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen) 12); -#line 22296 "" +#line 22290 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22296 "" +#line 22290 "" e_wsfe(); -#line 22296 "" +#line 22290 "" } -#line 22297 "" - s_wsfe(&io___1505); +#line 22291 "" + s_wsfe(&io___1500); /* Writing concatenation */ -#line 22297 "" +#line 22291 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 22297 "" +#line 22291 "" i__3[1] = 14, a__1[1] = "xchangecontext"; -#line 22297 "" +#line 22291 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 22297 "" +#line 22291 "" i__3[3] = 10, a__1[3] = "addspace{-"; -#line 22297 "" +#line 22291 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 22297 "" +#line 22291 "" i__3[5] = 14, a__1[5] = "afterruleskip}"; -#line 22297 "" +#line 22291 "" i__3[6] = 1, a__1[6] = all_1.sq; -#line 22297 "" +#line 22291 "" i__3[7] = 10, a__1[7] = "zstoppiece"; -#line 22297 "" +#line 22291 "" i__3[8] = 1, a__1[8] = all_1.sq; -#line 22297 "" +#line 22291 "" i__3[9] = 12, a__1[9] = "PMXbarnotrue"; -#line 22297 "" +#line 22291 "" i__3[10] = 1, a__1[10] = all_1.sq; -#line 22297 "" +#line 22291 "" i__3[11] = 10, a__1[11] = "contpiece%"; -#line 22297 "" +#line 22291 "" s_cat(ch__33, a__1, i__3, &c__12, (ftnlen)76); -#line 22297 "" +#line 22291 "" do_fio(&c__1, ch__33, (ftnlen)76); -#line 22297 "" +#line 22291 "" e_wsfe(); -#line 22300 "" - s_wsfe(&io___1506); +#line 22294 "" + s_wsfe(&io___1501); /* Writing concatenation */ -#line 22300 "" +#line 22294 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 22300 "" +#line 22294 "" i__5[1] = 10, a__3[1] = "addspace{-"; -#line 22300 "" +#line 22294 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 22300 "" +#line 22294 "" i__5[3] = 15, a__3[3] = "afterruleskip}%"; -#line 22300 "" +#line 22294 "" s_cat(ch__5, a__3, i__5, &c__4, (ftnlen)27); -#line 22300 "" +#line 22294 "" do_fio(&c__1, ch__5, (ftnlen)27); -#line 22300 "" +#line 22294 "" e_wsfe(); -#line 22302 "" +#line 22296 "" wgmeter_(&all_1.mtrnmp, &all_1.mtrdnp); -#line 22303 "" +#line 22297 "" if (comignorenats_1.ignorenats) { -#line 22303 "" - s_wsfe(&io___1507); +#line 22297 "" + s_wsfe(&io___1502); /* Writing concatenation */ -#line 22303 "" +#line 22297 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22303 "" +#line 22297 "" i__6[1] = 11, a__4[1] = "ignorenats%"; -#line 22303 "" +#line 22297 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen) 12); -#line 22303 "" +#line 22297 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22303 "" +#line 22297 "" e_wsfe(); -#line 22303 "" +#line 22297 "" } -#line 22304 "" - s_wsfe(&io___1508); +#line 22298 "" + s_wsfe(&io___1503); /* Writing concatenation */ -#line 22304 "" +#line 22298 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22304 "" +#line 22298 "" i__6[1] = 14, a__4[1] = "zchangecontext"; -#line 22304 "" +#line 22298 "" s_cat(ch__16, a__4, i__6, &c__2, (ftnlen)15); -#line 22304 "" +#line 22298 "" do_fio(&c__1, ch__16, (ftnlen)15); -#line 22304 "" +#line 22298 "" e_wsfe(); -#line 22305 "" +#line 22299 "" } -#line 22306 "" +#line 22300 "" } else { -#line 22307 "" +#line 22301 "" if (comlast_1.islast && comignorenats_1.ignorenats) { -#line 22307 "" - s_wsfe(&io___1509); +#line 22301 "" + s_wsfe(&io___1504); /* Writing concatenation */ -#line 22307 "" +#line 22301 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22307 "" +#line 22301 "" i__6[1] = 11, a__4[1] = "ignorenats%"; -#line 22307 "" +#line 22301 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen)12); -#line 22307 "" +#line 22301 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22307 "" +#line 22301 "" e_wsfe(); -#line 22307 "" +#line 22301 "" } -#line 22309 "" +#line 22303 "" if (comlast_1.islast) { -#line 22309 "" - s_wsfe(&io___1510); +#line 22303 "" + s_wsfe(&io___1505); /* Writing concatenation */ -#line 22309 "" +#line 22303 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 22309 "" +#line 22303 "" i__3[1] = 14, a__1[1] = "xchangecontext"; -#line 22309 "" +#line 22303 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 22309 "" +#line 22303 "" i__3[3] = 10, a__1[3] = "addspace{-"; -#line 22309 "" +#line 22303 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 22309 "" +#line 22303 "" i__3[5] = 14, a__1[5] = "afterruleskip}"; -#line 22309 "" +#line 22303 "" i__3[6] = 1, a__1[6] = all_1.sq; -#line 22309 "" +#line 22303 "" i__3[7] = 10, a__1[7] = "zstoppiece"; -#line 22309 "" +#line 22303 "" i__3[8] = 1, a__1[8] = all_1.sq; -#line 22309 "" +#line 22303 "" i__3[9] = 12, a__1[9] = "PMXbarnotrue"; -#line 22309 "" +#line 22303 "" i__3[10] = 1, a__1[10] = all_1.sq; -#line 22309 "" +#line 22303 "" i__3[11] = 10, a__1[11] = "contpiece%"; -#line 22309 "" +#line 22303 "" s_cat(ch__33, a__1, i__3, &c__12, (ftnlen)76); -#line 22309 "" +#line 22303 "" do_fio(&c__1, ch__33, (ftnlen)76); -#line 22309 "" +#line 22303 "" e_wsfe(); -#line 22309 "" +#line 22303 "" } -#line 22312 "" +#line 22306 "" } -#line 22313 "" +#line 22307 "" } else if (all_1.mtrnuml == 0 && (comshort_1.ishort == 0 || comshort_1.ishort == 6)) { /* No meter change */ -#line 22318 "" +#line 22312 "" if (comlast_1.islast) { -#line 22319 "" +#line 22313 "" if (comshort_1.ishort != 6) { -#line 22320 "" - s_wsfe(&io___1511); +#line 22314 "" + s_wsfe(&io___1506); /* Writing concatenation */ -#line 22320 "" +#line 22314 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22320 "" +#line 22314 "" i__6[1] = 8, a__4[1] = "alaligne"; -#line 22320 "" +#line 22314 "" s_cat(ch__18, a__4, i__6, &c__2, (ftnlen)9); -#line 22320 "" +#line 22314 "" do_fio(&c__1, ch__18, (ftnlen)9); -#line 22320 "" +#line 22314 "" e_wsfe(); -#line 22321 "" +#line 22315 "" } else { -#line 22322 "" +#line 22316 "" comshort_1.ishort = 0; -#line 22323 "" +#line 22317 "" } -#line 22324 "" +#line 22318 "" } -#line 22325 "" +#line 22319 "" } else if (comshort_1.ishort != 0) { -#line 22326 "" +#line 22320 "" if (comshort_1.ishort == 1) { /* Start short line */ -#line 22327 "" - s_wsfi(&io___1512); -#line 22327 "" +#line 22321 "" + s_wsfi(&io___1507); +#line 22321 "" do_fio(&c__1, (char *)&comshort_1.shortfrac, ( ftnlen)sizeof(real)); -#line 22327 "" +#line 22321 "" e_wsfi(); -#line 22328 "" - s_wsfe(&io___1513); +#line 22322 "" + s_wsfe(&io___1508); /* Writing concatenation */ -#line 22328 "" +#line 22322 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 22328 "" +#line 22322 "" i__5[1] = 9, a__3[1] = "stoppiece"; -#line 22328 "" +#line 22322 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 22328 "" +#line 22322 "" i__5[3] = 13, a__3[3] = "parindent 0pt"; -#line 22328 "" +#line 22322 "" s_cat(ch__24, a__3, i__5, &c__4, (ftnlen)24); -#line 22328 "" +#line 22322 "" do_fio(&c__1, ch__24, (ftnlen)24); -#line 22328 "" +#line 22322 "" e_wsfe(); -#line 22329 "" - s_wsfe(&io___1514); +#line 22323 "" + s_wsfe(&io___1509); /* Writing concatenation */ -#line 22329 "" +#line 22323 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 22329 "" +#line 22323 "" i__5[1] = 5, a__3[1] = "vskip"; -#line 22329 "" +#line 22323 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 22329 "" +#line 22323 "" i__5[3] = 7, a__3[3] = "parskip"; -#line 22329 "" +#line 22323 "" s_cat(ch__10, a__3, i__5, &c__4, (ftnlen)14); -#line 22329 "" +#line 22323 "" do_fio(&c__1, ch__10, (ftnlen)14); -#line 22329 "" +#line 22323 "" e_wsfe(); -#line 22330 "" - s_wsfe(&io___1515); +#line 22324 "" + s_wsfe(&io___1510); /* Writing concatenation */ -#line 22330 "" +#line 22324 "" i__16[0] = 1, a__12[0] = all_1.sq; -#line 22330 "" +#line 22324 "" i__16[1] = 7, a__12[1] = "hbox to"; -#line 22330 "" +#line 22324 "" i__16[2] = 1, a__12[2] = all_1.sq; -#line 22330 "" +#line 22324 "" i__16[3] = 6, a__12[3] = "hsize{"; -#line 22330 "" +#line 22324 "" i__16[4] = 1, a__12[4] = all_1.sq; -#line 22330 "" +#line 22324 "" i__16[5] = 5, a__12[5] = "vbox{"; -#line 22330 "" +#line 22324 "" i__16[6] = 1, a__12[6] = all_1.sq; -#line 22330 "" +#line 22324 "" i__16[7] = 6, a__12[7] = "hsize="; -#line 22330 "" +#line 22324 "" i__16[8] = 3, a__12[8] = shortfraq; -#line 22330 "" +#line 22324 "" i__16[9] = 1, a__12[9] = all_1.sq; -#line 22330 "" +#line 22324 "" i__16[10] = 6, a__12[10] = "hsize%"; -#line 22330 "" +#line 22324 "" s_cat(ch__34, a__12, i__16, &c__11, (ftnlen)38); -#line 22330 "" +#line 22324 "" do_fio(&c__1, ch__34, (ftnlen)38); -#line 22330 "" +#line 22324 "" e_wsfe(); -#line 22333 "" - s_wsfe(&io___1516); +#line 22327 "" + s_wsfe(&io___1511); /* Writing concatenation */ -#line 22333 "" +#line 22327 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22333 "" +#line 22327 "" i__6[1] = 9, a__4[1] = "contpiece"; -#line 22333 "" +#line 22327 "" s_cat(ch__20, a__4, i__6, &c__2, (ftnlen)10); -#line 22333 "" +#line 22327 "" do_fio(&c__1, ch__20, (ftnlen)10); -#line 22333 "" +#line 22327 "" e_wsfe(); -#line 22334 "" - s_wsfe(&io___1517); +#line 22328 "" + s_wsfe(&io___1512); /* Writing concatenation */ -#line 22334 "" +#line 22328 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22334 "" +#line 22328 "" i__4[1] = 12, a__2[1] = "makeatletter"; -#line 22334 "" +#line 22328 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22334 "" +#line 22328 "" i__4[3] = 9, a__2[3] = "fil@begin"; -#line 22334 "" +#line 22328 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22334 "" +#line 22328 "" i__4[5] = 11, a__2[5] = "makeatother"; -#line 22334 "" +#line 22328 "" s_cat(ch__9, a__2, i__4, &c__6, (ftnlen)35); -#line 22334 "" +#line 22328 "" do_fio(&c__1, ch__9, (ftnlen)35); -#line 22334 "" +#line 22328 "" e_wsfe(); -#line 22336 "" +#line 22330 "" ibarcnt0 = combibarcnt_1.ibarcnt; -#line 22337 "" +#line 22331 "" comshort_1.mbrsum = 0; -#line 22338 "" +#line 22332 "" comshort_1.ishort = 2; -#line 22339 "" +#line 22333 "" comshort_1.nmbr = 0; -#line 22340 "" +#line 22334 "" } else if (comshort_1.ishort == 2) { /* End short line, no new mv */ -#line 22341 "" +#line 22335 "" ntmp = combibarcnt_1.ibarcnt - ibarcnt0 - comshort_1.nmbr + comshort_1.mbrsum; -#line 22342 "" +#line 22336 "" if (ntmp <= 9) { -#line 22343 "" +#line 22337 "" *(unsigned char *)shortfraq = (char) (ntmp + 48); -#line 22344 "" +#line 22338 "" lntmp = 1; -#line 22345 "" +#line 22339 "" } else { -#line 22346 "" - s_wsfi(&io___1518); -#line 22346 "" +#line 22340 "" + s_wsfi(&io___1513); +#line 22340 "" do_fio(&c__1, (char *)&ntmp, (ftnlen)sizeof( integer)); -#line 22346 "" +#line 22340 "" e_wsfi(); -#line 22347 "" +#line 22341 "" lntmp = 2; -#line 22348 "" +#line 22342 "" } -#line 22349 "" - s_wsfe(&io___1519); +#line 22343 "" + s_wsfe(&io___1514); /* Writing concatenation */ -#line 22349 "" +#line 22343 "" i__15[0] = 1, a__11[0] = all_1.sq; -#line 22349 "" +#line 22343 "" i__15[1] = 11, a__11[1] = "stoppiece}}"; -#line 22349 "" +#line 22343 "" i__15[2] = 1, a__11[2] = all_1.sq; -#line 22349 "" +#line 22343 "" i__15[3] = 7, a__11[3] = "advance"; -#line 22349 "" +#line 22343 "" i__15[4] = 1, a__11[4] = all_1.sq; -#line 22349 "" +#line 22343 "" i__15[5] = 5, a__11[5] = "barno"; -#line 22349 "" +#line 22343 "" i__15[6] = lntmp, a__11[6] = shortfraq; -#line 22349 "" +#line 22343 "" s_cat(ch__7, a__11, i__15, &c__7, (ftnlen)29); -#line 22349 "" +#line 22343 "" do_fio(&c__1, ch__7, lntmp + 26); -#line 22349 "" +#line 22343 "" e_wsfe(); /* Not clear why we needed this */ /* //sq//'startbarno'//sq//'barno%' */ -#line 22354 "" - s_wsfe(&io___1520); +#line 22348 "" + s_wsfe(&io___1515); /* Writing concatenation */ -#line 22354 "" +#line 22348 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22354 "" +#line 22348 "" i__6[1] = 9, a__4[1] = "contpiece"; -#line 22354 "" +#line 22348 "" s_cat(ch__20, a__4, i__6, &c__2, (ftnlen)10); -#line 22354 "" +#line 22348 "" do_fio(&c__1, ch__20, (ftnlen)10); -#line 22354 "" +#line 22348 "" e_wsfe(); -#line 22355 "" - s_wsfe(&io___1521); +#line 22349 "" + s_wsfe(&io___1516); /* Writing concatenation */ -#line 22355 "" +#line 22349 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22355 "" +#line 22349 "" i__4[1] = 12, a__2[1] = "makeatletter"; -#line 22355 "" +#line 22349 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22355 "" +#line 22349 "" i__4[3] = 9, a__2[3] = "fil@begin"; -#line 22355 "" +#line 22349 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22355 "" +#line 22349 "" i__4[5] = 11, a__2[5] = "makeatother"; -#line 22355 "" +#line 22349 "" s_cat(ch__9, a__2, i__4, &c__6, (ftnlen)35); -#line 22355 "" +#line 22349 "" do_fio(&c__1, ch__9, (ftnlen)35); -#line 22355 "" +#line 22349 "" e_wsfe(); -#line 22357 "" +#line 22351 "" comshort_1.ishort = 0; -#line 22358 "" +#line 22352 "" } else if (comshort_1.ishort == 5) { /* End short line, new mvt */ -#line 22359 "" +#line 22353 "" if (comnotes_1.nobar1) { /* Continue bar numbering */ -#line 22360 "" - s_wsfe(&io___1522); +#line 22354 "" + s_wsfe(&io___1517); /* Writing concatenation */ -#line 22360 "" +#line 22354 "" i__10[0] = 1, a__7[0] = all_1.sq; -#line 22360 "" +#line 22354 "" i__10[1] = 7, a__7[1] = "advance"; -#line 22360 "" +#line 22354 "" i__10[2] = 1, a__7[2] = all_1.sq; -#line 22360 "" +#line 22354 "" i__10[3] = 5, a__7[3] = "barno"; -#line 22360 "" +#line 22354 "" *(unsigned char *)&ch__1[0] = combibarcnt_1.ibarcnt - ibarcnt0 + 48; -#line 22360 "" +#line 22354 "" i__10[4] = 1, a__7[4] = ch__1; -#line 22360 "" +#line 22354 "" i__10[5] = 1, a__7[5] = all_1.sq; -#line 22360 "" +#line 22354 "" i__10[6] = 10, a__7[6] = "startbarno"; -#line 22360 "" +#line 22354 "" i__10[7] = 1, a__7[7] = all_1.sq; -#line 22360 "" +#line 22354 "" i__10[8] = 6, a__7[8] = "barno%"; -#line 22360 "" +#line 22354 "" s_cat(ch__35, a__7, i__10, &c__9, (ftnlen)33); -#line 22360 "" +#line 22354 "" do_fio(&c__1, ch__35, (ftnlen)33); -#line 22360 "" +#line 22354 "" e_wsfe(); /* Must leave in \startbarno to get msm with LMc to work. */ -#line 22366 "" +#line 22360 "" } -#line 22367 "" - s_wsfe(&io___1523); +#line 22361 "" + s_wsfe(&io___1518); /* Writing concatenation */ -#line 22367 "" +#line 22361 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22367 "" +#line 22361 "" i__4[1] = 10, a__2[1] = "startpiece"; -#line 22367 "" +#line 22361 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22367 "" +#line 22361 "" i__4[3] = 8, a__2[3] = "addspace"; -#line 22367 "" +#line 22361 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22367 "" +#line 22361 "" i__4[5] = 14, a__2[5] = "afterruleskip%"; -#line 22367 "" +#line 22361 "" s_cat(ch__9, a__2, i__4, &c__6, (ftnlen)35); -#line 22367 "" +#line 22361 "" do_fio(&c__1, ch__9, (ftnlen)35); -#line 22367 "" +#line 22361 "" e_wsfe(); -#line 22369 "" +#line 22363 "" comshort_1.ishort = 0; -#line 22370 "" +#line 22364 "" } else if (comshort_1.ishort == 3) { /* May never come thru here. Stuff is done later at least for mcl.pmx */ /* Mid line gap, start coda */ -#line 22372 "" - s_wsfi(&io___1524); -#line 22372 "" +#line 22366 "" + s_wsfi(&io___1519); +#line 22366 "" do_fio(&c__1, (char *)&comshort_1.codafrac, ( ftnlen)sizeof(real)); -#line 22372 "" +#line 22366 "" e_wsfi(); -#line 22373 "" - s_wsfe(&io___1525); +#line 22367 "" + s_wsfe(&io___1520); /* Writing concatenation */ -#line 22373 "" +#line 22367 "" i__16[0] = 1, a__12[0] = all_1.sq; -#line 22373 "" +#line 22367 "" i__16[1] = 9, a__12[1] = "endpiece}"; -#line 22373 "" +#line 22367 "" i__16[2] = 1, a__12[2] = all_1.sq; -#line 22373 "" +#line 22367 "" i__16[3] = 7, a__12[3] = "advance"; -#line 22373 "" +#line 22367 "" i__16[4] = 1, a__12[4] = all_1.sq; -#line 22373 "" +#line 22367 "" i__16[5] = 5, a__12[5] = "barno"; -#line 22373 "" +#line 22367 "" *(unsigned char *)&ch__1[0] = combibarcnt_1.ibarcnt - ibarcnt0 + 48; -#line 22373 "" +#line 22367 "" i__16[6] = 1, a__12[6] = ch__1; -#line 22373 "" +#line 22367 "" i__16[7] = 1, a__12[7] = all_1.sq; -#line 22373 "" +#line 22367 "" i__16[8] = 10, a__12[8] = "startbarno"; -#line 22373 "" +#line 22367 "" i__16[9] = 1, a__12[9] = all_1.sq; -#line 22373 "" +#line 22367 "" i__16[10] = 6, a__12[10] = "barno%"; -#line 22373 "" +#line 22367 "" s_cat(ch__36, a__12, i__16, &c__11, (ftnlen)43); -#line 22373 "" +#line 22367 "" do_fio(&c__1, ch__36, (ftnlen)43); -#line 22373 "" +#line 22367 "" e_wsfe(); -#line 22376 "" - s_wsfe(&io___1526); +#line 22370 "" + s_wsfe(&io___1521); /* Writing concatenation */ -#line 22376 "" +#line 22370 "" i__14[0] = 1, a__10[0] = all_1.sq; -#line 22376 "" +#line 22370 "" i__14[1] = 5, a__10[1] = "hfill"; -#line 22376 "" +#line 22370 "" i__14[2] = 1, a__10[2] = all_1.sq; -#line 22376 "" +#line 22370 "" i__14[3] = 5, a__10[3] = "vbox{"; -#line 22376 "" +#line 22370 "" i__14[4] = 1, a__10[4] = all_1.sq; -#line 22376 "" +#line 22370 "" i__14[5] = 6, a__10[5] = "hsize="; -#line 22376 "" +#line 22370 "" i__14[6] = 3, a__10[6] = shortfraq; -#line 22376 "" +#line 22370 "" i__14[7] = 1, a__10[7] = "%"; -#line 22376 "" +#line 22370 "" s_cat(ch__3, a__10, i__14, &c__8, (ftnlen)23); -#line 22376 "" +#line 22370 "" do_fio(&c__1, ch__3, (ftnlen)23); -#line 22376 "" +#line 22370 "" e_wsfe(); -#line 22378 "" - s_wsfe(&io___1527); +#line 22372 "" + s_wsfe(&io___1522); /* Writing concatenation */ -#line 22378 "" +#line 22372 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22378 "" +#line 22372 "" i__6[1] = 9, a__4[1] = "contpiece"; -#line 22378 "" +#line 22372 "" s_cat(ch__20, a__4, i__6, &c__2, (ftnlen)10); -#line 22378 "" +#line 22372 "" do_fio(&c__1, ch__20, (ftnlen)10); -#line 22378 "" +#line 22372 "" e_wsfe(); -#line 22379 "" - s_wsfe(&io___1528); +#line 22373 "" + s_wsfe(&io___1523); /* Writing concatenation */ -#line 22379 "" +#line 22373 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22379 "" +#line 22373 "" i__4[1] = 12, a__2[1] = "makeatletter"; -#line 22379 "" +#line 22373 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22379 "" +#line 22373 "" i__4[3] = 9, a__2[3] = "fil@begin"; -#line 22379 "" +#line 22373 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22379 "" +#line 22373 "" i__4[5] = 11, a__2[5] = "makeatother"; -#line 22379 "" +#line 22373 "" s_cat(ch__9, a__2, i__4, &c__6, (ftnlen)35); -#line 22379 "" +#line 22373 "" do_fio(&c__1, ch__9, (ftnlen)35); -#line 22379 "" +#line 22373 "" e_wsfe(); -#line 22381 "" +#line 22375 "" comshort_1.ishort = 4; -#line 22382 "" +#line 22376 "" } else if (comshort_1.ishort == 4) { /* End coda */ -#line 22383 "" +#line 22377 "" ntmp = combibarcnt_1.ibarcnt - ibarcnt0 - comshort_1.nmbr + comshort_1.mbrsum; -#line 22384 "" +#line 22378 "" if (ntmp <= 9) { -#line 22385 "" +#line 22379 "" *(unsigned char *)shortfraq = (char) (ntmp + 48); -#line 22386 "" +#line 22380 "" lntmp = 1; -#line 22387 "" +#line 22381 "" } else { -#line 22388 "" - s_wsfi(&io___1529); -#line 22388 "" +#line 22382 "" + s_wsfi(&io___1524); +#line 22382 "" do_fio(&c__1, (char *)&ntmp, (ftnlen)sizeof( integer)); -#line 22388 "" +#line 22382 "" e_wsfi(); -#line 22389 "" +#line 22383 "" lntmp = 2; -#line 22390 "" +#line 22384 "" } -#line 22391 "" - s_wsfe(&io___1530); +#line 22385 "" + s_wsfe(&io___1525); /* Writing concatenation */ -#line 22391 "" +#line 22385 "" i__15[0] = 1, a__11[0] = all_1.sq; -#line 22391 "" +#line 22385 "" i__15[1] = 10, a__11[1] = "endpiece}}"; -#line 22391 "" +#line 22385 "" i__15[2] = 1, a__11[2] = all_1.sq; -#line 22391 "" +#line 22385 "" i__15[3] = 7, a__11[3] = "advance"; -#line 22391 "" +#line 22385 "" i__15[4] = 1, a__11[4] = all_1.sq; -#line 22391 "" +#line 22385 "" i__15[5] = 5, a__11[5] = "barno"; -#line 22391 "" +#line 22385 "" i__15[6] = lntmp, a__11[6] = shortfraq; -#line 22391 "" +#line 22385 "" s_cat(ch__31, a__11, i__15, &c__7, (ftnlen)28); -#line 22391 "" +#line 22385 "" do_fio(&c__1, ch__31, lntmp + 25); -#line 22391 "" +#line 22385 "" e_wsfe(); -#line 22393 "" - s_wsfe(&io___1531); +#line 22387 "" + s_wsfe(&io___1526); /* Writing concatenation */ -#line 22393 "" +#line 22387 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22393 "" +#line 22387 "" i__6[1] = 9, a__4[1] = "contpiece"; -#line 22393 "" +#line 22387 "" s_cat(ch__20, a__4, i__6, &c__2, (ftnlen)10); -#line 22393 "" +#line 22387 "" do_fio(&c__1, ch__20, (ftnlen)10); -#line 22393 "" +#line 22387 "" e_wsfe(); -#line 22394 "" - s_wsfe(&io___1532); +#line 22388 "" + s_wsfe(&io___1527); /* Writing concatenation */ -#line 22394 "" +#line 22388 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22394 "" +#line 22388 "" i__4[1] = 12, a__2[1] = "makeatletter"; -#line 22394 "" +#line 22388 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22394 "" +#line 22388 "" i__4[3] = 9, a__2[3] = "fil@begin"; -#line 22394 "" +#line 22388 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22394 "" +#line 22388 "" i__4[5] = 11, a__2[5] = "makeatother"; -#line 22394 "" +#line 22388 "" s_cat(ch__9, a__2, i__4, &c__6, (ftnlen)35); -#line 22394 "" +#line 22388 "" do_fio(&c__1, ch__9, (ftnlen)35); -#line 22394 "" +#line 22388 "" e_wsfe(); -#line 22396 "" +#line 22390 "" comshort_1.ishort = 0; -#line 22397 "" +#line 22391 "" comshort_1.mbrsum = 0; -#line 22398 "" +#line 22392 "" comshort_1.nmbr = 0; -#line 22399 "" +#line 22393 "" } -#line 22400 "" +#line 22394 "" } else if (all_1.mtrnuml != 0) { /* New meter, no new sig, end of line, not new page. */ @@ -54538,2003 +54474,2003 @@ L51: /* \zalaligne\generalmeter{\meterfrac{3}{4}}\addspace{-\afterruleskip}% */ /* \zchangecontext */ -#line 22410 "" +#line 22404 "" setmeter_(&all_1.mtrnuml, &all_1.mtrdenl, & combeam_1.ibmtyp, &ibmrep); -#line 22411 "" +#line 22405 "" if (comget_1.movbrk == 0) { -#line 22412 "" +#line 22406 "" if (comlast_1.islast) { -#line 22413 "" +#line 22407 "" wgmeter_(&all_1.mtrnmp, &all_1.mtrdnp); -#line 22414 "" +#line 22408 "" } -#line 22415 "" +#line 22409 "" if (all_1.mtrdnp > 0) { -#line 22416 "" +#line 22410 "" if (comlast_1.islast) { -#line 22417 "" - s_wsfe(&io___1533); +#line 22411 "" + s_wsfe(&io___1528); /* Writing concatenation */ -#line 22417 "" +#line 22411 "" i__3[0] = 1, a__1[0] = all_1.sq; -#line 22417 "" +#line 22411 "" i__3[1] = 3, a__1[1] = "let"; -#line 22417 "" +#line 22411 "" i__3[2] = 1, a__1[2] = all_1.sq; -#line 22417 "" +#line 22411 "" i__3[3] = 4, a__1[3] = "bnat"; -#line 22417 "" +#line 22411 "" i__3[4] = 1, a__1[4] = all_1.sq; -#line 22417 "" +#line 22411 "" i__3[5] = 8, a__1[5] = "barnoadd"; -#line 22417 "" +#line 22411 "" i__3[6] = 1, a__1[6] = all_1.sq; -#line 22417 "" +#line 22411 "" i__3[7] = 3, a__1[7] = "def"; -#line 22417 "" +#line 22411 "" i__3[8] = 1, a__1[8] = all_1.sq; -#line 22417 "" +#line 22411 "" i__3[9] = 9, a__1[9] = "barnoadd{"; -#line 22417 "" +#line 22411 "" i__3[10] = 1, a__1[10] = all_1.sq; -#line 22417 "" +#line 22411 "" i__3[11] = 7, a__1[11] = "empty}%"; -#line 22417 "" +#line 22411 "" s_cat(ch__23, a__1, i__3, &c__12, (ftnlen) 40); -#line 22417 "" +#line 22411 "" do_fio(&c__1, ch__23, (ftnlen)40); -#line 22417 "" +#line 22411 "" e_wsfe(); -#line 22420 "" - s_wsfe(&io___1534); +#line 22414 "" + s_wsfe(&io___1529); /* Writing concatenation */ -#line 22420 "" +#line 22414 "" i__17[0] = 1, a__13[0] = all_1.sq; -#line 22420 "" +#line 22414 "" i__17[1] = 14, a__13[1] = "xchangecontext" ; -#line 22420 "" +#line 22414 "" i__17[2] = 1, a__13[2] = all_1.sq; -#line 22420 "" +#line 22414 "" i__17[3] = 10, a__13[3] = "addspace{-"; -#line 22420 "" +#line 22414 "" i__17[4] = 1, a__13[4] = all_1.sq; -#line 22420 "" +#line 22414 "" i__17[5] = 14, a__13[5] = "afterruleskip}" ; -#line 22420 "" +#line 22414 "" i__17[6] = 1, a__13[6] = all_1.sq; -#line 22420 "" +#line 22414 "" i__17[7] = 9, a__13[7] = "zalaligne"; -#line 22420 "" +#line 22414 "" i__17[8] = 1, a__13[8] = all_1.sq; -#line 22420 "" +#line 22414 "" i__17[9] = 3, a__13[9] = "let"; -#line 22420 "" +#line 22414 "" i__17[10] = 1, a__13[10] = all_1.sq; -#line 22420 "" +#line 22414 "" i__17[11] = 8, a__13[11] = "barnoadd"; -#line 22420 "" +#line 22414 "" i__17[12] = 1, a__13[12] = all_1.sq; -#line 22420 "" +#line 22414 "" i__17[13] = 4, a__13[13] = "bnat"; -#line 22420 "" +#line 22414 "" s_cat(ch__37, a__13, i__17, &c__14, ( ftnlen)69); -#line 22420 "" +#line 22414 "" do_fio(&c__1, ch__37, (ftnlen)69); -#line 22420 "" +#line 22414 "" e_wsfe(); -#line 22423 "" +#line 22417 "" wgmeter_(&all_1.mtrnmp, &all_1.mtrdnp); -#line 22424 "" - s_wsfe(&io___1535); +#line 22418 "" + s_wsfe(&io___1530); /* Writing concatenation */ -#line 22424 "" +#line 22418 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22424 "" +#line 22418 "" i__4[1] = 10, a__2[1] = "addspace{-"; -#line 22424 "" +#line 22418 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22424 "" +#line 22418 "" i__4[3] = 14, a__2[3] = "afterruleskip}"; -#line 22424 "" +#line 22418 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22424 "" +#line 22418 "" i__4[5] = 14, a__2[5] = "zchangecontext"; -#line 22424 "" +#line 22418 "" s_cat(ch__38, a__2, i__4, &c__6, (ftnlen) 41); -#line 22424 "" +#line 22418 "" do_fio(&c__1, ch__38, (ftnlen)41); -#line 22424 "" +#line 22418 "" e_wsfe(); -#line 22426 "" +#line 22420 "" } -#line 22427 "" +#line 22421 "" if (all_1.ibar == comgrace_1.ibarmbr) { -#line 22427 "" +#line 22421 "" comgrace_1.xb4mbr = all_1.musicsize * -.2f; -#line 22427 "" +#line 22421 "" } -#line 22428 "" +#line 22422 "" } else { -#line 22429 "" +#line 22423 "" if (comlast_1.islast) { -#line 22429 "" - s_wsfe(&io___1536); +#line 22423 "" + s_wsfe(&io___1531); /* Writing concatenation */ -#line 22429 "" +#line 22423 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22429 "" +#line 22423 "" i__6[1] = 8, a__4[1] = "alaligne"; -#line 22429 "" +#line 22423 "" s_cat(ch__18, a__4, i__6, &c__2, (ftnlen) 9); -#line 22429 "" +#line 22423 "" do_fio(&c__1, ch__18, (ftnlen)9); -#line 22429 "" +#line 22423 "" e_wsfe(); -#line 22429 "" +#line 22423 "" } -#line 22430 "" +#line 22424 "" } -#line 22431 "" +#line 22425 "" } else { -#line 22432 "" +#line 22426 "" if (comlast_1.islast) { -#line 22432 "" - s_wsfe(&io___1537); +#line 22426 "" + s_wsfe(&io___1532); /* Writing concatenation */ -#line 22432 "" +#line 22426 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22432 "" +#line 22426 "" i__6[1] = 8, a__4[1] = "alaligne"; -#line 22432 "" +#line 22426 "" s_cat(ch__18, a__4, i__6, &c__2, (ftnlen)9); -#line 22432 "" +#line 22426 "" do_fio(&c__1, ch__18, (ftnlen)9); -#line 22432 "" +#line 22426 "" e_wsfe(); -#line 22432 "" +#line 22426 "" } -#line 22433 "" +#line 22427 "" } -#line 22434 "" +#line 22428 "" } -#line 22435 "" +#line 22429 "" } /* Modified 090525 to use \bnrs */ -#line 22439 "" +#line 22433 "" if (slint) { -#line 22440 "" +#line 22434 "" slint = FALSE_; -#line 22441 "" +#line 22435 "" if (comlast_1.islast) { -#line 22441 "" - s_wsfe(&io___1538); +#line 22435 "" + s_wsfe(&io___1533); /* Writing concatenation */ -#line 22441 "" +#line 22435 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 22441 "" +#line 22435 "" i__5[1] = 3, a__3[1] = "def"; -#line 22441 "" +#line 22435 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 22441 "" +#line 22435 "" i__5[3] = 11, a__3[3] = "raisebarno{"; -#line 22441 "" +#line 22435 "" s_cat(ch__22, a__3, i__5, &c__4, (ftnlen)16); -#line 22441 "" +#line 22435 "" do_fio(&c__1, ch__22, (ftnlen)16); -#line 22441 "" +#line 22435 "" do_fio(&c__1, (char *)&comsln_1.irzbnd, (ftnlen) sizeof(integer)); /* Writing concatenation */ -#line 22441 "" +#line 22435 "" i__8[0] = 2, a__5[0] = ".5"; -#line 22441 "" +#line 22435 "" i__8[1] = 1, a__5[1] = all_1.sq; -#line 22441 "" +#line 22435 "" i__8[2] = 11, a__5[2] = "internote}%"; -#line 22441 "" +#line 22435 "" s_cat(ch__10, a__5, i__8, &c__3, (ftnlen)14); -#line 22441 "" +#line 22435 "" do_fio(&c__1, ch__10, (ftnlen)14); -#line 22441 "" +#line 22435 "" e_wsfe(); -#line 22441 "" +#line 22435 "" } -#line 22443 "" +#line 22437 "" } -#line 22444 "" +#line 22438 "" comget_1.movbrk = 0; -#line 22445 "" +#line 22439 "" } /* Clean up if we squelched bar number reset at movement break */ -#line 22449 "" +#line 22443 "" if (comnotes_1.nobar1) { -#line 22450 "" +#line 22444 "" if (comlast_1.islast) { -#line 22450 "" - s_wsfe(&io___1539); +#line 22444 "" + s_wsfe(&io___1534); /* Writing concatenation */ -#line 22450 "" +#line 22444 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22450 "" +#line 22444 "" i__6[1] = 11, a__4[1] = "startbarno1"; -#line 22450 "" +#line 22444 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen)12); -#line 22450 "" +#line 22444 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22450 "" +#line 22444 "" e_wsfe(); -#line 22450 "" +#line 22444 "" } -#line 22451 "" +#line 22445 "" comnotes_1.nobar1 = FALSE_; -#line 22452 "" +#line 22446 "" } -#line 22453 "" - i__7 = s_rsle(&io___1540); -#line 22453 "" +#line 22447 "" + i__7 = s_rsle(&io___1535); +#line 22447 "" if (i__7 != 0) { -#line 22453 "" +#line 22447 "" goto L14; -#line 22453 "" +#line 22447 "" } -#line 22453 "" +#line 22447 "" i__7 = do_lio(&c__3, &c__1, (char *)&iauto, (ftnlen)sizeof( integer)); -#line 22453 "" +#line 22447 "" if (i__7 != 0) { -#line 22453 "" +#line 22447 "" goto L14; -#line 22453 "" +#line 22447 "" } -#line 22453 "" +#line 22447 "" i__7 = e_rsle(); -#line 22453 "" +#line 22447 "" if (i__7 != 0) { -#line 22453 "" +#line 22447 "" goto L14; -#line 22453 "" +#line 22447 "" } -#line 22454 "" +#line 22448 "" L14: /* We come thru here for the 1st bar of every system, so initialize is1n1 */ -#line 22458 "" +#line 22452 "" comsln_1.is1n1 = 0; /* Brought down from above */ -#line 22462 "" +#line 22456 "" if (isystpg == comnotes_1.nsystp[comnotes_1.ipage - 1]) { -#line 22463 "" +#line 22457 "" isystpg = 0; /* The following is to avoid moving this reset of isystpg, but still send a signal */ /* down below for last system shortening events */ -#line 22468 "" +#line 22462 "" if (comshort_1.ishort == 2) { -#line 22468 "" +#line 22462 "" iflagbot = 1; -#line 22468 "" +#line 22462 "" } -#line 22469 "" +#line 22463 "" } /* Check for linebreak ties */ -#line 22473 "" +#line 22467 "" if (ispstie) { -#line 22473 "" +#line 22467 "" linebreakties_(all_1.isdat1, all_1.isdat2, all_1.isdat3, all_1.isdat4, &all_1.nsdat, &ispstie, all_1.sepsymq, ( ftnlen)1); -#line 22473 "" +#line 22467 "" } -#line 22476 "" +#line 22470 "" } else { /* Not first bar of system */ -#line 22480 "" +#line 22474 "" if (bit_test(iplnow,28)) { /* Signature change */ -#line 22484 "" +#line 22478 "" if (all_1.mtrnuml != 0) { /* Meter+signature change mid line, assume no movement break */ -#line 22488 "" +#line 22482 "" setmeter_(&all_1.mtrnuml, &all_1.mtrdenl, & combeam_1.ibmtyp, &ibmrep); -#line 22489 "" +#line 22483 "" if (comlast_1.islast) { -#line 22489 "" +#line 22483 "" wgmeter_(&all_1.mtrnmp, &all_1.mtrdnp); -#line 22489 "" +#line 22483 "" } /* Writing concatenation */ -#line 22490 "" +#line 22484 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22490 "" +#line 22484 "" i__6[1] = 17, a__4[1] = "generalsignature{"; -#line 22490 "" +#line 22484 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 22491 "" +#line 22485 "" lnote = 18; -#line 22492 "" +#line 22486 "" if (comtop_1.isig < 0) { /* Writing concatenation */ -#line 22493 "" +#line 22487 "" i__6[0] = 18, a__4[0] = notexq; -#line 22493 "" +#line 22487 "" i__6[1] = 1, a__4[1] = "-"; -#line 22493 "" +#line 22487 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 22494 "" +#line 22488 "" lnote = 19; -#line 22495 "" +#line 22489 "" } -#line 22496 "" +#line 22490 "" if (comlast_1.islast) { -#line 22497 "" +#line 22491 "" iptemp = abs(comtop_1.isig) + 48; -#line 22498 "" +#line 22492 "" chax_(ch__1, (ftnlen)1, &iptemp); -#line 22498 "" +#line 22492 "" *(unsigned char *)charq = *(unsigned char *)&ch__1[0]; /* Writing concatenation */ -#line 22499 "" +#line 22493 "" i__8[0] = lnote, a__5[0] = notexq; -#line 22499 "" +#line 22493 "" i__8[1] = 1, a__5[1] = charq; -#line 22499 "" +#line 22493 "" i__8[2] = 2, a__5[2] = "}%"; -#line 22499 "" +#line 22493 "" s_cat(notexq, a__5, i__8, &c__3, (ftnlen)79); -#line 22500 "" +#line 22494 "" lnote += 3; -#line 22501 "" - s_wsfe(&io___1543); -#line 22501 "" +#line 22495 "" + s_wsfe(&io___1538); +#line 22495 "" do_fio(&c__1, notexq, lnote); -#line 22501 "" +#line 22495 "" e_wsfe(); -#line 22502 "" +#line 22496 "" if (comlast_1.islast && cominsttrans_1.laterinsttrans) { -#line 22503 "" +#line 22497 "" writesetsign_(&cominsttrans_1.ninsttrans, cominsttrans_1.iinsttrans, cominsttrans_1.itranskey, & cominsttrans_1.laterinsttrans); -#line 22505 "" +#line 22499 "" } -#line 22506 "" +#line 22500 "" if (comignorenats_1.ignorenats) { -#line 22506 "" - s_wsfe(&io___1544); +#line 22500 "" + s_wsfe(&io___1539); /* Writing concatenation */ -#line 22506 "" +#line 22500 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22506 "" +#line 22500 "" i__6[1] = 11, a__4[1] = "ignorenats%"; -#line 22506 "" +#line 22500 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen)12); -#line 22506 "" +#line 22500 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22506 "" +#line 22500 "" e_wsfe(); -#line 22506 "" +#line 22500 "" } -#line 22507 "" - s_wsfe(&io___1545); +#line 22501 "" + s_wsfe(&io___1540); /* Writing concatenation */ -#line 22507 "" +#line 22501 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22507 "" +#line 22501 "" i__6[1] = 15, a__4[1] = "xchangecontext%"; -#line 22507 "" +#line 22501 "" s_cat(ch__22, a__4, i__6, &c__2, (ftnlen)16); -#line 22507 "" +#line 22501 "" do_fio(&c__1, ch__22, (ftnlen)16); -#line 22507 "" +#line 22501 "" e_wsfe(); -#line 22508 "" +#line 22502 "" } -#line 22509 "" +#line 22503 "" if (all_1.ibar == comgrace_1.ibarmbr) { /* Compute space for multibar rest */ -#line 22513 "" +#line 22507 "" if (comtop_1.lastisig * comtop_1.isig >= 0) { /* Computing MAX */ -#line 22514 "" +#line 22508 "" i__7 = abs(comtop_1.lastisig), i__2 = abs( comtop_1.isig); -#line 22514 "" +#line 22508 "" naccs = max(i__7,i__2); -#line 22515 "" +#line 22509 "" } else { -#line 22516 "" +#line 22510 "" naccs = (i__7 = comtop_1.lastisig - comtop_1.isig, abs(i__7)); -#line 22517 "" +#line 22511 "" } /* xb4mbr = (facmtr+naccs*.24)*musicsize */ -#line 22519 "" +#line 22513 "" comgrace_1.xb4mbr = all_1.musicsize * -.2f; -#line 22520 "" +#line 22514 "" } -#line 22521 "" +#line 22515 "" } else { /* Signature change only */ /* Writing concatenation */ -#line 22525 "" +#line 22519 "" i__14[0] = 1, a__10[0] = all_1.sq; -#line 22525 "" +#line 22519 "" i__14[1] = 4, a__10[1] = "xbar"; -#line 22525 "" +#line 22519 "" i__14[2] = 1, a__10[2] = all_1.sq; -#line 22525 "" +#line 22519 "" i__14[3] = 10, a__10[3] = "addspace{-"; -#line 22525 "" +#line 22519 "" i__14[4] = 1, a__10[4] = all_1.sq; -#line 22525 "" +#line 22519 "" i__14[5] = 14, a__10[5] = "afterruleskip}"; -#line 22525 "" +#line 22519 "" i__14[6] = 1, a__10[6] = all_1.sq; -#line 22525 "" +#line 22519 "" i__14[7] = 17, a__10[7] = "generalsignature{"; -#line 22525 "" +#line 22519 "" s_cat(notexq, a__10, i__14, &c__8, (ftnlen)79); -#line 22527 "" +#line 22521 "" lnote = 49; -#line 22528 "" +#line 22522 "" if (comtop_1.isig < 0) { /* Writing concatenation */ -#line 22529 "" +#line 22523 "" i__6[0] = 49, a__4[0] = notexq; -#line 22529 "" +#line 22523 "" i__6[1] = 1, a__4[1] = "-"; -#line 22529 "" +#line 22523 "" s_cat(notexq, a__4, i__6, &c__2, (ftnlen)79); -#line 22530 "" +#line 22524 "" lnote = 50; -#line 22531 "" +#line 22525 "" } -#line 22532 "" +#line 22526 "" if (comlast_1.islast) { -#line 22532 "" - s_wsfe(&io___1547); +#line 22526 "" + s_wsfe(&io___1542); /* Writing concatenation */ -#line 22532 "" +#line 22526 "" i__8[0] = lnote, a__5[0] = notexq; -#line 22532 "" +#line 22526 "" i__7 = abs(comtop_1.isig) + 48; -#line 22532 "" +#line 22526 "" chax_(ch__1, (ftnlen)1, &i__7); -#line 22532 "" +#line 22526 "" i__8[1] = 1, a__5[1] = ch__1; -#line 22532 "" +#line 22526 "" i__8[2] = 2, a__5[2] = "}%"; -#line 22532 "" +#line 22526 "" s_cat(ch__27, a__5, i__8, &c__3, (ftnlen)82); -#line 22532 "" +#line 22526 "" do_fio(&c__1, ch__27, lnote + 3); -#line 22532 "" +#line 22526 "" e_wsfe(); -#line 22532 "" +#line 22526 "" } -#line 22534 "" +#line 22528 "" if (comlast_1.islast && cominsttrans_1.laterinsttrans) { -#line 22535 "" +#line 22529 "" writesetsign_(&cominsttrans_1.ninsttrans, cominsttrans_1.iinsttrans, cominsttrans_1.itranskey, & cominsttrans_1.laterinsttrans); -#line 22537 "" +#line 22531 "" } -#line 22538 "" +#line 22532 "" if (comlast_1.islast && comignorenats_1.ignorenats) { -#line 22538 "" - s_wsfe(&io___1548); +#line 22532 "" + s_wsfe(&io___1543); /* Writing concatenation */ -#line 22538 "" +#line 22532 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22538 "" +#line 22532 "" i__6[1] = 11, a__4[1] = "ignorenats%"; -#line 22538 "" +#line 22532 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen)12); -#line 22538 "" +#line 22532 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22538 "" +#line 22532 "" e_wsfe(); -#line 22538 "" +#line 22532 "" } -#line 22540 "" +#line 22534 "" if (comlast_1.islast) { -#line 22540 "" - s_wsfe(&io___1549); +#line 22534 "" + s_wsfe(&io___1544); /* Writing concatenation */ -#line 22540 "" +#line 22534 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22540 "" +#line 22534 "" i__4[1] = 14, a__2[1] = "zchangecontext"; -#line 22540 "" +#line 22534 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22540 "" +#line 22534 "" i__4[3] = 12, a__2[3] = "addspace{-.5"; -#line 22540 "" +#line 22534 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22540 "" +#line 22534 "" i__4[5] = 15, a__2[5] = "afterruleskip}%"; -#line 22540 "" +#line 22534 "" s_cat(ch__39, a__2, i__4, &c__6, (ftnlen)44); -#line 22540 "" +#line 22534 "" do_fio(&c__1, ch__39, (ftnlen)44); -#line 22540 "" +#line 22534 "" e_wsfe(); -#line 22540 "" +#line 22534 "" } -#line 22542 "" +#line 22536 "" if (all_1.ibar == comgrace_1.ibarmbr) { /* Compute space for multibar rest */ -#line 22546 "" +#line 22540 "" if (comtop_1.lastisig * comtop_1.isig >= 0) { /* Computing MAX */ -#line 22547 "" +#line 22541 "" i__7 = abs(comtop_1.lastisig), i__2 = abs( comtop_1.isig); -#line 22547 "" +#line 22541 "" naccs = max(i__7,i__2); -#line 22548 "" +#line 22542 "" } else { -#line 22549 "" +#line 22543 "" naccs = (i__7 = comtop_1.lastisig - comtop_1.isig, abs(i__7)); -#line 22550 "" +#line 22544 "" } /* xb4mbr = naccs*.24*musicsize */ -#line 22552 "" +#line 22546 "" comgrace_1.xb4mbr = all_1.musicsize * -.2f; -#line 22553 "" +#line 22547 "" } -#line 22554 "" +#line 22548 "" } -#line 22555 "" +#line 22549 "" } else if (comshort_1.ishort == 3) { /* Gap before coda, assumed no signature change! */ -#line 22559 "" +#line 22553 "" ntmp = combibarcnt_1.ibarcnt - ibarcnt0 - comshort_1.nmbr + comshort_1.mbrsum; -#line 22560 "" +#line 22554 "" if (ntmp <= 9) { -#line 22561 "" +#line 22555 "" *(unsigned char *)shortfraq = (char) (ntmp + 48); -#line 22562 "" +#line 22556 "" lntmp = 1; -#line 22563 "" +#line 22557 "" } else { -#line 22564 "" - s_wsfi(&io___1550); -#line 22564 "" +#line 22558 "" + s_wsfi(&io___1545); +#line 22558 "" do_fio(&c__1, (char *)&ntmp, (ftnlen)sizeof(integer)); -#line 22564 "" +#line 22558 "" e_wsfi(); -#line 22565 "" +#line 22559 "" lntmp = 2; -#line 22566 "" +#line 22560 "" } -#line 22567 "" - s_wsfe(&io___1551); +#line 22561 "" + s_wsfe(&io___1546); /* Writing concatenation */ -#line 22567 "" +#line 22561 "" i__15[0] = 1, a__11[0] = all_1.sq; -#line 22567 "" +#line 22561 "" i__15[1] = 9, a__11[1] = "endpiece}"; -#line 22567 "" +#line 22561 "" i__15[2] = 1, a__11[2] = all_1.sq; -#line 22567 "" +#line 22561 "" i__15[3] = 7, a__11[3] = "advance"; -#line 22567 "" +#line 22561 "" i__15[4] = 1, a__11[4] = all_1.sq; -#line 22567 "" +#line 22561 "" i__15[5] = 5, a__11[5] = "barno"; -#line 22567 "" +#line 22561 "" i__15[6] = lntmp, a__11[6] = shortfraq; -#line 22567 "" +#line 22561 "" s_cat(ch__5, a__11, i__15, &c__7, (ftnlen)27); -#line 22567 "" +#line 22561 "" do_fio(&c__1, ch__5, lntmp + 24); -#line 22567 "" +#line 22561 "" e_wsfe(); -#line 22569 "" +#line 22563 "" if (comshort_1.nocodabn) { -#line 22570 "" - s_wsfe(&io___1552); +#line 22564 "" + s_wsfe(&io___1547); /* Writing concatenation */ -#line 22570 "" +#line 22564 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22570 "" +#line 22564 "" i__6[1] = 7, a__4[1] = "nobarno"; -#line 22570 "" +#line 22564 "" s_cat(ch__8, a__4, i__6, &c__2, (ftnlen)8); -#line 22570 "" +#line 22564 "" do_fio(&c__1, ch__8, (ftnlen)8); -#line 22570 "" +#line 22564 "" e_wsfe(); -#line 22571 "" +#line 22565 "" comshort_1.nocodabn = FALSE_; -#line 22572 "" +#line 22566 "" } -#line 22573 "" - s_wsfi(&io___1553); -#line 22573 "" +#line 22567 "" + s_wsfi(&io___1548); +#line 22567 "" do_fio(&c__1, (char *)&comshort_1.codafrac, (ftnlen)sizeof( real)); -#line 22573 "" +#line 22567 "" e_wsfi(); -#line 22574 "" - s_wsfe(&io___1554); +#line 22568 "" + s_wsfe(&io___1549); /* Writing concatenation */ -#line 22574 "" +#line 22568 "" i__10[0] = 1, a__7[0] = all_1.sq; -#line 22574 "" +#line 22568 "" i__10[1] = 5, a__7[1] = "hfill"; -#line 22574 "" +#line 22568 "" i__10[2] = 1, a__7[2] = all_1.sq; -#line 22574 "" +#line 22568 "" i__10[3] = 5, a__7[3] = "vbox{"; -#line 22574 "" +#line 22568 "" i__10[4] = 1, a__7[4] = all_1.sq; -#line 22574 "" +#line 22568 "" i__10[5] = 6, a__7[5] = "hsize="; -#line 22574 "" +#line 22568 "" i__10[6] = 3, a__7[6] = shortfraq; -#line 22574 "" +#line 22568 "" i__10[7] = 1, a__7[7] = all_1.sq; -#line 22574 "" +#line 22568 "" i__10[8] = 6, a__7[8] = "hsize%"; -#line 22574 "" +#line 22568 "" s_cat(ch__7, a__7, i__10, &c__9, (ftnlen)29); -#line 22574 "" +#line 22568 "" do_fio(&c__1, ch__7, (ftnlen)29); -#line 22574 "" +#line 22568 "" e_wsfe(); -#line 22576 "" - s_wsfe(&io___1555); +#line 22570 "" + s_wsfe(&io___1550); /* Writing concatenation */ -#line 22576 "" +#line 22570 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22576 "" +#line 22570 "" i__6[1] = 9, a__4[1] = "contpiece"; -#line 22576 "" +#line 22570 "" s_cat(ch__20, a__4, i__6, &c__2, (ftnlen)10); -#line 22576 "" +#line 22570 "" do_fio(&c__1, ch__20, (ftnlen)10); -#line 22576 "" +#line 22570 "" e_wsfe(); -#line 22577 "" - s_wsfe(&io___1556); +#line 22571 "" + s_wsfe(&io___1551); /* Writing concatenation */ -#line 22577 "" +#line 22571 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22577 "" +#line 22571 "" i__4[1] = 12, a__2[1] = "makeatletter"; -#line 22577 "" +#line 22571 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22577 "" +#line 22571 "" i__4[3] = 9, a__2[3] = "fil@begin"; -#line 22577 "" +#line 22571 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22577 "" +#line 22571 "" i__4[5] = 11, a__2[5] = "makeatother"; -#line 22577 "" +#line 22571 "" s_cat(ch__9, a__2, i__4, &c__6, (ftnlen)35); -#line 22577 "" +#line 22571 "" do_fio(&c__1, ch__9, (ftnlen)35); -#line 22577 "" +#line 22571 "" e_wsfe(); -#line 22579 "" +#line 22573 "" comshort_1.ishort = 4; -#line 22580 "" +#line 22574 "" } else if (all_1.mtrnuml == 0) { /* No meter change */ -#line 22584 "" +#line 22578 "" if (comlast_1.islast) { -#line 22584 "" - s_wsfe(&io___1557); +#line 22578 "" + s_wsfe(&io___1552); /* Writing concatenation */ -#line 22584 "" +#line 22578 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22584 "" +#line 22578 "" i__6[1] = 4, a__4[1] = "xbar"; -#line 22584 "" +#line 22578 "" s_cat(ch__40, a__4, i__6, &c__2, (ftnlen)5); -#line 22584 "" +#line 22578 "" do_fio(&c__1, ch__40, (ftnlen)5); -#line 22584 "" +#line 22578 "" e_wsfe(); -#line 22584 "" +#line 22578 "" } -#line 22585 "" +#line 22579 "" } else { /* Change meter midline */ -#line 22589 "" +#line 22583 "" setmeter_(&all_1.mtrnuml, &all_1.mtrdenl, &combeam_1.ibmtyp, & ibmrep); -#line 22590 "" +#line 22584 "" if (comget_1.movbrk == 0) { -#line 22591 "" +#line 22585 "" if (comlast_1.islast) { -#line 22592 "" +#line 22586 "" wgmeter_(&all_1.mtrnmp, &all_1.mtrdnp); -#line 22593 "" +#line 22587 "" } -#line 22594 "" +#line 22588 "" if (all_1.mtrdnp > 0) { -#line 22595 "" +#line 22589 "" if (comlast_1.islast) { -#line 22596 "" - s_wsfe(&io___1558); +#line 22590 "" + s_wsfe(&io___1553); /* Writing concatenation */ -#line 22596 "" +#line 22590 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22596 "" +#line 22590 "" i__6[1] = 10, a__4[1] = "newtimes0%"; -#line 22596 "" +#line 22590 "" s_cat(ch__15, a__4, i__6, &c__2, (ftnlen)11); -#line 22596 "" +#line 22590 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 22596 "" +#line 22590 "" e_wsfe(); -#line 22597 "" +#line 22591 "" } /* if (ibar .eq. ibarmbr) xb4mbr = facmtr*musicsize */ -#line 22599 "" +#line 22593 "" if (all_1.ibar == comgrace_1.ibarmbr) { -#line 22599 "" +#line 22593 "" comgrace_1.xb4mbr = all_1.musicsize * -.2f; -#line 22599 "" +#line 22593 "" } -#line 22600 "" +#line 22594 "" } else { -#line 22601 "" +#line 22595 "" if (comlast_1.islast) { -#line 22601 "" - s_wsfe(&io___1559); +#line 22595 "" + s_wsfe(&io___1554); /* Writing concatenation */ -#line 22601 "" +#line 22595 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22601 "" +#line 22595 "" i__6[1] = 4, a__4[1] = "xbar"; -#line 22601 "" +#line 22595 "" s_cat(ch__40, a__4, i__6, &c__2, (ftnlen)5); -#line 22601 "" +#line 22595 "" do_fio(&c__1, ch__40, (ftnlen)5); -#line 22601 "" +#line 22595 "" e_wsfe(); -#line 22601 "" +#line 22595 "" } -#line 22602 "" +#line 22596 "" } -#line 22603 "" +#line 22597 "" } -#line 22604 "" +#line 22598 "" } -#line 22605 "" +#line 22599 "" } /* Now that xbar's are written, can put in left-repeats at line beginnings */ -#line 22609 "" +#line 22603 "" if (lrptpend) { -#line 22610 "" +#line 22604 "" if (comlast_1.islast) { -#line 22610 "" - s_wsfe(&io___1560); +#line 22604 "" + s_wsfe(&io___1555); /* Writing concatenation */ -#line 22610 "" +#line 22604 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22610 "" +#line 22604 "" i__4[1] = 7, a__2[1] = "advance"; -#line 22610 "" +#line 22604 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22610 "" +#line 22604 "" i__4[3] = 7, a__2[3] = "barno-1"; -#line 22610 "" +#line 22604 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22610 "" +#line 22604 "" i__4[5] = 10, a__2[5] = "leftrepeat"; -#line 22610 "" +#line 22604 "" s_cat(ch__5, a__2, i__4, &c__6, (ftnlen)27); -#line 22610 "" +#line 22604 "" do_fio(&c__1, ch__5, (ftnlen)27); -#line 22610 "" +#line 22604 "" e_wsfe(); -#line 22610 "" +#line 22604 "" } -#line 22612 "" +#line 22606 "" lrptpend = FALSE_; -#line 22613 "" +#line 22607 "" } -#line 22614 "" +#line 22608 "" if (all_1.ibar > 1) { /* For bars after first, slide all stuff down to beginning of arrays */ -#line 22618 "" +#line 22612 "" i__7 = all_1.nv; -#line 22618 "" +#line 22612 "" for (all_1.iv = 1; all_1.iv <= i__7; ++all_1.iv) { -#line 22619 "" +#line 22613 "" i__2 = commvl_1.nvmx[all_1.iv - 1]; -#line 22619 "" +#line 22613 "" for (kv = 1; kv <= i__2; ++kv) { -#line 22620 "" +#line 22614 "" commvl_1.ivx = commvl_1.ivmx[all_1.iv + kv * 24 - 25]; -#line 22621 "" +#line 22615 "" ioff = all_1.nib[commvl_1.ivx + (all_1.ibar - 1) * 24 - 25]; -#line 22622 "" +#line 22616 "" i__13 = all_1.nib[commvl_1.ivx + all_1.ibar * 24 - 25] - ioff; -#line 22622 "" +#line 22616 "" for (ip = 1; ip <= i__13; ++ip) { -#line 22623 "" +#line 22617 "" all_1.nolev[commvl_1.ivx + ip * 24 - 25] = all_1.nolev[commvl_1.ivx + (ip + ioff) * 24 - 25]; -#line 22624 "" +#line 22618 "" all_1.nodur[commvl_1.ivx + ip * 24 - 25] = all_1.nodur[commvl_1.ivx + (ip + ioff) * 24 - 25]; -#line 22625 "" +#line 22619 "" all_1.nacc[commvl_1.ivx + ip * 24 - 25] = all_1.nacc[ commvl_1.ivx + (ip + ioff) * 24 - 25]; -#line 22626 "" +#line 22620 "" all_1.irest[commvl_1.ivx + ip * 24 - 25] = all_1.irest[commvl_1.ivx + (ip + ioff) * 24 - 25]; -#line 22627 "" +#line 22621 "" all_1.islur[commvl_1.ivx + ip * 24 - 25] = all_1.islur[commvl_1.ivx + (ip + ioff) * 24 - 25]; -#line 22628 "" +#line 22622 "" all_1.ipl[commvl_1.ivx + ip * 24 - 25] = all_1.ipl[ commvl_1.ivx + (ip + ioff) * 24 - 25]; -#line 22629 "" +#line 22623 "" all_1.iornq[commvl_1.ivx + ip * 24 - 1] = all_1.iornq[ commvl_1.ivx + (ip + ioff) * 24 - 1]; -#line 22630 "" +#line 22624 "" all_1.mult[commvl_1.ivx + ip * 24 - 25] = all_1.mult[ commvl_1.ivx + (ip + ioff) * 24 - 25]; -#line 22631 "" +#line 22625 "" if (all_1.figbass && commvl_1.ivx == 1 || commvl_1.ivx == comfig_1.ivxfig2) { -#line 22632 "" +#line 22626 "" if (commvl_1.ivx == 1) { -#line 22633 "" +#line 22627 "" all_1.isfig[(ip << 1) - 2] = all_1.isfig[(ip + ioff << 1) - 2]; -#line 22634 "" +#line 22628 "" } else { -#line 22635 "" +#line 22629 "" all_1.isfig[(ip << 1) - 1] = all_1.isfig[(ip + ioff << 1) - 1]; -#line 22636 "" +#line 22630 "" } -#line 22637 "" +#line 22631 "" } -#line 22638 "" +#line 22632 "" /* L12: */ -#line 22638 "" +#line 22632 "" } -#line 22639 "" +#line 22633 "" if (commvl_1.ivx <= all_1.nv && comcc_1.ncc[all_1.iv - 1] > 1) { -#line 22640 "" +#line 22634 "" islide = 0; -#line 22641 "" +#line 22635 "" i__13 = comcc_1.ncc[all_1.iv - 1]; -#line 22641 "" +#line 22635 "" for (icc = 1; icc <= i__13; ++icc) { -#line 22642 "" +#line 22636 "" if (comcc_1.tcc[all_1.iv + icc * 24 - 25] <= ( real) all_1.lenbar) { /* This time will drop <=0 when slid. */ -#line 22646 "" +#line 22640 "" islide = icc - 1; -#line 22647 "" +#line 22641 "" comcc_1.ncmidcc[all_1.iv - 1] = comcc_1.ncmidcc[all_1.iv + icc * 24 - 25]; -#line 22648 "" +#line 22642 "" } else { -#line 22649 "" +#line 22643 "" comcc_1.tcc[all_1.iv + (icc - islide) * 24 - 25] = comcc_1.tcc[all_1.iv + icc * 24 - 25] - all_1.lenbar; -#line 22650 "" +#line 22644 "" comcc_1.ncmidcc[all_1.iv + (icc - islide) * 24 - 25] = comcc_1.ncmidcc[all_1.iv + icc * 24 - 25]; -#line 22651 "" +#line 22645 "" } -#line 22652 "" +#line 22646 "" /* L13: */ -#line 22652 "" +#line 22646 "" } -#line 22653 "" +#line 22647 "" comcc_1.ncc[all_1.iv - 1] -= islide; -#line 22654 "" +#line 22648 "" comcc_1.tcc[all_1.iv - 1] = 0.f; -#line 22655 "" +#line 22649 "" } -#line 22656 "" +#line 22650 "" /* L11: */ -#line 22656 "" +#line 22650 "" } -#line 22656 "" +#line 22650 "" } -#line 22657 "" +#line 22651 "" i__2 = comgrace_1.ngrace; -#line 22657 "" +#line 22651 "" for (ig = 1; ig <= i__2; ++ig) { -#line 22658 "" +#line 22652 "" comgrace_1.ipg[ig - 1] -= all_1.nib[comgrace_1.ivg[ig - 1] + ( all_1.ibar - 1) * 24 - 25]; -#line 22659 "" +#line 22653 "" if (all_1.ibar > 2) { -#line 22659 "" +#line 22653 "" comgrace_1.ipg[ig - 1] += all_1.nib[comgrace_1.ivg[ig - 1] + (all_1.ibar - 2) * 24 - 25]; -#line 22659 "" +#line 22653 "" } -#line 22660 "" +#line 22654 "" /* L15: */ -#line 22660 "" +#line 22654 "" } -#line 22661 "" +#line 22655 "" i__2 = comgrace_1.nlit; -#line 22661 "" +#line 22655 "" for (il = 1; il <= i__2; ++il) { -#line 22662 "" +#line 22656 "" comgrace_1.iplit[il - 1] -= all_1.nib[comgrace_1.ivlit[il - 1] + (all_1.ibar - 1) * 24 - 25]; -#line 22663 "" +#line 22657 "" if (all_1.ibar > 2) { -#line 22663 "" +#line 22657 "" comgrace_1.iplit[il - 1] += all_1.nib[comgrace_1.ivlit[il - 1] + (all_1.ibar - 2) * 24 - 25]; -#line 22663 "" +#line 22657 "" } -#line 22664 "" +#line 22658 "" /* L21: */ -#line 22664 "" +#line 22658 "" } -#line 22665 "" +#line 22659 "" i__2 = comtrill_1.ntrill; -#line 22665 "" +#line 22659 "" for (it = 1; it <= i__2; ++it) { -#line 22666 "" +#line 22660 "" comtrill_1.iptrill[it - 1] -= all_1.nib[comtrill_1.ivtrill[it - 1] + (all_1.ibar - 1) * 24 - 25]; -#line 22667 "" +#line 22661 "" if (all_1.ibar > 2) { -#line 22667 "" +#line 22661 "" comtrill_1.iptrill[it - 1] += all_1.nib[ comtrill_1.ivtrill[it - 1] + (all_1.ibar - 2) * 24 - 25]; -#line 22667 "" +#line 22661 "" } -#line 22669 "" +#line 22663 "" /* L22: */ -#line 22669 "" +#line 22663 "" } -#line 22670 "" +#line 22664 "" i__2 = comtrill_1.ncrd; -#line 22670 "" +#line 22664 "" for (icrd = 1; icrd <= i__2; ++icrd) { -#line 22671 "" +#line 22665 "" commvl_1.ivx = (15 & lbit_shift(comtrill_1.icrdat[icrd - 1], ( ftnlen)-8)) + (igetbits_(&comtrill_1.icrdat[icrd - 1], &c__1, &c__28) << 4); -#line 22673 "" +#line 22667 "" ipnew = (255 & comtrill_1.icrdat[icrd - 1]) - all_1.nib[ commvl_1.ivx + (all_1.ibar - 1) * 24 - 25]; -#line 22674 "" +#line 22668 "" if (all_1.ibar > 2) { -#line 22674 "" +#line 22668 "" ipnew += all_1.nib[commvl_1.ivx + (all_1.ibar - 2) * 24 - 25]; -#line 22674 "" +#line 22668 "" } -#line 22675 "" +#line 22669 "" comtrill_1.icrdat[icrd - 1] = -256 & comtrill_1.icrdat[icrd - 1]; -#line 22676 "" +#line 22670 "" comtrill_1.icrdat[icrd - 1] = max(0,ipnew) | comtrill_1.icrdat[icrd - 1]; -#line 22677 "" +#line 22671 "" /* L27: */ -#line 22677 "" +#line 22671 "" } -#line 22678 "" +#line 22672 "" i__2 = comtrill_1.nudorn; -#line 22678 "" +#line 22672 "" for (iudorn = 1; iudorn <= i__2; ++iudorn) { -#line 22679 "" +#line 22673 "" commvl_1.ivx = comivxudorn_1.ivxudorn[iudorn - 1]; -#line 22680 "" +#line 22674 "" ipnew = (255 & comtrill_1.kudorn[iudorn - 1]) - all_1.nib[ commvl_1.ivx + (all_1.ibar - 1) * 24 - 25]; -#line 22681 "" +#line 22675 "" if (all_1.ibar > 2) { -#line 22681 "" +#line 22675 "" ipnew += all_1.nib[commvl_1.ivx + (all_1.ibar - 2) * 24 - 25]; -#line 22681 "" +#line 22675 "" } -#line 22682 "" +#line 22676 "" comtrill_1.kudorn[iudorn - 1] = -256 & comtrill_1.kudorn[ iudorn - 1]; -#line 22683 "" +#line 22677 "" comtrill_1.kudorn[iudorn - 1] = max(0,ipnew) | comtrill_1.kudorn[iudorn - 1]; -#line 22684 "" +#line 22678 "" /* L29: */ -#line 22684 "" +#line 22678 "" } -#line 22685 "" +#line 22679 "" i__2 = comdyn_1.ndyn; -#line 22685 "" +#line 22679 "" for (idyn = 1; idyn <= i__2; ++idyn) { -#line 22686 "" +#line 22680 "" idynd = comdyn_1.idyndat[idyn - 1]; -#line 22687 "" +#line 22681 "" commvl_1.ivx = (15 & idynd) + (igetbits_(&comdyn_1.idynda2[ idyn - 1], &c__1, &c__10) << 4); -#line 22688 "" +#line 22682 "" ipnew = igetbits_(&idynd, &c__8, &c__4) - all_1.nib[ commvl_1.ivx + (all_1.ibar - 1) * 24 - 25]; /* The following construction avoids array bound errors in some compilers */ -#line 22692 "" +#line 22686 "" if (all_1.ibar > 2) { -#line 22693 "" +#line 22687 "" ipnew += all_1.nib[commvl_1.ivx + (all_1.ibar - 2) * 24 - 25]; -#line 22694 "" +#line 22688 "" } -#line 22695 "" +#line 22689 "" ipnew = i_dim(&ipnew, &c__0); -#line 22696 "" +#line 22690 "" setbits_(&idynd, &c__8, &c__4, &ipnew); -#line 22697 "" +#line 22691 "" comdyn_1.idyndat[idyn - 1] = idynd; -#line 22698 "" +#line 22692 "" /* L42: */ -#line 22698 "" +#line 22692 "" } -#line 22699 "" +#line 22693 "" i__2 = comdyn_1.ntxtdyn; -#line 22699 "" +#line 22693 "" for (itxtdyn = 1; itxtdyn <= i__2; ++itxtdyn) { -#line 22700 "" +#line 22694 "" idynd = comdyn_1.ivxiptxt[itxtdyn - 1]; -#line 22701 "" +#line 22695 "" commvl_1.ivx = 31 & idynd; -#line 22702 "" +#line 22696 "" ipnew = igetbits_(&idynd, &c__8, &c__5) - all_1.nib[ commvl_1.ivx + (all_1.ibar - 1) * 24 - 25]; -#line 22703 "" +#line 22697 "" if (all_1.ibar > 2) { -#line 22704 "" +#line 22698 "" ipnew += all_1.nib[commvl_1.ivx + (all_1.ibar - 2) * 24 - 25]; -#line 22705 "" +#line 22699 "" } -#line 22706 "" +#line 22700 "" ipnew = i_dim(&ipnew, &c__0); /* call setbits(idynd,8,4,ipnew) */ -#line 22708 "" +#line 22702 "" setbits_(&idynd, &c__8, &c__5, &ipnew); -#line 22709 "" +#line 22703 "" comdyn_1.ivxiptxt[itxtdyn - 1] = idynd; -#line 22710 "" +#line 22704 "" /* L43: */ -#line 22710 "" +#line 22704 "" } -#line 22711 "" +#line 22705 "" i__2 = all_1.nsdat; -#line 22711 "" +#line 22705 "" for (isdat = 1; isdat <= i__2; ++isdat) { -#line 22712 "" +#line 22706 "" isdata = all_1.isdat1[isdat - 1]; -#line 22713 "" +#line 22707 "" commvl_1.ivx = commvl_1.ivmx[igetbits_(&isdata, &c__5, &c__13) + (igetbits_(&isdata, &c__1, &c__12) + 1) * 24 - 25]; -#line 22714 "" +#line 22708 "" ipnew = igetbits_(&isdata, &c__8, &c__3) - all_1.nib[ commvl_1.ivx + (all_1.ibar - 1) * 24 - 25]; -#line 22715 "" +#line 22709 "" if (all_1.ibar > 2) { -#line 22716 "" +#line 22710 "" ipnew += all_1.nib[commvl_1.ivx + (all_1.ibar - 2) * 24 - 25]; -#line 22717 "" +#line 22711 "" } -#line 22718 "" +#line 22712 "" ipnew = i_dim(&ipnew, &c__0); -#line 22719 "" +#line 22713 "" setbits_(&isdata, &c__8, &c__3, &ipnew); -#line 22720 "" +#line 22714 "" all_1.isdat1[isdat - 1] = isdata; -#line 22721 "" +#line 22715 "" /* L41: */ -#line 22721 "" +#line 22715 "" } -#line 22722 "" +#line 22716 "" i__2 = comcb_1.nbc; -#line 22722 "" +#line 22716 "" for (ibc = 1; ibc <= i__2; ++ibc) { -#line 22723 "" +#line 22717 "" commvl_1.ivx = (15 & comcb_1.ibcdata[ibc - 1]) + (igetbits_(& comcb_1.ibcdata[ibc - 1], &c__1, &c__28) << 4); -#line 22724 "" +#line 22718 "" ipnew = igetbits_(&comcb_1.ibcdata[ibc - 1], &c__8, &c__4) - all_1.nib[commvl_1.ivx + (all_1.ibar - 1) * 24 - 25]; -#line 22725 "" +#line 22719 "" if (all_1.ibar > 2) { -#line 22726 "" +#line 22720 "" ipnew += all_1.nib[commvl_1.ivx + (all_1.ibar - 2) * 24 - 25]; -#line 22727 "" +#line 22721 "" } -#line 22728 "" +#line 22722 "" ipnew = i_dim(&ipnew, &c__0); -#line 22729 "" +#line 22723 "" setbits_(&comcb_1.ibcdata[ibc - 1], &c__8, &c__4, &ipnew); -#line 22730 "" +#line 22724 "" /* L44: */ -#line 22730 "" +#line 22724 "" } -#line 22731 "" +#line 22725 "" i__2 = comarpshift_1.numarpshift; -#line 22731 "" +#line 22725 "" for (iarps = 1; iarps <= i__2; ++iarps) { -#line 22732 "" +#line 22726 "" comarpshift_1.iparpshift[iarps - 1] -= all_1.nib[ comarpshift_1.ivarpshift[iarps - 1] + (all_1.ibar - 1) * 24 - 25]; -#line 22734 "" +#line 22728 "" if (all_1.ibar > 2) { -#line 22735 "" +#line 22729 "" comarpshift_1.iparpshift[iarps - 1] += all_1.nib[ comarpshift_1.ivarpshift[iarps - 1] + (all_1.ibar - 2) * 24 - 25]; -#line 22737 "" +#line 22731 "" } -#line 22738 "" +#line 22732 "" /* L45: */ -#line 22738 "" +#line 22732 "" } /* Bookkeeping for figures. This will set nfigs = 0 if there are no figs left. */ /* If there are figs left, it will reset all times relative to start of */ /* current bar. */ -#line 22744 "" +#line 22738 "" for (commvl_1.ivx = 1; commvl_1.ivx <= 2; ++commvl_1.ivx) { -#line 22745 "" +#line 22739 "" if (all_1.figbass) { -#line 22746 "" +#line 22740 "" islide = 0; -#line 22747 "" +#line 22741 "" i__2 = comfig_1.nfigs[commvl_1.ivx - 1]; -#line 22747 "" +#line 22741 "" for (jfig = 1; jfig <= i__2; ++jfig) { -#line 22748 "" +#line 22742 "" if (comfig_1.itfig[commvl_1.ivx + (jfig << 1) - 3] < all_1.lenbar) { /* This figure was already used */ -#line 22752 "" +#line 22746 "" islide = jfig; -#line 22753 "" +#line 22747 "" } else { -#line 22754 "" +#line 22748 "" comfig_1.itfig[commvl_1.ivx + (jfig - islide << 1) - 3] = comfig_1.itfig[commvl_1.ivx + ( jfig << 1) - 3] - all_1.lenbar; -#line 22755 "" +#line 22749 "" s_copy(comfig_1.figq + (commvl_1.ivx + (jfig - islide << 1) - 3) * 10, comfig_1.figq + ( commvl_1.ivx + (jfig << 1) - 3) * 10, ( ftnlen)10, (ftnlen)10); -#line 22756 "" +#line 22750 "" comgrace_1.itoff[commvl_1.ivx + (jfig - islide << 1) - 3] = comgrace_1.itoff[commvl_1.ivx + (jfig << 1) - 3]; -#line 22757 "" +#line 22751 "" comfig_1.ivupfig[commvl_1.ivx + (jfig - islide << 1) - 3] = comfig_1.ivupfig[commvl_1.ivx + (jfig << 1) - 3]; -#line 22758 "" +#line 22752 "" comfig_1.ivvfig[commvl_1.ivx + (jfig - islide << 1) - 3] = comfig_1.ivvfig[commvl_1.ivx + ( jfig << 1) - 3]; -#line 22759 "" +#line 22753 "" } -#line 22760 "" +#line 22754 "" /* L20: */ -#line 22760 "" +#line 22754 "" } -#line 22761 "" +#line 22755 "" comfig_1.nfigs[commvl_1.ivx - 1] -= islide; -#line 22762 "" +#line 22756 "" } -#line 22763 "" +#line 22757 "" if (comfig_1.nfigs[1] == 0) { -#line 22763 "" +#line 22757 "" goto L47; -#line 22763 "" +#line 22757 "" } -#line 22764 "" +#line 22758 "" /* L46: */ -#line 22764 "" +#line 22758 "" } -#line 22765 "" +#line 22759 "" L47: -#line 22766 "" +#line 22760 "" ; -#line 22766 "" +#line 22760 "" } /* End of sliding down for bars after first in gulp. */ /* The following may not be needed by makeabar, but just in case... */ -#line 22772 "" +#line 22766 "" if (all_1.firstgulp && all_1.lenb0 != 0) { -#line 22773 "" +#line 22767 "" if (all_1.ibar == 1) { -#line 22774 "" +#line 22768 "" all_1.lenbar = all_1.lenb0; -#line 22775 "" +#line 22769 "" } else { -#line 22776 "" +#line 22770 "" all_1.lenbar = all_1.lenb1; -#line 22777 "" +#line 22771 "" } -#line 22778 "" +#line 22772 "" } /* Equal line spacing stuff */ -#line 22782 "" +#line 22776 "" if (comget_1.equalize && comask_1.bar1syst) { -#line 22783 "" +#line 22777 "" if (isystpg == 1) { -#line 22784 "" - s_wsfe(&io___1576); +#line 22778 "" + s_wsfe(&io___1571); /* Writing concatenation */ -#line 22784 "" +#line 22778 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22784 "" +#line 22778 "" i__6[1] = 8, a__4[1] = "starteq%"; -#line 22784 "" +#line 22778 "" s_cat(ch__18, a__4, i__6, &c__2, (ftnlen)9); -#line 22784 "" +#line 22778 "" do_fio(&c__1, ch__18, (ftnlen)9); -#line 22784 "" +#line 22778 "" e_wsfe(); -#line 22785 "" +#line 22779 "" } else if (isystpg == comnotes_1.nsystp[comnotes_1.ipage - 1] - 1) { -#line 22786 "" - s_wsfe(&io___1577); +#line 22780 "" + s_wsfe(&io___1572); /* Writing concatenation */ -#line 22786 "" +#line 22780 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22786 "" +#line 22780 "" i__6[1] = 6, a__4[1] = "endeq%"; -#line 22786 "" +#line 22780 "" s_cat(ch__41, a__4, i__6, &c__2, (ftnlen)7); -#line 22786 "" +#line 22780 "" do_fio(&c__1, ch__41, (ftnlen)7); -#line 22786 "" +#line 22780 "" e_wsfe(); -#line 22787 "" +#line 22781 "" } -#line 22788 "" +#line 22782 "" } -#line 22789 "" +#line 22783 "" make1bar_(&ibmrep, &tglp1, tstart, cwrest, squez, istop, numbms, istart); -#line 22791 "" +#line 22785 "" make2bar_(&comnotes_1.ninow, &tglp1, tstart, cwrest, squez, istop, numbms, istart, comclefq_1.clefq, (ftnlen)1); /* Hardspace before barline? */ -#line 22796 "" +#line 22790 "" hardb4 = 0.f; -#line 22797 "" +#line 22791 "" i__2 = all_1.nv; -#line 22797 "" +#line 22791 "" for (all_1.iv = 1; all_1.iv <= i__2; ++all_1.iv) { -#line 22798 "" +#line 22792 "" i__7 = commvl_1.nvmx[all_1.iv - 1]; -#line 22798 "" +#line 22792 "" for (kv = 1; kv <= i__7; ++kv) { -#line 22799 "" +#line 22793 "" commvl_1.ivx = commvl_1.ivmx[all_1.iv + kv * 24 - 25]; -#line 22800 "" +#line 22794 "" if (bit_test(all_1.irest[commvl_1.ivx + all_1.nn[commvl_1.ivx - 1] * 24 - 25],18)) { -#line 22801 "" +#line 22795 "" ++comudsp_1.nudoff[commvl_1.ivx - 1]; /* Computing MAX */ -#line 22802 "" +#line 22796 "" r__1 = hardb4, r__2 = comudsp_1.udoff[commvl_1.ivx + comudsp_1.nudoff[commvl_1.ivx - 1] * 24 - 25]; -#line 22802 "" +#line 22796 "" hardb4 = dmax(r__1,r__2); -#line 22803 "" +#line 22797 "" } -#line 22804 "" +#line 22798 "" /* L35: */ -#line 22804 "" +#line 22798 "" } -#line 22804 "" +#line 22798 "" } -#line 22805 "" +#line 22799 "" if (hardb4 > 0.f) { -#line 22806 "" +#line 22800 "" if (comlast_1.islast) { -#line 22806 "" - s_wsfe(&io___1585); +#line 22800 "" + s_wsfe(&io___1580); /* Writing concatenation */ -#line 22806 "" +#line 22800 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22806 "" +#line 22800 "" i__6[1] = 10, a__4[1] = "hardspace{"; -#line 22806 "" +#line 22800 "" s_cat(ch__15, a__4, i__6, &c__2, (ftnlen)11); -#line 22806 "" +#line 22800 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 22806 "" +#line 22800 "" do_fio(&c__1, (char *)&hardb4, (ftnlen)sizeof(real)); -#line 22806 "" +#line 22800 "" do_fio(&c__1, "pt}%", (ftnlen)4); -#line 22806 "" +#line 22800 "" e_wsfe(); -#line 22806 "" +#line 22800 "" } /* This was causing an incorrect poe in an example, which did not affect main */ /* spacing, but did cause an extra accidental space to be too small */ -#line 22812 "" +#line 22806 "" comask_1.fixednew -= hardb4; -#line 22813 "" +#line 22807 "" } -#line 22814 "" +#line 22808 "" /* L10: */ -#line 22814 "" +#line 22808 "" } -#line 22815 "" +#line 22809 "" all_1.firstgulp = FALSE_; -#line 22816 "" +#line 22810 "" all_1.lenb0 = 0; -#line 22817 "" +#line 22811 "" goto L30; -#line 22818 "" +#line 22812 "" L40: -#line 22818 "" +#line 22812 "" cl__1.cerr = 0; -#line 22818 "" +#line 22812 "" cl__1.cunit = 12; -#line 22818 "" +#line 22812 "" cl__1.csta = 0; -#line 22818 "" +#line 22812 "" f_clos(&cl__1); -#line 22819 "" +#line 22813 "" cl__1.cerr = 0; -#line 22819 "" +#line 22813 "" cl__1.cunit = 13; -#line 22819 "" +#line 22813 "" cl__1.csta = 0; -#line 22819 "" +#line 22813 "" f_clos(&cl__1); -#line 22820 "" +#line 22814 "" inbuff_1.ilbuf = 1; -#line 22821 "" +#line 22815 "" inbuff_1.ipbuf = 0; -#line 22822 "" +#line 22816 "" wdpt = comtop_1.widthpt; -#line 22823 "" +#line 22817 "" if (all_1.iline == 1) { -#line 22823 "" +#line 22817 "" wdpt = comtop_1.widthpt * (1 - comtop_1.fracindent); -#line 22823 "" +#line 22817 "" } -#line 22824 "" +#line 22818 "" poe = (wdpt - fsyst * all_1.musicsize - nbarss * .4f - comask_1.fixednew) / (elsktot + comask_1.fbar * nbarss - comask_1.scaldold); -#line 22826 "" +#line 22820 "" poevec[nsyst] = poe; -#line 22827 "" +#line 22821 "" if (! comlast_1.islast) { -#line 22828 "" +#line 22822 "" cl__1.cerr = 0; -#line 22828 "" +#line 22822 "" cl__1.cunit = 11; -#line 22828 "" +#line 22822 "" cl__1.csta = 0; -#line 22828 "" +#line 22822 "" f_clos(&cl__1); -#line 22829 "" +#line 22823 "" cl__1.cerr = 0; -#line 22829 "" +#line 22823 "" cl__1.cunit = 16; -#line 22829 "" +#line 22823 "" cl__1.csta = 0; -#line 22829 "" +#line 22823 "" f_clos(&cl__1); -#line 22830 "" +#line 22824 "" if (all_1.figbass) { -#line 22830 "" +#line 22824 "" cl__1.cerr = 0; -#line 22830 "" +#line 22824 "" cl__1.cunit = 14; -#line 22830 "" +#line 22824 "" cl__1.csta = 0; -#line 22830 "" +#line 22824 "" f_clos(&cl__1); -#line 22830 "" +#line 22824 "" } -#line 22831 "" +#line 22825 "" return 0; -#line 22832 "" +#line 22826 "" } -#line 22833 "" +#line 22827 "" i__1 = comas2_1.nasksys; -#line 22833 "" +#line 22827 "" for (ia = 1; ia <= i__1; ++ia) { -#line 22834 "" +#line 22828 "" ++comas3_1.iask; -#line 22835 "" +#line 22829 "" comas3_1.ask[comas3_1.iask - 1] = (comas2_1.wasksys[ia - 1] / poe - ( r__1 = comas2_1.elasksys[ia - 1], dabs(r__1))) / comshort_1.poefa[all_1.iline - 1]; -#line 22836 "" +#line 22830 "" if (comas2_1.elasksys[ia - 1] > 0.f) { -#line 22836 "" +#line 22830 "" comas3_1.ask[comas3_1.iask - 1] = r_dim(&comas3_1.ask[ comas3_1.iask - 1], &c_b1008); -#line 22836 "" +#line 22830 "" } -#line 22837 "" +#line 22831 "" /* L19: */ -#line 22837 "" +#line 22831 "" } -#line 22838 "" +#line 22832 "" i__1 = nhssys; -#line 22838 "" +#line 22832 "" for (ia = 1; ia <= i__1; ++ia) { -#line 22839 "" +#line 22833 "" ++nhstot; /* Computing MAX */ -#line 22840 "" +#line 22834 "" r__1 = hpts[ia - 1] - hesk[ia - 1] * poe; -#line 22840 "" +#line 22834 "" comhsp_1.hpttot[nhstot - 1] = dmax(r__1,0.f); -#line 22841 "" +#line 22835 "" /* L26: */ -#line 22841 "" +#line 22835 "" } -#line 22842 "" +#line 22836 "" if (comlast_1.islast && onvolt) { -#line 22842 "" - s_wsfe(&io___1586); +#line 22836 "" + s_wsfe(&io___1581); /* Writing concatenation */ -#line 22842 "" +#line 22836 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22842 "" +#line 22836 "" i__6[1] = 11, a__4[1] = "endvoltabox"; -#line 22842 "" +#line 22836 "" s_cat(ch__14, a__4, i__6, &c__2, (ftnlen)12); -#line 22842 "" +#line 22836 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22842 "" +#line 22836 "" e_wsfe(); -#line 22842 "" +#line 22836 "" } -#line 22844 "" +#line 22838 "" s_copy(rendq, "% ", (ftnlen)3, (ftnlen)3); -#line 22845 "" +#line 22839 "" if (comshort_1.ishort != 0) { -#line 22845 "" +#line 22839 "" s_copy(rendq, "}}%", (ftnlen)3, (ftnlen)3); -#line 22845 "" +#line 22839 "" } -#line 22846 "" +#line 22840 "" if (*(unsigned char *)comget_1.rptfq2 != 'E') { /* Terminal repeat. Right or double? */ -#line 22850 "" +#line 22844 "" if (*(unsigned char *)comget_1.rptfq2 == 'r') { -#line 22851 "" +#line 22845 "" if (comlast_1.islast) { -#line 22851 "" - s_wsfe(&io___1588); +#line 22845 "" + s_wsfe(&io___1583); /* Writing concatenation */ -#line 22851 "" +#line 22845 "" i__12[0] = 1, a__9[0] = all_1.sq; -#line 22851 "" +#line 22845 "" i__12[1] = 14, a__9[1] = "setrightrepeat"; -#line 22851 "" +#line 22845 "" i__12[2] = 1, a__9[2] = all_1.sq; -#line 22851 "" +#line 22845 "" i__12[3] = 8, a__9[3] = "endpiece"; -#line 22851 "" +#line 22845 "" i__12[4] = 3, a__9[4] = rendq; -#line 22851 "" +#line 22845 "" s_cat(ch__5, a__9, i__12, &c__5, (ftnlen)27); -#line 22851 "" +#line 22845 "" do_fio(&c__1, ch__5, (ftnlen)27); -#line 22851 "" +#line 22845 "" e_wsfe(); -#line 22851 "" +#line 22845 "" } -#line 22853 "" +#line 22847 "" } else if (*(unsigned char *)comget_1.rptfq2 == 'd') { -#line 22854 "" +#line 22848 "" if (comlast_1.islast) { -#line 22854 "" - s_wsfe(&io___1589); +#line 22848 "" + s_wsfe(&io___1584); /* Writing concatenation */ -#line 22854 "" +#line 22848 "" i__12[0] = 1, a__9[0] = all_1.sq; -#line 22854 "" +#line 22848 "" i__12[1] = 12, a__9[1] = "setdoublebar"; -#line 22854 "" +#line 22848 "" i__12[2] = 1, a__9[2] = all_1.sq; -#line 22854 "" +#line 22848 "" i__12[3] = 8, a__9[3] = "endpiece"; -#line 22854 "" +#line 22848 "" i__12[4] = 3, a__9[4] = rendq; -#line 22854 "" +#line 22848 "" s_cat(ch__42, a__9, i__12, &c__5, (ftnlen)25); -#line 22854 "" +#line 22848 "" do_fio(&c__1, ch__42, (ftnlen)25); -#line 22854 "" +#line 22848 "" e_wsfe(); -#line 22854 "" +#line 22848 "" } -#line 22856 "" +#line 22850 "" } else if (*(unsigned char *)comget_1.rptfq2 == 'b') { -#line 22857 "" +#line 22851 "" if (comlast_1.islast) { -#line 22857 "" - s_wsfe(&io___1590); +#line 22851 "" + s_wsfe(&io___1585); /* Writing concatenation */ -#line 22857 "" +#line 22851 "" i__8[0] = 1, a__5[0] = all_1.sq; -#line 22857 "" +#line 22851 "" i__8[1] = 8, a__5[1] = "endpiece"; -#line 22857 "" +#line 22851 "" i__8[2] = 3, a__5[2] = rendq; -#line 22857 "" +#line 22851 "" s_cat(ch__14, a__5, i__8, &c__3, (ftnlen)12); -#line 22857 "" +#line 22851 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22857 "" +#line 22851 "" e_wsfe(); -#line 22857 "" +#line 22851 "" } -#line 22858 "" +#line 22852 "" } else if (*(unsigned char *)comget_1.rptfq2 == 'z') { -#line 22859 "" +#line 22853 "" if (comlast_1.islast) { -#line 22859 "" - s_wsfe(&io___1591); +#line 22853 "" + s_wsfe(&io___1586); /* Writing concatenation */ -#line 22859 "" +#line 22853 "" i__12[0] = 1, a__9[0] = all_1.sq; -#line 22859 "" +#line 22853 "" i__12[1] = 12, a__9[1] = "setzalaligne"; -#line 22859 "" +#line 22853 "" i__12[2] = 1, a__9[2] = all_1.sq; -#line 22859 "" +#line 22853 "" i__12[3] = 8, a__9[3] = "Endpiece"; -#line 22859 "" +#line 22853 "" i__12[4] = 3, a__9[4] = rendq; -#line 22859 "" +#line 22853 "" s_cat(ch__42, a__9, i__12, &c__5, (ftnlen)25); -#line 22859 "" +#line 22853 "" do_fio(&c__1, ch__42, (ftnlen)25); -#line 22859 "" +#line 22853 "" e_wsfe(); -#line 22859 "" +#line 22853 "" } -#line 22861 "" +#line 22855 "" } else { -#line 22862 "" - s_wsle(&io___1592); -#line 22862 "" +#line 22856 "" + s_wsle(&io___1587); +#line 22856 "" e_wsle(); -#line 22863 "" - s_wsle(&io___1593); -#line 22863 "" +#line 22857 "" + s_wsle(&io___1588); +#line 22857 "" do_lio(&c__9, &c__1, "R? , ? not \"d\",\"r\",or\"b\",\"z\"; rptf"\ "q2:", (ftnlen)37); -#line 22863 "" +#line 22857 "" do_lio(&c__9, &c__1, comget_1.rptfq2, (ftnlen)1); -#line 22863 "" +#line 22857 "" e_wsle(); -#line 22864 "" - s_wsle(&io___1594); -#line 22864 "" +#line 22858 "" + s_wsle(&io___1589); +#line 22858 "" do_lio(&c__9, &c__1, "R? , ? not \"d\",\"r\",or\"b\",\"z\"; rptf"\ "q2:", (ftnlen)37); -#line 22864 "" +#line 22858 "" do_lio(&c__9, &c__1, comget_1.rptfq2, (ftnlen)1); -#line 22864 "" +#line 22858 "" e_wsle(); -#line 22865 "" +#line 22859 "" if (comlast_1.islast) { -#line 22865 "" - s_wsfe(&io___1595); +#line 22859 "" + s_wsfe(&io___1590); /* Writing concatenation */ -#line 22865 "" +#line 22859 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22865 "" +#line 22859 "" i__6[1] = 8, a__4[1] = "Endpiece"; -#line 22865 "" +#line 22859 "" s_cat(ch__18, a__4, i__6, &c__2, (ftnlen)9); -#line 22865 "" +#line 22859 "" do_fio(&c__1, ch__18, (ftnlen)9); -#line 22865 "" +#line 22859 "" e_wsfe(); -#line 22865 "" +#line 22859 "" } -#line 22866 "" +#line 22860 "" } -#line 22867 "" +#line 22861 "" } else { -#line 22868 "" - s_wsfe(&io___1596); +#line 22862 "" + s_wsfe(&io___1591); /* Writing concatenation */ -#line 22868 "" +#line 22862 "" i__8[0] = 1, a__5[0] = all_1.sq; -#line 22868 "" +#line 22862 "" i__8[1] = 8, a__5[1] = "Endpiece"; -#line 22868 "" +#line 22862 "" i__8[2] = 3, a__5[2] = rendq; -#line 22868 "" +#line 22862 "" s_cat(ch__14, a__5, i__8, &c__3, (ftnlen)12); -#line 22868 "" +#line 22862 "" do_fio(&c__1, ch__14, (ftnlen)12); -#line 22868 "" +#line 22862 "" e_wsfe(); -#line 22869 "" +#line 22863 "" } -#line 22870 "" +#line 22864 "" if (! vshrink) { -#line 22871 "" +#line 22865 "" if (comlast_1.islast && combottop_1.bottopgap) { -#line 22872 "" +#line 22866 "" if (dabs(combottop_1.botamt) > 1e-6f) { -#line 22873 "" +#line 22867 "" if (combottop_1.botamt > 9.95f) { -#line 22874 "" +#line 22868 "" s_copy(fmtq, "(a,f4.1,a)", (ftnlen)24, (ftnlen)10); -#line 22875 "" +#line 22869 "" } else if (combottop_1.botamt > 0.f) { -#line 22876 "" +#line 22870 "" s_copy(fmtq, "(a,f3.1,a)", (ftnlen)24, (ftnlen)10); -#line 22877 "" +#line 22871 "" } else if (combottop_1.botamt > -9.95f) { -#line 22878 "" +#line 22872 "" s_copy(fmtq, "(a,f4.1,a)", (ftnlen)24, (ftnlen)10); -#line 22879 "" +#line 22873 "" } else { -#line 22880 "" +#line 22874 "" s_copy(fmtq, "(a,f5.1,a)", (ftnlen)24, (ftnlen)10); -#line 22881 "" +#line 22875 "" } -#line 22882 "" - s_wsfe(&io___1597); +#line 22876 "" + s_wsfe(&io___1592); /* Writing concatenation */ -#line 22882 "" +#line 22876 "" i__5[0] = 1, a__3[0] = all_1.sq; -#line 22882 "" +#line 22876 "" i__5[1] = 4, a__3[1] = "null"; -#line 22882 "" +#line 22876 "" i__5[2] = 1, a__3[2] = all_1.sq; -#line 22882 "" +#line 22876 "" i__5[3] = 5, a__3[3] = "vskip"; -#line 22882 "" +#line 22876 "" s_cat(ch__15, a__3, i__5, &c__4, (ftnlen)11); -#line 22882 "" +#line 22876 "" do_fio(&c__1, ch__15, (ftnlen)11); -#line 22882 "" +#line 22876 "" do_fio(&c__1, (char *)&combottop_1.botamt, (ftnlen)sizeof( real)); /* Writing concatenation */ -#line 22882 "" +#line 22876 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22882 "" +#line 22876 "" i__6[1] = 10, a__4[1] = "Internote%"; -#line 22882 "" +#line 22876 "" s_cat(ch__32, a__4, i__6, &c__2, (ftnlen)11); -#line 22882 "" +#line 22876 "" do_fio(&c__1, ch__32, (ftnlen)11); -#line 22882 "" +#line 22876 "" e_wsfe(); -#line 22884 "" +#line 22878 "" } -#line 22885 "" +#line 22879 "" } -#line 22886 "" +#line 22880 "" xnstbot = xnsttop[comnotes_1.ipage - 1] * etabot / etatop; -#line 22887 "" +#line 22881 "" if (xnstbot < 9.95f) { -#line 22888 "" +#line 22882 "" s_copy(fmtq, "(a,f3.1,a)", (ftnlen)24, (ftnlen)10); -#line 22889 "" +#line 22883 "" } else { -#line 22890 "" +#line 22884 "" s_copy(fmtq, "(a,f4.1,a)", (ftnlen)24, (ftnlen)10); -#line 22891 "" +#line 22885 "" } -#line 22892 "" +#line 22886 "" if (comlast_1.islast) { -#line 22892 "" - s_wsfe(&io___1598); +#line 22886 "" + s_wsfe(&io___1593); /* Writing concatenation */ -#line 22892 "" +#line 22886 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22892 "" +#line 22886 "" i__6[1] = 5, a__4[1] = "vskip"; -#line 22892 "" +#line 22886 "" s_cat(ch__25, a__4, i__6, &c__2, (ftnlen)6); -#line 22892 "" +#line 22886 "" do_fio(&c__1, ch__25, (ftnlen)6); -#line 22892 "" +#line 22886 "" do_fio(&c__1, (char *)&xnstbot, (ftnlen)sizeof(real)); /* Writing concatenation */ -#line 22892 "" +#line 22886 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22892 "" +#line 22886 "" i__4[1] = 10, a__2[1] = "Interligne"; -#line 22892 "" +#line 22886 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22892 "" +#line 22886 "" i__4[3] = 5, a__2[3] = "eject"; -#line 22892 "" +#line 22886 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22892 "" +#line 22886 "" i__4[5] = 9, a__2[5] = "endmuflex"; -#line 22892 "" +#line 22886 "" s_cat(ch__5, a__2, i__4, &c__6, (ftnlen)27); -#line 22892 "" +#line 22886 "" do_fio(&c__1, ch__5, (ftnlen)27); -#line 22892 "" +#line 22886 "" e_wsfe(); -#line 22892 "" +#line 22886 "" } -#line 22894 "" +#line 22888 "" if (comlast_1.islast) { -#line 22894 "" - s_wsfe(&io___1599); +#line 22888 "" + s_wsfe(&io___1594); /* Writing concatenation */ -#line 22894 "" +#line 22888 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22894 "" +#line 22888 "" i__6[1] = 3, a__4[1] = "bye"; -#line 22894 "" +#line 22888 "" s_cat(ch__21, a__4, i__6, &c__2, (ftnlen)4); -#line 22894 "" +#line 22888 "" do_fio(&c__1, ch__21, (ftnlen)4); -#line 22894 "" +#line 22888 "" e_wsfe(); -#line 22894 "" +#line 22888 "" } -#line 22895 "" +#line 22889 "" } else { -#line 22896 "" +#line 22890 "" if (comlast_1.islast) { -#line 22896 "" - s_wsfe(&io___1600); +#line 22890 "" + s_wsfe(&io___1595); /* Writing concatenation */ -#line 22896 "" +#line 22890 "" i__4[0] = 1, a__2[0] = all_1.sq; -#line 22896 "" +#line 22890 "" i__4[1] = 5, a__2[1] = "vfill"; -#line 22896 "" +#line 22890 "" i__4[2] = 1, a__2[2] = all_1.sq; -#line 22896 "" +#line 22890 "" i__4[3] = 5, a__2[3] = "eject"; -#line 22896 "" +#line 22890 "" i__4[4] = 1, a__2[4] = all_1.sq; -#line 22896 "" +#line 22890 "" i__4[5] = 9, a__2[5] = "endmuflex"; -#line 22896 "" +#line 22890 "" s_cat(ch__43, a__2, i__4, &c__6, (ftnlen)22); -#line 22896 "" +#line 22890 "" do_fio(&c__1, ch__43, (ftnlen)22); -#line 22896 "" +#line 22890 "" e_wsfe(); -#line 22896 "" +#line 22890 "" } -#line 22898 "" +#line 22892 "" if (comlast_1.islast) { -#line 22898 "" - s_wsfe(&io___1601); +#line 22892 "" + s_wsfe(&io___1596); /* Writing concatenation */ -#line 22898 "" +#line 22892 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22898 "" +#line 22892 "" i__6[1] = 3, a__4[1] = "bye"; -#line 22898 "" +#line 22892 "" s_cat(ch__21, a__4, i__6, &c__2, (ftnlen)4); -#line 22898 "" +#line 22892 "" do_fio(&c__1, ch__21, (ftnlen)4); -#line 22898 "" +#line 22892 "" e_wsfe(); -#line 22898 "" +#line 22892 "" } -#line 22899 "" +#line 22893 "" } -#line 22900 "" +#line 22894 "" al__1.aerr = 0; -#line 22900 "" +#line 22894 "" al__1.aunit = 11; -#line 22900 "" +#line 22894 "" f_rew(&al__1); -#line 22901 "" +#line 22895 "" if (all_1.figbass) { -#line 22902 "" - s_wsfe(&io___1602); +#line 22896 "" + s_wsfe(&io___1597); /* Writing concatenation */ -#line 22902 "" +#line 22896 "" i__6[0] = 1, a__4[0] = all_1.sq; -#line 22902 "" +#line 22896 "" i__6[1] = 8, a__4[1] = "figdrop="; -#line 22902 "" +#line 22896 "" s_cat(ch__18, a__4, i__6, &c__2, (ftnlen)9); -#line 22902 "" +#line 22896 "" do_fio(&c__1, ch__18, (ftnlen)9); -#line 22902 "" +#line 22896 "" do_fio(&c__1, (char *)&all_1.ifigdr[(all_1.iline << 1) - 2], (ftnlen) sizeof(integer)); /* Writing concatenation */ -#line 22902 "" +#line 22896 "" i__8[0] = 1, a__5[0] = " "; -#line 22902 "" +#line 22896 "" i__8[1] = 1, a__5[1] = all_1.sq; -#line 22902 "" +#line 22896 "" i__8[2] = 8, a__5[2] = "figdtwo="; -#line 22902 "" +#line 22896 "" s_cat(ch__20, a__5, i__8, &c__3, (ftnlen)10); -#line 22902 "" +#line 22896 "" do_fio(&c__1, ch__20, (ftnlen)10); -#line 22902 "" +#line 22896 "" do_fio(&c__1, (char *)&all_1.ifigdr[(all_1.iline << 1) - 1], (ftnlen) sizeof(integer)); /* Writing concatenation */ -#line 22902 "" +#line 22896 "" i__11[0] = 1, a__8[0] = all_1.sq; -#line 22902 "" +#line 22896 "" i__11[1] = 4, a__8[1] = "fi}%"; -#line 22902 "" +#line 22896 "" s_cat(ch__40, a__8, i__11, &c__2, (ftnlen)5); -#line 22902 "" +#line 22896 "" do_fio(&c__1, ch__40, (ftnlen)5); -#line 22902 "" +#line 22896 "" e_wsfe(); -#line 22905 "" +#line 22899 "" al__1.aerr = 0; -#line 22905 "" +#line 22899 "" al__1.aunit = 14; -#line 22905 "" +#line 22899 "" f_rew(&al__1); -#line 22906 "" +#line 22900 "" } -#line 22907 "" +#line 22901 "" askfig_(pathnameq, &lpath, basenameq, &lbase, &all_1.figbass, &istype0, ( ftnlen)40, (ftnlen)44); -#line 22908 "" +#line 22902 "" if (! (*optimize)) { -#line 22909 "" - s_wsle(&io___1603); -#line 22909 "" +#line 22903 "" + s_wsle(&io___1598); +#line 22903 "" e_wsle(); -#line 22910 "" - s_wsle(&io___1604); +#line 22904 "" + s_wsle(&io___1599); /* Writing concatenation */ -#line 22910 "" +#line 22904 "" i__5[0] = 8, a__3[0] = "Writing "; -#line 22910 "" +#line 22904 "" i__5[1] = lpath, a__3[1] = pathnameq; -#line 22910 "" +#line 22904 "" i__5[2] = lbase, a__3[2] = basenameq; -#line 22910 "" +#line 22904 "" i__5[3] = 4, a__3[3] = ".tex"; -#line 22910 "" +#line 22904 "" s_cat(ch__44, a__3, i__5, &c__4, (ftnlen)96); -#line 22910 "" +#line 22904 "" do_lio(&c__9, &c__1, ch__44, lpath + 8 + lbase + 4); -#line 22910 "" +#line 22904 "" e_wsle(); -#line 22912 "" - s_wsle(&io___1605); -#line 22912 "" +#line 22906 "" + s_wsle(&io___1600); +#line 22906 "" do_lio(&c__9, &c__1, "Done with second PMX pass.", (ftnlen)26); -#line 22912 "" +#line 22906 "" e_wsle(); -#line 22913 "" - s_wsfe(&io___1606); +#line 22907 "" + s_wsfe(&io___1601); /* Writing concatenation */ -#line 22913 "" +#line 22907 "" i__5[0] = 8, a__3[0] = "Writing "; -#line 22913 "" +#line 22907 "" i__5[1] = lpath, a__3[1] = pathnameq; -#line 22913 "" +#line 22907 "" i__5[2] = lbase, a__3[2] = basenameq; -#line 22913 "" +#line 22907 "" i__5[3] = 4, a__3[3] = ".tex"; -#line 22913 "" +#line 22907 "" s_cat(ch__44, a__3, i__5, &c__4, (ftnlen)96); -#line 22913 "" +#line 22907 "" do_fio(&c__1, ch__44, lpath + 8 + lbase + 4); -#line 22913 "" +#line 22907 "" e_wsfe(); -#line 22915 "" - s_wsfe(&io___1607); -#line 22915 "" +#line 22909 "" + s_wsfe(&io___1602); +#line 22909 "" do_fio(&c__1, " Done with second PMX pass. Now run TeX", (ftnlen)40); -#line 22915 "" +#line 22909 "" e_wsfe(); -#line 22916 "" +#line 22910 "" } -#line 22917 "" +#line 22911 "" return 0; } /* pmxb_ */ @@ -56556,41 +56492,41 @@ L40: /* Compute avg. & norm. std. dev. of poe. */ -#line 22925 "" +#line 22919 "" /* Parameter adjustments */ -#line 22925 "" +#line 22919 "" --poe; -#line 22925 "" +#line 22919 "" -#line 22925 "" +#line 22919 "" /* Function Body */ -#line 22925 "" +#line 22919 "" sumx = 0.f; -#line 22926 "" +#line 22920 "" sumxx = 0.f; -#line 22927 "" +#line 22921 "" i__1 = *nsyst; -#line 22927 "" +#line 22921 "" for (isyst = 1; isyst <= i__1; ++isyst) { -#line 22928 "" +#line 22922 "" sumx += poe[isyst]; /* Computing 2nd power */ -#line 22929 "" +#line 22923 "" r__1 = poe[isyst]; -#line 22929 "" +#line 22923 "" sumxx += r__1 * r__1; -#line 22930 "" +#line 22924 "" /* L1: */ -#line 22930 "" +#line 22924 "" } /* Computing 2nd power */ -#line 22931 "" +#line 22925 "" r__1 = sumx; -#line 22931 "" +#line 22925 "" *devnorm = sqrt(*nsyst * sumxx / (r__1 * r__1) - 1); -#line 22932 "" +#line 22926 "" *poebar = sumx / *nsyst; -#line 22933 "" +#line 22927 "" return 0; } /* poestats_ */ @@ -56619,10 +56555,10 @@ L40: integer *); /* Fortran I/O blocks */ - static cilist io___1615 = { 0, 6, 0, 0, 0 }; - static cilist io___1616 = { 0, 6, 0, 0, 0 }; - static cilist io___1627 = { 0, 6, 0, 0, 0 }; - static cilist io___1628 = { 0, 6, 0, 0, 0 }; + static cilist io___1610 = { 0, 6, 0, 0, 0 }; + static cilist io___1611 = { 0, 6, 0, 0, 0 }; + static cilist io___1622 = { 0, 6, 0, 0, 0 }; + static cilist io___1623 = { 0, 6, 0, 0, 0 }; @@ -56637,308 +56573,308 @@ L40: /* levtabl(i)=0 if no note at this level, -1 if main note, icrd if chord note. */ /* icrdot(icrd)(27-29) sequence order of chord note if accid, top down */ -#line 22955 "" +#line 22949 "" for (i__ = 1; i__ <= 88; ++i__) { -#line 22956 "" +#line 22950 "" levtabl[i__ - 1] = 0; -#line 22957 "" +#line 22951 "" /* L11: */ -#line 22957 "" +#line 22951 "" } -#line 22958 "" +#line 22952 "" i__1 = comtrill_1.ncrd; -#line 22958 "" +#line 22952 "" for (comtrill_1.icrd1 = 1; comtrill_1.icrd1 <= i__1; ++comtrill_1.icrd1) { -#line 22959 "" +#line 22953 "" ivx1 = (15 & lbit_shift(comtrill_1.icrdat[comtrill_1.icrd1 - 1], ( ftnlen)-8)) + (igetbits_(&comtrill_1.icrdat[comtrill_1.icrd1 - 1], &c__1, &c__28) << 4); -#line 22961 "" +#line 22955 "" ip1 = 255 & comtrill_1.icrdat[comtrill_1.icrd1 - 1]; -#line 22962 "" +#line 22956 "" if (ip1 == *ip && ivx1 == *ivx) { -#line 22962 "" +#line 22956 "" goto L2; -#line 22962 "" +#line 22956 "" } -#line 22963 "" +#line 22957 "" /* L1: */ -#line 22963 "" +#line 22957 "" } -#line 22964 "" - s_wsle(&io___1615); -#line 22964 "" +#line 22958 "" + s_wsle(&io___1610); +#line 22958 "" e_wsle(); -#line 22965 "" - s_wsle(&io___1616); -#line 22965 "" +#line 22959 "" + s_wsle(&io___1611); +#line 22959 "" do_lio(&c__9, &c__1, "Cannot find first chord note in precrd. Send sourc"\ "e to Dr. Don!", (ftnlen)63); -#line 22965 "" +#line 22959 "" e_wsle(); -#line 22967 "" +#line 22961 "" stop1_(); -#line 22968 "" +#line 22962 "" L2: -#line 22969 "" +#line 22963 "" comtrill_1.maxlev = *nolevm; -#line 22970 "" +#line 22964 "" comtrill_1.minlev = *nolevm; -#line 22971 "" +#line 22965 "" levtabl[*nolevm - 1] = -1; -#line 22972 "" +#line 22966 "" is2nd = FALSE_; -#line 22973 "" +#line 22967 "" naccid = 0; -#line 22974 "" +#line 22968 "" levmaxacc = -100; -#line 22975 "" +#line 22969 "" levminacc = 1000; /* Check 1st 3 bits of nacc for accid on main note of chord. */ -#line 22979 "" +#line 22973 "" if ((7 & *nacc) > 0) { -#line 22980 "" +#line 22974 "" naccid = 1; /* Start list of notes with accid's. There will be naccid of them. kicrd=0 if main, */ /* otherwise icrd value for note with accidental. */ -#line 22985 "" +#line 22979 "" kicrd[0] = 0; -#line 22986 "" +#line 22980 "" levmaxacc = *nolevm; -#line 22987 "" +#line 22981 "" levminacc = *nolevm; /* Start the level-ranking */ -#line 22991 "" +#line 22985 "" icrdot0 = 1; -#line 22992 "" +#line 22986 "" } -#line 22993 "" +#line 22987 "" i__1 = comtrill_1.ncrd; -#line 22993 "" +#line 22987 "" for (comtrill_1.icrd2 = comtrill_1.icrd1; comtrill_1.icrd2 <= i__1; ++comtrill_1.icrd2) { -#line 22994 "" +#line 22988 "" nolev = igetbits_(&comtrill_1.icrdat[comtrill_1.icrd2 - 1], &c__7, & c__12); -#line 22995 "" +#line 22989 "" levtabl[nolev - 1] = comtrill_1.icrd2; -#line 22996 "" +#line 22990 "" comtrill_1.maxlev = max(comtrill_1.maxlev,nolev); -#line 22997 "" +#line 22991 "" comtrill_1.minlev = min(comtrill_1.minlev,nolev); /* Check for accidental */ -#line 23001 "" +#line 22995 "" if (bit_test(comtrill_1.icrdat[comtrill_1.icrd2 - 1],19)) { -#line 23002 "" +#line 22996 "" ++naccid; -#line 23003 "" +#line 22997 "" levmaxacc = max(levmaxacc,nolev); -#line 23004 "" +#line 22998 "" levminacc = min(levminacc,nolev); /* Add this icrd to list of values for notes with accid's. */ -#line 23008 "" +#line 23002 "" kicrd[naccid - 1] = comtrill_1.icrd2; -#line 23009 "" +#line 23003 "" if (! bit_test(*nacc,28)) { /* Order not forced, so get the level-ranking, top down */ -#line 23013 "" +#line 23007 "" iorder = 1; -#line 23014 "" +#line 23008 "" i__2 = naccid - 1; -#line 23014 "" +#line 23008 "" for (iaccid = 1; iaccid <= i__2; ++iaccid) { -#line 23015 "" +#line 23009 "" if (kicrd[iaccid - 1] == 0) { -#line 23016 "" +#line 23010 "" if (*nolevm > nolev) { -#line 23017 "" +#line 23011 "" ++iorder; -#line 23018 "" +#line 23012 "" } else { -#line 23019 "" +#line 23013 "" ++icrdot0; -#line 23020 "" +#line 23014 "" } -#line 23021 "" +#line 23015 "" } else { -#line 23022 "" +#line 23016 "" if (igetbits_(&comtrill_1.icrdat[kicrd[iaccid - 1] - 1], &c__7, &c__12) > nolev) { -#line 23024 "" +#line 23018 "" ++iorder; -#line 23025 "" +#line 23019 "" } else { -#line 23026 "" +#line 23020 "" iold = igetbits_(&comtrill_1.icrdot[kicrd[iaccid - 1] - 1], &c__3, &c__27); -#line 23027 "" +#line 23021 "" i__3 = iold + 1; -#line 23027 "" +#line 23021 "" setbits_(&comtrill_1.icrdot[kicrd[iaccid - 1] - 1] , &c__3, &c__27, &i__3); -#line 23028 "" +#line 23022 "" } -#line 23029 "" +#line 23023 "" } -#line 23030 "" +#line 23024 "" /* L12: */ -#line 23030 "" +#line 23024 "" } -#line 23031 "" +#line 23025 "" setbits_(&comtrill_1.icrdot[comtrill_1.icrd2 - 1], &c__3, & c__27, &iorder); -#line 23032 "" +#line 23026 "" } -#line 23033 "" +#line 23027 "" } /* Exit loop if last note in this chord */ -#line 23037 "" +#line 23031 "" if (comtrill_1.icrd2 == comtrill_1.ncrd) { -#line 23037 "" +#line 23031 "" goto L4; -#line 23037 "" +#line 23031 "" } -#line 23038 "" +#line 23032 "" if (igetbits_(&comtrill_1.icrdat[comtrill_1.icrd2], &c__8, &c__0) != * ip || igetbits_(&comtrill_1.icrdat[comtrill_1.icrd2], &c__4, & c__8) + (igetbits_(&comtrill_1.icrdat[comtrill_1.icrd2], & c__1, &c__28) << 4) != *ivx) { -#line 23038 "" +#line 23032 "" goto L4; -#line 23038 "" +#line 23032 "" } /* * igetbits(icrdat(icrd2+1),4,8) .ne. ivx) go to 4 */ -#line 23042 "" +#line 23036 "" /* L3: */ -#line 23042 "" +#line 23036 "" } -#line 23043 "" - s_wsle(&io___1627); -#line 23043 "" +#line 23037 "" + s_wsle(&io___1622); +#line 23037 "" e_wsle(); -#line 23044 "" - s_wsle(&io___1628); -#line 23044 "" +#line 23038 "" + s_wsle(&io___1623); +#line 23038 "" do_lio(&c__9, &c__1, "Failed to find last chord note. Send source to Dr."\ " Don!", (ftnlen)55); -#line 23044 "" +#line 23038 "" e_wsle(); -#line 23045 "" +#line 23039 "" stop1_(); -#line 23046 "" +#line 23040 "" L4: /* Now icrd1, icrd2 define range of icrd for this chord. */ /* Bypass autos-shifting if any manual shifts are present */ -#line 23052 "" +#line 23046 "" if (bit_test(*irest,20) || bit_test(*irest,27)) { -#line 23052 "" +#line 23046 "" goto L10; -#line 23052 "" +#line 23046 "" } /* Check for 2nds */ -#line 23056 "" +#line 23050 "" for (ilev = 1; ilev <= 87; ++ilev) { -#line 23057 "" +#line 23051 "" if (levtabl[ilev - 1] != 0 && levtabl[ilev] != 0) { /* There is at least one 2nd.. */ -#line 23061 "" +#line 23055 "" if (*(unsigned char *)udq == 'u') { /* Upstem. Start with 2nd just found and go up, rt-shifting upper */ /* member of each pair */ -#line 23066 "" +#line 23060 "" ile = ilev; /* Set main-note flag for ANY right-shift */ -#line 23070 "" +#line 23064 "" *irest = bit_set(*irest,20); -#line 23071 "" +#line 23065 "" L7: -#line 23072 "" +#line 23066 "" if (levtabl[ile] < 0) { /* Upstem, & upper member is main so must be rt-shifted. This would move */ /* stem too, so we rt-shift the OTHER note, and set flag that signals */ /* to interchange pitches just when these two notes are placed. */ -#line 23078 "" +#line 23072 "" *nacc = bit_set(*nacc,30); -#line 23079 "" +#line 23073 "" comtrill_1.icrdat[levtabl[ile - 1] - 1] = bit_set( comtrill_1.icrdat[levtabl[ile - 1] - 1],24); -#line 23080 "" +#line 23074 "" } else { /* Upper member is chord note, must be rt-shifted */ -#line 23084 "" +#line 23078 "" comtrill_1.icrdat[levtabl[ile] - 1] = bit_set( comtrill_1.icrdat[levtabl[ile] - 1],24); -#line 23085 "" +#line 23079 "" } -#line 23086 "" +#line 23080 "" ++ile; -#line 23087 "" +#line 23081 "" L8: -#line 23088 "" +#line 23082 "" ++ile; -#line 23089 "" +#line 23083 "" if (ile < 87) { -#line 23090 "" +#line 23084 "" if (levtabl[ile - 1] != 0 && levtabl[ile] != 0) { -#line 23091 "" +#line 23085 "" goto L7; -#line 23092 "" +#line 23086 "" } else { -#line 23093 "" +#line 23087 "" goto L8; -#line 23094 "" +#line 23088 "" } -#line 23095 "" +#line 23089 "" } -#line 23096 "" +#line 23090 "" goto L10; -#line 23097 "" +#line 23091 "" } else { /* Downstem. Start at top and work down, left-shifting lower member of each pair. */ /* We know that lowest pair is at (ilev,ilev+1). */ -#line 23102 "" +#line 23096 "" ile = 88; /* Set main-note flag for ANY right-shift */ -#line 23106 "" +#line 23100 "" *irest = bit_set(*irest,27); -#line 23107 "" +#line 23101 "" L9: -#line 23108 "" +#line 23102 "" if (levtabl[ile - 1] != 0 && levtabl[ile - 2] != 0) { -#line 23109 "" +#line 23103 "" if (levtabl[ile - 2] < 0) { /* ipl = ibset(ipl,8) */ @@ -56946,57 +56882,57 @@ L9: /* stem too, so we left-shift the OTHER note, and set flag that signals */ /* to interchange pitches just when these two notes are placed. */ -#line 23116 "" +#line 23110 "" *nacc = bit_set(*nacc,31); -#line 23117 "" +#line 23111 "" comtrill_1.icrdat[levtabl[ile - 1] - 1] = bit_set( comtrill_1.icrdat[levtabl[ile - 1] - 1],23); -#line 23118 "" +#line 23112 "" } else { /* Lower member is chord note, must be shifted */ -#line 23122 "" +#line 23116 "" comtrill_1.icrdat[levtabl[ile - 2] - 1] = bit_set( comtrill_1.icrdat[levtabl[ile - 2] - 1],23); -#line 23124 "" +#line 23118 "" } -#line 23125 "" +#line 23119 "" --ile; -#line 23126 "" +#line 23120 "" } -#line 23127 "" +#line 23121 "" --ile; -#line 23128 "" +#line 23122 "" if (ile >= ilev + 1) { -#line 23128 "" +#line 23122 "" goto L9; -#line 23128 "" +#line 23122 "" } -#line 23129 "" +#line 23123 "" goto L10; -#line 23130 "" +#line 23124 "" } -#line 23131 "" +#line 23125 "" } -#line 23132 "" +#line 23126 "" /* L5: */ -#line 23132 "" +#line 23126 "" } -#line 23133 "" +#line 23127 "" L10: /* Done with 2nds, now do accid's. Call even if just one, in case left shifts. */ /* if (naccid .gt. 1) call crdaccs(nacc,ipl,irest,naccid, */ -#line 23138 "" +#line 23132 "" if (naccid >= 1) { -#line 23138 "" +#line 23132 "" crdaccs_(nacc, ipl, irest, &naccid, kicrd, nolevm, &levmaxacc, & levminacc, &icrdot0, twooftwo, icashft); -#line 23138 "" +#line 23132 "" } -#line 23140 "" +#line 23134 "" return 0; } /* precrd_ */ @@ -57008,26 +56944,26 @@ L10: e_wsfe(void); /* Fortran I/O blocks */ - static cilist io___1631 = { 0, 6, 0, 0, 0 }; - static cilist io___1632 = { 0, 15, 0, "(a)", 0 }; + static cilist io___1626 = { 0, 6, 0, 0, 0 }; + static cilist io___1627 = { 0, 15, 0, "(a)", 0 }; /* Send string to console and to log file */ -#line 23147 "" - s_wsle(&io___1631); -#line 23147 "" +#line 23141 "" + s_wsle(&io___1626); +#line 23141 "" do_lio(&c__9, &c__1, string, string_len); -#line 23147 "" +#line 23141 "" e_wsle(); -#line 23148 "" - s_wsfe(&io___1632); -#line 23148 "" +#line 23142 "" + s_wsfe(&io___1627); +#line 23142 "" do_fio(&c__1, string, string_len); -#line 23148 "" +#line 23142 "" e_wsfe(); -#line 23149 "" +#line 23143 "" return 0; } /* printl_ */ @@ -57065,9 +57001,9 @@ L10: static integer iivivx1; /* Fortran I/O blocks */ - static icilist io___1638 = { 0, notexq+9, 0, "(f3.1,a2)", 5, 1 }; - static cilist io___1644 = { 0, 6, 0, 0, 0 }; - static cilist io___1645 = { 0, 6, 0, 0, 0 }; + static icilist io___1633 = { 0, notexq+9, 0, "(f3.1,a2)", 5, 1 }; + static cilist io___1639 = { 0, 6, 0, 0, 0 }; + static cilist io___1640 = { 0, 6, 0, 0, 0 }; @@ -57075,320 +57011,320 @@ L10: /* Find which iarp, if any */ -#line 23170 "" +#line 23164 "" i__1 = comarp_1.narp; -#line 23170 "" +#line 23164 "" for (iarp = 1; iarp <= i__1; ++iarp) { -#line 23171 "" +#line 23165 "" if ((r__1 = *tnow - comarp_1.tar[iarp - 1], dabs(r__1)) < comtol_1.tol) { -#line 23171 "" +#line 23165 "" goto L2; -#line 23171 "" +#line 23165 "" } -#line 23172 "" +#line 23166 "" /* L1: */ -#line 23172 "" +#line 23166 "" } /* If here, this is the *first* call for this arp. */ -#line 23176 "" +#line 23170 "" ++comarp_1.narp; -#line 23177 "" +#line 23171 "" comarp_1.tar[comarp_1.narp - 1] = *tnow + comtol_1.tol * .5f; -#line 23178 "" +#line 23172 "" comarp_1.ivar1[comarp_1.narp - 1] = *iv; -#line 23179 "" +#line 23173 "" comarp_1.ipar1[comarp_1.narp - 1] = *ip; -#line 23180 "" +#line 23174 "" comarp_1.levar1[comarp_1.narp - 1] = *nolev; -#line 23181 "" +#line 23175 "" comarp_1.ncmar1[comarp_1.narp - 1] = *ncm; -#line 23182 "" +#line 23176 "" return 0; -#line 23183 "" +#line 23177 "" L2: /* If here, this is *second* call at this time, narp points to values from 1st. */ /* Check for shift. Set IsArpShift and iarps */ -#line 23189 "" +#line 23183 "" i__1 = comarpshift_1.numarpshift; -#line 23189 "" +#line 23183 "" for (iarps = 1; iarps <= i__1; ++iarps) { -#line 23190 "" +#line 23184 "" if (comarpshift_1.ivarpshift[iarps - 1] == comarp_1.ivar1[iarp - 1] && comarpshift_1.iparpshift[iarps - 1] == comarp_1.ipar1[iarp - 1]) { -#line 23192 "" +#line 23186 "" isarpshift = TRUE_; /* Writing concatenation */ -#line 23193 "" +#line 23187 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 23193 "" +#line 23187 "" i__2[0] = 1, a__1[0] = ch__1; -#line 23193 "" +#line 23187 "" i__2[1] = 8, a__1[1] = "loffset{"; -#line 23193 "" +#line 23187 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); -#line 23194 "" - s_wsfi(&io___1638); -#line 23194 "" +#line 23188 "" + s_wsfi(&io___1633); +#line 23188 "" do_fio(&c__1, (char *)&comarpshift_1.arpshift[iarps - 1], (ftnlen) sizeof(real)); -#line 23194 "" +#line 23188 "" do_fio(&c__1, "}{", (ftnlen)2); -#line 23194 "" +#line 23188 "" e_wsfi(); -#line 23195 "" +#line 23189 "" lnote = 14; -#line 23196 "" +#line 23190 "" goto L4; -#line 23197 "" +#line 23191 "" } -#line 23198 "" +#line 23192 "" /* L3: */ -#line 23198 "" +#line 23192 "" } -#line 23199 "" +#line 23193 "" isarpshift = FALSE_; -#line 23200 "" +#line 23194 "" lnote = 0; -#line 23201 "" +#line 23195 "" L4: -#line 23202 "" +#line 23196 "" if (*iv == comarp_1.ivar1[iarp - 1]) { /* Arp is in a single voice. */ /* Computing MIN */ -#line 23206 "" +#line 23200 "" i__1 = comarp_1.levar1[iarp - 1]; -#line 23206 "" +#line 23200 "" levbot = min(i__1,*nolev) - *ncm + 3; -#line 23207 "" +#line 23201 "" invert = (i__1 = comarp_1.levar1[iarp - 1] - *nolev, abs(i__1)) + 1; -#line 23208 "" +#line 23202 "" } else { /* Arp covers >1 voice. Lower voice has to be the first, upper is current and */ /* is where the symbol will be written. */ /* Check whether ivx's ivar1(iarp) & iv are in same staff */ -#line 23214 "" +#line 23208 "" for (iiv = 1; iiv <= 24; ++iiv) { -#line 23215 "" +#line 23209 "" if (commvl_1.ivmx[iiv - 1] == comarp_1.ivar1[iarp - 1] || commvl_1.nvmx[iiv - 1] == 2 && commvl_1.ivmx[iiv + 23] == comarp_1.ivar1[iarp - 1]) { -#line 23217 "" +#line 23211 "" iivivx1 = iiv; -#line 23218 "" +#line 23212 "" goto L6; -#line 23219 "" +#line 23213 "" } -#line 23220 "" +#line 23214 "" /* L5: */ -#line 23220 "" +#line 23214 "" } -#line 23221 "" - s_wsle(&io___1644); -#line 23221 "" +#line 23215 "" + s_wsle(&io___1639); +#line 23215 "" do_lio(&c__9, &c__1, "Screwup#1 in putarp", (ftnlen)19); -#line 23221 "" +#line 23215 "" e_wsle(); -#line 23222 "" +#line 23216 "" s_stop("", (ftnlen)0); -#line 23223 "" +#line 23217 "" L6: -#line 23224 "" +#line 23218 "" for (iiv = 1; iiv <= 24; ++iiv) { -#line 23225 "" +#line 23219 "" if (commvl_1.ivmx[iiv - 1] == *iv || commvl_1.nvmx[iiv - 1] == 2 && commvl_1.ivmx[iiv + 23] == *iv) { -#line 23225 "" +#line 23219 "" goto L8; -#line 23225 "" +#line 23219 "" } /* Found iv for both voices (iivivx1, iiv), done looking */ -#line 23230 "" +#line 23224 "" /* L7: */ -#line 23230 "" +#line 23224 "" } -#line 23231 "" - s_wsle(&io___1645); -#line 23231 "" +#line 23225 "" + s_wsle(&io___1640); +#line 23225 "" do_lio(&c__9, &c__1, "Screwup#2 in putarp", (ftnlen)19); -#line 23231 "" +#line 23225 "" e_wsle(); -#line 23232 "" +#line 23226 "" s_stop("", (ftnlen)0); -#line 23233 "" +#line 23227 "" L8: -#line 23234 "" +#line 23228 "" if (iivivx1 == iiv) { -#line 23235 "" +#line 23229 "" nstaffshift = 0; -#line 23236 "" +#line 23230 "" } else { -#line 23237 "" +#line 23231 "" r__1 = comarp_1.xinsnow * 2; -#line 23237 "" +#line 23231 "" nstaffshift = -i_nint(&r__1); -#line 23238 "" +#line 23232 "" } /* levbot = -nint(2*xinsnow)+3+levar1(iarp)-ncmar1(iarp) */ -#line 23240 "" +#line 23234 "" levbot = nstaffshift + 3 + comarp_1.levar1[iarp - 1] - comarp_1.ncmar1[iarp - 1]; -#line 23241 "" +#line 23235 "" invert = -levbot + 4 + *nolev - *ncm; -#line 23242 "" +#line 23236 "" } /* isym will be (1,2) if invert is (even,odd). If even, raise .5\internote */ -#line 23246 "" +#line 23240 "" isym = invert % 2 + 1; -#line 23247 "" +#line 23241 "" ilvert = (invert + 1) / 2; -#line 23248 "" +#line 23242 "" if (levbot >= 0 && levbot <= 9) { /* Single digit */ -#line 23252 "" +#line 23246 "" if (! isarpshift) { /* Writing concatenation */ -#line 23253 "" +#line 23247 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 23253 "" +#line 23247 "" i__3[0] = 1, a__2[0] = ch__1; -#line 23253 "" +#line 23247 "" i__3[1] = 8, a__2[1] = symq + (isym - 1 << 3); -#line 23253 "" +#line 23247 "" i__1 = levbot + 48; -#line 23253 "" +#line 23247 "" chax_(ch__2, (ftnlen)1, &i__1); -#line 23253 "" +#line 23247 "" i__3[2] = 1, a__2[2] = ch__2; -#line 23253 "" +#line 23247 "" s_cat(notexq, a__2, i__3, &c__3, (ftnlen)79); -#line 23254 "" +#line 23248 "" } else { /* Writing concatenation */ -#line 23255 "" +#line 23249 "" i__4[0] = lnote, a__3[0] = notexq; -#line 23255 "" +#line 23249 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 23255 "" +#line 23249 "" i__4[1] = 1, a__3[1] = ch__1; -#line 23255 "" +#line 23249 "" i__4[2] = 8, a__3[2] = symq + (isym - 1 << 3); -#line 23255 "" +#line 23249 "" i__1 = levbot + 48; -#line 23255 "" +#line 23249 "" chax_(ch__2, (ftnlen)1, &i__1); -#line 23255 "" +#line 23249 "" i__4[3] = 1, a__3[3] = ch__2; -#line 23255 "" +#line 23249 "" s_cat(notexq, a__3, i__4, &c__4, (ftnlen)79); -#line 23257 "" +#line 23251 "" } -#line 23258 "" +#line 23252 "" lnote += 10; -#line 23259 "" +#line 23253 "" } else { -#line 23260 "" +#line 23254 "" if (! isarpshift) { /* Writing concatenation */ -#line 23261 "" +#line 23255 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 23261 "" +#line 23255 "" i__3[0] = 1, a__2[0] = ch__1; -#line 23261 "" +#line 23255 "" i__3[1] = 8, a__2[1] = symq + (isym - 1 << 3); -#line 23261 "" +#line 23255 "" i__3[2] = 1, a__2[2] = "{"; -#line 23261 "" +#line 23255 "" s_cat(notexq, a__2, i__3, &c__3, (ftnlen)79); -#line 23262 "" +#line 23256 "" } else { /* Writing concatenation */ -#line 23263 "" +#line 23257 "" i__4[0] = lnote, a__3[0] = notexq; -#line 23263 "" +#line 23257 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 23263 "" +#line 23257 "" i__4[1] = 1, a__3[1] = ch__1; -#line 23263 "" +#line 23257 "" i__4[2] = 8, a__3[2] = symq + (isym - 1 << 3); -#line 23263 "" +#line 23257 "" i__4[3] = 1, a__3[3] = "{"; -#line 23263 "" +#line 23257 "" s_cat(notexq, a__3, i__4, &c__4, (ftnlen)79); -#line 23264 "" +#line 23258 "" } -#line 23265 "" +#line 23259 "" lnote += 10; -#line 23266 "" +#line 23260 "" if (levbot >= -9) { /* Need two spaces for number */ -#line 23270 "" +#line 23264 "" i__1 = lnote; -#line 23270 "" +#line 23264 "" ici__1.icierr = 0; -#line 23270 "" +#line 23264 "" ici__1.icirnum = 1; -#line 23270 "" +#line 23264 "" ici__1.icirlen = lnote + 3 - i__1; -#line 23270 "" +#line 23264 "" ici__1.iciunit = notexq + i__1; -#line 23270 "" +#line 23264 "" ici__1.icifmt = "(i2,a1)"; -#line 23270 "" +#line 23264 "" s_wsfi(&ici__1); -#line 23270 "" +#line 23264 "" do_fio(&c__1, (char *)&levbot, (ftnlen)sizeof(integer)); -#line 23270 "" +#line 23264 "" do_fio(&c__1, "}", (ftnlen)1); -#line 23270 "" +#line 23264 "" e_wsfi(); -#line 23271 "" +#line 23265 "" lnote += 3; -#line 23272 "" +#line 23266 "" } else { -#line 23273 "" +#line 23267 "" i__1 = lnote; -#line 23273 "" +#line 23267 "" ici__1.icierr = 0; -#line 23273 "" +#line 23267 "" ici__1.icirnum = 1; -#line 23273 "" +#line 23267 "" ici__1.icirlen = lnote + 4 - i__1; -#line 23273 "" +#line 23267 "" ici__1.iciunit = notexq + i__1; -#line 23273 "" +#line 23267 "" ici__1.icifmt = "(i3,a1)"; -#line 23273 "" +#line 23267 "" s_wsfi(&ici__1); -#line 23273 "" +#line 23267 "" do_fio(&c__1, (char *)&levbot, (ftnlen)sizeof(integer)); -#line 23273 "" +#line 23267 "" do_fio(&c__1, "}", (ftnlen)1); -#line 23273 "" +#line 23267 "" e_wsfi(); -#line 23274 "" +#line 23268 "" lnote += 4; -#line 23275 "" +#line 23269 "" } -#line 23276 "" +#line 23270 "" } /* if (ilvert .le. 9) then */ /* call addstr(notexq(1:lnote)//chax(48+ilvert),lnote+1, */ @@ -57397,70 +57333,70 @@ L8: /* write(notexq(lnote+1:lnote+4),'(a1,i2,a1)')'{',ilvert,'}' */ /* call addstr(notexq(1:lnote+4),lnote+4,soutq,lsout) */ /* end if */ -#line 23285 "" +#line 23279 "" if (ilvert > 9) { -#line 23286 "" +#line 23280 "" i__1 = lnote; -#line 23286 "" +#line 23280 "" ici__1.icierr = 0; -#line 23286 "" +#line 23280 "" ici__1.icirnum = 1; -#line 23286 "" +#line 23280 "" ici__1.icirlen = lnote + 4 - i__1; -#line 23286 "" +#line 23280 "" ici__1.iciunit = notexq + i__1; -#line 23286 "" +#line 23280 "" ici__1.icifmt = "(a1,i2,a1)"; -#line 23286 "" +#line 23280 "" s_wsfi(&ici__1); -#line 23286 "" +#line 23280 "" do_fio(&c__1, "{", (ftnlen)1); -#line 23286 "" +#line 23280 "" do_fio(&c__1, (char *)&ilvert, (ftnlen)sizeof(integer)); -#line 23286 "" +#line 23280 "" do_fio(&c__1, "}", (ftnlen)1); -#line 23286 "" +#line 23280 "" e_wsfi(); -#line 23287 "" +#line 23281 "" lnote += 4; -#line 23288 "" +#line 23282 "" } else { /* Writing concatenation */ -#line 23289 "" +#line 23283 "" i__2[0] = lnote, a__1[0] = notexq; -#line 23289 "" +#line 23283 "" i__1 = ilvert + 48; -#line 23289 "" +#line 23283 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 23289 "" +#line 23283 "" i__2[1] = 1, a__1[1] = ch__1; -#line 23289 "" +#line 23283 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); -#line 23290 "" +#line 23284 "" ++lnote; -#line 23291 "" +#line 23285 "" } -#line 23292 "" +#line 23286 "" if (isarpshift) { /* Writing concatenation */ -#line 23293 "" +#line 23287 "" i__2[0] = lnote, a__1[0] = notexq; -#line 23293 "" +#line 23287 "" i__2[1] = 1, a__1[1] = "}"; -#line 23293 "" +#line 23287 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); -#line 23294 "" +#line 23288 "" ++lnote; -#line 23295 "" +#line 23289 "" } -#line 23296 "" +#line 23290 "" addstr_(notexq, &lnote, soutq, lsout, lnote, (ftnlen)80); /* cancel out the stored time, to permit two arps at same time! */ -#line 23300 "" +#line 23294 "" comarp_1.tar[iarp - 1] = -1.f; -#line 23301 "" +#line 23295 "" return 0; } /* putarp_ */ @@ -57483,42 +57419,42 @@ L8: static char tag[129], fmtq[9]; /* Fortran I/O blocks */ - static icilist io___1651 = { 0, fmtq, 0, "(a5,i1,a3)", 9, 1 }; + static icilist io___1646 = { 0, fmtq, 0, "(a5,i1,a3)", 9, 1 }; -#line 23306 "" +#line 23300 "" if (*elask >= 0.f) { -#line 23307 "" +#line 23301 "" if (*elask < .995f) { -#line 23308 "" +#line 23302 "" lp = 3; -#line 23309 "" +#line 23303 "" } else if (*elask < 9.995f) { -#line 23310 "" +#line 23304 "" lp = 4; -#line 23311 "" +#line 23305 "" } else { -#line 23312 "" +#line 23306 "" lp = 5; -#line 23313 "" +#line 23307 "" } -#line 23314 "" - s_wsfi(&io___1651); -#line 23314 "" +#line 23308 "" + s_wsfi(&io___1646); +#line 23308 "" do_fio(&c__1, "(a2,f", (ftnlen)5); -#line 23314 "" +#line 23308 "" do_fio(&c__1, (char *)&lp, (ftnlen)sizeof(integer)); -#line 23314 "" +#line 23308 "" do_fio(&c__1, ".2)", (ftnlen)3); -#line 23314 "" +#line 23308 "" e_wsfi(); -#line 23315 "" +#line 23309 "" } else { -#line 23316 "" +#line 23310 "" lp = 5; -#line 23317 "" +#line 23311 "" s_copy(fmtq, "(a2,f5.1)", (ftnlen)9, (ftnlen)9); -#line 23318 "" +#line 23312 "" } /* Overwrite as follows: ...xyz*ask *lmnop... -> */ @@ -57526,40 +57462,40 @@ L8: /* ...xyz*ast{n.nn}*lmnop... */ /* ...xyz*ast{nn.nn}*lmnop... */ /* or for negative, ...xyz*ast{-nn.n}*lmnop... */ -#line 23325 "" +#line 23319 "" i__1 = *indxask + 8; -#line 23325 "" +#line 23319 "" s_copy(tag, outq + i__1, (ftnlen)129, 129 - i__1); -#line 23326 "" +#line 23320 "" i__1 = *indxask + 2; -#line 23326 "" +#line 23320 "" ici__1.icierr = 0; -#line 23326 "" +#line 23320 "" ici__1.icirnum = 1; -#line 23326 "" +#line 23320 "" ici__1.icirlen = 129 - i__1; -#line 23326 "" +#line 23320 "" ici__1.iciunit = outq + i__1; -#line 23326 "" +#line 23320 "" ici__1.icifmt = fmtq; -#line 23326 "" +#line 23320 "" s_wsfi(&ici__1); -#line 23326 "" +#line 23320 "" do_fio(&c__1, "t{", (ftnlen)2); -#line 23326 "" +#line 23320 "" do_fio(&c__1, (char *)&(*elask), (ftnlen)sizeof(real)); -#line 23326 "" +#line 23320 "" e_wsfi(); /* Writing concatenation */ -#line 23327 "" +#line 23321 "" i__2[0] = *indxask + 4 + lp, a__1[0] = outq; -#line 23327 "" +#line 23321 "" i__2[1] = 1, a__1[1] = "}"; -#line 23327 "" +#line 23321 "" i__2[2] = 129, a__1[2] = tag; -#line 23327 "" +#line 23321 "" s_cat(outq, a__1, i__2, &c__3, (ftnlen)129); -#line 23328 "" +#line 23322 "" return 0; } /* putast_ */ @@ -57587,247 +57523,247 @@ L8: extern /* Subroutine */ int printl_(char *, ftnlen); /* ivxip = ivx+16*ip */ -#line 23335 "" +#line 23329 "" i__1 = comcb_1.nbc; -#line 23335 "" +#line 23329 "" for (ibc = 1; ibc <= i__1; ++ibc) { /* if (ivxip .eq. iand(1023,ibcdata(ibc))) go to 2 */ /* if (ivx.eq.iand(15,ibcdata(ibc))+16*igetbits(ibcdata(ibc),1,28) */ /* * .and. ip.eq.iand(1008,ibcdata(ibc))) go to 2 */ -#line 23339 "" +#line 23333 "" ivxbc = (15 & comcb_1.ibcdata[ibc - 1]) + (igetbits_(&comcb_1.ibcdata[ ibc - 1], &c__1, &c__28) << 4); -#line 23340 "" +#line 23334 "" ipbc = igetbits_(&comcb_1.ibcdata[ibc - 1], &c__8, &c__4); -#line 23341 "" +#line 23335 "" if (*ivx == ivxbc && *ip == ipbc) { -#line 23341 "" +#line 23335 "" goto L2; -#line 23341 "" +#line 23335 "" } -#line 23342 "" +#line 23336 "" /* L1: */ -#line 23342 "" +#line 23336 "" } -#line 23343 "" +#line 23337 "" printl_("Error in putbc, Call Dr. Don", (ftnlen)28); -#line 23344 "" +#line 23338 "" s_stop("", (ftnlen)0); -#line 23345 "" +#line 23339 "" L2: -#line 23346 "" +#line 23340 "" if (bit_test(comcb_1.ibcdata[ibc - 1],27)) { -#line 23347 "" +#line 23341 "" *lnote = 8; -#line 23348 "" +#line 23342 "" s_copy(notexq, "\\pbreath", (ftnlen)79, (ftnlen)8); -#line 23349 "" +#line 23343 "" } else { -#line 23350 "" +#line 23344 "" *lnote = 9; -#line 23351 "" +#line 23345 "" s_copy(notexq, "\\pcaesura", (ftnlen)79, (ftnlen)9); -#line 23352 "" +#line 23346 "" } -#line 23353 "" +#line 23347 "" ivshft = igetbits_(&comcb_1.ibcdata[ibc - 1], &c__6, &c__13); /* ?? ivshft = igetbits(ibcdata(ibc),6,13)-32 */ -#line 23355 "" +#line 23349 "" if (ivshft > 0) { -#line 23355 "" +#line 23349 "" ivshft += -32; -#line 23355 "" +#line 23349 "" } -#line 23356 "" +#line 23350 "" if (ivshft < 0 || ivshft > 9) { /* Writing concatenation */ -#line 23357 "" +#line 23351 "" i__2[0] = *lnote, a__1[0] = notexq; -#line 23357 "" +#line 23351 "" i__2[1] = 1, a__1[1] = "{"; -#line 23357 "" +#line 23351 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); -#line 23358 "" +#line 23352 "" ++(*lnote); -#line 23359 "" +#line 23353 "" if (ivshft < -9) { -#line 23360 "" +#line 23354 "" i__1 = *lnote; -#line 23360 "" +#line 23354 "" ici__1.icierr = 0; -#line 23360 "" +#line 23354 "" ici__1.icirnum = 1; -#line 23360 "" +#line 23354 "" ici__1.icirlen = *lnote + 3 - i__1; -#line 23360 "" +#line 23354 "" ici__1.iciunit = notexq + i__1; -#line 23360 "" +#line 23354 "" ici__1.icifmt = "(i3)"; -#line 23360 "" +#line 23354 "" s_wsfi(&ici__1); -#line 23360 "" +#line 23354 "" do_fio(&c__1, (char *)&ivshft, (ftnlen)sizeof(integer)); -#line 23360 "" +#line 23354 "" e_wsfi(); -#line 23361 "" +#line 23355 "" *lnote += 3; -#line 23362 "" +#line 23356 "" } else { -#line 23363 "" +#line 23357 "" i__1 = *lnote; -#line 23363 "" +#line 23357 "" ici__1.icierr = 0; -#line 23363 "" +#line 23357 "" ici__1.icirnum = 1; -#line 23363 "" +#line 23357 "" ici__1.icirlen = *lnote + 2 - i__1; -#line 23363 "" +#line 23357 "" ici__1.iciunit = notexq + i__1; -#line 23363 "" +#line 23357 "" ici__1.icifmt = "(i2)"; -#line 23363 "" +#line 23357 "" s_wsfi(&ici__1); -#line 23363 "" +#line 23357 "" do_fio(&c__1, (char *)&ivshft, (ftnlen)sizeof(integer)); -#line 23363 "" +#line 23357 "" e_wsfi(); -#line 23364 "" +#line 23358 "" *lnote += 2; -#line 23365 "" +#line 23359 "" } /* Writing concatenation */ -#line 23366 "" +#line 23360 "" i__2[0] = *lnote, a__1[0] = notexq; -#line 23366 "" +#line 23360 "" i__2[1] = 1, a__1[1] = "}"; -#line 23366 "" +#line 23360 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); -#line 23367 "" +#line 23361 "" ++(*lnote); -#line 23368 "" +#line 23362 "" } else { /* Writing concatenation */ -#line 23369 "" +#line 23363 "" i__2[0] = *lnote, a__1[0] = notexq; -#line 23369 "" +#line 23363 "" *(unsigned char *)&ch__1[0] = ivshft + 48; -#line 23369 "" +#line 23363 "" i__2[1] = 1, a__1[1] = ch__1; -#line 23369 "" +#line 23363 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); -#line 23370 "" +#line 23364 "" ++(*lnote); -#line 23371 "" +#line 23365 "" } -#line 23372 "" +#line 23366 "" ihshft = igetbits_(&comcb_1.ibcdata[ibc - 1], &c__8, &c__19); -#line 23373 "" +#line 23367 "" if (ihshft == 0) { /* Writing concatenation */ -#line 23374 "" +#line 23368 "" i__2[0] = *lnote, a__1[0] = notexq; -#line 23374 "" +#line 23368 "" i__2[1] = 1, a__1[1] = "0"; -#line 23374 "" +#line 23368 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); -#line 23375 "" +#line 23369 "" ++(*lnote); -#line 23376 "" +#line 23370 "" } else { -#line 23377 "" +#line 23371 "" hshft = (ihshft - 128) * .1f; /* -12.8 9.95f) { -#line 23387 "" +#line 23381 "" i__1 = *lnote; -#line 23387 "" +#line 23381 "" ici__1.icierr = 0; -#line 23387 "" +#line 23381 "" ici__1.icirnum = 1; -#line 23387 "" +#line 23381 "" ici__1.icirlen = *lnote + 4 - i__1; -#line 23387 "" +#line 23381 "" ici__1.iciunit = notexq + i__1; -#line 23387 "" +#line 23381 "" ici__1.icifmt = "(f4.1)"; -#line 23387 "" +#line 23381 "" s_wsfi(&ici__1); -#line 23387 "" +#line 23381 "" do_fio(&c__1, (char *)&hshft, (ftnlen)sizeof(real)); -#line 23387 "" +#line 23381 "" e_wsfi(); -#line 23388 "" +#line 23382 "" *lnote += 4; -#line 23389 "" +#line 23383 "" } else { -#line 23390 "" +#line 23384 "" i__1 = *lnote; -#line 23390 "" +#line 23384 "" ici__1.icierr = 0; -#line 23390 "" +#line 23384 "" ici__1.icirnum = 1; -#line 23390 "" +#line 23384 "" ici__1.icirlen = *lnote + 3 - i__1; -#line 23390 "" +#line 23384 "" ici__1.iciunit = notexq + i__1; -#line 23390 "" +#line 23384 "" ici__1.icifmt = "(f3.1)"; -#line 23390 "" +#line 23384 "" s_wsfi(&ici__1); -#line 23390 "" +#line 23384 "" do_fio(&c__1, (char *)&hshft, (ftnlen)sizeof(real)); -#line 23390 "" +#line 23384 "" e_wsfi(); -#line 23391 "" +#line 23385 "" *lnote += 3; -#line 23392 "" +#line 23386 "" } /* Writing concatenation */ -#line 23393 "" +#line 23387 "" i__2[0] = *lnote, a__1[0] = notexq; -#line 23393 "" +#line 23387 "" i__2[1] = 1, a__1[1] = "}"; -#line 23393 "" +#line 23387 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); -#line 23394 "" +#line 23388 "" ++(*lnote); -#line 23395 "" +#line 23389 "" } -#line 23396 "" +#line 23390 "" return 0; } /* putcb_ */ @@ -57867,188 +57803,188 @@ L2: ; /* Fortran I/O blocks */ - static icilist io___1664 = { 0, notexq+5, 0, "(f6.2)", 6, 1 }; - static icilist io___1665 = { 0, notexq+5, 0, "(f5.2)", 5, 1 }; - static icilist io___1666 = { 0, notexq+5, 0, "(f4.2)", 4, 1 }; - static icilist io___1667 = { 0, notexq+5, 0, "(f3.2)", 3, 1 }; - static icilist io___1680 = { 0, notexq+5, 0, "(f6.2)", 6, 1 }; - static icilist io___1681 = { 0, notexq+5, 0, "(f5.2)", 5, 1 }; - static icilist io___1682 = { 0, notexq+5, 0, "(f4.2)", 4, 1 }; - static icilist io___1683 = { 0, notexq+5, 0, "(f3.2)", 3, 1 }; + static icilist io___1659 = { 0, notexq+5, 0, "(f6.2)", 6, 1 }; + static icilist io___1660 = { 0, notexq+5, 0, "(f5.2)", 5, 1 }; + static icilist io___1661 = { 0, notexq+5, 0, "(f4.2)", 4, 1 }; + static icilist io___1662 = { 0, notexq+5, 0, "(f3.2)", 3, 1 }; + static icilist io___1675 = { 0, notexq+5, 0, "(f6.2)", 6, 1 }; + static icilist io___1676 = { 0, notexq+5, 0, "(f5.2)", 5, 1 }; + static icilist io___1677 = { 0, notexq+5, 0, "(f4.2)", 4, 1 }; + static icilist io___1678 = { 0, notexq+5, 0, "(f3.2)", 3, 1 }; -#line 23408 "" +#line 23402 "" if (*ivx == 1) { -#line 23409 "" +#line 23403 "" s_copy(figutq, "Figu", (ftnlen)4, (ftnlen)4); -#line 23410 "" +#line 23404 "" s_copy(conttq, "Cont", (ftnlen)4, (ftnlen)4); -#line 23411 "" +#line 23405 "" } else { -#line 23412 "" +#line 23406 "" s_copy(figutq, "Figt", (ftnlen)4, (ftnlen)4); -#line 23413 "" +#line 23407 "" s_copy(conttq, "Cott", (ftnlen)4, (ftnlen)4); -#line 23414 "" +#line 23408 "" } -#line 23415 "" +#line 23409 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 23415 "" +#line 23409 "" *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; -#line 23416 "" +#line 23410 "" if (comfig_2.ivvfig[*ivx + (*ifig << 1) - 3] != 0) { /* Alter figdrop */ /* Writing concatenation */ -#line 23420 "" +#line 23414 "" i__1[0] = 1, a__1[0] = sq; -#line 23420 "" +#line 23414 "" i__1[1] = 6, a__1[1] = "global"; -#line 23420 "" +#line 23414 "" i__1[2] = 1, a__1[2] = sq; -#line 23420 "" +#line 23414 "" i__1[3] = 7, a__1[3] = "advance"; -#line 23420 "" +#line 23414 "" i__1[4] = 1, a__1[4] = sq; -#line 23420 "" +#line 23414 "" i__1[5] = 7, a__1[5] = "figdrop"; -#line 23420 "" +#line 23414 "" s_cat(notexq, a__1, i__1, &c__6, (ftnlen)80); -#line 23421 "" +#line 23415 "" lnote = 23; -#line 23422 "" +#line 23416 "" if (comfig_2.ivvfig[*ivx + (*ifig << 1) - 3] < 0) { /* Writing concatenation */ -#line 23423 "" +#line 23417 "" i__2[0] = lnote, a__2[0] = notexq; -#line 23423 "" +#line 23417 "" i__2[1] = 1, a__2[1] = "-"; -#line 23423 "" +#line 23417 "" s_cat(notexq, a__2, i__2, &c__2, (ftnlen)80); -#line 23424 "" +#line 23418 "" ++lnote; -#line 23425 "" +#line 23419 "" } /* Writing concatenation */ -#line 23426 "" +#line 23420 "" i__2[0] = lnote, a__2[0] = notexq; -#line 23426 "" +#line 23420 "" *(unsigned char *)&ch__1[0] = (i__3 = comfig_2.ivvfig[*ivx + (*ifig << 1) - 3], abs(i__3)) + 48; -#line 23426 "" +#line 23420 "" i__2[1] = 1, a__2[1] = ch__1; -#line 23426 "" +#line 23420 "" s_cat(notexq, a__2, i__2, &c__2, (ftnlen)80); -#line 23427 "" +#line 23421 "" ++lnote; -#line 23428 "" +#line 23422 "" addstr_(notexq, &lnote, soutq, lsout, (ftnlen)80, (ftnlen)80); -#line 23429 "" +#line 23423 "" } -#line 23430 "" +#line 23424 "" if (dabs(*offnsk) > 1e-4f) { /* Write offset for floating figure, to two decimal places */ /* Writing concatenation */ -#line 23434 "" +#line 23428 "" i__2[0] = 1, a__2[0] = sq; -#line 23434 "" +#line 23428 "" i__2[1] = 4, a__2[1] = "off{"; -#line 23434 "" +#line 23428 "" s_cat(notexq, a__2, i__2, &c__2, (ftnlen)80); -#line 23435 "" +#line 23429 "" if (-(*offnsk) < -9.995f) { -#line 23436 "" - s_wsfi(&io___1664); -#line 23436 "" +#line 23430 "" + s_wsfi(&io___1659); +#line 23430 "" r__1 = -(*offnsk); -#line 23436 "" +#line 23430 "" do_fio(&c__1, (char *)&r__1, (ftnlen)sizeof(real)); -#line 23436 "" +#line 23430 "" e_wsfi(); -#line 23437 "" +#line 23431 "" lnote = 11; -#line 23438 "" +#line 23432 "" } else if (-(*offnsk) < -.995f || -(*offnsk) > 9.995f) { -#line 23439 "" - s_wsfi(&io___1665); -#line 23439 "" +#line 23433 "" + s_wsfi(&io___1660); +#line 23433 "" r__1 = -(*offnsk); -#line 23439 "" +#line 23433 "" do_fio(&c__1, (char *)&r__1, (ftnlen)sizeof(real)); -#line 23439 "" +#line 23433 "" e_wsfi(); -#line 23440 "" +#line 23434 "" lnote = 10; -#line 23441 "" +#line 23435 "" } else if (-(*offnsk) < -1e-4f || -(*offnsk) > .995f) { -#line 23442 "" - s_wsfi(&io___1666); -#line 23442 "" +#line 23436 "" + s_wsfi(&io___1661); +#line 23436 "" r__1 = -(*offnsk); -#line 23442 "" +#line 23436 "" do_fio(&c__1, (char *)&r__1, (ftnlen)sizeof(real)); -#line 23442 "" +#line 23436 "" e_wsfi(); -#line 23443 "" +#line 23437 "" lnote = 9; -#line 23444 "" +#line 23438 "" } else { -#line 23445 "" - s_wsfi(&io___1667); -#line 23445 "" +#line 23439 "" + s_wsfi(&io___1662); +#line 23439 "" r__1 = -(*offnsk); -#line 23445 "" +#line 23439 "" do_fio(&c__1, (char *)&r__1, (ftnlen)sizeof(real)); -#line 23445 "" +#line 23439 "" e_wsfi(); -#line 23446 "" +#line 23440 "" lnote = 8; -#line 23447 "" +#line 23441 "" } /* Writing concatenation */ -#line 23448 "" +#line 23442 "" i__4[0] = lnote, a__3[0] = notexq; -#line 23448 "" +#line 23442 "" i__4[1] = 1, a__3[1] = sq; -#line 23448 "" +#line 23442 "" i__4[2] = 9, a__3[2] = "noteskip}"; -#line 23448 "" +#line 23442 "" s_cat(notexq, a__3, i__4, &c__3, (ftnlen)80); -#line 23449 "" +#line 23443 "" i__3 = lnote + 10; -#line 23449 "" +#line 23443 "" addstr_(notexq, &i__3, soutq, lsout, (ftnlen)80, (ftnlen)80); -#line 23450 "" +#line 23444 "" } -#line 23451 "" +#line 23445 "" s_copy(figq, comfig_2.figqq + (*ivx + (*ifig << 1) - 3) * 10, (ftnlen)10, (ftnlen)10); -#line 23452 "" +#line 23446 "" ic = 1; /* nof = 0 */ /* nofa = -1 */ -#line 23455 "" +#line 23449 "" nof = -comfig_2.ivupfig[*ivx + (*ifig << 1) - 3]; -#line 23456 "" +#line 23450 "" nofa = -comfig_2.ivupfig[*ivx + (*ifig << 1) - 3] - 1; /* Beginning of manual loop */ -#line 23460 "" +#line 23454 "" L1: -#line 23460 "" +#line 23454 "" *(unsigned char *)ch1q = *(unsigned char *)&figq[ic - 1]; /* Exit when first blank is encountered */ -#line 23464 "" +#line 23458 "" if (*(unsigned char *)ch1q == ' ') { -#line 23464 "" +#line 23458 "" goto L2; -#line 23464 "" +#line 23458 "" } /* Starting a level. Set up vertical offset. */ @@ -58069,387 +58005,387 @@ L1: /* lnofa = 2 */ /* nofaq = '1'//chax(nofa+38) */ /* end if */ -#line 23484 "" +#line 23478 "" istring_(&nof, nofq, &lnof, (ftnlen)5); -#line 23485 "" +#line 23479 "" istring_(&nofa, nofaq, &lnofa, (ftnlen)5); -#line 23486 "" +#line 23480 "" if (*(unsigned char *)ch1q == '0') { /* Continuation figure. Next number is length (in noteskips). The number will */ /* end at the first blank or char that is not digit or decimal point. If */ /* colon, it is a separator and must be skipped */ -#line 23492 "" +#line 23486 "" icnum = ic + 1; -#line 23493 "" +#line 23487 "" L3: -#line 23494 "" +#line 23488 "" ++ic; -#line 23495 "" +#line 23489 "" if (i_indx("0123456789.", figq + (ic - 1), (ftnlen)11, (ftnlen)1) > 0) { -#line 23495 "" +#line 23489 "" goto L3; -#line 23495 "" +#line 23489 "" } -#line 23496 "" +#line 23490 "" lnum = ic - icnum; /* Writing concatenation */ -#line 23497 "" +#line 23491 "" i__1[0] = 1, a__1[0] = sq; -#line 23497 "" +#line 23491 "" i__1[1] = 4, a__1[1] = conttq; -#line 23497 "" +#line 23491 "" i__1[2] = lnof, a__1[2] = nofq; -#line 23497 "" +#line 23491 "" i__1[3] = 1, a__1[3] = "{"; -#line 23497 "" +#line 23491 "" i__1[4] = ic - 1 - (icnum - 1), a__1[4] = figq + (icnum - 1); -#line 23497 "" +#line 23491 "" i__1[5] = 1, a__1[5] = "}"; -#line 23497 "" +#line 23491 "" s_cat(ch__2, a__1, i__1, &c__6, (ftnlen)22); -#line 23497 "" +#line 23491 "" i__3 = ic + 7 - icnum + lnof; -#line 23497 "" +#line 23491 "" addstr_(ch__2, &i__3, soutq, lsout, lnof + 6 + (ic - 1 - (icnum - 1)) + 1, (ftnlen)80); -#line 23499 "" +#line 23493 "" if (*(unsigned char *)&figq[ic - 1] != ':') { -#line 23499 "" +#line 23493 "" --ic; -#line 23499 "" +#line 23493 "" } -#line 23500 "" +#line 23494 "" } else if (*(unsigned char *)ch1q == '#' || *(unsigned char *)ch1q == '-' || *(unsigned char *)ch1q == 'n') { -#line 23501 "" +#line 23495 "" ++ic; -#line 23502 "" +#line 23496 "" *(unsigned char *)ch2q = *(unsigned char *)&figq[ic - 1]; -#line 23503 "" +#line 23497 "" if (*(unsigned char *)ch2q == ' ') { /* Figure is a stand-alone accidental, so must be centered */ -#line 23507 "" +#line 23501 "" if (*(unsigned char *)ch1q == '#') { /* Writing concatenation */ -#line 23508 "" +#line 23502 "" i__1[0] = 1, a__1[0] = sq; -#line 23508 "" +#line 23502 "" i__1[1] = 4, a__1[1] = figutq; -#line 23508 "" +#line 23502 "" i__1[2] = lnofa, a__1[2] = nofaq; -#line 23508 "" +#line 23502 "" i__1[3] = 1, a__1[3] = "{"; -#line 23508 "" +#line 23502 "" i__1[4] = 1, a__1[4] = sq; -#line 23508 "" +#line 23502 "" i__1[5] = 9, a__1[5] = "sharpfig}"; -#line 23508 "" +#line 23502 "" s_cat(ch__3, a__1, i__1, &c__6, (ftnlen)21); -#line 23508 "" +#line 23502 "" i__3 = lnofa + 16; -#line 23508 "" +#line 23502 "" addstr_(ch__3, &i__3, soutq, lsout, lnofa + 16, (ftnlen)80); -#line 23510 "" +#line 23504 "" } else if (*(unsigned char *)ch1q == '-') { /* Writing concatenation */ -#line 23511 "" +#line 23505 "" i__1[0] = 1, a__1[0] = sq; -#line 23511 "" +#line 23505 "" i__1[1] = 4, a__1[1] = figutq; -#line 23511 "" +#line 23505 "" i__1[2] = lnofa, a__1[2] = nofaq; -#line 23511 "" +#line 23505 "" i__1[3] = 1, a__1[3] = "{"; -#line 23511 "" +#line 23505 "" i__1[4] = 1, a__1[4] = sq; -#line 23511 "" +#line 23505 "" i__1[5] = 8, a__1[5] = "flatfig}"; -#line 23511 "" +#line 23505 "" s_cat(ch__4, a__1, i__1, &c__6, (ftnlen)20); -#line 23511 "" +#line 23505 "" i__3 = lnofa + 15; -#line 23511 "" +#line 23505 "" addstr_(ch__4, &i__3, soutq, lsout, lnofa + 15, (ftnlen)80); -#line 23513 "" +#line 23507 "" } else if (*(unsigned char *)ch1q == 'n') { /* Writing concatenation */ -#line 23514 "" +#line 23508 "" i__1[0] = 1, a__1[0] = sq; -#line 23514 "" +#line 23508 "" i__1[1] = 4, a__1[1] = figutq; -#line 23514 "" +#line 23508 "" i__1[2] = lnofa, a__1[2] = nofaq; -#line 23514 "" +#line 23508 "" i__1[3] = 1, a__1[3] = "{"; -#line 23514 "" +#line 23508 "" i__1[4] = 1, a__1[4] = sq; -#line 23514 "" +#line 23508 "" i__1[5] = 7, a__1[5] = "natfig}"; -#line 23514 "" +#line 23508 "" s_cat(ch__5, a__1, i__1, &c__6, (ftnlen)19); -#line 23514 "" +#line 23508 "" i__3 = lnofa + 14; -#line 23514 "" +#line 23508 "" addstr_(ch__5, &i__3, soutq, lsout, lnofa + 14, (ftnlen)80); -#line 23516 "" +#line 23510 "" } -#line 23517 "" +#line 23511 "" goto L2; -#line 23518 "" +#line 23512 "" } else { /* Figure is an accidental followed by a number */ /* First put the accidental (offset to the left) */ -#line 23523 "" +#line 23517 "" if (*(unsigned char *)ch1q == '#') { /* Writing concatenation */ -#line 23524 "" +#line 23518 "" i__1[0] = 1, a__1[0] = sq; -#line 23524 "" +#line 23518 "" i__1[1] = 4, a__1[1] = figutq; -#line 23524 "" +#line 23518 "" i__1[2] = lnofa, a__1[2] = nofaq; -#line 23524 "" +#line 23518 "" i__1[3] = 1, a__1[3] = "{"; -#line 23524 "" +#line 23518 "" i__1[4] = 1, a__1[4] = sq; -#line 23524 "" +#line 23518 "" i__1[5] = 6, a__1[5] = "fsmsh}"; -#line 23524 "" +#line 23518 "" s_cat(ch__6, a__1, i__1, &c__6, (ftnlen)18); -#line 23524 "" +#line 23518 "" i__3 = lnofa + 13; -#line 23524 "" +#line 23518 "" addstr_(ch__6, &i__3, soutq, lsout, lnofa + 13, (ftnlen)80); -#line 23527 "" +#line 23521 "" } else if (*(unsigned char *)ch1q == '-') { /* Writing concatenation */ -#line 23528 "" +#line 23522 "" i__1[0] = 1, a__1[0] = sq; -#line 23528 "" +#line 23522 "" i__1[1] = 4, a__1[1] = figutq; -#line 23528 "" +#line 23522 "" i__1[2] = lnofa, a__1[2] = nofaq; -#line 23528 "" +#line 23522 "" i__1[3] = 1, a__1[3] = "{"; -#line 23528 "" +#line 23522 "" i__1[4] = 1, a__1[4] = sq; -#line 23528 "" +#line 23522 "" i__1[5] = 6, a__1[5] = "fsmfl}"; -#line 23528 "" +#line 23522 "" s_cat(ch__6, a__1, i__1, &c__6, (ftnlen)18); -#line 23528 "" +#line 23522 "" i__3 = lnofa + 13; -#line 23528 "" +#line 23522 "" addstr_(ch__6, &i__3, soutq, lsout, lnofa + 13, (ftnlen)80); -#line 23531 "" +#line 23525 "" } else if (*(unsigned char *)ch1q == 'n') { /* Writing concatenation */ -#line 23532 "" +#line 23526 "" i__1[0] = 1, a__1[0] = sq; -#line 23532 "" +#line 23526 "" i__1[1] = 4, a__1[1] = figutq; -#line 23532 "" +#line 23526 "" i__1[2] = lnofa, a__1[2] = nofaq; -#line 23532 "" +#line 23526 "" i__1[3] = 1, a__1[3] = "{"; -#line 23532 "" +#line 23526 "" i__1[4] = 1, a__1[4] = sq; -#line 23532 "" +#line 23526 "" i__1[5] = 6, a__1[5] = "fsmna}"; -#line 23532 "" +#line 23526 "" s_cat(ch__6, a__1, i__1, &c__6, (ftnlen)18); -#line 23532 "" +#line 23526 "" i__3 = lnofa + 13; -#line 23532 "" +#line 23526 "" addstr_(ch__6, &i__3, soutq, lsout, lnofa + 13, (ftnlen)80); -#line 23535 "" +#line 23529 "" } /* Now put the number */ /* Writing concatenation */ -#line 23539 "" +#line 23533 "" i__1[0] = 1, a__1[0] = sq; -#line 23539 "" +#line 23533 "" i__1[1] = 4, a__1[1] = figutq; -#line 23539 "" +#line 23533 "" i__1[2] = lnof, a__1[2] = nofq; -#line 23539 "" +#line 23533 "" i__1[3] = 1, a__1[3] = "{"; -#line 23539 "" +#line 23533 "" i__1[4] = 1, a__1[4] = ch2q; -#line 23539 "" +#line 23533 "" i__1[5] = 1, a__1[5] = "}"; -#line 23539 "" +#line 23533 "" s_cat(ch__7, a__1, i__1, &c__6, (ftnlen)13); -#line 23539 "" +#line 23533 "" i__3 = lnof + 8; -#line 23539 "" +#line 23533 "" addstr_(ch__7, &i__3, soutq, lsout, lnof + 8, (ftnlen)80); -#line 23541 "" +#line 23535 "" } -#line 23542 "" +#line 23536 "" } else if (*(unsigned char *)ch1q == '_') { /* Placeholder only (for lowering a figure). Don't do anything! */ -#line 23547 "" +#line 23541 "" } else { /* Figure is a single number, maybe with s after */ /* Writing concatenation */ -#line 23551 "" +#line 23545 "" i__5[0] = 1, a__4[0] = sq; -#line 23551 "" +#line 23545 "" i__5[1] = 4, a__4[1] = figutq; -#line 23551 "" +#line 23545 "" i__5[2] = lnof, a__4[2] = nofq; -#line 23551 "" +#line 23545 "" i__5[3] = 1, a__4[3] = "{"; -#line 23551 "" +#line 23545 "" s_cat(ch__8, a__4, i__5, &c__4, (ftnlen)11); -#line 23551 "" +#line 23545 "" i__3 = lnof + 6; -#line 23551 "" +#line 23545 "" addstr_(ch__8, &i__3, soutq, lsout, lnof + 6, (ftnlen)80); -#line 23553 "" +#line 23547 "" i__3 = ic; -#line 23553 "" +#line 23547 "" s_copy(ch2q, figq + i__3, (ftnlen)1, ic + 1 - i__3); -#line 23554 "" +#line 23548 "" if (*(unsigned char *)ch2q == 's') { /* Use a special character. Insert font call */ -#line 23558 "" +#line 23552 "" ++ic; /* Writing concatenation */ -#line 23559 "" +#line 23553 "" i__2[0] = 1, a__2[0] = sq; -#line 23559 "" +#line 23553 "" i__2[1] = 7, a__2[1] = "ligfont"; -#line 23559 "" +#line 23553 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 23559 "" +#line 23553 "" addstr_(ch__9, &c__8, soutq, lsout, (ftnlen)8, (ftnlen)80); -#line 23560 "" +#line 23554 "" } /* Writing concatenation */ -#line 23561 "" +#line 23555 "" i__2[0] = 1, a__2[0] = ch1q; -#line 23561 "" +#line 23555 "" i__2[1] = 1, a__2[1] = "}"; -#line 23561 "" +#line 23555 "" s_cat(ch__10, a__2, i__2, &c__2, (ftnlen)2); -#line 23561 "" +#line 23555 "" addstr_(ch__10, &c__2, soutq, lsout, (ftnlen)2, (ftnlen)80); /* call addstr(sq//Figutq//nofq(1:lnof)//'{'//ch1q//'}', */ /* * 8+lnof,soutq,lsout) */ -#line 23564 "" +#line 23558 "" } -#line 23565 "" +#line 23559 "" if (ic >= 10) { -#line 23565 "" +#line 23559 "" goto L2; -#line 23565 "" +#line 23559 "" } -#line 23566 "" +#line 23560 "" ++ic; -#line 23567 "" +#line 23561 "" nof += 4; -#line 23568 "" +#line 23562 "" nofa += 4; -#line 23569 "" +#line 23563 "" goto L1; -#line 23570 "" +#line 23564 "" L2: -#line 23571 "" +#line 23565 "" if (dabs(*offnsk) > 1e-4f) { /* Writing concatenation */ -#line 23572 "" +#line 23566 "" i__2[0] = 1, a__2[0] = sq; -#line 23572 "" +#line 23566 "" i__2[1] = 4, a__2[1] = "off{"; -#line 23572 "" +#line 23566 "" s_cat(notexq, a__2, i__2, &c__2, (ftnlen)80); -#line 23573 "" +#line 23567 "" if (*offnsk < -9.995f) { -#line 23574 "" - s_wsfi(&io___1680); -#line 23574 "" +#line 23568 "" + s_wsfi(&io___1675); +#line 23568 "" do_fio(&c__1, (char *)&(*offnsk), (ftnlen)sizeof(real)); -#line 23574 "" +#line 23568 "" e_wsfi(); -#line 23575 "" +#line 23569 "" lnote = 11; -#line 23576 "" +#line 23570 "" } else if (*offnsk < -.995f || *offnsk > 9.995f) { -#line 23577 "" - s_wsfi(&io___1681); -#line 23577 "" +#line 23571 "" + s_wsfi(&io___1676); +#line 23571 "" do_fio(&c__1, (char *)&(*offnsk), (ftnlen)sizeof(real)); -#line 23577 "" +#line 23571 "" e_wsfi(); -#line 23578 "" +#line 23572 "" lnote = 10; -#line 23579 "" +#line 23573 "" } else if (*offnsk < -1e-4f || *offnsk > .995f) { -#line 23580 "" - s_wsfi(&io___1682); -#line 23580 "" +#line 23574 "" + s_wsfi(&io___1677); +#line 23574 "" do_fio(&c__1, (char *)&(*offnsk), (ftnlen)sizeof(real)); -#line 23580 "" +#line 23574 "" e_wsfi(); -#line 23581 "" +#line 23575 "" lnote = 9; -#line 23582 "" +#line 23576 "" } else { -#line 23583 "" - s_wsfi(&io___1683); -#line 23583 "" +#line 23577 "" + s_wsfi(&io___1678); +#line 23577 "" do_fio(&c__1, (char *)&(*offnsk), (ftnlen)sizeof(real)); -#line 23583 "" +#line 23577 "" e_wsfi(); -#line 23584 "" +#line 23578 "" lnote = 8; -#line 23585 "" +#line 23579 "" } /* Writing concatenation */ -#line 23586 "" +#line 23580 "" i__4[0] = lnote, a__3[0] = notexq; -#line 23586 "" +#line 23580 "" i__4[1] = 1, a__3[1] = sq; -#line 23586 "" +#line 23580 "" i__4[2] = 9, a__3[2] = "noteskip}"; -#line 23586 "" +#line 23580 "" s_cat(notexq, a__3, i__4, &c__3, (ftnlen)80); -#line 23587 "" +#line 23581 "" i__3 = lnote + 10; -#line 23587 "" +#line 23581 "" addstr_(notexq, &i__3, soutq, lsout, (ftnlen)80, (ftnlen)80); -#line 23588 "" +#line 23582 "" } -#line 23589 "" +#line 23583 "" if (*ifig < comfig_2.nfigs[*ivx - 1]) { -#line 23590 "" +#line 23584 "" ++(*ifig); -#line 23591 "" +#line 23585 "" } else { -#line 23592 "" +#line 23586 "" comfig_2.nfigs[*ivx - 1] = 0; -#line 23593 "" +#line 23587 "" *figcheck = FALSE_; -#line 23594 "" +#line 23588 "" } -#line 23595 "" +#line 23589 "" return 0; } /* putfig_ */ @@ -58502,95 +58438,95 @@ L2: /* notcrd = .true. if ornament is on main note. */ /* nolevm is level of main note (for chords) */ -#line 23615 "" +#line 23609 "" /* Parameter adjustments */ -#line 23615 "" +#line 23609 "" ihornb -= 25; -#line 23615 "" +#line 23609 "" ulq -= 25; -#line 23615 "" +#line 23609 "" --nornb; -#line 23615 "" +#line 23609 "" -#line 23615 "" +#line 23609 "" /* Function Body */ -#line 23615 "" +#line 23609 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 23615 "" +#line 23609 "" *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; -#line 23616 "" +#line 23610 "" *lout = 0; -#line 23617 "" +#line 23611 "" usehornb = FALSE_; -#line 23618 "" +#line 23612 "" if (*nodur < 64) { -#line 23619 "" +#line 23613 "" stemlen = *stemlin; -#line 23620 "" +#line 23614 "" } else { -#line 23621 "" +#line 23615 "" stemlen = 0.f; -#line 23622 "" +#line 23616 "" } /* Get up-downness. ulpzq is opposite from stem direction for both beams and */ /* non beams. Can use in name of ornament [ . or _ ] */ -#line 23627 "" +#line 23621 "" if (*beamon) { -#line 23628 "" +#line 23622 "" if (*(unsigned char *)&ulq[*ivx + *ibmcnt * 24] == 'u') { -#line 23629 "" +#line 23623 "" *(unsigned char *)ulpzq = 'l'; -#line 23630 "" +#line 23624 "" } else { -#line 23631 "" +#line 23625 "" *(unsigned char *)ulpzq = 'u'; -#line 23632 "" +#line 23626 "" } -#line 23633 "" +#line 23627 "" } else { -#line 23634 "" +#line 23628 "" udqq_(ch__1, (ftnlen)1, nolevm, ncm, islur, nvmx, ivx, nv); -#line 23634 "" +#line 23628 "" if (*(unsigned char *)&ch__1[0] == 'l') { -#line 23635 "" +#line 23629 "" *(unsigned char *)ulpzq = 'u'; -#line 23636 "" +#line 23630 "" } else { -#line 23637 "" +#line 23631 "" *(unsigned char *)ulpzq = 'l'; -#line 23638 "" +#line 23632 "" } -#line 23639 "" +#line 23633 "" } /* To enable >1 ornament on a note, next line is top of manual loop. */ -#line 23643 "" +#line 23637 "" L2: /* c Bit # of last ornament (last of bits 0-21) */ /* c Bit # of last ornament (last of bits 0-24) */ /* Bit # of last ornament (last of bits 0-24,29-30) */ -#line 23648 "" +#line 23642 "" if (bit_test(*iornq,29)) { -#line 23649 "" +#line 23643 "" ibit = 29; -#line 23650 "" +#line 23644 "" } else if (bit_test(*iornq,30)) { -#line 23651 "" +#line 23645 "" ibit = 30; -#line 23652 "" +#line 23646 "" } else { -#line 23653 "" +#line 23647 "" i__1 = *iornq & 4194303; -#line 23653 "" +#line 23647 "" ibit = log2_(&i__1); /* ibit = log2(iand(iornq,33554431)) */ -#line 23655 "" +#line 23649 "" } -#line 23656 "" +#line 23650 "" iornt = pow_ii(&c__2, &ibit); /* Begin routine to set height. Bits 0-13: (stmgx+Tupf._) */ @@ -58600,568 +58536,568 @@ L2: /* Do not use beam height for . or _ */ -#line 23665 "" +#line 23659 "" if (bit_test(*iornq,22) && (iornt & 6144) == 0) { /* Height is set by special beam stuff. */ /* Do not leave ihorn set, do separately for every ornament */ -#line 23670 "" +#line 23664 "" ihorn = ihornb[*ivx + nornb[*ivx] * 24]; -#line 23671 "" +#line 23665 "" if (*(unsigned char *)ulpzq == 'u') { -#line 23671 "" +#line 23665 "" ihorn += -2; -#line 23671 "" +#line 23665 "" } /* Following flag tells whether to increment nornb when exiting the subroutine. */ -#line 23675 "" +#line 23669 "" usehornb = TRUE_; -#line 23676 "" +#line 23670 "" } else if (ibit == 14) { /* Down fermata. Don't worry about upper chord notes. */ -#line 23680 "" +#line 23674 "" if (*(unsigned char *)ulpzq == 'l') { /* Computing MIN */ -#line 23681 "" +#line 23675 "" i__1 = *nolev, i__2 = *ncm - 3; -#line 23681 "" +#line 23675 "" ihorn = min(i__1,i__2); -#line 23682 "" +#line 23676 "" } else { /* Computing MIN */ -#line 23683 "" +#line 23677 "" r__1 = *nolev - stemlen, r__2 = *ncm - 3.f; -#line 23683 "" +#line 23677 "" ihorn = dmin(r__1,r__2); -#line 23684 "" +#line 23678 "" } -#line 23685 "" +#line 23679 "" } else if (bit_test(iornt,13) || bit_test(iornt,0)) { /* ( or ) */ -#line 23689 "" +#line 23683 "" ihorn = *nolev; -#line 23690 "" +#line 23684 "" } else if ((iornt & 6144) > 0) { /* c Staccato . or tenuto _ , but not special beam stuff. Need up-down info */ /* NOTE: removed .&_ from special beam treatment. */ /* Staccato . or tenuto _ Need up-down info */ -#line 23696 "" +#line 23690 "" if (! (*iscrd) || comtrill_1.maxlev != *nolev && *(unsigned char *) ulpzq == 'l' || comtrill_1.minlev != *nolev && *(unsigned char *)ulpzq == 'u') { -#line 23698 "" +#line 23692 "" ihorn = *nolev; -#line 23699 "" +#line 23693 "" } else if (comtrill_1.maxlev == *nolev) { -#line 23700 "" +#line 23694 "" *(unsigned char *)ulpzq = 'u'; /* Computing MAX */ -#line 23701 "" +#line 23695 "" r__1 = *nolev + stemlen, r__2 = *ncm + 3.f; -#line 23701 "" +#line 23695 "" ihorn = dmax(r__1,r__2); -#line 23702 "" +#line 23696 "" } else { -#line 23703 "" +#line 23697 "" *(unsigned char *)ulpzq = 'l'; /* Computing MIN */ -#line 23704 "" +#line 23698 "" r__1 = *nolev - stemlen, r__2 = *ncm - 3.f; -#line 23704 "" +#line 23698 "" ihorn = dmin(r__1,r__2); -#line 23705 "" +#line 23699 "" } -#line 23706 "" +#line 23700 "" } else if (*iscrd && *nolev == comtrill_1.minlev) { -#line 23707 "" +#line 23701 "" if (*(unsigned char *)ulpzq == 'l') { /* Computing MIN */ -#line 23708 "" +#line 23702 "" i__1 = *nolev - 3, i__2 = *ncm - 6; -#line 23708 "" +#line 23702 "" ihorn = min(i__1,i__2); -#line 23709 "" +#line 23703 "" } else { /* Computing MIN */ -#line 23710 "" +#line 23704 "" i__1 = *nolev - i_nint(&stemlen) - 3, i__2 = *ncm - 6; -#line 23710 "" +#line 23704 "" ihorn = min(i__1,i__2); -#line 23711 "" +#line 23705 "" } -#line 23712 "" +#line 23706 "" } else if (ibit == 10 && *nolev > 90) { /* Special treatment for fermata on a shifted rest */ -#line 23716 "" +#line 23710 "" ihorn = *ncm + 5; -#line 23717 "" +#line 23711 "" } else if (*(unsigned char *)ulpzq == 'l') { /* (iscrd and nolev=maxlev) or (.not.iscrd) */ /* Computing MAX */ -#line 23721 "" +#line 23715 "" r__1 = *nolev + stemlen + 2, r__2 = *ncm + 5.f; -#line 23721 "" +#line 23715 "" ihorn = dmax(r__1,r__2); -#line 23722 "" +#line 23716 "" } else if (ibit == 29 || ibit == 30) { /* coda or new segno, no height tweak */ -#line 23726 "" +#line 23720 "" ihorn = *ncm + 5; -#line 23727 "" +#line 23721 "" } else { /* Computing MAX */ -#line 23728 "" +#line 23722 "" i__1 = *nolev + 2, i__2 = *ncm + 5; -#line 23728 "" +#line 23722 "" ihorn = max(i__1,i__2); -#line 23729 "" +#line 23723 "" } -#line 23730 "" +#line 23724 "" ioff = 0; -#line 23731 "" +#line 23725 "" iclracc = 0; /* Begin routine to set name. Bits 0-13: (stmgx+Tupf._) */ /* 14: Down fermata, was F 15: Trill w/o "tr", was U, 16-18: edit. s,f,n */ -#line 23736 "" +#line 23730 "" if (bit_test(iornt,2)) { /* Writing concatenation */ +#line 23731 "" + i__3[0] = 1, a__1[0] = sq; +#line 23731 "" + i__3[1] = 5, a__1[1] = "shake"; +#line 23731 "" + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); +#line 23732 "" + lnote = 6; +#line 23733 "" + } else if (bit_test(iornt,3)) { +/* Writing concatenation */ +#line 23734 "" + i__3[0] = 1, a__1[0] = sq; +#line 23734 "" + i__3[1] = 7, a__1[1] = "mordent"; +#line 23734 "" + s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); +#line 23735 "" + lnote = 8; +#line 23736 "" + } else if (bit_test(iornt,1)) { +/* Writing concatenation */ #line 23737 "" i__3[0] = 1, a__1[0] = sq; #line 23737 "" - i__3[1] = 5, a__1[1] = "shake"; + i__3[1] = 3, a__1[1] = "mtr"; #line 23737 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 23738 "" - lnote = 6; + lnote = 4; #line 23739 "" - } else if (bit_test(iornt,3)) { + } else if (bit_test(iornt,5)) { /* Writing concatenation */ #line 23740 "" i__3[0] = 1, a__1[0] = sq; #line 23740 "" - i__3[1] = 7, a__1[1] = "mordent"; + i__3[1] = 3, a__1[1] = "xtr"; #line 23740 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 23741 "" - lnote = 8; + lnote = 4; #line 23742 "" - } else if (bit_test(iornt,1)) { + } else if (bit_test(iornt,6)) { /* Writing concatenation */ #line 23743 "" i__3[0] = 1, a__1[0] = sq; #line 23743 "" - i__3[1] = 3, a__1[1] = "mtr"; + i__3[1] = 3, a__1[1] = "ptr"; #line 23743 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 23744 "" lnote = 4; #line 23745 "" - } else if (bit_test(iornt,5)) { + } else if (bit_test(iornt,13)) { /* Writing concatenation */ #line 23746 "" i__3[0] = 1, a__1[0] = sq; #line 23746 "" - i__3[1] = 3, a__1[1] = "xtr"; + i__3[1] = 3, a__1[1] = "rpn"; #line 23746 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 23747 "" lnote = 4; #line 23748 "" - } else if (bit_test(iornt,6)) { + } else if (bit_test(iornt,0)) { /* Writing concatenation */ #line 23749 "" i__3[0] = 1, a__1[0] = sq; #line 23749 "" - i__3[1] = 3, a__1[1] = "ptr"; + i__3[1] = 3, a__1[1] = "lpn"; #line 23749 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); #line 23750 "" lnote = 4; #line 23751 "" - } else if (bit_test(iornt,13)) { + } else if (bit_test(iornt,12)) { /* Writing concatenation */ #line 23752 "" - i__3[0] = 1, a__1[0] = sq; + i__4[0] = 1, a__2[0] = sq; #line 23752 "" - i__3[1] = 3, a__1[1] = "rpn"; + i__4[1] = 1, a__2[1] = ulpzq; #line 23752 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); + i__4[2] = 2, a__2[2] = "st"; +#line 23752 "" + s_cat(notexq, a__2, i__4, &c__3, (ftnlen)79); #line 23753 "" lnote = 4; #line 23754 "" - } else if (bit_test(iornt,0)) { + } else if (bit_test(iornt,11)) { /* Writing concatenation */ #line 23755 "" - i__3[0] = 1, a__1[0] = sq; + i__4[0] = 1, a__2[0] = sq; #line 23755 "" - i__3[1] = 3, a__1[1] = "lpn"; + i__4[1] = 1, a__2[1] = ulpzq; #line 23755 "" - s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23756 "" - lnote = 4; -#line 23757 "" - } else if (bit_test(iornt,12)) { -/* Writing concatenation */ -#line 23758 "" - i__4[0] = 1, a__2[0] = sq; -#line 23758 "" - i__4[1] = 1, a__2[1] = ulpzq; -#line 23758 "" - i__4[2] = 2, a__2[2] = "st"; -#line 23758 "" - s_cat(notexq, a__2, i__4, &c__3, (ftnlen)79); -#line 23759 "" - lnote = 4; -#line 23760 "" - } else if (bit_test(iornt,11)) { -/* Writing concatenation */ -#line 23761 "" - i__4[0] = 1, a__2[0] = sq; -#line 23761 "" - i__4[1] = 1, a__2[1] = ulpzq; -#line 23761 "" i__4[2] = 2, a__2[2] = "pz"; -#line 23761 "" +#line 23755 "" s_cat(notexq, a__2, i__4, &c__3, (ftnlen)79); -#line 23762 "" +#line 23756 "" lnote = 4; -#line 23763 "" +#line 23757 "" } else if (bit_test(iornt,8)) { /* Writing concatenation */ -#line 23764 "" +#line 23758 "" i__3[0] = 1, a__1[0] = sq; -#line 23764 "" +#line 23758 "" i__3[1] = 3, a__1[1] = "upz"; -#line 23764 "" +#line 23758 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23765 "" +#line 23759 "" lnote = 4; -#line 23766 "" +#line 23760 "" ioff = -2; -#line 23767 "" +#line 23761 "" } else if (bit_test(iornt,9)) { /* Writing concatenation */ -#line 23768 "" +#line 23762 "" i__3[0] = 1, a__1[0] = sq; -#line 23768 "" +#line 23762 "" i__3[1] = 4, a__1[1] = "uppz"; -#line 23768 "" +#line 23762 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23769 "" +#line 23763 "" lnote = 5; -#line 23770 "" +#line 23764 "" ioff = -2; -#line 23771 "" +#line 23765 "" } else if (bit_test(iornt,10)) { -#line 23772 "" +#line 23766 "" if (*nodur < 48) { /* Writing concatenation */ -#line 23773 "" +#line 23767 "" i__3[0] = 1, a__1[0] = sq; -#line 23773 "" +#line 23767 "" i__3[1] = 9, a__1[1] = "fermataup"; -#line 23773 "" +#line 23767 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23774 "" +#line 23768 "" } else { /* Writing concatenation */ -#line 23775 "" +#line 23769 "" i__3[0] = 1, a__1[0] = sq; -#line 23775 "" +#line 23769 "" i__3[1] = 9, a__1[1] = "Fermataup"; -#line 23775 "" +#line 23769 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23776 "" +#line 23770 "" } -#line 23777 "" +#line 23771 "" lnote = 10; -#line 23778 "" +#line 23772 "" ioff = -2; -#line 23779 "" +#line 23773 "" } else if (bit_test(iornt,14)) { -#line 23780 "" +#line 23774 "" if (*nodur < 48) { /* Writing concatenation */ -#line 23781 "" +#line 23775 "" i__3[0] = 1, a__1[0] = sq; -#line 23781 "" +#line 23775 "" i__3[1] = 11, a__1[1] = "fermatadown"; -#line 23781 "" +#line 23775 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23782 "" +#line 23776 "" } else { /* Writing concatenation */ -#line 23783 "" +#line 23777 "" i__3[0] = 1, a__1[0] = sq; -#line 23783 "" +#line 23777 "" i__3[1] = 11, a__1[1] = "Fermatadown"; -#line 23783 "" +#line 23777 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23784 "" +#line 23778 "" } -#line 23785 "" +#line 23779 "" lnote = 12; -#line 23786 "" +#line 23780 "" } else if (bit_test(iornt,21)) { /* "?" in editorial ornament. Clear bit 16-18 after use, since ibit=21 */ -#line 23790 "" +#line 23784 "" if (bit_test(*iornq,16)) { /* Writing concatenation */ -#line 23791 "" +#line 23785 "" i__3[0] = 1, a__1[0] = sq; -#line 23791 "" +#line 23785 "" i__3[1] = 6, a__1[1] = "qsharp"; -#line 23791 "" +#line 23785 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23792 "" +#line 23786 "" lnote = 7; -#line 23793 "" +#line 23787 "" ioff = 2; -#line 23794 "" +#line 23788 "" *iornq = bit_clear(*iornq,16); -#line 23795 "" +#line 23789 "" iclracc = 16; -#line 23796 "" +#line 23790 "" } else if (bit_test(*iornq,17)) { /* Writing concatenation */ -#line 23797 "" +#line 23791 "" i__3[0] = 1, a__1[0] = sq; -#line 23797 "" +#line 23791 "" i__3[1] = 5, a__1[1] = "qflat"; -#line 23797 "" +#line 23791 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23798 "" +#line 23792 "" lnote = 6; -#line 23799 "" +#line 23793 "" ioff = 1; -#line 23800 "" +#line 23794 "" *iornq = bit_clear(*iornq,17); -#line 23801 "" +#line 23795 "" iclracc = 17; -#line 23802 "" +#line 23796 "" } else if (bit_test(*iornq,18)) { /* Writing concatenation */ -#line 23803 "" +#line 23797 "" i__3[0] = 1, a__1[0] = sq; -#line 23803 "" +#line 23797 "" i__3[1] = 4, a__1[1] = "qnat"; -#line 23803 "" +#line 23797 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23804 "" +#line 23798 "" lnote = 5; -#line 23805 "" +#line 23799 "" ioff = 2; -#line 23806 "" +#line 23800 "" *iornq = bit_clear(*iornq,18); -#line 23807 "" +#line 23801 "" iclracc = 18; -#line 23808 "" +#line 23802 "" } else { /* Writing concatenation */ -#line 23809 "" +#line 23803 "" i__3[0] = 1, a__1[0] = sq; -#line 23809 "" +#line 23803 "" i__3[1] = 5, a__1[1] = "qedit"; -#line 23809 "" +#line 23803 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23810 "" +#line 23804 "" lnote = 6; -#line 23811 "" +#line 23805 "" ioff = 0; -#line 23812 "" +#line 23806 "" } -#line 23813 "" +#line 23807 "" } else if (bit_test(iornt,16)) { /* Writing concatenation */ -#line 23814 "" +#line 23808 "" i__3[0] = 1, a__1[0] = sq; -#line 23814 "" +#line 23808 "" i__3[1] = 6, a__1[1] = "esharp"; -#line 23814 "" +#line 23808 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23815 "" +#line 23809 "" lnote = 7; -#line 23816 "" +#line 23810 "" ioff = 2; -#line 23817 "" +#line 23811 "" } else if (bit_test(iornt,17)) { /* Writing concatenation */ -#line 23818 "" +#line 23812 "" i__3[0] = 1, a__1[0] = sq; -#line 23818 "" +#line 23812 "" i__3[1] = 5, a__1[1] = "eflat"; -#line 23818 "" +#line 23812 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23819 "" +#line 23813 "" lnote = 6; -#line 23820 "" +#line 23814 "" ioff = 1; -#line 23821 "" +#line 23815 "" } else if (bit_test(iornt,18)) { /* Writing concatenation */ -#line 23822 "" +#line 23816 "" i__3[0] = 1, a__1[0] = sq; -#line 23822 "" +#line 23816 "" i__3[1] = 4, a__1[1] = "enat"; -#line 23822 "" +#line 23816 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23823 "" +#line 23817 "" lnote = 5; -#line 23824 "" +#line 23818 "" ioff = 2; -#line 23825 "" +#line 23819 "" } else if (bit_test(iornt,19)) { /* Writing concatenation */ -#line 23826 "" +#line 23820 "" i__3[0] = 1, a__1[0] = sq; -#line 23826 "" +#line 23820 "" i__3[1] = 3, a__1[1] = "usf"; -#line 23826 "" +#line 23820 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23827 "" +#line 23821 "" lnote = 4; -#line 23828 "" +#line 23822 "" ioff = -2; -#line 23829 "" +#line 23823 "" } else if (bit_test(iornt,20)) { /* Writing concatenation */ -#line 23830 "" +#line 23824 "" i__3[0] = 1, a__1[0] = sq; -#line 23830 "" +#line 23824 "" i__3[1] = 4, a__1[1] = "usfz"; -#line 23830 "" +#line 23824 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23831 "" +#line 23825 "" lnote = 5; -#line 23832 "" +#line 23826 "" ioff = -2; -#line 23833 "" +#line 23827 "" } else if (bit_test(iornt,29)) { /* Writing concatenation */ -#line 23834 "" +#line 23828 "" i__3[0] = 1, a__1[0] = sq; -#line 23834 "" +#line 23828 "" i__3[1] = 5, a__1[1] = "ccoda"; -#line 23834 "" +#line 23828 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23835 "" +#line 23829 "" lnote = 6; -#line 23836 "" +#line 23830 "" } else if (bit_test(iornt,30)) { /* Writing concatenation */ -#line 23837 "" +#line 23831 "" i__3[0] = 1, a__1[0] = sq; -#line 23837 "" +#line 23831 "" i__3[1] = 6, a__1[1] = "ssegno"; -#line 23837 "" +#line 23831 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23838 "" +#line 23832 "" lnote = 7; -#line 23839 "" +#line 23833 "" } -#line 23840 "" +#line 23834 "" iudorn = 0; /* User-defined level shift of ornament from default? */ -#line 23844 "" +#line 23838 "" if (bit_test(*iornq,25)) { /* Find which (if any) element of kudorn has the shift. */ -#line 23848 "" +#line 23842 "" i__1 = comtrill_1.nudorn; -#line 23848 "" +#line 23842 "" for (iudorn = 1; iudorn <= i__1; ++iudorn) { /* if (ibit .lt. 21) then */ /* if (ibit.lt.21 .or. ibit.eq.29) then */ -#line 23851 "" +#line 23845 "" if (ibit < 21 || ibit == 29 || ibit == 30) { -#line 23852 "" +#line 23846 "" ibitt = ibit; /* Could have oes, but not oe? or oes? */ -#line 23856 "" +#line 23850 "" } else if (iclracc > 0) { /* Earlier cleared edit. accid, meaning it was oes? */ -#line 23860 "" +#line 23854 "" ibitt = iclracc + 6; -#line 23861 "" +#line 23855 "" } else { -#line 23862 "" +#line 23856 "" ibitt = 21; -#line 23863 "" +#line 23857 "" } -#line 23864 "" +#line 23858 "" ibitt = *ip + (*ivx % 16 << 8) + (*nolev << 12) + (ibitt << 19); /* if (ibitt .eq. iand(33554431,kudorn(iudorn))) go to 4 */ -#line 23866 "" +#line 23860 "" if (ibitt == (33554431 & comtrill_1.kudorn[iudorn - 1]) && *ivx == comivxudorn_1.ivxudorn[iudorn - 1]) { -#line 23866 "" +#line 23860 "" goto L4; -#line 23866 "" +#line 23860 "" } -#line 23868 "" +#line 23862 "" /* L3: */ -#line 23868 "" +#line 23862 "" } /* Nothing shifted on this note; exit this if block */ -#line 23872 "" +#line 23866 "" iudorn = 0; -#line 23873 "" +#line 23867 "" goto L5; -#line 23874 "" +#line 23868 "" L4: -#line 23875 "" +#line 23869 "" ioffinc = (63 & lbit_shift(comtrill_1.kudorn[iudorn - 1], (ftnlen)-25) ) - 32; -#line 23876 "" +#line 23870 "" if (ibit == 19 && ioffinc < -7) { /* Convert usf to lsf. The reason has to do with positioning being impossile */ /* for some mysterious reason when you drop \usf below the staff */ /* Writing concatenation */ -#line 23881 "" +#line 23875 "" i__3[0] = 1, a__1[0] = sq; -#line 23881 "" +#line 23875 "" i__3[1] = 3, a__1[1] = "lsf"; -#line 23881 "" +#line 23875 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23882 "" +#line 23876 "" ioffinc += 6; -#line 23883 "" +#line 23877 "" } -#line 23884 "" +#line 23878 "" ioff += ioffinc; -#line 23885 "" +#line 23879 "" } -#line 23886 "" +#line 23880 "" L5: /* Shift level to avoid slur. Conditions are */ @@ -59171,149 +59107,149 @@ L5: /* 4. ornament is not segno(4), ._)(11-13), down ferm(14) or "(" (0) Bin=30737 */ /* 5. islhgt+3 >= height already computed. */ -#line 23895 "" +#line 23889 "" if (! bit_test(*iornq,25) && *islhgt > 0 && (iornt & 30737) == 0) { -#line 23895 "" +#line 23889 "" i__1 = *islhgt + 3; -#line 23895 "" +#line 23889 "" ioff += i_dim(&i__1, &ihorn); -#line 23895 "" +#line 23889 "" } -#line 23898 "" +#line 23892 "" i__1 = ihorn + ioff; -#line 23898 "" +#line 23892 "" notefq_(noteq, &lnoten, &i__1, ncm, (ftnlen)8); -#line 23899 "" +#line 23893 "" if (lnoten == 1) { -#line 23899 "" +#line 23893 "" addblank_(noteq, &lnoten, (ftnlen)8); -#line 23899 "" +#line 23893 "" } -#line 23900 "" +#line 23894 "" if ((iornt & 32896) > 0) { /* T-trill or trill w/o "tr" */ -#line 23904 "" +#line 23898 "" dotrill_(ivx, ip, &iornt, noteq, &lnoten, notexq, &lnote, (ftnlen)8, ( ftnlen)79); -#line 23905 "" +#line 23899 "" } else { /* Writing concatenation */ -#line 23906 "" +#line 23900 "" i__3[0] = lnote, a__1[0] = notexq; -#line 23906 "" +#line 23900 "" i__3[1] = lnoten, a__1[1] = noteq; -#line 23906 "" +#line 23900 "" s_cat(notexq, a__1, i__3, &c__2, (ftnlen)79); -#line 23907 "" +#line 23901 "" lnote += lnoten; -#line 23908 "" +#line 23902 "" } -#line 23909 "" +#line 23903 "" if (iudorn > 0) { -#line 23910 "" +#line 23904 "" if (bit_test(comtrill_1.kudorn[iudorn - 1],31)) { /* Horizontal shift */ -#line 23914 "" +#line 23908 "" lform = lfmt1_(&comtrill_1.ornhshft[iudorn - 1]); -#line 23915 "" +#line 23909 "" ici__1.icierr = 0; -#line 23915 "" +#line 23909 "" ici__1.icirnum = 1; -#line 23915 "" +#line 23909 "" ici__1.icirlen = lform; -#line 23915 "" +#line 23909 "" ici__1.iciunit = noteq; /* Writing concatenation */ -#line 23915 "" +#line 23909 "" i__4[0] = 2, a__2[0] = "(f"; -#line 23915 "" +#line 23909 "" i__1 = lform + 48; -#line 23915 "" +#line 23909 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 23915 "" +#line 23909 "" i__4[1] = 1, a__2[1] = ch__1; -#line 23915 "" +#line 23909 "" i__4[2] = 3, a__2[2] = ".1)"; -#line 23915 "" +#line 23909 "" ici__1.icifmt = (s_cat(ch__2, a__2, i__4, &c__3, (ftnlen)6), ch__2); -#line 23915 "" +#line 23909 "" s_wsfi(&ici__1); -#line 23915 "" +#line 23909 "" do_fio(&c__1, (char *)&comtrill_1.ornhshft[iudorn - 1], (ftnlen) sizeof(real)); -#line 23915 "" +#line 23909 "" e_wsfi(); /* Writing concatenation */ -#line 23917 "" +#line 23911 "" i__5[0] = 1, a__3[0] = sq; -#line 23917 "" +#line 23911 "" i__5[1] = 8, a__3[1] = "roffset{"; -#line 23917 "" +#line 23911 "" i__5[2] = lform, a__3[2] = noteq; -#line 23917 "" +#line 23911 "" i__5[3] = 2, a__3[3] = "}{"; -#line 23917 "" +#line 23911 "" i__5[4] = lnote, a__3[4] = notexq; -#line 23917 "" +#line 23911 "" i__5[5] = 1, a__3[5] = "}"; -#line 23917 "" +#line 23911 "" s_cat(notexq, a__3, i__5, &c__6, (ftnlen)79); -#line 23919 "" +#line 23913 "" lnote = lnote + lform + 12; -#line 23920 "" +#line 23914 "" comtrill_1.ornhshft[iudorn - 1] = 0.f; -#line 23921 "" +#line 23915 "" comtrill_1.kudorn[iudorn - 1] = bit_clear(comtrill_1.kudorn[ iudorn - 1],31); -#line 23922 "" +#line 23916 "" } -#line 23923 "" +#line 23917 "" } /* Zero out the bit for ornament just dealt with. */ -#line 23927 "" +#line 23921 "" *iornq = bit_clear(*iornq,ibit); -#line 23928 "" +#line 23922 "" if (*lout == 0) { -#line 23929 "" +#line 23923 "" s_copy(outq, notexq, (ftnlen)79, lnote); -#line 23930 "" +#line 23924 "" } else { /* Writing concatenation */ -#line 23931 "" +#line 23925 "" i__3[0] = *lout, a__1[0] = outq; -#line 23931 "" +#line 23925 "" i__3[1] = lnote, a__1[1] = notexq; -#line 23931 "" +#line 23925 "" s_cat(outq, a__1, i__3, &c__2, (ftnlen)79); -#line 23932 "" +#line 23926 "" } -#line 23933 "" +#line 23927 "" *lout += lnote; /* Check bits 0-21, go back if any are still set */ /* If bit 29 or 30 had been set, would have been used first time thru, */ /* and you wouldn't use both coda and segno on same note */ -#line 23939 "" +#line 23933 "" if ((*iornq & 4194303) > 0) { -#line 23939 "" +#line 23933 "" goto L2; -#line 23939 "" +#line 23933 "" } -#line 23940 "" +#line 23934 "" if (usehornb) { -#line 23940 "" +#line 23934 "" ++nornb[*ivx]; -#line 23940 "" +#line 23934 "" } -#line 23941 "" +#line 23935 "" return 0; } /* putorn_ */ @@ -59342,91 +59278,91 @@ L5: ftnlen, ftnlen); static char notexq[80]; -#line 23949 "" +#line 23943 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 23949 "" +#line 23943 "" *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; /* Start user-defined offsets X(...): or X(...)S */ -#line 23953 "" +#line 23947 "" if (*onoff) { -#line 23953 "" +#line 23947 "" ++comudsp_1.nudoff[*ivx - 1]; -#line 23953 "" +#line 23947 "" } /* Xoff is in pts. Round off to nearest .1. Will use at end of shift. */ -#line 23957 "" +#line 23951 "" xoff = comudsp_1.udoff[*ivx + comudsp_1.nudoff[*ivx - 1] * 24 - 25]; -#line 23958 "" +#line 23952 "" r__1 = (integer) (dabs(xoff) * 10.f + .5f) / 10.f; -#line 23958 "" +#line 23952 "" xoff = r_sign(&r__1, &xoff); -#line 23959 "" +#line 23953 "" if (! (*onoff)) { -#line 23959 "" +#line 23953 "" xoff = -xoff; -#line 23959 "" +#line 23953 "" } -#line 23960 "" +#line 23954 "" if (xoff < -9.95f) { -#line 23961 "" +#line 23955 "" ifmt = 5; -#line 23962 "" +#line 23956 "" } else if (xoff < -.95f || xoff > 9.95f) { -#line 23963 "" +#line 23957 "" ifmt = 4; -#line 23964 "" +#line 23958 "" } else { -#line 23965 "" +#line 23959 "" ifmt = 3; -#line 23966 "" +#line 23960 "" } -#line 23967 "" +#line 23961 "" ici__1.icierr = 0; -#line 23967 "" +#line 23961 "" ici__1.icirnum = 1; -#line 23967 "" +#line 23961 "" ici__1.icirlen = 80; -#line 23967 "" +#line 23961 "" ici__1.iciunit = notexq; /* Writing concatenation */ -#line 23967 "" +#line 23961 "" i__1[0] = 2, a__1[0] = "(f"; -#line 23967 "" +#line 23961 "" i__2 = ifmt + 48; -#line 23967 "" +#line 23961 "" chax_(ch__1, (ftnlen)1, &i__2); -#line 23967 "" +#line 23961 "" i__1[1] = 1, a__1[1] = ch__1; -#line 23967 "" +#line 23961 "" i__1[2] = 3, a__1[2] = ".1)"; -#line 23967 "" +#line 23961 "" ici__1.icifmt = (s_cat(ch__2, a__1, i__1, &c__3, (ftnlen)6), ch__2); -#line 23967 "" +#line 23961 "" s_wsfi(&ici__1); -#line 23967 "" +#line 23961 "" do_fio(&c__1, (char *)&xoff, (ftnlen)sizeof(real)); -#line 23967 "" +#line 23961 "" e_wsfi(); /* Writing concatenation */ -#line 23968 "" +#line 23962 "" i__3[0] = 1, a__2[0] = sq; -#line 23968 "" +#line 23962 "" i__3[1] = 4, a__2[1] = "off{"; -#line 23968 "" +#line 23962 "" i__3[2] = ifmt, a__2[2] = notexq; -#line 23968 "" +#line 23962 "" i__3[3] = 3, a__2[3] = "pt}"; -#line 23968 "" +#line 23962 "" s_cat(ch__3, a__2, i__3, &c__4, (ftnlen)88); -#line 23968 "" +#line 23962 "" i__2 = ifmt + 8; -#line 23968 "" +#line 23962 "" addstr_(ch__3, &i__2, soutq, lsout, ifmt + 8, (ftnlen)80); -#line 23970 "" +#line 23964 "" return 0; } /* putshft_ */ @@ -59459,9 +59395,9 @@ L5: static integer lenline; /* Fortran I/O blocks */ - static cilist io___1711 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1714 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1717 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1706 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1709 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1712 = { 0, 11, 0, "(a)", 0 }; @@ -59469,352 +59405,352 @@ L5: /* Actual titles only allowed on p.1. (set by headlog). */ /* 3/18/01: The above comment is probably bogus...can use Tt on later pages. */ -#line 23989 "" +#line 23983 "" /* Parameter adjustments */ -#line 23989 "" +#line 23983 "" --sepsymq; -#line 23989 "" +#line 23983 "" -#line 23989 "" +#line 23983 "" /* Function Body */ /* Writing concatenation */ -#line 23989 "" +#line 23983 "" i__1[0] = 1, a__1[0] = sq; -#line 23989 "" +#line 23983 "" i__1[1] = 6, a__1[1] = "znotes"; -#line 23989 "" +#line 23983 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)127); -#line 23990 "" +#line 23984 "" lenline = 7; -#line 23991 "" +#line 23985 "" i__2 = *nv - 1; -#line 23991 "" +#line 23985 "" for (iv = 1; iv <= i__2; ++iv) { /* Writing concatenation */ -#line 23992 "" +#line 23986 "" i__1[0] = lenline, a__1[0] = notexq; -#line 23992 "" +#line 23986 "" i__1[1] = 1, a__1[1] = sepsymq + iv; -#line 23992 "" +#line 23986 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)127); -#line 23993 "" +#line 23987 "" ++lenline; -#line 23994 "" +#line 23988 "" /* L22: */ -#line 23994 "" +#line 23988 "" } /* Writing concatenation */ -#line 23995 "" +#line 23989 "" i__3[0] = lenline, a__2[0] = notexq; -#line 23995 "" +#line 23989 "" i__3[1] = 1, a__2[1] = sq; -#line 23995 "" +#line 23989 "" i__3[2] = 10, a__2[2] = "zcharnote{"; -#line 23995 "" +#line 23989 "" s_cat(notexq, a__2, i__3, &c__3, (ftnlen)127); -#line 23996 "" +#line 23990 "" lenline += 11; -#line 23997 "" +#line 23991 "" if (! comtitl_1.headlog) { -#line 23998 "" +#line 23992 "" comtitl_1.inhead = *inhnoh; -#line 23999 "" +#line 23993 "" } -#line 24000 "" +#line 23994 "" if (*vshrink && comlast_1.usevshrink) { -#line 24001 "" +#line 23995 "" comtitl_1.inhead = 16; -#line 24002 "" +#line 23996 "" } -#line 24003 "" +#line 23997 "" r__1 = comtitl_1.inhead + .01f; -#line 24003 "" +#line 23997 "" ndig = (integer) r_lg10(&r__1) + 1; -#line 24004 "" +#line 23998 "" i__2 = lenline; -#line 24004 "" +#line 23998 "" ici__1.icierr = 0; -#line 24004 "" +#line 23998 "" ici__1.icirnum = 1; -#line 24004 "" +#line 23998 "" ici__1.icirlen = lenline + ndig + 10 - i__2; -#line 24004 "" +#line 23998 "" ici__1.iciunit = notexq + i__2; /* Writing concatenation */ -#line 24004 "" +#line 23998 "" i__3[0] = 2, a__2[0] = "(i"; -#line 24004 "" +#line 23998 "" i__4 = ndig + 48; -#line 24004 "" +#line 23998 "" chax_(ch__2, (ftnlen)1, &i__4); -#line 24004 "" +#line 23998 "" i__3[1] = 1, a__2[1] = ch__2; -#line 24004 "" +#line 23998 "" i__3[2] = 5, a__2[2] = ",a10)"; -#line 24004 "" +#line 23998 "" ici__1.icifmt = (s_cat(ch__1, a__2, i__3, &c__3, (ftnlen)8), ch__1); -#line 24004 "" +#line 23998 "" s_wsfi(&ici__1); -#line 24004 "" +#line 23998 "" do_fio(&c__1, (char *)&comtitl_1.inhead, (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 24004 "" +#line 23998 "" i__5[0] = 2, a__3[0] = "}{"; -#line 24004 "" +#line 23998 "" i__5[1] = 1, a__3[1] = sq; -#line 24004 "" +#line 23998 "" i__5[2] = 7, a__3[2] = "titles{"; -#line 24004 "" +#line 23998 "" s_cat(ch__3, a__3, i__5, &c__3, (ftnlen)10); -#line 24004 "" +#line 23998 "" do_fio(&c__1, ch__3, (ftnlen)10); -#line 24004 "" +#line 23998 "" e_wsfi(); -#line 24006 "" +#line 24000 "" lenline = lenline + ndig + 10; /* Vertical skip at top of page (\Il) = etatop*glueil. Needed whether */ /* headers are present or not. */ -#line 24011 "" +#line 24005 "" glueil = *xnsttop / *etatop; -#line 24012 "" +#line 24006 "" vskil = *etatop * glueil; -#line 24013 "" +#line 24007 "" if (*vshrink && comlast_1.usevshrink) { -#line 24013 "" +#line 24007 "" vskil = 2.f; -#line 24013 "" +#line 24007 "" } -#line 24014 "" +#line 24008 "" writflot_(&vskil, notexq, &lenline, (ftnlen)127); -#line 24015 "" +#line 24009 "" if (! comtitl_1.headlog) { -#line 24016 "" +#line 24010 "" if (comlast_1.islast) { -#line 24016 "" - s_wsfe(&io___1711); +#line 24010 "" + s_wsfe(&io___1706); /* Writing concatenation */ -#line 24016 "" +#line 24010 "" i__6[0] = lenline, a__4[0] = notexq; -#line 24016 "" +#line 24010 "" i__6[1] = 17, a__4[1] = "}{}{0}{}{0}{}{0}}"; -#line 24016 "" +#line 24010 "" i__6[2] = 1, a__4[2] = sq; -#line 24016 "" +#line 24010 "" i__6[3] = 3, a__4[3] = "en%"; -#line 24016 "" +#line 24010 "" s_cat(ch__4, a__4, i__6, &c__4, (ftnlen)148); -#line 24016 "" +#line 24010 "" do_fio(&c__1, ch__4, lenline + 21); -#line 24016 "" +#line 24010 "" e_wsfe(); -#line 24016 "" +#line 24010 "" } -#line 24018 "" +#line 24012 "" } else { /* Writing concatenation */ -#line 24019 "" +#line 24013 "" i__1[0] = lenline, a__1[0] = notexq; -#line 24019 "" +#line 24013 "" i__1[1] = 2, a__1[1] = "}{"; -#line 24019 "" +#line 24013 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)127); -#line 24020 "" +#line 24014 "" lenline += 2; -#line 24021 "" +#line 24015 "" lcq = lenstr_(comtitl_1.instrq, &c__120, (ftnlen)120); -#line 24022 "" +#line 24016 "" if (lcq > 0) { -#line 24023 "" +#line 24017 "" xitil = *etait * glueil; -#line 24024 "" +#line 24018 "" if (*vshrink && comlast_1.usevshrink) { -#line 24024 "" +#line 24018 "" xitil = 2.f; -#line 24024 "" +#line 24018 "" } /* Writing concatenation */ -#line 24025 "" +#line 24019 "" i__3[0] = lenline, a__2[0] = notexq; -#line 24025 "" +#line 24019 "" i__3[1] = lcq, a__2[1] = comtitl_1.instrq; -#line 24025 "" +#line 24019 "" i__3[2] = 2, a__2[2] = "}{"; -#line 24025 "" +#line 24019 "" s_cat(notexq, a__2, i__3, &c__3, (ftnlen)127); /* Null out instrument once used */ -#line 24029 "" +#line 24023 "" s_copy(comtitl_1.instrq, " ", (ftnlen)120, (ftnlen)1); -#line 24030 "" +#line 24024 "" lenline = lenline + lcq + 2; -#line 24031 "" +#line 24025 "" writflot_(&xitil, notexq, &lenline, (ftnlen)127); -#line 24032 "" +#line 24026 "" } else { /* Writing concatenation */ -#line 24033 "" +#line 24027 "" i__1[0] = lenline, a__1[0] = notexq; -#line 24033 "" +#line 24027 "" i__1[1] = 3, a__1[1] = "}{0"; -#line 24033 "" +#line 24027 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)127); -#line 24034 "" +#line 24028 "" lenline += 3; -#line 24035 "" +#line 24029 "" } -#line 24036 "" +#line 24030 "" if (comlast_1.islast) { -#line 24036 "" - s_wsfe(&io___1714); +#line 24030 "" + s_wsfe(&io___1709); /* Writing concatenation */ -#line 24036 "" +#line 24030 "" i__1[0] = lenline, a__1[0] = notexq; -#line 24036 "" +#line 24030 "" i__1[1] = 2, a__1[1] = "}%"; -#line 24036 "" +#line 24030 "" s_cat(ch__5, a__1, i__1, &c__2, (ftnlen)129); -#line 24036 "" +#line 24030 "" do_fio(&c__1, ch__5, lenline + 2); -#line 24036 "" +#line 24030 "" e_wsfe(); -#line 24036 "" +#line 24030 "" } -#line 24037 "" +#line 24031 "" s_copy(notexq, "{", (ftnlen)127, (ftnlen)1); -#line 24038 "" +#line 24032 "" lenline = 1; -#line 24039 "" +#line 24033 "" lcq = lenstr_(comtitl_1.titleq, &c__120, (ftnlen)120); -#line 24040 "" +#line 24034 "" if (lcq > 0) { /* Writing concatenation */ -#line 24041 "" +#line 24035 "" i__1[0] = lenline, a__1[0] = notexq; -#line 24041 "" +#line 24035 "" i__1[1] = lcq, a__1[1] = comtitl_1.titleq; -#line 24041 "" +#line 24035 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)127); -#line 24042 "" +#line 24036 "" lenline += lcq; -#line 24043 "" +#line 24037 "" } else { -#line 24044 "" +#line 24038 "" printl_(" ", (ftnlen)1); -#line 24045 "" +#line 24039 "" printl_("WARNING", (ftnlen)7); -#line 24046 "" +#line 24040 "" printl_(" In a title block, you have specified instrument and/or" , (ftnlen)56); -#line 24048 "" +#line 24042 "" printl_(" composer but no title for the piece.", (ftnlen)38); -#line 24050 "" +#line 24044 "" } /* Writing concatenation */ -#line 24051 "" +#line 24045 "" i__1[0] = lenline, a__1[0] = notexq; -#line 24051 "" +#line 24045 "" i__1[1] = 2, a__1[1] = "}{"; -#line 24051 "" +#line 24045 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)127); -#line 24052 "" +#line 24046 "" lenline += 2; -#line 24053 "" +#line 24047 "" xtcil = *etatc * glueil; -#line 24054 "" +#line 24048 "" lcq = lenstr_(comtitl_1.compoq, &c__120, (ftnlen)120); -#line 24055 "" +#line 24049 "" if (lcq == 0) { -#line 24055 "" +#line 24049 "" xtcil *= 2; -#line 24055 "" +#line 24049 "" } -#line 24056 "" +#line 24050 "" if (*vshrink && comlast_1.usevshrink) { -#line 24056 "" +#line 24050 "" xtcil = 2.f; -#line 24056 "" +#line 24050 "" } -#line 24057 "" +#line 24051 "" writflot_(&xtcil, notexq, &lenline, (ftnlen)127); /* Writing concatenation */ -#line 24058 "" +#line 24052 "" i__1[0] = lenline, a__1[0] = notexq; -#line 24058 "" +#line 24052 "" i__1[1] = 2, a__1[1] = "}{"; -#line 24058 "" +#line 24052 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)127); -#line 24059 "" +#line 24053 "" lenline += 2; -#line 24060 "" +#line 24054 "" if (lcq > 0) { /* Writing concatenation */ -#line 24061 "" +#line 24055 "" i__3[0] = lenline, a__2[0] = notexq; -#line 24061 "" +#line 24055 "" i__3[1] = lcq, a__2[1] = comtitl_1.compoq; -#line 24061 "" +#line 24055 "" i__3[2] = 2, a__2[2] = "}{"; -#line 24061 "" +#line 24055 "" s_cat(notexq, a__2, i__3, &c__3, (ftnlen)127); -#line 24062 "" +#line 24056 "" lenline = lenline + 2 + lcq; /* Null out compoq so it does not get written later */ -#line 24066 "" +#line 24060 "" s_copy(comtitl_1.compoq, " ", (ftnlen)120, (ftnlen)1); -#line 24067 "" +#line 24061 "" xcsil = *etacs1 * glueil; -#line 24068 "" +#line 24062 "" if (*vshrink && comlast_1.usevshrink) { -#line 24068 "" +#line 24062 "" xcsil = 2.f; -#line 24068 "" +#line 24062 "" } -#line 24069 "" +#line 24063 "" writflot_(&xcsil, notexq, &lenline, (ftnlen)127); -#line 24070 "" +#line 24064 "" } else { /* Writing concatenation */ -#line 24071 "" +#line 24065 "" i__1[0] = lenline, a__1[0] = notexq; -#line 24071 "" +#line 24065 "" i__1[1] = 3, a__1[1] = "}{0"; -#line 24071 "" +#line 24065 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)127); -#line 24072 "" +#line 24066 "" lenline += 3; -#line 24073 "" +#line 24067 "" } -#line 24074 "" +#line 24068 "" if (comlast_1.islast) { -#line 24074 "" - s_wsfe(&io___1717); +#line 24068 "" + s_wsfe(&io___1712); /* Writing concatenation */ -#line 24074 "" +#line 24068 "" i__6[0] = lenline, a__4[0] = notexq; -#line 24074 "" +#line 24068 "" i__6[1] = 2, a__4[1] = "}}"; -#line 24074 "" +#line 24068 "" i__6[2] = 1, a__4[2] = sq; -#line 24074 "" +#line 24068 "" i__6[3] = 3, a__4[3] = "en%"; -#line 24074 "" +#line 24068 "" s_cat(ch__6, a__4, i__6, &c__4, (ftnlen)133); -#line 24074 "" +#line 24068 "" do_fio(&c__1, ch__6, lenline + 6); -#line 24074 "" +#line 24068 "" e_wsfe(); -#line 24074 "" +#line 24068 "" } -#line 24075 "" +#line 24069 "" comtitl_1.headlog = FALSE_; -#line 24076 "" +#line 24070 "" } -#line 24077 "" +#line 24071 "" return 0; } /* puttitle_ */ @@ -59850,218 +59786,218 @@ L5: /* Places digit for xtuplet. */ -#line 24090 "" +#line 24084 "" if (*iflop != 0 && *multb > 0) { /* Number goes on beam side, move R/L by .5 wheadpt for upper/lower */ -#line 24094 "" +#line 24088 "" *eloff -= *iud * .5f * *wheadpt / *poenom; /* Number goes on beam side, must use beam parameters to set pos'n */ -#line 24098 "" +#line 24092 "" *nlnum = *nolev1 + *islope / *slfac * *eloff + *iup * (*multb + 8); -#line 24099 "" +#line 24093 "" if (*multb >= 2) { -#line 24099 "" +#line 24093 "" *nlnum += *iup; -#line 24099 "" +#line 24093 "" } -#line 24100 "" +#line 24094 "" } else { -#line 24101 "" +#line 24095 "" r__1 = *xnlmid - 1 + *iud * 3 + *iflop * 11; -#line 24101 "" +#line 24095 "" *nlnum = i_nint(&r__1); -#line 24102 "" +#line 24096 "" } -#line 24103 "" +#line 24097 "" if (! bit_test(*islur,31)) { /* Only print number when wanted. First check vert, horiz offset */ -#line 24107 "" +#line 24101 "" if (bit_test(*irest,1)) { -#line 24107 "" +#line 24101 "" *nlnum = *nlnum + igetbits_(mult, &c__8, &c__16) - 64; -#line 24107 "" +#line 24101 "" } -#line 24108 "" +#line 24102 "" if (bit_test(*irest,7)) { -#line 24108 "" +#line 24102 "" *eloff += ((31 & lbit_shift(*irest, (ftnlen)-9)) * .1f - 1.6f) * * wheadpt / *poenom; -#line 24108 "" +#line 24102 "" } -#line 24110 "" +#line 24104 "" if (! (*usexnumt)) { /* Writing concatenation */ -#line 24111 "" +#line 24105 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 24111 "" +#line 24105 "" i__1[0] = 1, a__1[0] = ch__1; -#line 24111 "" +#line 24105 "" i__1[1] = 5, a__1[1] = "xnum{"; -#line 24111 "" +#line 24105 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); -#line 24112 "" +#line 24106 "" *lnote = 10; -#line 24113 "" +#line 24107 "" istrtn = 7; -#line 24114 "" +#line 24108 "" } else { /* Writing concatenation */ -#line 24115 "" +#line 24109 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 24115 "" +#line 24109 "" i__1[0] = 1, a__1[0] = ch__1; -#line 24115 "" +#line 24109 "" i__1[1] = 6, a__1[1] = "xnumt{"; -#line 24115 "" +#line 24109 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); -#line 24116 "" +#line 24110 "" *lnote = 11; -#line 24117 "" +#line 24111 "" istrtn = 8; -#line 24118 "" +#line 24112 "" } -#line 24119 "" +#line 24113 "" if (*eloff < .995f) { -#line 24120 "" +#line 24114 "" ici__1.icierr = 0; -#line 24120 "" +#line 24114 "" ici__1.icirnum = 1; -#line 24120 "" +#line 24114 "" ici__1.icirlen = 4; -#line 24120 "" +#line 24114 "" ici__1.iciunit = notexq + (istrtn - 1); -#line 24120 "" +#line 24114 "" ici__1.icifmt = "(i1,f3.2)"; -#line 24120 "" +#line 24114 "" s_wsfi(&ici__1); -#line 24120 "" +#line 24114 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 24120 "" +#line 24114 "" do_fio(&c__1, (char *)&(*eloff), (ftnlen)sizeof(real)); -#line 24120 "" +#line 24114 "" e_wsfi(); -#line 24121 "" +#line 24115 "" } else if (*eloff < 9.995f) { -#line 24122 "" +#line 24116 "" ici__1.icierr = 0; -#line 24122 "" +#line 24116 "" ici__1.icirnum = 1; -#line 24122 "" +#line 24116 "" ici__1.icirlen = 4; -#line 24122 "" +#line 24116 "" ici__1.iciunit = notexq + (istrtn - 1); -#line 24122 "" +#line 24116 "" ici__1.icifmt = "(f4.2)"; -#line 24122 "" +#line 24116 "" s_wsfi(&ici__1); -#line 24122 "" +#line 24116 "" do_fio(&c__1, (char *)&(*eloff), (ftnlen)sizeof(real)); -#line 24122 "" +#line 24116 "" e_wsfi(); -#line 24123 "" +#line 24117 "" } else { -#line 24124 "" +#line 24118 "" ici__1.icierr = 0; -#line 24124 "" +#line 24118 "" ici__1.icirnum = 1; -#line 24124 "" +#line 24118 "" ici__1.icirlen = 5; -#line 24124 "" +#line 24118 "" ici__1.iciunit = notexq + (istrtn - 1); -#line 24124 "" +#line 24118 "" ici__1.icifmt = "(f5.2)"; -#line 24124 "" +#line 24118 "" s_wsfi(&ici__1); -#line 24124 "" +#line 24118 "" do_fio(&c__1, (char *)&(*eloff), (ftnlen)sizeof(real)); -#line 24124 "" +#line 24118 "" e_wsfi(); -#line 24125 "" +#line 24119 "" ++(*lnote); -#line 24126 "" +#line 24120 "" } -#line 24127 "" +#line 24121 "" notefq_(noteq, &lnoten, nlnum, ncmid, (ftnlen)8); /* Writing concatenation */ -#line 24128 "" +#line 24122 "" i__2[0] = *lnote, a__2[0] = notexq; -#line 24128 "" +#line 24122 "" i__2[1] = 1, a__2[1] = "}"; -#line 24128 "" +#line 24122 "" i__2[2] = lnoten, a__2[2] = noteq; -#line 24128 "" +#line 24122 "" s_cat(notexq, a__2, i__2, &c__3, (ftnlen)79); -#line 24129 "" +#line 24123 "" *lnote = *lnote + 1 + lnoten; -#line 24130 "" +#line 24124 "" if (*ntupv < 10) { -#line 24131 "" +#line 24125 "" i__3 = *lnote; -#line 24131 "" +#line 24125 "" ici__1.icierr = 0; -#line 24131 "" +#line 24125 "" ici__1.icirnum = 1; -#line 24131 "" +#line 24125 "" ici__1.icirlen = *lnote + 1 - i__3; -#line 24131 "" +#line 24125 "" ici__1.iciunit = notexq + i__3; -#line 24131 "" +#line 24125 "" ici__1.icifmt = "(i1)"; -#line 24131 "" +#line 24125 "" s_wsfi(&ici__1); -#line 24131 "" +#line 24125 "" do_fio(&c__1, (char *)&(*ntupv), (ftnlen)sizeof(integer)); -#line 24131 "" +#line 24125 "" e_wsfi(); -#line 24132 "" +#line 24126 "" ++(*lnote); -#line 24133 "" +#line 24127 "" } else { /* Writing concatenation */ -#line 24134 "" +#line 24128 "" i__1[0] = *lnote, a__1[0] = notexq; -#line 24134 "" +#line 24128 "" i__1[1] = 1, a__1[1] = "{"; -#line 24134 "" +#line 24128 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); -#line 24135 "" +#line 24129 "" i__3 = *lnote + 1; -#line 24135 "" +#line 24129 "" ici__1.icierr = 0; -#line 24135 "" +#line 24129 "" ici__1.icirnum = 1; -#line 24135 "" +#line 24129 "" ici__1.icirlen = *lnote + 3 - i__3; -#line 24135 "" +#line 24129 "" ici__1.iciunit = notexq + i__3; -#line 24135 "" +#line 24129 "" ici__1.icifmt = "(i2)"; -#line 24135 "" +#line 24129 "" s_wsfi(&ici__1); -#line 24135 "" +#line 24129 "" do_fio(&c__1, (char *)&(*ntupv), (ftnlen)sizeof(integer)); -#line 24135 "" +#line 24129 "" e_wsfi(); /* Writing concatenation */ -#line 24136 "" +#line 24130 "" i__1[0] = *lnote + 3, a__1[0] = notexq; -#line 24136 "" +#line 24130 "" i__1[1] = 1, a__1[1] = "}"; -#line 24136 "" +#line 24130 "" s_cat(notexq, a__1, i__1, &c__2, (ftnlen)79); -#line 24137 "" +#line 24131 "" *lnote += 4; -#line 24138 "" +#line 24132 "" } -#line 24139 "" +#line 24133 "" } -#line 24140 "" +#line 24134 "" return 0; } /* putxtn_ */ @@ -60075,97 +60011,97 @@ L5: static integer ip1, ip2; extern /* Subroutine */ int getbuf_(char *, ftnlen); -#line 24154 "" +#line 24148 "" if (! commac_1.mplay) { -#line 24155 "" +#line 24149 "" if (inbuff_1.ilbuf > inbuff_1.nlbuf) { -#line 24155 "" +#line 24149 "" goto L999; -#line 24155 "" +#line 24149 "" } -#line 24156 "" +#line 24150 "" getbuf_(string, string_len); -#line 24157 "" +#line 24151 "" return 0; -#line 24158 "" +#line 24152 "" L999: -#line 24158 "" +#line 24152 "" *lastchar = TRUE_; -#line 24159 "" +#line 24153 "" return 0; -#line 24160 "" +#line 24154 "" } else { /* Play a macro. Set pointer to first character needed in buffer */ -#line 24164 "" +#line 24158 "" if (c1ommac_1.ilmac == c1ommac_1.il1mac[commac_1.macnum - 1]) { /* Getting first line of macro */ -#line 24168 "" +#line 24162 "" ip1 = c1ommac_1.ip1mac[commac_1.macnum - 1]; -#line 24169 "" +#line 24163 "" c1ommac_1.iplmac = ip1 - c1ommac_1.ic1mac[commac_1.macnum - 1]; -#line 24170 "" +#line 24164 "" } else if (c1ommac_1.ilmac <= c1ommac_1.il2mac[commac_1.macnum - 1]) { /* Beyond first line of macro. Advance line-start pointer. */ -#line 24174 "" +#line 24168 "" c1ommac_1.iplmac += inbuff_1.lbuf[c1ommac_1.ilmac - 2]; -#line 24175 "" +#line 24169 "" ip1 = c1ommac_1.iplmac + 1; -#line 24176 "" +#line 24170 "" } else { /* Beyond last line of macro. Terminate it! */ -#line 24180 "" +#line 24174 "" commac_1.mplay = FALSE_; -#line 24181 "" +#line 24175 "" commac_1.endmac = TRUE_; -#line 24182 "" +#line 24176 "" return 0; -#line 24183 "" +#line 24177 "" } -#line 24184 "" +#line 24178 "" if (c1ommac_1.ilmac == c1ommac_1.il2mac[commac_1.macnum - 1]) { /* Getting last line of macro. */ -#line 24188 "" +#line 24182 "" ip2 = c1ommac_1.ip2mac[commac_1.macnum - 1]; -#line 24189 "" +#line 24183 "" } else { /* Getting line before last line of macro. */ -#line 24193 "" +#line 24187 "" ip2 = c1ommac_1.iplmac + inbuff_1.lbuf[c1ommac_1.ilmac - 1]; -#line 24194 "" +#line 24188 "" } -#line 24195 "" +#line 24189 "" if (ip2 >= ip1) { -#line 24196 "" +#line 24190 "" s_copy(string, inbuff_1.bufq + (ip1 - 1), string_len, ip2 - (ip1 - 1)); -#line 24197 "" +#line 24191 "" } else { /* Kluge for when macro start is on a line by itself */ -#line 24201 "" +#line 24195 "" s_copy(string, " ", string_len, (ftnlen)1); -#line 24202 "" +#line 24196 "" } -#line 24203 "" +#line 24197 "" ++c1ommac_1.ilmac; -#line 24204 "" +#line 24198 "" return 0; -#line 24205 "" +#line 24199 "" } -#line 24206 "" +#line 24200 "" return 0; } /* read10_ */ @@ -60194,7 +60130,7 @@ doublereal readin_(char *lineq, integer *iccount, integer *nline, ftnlen getchar_(char *, integer *, char *, ftnlen, ftnlen); /* Fortran I/O blocks */ - static cilist io___1726 = { 0, 6, 0, 0, 0 }; + static cilist io___1721 = { 0, 6, 0, 0, 0 }; @@ -60202,123 +60138,123 @@ doublereal readin_(char *lineq, integer *iccount, integer *nline, ftnlen /* file 10 (jobname.pmx) and increments nline if needed, passes over */ /* comment lines */ -#line 24215 "" +#line 24209 "" L4: -#line 24215 "" +#line 24209 "" if (*iccount == 128) { -#line 24216 "" +#line 24210 "" L1: -#line 24216 "" +#line 24210 "" getbuf_(lineq, (ftnlen)128); -#line 24217 "" +#line 24211 "" ++(*nline); -#line 24218 "" +#line 24212 "" if (*(unsigned char *)lineq == '%') { -#line 24218 "" +#line 24212 "" goto L1; -#line 24218 "" +#line 24212 "" } -#line 24219 "" +#line 24213 "" *iccount = 0; -#line 24220 "" +#line 24214 "" } -#line 24221 "" +#line 24215 "" ++(*iccount); /* Find next non-blank or end of line */ -#line 24225 "" +#line 24219 "" for (*iccount = *iccount; *iccount <= 127; ++(*iccount)) { -#line 24226 "" +#line 24220 "" if (*(unsigned char *)&lineq[*iccount - 1] != ' ') { -#line 24226 "" +#line 24220 "" goto L3; -#line 24226 "" +#line 24220 "" } -#line 24227 "" +#line 24221 "" /* L2: */ -#line 24227 "" +#line 24221 "" } /* If here, need to get a new line */ -#line 24231 "" +#line 24225 "" *iccount = 128; -#line 24232 "" +#line 24226 "" goto L4; -#line 24233 "" +#line 24227 "" L3: /* iccount now points to start of number to read */ -#line 24237 "" +#line 24231 "" i1 = *iccount; -#line 24238 "" +#line 24232 "" L5: -#line 24238 "" +#line 24232 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); /* Remember that getchar increments iccount, then reads a character. */ -#line 24242 "" +#line 24236 "" if (i_indx("0123456789.-", durq, (ftnlen)12, (ftnlen)1) > 0) { -#line 24242 "" +#line 24236 "" goto L5; -#line 24242 "" +#line 24236 "" } -#line 24243 "" +#line 24237 "" i2 = *iccount - 1; -#line 24244 "" +#line 24238 "" if (i2 < i1) { -#line 24245 "" - s_wsle(&io___1726); +#line 24239 "" + s_wsle(&io___1721); /* Writing concatenation */ -#line 24245 "" +#line 24239 "" i__1[0] = 7, a__1[0] = "Found \""; -#line 24245 "" +#line 24239 "" i__1[1] = 1, a__1[1] = durq; -#line 24245 "" +#line 24239 "" i__1[2] = 19, a__1[2] = "\" instead of number"; -#line 24245 "" +#line 24239 "" s_cat(ch__1, a__1, i__1, &c__3, (ftnlen)27); -#line 24245 "" +#line 24239 "" do_lio(&c__9, &c__1, ch__1, (ftnlen)27); -#line 24245 "" +#line 24239 "" e_wsle(); -#line 24246 "" +#line 24240 "" stop1_(); -#line 24247 "" +#line 24241 "" } -#line 24248 "" +#line 24242 "" icf = i2 - i1 + 49; -#line 24249 "" +#line 24243 "" ici__1.icierr = 0; -#line 24249 "" +#line 24243 "" ici__1.iciend = 0; -#line 24249 "" +#line 24243 "" ici__1.icirnum = 1; -#line 24249 "" +#line 24243 "" ici__1.icirlen = i2 - (i1 - 1); -#line 24249 "" +#line 24243 "" ici__1.iciunit = lineq + (i1 - 1); /* Writing concatenation */ -#line 24249 "" +#line 24243 "" i__1[0] = 2, a__1[0] = "(f"; -#line 24249 "" +#line 24243 "" chax_(ch__3, (ftnlen)1, &icf); -#line 24249 "" +#line 24243 "" i__1[1] = 1, a__1[1] = ch__3; -#line 24249 "" +#line 24243 "" i__1[2] = 3, a__1[2] = ".0)"; -#line 24249 "" +#line 24243 "" ici__1.icifmt = (s_cat(ch__2, a__1, i__1, &c__3, (ftnlen)6), ch__2); -#line 24249 "" +#line 24243 "" s_rsfi(&ici__1); -#line 24249 "" +#line 24243 "" do_fio(&c__1, (char *)&ret_val, (ftnlen)sizeof(real)); -#line 24249 "" +#line 24243 "" e_rsfi(); -#line 24250 "" +#line 24244 "" return ret_val; } /* readin_ */ @@ -60344,160 +60280,160 @@ L5: extern /* Subroutine */ int getchar_(char *, integer *, char *, ftnlen, ftnlen); -#line 24255 "" +#line 24249 "" i__1 = *iccount; -#line 24255 "" +#line 24249 "" if (i_indx(lineq + i__1, "/", *iccount + 3 - i__1, (ftnlen)1) == 0) { /* No slashes, so use old method */ -#line 24259 "" +#line 24253 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 24260 "" +#line 24254 "" if (*(unsigned char *)durq == '-') { /* Negative numerator is used only to printed; signals vertical slash */ -#line 24264 "" +#line 24258 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 24265 "" +#line 24259 "" *mtrnum = -(*(unsigned char *)durq - 48); -#line 24266 "" +#line 24260 "" } else if (*(unsigned char *)durq == 'o') { /* Numerator is EXACTLY 1 */ -#line 24270 "" +#line 24264 "" *mtrnum = 1; -#line 24271 "" +#line 24265 "" } else { -#line 24272 "" +#line 24266 "" *mtrnum = *(unsigned char *)durq - 48; -#line 24273 "" +#line 24267 "" if (*mtrnum == 1) { /* Numerator is >9 */ -#line 24277 "" +#line 24271 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 24278 "" +#line 24272 "" *mtrnum = *(unsigned char *)durq - 38; -#line 24279 "" +#line 24273 "" } -#line 24280 "" +#line 24274 "" } -#line 24281 "" +#line 24275 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 24282 "" +#line 24276 "" if (*(unsigned char *)durq == 'o') { -#line 24283 "" +#line 24277 "" *mtrden = 1; -#line 24284 "" +#line 24278 "" } else { -#line 24285 "" +#line 24279 "" *mtrden = *(unsigned char *)durq - 48; -#line 24286 "" +#line 24280 "" if (*mtrden == 1) { -#line 24287 "" +#line 24281 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 24288 "" +#line 24282 "" *mtrden = *(unsigned char *)durq - 38; -#line 24289 "" +#line 24283 "" } -#line 24290 "" +#line 24284 "" } -#line 24291 "" +#line 24285 "" } else { /* Expect the form m[n1]/[n2]/[n3]/[n4] . Advance iccount by one from '/' or 'm' */ -#line 24295 "" +#line 24289 "" ++(*iccount); -#line 24296 "" +#line 24290 "" ns = i_indx(lineq + (*iccount - 1), "/", 128 - (*iccount - 1), ( ftnlen)1); -#line 24297 "" +#line 24291 "" ici__1.icierr = 0; -#line 24297 "" +#line 24291 "" ici__1.iciend = 0; -#line 24297 "" +#line 24291 "" ici__1.icirnum = 1; -#line 24297 "" +#line 24291 "" ici__1.icirlen = *iccount + ns - 2 - (*iccount - 1); -#line 24297 "" +#line 24291 "" ici__1.iciunit = lineq + (*iccount - 1); /* Writing concatenation */ -#line 24297 "" +#line 24291 "" i__2[0] = 2, a__1[0] = "(i"; -#line 24297 "" +#line 24291 "" i__1 = ns + 47; -#line 24297 "" +#line 24291 "" chax_(ch__2, (ftnlen)1, &i__1); -#line 24297 "" +#line 24291 "" i__2[1] = 1, a__1[1] = ch__2; -#line 24297 "" +#line 24291 "" i__2[2] = 1, a__1[2] = ")"; -#line 24297 "" +#line 24291 "" ici__1.icifmt = (s_cat(ch__1, a__1, i__2, &c__3, (ftnlen)4), ch__1); -#line 24297 "" +#line 24291 "" s_rsfi(&ici__1); -#line 24297 "" +#line 24291 "" do_fio(&c__1, (char *)&(*mtrnum), (ftnlen)sizeof(integer)); -#line 24297 "" +#line 24291 "" e_rsfi(); /* Reset iccount to start of second integer */ -#line 24301 "" +#line 24295 "" *iccount += ns; /* There must be either a slash or a blank at pos'n 2 or 3 */ -#line 24305 "" +#line 24299 "" ns = i_indx(lineq + (*iccount - 1), "/", (ftnlen)3, (ftnlen)1); -#line 24306 "" +#line 24300 "" if (ns == 0) { -#line 24306 "" +#line 24300 "" ns = i_indx(lineq + (*iccount - 1), " ", (ftnlen)3, (ftnlen)1); -#line 24306 "" +#line 24300 "" } -#line 24307 "" +#line 24301 "" ici__1.icierr = 0; -#line 24307 "" +#line 24301 "" ici__1.iciend = 0; -#line 24307 "" +#line 24301 "" ici__1.icirnum = 1; -#line 24307 "" +#line 24301 "" ici__1.icirlen = *iccount + ns - 2 - (*iccount - 1); -#line 24307 "" +#line 24301 "" ici__1.iciunit = lineq + (*iccount - 1); /* Writing concatenation */ -#line 24307 "" +#line 24301 "" i__2[0] = 2, a__1[0] = "(i"; -#line 24307 "" +#line 24301 "" i__1 = ns + 47; -#line 24307 "" +#line 24301 "" chax_(ch__2, (ftnlen)1, &i__1); -#line 24307 "" +#line 24301 "" i__2[1] = 1, a__1[1] = ch__2; -#line 24307 "" +#line 24301 "" i__2[2] = 1, a__1[2] = ")"; -#line 24307 "" +#line 24301 "" ici__1.icifmt = (s_cat(ch__1, a__1, i__2, &c__3, (ftnlen)4), ch__1); -#line 24307 "" +#line 24301 "" s_rsfi(&ici__1); -#line 24307 "" +#line 24301 "" do_fio(&c__1, (char *)&(*mtrden), (ftnlen)sizeof(integer)); -#line 24307 "" +#line 24301 "" e_rsfi(); /* Set iccount to last character used */ -#line 24311 "" +#line 24305 "" *iccount = *iccount + ns - 1; -#line 24312 "" +#line 24306 "" } -#line 24313 "" +#line 24307 "" return 0; } /* readmeter_ */ @@ -60524,7 +60460,7 @@ L5: char *, ftnlen, ftnlen); /* Fortran I/O blocks */ - static cilist io___1732 = { 0, 6, 0, 0, 0 }; + static cilist io___1727 = { 0, 6, 0, 0, 0 }; @@ -60533,78 +60469,78 @@ L5: /* call this routine *after* detecting a number or decimal. */ /* On exit, durq is next character after end of number. */ -#line 24324 "" +#line 24318 "" i1 = *iccount; -#line 24325 "" +#line 24319 "" L1: -#line 24325 "" +#line 24319 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 24326 "" +#line 24320 "" if (i_indx("0123456789.", durq, (ftnlen)11, (ftnlen)1) > 0) { -#line 24326 "" +#line 24320 "" goto L1; -#line 24326 "" +#line 24320 "" } -#line 24327 "" +#line 24321 "" i2 = *iccount - 1; -#line 24328 "" +#line 24322 "" if (i2 < i1) { -#line 24329 "" - s_wsle(&io___1732); +#line 24323 "" + s_wsle(&io___1727); /* Writing concatenation */ -#line 24329 "" +#line 24323 "" i__1[0] = 7, a__1[0] = "Found \""; -#line 24329 "" +#line 24323 "" i__1[1] = 1, a__1[1] = durq; -#line 24329 "" +#line 24323 "" i__1[2] = 19, a__1[2] = "\" instead of number"; -#line 24329 "" +#line 24323 "" s_cat(ch__1, a__1, i__1, &c__3, (ftnlen)27); -#line 24329 "" +#line 24323 "" do_lio(&c__9, &c__1, ch__1, (ftnlen)27); -#line 24329 "" +#line 24323 "" e_wsle(); -#line 24330 "" +#line 24324 "" stop1_(); -#line 24331 "" +#line 24325 "" } else if (*(unsigned char *)&lineq[i1 - 1] == '.' && *(unsigned char *)& lineq[i2 - 1] == '.') { -#line 24332 "" +#line 24326 "" --i2; -#line 24333 "" +#line 24327 "" --(*iccount); -#line 24334 "" +#line 24328 "" } -#line 24335 "" +#line 24329 "" icf = i2 - i1 + 49; -#line 24336 "" +#line 24330 "" ici__1.icierr = 0; -#line 24336 "" +#line 24330 "" ici__1.iciend = 0; -#line 24336 "" +#line 24330 "" ici__1.icirnum = 1; -#line 24336 "" +#line 24330 "" ici__1.icirlen = i2 - (i1 - 1); -#line 24336 "" +#line 24330 "" ici__1.iciunit = lineq + (i1 - 1); /* Writing concatenation */ -#line 24336 "" +#line 24330 "" i__1[0] = 2, a__1[0] = "(f"; -#line 24336 "" +#line 24330 "" chax_(ch__3, (ftnlen)1, &icf); -#line 24336 "" +#line 24330 "" i__1[1] = 1, a__1[1] = ch__3; -#line 24336 "" +#line 24330 "" i__1[2] = 3, a__1[2] = ".0)"; -#line 24336 "" +#line 24330 "" ici__1.icifmt = (s_cat(ch__2, a__1, i__1, &c__3, (ftnlen)6), ch__2); -#line 24336 "" +#line 24330 "" s_rsfi(&ici__1); -#line 24336 "" +#line 24330 "" do_fio(&c__1, (char *)&(*fnum), (ftnlen)sizeof(real)); -#line 24336 "" +#line 24330 "" e_rsfi(); -#line 24337 "" +#line 24331 "" return 0; } /* readnum_ */ @@ -60620,13 +60556,13 @@ L1: /* Sets iwidbits of isdata, shifted by ishift, to ivalue */ -#line 24343 "" +#line 24337 "" ibase = pow_ii(&c__2, iwidbit) - 1; -#line 24344 "" +#line 24338 "" *isdata = ~ lbit_shift(ibase, *ishift) & *isdata; -#line 24345 "" +#line 24339 "" *isdata |= lbit_shift(*ivalue, *ishift); -#line 24346 "" +#line 24340 "" return 0; } /* setbits_ */ @@ -60648,97 +60584,97 @@ L1: /* The MEAN SQUARE slope algorithm */ -#line 24368 "" +#line 24362 "" /* Parameter adjustments */ -#line 24368 "" +#line 24362 "" --ipb; -#line 24368 "" +#line 24362 "" --xelsk; -#line 24368 "" +#line 24362 "" -#line 24368 "" +#line 24362 "" /* Function Body */ -#line 24368 "" +#line 24362 "" ibc = all_1.ibmcnt[commvl_1.ivx - 1]; -#line 24369 "" +#line 24363 "" sumxx = 0.f; -#line 24370 "" +#line 24364 "" sumxy = 0.f; -#line 24371 "" +#line 24365 "" i__1 = *nnb; -#line 24371 "" +#line 24365 "" for (inb = 1; inb <= i__1; ++inb) { /* Computing 2nd power */ -#line 24372 "" +#line 24366 "" r__1 = xelsk[inb]; -#line 24372 "" +#line 24366 "" sumxx += r__1 * r__1; -#line 24373 "" +#line 24367 "" sumxy += xelsk[inb] * all_1.nolev[commvl_1.ivx + ipb[inb] * 24 - 25]; -#line 24374 "" +#line 24368 "" /* L2: */ -#line 24374 "" +#line 24368 "" } -#line 24375 "" +#line 24369 "" delta = *nnb * sumxx - *sumx * *sumx; -#line 24376 "" +#line 24370 "" em = (*nnb * sumxy - *sumx * *sumy) / delta; -#line 24377 "" +#line 24371 "" r__1 = em * .5f * all_1.slfac; -#line 24377 "" +#line 24371 "" *islope = i_nint(&r__1); -#line 24378 "" +#line 24372 "" if (abs(*islope) > 9) { -#line 24378 "" +#line 24372 "" *islope = i_sign(&c__9, islope); -#line 24378 "" +#line 24372 "" } -#line 24379 "" +#line 24373 "" beta = (*sumy - *islope / all_1.slfac * *sumx) / *nnb; -#line 24380 "" +#line 24374 "" *nolev1 = i_nint(&beta); /* Check if any stems are too short */ -#line 24384 "" +#line 24378 "" smin = 100.f; -#line 24385 "" +#line 24379 "" iul = -1; -#line 24386 "" +#line 24380 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + ibc * 24 - 25] == 'u') { -#line 24386 "" +#line 24380 "" iul = 1; -#line 24386 "" +#line 24380 "" } -#line 24387 "" +#line 24381 "" i__1 = *nnb; -#line 24387 "" +#line 24381 "" for (inb = 1; inb <= i__1; ++inb) { -#line 24388 "" +#line 24382 "" ybeam = *nolev1 + iul * all_1.stemlen + *islope * xelsk[inb] / all_1.slfac; -#line 24389 "" +#line 24383 "" ynote = (real) all_1.nolev[commvl_1.ivx + ipb[inb] * 24 - 25]; /* Computing MIN */ -#line 24390 "" +#line 24384 "" r__1 = smin, r__2 = iul * (ybeam - ynote); -#line 24390 "" +#line 24384 "" smin = dmin(r__1,r__2); -#line 24391 "" +#line 24385 "" /* L4: */ -#line 24391 "" +#line 24385 "" } -#line 24392 "" +#line 24386 "" if (smin < all_1.stemmin) { -#line 24393 "" +#line 24387 "" deficit = all_1.stemmin - smin; -#line 24394 "" +#line 24388 "" r__1 = *nolev1 + iul * deficit; -#line 24394 "" +#line 24388 "" *nolev1 = i_nint(&r__1); -#line 24395 "" +#line 24389 "" } -#line 24396 "" +#line 24390 "" return 0; } /* setbm2_ */ @@ -60766,165 +60702,165 @@ L1: ftnlen), g1etchar_(char *, integer *, char *, ftnlen, ftnlen); /* Fortran I/O blocks */ - static cilist io___1747 = { 0, 6, 0, 0, 0 }; - static cilist io___1748 = { 0, 6, 0, 0, 0 }; - static cilist io___1749 = { 0, 6, 0, 0, 0 }; + static cilist io___1742 = { 0, 6, 0, 0, 0 }; + static cilist io___1743 = { 0, 6, 0, 0, 0 }; + static cilist io___1744 = { 0, 6, 0, 0, 0 }; /* Macro action */ -#line 24409 "" +#line 24403 "" g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); -#line 24410 "" +#line 24404 "" if (*(unsigned char *)charq == 'S' && *ivx != 1) { -#line 24411 "" - s_wsle(&io___1747); -#line 24411 "" +#line 24405 "" + s_wsle(&io___1742); +#line 24405 "" e_wsle(); -#line 24412 "" - s_wsle(&io___1748); -#line 24412 "" +#line 24406 "" + s_wsle(&io___1743); +#line 24406 "" e_wsle(); -#line 24413 "" - s_wsle(&io___1749); -#line 24413 "" +#line 24407 "" + s_wsle(&io___1744); +#line 24407 "" do_lio(&c__9, &c__1, "*********WARNING*********", (ftnlen)25); -#line 24413 "" +#line 24407 "" e_wsle(); -#line 24414 "" +#line 24408 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 24414 "" +#line 24408 "" errmsg_(lineq, iccount, &i__1, "\"MS...\" only put in parts by scor2"\ "prt if in voice #1!", (ftnlen)128, (ftnlen)53); -#line 24416 "" +#line 24410 "" } -#line 24417 "" +#line 24411 "" if (i_indx("RSP ", charq, (ftnlen)4, (ftnlen)1) == 0) { -#line 24418 "" +#line 24412 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 24418 "" +#line 24412 "" errmsg_(lineq, iccount, &i__1, "Illegal character after \"M\" (macro"\ ")!", (ftnlen)128, (ftnlen)36); -#line 24420 "" +#line 24414 "" stop1_(); -#line 24421 "" +#line 24415 "" } else if (*(unsigned char *)charq != ' ') { /* Record or playback a macro. Get the number of the macro. */ -#line 24425 "" +#line 24419 "" g1etchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 24426 "" +#line 24420 "" if (i_indx("123456789", durq, (ftnlen)9, (ftnlen)1) == 0) { -#line 24427 "" +#line 24421 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 24427 "" +#line 24421 "" errmsg_(lineq, iccount, &i__1, "Must input number after \"MR\""\ ",\"MP\", or \"MS\"!", (ftnlen)128, (ftnlen)43); -#line 24429 "" +#line 24423 "" stop1_(); -#line 24430 "" +#line 24424 "" } -#line 24431 "" +#line 24425 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 24432 "" +#line 24426 "" commac_1.macnum = i_nint(&fnum); -#line 24433 "" +#line 24427 "" if (*(unsigned char *)durq != ' ') { -#line 24434 "" +#line 24428 "" i__1 = *ibarcnt - *ibaroff + *nbars + 1; -#line 24434 "" +#line 24428 "" errmsg_(lineq, iccount, &i__1, "Macro number must be followed by"\ " a blank!", (ftnlen)128, (ftnlen)41); -#line 24436 "" +#line 24430 "" stop1_(); -#line 24437 "" +#line 24431 "" } -#line 24438 "" +#line 24432 "" if (i_indx("RS", charq, (ftnlen)2, (ftnlen)1) > 0) { /* Record or save a macro */ -#line 24442 "" +#line 24436 "" if (commac_1.macnum < 1 || commac_1.macnum > 20) { -#line 24443 "" +#line 24437 "" i__1 = *iccount - 1; -#line 24443 "" +#line 24437 "" i__2 = *ibarcnt - *ibaroff + *nbars + 1; -#line 24443 "" +#line 24437 "" errmsg_(lineq, &i__1, &i__2, "Macro number not in range 1-20!" , (ftnlen)128, (ftnlen)31); -#line 24445 "" +#line 24439 "" stop1_(); -#line 24446 "" +#line 24440 "" } -#line 24447 "" +#line 24441 "" commac_1.macuse = bit_set(commac_1.macuse,commac_1.macnum); -#line 24448 "" +#line 24442 "" if (*(unsigned char *)charq == 'R') { -#line 24449 "" +#line 24443 "" m1rec1_(lineq, iccount, ibarcnt, ibaroff, nbars, &ndxm, ( ftnlen)128); -#line 24450 "" +#line 24444 "" } else if (*(unsigned char *)charq == 'S') { /* Save (Record but don't activate) */ -#line 24454 "" +#line 24448 "" L1: -#line 24454 "" +#line 24448 "" m1rec1_(lineq, iccount, ibarcnt, ibaroff, nbars, &ndxm, ( ftnlen)128); -#line 24455 "" +#line 24449 "" if (commac_1.mrecord) { -#line 24456 "" +#line 24450 "" getbuf_(lineq, (ftnlen)128); -#line 24457 "" +#line 24451 "" ++(*nline); -#line 24458 "" +#line 24452 "" *iccount = 0; -#line 24459 "" +#line 24453 "" goto L1; -#line 24460 "" +#line 24454 "" } -#line 24461 "" +#line 24455 "" *iccount = *iccount + ndxm + 1; -#line 24462 "" +#line 24456 "" } -#line 24463 "" +#line 24457 "" } else { /* Playback the macro */ -#line 24467 "" +#line 24461 "" if (! bit_test(commac_1.macuse,commac_1.macnum)) { -#line 24468 "" +#line 24462 "" i__1 = *iccount - 1; -#line 24468 "" +#line 24462 "" i__2 = *ibarcnt - *ibaroff + *nbars + 1; -#line 24468 "" +#line 24462 "" errmsg_(lineq, &i__1, &i__2, "Cannot play a macro that has n"\ "ot been recorded!", (ftnlen)128, (ftnlen)47); -#line 24470 "" +#line 24464 "" stop1_(); -#line 24471 "" +#line 24465 "" } -#line 24472 "" +#line 24466 "" commac_1.icchold = *iccount; -#line 24473 "" +#line 24467 "" s_copy(commac_1.lnholdq, lineq, (ftnlen)128, (ftnlen)128); -#line 24474 "" +#line 24468 "" *iccount = 128; -#line 24475 "" +#line 24469 "" commac_1.mplay = TRUE_; -#line 24476 "" +#line 24470 "" c1ommac_1.ilmac = c1ommac_1.il1mac[commac_1.macnum - 1]; -#line 24477 "" +#line 24471 "" } -#line 24478 "" +#line 24472 "" } -#line 24479 "" +#line 24473 "" return 0; } /* setmac_ */ @@ -60939,67 +60875,67 @@ L1: /* 3: triple w/ denom=8, subdivide in groups of 3 8ths */ /* Note that lenbar is set at top or when 'm' symbol is read in getnote */ -#line 24490 "" +#line 24484 "" if (*mtrdenl == 4) { -#line 24491 "" +#line 24485 "" if (*mtrnuml % 3 == 0) { -#line 24492 "" +#line 24486 "" *ibmtyp = 2; -#line 24493 "" +#line 24487 "" *ibmrep = *mtrnuml / 3; -#line 24494 "" +#line 24488 "" } else { -#line 24495 "" +#line 24489 "" *ibmtyp = 1; -#line 24496 "" +#line 24490 "" *ibmrep = *mtrnuml / 2; -#line 24497 "" +#line 24491 "" } -#line 24498 "" +#line 24492 "" } else if (*mtrdenl == 2) { -#line 24499 "" +#line 24493 "" *ibmtyp = 1; -#line 24500 "" +#line 24494 "" if (*mtrnuml == 3) { -#line 24501 "" +#line 24495 "" *ibmrep = 3; -#line 24502 "" +#line 24496 "" } else { -#line 24503 "" +#line 24497 "" *ibmrep = (*mtrnuml << 1) / *mtrdenl; -#line 24504 "" +#line 24498 "" } -#line 24505 "" +#line 24499 "" } else if (*mtrdenl == 8 && (*mtrnuml == 8 || *mtrnuml == 4)) { /* Added 170726 */ -#line 24509 "" +#line 24503 "" *ibmtyp = 1; -#line 24510 "" +#line 24504 "" *ibmrep = *mtrnuml / 4; -#line 24511 "" +#line 24505 "" } else { /* Assumes mtrdenl=8 and 3/8, 6/8, 9/8, or 12/8 */ -#line 24515 "" +#line 24509 "" *ibmtyp = 3; -#line 24516 "" +#line 24510 "" *ibmrep = *mtrnuml / 3; -#line 24517 "" +#line 24511 "" } /* Reset so we don't keep writing new meters */ -#line 24521 "" +#line 24515 "" *mtrnuml = 0; /* Prevent ibmrep=0. Needed for odd bars, e.g. 1/8, where beams don't matter */ -#line 24525 "" +#line 24519 "" *ibmrep = max(*ibmrep,1); -#line 24526 "" +#line 24520 "" return 0; } /* setmeter_ */ @@ -61044,86 +60980,86 @@ L1: /* The outer combo algorithm */ -#line 24560 "" +#line 24554 "" /* Parameter adjustments */ -#line 24560 "" +#line 24554 "" --ipb; -#line 24560 "" +#line 24554 "" --xelsk; -#line 24560 "" +#line 24554 "" -#line 24560 "" +#line 24554 "" /* Function Body */ -#line 24560 "" +#line 24554 "" ibc = all_1.ibmcnt[commvl_1.ivx - 1]; -#line 24561 "" +#line 24555 "" comxtup_2.nxtinbm[commvl_1.ivx - 1] = 0; -#line 24562 "" +#line 24556 "" n1 = comipl2_1.ipl2[commvl_1.ivx + all_1.ibm1[commvl_1.ivx + ibc * 24 - 25] * 24 - 25]; /* Initialize counters used in this subroutine, and then later during actual */ /* beam drawing, to count later segments of single-slope beam groups */ -#line 24567 "" +#line 24561 "" comxtup_2.nssb[commvl_1.ivx - 1] = 0; -#line 24568 "" +#line 24562 "" comxtup_2.issb[commvl_1.ivx - 1] = 0; /* Set flag for xtup beam starting with rest (no others can start with rest) */ -#line 24572 "" +#line 24566 "" if (bit_test(all_1.irest[commvl_1.ivx + all_1.ipo[n1 - 1] * 24 - 25],0)) { -#line 24572 "" +#line 24566 "" *ixrest = 1; -#line 24572 "" +#line 24566 "" } /* Figure how many elemskips to each note. Use the list, counting only non-rests. */ -#line 24576 "" +#line 24570 "" eskz0 = all_1.eskz[commvl_1.ivx + all_1.ibm1[commvl_1.ivx + ibc * 24 - 25] * 24 - 25]; -#line 24577 "" +#line 24571 "" *nnb = 0; -#line 24578 "" +#line 24572 "" *sumx = 0.f; -#line 24579 "" +#line 24573 "" *sumy = 0.f; -#line 24580 "" +#line 24574 "" ipxt1 = 0; -#line 24581 "" +#line 24575 "" iplast = all_1.ibm2[commvl_1.ivx + ibc * 24 - 25]; -#line 24582 "" +#line 24576 "" i__1 = iplast; -#line 24582 "" +#line 24576 "" for (ip = all_1.ibm1[commvl_1.ivx + ibc * 24 - 25]; ip <= i__1; ++ip) { -#line 24583 "" +#line 24577 "" if (! bit_test(all_1.irest[commvl_1.ivx + ip * 24 - 25],0)) { -#line 24584 "" +#line 24578 "" ++(*nnb); -#line 24585 "" +#line 24579 "" ipb[*nnb] = ip; -#line 24586 "" +#line 24580 "" xelsk[*nnb] = all_1.eskz[commvl_1.ivx + ip * 24 - 25] - eskz0; -#line 24587 "" +#line 24581 "" *sumx += xelsk[*nnb]; -#line 24588 "" +#line 24582 "" *sumy += all_1.nolev[commvl_1.ivx + ipb[*nnb] * 24 - 25]; -#line 24589 "" +#line 24583 "" if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],21)) { /* This is the starting note of later segment of single-slope beam group */ /* Temporarily store ip here. */ -#line 24594 "" +#line 24588 "" ++comxtup_2.nssb[commvl_1.ivx - 1]; -#line 24595 "" +#line 24589 "" comxtup_2.lev1ssb[commvl_1.ivx + comxtup_2.nssb[commvl_1.ivx - 1] * 24 - 25] = *nnb; -#line 24596 "" +#line 24590 "" } -#line 24597 "" +#line 24591 "" } /* New xtup stuff here. Final object is to get distance from start of xtup */ @@ -61131,220 +61067,220 @@ L1: /* number. ntupv is number of notes in xtup, and is only used to get */ /* eloff, the distance from start of xtup to the number. */ -#line 24604 "" +#line 24598 "" if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],18)) { -#line 24604 "" +#line 24598 "" ++ndoub; -#line 24604 "" +#line 24598 "" } -#line 24605 "" +#line 24599 "" if (ipxt1 == 0 && all_1.nodur[commvl_1.ivx + ip * 24 - 25] == 0) { /* Xtup is starting here */ -#line 24609 "" +#line 24603 "" ++comxtup_2.nxtinbm[commvl_1.ivx - 1]; -#line 24610 "" +#line 24604 "" ipxt1 = ip; -#line 24611 "" +#line 24605 "" if (bit_test(all_1.nacc[commvl_1.ivx + ip * 24 - 25],18)) { -#line 24612 "" +#line 24606 "" ndoub = 1; -#line 24613 "" +#line 24607 "" } else { -#line 24614 "" +#line 24608 "" ndoub = 0; -#line 24615 "" +#line 24609 "" } -#line 24616 "" +#line 24610 "" } else if (ipxt1 > 0 && all_1.nodur[commvl_1.ivx + ip * 24 - 25] > 0) { /* Xtup ends here. Set total number of notes in xtup. */ -#line 24620 "" +#line 24614 "" comxtup_2.ntupv[commvl_1.ivx + comxtup_2.nxtinbm[commvl_1.ivx - 1] * 24 - 25] = ip + 1 - ipxt1; /* Set printed number for embedded xtup. */ -#line 24624 "" +#line 24618 "" comxtup_2.mtupv[commvl_1.ivx + comxtup_2.nxtinbm[commvl_1.ivx - 1] * 24 - 25] = comxtup_2.ntupv[commvl_1.ivx + comxtup_2.nxtinbm[commvl_1.ivx - 1] * 24 - 25] + ndoub; /* Middle note of xtup if ntupv odd, note to left of gap if even. */ -#line 24628 "" +#line 24622 "" ipxtmid = (ip + ipxt1) / 2; -#line 24629 "" +#line 24623 "" comxtup_2.eloff[commvl_1.ivx + comxtup_2.nxtinbm[commvl_1.ivx - 1] * 24 - 25] = comeskz2_1.eskz2[commvl_1.ivx + ipxtmid * 24 - 25] - comeskz2_1.eskz2[commvl_1.ivx + ipxt1 * 24 - 25]; -#line 24630 "" +#line 24624 "" if (comxtup_2.ntupv[commvl_1.ivx + comxtup_2.nxtinbm[commvl_1.ivx - 1] * 24 - 25] % 2 == 0) { -#line 24630 "" +#line 24624 "" comxtup_2.eloff[commvl_1.ivx + comxtup_2.nxtinbm[commvl_1.ivx - 1] * 24 - 25] += (comeskz2_1.eskz2[commvl_1.ivx + ( ipxtmid + 1) * 24 - 25] - comeskz2_1.eskz2[ commvl_1.ivx + ipxtmid * 24 - 25]) * .5f; -#line 24630 "" +#line 24624 "" } -#line 24633 "" +#line 24627 "" ipxt1 = 0; -#line 24634 "" +#line 24628 "" } -#line 24635 "" +#line 24629 "" /* L2: */ -#line 24635 "" +#line 24629 "" } /* Reset nxtinbm for use as counter as #'s are posted by putxtn(..) */ -#line 24639 "" +#line 24633 "" comxtup_2.nxtinbm[commvl_1.ivx - 1] = 0; -#line 24640 "" +#line 24634 "" *smed = 0.f; /* if (.not.btest(islur(ivx,ipb(1)),2)) then */ -#line 24642 "" +#line 24636 "" if (! bit_test(all_1.islur[commvl_1.ivx + ipb[1] * 24 - 25],2) && *nnb > 1) { /* No forced 0 slope */ /* if (nnb .eq. 1) go to 6 */ -#line 24647 "" +#line 24641 "" nsc = 0; -#line 24648 "" +#line 24642 "" i__1 = *nnb - 1; -#line 24648 "" +#line 24642 "" for (inb = 1; inb <= i__1; ++inb) { -#line 24649 "" +#line 24643 "" i__2 = *nnb; -#line 24649 "" +#line 24643 "" for (jnb = inb + 1; jnb <= i__2; ++jnb) { -#line 24650 "" +#line 24644 "" ++nsc; -#line 24651 "" +#line 24645 "" slope[nsc - 1] = (all_1.nolev[commvl_1.ivx + ipb[jnb] * 24 - 25] - all_1.nolev[commvl_1.ivx + ipb[inb] * 24 - 25]) / (xelsk[jnb] - xelsk[inb]); -#line 24653 "" +#line 24647 "" if ((r__1 = slope[nsc - 1], dabs(r__1)) < 1e-4f) { -#line 24654 "" +#line 24648 "" ++nsc; -#line 24655 "" +#line 24649 "" slope[nsc - 1] = slope[nsc - 2]; -#line 24656 "" +#line 24650 "" ++nsc; -#line 24657 "" +#line 24651 "" slope[nsc - 1] = slope[nsc - 2]; -#line 24658 "" +#line 24652 "" } -#line 24659 "" +#line 24653 "" /* L5: */ -#line 24659 "" +#line 24653 "" } -#line 24659 "" +#line 24653 "" } -#line 24660 "" +#line 24654 "" if (nsc == 1) { -#line 24661 "" +#line 24655 "" *smed = slope[0]; -#line 24662 "" +#line 24656 "" goto L6; -#line 24663 "" +#line 24657 "" } -#line 24664 "" +#line 24658 "" nscmid = nsc / 2 + 1; -#line 24665 "" +#line 24659 "" i__2 = nscmid; -#line 24665 "" +#line 24659 "" for (i__ = 1; i__ <= i__2; ++i__) { -#line 24666 "" +#line 24660 "" i__1 = nsc; -#line 24666 "" +#line 24660 "" for (j = i__ + 1; j <= i__1; ++j) { -#line 24667 "" +#line 24661 "" if (slope[j - 1] < slope[i__ - 1]) { -#line 24668 "" +#line 24662 "" t = slope[j - 1]; -#line 24669 "" +#line 24663 "" slope[j - 1] = slope[i__ - 1]; -#line 24670 "" +#line 24664 "" slope[i__ - 1] = t; -#line 24671 "" +#line 24665 "" } -#line 24672 "" +#line 24666 "" /* L7: */ -#line 24672 "" +#line 24666 "" } -#line 24672 "" +#line 24666 "" } -#line 24673 "" +#line 24667 "" *smed = slope[nscmid - 1]; -#line 24674 "" +#line 24668 "" if (nsc == nsc / 2 << 1) { /* Even number of slopes in the list, so median is ambiguous */ -#line 24678 "" +#line 24672 "" if ((r__2 = slope[nscmid - 2], dabs(r__2)) < (r__1 = slope[nscmid - 1], dabs(r__1)) - comtol_1.tol) { /* Lower-numbered one is truly less in absolute value, so use it */ -#line 24682 "" +#line 24676 "" *smed = slope[nscmid - 2]; -#line 24683 "" +#line 24677 "" } else if ((r__1 = slope[nscmid - 2] + slope[nscmid - 1], dabs( r__1)) < comtol_1.tol) { /* Two slopes are effectively equal. Take the one with sign of the average */ -#line 24687 "" +#line 24681 "" sum = 0.f; -#line 24688 "" +#line 24682 "" i__1 = nsc; -#line 24688 "" +#line 24682 "" for (i__ = 1; i__ <= i__1; ++i__) { -#line 24689 "" +#line 24683 "" sum += slope[i__ - 1]; -#line 24690 "" +#line 24684 "" /* L1: */ -#line 24690 "" +#line 24684 "" } -#line 24691 "" +#line 24685 "" *smed = r_sign(smed, &sum); -#line 24692 "" +#line 24686 "" } -#line 24693 "" +#line 24687 "" } -#line 24694 "" +#line 24688 "" L6: -#line 24695 "" +#line 24689 "" r__1 = *smed * .5f * all_1.slfac; -#line 24695 "" +#line 24689 "" comxtup_2.islope[commvl_1.ivx - 1] = i_nint(&r__1); -#line 24696 "" +#line 24690 "" if ((i__1 = comxtup_2.islope[commvl_1.ivx - 1], abs(i__1)) > 9) { -#line 24696 "" +#line 24690 "" comxtup_2.islope[commvl_1.ivx - 1] = i_sign(&c__9, & comxtup_2.islope[commvl_1.ivx - 1]); -#line 24696 "" +#line 24690 "" } -#line 24698 "" +#line 24692 "" } else { /* Forced horizontal beam */ -#line 24702 "" +#line 24696 "" comxtup_2.islope[commvl_1.ivx - 1] = 0; -#line 24703 "" +#line 24697 "" } -#line 24704 "" +#line 24698 "" beta = (*sumy - comxtup_2.islope[commvl_1.ivx - 1] / all_1.slfac * *sumx) / *nnb; @@ -61352,90 +61288,90 @@ L6: /* as is for placing xtup number and/or bracket, then reset it for start of */ /* actual beam */ -#line 24710 "" +#line 24704 "" comxtup_2.nolev1[commvl_1.ivx - 1] = i_nint(&beta); /* Check if any stems are too short */ -#line 24714 "" +#line 24708 "" smin = 100.f; -#line 24715 "" +#line 24709 "" iul = -1; -#line 24716 "" +#line 24710 "" if (*(unsigned char *)&all_1.ulq[commvl_1.ivx + ibc * 24 - 25] == 'u') { -#line 24716 "" +#line 24710 "" iul = 1; -#line 24716 "" +#line 24710 "" } -#line 24717 "" +#line 24711 "" ssq = 0.f; -#line 24718 "" +#line 24712 "" syb = 0.f; -#line 24719 "" +#line 24713 "" yb1 = comxtup_2.nolev1[commvl_1.ivx - 1] + iul * (all_1.stemlen + combmh_1.bmhgt * ((15 & all_1.mult[commvl_1.ivx + ipb[1] * 24 - 25]) - 9)); -#line 24721 "" +#line 24715 "" i__1 = *nnb; -#line 24721 "" +#line 24715 "" for (inb = 1; inb <= i__1; ++inb) { -#line 24722 "" +#line 24716 "" ybeam = yb1 + comxtup_2.islope[commvl_1.ivx - 1] * xelsk[inb] / all_1.slfac - iul * combmh_1.bmhgt * ((15 & all_1.mult[ commvl_1.ivx + ipb[inb] * 24 - 25]) - 9); -#line 24724 "" +#line 24718 "" syb += ybeam; -#line 24725 "" +#line 24719 "" ynote = (real) all_1.nolev[commvl_1.ivx + ipb[inb] * 24 - 25]; -#line 24726 "" +#line 24720 "" off = ybeam - ynote; -#line 24727 "" +#line 24721 "" if (inb == 1) { -#line 24728 "" +#line 24722 "" off1 = off; -#line 24729 "" +#line 24723 "" } else if (inb == *nnb) { -#line 24730 "" +#line 24724 "" off2 = off; -#line 24731 "" +#line 24725 "" } -#line 24732 "" +#line 24726 "" ssq += off * off; /* Computing MIN */ -#line 24733 "" +#line 24727 "" r__1 = smin, r__2 = iul * off; -#line 24733 "" +#line 24727 "" smin = dmin(r__1,r__2); -#line 24734 "" +#line 24728 "" /* L4: */ -#line 24734 "" +#line 24728 "" } -#line 24735 "" +#line 24729 "" dnolev = 0.f; -#line 24736 "" +#line 24730 "" if (smin < all_1.stemmin) { -#line 24737 "" +#line 24731 "" deficit = all_1.stemmin - smin; -#line 24738 "" +#line 24732 "" nolevo = comxtup_2.nolev1[commvl_1.ivx - 1]; -#line 24739 "" +#line 24733 "" r__1 = comxtup_2.nolev1[commvl_1.ivx - 1] + iul * deficit; -#line 24739 "" +#line 24733 "" comxtup_2.nolev1[commvl_1.ivx - 1] = i_nint(&r__1); -#line 24740 "" +#line 24734 "" dnolev = (real) (comxtup_2.nolev1[commvl_1.ivx - 1] - nolevo); -#line 24741 "" +#line 24735 "" off1 += dnolev; -#line 24742 "" +#line 24736 "" off2 += dnolev; -#line 24743 "" +#line 24737 "" } /* Computing 2nd power */ -#line 24744 "" +#line 24738 "" r__1 = dnolev; -#line 24744 "" +#line 24738 "" ssq = ssq + dnolev * 2 * (syb - *sumy) + r__1 * r__1; -#line 24745 "" +#line 24739 "" if (! comxtup_2.vxtup[commvl_1.ivx - 1] && sqrt(ssq / *nnb) > all_1.stemmax && (dabs(off1) < all_1.stemmax || dabs(off2) < all_1.stemmax) && ! bit_test(all_1.islur[commvl_1.ivx + ipb[1] * @@ -61446,83 +61382,83 @@ L6: /* The penultimate check is that first and last stems aren't both excessive. */ /* The last check is that a 0 slope has not been forced */ -#line 24755 "" +#line 24749 "" setbm2_(&xelsk[1], nnb, sumx, sumy, &ipb[1], &comxtup_2.islope[ commvl_1.ivx - 1], &comxtup_2.nolev1[commvl_1.ivx - 1]); -#line 24756 "" +#line 24750 "" } /* Check if beam starts or ends too high or low. */ -#line 24760 "" +#line 24754 "" xboff = combmh_1.bmhgt * ((15 & all_1.mult[commvl_1.ivx + ipb[1] * 24 - 25]) - 9); -#line 24761 "" +#line 24755 "" l1ng = iul * (comxtup_2.nolev1[commvl_1.ivx - 1] - ncmid_(&all_1.iv, &ipb[ 1])) + xboff + 7 < 0.f; -#line 24762 "" +#line 24756 "" xnolev2 = comxtup_2.nolev1[commvl_1.ivx - 1] + comxtup_2.islope[ commvl_1.ivx - 1] / all_1.slfac * xelsk[*nnb]; -#line 24763 "" +#line 24757 "" l2ng = iul * (xnolev2 - ncmid_(&all_1.iv, &ipb[*nnb])) + xboff + 7 < 0.f; -#line 24764 "" +#line 24758 "" if (l1ng || l2ng) { /* Need to correct start or stop, also slope */ -#line 24768 "" +#line 24762 "" if (l1ng) { -#line 24769 "" +#line 24763 "" r__1 = ncmid_(&all_1.iv, &ipb[1]) - (xboff + 7.f) * iul; -#line 24769 "" +#line 24763 "" comxtup_2.nolev1[commvl_1.ivx - 1] = i_nint(&r__1); -#line 24770 "" +#line 24764 "" } -#line 24771 "" +#line 24765 "" if (l2ng) { -#line 24772 "" +#line 24766 "" r__1 = ncmid_(&all_1.iv, &ipb[*nnb]) - (xboff + 7.f) * iul; -#line 24772 "" +#line 24766 "" xnolev2 = (real) i_nint(&r__1); -#line 24773 "" +#line 24767 "" } /* Since one or the other end has changed, need to change slope */ /* if (.not.btest(islur(ivx,ipb(1)),2)) */ -#line 24778 "" +#line 24772 "" if (! bit_test(all_1.islur[commvl_1.ivx + ipb[1] * 24 - 25],2) && * nnb != 1) { -#line 24778 "" +#line 24772 "" r__1 = all_1.slfac * (xnolev2 - comxtup_2.nolev1[commvl_1.ivx - 1] ) / xelsk[*nnb]; -#line 24778 "" +#line 24772 "" comxtup_2.islope[commvl_1.ivx - 1] = i_nint(&r__1); -#line 24778 "" +#line 24772 "" } -#line 24780 "" +#line 24774 "" } -#line 24781 "" +#line 24775 "" if (comxtup_2.nssb[commvl_1.ivx - 1] > 0) { /* This is a single-slope beam group. Store start heights for later segs. */ -#line 24785 "" +#line 24779 "" i__1 = comxtup_2.nssb[commvl_1.ivx - 1]; -#line 24785 "" +#line 24779 "" for (issbs = 1; issbs <= i__1; ++issbs) { -#line 24786 "" +#line 24780 "" comxtup_2.lev1ssb[commvl_1.ivx + issbs * 24 - 25] = comxtup_2.nolev1[commvl_1.ivx - 1] + comxtup_2.islope[ commvl_1.ivx - 1] / all_1.slfac * xelsk[comxtup_2.lev1ssb[ commvl_1.ivx + issbs * 24 - 25]]; -#line 24788 "" +#line 24782 "" /* L3: */ -#line 24788 "" +#line 24782 "" } -#line 24789 "" +#line 24783 "" } -#line 24790 "" +#line 24784 "" return 0; } /* setupb_ */ @@ -61537,60 +61473,60 @@ L6: /* Initialize ipoe: */ -#line 24799 "" +#line 24793 "" /* Parameter adjustments */ -#line 24799 "" +#line 24793 "" --ipoe; -#line 24799 "" +#line 24793 "" --poe; -#line 24799 "" +#line 24793 "" -#line 24799 "" +#line 24793 "" /* Function Body */ -#line 24799 "" +#line 24793 "" i__1 = *nsyst; -#line 24799 "" +#line 24793 "" for (iord = 1; iord <= i__1; ++iord) { -#line 24800 "" +#line 24794 "" ipoe[iord] = iord; -#line 24801 "" +#line 24795 "" /* L3: */ -#line 24801 "" +#line 24795 "" } /* Construct ipoe vector with pairwise interchanges. When done, ipoe(1) will */ /* be index of smallest poe, and ipoe(nsyst) will be index of biggest poe. */ -#line 24806 "" +#line 24800 "" i__1 = *nsyst - 1; -#line 24806 "" +#line 24800 "" for (io1 = 1; io1 <= i__1; ++io1) { -#line 24807 "" +#line 24801 "" i__2 = *nsyst; -#line 24807 "" +#line 24801 "" for (io2 = io1 + 1; io2 <= i__2; ++io2) { -#line 24808 "" +#line 24802 "" if (poe[ipoe[io1]] > poe[ipoe[io2]]) { /* Interchange the indices */ -#line 24812 "" +#line 24806 "" itemp = ipoe[io1]; -#line 24813 "" +#line 24807 "" ipoe[io1] = ipoe[io2]; -#line 24814 "" +#line 24808 "" ipoe[io2] = itemp; -#line 24815 "" +#line 24809 "" } -#line 24816 "" +#line 24810 "" /* L5: */ -#line 24816 "" +#line 24810 "" } -#line 24817 "" +#line 24811 "" /* L4: */ -#line 24817 "" +#line 24811 "" } -#line 24818 "" +#line 24812 "" return 0; } /* sortpoe_ */ @@ -61627,114 +61563,114 @@ L6: /* Counter for signed integers. 1st is height, 2nd is horiz, 3rd is curve */ -#line 24843 "" +#line 24837 "" /* Parameter adjustments */ -#line 24843 "" +#line 24837 "" --isdat4; -#line 24843 "" +#line 24837 "" --isdat3; -#line 24843 "" +#line 24837 "" --isdat2; -#line 24843 "" +#line 24837 "" --isdat1; -#line 24843 "" +#line 24837 "" -#line 24843 "" +#line 24837 "" /* Function Body */ -#line 24843 "" +#line 24837 "" numint = 0; -#line 24844 "" +#line 24838 "" ivoff = 0; -#line 24845 "" +#line 24839 "" ihoff = 0; -#line 24846 "" +#line 24840 "" ++(*nsdat); -#line 24847 "" +#line 24841 "" if (*(unsigned char *)starter == '{' || *(unsigned char *)starter == '}') { -#line 24847 "" +#line 24841 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],3); -#line 24847 "" +#line 24841 "" } -#line 24849 "" +#line 24843 "" setbits_(&isdat1[*nsdat], &c__5, &c__13, iv); -#line 24850 "" +#line 24844 "" i__1 = *kv - 1; -#line 24850 "" +#line 24844 "" setbits_(&isdat1[*nsdat], &c__1, &c__12, &i__1); -#line 24851 "" +#line 24845 "" setbits_(&isdat1[*nsdat], &c__8, &c__3, ip); -#line 24852 "" +#line 24846 "" isdat3[*nsdat] = 0; -#line 24853 "" +#line 24847 "" isdat4[*nsdat] = 0; -#line 24854 "" +#line 24848 "" ilb12 = 0; /* Get ID code */ /* flag for tweaks of 1st or 2nd (0|1) seg of linebreak slur */ -#line 24858 "" +#line 24852 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); /* if (index('uldtb+-hfnHps ',durq) .gt. 0) then */ -#line 24860 "" +#line 24854 "" if (i_indx("uldtb+-hfnHpsv ", durq, (ftnlen)15, (ftnlen)1) > 0) { /* Null id. Note for ps slurs, 'H' cannot be an ID */ -#line 24864 "" +#line 24858 "" --(*iccount); -#line 24865 "" +#line 24859 "" if (*(unsigned char *)&lineq[*iccount - 1] == 't') { -#line 24866 "" +#line 24860 "" idcode = 1; -#line 24867 "" +#line 24861 "" } else { -#line 24868 "" +#line 24862 "" idcode = 32; -#line 24869 "" +#line 24863 "" } -#line 24870 "" +#line 24864 "" } else { /* Set explicit idcode */ -#line 24874 "" +#line 24868 "" idcode = *(unsigned char *)durq; -#line 24875 "" +#line 24869 "" i__1 = *iccount - 2; -#line 24875 "" +#line 24869 "" if (s_cmp(lineq + i__1, "t", *iccount - 1 - i__1, (ftnlen)1) == 0) { /* Make t[ID] look like s[ID]t */ -#line 24879 "" +#line 24873 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],3); -#line 24880 "" +#line 24874 "" } -#line 24881 "" +#line 24875 "" i__1 = *iccount; -#line 24881 "" +#line 24875 "" if (s_cmp(lineq + i__1, "x", *iccount + 1 - i__1, (ftnlen)1) == 0) { /* Flag for 2-voice, indexed slurs */ -#line 24885 "" +#line 24879 "" ++(*iccount); -#line 24886 "" +#line 24880 "" setbits_(&isdat1[*nsdat], &c__1, &c__1, &c__1); -#line 24887 "" +#line 24881 "" } -#line 24888 "" +#line 24882 "" } -#line 24889 "" +#line 24883 "" setbits_(&isdat1[*nsdat], &c__7, &c__19, &idcode); /* Set start/stop: look thru list from end for same idcode,iv,kv */ -#line 24893 "" +#line 24887 "" for (isdat = *nsdat - 1; isdat >= 1; --isdat) { -#line 24894 "" +#line 24888 "" if (idcode == igetbits_(&isdat1[isdat], &c__7, &c__19) && *iv == igetbits_(&isdat1[isdat], &c__5, &c__13) && (*kv - 1 == igetbits_(&isdat1[isdat], &c__1, &c__12) || bit_test(isdat1[ @@ -61743,372 +61679,372 @@ L6: /* Matched idcode & ivx. On/off?. If on, new is turnoff, leave bit 11 at 0. */ -#line 24902 "" +#line 24896 "" if (bit_test(isdat1[isdat],11)) { -#line 24902 "" +#line 24896 "" goto L3; -#line 24902 "" +#line 24896 "" } /* Found slur is a turnoff, so new one is a turnon. Jump down to set bit */ -#line 24906 "" +#line 24900 "" goto L4; -#line 24907 "" +#line 24901 "" } -#line 24908 "" +#line 24902 "" /* L2: */ -#line 24908 "" +#line 24902 "" } /* If here, this is turnon. */ -#line 24912 "" +#line 24906 "" L4: -#line 24913 "" +#line 24907 "" isdat1[*nsdat] = bit_set(isdat1[*nsdat],11); -#line 24914 "" +#line 24908 "" L3: /* Now done with initial turnon- or turnoff-specifics. */ -#line 24918 "" +#line 24912 "" if (i_nint(&comslur_1.slurcurve) != 0 && bit_test(isdat1[*nsdat],11)) { /* There's a default curvature tweak */ -#line 24922 "" +#line 24916 "" icurv1 = i_nint(&comslur_1.slurcurve) + 3; -#line 24923 "" +#line 24917 "" if (icurv1 == 2) { -#line 24923 "" +#line 24917 "" icurv1 = 1; -#line 24923 "" +#line 24917 "" } -#line 24924 "" +#line 24918 "" isdat3[*nsdat] = bit_set(isdat3[*nsdat],0); -#line 24925 "" +#line 24919 "" i__1 = icurv1 + 32; -#line 24925 "" +#line 24919 "" setbits_(&isdat3[*nsdat], &c__6, &c__2, &i__1); -#line 24926 "" +#line 24920 "" } /* Loop for rest of input */ -#line 24930 "" +#line 24924 "" L1: -#line 24930 "" +#line 24924 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 24931 "" +#line 24925 "" if (i_indx("uld", durq, (ftnlen)3, (ftnlen)1) > 0) { /* Force direction */ -#line 24935 "" +#line 24929 "" isdat1[*nsdat] = bit_set(isdat1[*nsdat],26); -#line 24936 "" +#line 24930 "" if (*(unsigned char *)durq == 'u') { -#line 24936 "" +#line 24930 "" isdat1[*nsdat] = bit_set(isdat1[*nsdat],27); -#line 24936 "" +#line 24930 "" } -#line 24937 "" +#line 24931 "" goto L1; -#line 24938 "" +#line 24932 "" } else if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { -#line 24939 "" +#line 24933 "" ++numint; -#line 24940 "" +#line 24934 "" if (numint == 1) { /* Vertical offset */ -#line 24944 "" +#line 24938 "" ++(*iccount); -#line 24945 "" +#line 24939 "" readnum_(lineq, iccount, dumq, &fnum, (ftnlen)128, (ftnlen)1); -#line 24946 "" +#line 24940 "" --(*iccount); -#line 24947 "" +#line 24941 "" ivoff = i_nint(&fnum); -#line 24948 "" +#line 24942 "" if (*(unsigned char *)durq == '-') { -#line 24948 "" +#line 24942 "" ivoff = -ivoff; -#line 24948 "" +#line 24942 "" } -#line 24949 "" +#line 24943 "" } else if (numint == 2) { /* Horizontal offset */ -#line 24953 "" +#line 24947 "" ++(*iccount); -#line 24954 "" +#line 24948 "" readnum_(lineq, iccount, dumq, &fnum, (ftnlen)128, (ftnlen)1); -#line 24955 "" +#line 24949 "" --(*iccount); /* fnum is abs(hshift), must be 0 to 6.3 */ -#line 24959 "" +#line 24953 "" ihoff = fnum * 10 + .5f; -#line 24960 "" +#line 24954 "" if (*(unsigned char *)durq == '-') { -#line 24960 "" +#line 24954 "" ihoff = -ihoff; -#line 24960 "" +#line 24954 "" } /* Later will set bits to 1...127 to represent -6.3,...+6.3 */ -#line 24964 "" +#line 24958 "" } else { /* Must be the 3rd signed integer, so it's a curve specification */ -#line 24968 "" +#line 24962 "" isdat3[*nsdat] = bit_set(isdat3[*nsdat],0); -#line 24969 "" +#line 24963 "" ++(*iccount); -#line 24970 "" +#line 24964 "" readnum_(lineq, iccount, dumq, &fnum, (ftnlen)128, (ftnlen)1); -#line 24971 "" +#line 24965 "" icurv1 = i_nint(&fnum); -#line 24972 "" +#line 24966 "" if (*(unsigned char *)durq == '-') { -#line 24972 "" +#line 24966 "" icurv1 = -icurv1; -#line 24972 "" +#line 24966 "" } -#line 24973 "" +#line 24967 "" i__1 = icurv1 + 32; -#line 24973 "" +#line 24967 "" setbits_(&isdat3[*nsdat], &c__6, &c__2, &i__1); -#line 24974 "" +#line 24968 "" if (*(unsigned char *)dumq != ':') { /* Back up the pointer and loop for more input */ -#line 24978 "" +#line 24972 "" --(*iccount); -#line 24979 "" +#line 24973 "" } else { /* Expect two single digits as parameters for curve */ -#line 24983 "" +#line 24977 "" isdat3[*nsdat] = bit_set(isdat3[*nsdat],1); -#line 24984 "" +#line 24978 "" i__1 = *iccount; -#line 24984 "" +#line 24978 "" i__2 = *(unsigned char *)&lineq[i__1] - 48; -#line 24984 "" +#line 24978 "" setbits_(&isdat3[*nsdat], &c__3, &c__8, &i__2); -#line 24986 "" +#line 24980 "" i__1 = *iccount + 1; -#line 24986 "" +#line 24980 "" i__2 = *(unsigned char *)&lineq[i__1] - 48; -#line 24986 "" +#line 24980 "" setbits_(&isdat3[*nsdat], &c__3, &c__11, &i__2); -#line 24988 "" +#line 24982 "" *iccount += 2; -#line 24989 "" +#line 24983 "" } -#line 24990 "" +#line 24984 "" } -#line 24991 "" +#line 24985 "" goto L1; -#line 24992 "" +#line 24986 "" } else if (*(unsigned char *)durq == 't') { -#line 24993 "" +#line 24987 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],3); -#line 24994 "" +#line 24988 "" goto L1; -#line 24995 "" +#line 24989 "" } else if (*(unsigned char *)durq == 'b') { -#line 24996 "" +#line 24990 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],4); -#line 24997 "" +#line 24991 "" goto L1; -#line 24998 "" +#line 24992 "" } else if (*(unsigned char *)durq == 's') { /* Endpoint tweaks for linebreak slurs. */ -#line 25002 "" +#line 24996 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); /* Next is vertical offset */ /* Must be +|- */ -#line 25006 "" +#line 25000 "" ++(*iccount); -#line 25007 "" +#line 25001 "" readnum_(lineq, iccount, dumq, &fnum, (ftnlen)128, (ftnlen)1); -#line 25008 "" +#line 25002 "" if (*(unsigned char *)durq == '-') { -#line 25008 "" +#line 25002 "" fnum = -fnum; -#line 25008 "" +#line 25002 "" } -#line 25009 "" +#line 25003 "" i__1 = ilb12 << 4; -#line 25009 "" +#line 25003 "" i__2 = i_nint(&fnum) + 32; -#line 25009 "" +#line 25003 "" setbits_(&isdat4[*nsdat], &c__6, &i__1, &i__2); -#line 25010 "" +#line 25004 "" if (i_indx("+-", dumq, (ftnlen)2, (ftnlen)1) > 0) { /* Also a horizontal offset */ -#line 25014 "" +#line 25008 "" ++(*iccount); -#line 25015 "" +#line 25009 "" readnum_(lineq, iccount, durq, &fnum, (ftnlen)128, (ftnlen)1); -#line 25016 "" +#line 25010 "" if (*(unsigned char *)dumq == '-') { -#line 25016 "" +#line 25010 "" fnum = -fnum; -#line 25016 "" +#line 25010 "" } -#line 25017 "" +#line 25011 "" i__1 = (ilb12 << 4) + 6; -#line 25017 "" +#line 25011 "" r__1 = fnum * 10; -#line 25017 "" +#line 25011 "" i__2 = i_nint(&r__1) + 64; -#line 25017 "" +#line 25011 "" setbits_(&isdat4[*nsdat], &c__7, &i__1, &i__2); -#line 25018 "" +#line 25012 "" } -#line 25019 "" +#line 25013 "" --(*iccount); -#line 25020 "" +#line 25014 "" ilb12 = 1; -#line 25021 "" +#line 25015 "" goto L1; -#line 25022 "" +#line 25016 "" } else if (i_indx("fnhH", durq, (ftnlen)4, (ftnlen)1) > 0) { /* Special ps slur curvatures. */ /* Translate to old \midslur args (1,4,5,6) */ -#line 25027 "" +#line 25021 "" icurv1 = i_indx("fnxhH", durq, (ftnlen)5, (ftnlen)1); -#line 25028 "" +#line 25022 "" if (icurv1 == 5) { /* check for 2nd H */ -#line 25032 "" +#line 25026 "" i__1 = *iccount; -#line 25032 "" +#line 25026 "" if (s_cmp(lineq + i__1, "H", *iccount + 1 - i__1, (ftnlen)1) == 0) { -#line 25033 "" +#line 25027 "" ++(*iccount); -#line 25034 "" +#line 25028 "" icurv1 = 6; -#line 25035 "" +#line 25029 "" } -#line 25036 "" +#line 25030 "" } -#line 25037 "" +#line 25031 "" isdat3[*nsdat] = bit_set(isdat3[*nsdat],0); -#line 25038 "" +#line 25032 "" i__1 = icurv1 + 32; -#line 25038 "" +#line 25032 "" setbits_(&isdat3[*nsdat], &c__6, &c__2, &i__1); -#line 25039 "" +#line 25033 "" goto L1; -#line 25040 "" +#line 25034 "" } else if (*(unsigned char *)durq == 'p') { /* Local adjustment */ -#line 25041 "" +#line 25035 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); /* +|- */ -#line 25042 "" +#line 25036 "" getchar_(lineq, iccount, dumq, (ftnlen)128, (ftnlen)1); /* 26 \sluradjust (p+s) */ /* 27 \nosluradjust (p-s) */ /* 28 \tieadjust (p+t) */ /* 29 \notieadjust (p-t) */ /* s|t */ -#line 25047 "" +#line 25041 "" if (*(unsigned char *)durq == '+') { -#line 25048 "" +#line 25042 "" if (*(unsigned char *)dumq == 's') { -#line 25049 "" +#line 25043 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],26); -#line 25050 "" +#line 25044 "" } else { -#line 25051 "" +#line 25045 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],28); -#line 25052 "" +#line 25046 "" } -#line 25053 "" +#line 25047 "" } else { -#line 25054 "" +#line 25048 "" if (*(unsigned char *)dumq == 's') { -#line 25055 "" +#line 25049 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],27); -#line 25056 "" +#line 25050 "" } else { -#line 25057 "" +#line 25051 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],29); -#line 25058 "" +#line 25052 "" } -#line 25059 "" +#line 25053 "" } -#line 25060 "" +#line 25054 "" goto L1; -#line 25061 "" +#line 25055 "" } else if (*(unsigned char *)durq == 'v') { /* Stem slur */ -#line 25062 "" +#line 25056 "" isdat1[*nsdat] = bit_set(isdat1[*nsdat],2); -#line 25063 "" +#line 25057 "" goto L1; -#line 25064 "" +#line 25058 "" } /* Record shifts */ -#line 25068 "" +#line 25062 "" i__1 = ivoff + 32; -#line 25068 "" +#line 25062 "" setbits_(&isdat2[*nsdat], &c__6, &c__6, &i__1); -#line 25069 "" +#line 25063 "" i__1 = ihoff + 64; -#line 25069 "" +#line 25063 "" setbits_(&isdat2[*nsdat], &c__7, &c__12, &i__1); /* Record chord flag, note level, notehead shift */ -#line 25073 "" +#line 25067 "" if (*notcrd) { -#line 25074 "" +#line 25068 "" setbits_(&isdat2[*nsdat], &c__7, &c__19, nolev); -#line 25075 "" +#line 25069 "" } else { -#line 25076 "" +#line 25070 "" nolevc = igetbits_(&comtrill_1.icrdat[comtrill_1.ncrd - 1], &c__7, & c__12); -#line 25077 "" +#line 25071 "" setbits_(&isdat2[*nsdat], &c__7, &c__19, &nolevc); -#line 25078 "" +#line 25072 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],0); -#line 25079 "" +#line 25073 "" i__1 = igetbits_(&comtrill_1.icrdat[comtrill_1.ncrd - 1], &c__2, & c__23); -#line 25079 "" +#line 25073 "" setbits_(&isdat2[*nsdat], &c__2, &c__1, &i__1); -#line 25080 "" +#line 25074 "" } -#line 25081 "" +#line 25075 "" return 0; } /* spsslur_ */ @@ -62143,346 +62079,346 @@ L1: /* Counter for signed integers. 1st is height, 2nd is horiz, 3rd is curve */ -#line 25106 "" +#line 25100 "" /* Parameter adjustments */ -#line 25106 "" +#line 25100 "" --isdat3; -#line 25106 "" +#line 25100 "" --isdat2; -#line 25106 "" +#line 25100 "" --isdat1; -#line 25106 "" +#line 25100 "" -#line 25106 "" +#line 25100 "" /* Function Body */ -#line 25106 "" +#line 25100 "" numint = 0; -#line 25107 "" +#line 25101 "" ivoff = 0; -#line 25108 "" +#line 25102 "" ihoff = 0; -#line 25109 "" +#line 25103 "" ++(*nsdat); -#line 25110 "" +#line 25104 "" if (*(unsigned char *)starter == '{' || *(unsigned char *)starter == '}') { -#line 25110 "" +#line 25104 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],3); -#line 25110 "" +#line 25104 "" } -#line 25112 "" +#line 25106 "" setbits_(&isdat1[*nsdat], &c__5, &c__13, iv); -#line 25113 "" +#line 25107 "" i__1 = *kv - 1; -#line 25113 "" +#line 25107 "" setbits_(&isdat1[*nsdat], &c__1, &c__12, &i__1); -#line 25114 "" +#line 25108 "" setbits_(&isdat1[*nsdat], &c__8, &c__3, ip); -#line 25115 "" +#line 25109 "" isdat3[*nsdat] = 0; /* Get id letter */ -#line 25119 "" +#line 25113 "" if (*(unsigned char *)&lineq[*iccount - 1] == 't') { /* Old-style t-slur. Use special idcode = 1 */ -#line 25123 "" +#line 25117 "" idcode = 1; -#line 25124 "" +#line 25118 "" } else { -#line 25125 "" +#line 25119 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 25126 "" +#line 25120 "" if (i_indx("uldtb+-hf ", durq, (ftnlen)10, (ftnlen)1) > 0) { /* Null id */ -#line 25130 "" +#line 25124 "" idcode = 32; -#line 25131 "" +#line 25125 "" --(*iccount); -#line 25132 "" +#line 25126 "" } else if (*(unsigned char *)durq == 'H') { /* Postscript slur, cannot use 'H' as code, must check for 2nd 'H' */ -#line 25136 "" +#line 25130 "" idcode = 32; -#line 25137 "" +#line 25131 "" --(*iccount); /* There may be another "H", but no need to deal with it yet */ -#line 25141 "" +#line 25135 "" } else { /* Set explicit idcode */ -#line 25145 "" +#line 25139 "" idcode = *(unsigned char *)durq; -#line 25146 "" +#line 25140 "" } -#line 25147 "" +#line 25141 "" } -#line 25148 "" +#line 25142 "" setbits_(&isdat1[*nsdat], &c__7, &c__19, &idcode); /* Set start/stop: look thru list from end for same idcode,iv,kv */ -#line 25152 "" +#line 25146 "" for (isdat = *nsdat - 1; isdat >= 1; --isdat) { -#line 25153 "" +#line 25147 "" if (idcode == igetbits_(&isdat1[isdat], &c__7, &c__19) && *iv == igetbits_(&isdat1[isdat], &c__5, &c__13) && *kv - 1 == igetbits_(&isdat1[isdat], &c__1, &c__12)) { /* Matched idcode & ivx. On/off?. If on, new is turnoff, leave bit 11 at 0. */ -#line 25159 "" +#line 25153 "" if (bit_test(isdat1[isdat],11)) { -#line 25159 "" +#line 25153 "" goto L3; -#line 25159 "" +#line 25153 "" } /* Found slur is a turnoff, so new one is a turnon. Jump down to set bit */ -#line 25163 "" +#line 25157 "" goto L4; -#line 25164 "" +#line 25158 "" } -#line 25165 "" +#line 25159 "" /* L2: */ -#line 25165 "" +#line 25159 "" } /* If here, this is turnon. */ -#line 25169 "" +#line 25163 "" L4: -#line 25170 "" +#line 25164 "" isdat1[*nsdat] = bit_set(isdat1[*nsdat],11); -#line 25171 "" +#line 25165 "" L3: /* Now done with initial turnon- or turnoff-specifics. Loop for rest of input */ -#line 25175 "" +#line 25169 "" L1: -#line 25175 "" +#line 25169 "" getchar_(lineq, iccount, durq, (ftnlen)128, (ftnlen)1); -#line 25176 "" +#line 25170 "" if (i_indx("uld", durq, (ftnlen)3, (ftnlen)1) > 0) { /* Force direction */ -#line 25180 "" +#line 25174 "" isdat1[*nsdat] = bit_set(isdat1[*nsdat],26); -#line 25181 "" +#line 25175 "" if (*(unsigned char *)durq == 'u') { -#line 25181 "" +#line 25175 "" isdat1[*nsdat] = bit_set(isdat1[*nsdat],27); -#line 25181 "" +#line 25175 "" } -#line 25182 "" +#line 25176 "" goto L1; -#line 25183 "" +#line 25177 "" } else if (i_indx("+-", durq, (ftnlen)2, (ftnlen)1) > 0) { -#line 25184 "" +#line 25178 "" ++numint; -#line 25185 "" +#line 25179 "" if (numint == 1) { /* Vertical offset */ -#line 25189 "" +#line 25183 "" ++(*iccount); -#line 25190 "" +#line 25184 "" readnum_(lineq, iccount, dumq, &fnum, (ftnlen)128, (ftnlen)1); -#line 25191 "" +#line 25185 "" --(*iccount); -#line 25192 "" +#line 25186 "" ivoff = i_nint(&fnum); -#line 25193 "" +#line 25187 "" if (*(unsigned char *)durq == '-') { -#line 25193 "" +#line 25187 "" ivoff = -ivoff; -#line 25193 "" +#line 25187 "" } -#line 25194 "" +#line 25188 "" } else if (numint == 2) { /* Horizontal offset */ -#line 25198 "" +#line 25192 "" ++(*iccount); -#line 25199 "" +#line 25193 "" readnum_(lineq, iccount, dumq, &fnum, (ftnlen)128, (ftnlen)1); -#line 25200 "" +#line 25194 "" --(*iccount); /* fnum is abs(hshift), must be 0 to 6.3 */ -#line 25204 "" +#line 25198 "" ihoff = fnum * 10 + .5f; -#line 25205 "" +#line 25199 "" if (*(unsigned char *)durq == '-') { -#line 25205 "" +#line 25199 "" ihoff = -ihoff; -#line 25205 "" +#line 25199 "" } /* Later will set bits to 1...127 to represent -6.3,...+6.3 */ -#line 25209 "" +#line 25203 "" } else { /* Must be the 3rd signed integer, so it's a curve specification */ -#line 25213 "" +#line 25207 "" isdat3[*nsdat] = bit_set(isdat3[*nsdat],0); -#line 25214 "" +#line 25208 "" ++(*iccount); -#line 25215 "" +#line 25209 "" readnum_(lineq, iccount, dumq, &fnum, (ftnlen)128, (ftnlen)1); -#line 25216 "" +#line 25210 "" icurv1 = i_nint(&fnum); -#line 25217 "" +#line 25211 "" if (*(unsigned char *)durq == '-') { -#line 25217 "" +#line 25211 "" icurv1 = -icurv1; -#line 25217 "" +#line 25211 "" } -#line 25218 "" +#line 25212 "" i__1 = icurv1 + 32; -#line 25218 "" +#line 25212 "" setbits_(&isdat3[*nsdat], &c__6, &c__2, &i__1); -#line 25219 "" +#line 25213 "" if (*(unsigned char *)dumq != ':') { /* Back up the pointer and loop for more input */ -#line 25223 "" +#line 25217 "" --(*iccount); -#line 25224 "" +#line 25218 "" } else { /* Expect two single digits as parameters for curve */ -#line 25228 "" +#line 25222 "" isdat3[*nsdat] = bit_set(isdat3[*nsdat],1); -#line 25229 "" +#line 25223 "" i__1 = *iccount; -#line 25229 "" +#line 25223 "" i__2 = *(unsigned char *)&lineq[i__1] - 48; -#line 25229 "" +#line 25223 "" setbits_(&isdat3[*nsdat], &c__3, &c__8, &i__2); -#line 25231 "" +#line 25225 "" i__1 = *iccount + 1; -#line 25231 "" +#line 25225 "" i__2 = *(unsigned char *)&lineq[i__1] - 48; -#line 25231 "" +#line 25225 "" setbits_(&isdat3[*nsdat], &c__3, &c__11, &i__2); -#line 25233 "" +#line 25227 "" *iccount += 2; -#line 25234 "" +#line 25228 "" } -#line 25235 "" +#line 25229 "" } -#line 25236 "" +#line 25230 "" goto L1; -#line 25237 "" +#line 25231 "" } else if (*(unsigned char *)durq == 't') { -#line 25238 "" +#line 25232 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],3); -#line 25239 "" +#line 25233 "" goto L1; -#line 25240 "" +#line 25234 "" } else if (*(unsigned char *)durq == 'b') { -#line 25241 "" +#line 25235 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],4); -#line 25242 "" +#line 25236 "" goto L1; -#line 25243 "" +#line 25237 "" } else if (i_indx("fhH", durq, (ftnlen)3, (ftnlen)1) > 0) { /* Special ps slur curvatures. Translate to old \midslur args (1,4,5,6) */ -#line 25247 "" +#line 25241 "" icurv1 = i_indx("fhH", durq, (ftnlen)3, (ftnlen)1) + 2; -#line 25248 "" +#line 25242 "" if (icurv1 == 3) { -#line 25249 "" +#line 25243 "" icurv1 = 1; -#line 25250 "" +#line 25244 "" } else if (icurv1 == 5) { /* check for 2nd H */ -#line 25254 "" +#line 25248 "" i__1 = *iccount; -#line 25254 "" +#line 25248 "" if (s_cmp(lineq + i__1, "H", *iccount + 1 - i__1, (ftnlen)1) == 0) { -#line 25255 "" +#line 25249 "" ++(*iccount); -#line 25256 "" +#line 25250 "" icurv1 = 6; -#line 25257 "" +#line 25251 "" } -#line 25258 "" +#line 25252 "" } -#line 25259 "" +#line 25253 "" isdat3[*nsdat] = bit_set(isdat3[*nsdat],0); /* Must change sign if downslur, but cannot do it now since we don't know */ /* slur direction for sure. */ -#line 25264 "" +#line 25258 "" i__1 = icurv1 + 32; -#line 25264 "" +#line 25258 "" setbits_(&isdat3[*nsdat], &c__6, &c__2, &i__1); -#line 25265 "" +#line 25259 "" goto L1; -#line 25266 "" +#line 25260 "" } /* Record shifts */ -#line 25270 "" +#line 25264 "" i__1 = ivoff + 32; -#line 25270 "" +#line 25264 "" setbits_(&isdat2[*nsdat], &c__6, &c__6, &i__1); -#line 25271 "" +#line 25265 "" i__1 = ihoff + 64; -#line 25271 "" +#line 25265 "" setbits_(&isdat2[*nsdat], &c__7, &c__12, &i__1); /* Record chord flag, note level, notehead shift */ -#line 25275 "" +#line 25269 "" if (*notcrd) { -#line 25276 "" +#line 25270 "" setbits_(&isdat2[*nsdat], &c__7, &c__19, nolev); -#line 25277 "" +#line 25271 "" } else { -#line 25278 "" +#line 25272 "" nolevc = igetbits_(&comtrill_1.icrdat[comtrill_1.ncrd - 1], &c__7, & c__12); -#line 25279 "" +#line 25273 "" setbits_(&isdat2[*nsdat], &c__7, &c__19, &nolevc); -#line 25280 "" +#line 25274 "" isdat2[*nsdat] = bit_set(isdat2[*nsdat],0); -#line 25281 "" +#line 25275 "" i__1 = igetbits_(&comtrill_1.icrdat[comtrill_1.ncrd - 1], &c__2, & c__23); -#line 25281 "" +#line 25275 "" setbits_(&isdat2[*nsdat], &c__2, &c__1, &i__1); -#line 25282 "" +#line 25276 "" } -#line 25283 "" +#line 25277 "" return 0; } /* sslur_ */ @@ -62490,9 +62426,9 @@ L1: { extern /* Subroutine */ int exit_(integer *); -#line 25286 "" +#line 25280 "" exit_(&c__1); -#line 25287 "" +#line 25281 "" return 0; } /* stop1_ */ @@ -62539,6 +62475,11 @@ L1: static integer nstaves; /* Fortran I/O blocks */ + static cilist io___1810 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1811 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1812 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1813 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1814 = { 0, 11, 0, "(a)", 0 }; static cilist io___1815 = { 0, 11, 0, "(a)", 0 }; static cilist io___1816 = { 0, 11, 0, "(a)", 0 }; static cilist io___1817 = { 0, 11, 0, "(a)", 0 }; @@ -62547,263 +62488,258 @@ L1: static cilist io___1820 = { 0, 11, 0, "(a)", 0 }; static cilist io___1821 = { 0, 11, 0, "(a)", 0 }; static cilist io___1822 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1823 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1824 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1825 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1826 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1827 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1829 = { 0, 11, 0, "(a8,i1,a)", 0 }; - static cilist io___1830 = { 0, 11, 0, "(a9,i2,a)", 0 }; - static cilist io___1831 = { 0, 11, 0, "(a8,i1,a)", 0 }; - static cilist io___1832 = { 0, 11, 0, "(a9,i2,a)", 0 }; - static icilist io___1834 = { 0, fbarq, 0, "(f5.3)", 5, 1 }; - static cilist io___1835 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1836 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1837 = { 0, 11, 0, "(a7,i3,a2)", 0 }; - static cilist io___1838 = { 0, 11, 0, "(a8,i3,a2)", 0 }; - static cilist io___1839 = { 0, 11, 0, "(a8,i2,a2)", 0 }; - static cilist io___1840 = { 0, 11, 0, "(a8,i1,a2)", 0 }; - static cilist io___1841 = { 0, 11, 0, "(a8,i2,a2)", 0 }; - static cilist io___1842 = { 0, 11, 0, "(a8,i3,a2)", 0 }; - static cilist io___1843 = { 0, 11, 0, "(a8,i2,a2)", 0 }; - static cilist io___1844 = { 0, 11, 0, "(a8,i1,a2)", 0 }; - static cilist io___1845 = { 0, 11, 0, "(a8,i2,a2)", 0 }; + static cilist io___1824 = { 0, 11, 0, "(a8,i1,a)", 0 }; + static cilist io___1825 = { 0, 11, 0, "(a9,i2,a)", 0 }; + static cilist io___1826 = { 0, 11, 0, "(a8,i1,a)", 0 }; + static cilist io___1827 = { 0, 11, 0, "(a9,i2,a)", 0 }; + static icilist io___1829 = { 0, fbarq, 0, "(f5.3)", 5, 1 }; + static cilist io___1830 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1831 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1832 = { 0, 11, 0, "(a7,i3,a2)", 0 }; + static cilist io___1833 = { 0, 11, 0, "(a8,i3,a2)", 0 }; + static cilist io___1834 = { 0, 11, 0, "(a8,i2,a2)", 0 }; + static cilist io___1835 = { 0, 11, 0, "(a8,i1,a2)", 0 }; + static cilist io___1836 = { 0, 11, 0, "(a8,i2,a2)", 0 }; + static cilist io___1837 = { 0, 11, 0, "(a8,i3,a2)", 0 }; + static cilist io___1838 = { 0, 11, 0, "(a8,i2,a2)", 0 }; + static cilist io___1839 = { 0, 11, 0, "(a8,i1,a2)", 0 }; + static cilist io___1840 = { 0, 11, 0, "(a8,i2,a2)", 0 }; + static cilist io___1841 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1842 = { 0, 11, 0, "(a19,i1,a1)", 0 }; + static cilist io___1843 = { 0, 11, 0, "(a19,i2,a1)", 0 }; static cilist io___1846 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1847 = { 0, 11, 0, "(a19,i1,a1)", 0 }; - static cilist io___1848 = { 0, 11, 0, "(a19,i2,a1)", 0 }; - static cilist io___1851 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1852 = { 0, 11, 0, "(a11,i2,a)", 0 }; - static cilist io___1857 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1847 = { 0, 11, 0, "(a11,i2,a)", 0 }; + static cilist io___1852 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1853 = { 0, 11, 0, "(a9,i2,a)", 0 }; + static cilist io___1854 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1855 = { 0, 11, 0, "(a21,i2,a)", 0 }; + static cilist io___1857 = { 0, 11, 0, "(a8,i1,a)", 0 }; static cilist io___1858 = { 0, 11, 0, "(a9,i2,a)", 0 }; - static cilist io___1859 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1860 = { 0, 11, 0, "(a21,i2,a)", 0 }; - static cilist io___1862 = { 0, 11, 0, "(a8,i1,a)", 0 }; - static cilist io___1863 = { 0, 11, 0, "(a9,i2,a)", 0 }; - static cilist io___1864 = { 0, 11, 0, "(a18,i2,a2)", 0 }; - static cilist io___1866 = { 0, 11, 0, "(a11,i1,a2)", 0 }; - static cilist io___1867 = { 0, 11, 0, "(a11,i2,a2)", 0 }; - static cilist io___1868 = { 0, 11, 0, "(a11,i3,a2)", 0 }; + static cilist io___1859 = { 0, 11, 0, "(a18,i2,a2)", 0 }; + static cilist io___1861 = { 0, 11, 0, "(a11,i1,a2)", 0 }; + static cilist io___1862 = { 0, 11, 0, "(a11,i2,a2)", 0 }; + static cilist io___1863 = { 0, 11, 0, "(a11,i3,a2)", 0 }; + static cilist io___1864 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1866 = { 0, 11, 0, fmtq, 0 }; + static cilist io___1867 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1868 = { 0, 11, 0, "(a)", 0 }; static cilist io___1869 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1871 = { 0, 11, 0, fmtq, 0 }; + static cilist io___1870 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1871 = { 0, 11, 0, "(a)", 0 }; static cilist io___1872 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1873 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1874 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1875 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1876 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1877 = { 0, 11, 0, "(a)", 0 }; -#line 25316 "" +#line 25310 "" /* Parameter adjustments */ -#line 25316 "" +#line 25310 "" --clefq; -#line 25316 "" +#line 25310 "" -#line 25316 "" +#line 25310 "" /* Function Body */ -#line 25316 "" +#line 25310 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 25316 "" +#line 25310 "" *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; -#line 25317 "" +#line 25311 "" *vshrink = *xinstf1 > 20.f && ! comnvst_1.novshrinktop; -#line 25318 "" +#line 25312 "" if (*vshrink) { -#line 25319 "" +#line 25313 "" comarp_1.xinsnow = 10.f; -#line 25320 "" +#line 25314 "" } else { -#line 25321 "" +#line 25315 "" comarp_1.xinsnow = *xinstf1; -#line 25322 "" +#line 25316 "" } -#line 25323 "" +#line 25317 "" if (! comlast_1.islast) { -#line 25323 "" +#line 25317 "" return 0; -#line 25323 "" +#line 25317 "" } /* Initialize octave treble clef tracker */ -#line 25327 "" +#line 25321 "" for (im = 1; im <= 24; ++im) { -#line 25328 "" +#line 25322 "" comc8flag_1.c8flag[im - 1] = FALSE_; -#line 25329 "" +#line 25323 "" /* L6: */ -#line 25329 "" +#line 25323 "" } -#line 25330 "" - s_wsfe(&io___1815); -#line 25330 "" +#line 25324 "" + s_wsfe(&io___1810); +#line 25324 "" do_fio(&c__1, "%%%%%%%%%%%%%%%%%", (ftnlen)17); -#line 25330 "" +#line 25324 "" e_wsfe(); -#line 25331 "" - s_wsfe(&io___1816); -#line 25331 "" +#line 25325 "" + s_wsfe(&io___1811); +#line 25325 "" do_fio(&c__1, "%", (ftnlen)1); -#line 25331 "" +#line 25325 "" e_wsfe(); -#line 25332 "" - s_wsfe(&io___1817); +#line 25326 "" + s_wsfe(&io___1812); /* Writing concatenation */ -#line 25332 "" +#line 25326 "" i__1[0] = 2, a__1[0] = "% "; -#line 25332 "" +#line 25326 "" i__1[1] = *lbase, a__1[1] = basenameq; -#line 25332 "" +#line 25326 "" i__1[2] = 4, a__1[2] = ".tex"; -#line 25332 "" +#line 25326 "" s_cat(ch__2, a__1, i__1, &c__3, (ftnlen)50); -#line 25332 "" +#line 25326 "" do_fio(&c__1, ch__2, *lbase + 6); -#line 25332 "" +#line 25326 "" e_wsfe(); -#line 25333 "" - s_wsfe(&io___1818); -#line 25333 "" +#line 25327 "" + s_wsfe(&io___1813); +#line 25327 "" do_fio(&c__1, "%", (ftnlen)1); -#line 25333 "" +#line 25327 "" e_wsfe(); -#line 25334 "" - s_wsfe(&io___1819); -#line 25334 "" +#line 25328 "" + s_wsfe(&io___1814); +#line 25328 "" do_fio(&c__1, "%%%%%%%%%%%%%%%%", (ftnlen)16); -#line 25334 "" +#line 25328 "" e_wsfe(); -#line 25335 "" - s_wsfe(&io___1820); +#line 25329 "" + s_wsfe(&io___1815); /* Writing concatenation */ -#line 25335 "" +#line 25329 "" i__2[0] = 1, a__2[0] = sq; -#line 25335 "" +#line 25329 "" i__2[1] = 14, a__2[1] = "input musixtex"; -#line 25335 "" +#line 25329 "" s_cat(ch__3, a__2, i__2, &c__2, (ftnlen)15); -#line 25335 "" +#line 25329 "" do_fio(&c__1, ch__3, (ftnlen)15); -#line 25335 "" +#line 25329 "" e_wsfe(); -#line 25336 "" - s_wsfe(&io___1821); +#line 25330 "" + s_wsfe(&io___1816); /* Writing concatenation */ -#line 25336 "" +#line 25330 "" i__2[0] = 1, a__2[0] = sq; -#line 25336 "" +#line 25330 "" i__2[1] = 9, a__2[1] = "input pmx"; -#line 25336 "" +#line 25330 "" s_cat(ch__4, a__2, i__2, &c__2, (ftnlen)10); -#line 25336 "" +#line 25330 "" do_fio(&c__1, ch__4, (ftnlen)10); -#line 25336 "" +#line 25330 "" e_wsfe(); -#line 25337 "" - s_wsfe(&io___1822); +#line 25331 "" + s_wsfe(&io___1817); /* Writing concatenation */ -#line 25337 "" +#line 25331 "" i__3[0] = 1, a__3[0] = sq; -#line 25337 "" +#line 25331 "" i__3[1] = 15, a__3[1] = "setmaxslurs{24}"; -#line 25337 "" +#line 25331 "" i__3[2] = 1, a__3[2] = sq; -#line 25337 "" +#line 25331 "" i__3[3] = 22, a__3[3] = "setmaxinstruments{24}%"; -#line 25337 "" +#line 25331 "" s_cat(ch__5, a__3, i__3, &c__4, (ftnlen)39); -#line 25337 "" +#line 25331 "" do_fio(&c__1, ch__5, (ftnlen)39); -#line 25337 "" +#line 25331 "" e_wsfe(); -#line 25339 "" +#line 25333 "" if (! (*fontslur)) { -#line 25339 "" - s_wsfe(&io___1823); +#line 25333 "" + s_wsfe(&io___1818); /* Writing concatenation */ -#line 25339 "" +#line 25333 "" i__2[0] = 1, a__2[0] = sq; -#line 25339 "" +#line 25333 "" i__2[1] = 13, a__2[1] = "input musixps"; -#line 25339 "" +#line 25333 "" s_cat(ch__6, a__2, i__2, &c__2, (ftnlen)14); -#line 25339 "" +#line 25333 "" do_fio(&c__1, ch__6, (ftnlen)14); -#line 25339 "" +#line 25333 "" e_wsfe(); -#line 25339 "" +#line 25333 "" } /* Need to input musixmad to permit more slurs. */ -#line 25343 "" +#line 25337 "" if (*musicsize == 20) { -#line 25344 "" - s_wsfe(&io___1824); +#line 25338 "" + s_wsfe(&io___1819); /* Writing concatenation */ -#line 25344 "" +#line 25338 "" i__2[0] = 1, a__2[0] = sq; -#line 25344 "" +#line 25338 "" i__2[1] = 16, a__2[1] = "normalmusicsize%"; -#line 25344 "" +#line 25338 "" s_cat(ch__7, a__2, i__2, &c__2, (ftnlen)17); -#line 25344 "" +#line 25338 "" do_fio(&c__1, ch__7, (ftnlen)17); -#line 25344 "" +#line 25338 "" e_wsfe(); -#line 25345 "" +#line 25339 "" } else if (*musicsize == 16) { -#line 25346 "" - s_wsfe(&io___1825); +#line 25340 "" + s_wsfe(&io___1820); /* Writing concatenation */ -#line 25346 "" +#line 25340 "" i__2[0] = 1, a__2[0] = sq; -#line 25346 "" +#line 25340 "" i__2[1] = 15, a__2[1] = "smallmusicsize%"; -#line 25346 "" +#line 25340 "" s_cat(ch__8, a__2, i__2, &c__2, (ftnlen)16); -#line 25346 "" +#line 25340 "" do_fio(&c__1, ch__8, (ftnlen)16); -#line 25346 "" +#line 25340 "" e_wsfe(); -#line 25347 "" +#line 25341 "" } else if (*musicsize == 24) { -#line 25348 "" - s_wsfe(&io___1826); +#line 25342 "" + s_wsfe(&io___1821); /* Writing concatenation */ -#line 25348 "" +#line 25342 "" i__2[0] = 1, a__2[0] = sq; -#line 25348 "" +#line 25342 "" i__2[1] = 15, a__2[1] = "largemusicsize%"; -#line 25348 "" +#line 25342 "" s_cat(ch__8, a__2, i__2, &c__2, (ftnlen)16); -#line 25348 "" +#line 25342 "" do_fio(&c__1, ch__8, (ftnlen)16); -#line 25348 "" +#line 25342 "" e_wsfe(); /* Eliminate, per Tennent's analysis and musixtex changes since first input */ /* write(11,'(a)')sq//'def'//sq//'meterfont{'//sq// */ /* * 'meterlargefont}%' */ -#line 25354 "" +#line 25348 "" } else if (*musicsize == 29) { -#line 25355 "" - s_wsfe(&io___1827); +#line 25349 "" + s_wsfe(&io___1822); /* Writing concatenation */ -#line 25355 "" +#line 25349 "" i__2[0] = 1, a__2[0] = sq; -#line 25355 "" +#line 25349 "" i__2[1] = 15, a__2[1] = "Largemusicsize%"; -#line 25355 "" +#line 25349 "" s_cat(ch__8, a__2, i__2, &c__2, (ftnlen)16); -#line 25355 "" +#line 25349 "" do_fio(&c__1, ch__8, (ftnlen)16); -#line 25355 "" +#line 25349 "" e_wsfe(); /* write(11,'(a)')sq//'def'//sq//'meterfont{'//sq// */ /* * 'meterLargefont}%' */ -#line 25358 "" +#line 25352 "" } /* Set sizes. Have sizes per staff in isize(.) and noinst per staff in */ @@ -62811,1169 +62747,1169 @@ L1: /* 130324 */ /* iiv = 1 */ -#line 25365 "" +#line 25359 "" i__4 = *noinst; -#line 25365 "" +#line 25359 "" for (iinst = 1; iinst <= i__4; ++iinst) { /* if (isize(iiv) .eq. 1) then */ -#line 25367 "" +#line 25361 "" if (comsize_1.isize[iinst - 1] == 1) { -#line 25368 "" +#line 25362 "" if (iinst <= 9) { -#line 25369 "" - s_wsfe(&io___1829); +#line 25363 "" + s_wsfe(&io___1824); /* Writing concatenation */ -#line 25369 "" +#line 25363 "" i__2[0] = 1, a__2[0] = sq; -#line 25369 "" +#line 25363 "" i__2[1] = 7, a__2[1] = "setsize"; -#line 25369 "" +#line 25363 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 25369 "" +#line 25363 "" do_fio(&c__1, ch__9, (ftnlen)8); -#line 25369 "" +#line 25363 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 25369 "" +#line 25363 "" i__5[0] = 1, a__4[0] = sq; -#line 25369 "" +#line 25363 "" i__5[1] = 11, a__4[1] = "smallvalue%"; -#line 25369 "" +#line 25363 "" s_cat(ch__10, a__4, i__5, &c__2, (ftnlen)12); -#line 25369 "" +#line 25363 "" do_fio(&c__1, ch__10, (ftnlen)12); -#line 25369 "" +#line 25363 "" e_wsfe(); -#line 25371 "" +#line 25365 "" } else { -#line 25372 "" - s_wsfe(&io___1830); +#line 25366 "" + s_wsfe(&io___1825); /* Writing concatenation */ -#line 25372 "" +#line 25366 "" i__2[0] = 1, a__2[0] = sq; -#line 25372 "" +#line 25366 "" i__2[1] = 8, a__2[1] = "setsize{"; -#line 25372 "" +#line 25366 "" s_cat(ch__11, a__2, i__2, &c__2, (ftnlen)9); -#line 25372 "" +#line 25366 "" do_fio(&c__1, ch__11, (ftnlen)9); -#line 25372 "" +#line 25366 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 25372 "" +#line 25366 "" i__1[0] = 1, a__1[0] = "}"; -#line 25372 "" +#line 25366 "" i__1[1] = 1, a__1[1] = sq; -#line 25372 "" +#line 25366 "" i__1[2] = 11, a__1[2] = "smallvalue%"; -#line 25372 "" +#line 25366 "" s_cat(ch__12, a__1, i__1, &c__3, (ftnlen)13); -#line 25372 "" +#line 25366 "" do_fio(&c__1, ch__12, (ftnlen)13); -#line 25372 "" +#line 25366 "" e_wsfe(); -#line 25374 "" +#line 25368 "" } /* else if (isize(iiv) .eq. 2) then */ -#line 25376 "" +#line 25370 "" } else if (comsize_1.isize[iinst - 1] == 2) { -#line 25377 "" +#line 25371 "" if (iinst <= 9) { -#line 25378 "" - s_wsfe(&io___1831); +#line 25372 "" + s_wsfe(&io___1826); /* Writing concatenation */ -#line 25378 "" +#line 25372 "" i__2[0] = 1, a__2[0] = sq; -#line 25378 "" +#line 25372 "" i__2[1] = 7, a__2[1] = "setsize"; -#line 25378 "" +#line 25372 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 25378 "" +#line 25372 "" do_fio(&c__1, ch__9, (ftnlen)8); -#line 25378 "" +#line 25372 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 25378 "" +#line 25372 "" i__5[0] = 1, a__4[0] = sq; -#line 25378 "" +#line 25372 "" i__5[1] = 10, a__4[1] = "tinyvalue%"; -#line 25378 "" +#line 25372 "" s_cat(ch__13, a__4, i__5, &c__2, (ftnlen)11); -#line 25378 "" +#line 25372 "" do_fio(&c__1, ch__13, (ftnlen)11); -#line 25378 "" +#line 25372 "" e_wsfe(); -#line 25380 "" +#line 25374 "" } else { -#line 25381 "" - s_wsfe(&io___1832); +#line 25375 "" + s_wsfe(&io___1827); /* Writing concatenation */ -#line 25381 "" +#line 25375 "" i__2[0] = 1, a__2[0] = sq; -#line 25381 "" +#line 25375 "" i__2[1] = 8, a__2[1] = "setsize{"; -#line 25381 "" +#line 25375 "" s_cat(ch__11, a__2, i__2, &c__2, (ftnlen)9); -#line 25381 "" +#line 25375 "" do_fio(&c__1, ch__11, (ftnlen)9); -#line 25381 "" +#line 25375 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 25381 "" +#line 25375 "" i__1[0] = 1, a__1[0] = "}"; -#line 25381 "" +#line 25375 "" i__1[1] = 1, a__1[1] = sq; -#line 25381 "" +#line 25375 "" i__1[2] = 10, a__1[2] = "tinyvalue%"; -#line 25381 "" +#line 25375 "" s_cat(ch__10, a__1, i__1, &c__3, (ftnlen)12); -#line 25381 "" +#line 25375 "" do_fio(&c__1, ch__10, (ftnlen)12); -#line 25381 "" +#line 25375 "" e_wsfe(); -#line 25383 "" +#line 25377 "" } -#line 25384 "" +#line 25378 "" } /* iiv = iiv+nsperi(iinst) */ -#line 25386 "" +#line 25380 "" /* L5: */ -#line 25386 "" +#line 25380 "" } -#line 25387 "" - s_wsfi(&io___1834); -#line 25387 "" +#line 25381 "" + s_wsfi(&io___1829); +#line 25381 "" do_fio(&c__1, (char *)&(*fbar), (ftnlen)sizeof(real)); -#line 25387 "" +#line 25381 "" e_wsfi(); -#line 25388 "" - s_wsfe(&io___1835); +#line 25382 "" + s_wsfe(&io___1830); /* Writing concatenation */ -#line 25388 "" +#line 25382 "" i__2[0] = 1, a__2[0] = sq; -#line 25388 "" +#line 25382 "" i__2[1] = 13, a__2[1] = "nopagenumbers"; -#line 25388 "" +#line 25382 "" s_cat(ch__6, a__2, i__2, &c__2, (ftnlen)14); -#line 25388 "" +#line 25382 "" do_fio(&c__1, ch__6, (ftnlen)14); -#line 25388 "" +#line 25382 "" e_wsfe(); -#line 25389 "" - s_wsfe(&io___1836); +#line 25383 "" + s_wsfe(&io___1831); /* Writing concatenation */ -#line 25389 "" +#line 25383 "" i__3[0] = 1, a__3[0] = sq; -#line 25389 "" +#line 25383 "" i__3[1] = 14, a__3[1] = "tracingstats=2"; -#line 25389 "" +#line 25383 "" i__3[2] = 1, a__3[2] = sq; -#line 25389 "" +#line 25383 "" i__3[3] = 5, a__3[3] = "relax"; -#line 25389 "" +#line 25383 "" s_cat(ch__14, a__3, i__3, &c__4, (ftnlen)21); -#line 25389 "" +#line 25383 "" do_fio(&c__1, ch__14, (ftnlen)21); -#line 25389 "" +#line 25383 "" e_wsfe(); -#line 25390 "" - s_wsfe(&io___1837); +#line 25384 "" + s_wsfe(&io___1832); /* Writing concatenation */ -#line 25390 "" +#line 25384 "" i__2[0] = 1, a__2[0] = sq; -#line 25390 "" +#line 25384 "" i__2[1] = 6, a__2[1] = "hsize="; -#line 25390 "" +#line 25384 "" s_cat(ch__15, a__2, i__2, &c__2, (ftnlen)7); -#line 25390 "" +#line 25384 "" do_fio(&c__1, ch__15, (ftnlen)7); -#line 25390 "" +#line 25384 "" i__4 = i_nint(&comtop_1.widthpt); -#line 25390 "" +#line 25384 "" do_fio(&c__1, (char *)&i__4, (ftnlen)sizeof(integer)); -#line 25390 "" +#line 25384 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25390 "" +#line 25384 "" e_wsfe(); -#line 25391 "" +#line 25385 "" ci__1.cierr = 0; -#line 25391 "" +#line 25385 "" ci__1.ciunit = 11; /* Writing concatenation */ -#line 25391 "" +#line 25385 "" i__1[0] = 5, a__1[0] = "(a6,i"; -#line 25391 "" +#line 25385 "" r__1 = comtop_1.height + .1f; -#line 25391 "" +#line 25385 "" i__4 = (integer) r_lg10(&r__1) + 49; -#line 25391 "" +#line 25385 "" chax_(ch__1, (ftnlen)1, &i__4); -#line 25391 "" +#line 25385 "" i__1[1] = 1, a__1[1] = ch__1; -#line 25391 "" +#line 25385 "" i__1[2] = 4, a__1[2] = ",a2)"; -#line 25391 "" +#line 25385 "" ci__1.cifmt = (s_cat(ch__4, a__1, i__1, &c__3, (ftnlen)10), ch__4); -#line 25391 "" +#line 25385 "" s_wsfe(&ci__1); /* Writing concatenation */ -#line 25391 "" +#line 25385 "" i__2[0] = 1, a__2[0] = sq; -#line 25391 "" +#line 25385 "" i__2[1] = 5, a__2[1] = "vsize"; -#line 25391 "" +#line 25385 "" s_cat(ch__16, a__2, i__2, &c__2, (ftnlen)6); -#line 25391 "" +#line 25385 "" do_fio(&c__1, ch__16, (ftnlen)6); -#line 25391 "" +#line 25385 "" i__6 = (integer) (comtop_1.height + .1f); -#line 25391 "" +#line 25385 "" do_fio(&c__1, (char *)&i__6, (ftnlen)sizeof(integer)); -#line 25391 "" +#line 25385 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25391 "" +#line 25385 "" e_wsfe(); -#line 25393 "" +#line 25387 "" if (dabs(comtop_1.hoffpt) > .1f) { -#line 25394 "" +#line 25388 "" if (comtop_1.hoffpt <= -10.f) { -#line 25395 "" - s_wsfe(&io___1838); +#line 25389 "" + s_wsfe(&io___1833); /* Writing concatenation */ -#line 25395 "" +#line 25389 "" i__2[0] = 1, a__2[0] = sq; -#line 25395 "" +#line 25389 "" i__2[1] = 7, a__2[1] = "hoffset"; -#line 25395 "" +#line 25389 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 25395 "" +#line 25389 "" do_fio(&c__1, ch__9, (ftnlen)8); -#line 25395 "" +#line 25389 "" i__4 = i_nint(&comtop_1.hoffpt); -#line 25395 "" +#line 25389 "" do_fio(&c__1, (char *)&i__4, (ftnlen)sizeof(integer)); -#line 25395 "" +#line 25389 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25395 "" +#line 25389 "" e_wsfe(); -#line 25396 "" +#line 25390 "" } else if (comtop_1.hoffpt < 0.f) { -#line 25397 "" - s_wsfe(&io___1839); +#line 25391 "" + s_wsfe(&io___1834); /* Writing concatenation */ -#line 25397 "" +#line 25391 "" i__2[0] = 1, a__2[0] = sq; -#line 25397 "" +#line 25391 "" i__2[1] = 7, a__2[1] = "hoffset"; -#line 25397 "" +#line 25391 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 25397 "" +#line 25391 "" do_fio(&c__1, ch__9, (ftnlen)8); -#line 25397 "" +#line 25391 "" i__4 = i_nint(&comtop_1.hoffpt); -#line 25397 "" +#line 25391 "" do_fio(&c__1, (char *)&i__4, (ftnlen)sizeof(integer)); -#line 25397 "" +#line 25391 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25397 "" +#line 25391 "" e_wsfe(); -#line 25398 "" +#line 25392 "" } else if (comtop_1.hoffpt < 10.f) { -#line 25399 "" - s_wsfe(&io___1840); +#line 25393 "" + s_wsfe(&io___1835); /* Writing concatenation */ -#line 25399 "" +#line 25393 "" i__2[0] = 1, a__2[0] = sq; -#line 25399 "" +#line 25393 "" i__2[1] = 7, a__2[1] = "hoffset"; -#line 25399 "" +#line 25393 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 25399 "" +#line 25393 "" do_fio(&c__1, ch__9, (ftnlen)8); -#line 25399 "" +#line 25393 "" i__4 = i_nint(&comtop_1.hoffpt); -#line 25399 "" +#line 25393 "" do_fio(&c__1, (char *)&i__4, (ftnlen)sizeof(integer)); -#line 25399 "" +#line 25393 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25399 "" +#line 25393 "" e_wsfe(); -#line 25400 "" +#line 25394 "" } else { -#line 25401 "" - s_wsfe(&io___1841); +#line 25395 "" + s_wsfe(&io___1836); /* Writing concatenation */ -#line 25401 "" +#line 25395 "" i__2[0] = 1, a__2[0] = sq; -#line 25401 "" +#line 25395 "" i__2[1] = 7, a__2[1] = "hoffset"; -#line 25401 "" +#line 25395 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 25401 "" +#line 25395 "" do_fio(&c__1, ch__9, (ftnlen)8); -#line 25401 "" +#line 25395 "" i__4 = i_nint(&comtop_1.hoffpt); -#line 25401 "" +#line 25395 "" do_fio(&c__1, (char *)&i__4, (ftnlen)sizeof(integer)); -#line 25401 "" +#line 25395 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25401 "" +#line 25395 "" e_wsfe(); -#line 25402 "" +#line 25396 "" } -#line 25403 "" +#line 25397 "" } -#line 25404 "" +#line 25398 "" if (dabs(comtop_1.voffpt) > .1f) { -#line 25405 "" +#line 25399 "" if (comtop_1.voffpt <= -10.f) { -#line 25406 "" - s_wsfe(&io___1842); +#line 25400 "" + s_wsfe(&io___1837); /* Writing concatenation */ -#line 25406 "" +#line 25400 "" i__2[0] = 1, a__2[0] = sq; -#line 25406 "" +#line 25400 "" i__2[1] = 7, a__2[1] = "voffset"; -#line 25406 "" +#line 25400 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 25406 "" +#line 25400 "" do_fio(&c__1, ch__9, (ftnlen)8); -#line 25406 "" +#line 25400 "" i__4 = i_nint(&comtop_1.voffpt); -#line 25406 "" +#line 25400 "" do_fio(&c__1, (char *)&i__4, (ftnlen)sizeof(integer)); -#line 25406 "" +#line 25400 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25406 "" +#line 25400 "" e_wsfe(); -#line 25407 "" +#line 25401 "" } else if (comtop_1.voffpt < 0.f) { -#line 25408 "" - s_wsfe(&io___1843); +#line 25402 "" + s_wsfe(&io___1838); /* Writing concatenation */ -#line 25408 "" +#line 25402 "" i__2[0] = 1, a__2[0] = sq; -#line 25408 "" +#line 25402 "" i__2[1] = 7, a__2[1] = "voffset"; -#line 25408 "" +#line 25402 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 25408 "" +#line 25402 "" do_fio(&c__1, ch__9, (ftnlen)8); -#line 25408 "" +#line 25402 "" i__4 = i_nint(&comtop_1.voffpt); -#line 25408 "" +#line 25402 "" do_fio(&c__1, (char *)&i__4, (ftnlen)sizeof(integer)); -#line 25408 "" +#line 25402 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25408 "" +#line 25402 "" e_wsfe(); -#line 25409 "" +#line 25403 "" } else if (comtop_1.voffpt < 10.f) { -#line 25410 "" - s_wsfe(&io___1844); +#line 25404 "" + s_wsfe(&io___1839); /* Writing concatenation */ -#line 25410 "" +#line 25404 "" i__2[0] = 1, a__2[0] = sq; -#line 25410 "" +#line 25404 "" i__2[1] = 7, a__2[1] = "voffset"; -#line 25410 "" +#line 25404 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 25410 "" +#line 25404 "" do_fio(&c__1, ch__9, (ftnlen)8); -#line 25410 "" +#line 25404 "" i__4 = i_nint(&comtop_1.voffpt); -#line 25410 "" +#line 25404 "" do_fio(&c__1, (char *)&i__4, (ftnlen)sizeof(integer)); -#line 25410 "" +#line 25404 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25410 "" +#line 25404 "" e_wsfe(); -#line 25411 "" +#line 25405 "" } else { -#line 25412 "" - s_wsfe(&io___1845); +#line 25406 "" + s_wsfe(&io___1840); /* Writing concatenation */ -#line 25412 "" +#line 25406 "" i__2[0] = 1, a__2[0] = sq; -#line 25412 "" +#line 25406 "" i__2[1] = 7, a__2[1] = "voffset"; -#line 25412 "" +#line 25406 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 25412 "" +#line 25406 "" do_fio(&c__1, ch__9, (ftnlen)8); -#line 25412 "" +#line 25406 "" i__4 = i_nint(&comtop_1.voffpt); -#line 25412 "" +#line 25406 "" do_fio(&c__1, (char *)&i__4, (ftnlen)sizeof(integer)); -#line 25412 "" +#line 25406 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25412 "" +#line 25406 "" e_wsfe(); -#line 25413 "" +#line 25407 "" } -#line 25414 "" +#line 25408 "" } /* The default raisebarno=3.5 internote, set in pmx.tex. Increase to 4.5 if */ /* 3 sharps and treble clef, to avoid vertical clash with top space g# */ -#line 25419 "" +#line 25413 "" if (comtop_1.isig == 3 && *(unsigned char *)&clefq[*nv] == 't') { -#line 25419 "" - s_wsfe(&io___1846); +#line 25413 "" + s_wsfe(&io___1841); /* Writing concatenation */ -#line 25419 "" +#line 25413 "" i__7[0] = 1, a__5[0] = sq; -#line 25419 "" +#line 25413 "" i__7[1] = 3, a__5[1] = "def"; -#line 25419 "" +#line 25413 "" i__7[2] = 1, a__5[2] = sq; -#line 25419 "" +#line 25413 "" i__7[3] = 14, a__5[3] = "raisebarno{4.5"; -#line 25419 "" +#line 25413 "" i__7[4] = 1, a__5[4] = sq; -#line 25419 "" +#line 25413 "" i__7[5] = 10, a__5[5] = "internote}"; -#line 25419 "" +#line 25413 "" s_cat(ch__17, a__5, i__7, &c__6, (ftnlen)30); -#line 25419 "" +#line 25413 "" do_fio(&c__1, ch__17, (ftnlen)30); -#line 25419 "" +#line 25413 "" e_wsfe(); -#line 25419 "" +#line 25413 "" } -#line 25421 "" +#line 25415 "" if (*noinst < 10) { -#line 25422 "" - s_wsfe(&io___1847); +#line 25416 "" + s_wsfe(&io___1842); /* Writing concatenation */ -#line 25422 "" +#line 25416 "" i__3[0] = 1, a__3[0] = sq; -#line 25422 "" +#line 25416 "" i__3[1] = 3, a__3[1] = "def"; -#line 25422 "" +#line 25416 "" i__3[2] = 1, a__3[2] = sq; -#line 25422 "" +#line 25416 "" i__3[3] = 14, a__3[3] = "nbinstruments{"; -#line 25422 "" +#line 25416 "" s_cat(ch__18, a__3, i__3, &c__4, (ftnlen)19); -#line 25422 "" +#line 25416 "" do_fio(&c__1, ch__18, (ftnlen)19); -#line 25422 "" +#line 25416 "" do_fio(&c__1, (char *)&(*noinst), (ftnlen)sizeof(integer)); -#line 25422 "" +#line 25416 "" do_fio(&c__1, "}", (ftnlen)1); -#line 25422 "" +#line 25416 "" e_wsfe(); -#line 25424 "" +#line 25418 "" } else { -#line 25425 "" - s_wsfe(&io___1848); +#line 25419 "" + s_wsfe(&io___1843); /* Writing concatenation */ -#line 25425 "" +#line 25419 "" i__3[0] = 1, a__3[0] = sq; -#line 25425 "" +#line 25419 "" i__3[1] = 3, a__3[1] = "def"; -#line 25425 "" +#line 25419 "" i__3[2] = 1, a__3[2] = sq; -#line 25425 "" +#line 25419 "" i__3[3] = 14, a__3[3] = "nbinstruments{"; -#line 25425 "" +#line 25419 "" s_cat(ch__18, a__3, i__3, &c__4, (ftnlen)19); -#line 25425 "" +#line 25419 "" do_fio(&c__1, ch__18, (ftnlen)19); -#line 25425 "" +#line 25419 "" do_fio(&c__1, (char *)&(*noinst), (ftnlen)sizeof(integer)); -#line 25425 "" +#line 25419 "" do_fio(&c__1, "}", (ftnlen)1); -#line 25425 "" +#line 25419 "" e_wsfe(); -#line 25427 "" +#line 25421 "" } -#line 25428 "" +#line 25422 "" iv = 0; -#line 25429 "" +#line 25423 "" i__4 = *noinst; -#line 25429 "" +#line 25423 "" for (iinst = 1; iinst <= i__4; ++iinst) { -#line 25430 "" +#line 25424 "" nstaves = comnvi_1.nsperi[iinst - 1]; -#line 25431 "" +#line 25425 "" if (iinst < 10) { -#line 25432 "" - s_wsfe(&io___1851); +#line 25426 "" + s_wsfe(&io___1846); /* Writing concatenation */ -#line 25432 "" +#line 25426 "" i__3[0] = 1, a__3[0] = sq; -#line 25432 "" +#line 25426 "" i__3[1] = 9, a__3[1] = "setstaffs"; -#line 25432 "" +#line 25426 "" i__6 = iinst + 48; -#line 25432 "" +#line 25426 "" chax_(ch__1, (ftnlen)1, &i__6); -#line 25432 "" +#line 25426 "" i__3[2] = 1, a__3[2] = ch__1; -#line 25432 "" +#line 25426 "" i__8 = nstaves + 48; -#line 25432 "" +#line 25426 "" chax_(ch__19, (ftnlen)1, &i__8); -#line 25432 "" +#line 25426 "" i__3[3] = 1, a__3[3] = ch__19; -#line 25432 "" +#line 25426 "" s_cat(ch__10, a__3, i__3, &c__4, (ftnlen)12); -#line 25432 "" +#line 25426 "" do_fio(&c__1, ch__10, (ftnlen)12); -#line 25432 "" +#line 25426 "" e_wsfe(); -#line 25434 "" +#line 25428 "" } else { -#line 25435 "" - s_wsfe(&io___1852); +#line 25429 "" + s_wsfe(&io___1847); /* Writing concatenation */ -#line 25435 "" +#line 25429 "" i__2[0] = 1, a__2[0] = sq; -#line 25435 "" +#line 25429 "" i__2[1] = 10, a__2[1] = "setstaffs{"; -#line 25435 "" +#line 25429 "" s_cat(ch__13, a__2, i__2, &c__2, (ftnlen)11); -#line 25435 "" +#line 25429 "" do_fio(&c__1, ch__13, (ftnlen)11); -#line 25435 "" +#line 25429 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 25435 "" +#line 25429 "" i__5[0] = 1, a__4[0] = "}"; -#line 25435 "" +#line 25429 "" i__6 = nstaves + 48; -#line 25435 "" +#line 25429 "" chax_(ch__1, (ftnlen)1, &i__6); -#line 25435 "" +#line 25429 "" i__5[1] = 1, a__4[1] = ch__1; -#line 25435 "" +#line 25429 "" s_cat(ch__20, a__4, i__5, &c__2, (ftnlen)2); -#line 25435 "" +#line 25429 "" do_fio(&c__1, ch__20, (ftnlen)2); -#line 25435 "" +#line 25429 "" e_wsfe(); -#line 25437 "" +#line 25431 "" } -#line 25438 "" +#line 25432 "" ++iv; -#line 25439 "" +#line 25433 "" *(unsigned char *)clefqiv = *(unsigned char *)&clefq[iv]; -#line 25440 "" +#line 25434 "" if (*(unsigned char *)clefqiv == '8') { -#line 25441 "" +#line 25435 "" *(unsigned char *)clefqiv = 't'; -#line 25442 "" +#line 25436 "" cominsttrans_1.itransamt[cominsttrans_1.instno[iv - 1] - 1] += 7; -#line 25443 "" +#line 25437 "" comc8flag_1.c8flag[iv - 1] = TRUE_; -#line 25444 "" +#line 25438 "" } -#line 25445 "" +#line 25439 "" if (nstaves == 1) { -#line 25446 "" +#line 25440 "" i__6 = numclef_(clefq + iv, (ftnlen)1) + 48; -#line 25446 "" +#line 25440 "" chax_(ch__1, (ftnlen)1, &i__6); -#line 25446 "" +#line 25440 "" s_copy(fmtq, ch__1, (ftnlen)24, (ftnlen)1); -#line 25447 "" +#line 25441 "" lfmtq = 1; -#line 25448 "" +#line 25442 "" } else { /* Writing concatenation */ -#line 25449 "" +#line 25443 "" i__2[0] = 1, a__2[0] = "{"; -#line 25449 "" +#line 25443 "" i__6 = numclef_(clefq + iv, (ftnlen)1) + 48; -#line 25449 "" +#line 25443 "" chax_(ch__1, (ftnlen)1, &i__6); -#line 25449 "" +#line 25443 "" i__2[1] = 1, a__2[1] = ch__1; -#line 25449 "" +#line 25443 "" s_cat(fmtq, a__2, i__2, &c__2, (ftnlen)24); -#line 25450 "" +#line 25444 "" lfmtq = 2; -#line 25451 "" +#line 25445 "" i__6 = nstaves; -#line 25451 "" +#line 25445 "" for (k = 2; k <= i__6; ++k) { -#line 25452 "" +#line 25446 "" ++iv; /* Writing concatenation */ -#line 25453 "" +#line 25447 "" i__2[0] = lfmtq, a__2[0] = fmtq; -#line 25453 "" +#line 25447 "" i__8 = numclef_(clefq + iv, (ftnlen)1) + 48; -#line 25453 "" +#line 25447 "" chax_(ch__1, (ftnlen)1, &i__8); -#line 25453 "" +#line 25447 "" i__2[1] = 1, a__2[1] = ch__1; -#line 25453 "" +#line 25447 "" s_cat(fmtq, a__2, i__2, &c__2, (ftnlen)24); -#line 25454 "" +#line 25448 "" ++lfmtq; -#line 25455 "" +#line 25449 "" /* L2: */ -#line 25455 "" +#line 25449 "" } /* Writing concatenation */ -#line 25456 "" +#line 25450 "" i__2[0] = lfmtq, a__2[0] = fmtq; -#line 25456 "" +#line 25450 "" i__2[1] = 1, a__2[1] = "}"; -#line 25456 "" +#line 25450 "" s_cat(fmtq, a__2, i__2, &c__2, (ftnlen)24); -#line 25457 "" +#line 25451 "" ++lfmtq; -#line 25458 "" +#line 25452 "" } -#line 25459 "" +#line 25453 "" if (iinst < 10) { -#line 25460 "" - s_wsfe(&io___1857); +#line 25454 "" + s_wsfe(&io___1852); /* Writing concatenation */ -#line 25460 "" +#line 25454 "" i__3[0] = 1, a__3[0] = sq; -#line 25460 "" +#line 25454 "" i__3[1] = 7, a__3[1] = "setclef"; -#line 25460 "" +#line 25454 "" i__6 = iinst + 48; -#line 25460 "" +#line 25454 "" chax_(ch__1, (ftnlen)1, &i__6); -#line 25460 "" +#line 25454 "" i__3[2] = 1, a__3[2] = ch__1; -#line 25460 "" +#line 25454 "" i__3[3] = lfmtq, a__3[3] = fmtq; -#line 25460 "" +#line 25454 "" s_cat(ch__21, a__3, i__3, &c__4, (ftnlen)33); -#line 25460 "" +#line 25454 "" do_fio(&c__1, ch__21, lfmtq + 9); -#line 25460 "" +#line 25454 "" e_wsfe(); -#line 25461 "" +#line 25455 "" } else { -#line 25462 "" - s_wsfe(&io___1858); +#line 25456 "" + s_wsfe(&io___1853); /* Writing concatenation */ -#line 25462 "" +#line 25456 "" i__2[0] = 1, a__2[0] = sq; -#line 25462 "" +#line 25456 "" i__2[1] = 8, a__2[1] = "setclef{"; -#line 25462 "" +#line 25456 "" s_cat(ch__11, a__2, i__2, &c__2, (ftnlen)9); -#line 25462 "" +#line 25456 "" do_fio(&c__1, ch__11, (ftnlen)9); -#line 25462 "" +#line 25456 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 25462 "" +#line 25456 "" i__5[0] = 1, a__4[0] = "}"; -#line 25462 "" +#line 25456 "" i__5[1] = lfmtq, a__4[1] = fmtq; -#line 25462 "" +#line 25456 "" s_cat(ch__22, a__4, i__5, &c__2, (ftnlen)25); -#line 25462 "" +#line 25456 "" do_fio(&c__1, ch__22, lfmtq + 1); -#line 25462 "" +#line 25456 "" e_wsfe(); -#line 25463 "" +#line 25457 "" } -#line 25464 "" +#line 25458 "" if (*(unsigned char *)&clefq[iv] == '8') { -#line 25465 "" +#line 25459 "" if (iinst < 10) { -#line 25466 "" - s_wsfe(&io___1859); +#line 25460 "" + s_wsfe(&io___1854); /* Writing concatenation */ -#line 25466 "" +#line 25460 "" i__9[0] = 1, a__6[0] = sq; -#line 25466 "" +#line 25460 "" i__9[1] = 19, a__6[1] = "settrebleclefsymbol"; -#line 25466 "" +#line 25460 "" i__6 = iinst + 48; -#line 25466 "" +#line 25460 "" chax_(ch__1, (ftnlen)1, &i__6); -#line 25466 "" +#line 25460 "" i__9[2] = 1, a__6[2] = ch__1; -#line 25466 "" +#line 25460 "" i__9[3] = 1, a__6[3] = sq; -#line 25466 "" +#line 25460 "" i__9[4] = 13, a__6[4] = "treblelowoct%"; -#line 25466 "" +#line 25460 "" s_cat(ch__23, a__6, i__9, &c__5, (ftnlen)35); -#line 25466 "" +#line 25460 "" do_fio(&c__1, ch__23, (ftnlen)35); -#line 25466 "" +#line 25460 "" e_wsfe(); -#line 25468 "" +#line 25462 "" } else { -#line 25469 "" - s_wsfe(&io___1860); +#line 25463 "" + s_wsfe(&io___1855); /* Writing concatenation */ -#line 25469 "" +#line 25463 "" i__2[0] = 1, a__2[0] = sq; -#line 25469 "" +#line 25463 "" i__2[1] = 20, a__2[1] = "settrebleclefsymbol{"; -#line 25469 "" +#line 25463 "" s_cat(ch__14, a__2, i__2, &c__2, (ftnlen)21); -#line 25469 "" +#line 25463 "" do_fio(&c__1, ch__14, (ftnlen)21); -#line 25469 "" +#line 25463 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 25469 "" +#line 25463 "" i__1[0] = 1, a__1[0] = "}"; -#line 25469 "" +#line 25463 "" i__1[1] = 1, a__1[1] = sq; -#line 25469 "" +#line 25463 "" i__1[2] = 13, a__1[2] = "treblelowoct%"; -#line 25469 "" +#line 25463 "" s_cat(ch__3, a__1, i__1, &c__3, (ftnlen)15); -#line 25469 "" +#line 25463 "" do_fio(&c__1, ch__3, (ftnlen)15); -#line 25469 "" +#line 25463 "" e_wsfe(); -#line 25471 "" +#line 25465 "" } -#line 25472 "" +#line 25466 "" comc8flag_1.c8flag[iv - 1] = TRUE_; -#line 25473 "" +#line 25467 "" } -#line 25474 "" +#line 25468 "" for (lname = 79; lname >= 2; --lname) { -#line 25475 "" +#line 25469 "" if (*(unsigned char *)&comtop_1.inameq[(iinst - 1) * 79 + (lname - 1)] != ' ') { -#line 25475 "" +#line 25469 "" goto L4; -#line 25475 "" +#line 25469 "" } -#line 25476 "" +#line 25470 "" /* L3: */ -#line 25476 "" +#line 25470 "" } -#line 25477 "" +#line 25471 "" L4: -#line 25478 "" +#line 25472 "" comtop_1.lnam[iinst - 1] = lname; -#line 25479 "" +#line 25473 "" if (iinst < 10) { -#line 25480 "" - s_wsfe(&io___1862); +#line 25474 "" + s_wsfe(&io___1857); /* Writing concatenation */ -#line 25480 "" +#line 25474 "" i__2[0] = 1, a__2[0] = sq; -#line 25480 "" +#line 25474 "" i__2[1] = 7, a__2[1] = "setname"; -#line 25480 "" +#line 25474 "" s_cat(ch__9, a__2, i__2, &c__2, (ftnlen)8); -#line 25480 "" +#line 25474 "" do_fio(&c__1, ch__9, (ftnlen)8); -#line 25480 "" +#line 25474 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 25480 "" +#line 25474 "" i__1[0] = 1, a__1[0] = "{"; -#line 25480 "" +#line 25474 "" i__1[1] = lname, a__1[1] = comtop_1.inameq + (iinst - 1) * 79; -#line 25480 "" +#line 25474 "" i__1[2] = 1, a__1[2] = "}"; -#line 25480 "" +#line 25474 "" s_cat(ch__24, a__1, i__1, &c__3, (ftnlen)81); -#line 25480 "" +#line 25474 "" do_fio(&c__1, ch__24, lname + 2); -#line 25480 "" +#line 25474 "" e_wsfe(); -#line 25482 "" +#line 25476 "" } else { -#line 25483 "" - s_wsfe(&io___1863); +#line 25477 "" + s_wsfe(&io___1858); /* Writing concatenation */ -#line 25483 "" +#line 25477 "" i__2[0] = 1, a__2[0] = sq; -#line 25483 "" +#line 25477 "" i__2[1] = 8, a__2[1] = "setname{"; -#line 25483 "" +#line 25477 "" s_cat(ch__11, a__2, i__2, &c__2, (ftnlen)9); -#line 25483 "" +#line 25477 "" do_fio(&c__1, ch__11, (ftnlen)9); -#line 25483 "" +#line 25477 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof(integer)); /* Writing concatenation */ -#line 25483 "" +#line 25477 "" i__1[0] = 2, a__1[0] = "}{"; -#line 25483 "" +#line 25477 "" i__1[1] = lname, a__1[1] = comtop_1.inameq + (iinst - 1) * 79; -#line 25483 "" +#line 25477 "" i__1[2] = 1, a__1[2] = "}"; -#line 25483 "" +#line 25477 "" s_cat(ch__25, a__1, i__1, &c__3, (ftnlen)82); -#line 25483 "" +#line 25477 "" do_fio(&c__1, ch__25, lname + 3); -#line 25483 "" +#line 25477 "" e_wsfe(); -#line 25485 "" +#line 25479 "" } -#line 25486 "" +#line 25480 "" /* L1: */ -#line 25486 "" +#line 25480 "" } -#line 25487 "" - s_wsfe(&io___1864); +#line 25481 "" + s_wsfe(&io___1859); /* Writing concatenation */ -#line 25487 "" +#line 25481 "" i__2[0] = 1, a__2[0] = sq; -#line 25487 "" +#line 25481 "" i__2[1] = 17, a__2[1] = "generalsignature{"; -#line 25487 "" +#line 25481 "" s_cat(ch__26, a__2, i__2, &c__2, (ftnlen)18); -#line 25487 "" +#line 25481 "" do_fio(&c__1, ch__26, (ftnlen)18); -#line 25487 "" +#line 25481 "" do_fio(&c__1, (char *)&comtop_1.isig, (ftnlen)sizeof(integer)); -#line 25487 "" +#line 25481 "" do_fio(&c__1, "}%", (ftnlen)2); -#line 25487 "" +#line 25481 "" e_wsfe(); -#line 25488 "" +#line 25482 "" if (cominsttrans_1.earlytranson) { -#line 25488 "" +#line 25482 "" writesetsign_(&cominsttrans_1.ninsttrans, cominsttrans_1.iinsttrans, cominsttrans_1.itranskey, &cominsttrans_1.earlytranson); -#line 25488 "" +#line 25482 "" } -#line 25490 "" +#line 25484 "" wgmeter_(mtrnmp, mtrdnp); -#line 25491 "" +#line 25485 "" r__1 = comtop_1.fracindent * comtop_1.widthpt; -#line 25491 "" +#line 25485 "" ipi = i_nint(&r__1); -#line 25492 "" +#line 25486 "" if (ipi < 10) { -#line 25493 "" - s_wsfe(&io___1866); +#line 25487 "" + s_wsfe(&io___1861); /* Writing concatenation */ -#line 25493 "" +#line 25487 "" i__2[0] = 1, a__2[0] = sq; -#line 25493 "" +#line 25487 "" i__2[1] = 10, a__2[1] = "parindent "; -#line 25493 "" +#line 25487 "" s_cat(ch__13, a__2, i__2, &c__2, (ftnlen)11); -#line 25493 "" +#line 25487 "" do_fio(&c__1, ch__13, (ftnlen)11); -#line 25493 "" +#line 25487 "" do_fio(&c__1, (char *)&ipi, (ftnlen)sizeof(integer)); -#line 25493 "" +#line 25487 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25493 "" +#line 25487 "" e_wsfe(); -#line 25494 "" +#line 25488 "" } else if (ipi < 100) { -#line 25495 "" - s_wsfe(&io___1867); +#line 25489 "" + s_wsfe(&io___1862); /* Writing concatenation */ -#line 25495 "" +#line 25489 "" i__2[0] = 1, a__2[0] = sq; -#line 25495 "" +#line 25489 "" i__2[1] = 10, a__2[1] = "parindent "; -#line 25495 "" +#line 25489 "" s_cat(ch__13, a__2, i__2, &c__2, (ftnlen)11); -#line 25495 "" +#line 25489 "" do_fio(&c__1, ch__13, (ftnlen)11); -#line 25495 "" +#line 25489 "" do_fio(&c__1, (char *)&ipi, (ftnlen)sizeof(integer)); -#line 25495 "" +#line 25489 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25495 "" +#line 25489 "" e_wsfe(); -#line 25496 "" +#line 25490 "" } else { -#line 25497 "" - s_wsfe(&io___1868); +#line 25491 "" + s_wsfe(&io___1863); /* Writing concatenation */ -#line 25497 "" +#line 25491 "" i__2[0] = 1, a__2[0] = sq; -#line 25497 "" +#line 25491 "" i__2[1] = 10, a__2[1] = "parindent "; -#line 25497 "" +#line 25491 "" s_cat(ch__13, a__2, i__2, &c__2, (ftnlen)11); -#line 25497 "" +#line 25491 "" do_fio(&c__1, ch__13, (ftnlen)11); -#line 25497 "" +#line 25491 "" do_fio(&c__1, (char *)&ipi, (ftnlen)sizeof(integer)); -#line 25497 "" +#line 25491 "" do_fio(&c__1, "pt", (ftnlen)2); -#line 25497 "" +#line 25491 "" e_wsfe(); -#line 25498 "" +#line 25492 "" } -#line 25499 "" - s_wsfe(&io___1869); +#line 25493 "" + s_wsfe(&io___1864); /* Writing concatenation */ -#line 25499 "" +#line 25493 "" i__10[0] = 1, a__7[0] = sq; -#line 25499 "" +#line 25493 "" i__10[1] = 11, a__7[1] = "elemskip1pt"; -#line 25499 "" +#line 25493 "" i__10[2] = 1, a__7[2] = sq; -#line 25499 "" +#line 25493 "" i__10[3] = 13, a__7[3] = "afterruleskip"; -#line 25499 "" +#line 25493 "" i__10[4] = 5, a__7[4] = fbarq; -#line 25499 "" +#line 25493 "" i__10[5] = 2, a__7[5] = "pt"; -#line 25499 "" +#line 25493 "" i__10[6] = 1, a__7[6] = sq; -#line 25499 "" +#line 25493 "" i__10[7] = 17, a__7[7] = "beforeruleskip0pt"; -#line 25499 "" +#line 25493 "" i__10[8] = 1, a__7[8] = sq; -#line 25499 "" +#line 25493 "" i__10[9] = 5, a__7[9] = "relax"; -#line 25499 "" +#line 25493 "" s_cat(ch__27, a__7, i__10, &c__10, (ftnlen)57); -#line 25499 "" +#line 25493 "" do_fio(&c__1, ch__27, (ftnlen)57); -#line 25499 "" +#line 25493 "" e_wsfe(); -#line 25501 "" +#line 25495 "" if (! (*vshrink)) { -#line 25502 "" +#line 25496 "" if (*xinstf1 < 9.95f) { -#line 25503 "" +#line 25497 "" s_copy(fmtq, "(a,f3.1,a)", (ftnlen)24, (ftnlen)10); -#line 25504 "" +#line 25498 "" } else { -#line 25505 "" +#line 25499 "" s_copy(fmtq, "(a,f4.1,a)", (ftnlen)24, (ftnlen)10); -#line 25506 "" +#line 25500 "" } -#line 25507 "" +#line 25501 "" facis = 1.f; -#line 25508 "" +#line 25502 "" if (comis4bignv_1.is4bignv) { -#line 25508 "" +#line 25502 "" facis = .95f; -#line 25508 "" +#line 25502 "" } -#line 25509 "" - s_wsfe(&io___1871); +#line 25503 "" + s_wsfe(&io___1866); /* Writing concatenation */ -#line 25509 "" +#line 25503 "" i__7[0] = 1, a__5[0] = sq; -#line 25509 "" +#line 25503 "" i__7[1] = 15, a__5[1] = "stafftopmarg0pt"; -#line 25509 "" +#line 25503 "" i__7[2] = 1, a__5[2] = sq; -#line 25509 "" +#line 25503 "" i__7[3] = 15, a__5[3] = "staffbotmarg0pt"; -#line 25509 "" +#line 25503 "" i__7[4] = 1, a__5[4] = sq; -#line 25509 "" +#line 25503 "" i__7[5] = 11, a__5[5] = "interstaff{"; -#line 25509 "" +#line 25503 "" s_cat(ch__28, a__5, i__7, &c__6, (ftnlen)44); -#line 25509 "" +#line 25503 "" do_fio(&c__1, ch__28, (ftnlen)44); -#line 25509 "" +#line 25503 "" r__1 = *xinstf1 * facis; -#line 25509 "" +#line 25503 "" do_fio(&c__1, (char *)&r__1, (ftnlen)sizeof(real)); /* Writing concatenation */ -#line 25509 "" +#line 25503 "" i__1[0] = 1, a__1[0] = "}"; -#line 25509 "" +#line 25503 "" i__1[1] = 1, a__1[1] = sq; -#line 25509 "" +#line 25503 "" i__1[2] = 5, a__1[2] = "relax"; -#line 25509 "" +#line 25503 "" s_cat(ch__15, a__1, i__1, &c__3, (ftnlen)7); -#line 25509 "" +#line 25503 "" do_fio(&c__1, ch__15, (ftnlen)7); -#line 25509 "" +#line 25503 "" e_wsfe(); -#line 25511 "" +#line 25505 "" } else { -#line 25512 "" - s_wsfe(&io___1872); +#line 25506 "" + s_wsfe(&io___1867); /* Writing concatenation */ -#line 25512 "" +#line 25506 "" i__10[0] = 1, a__7[0] = sq; -#line 25512 "" +#line 25506 "" i__10[1] = 15, a__7[1] = "stafftopmarg0pt"; -#line 25512 "" +#line 25506 "" i__10[2] = 1, a__7[2] = sq; -#line 25512 "" +#line 25506 "" i__10[3] = 13, a__7[3] = "staffbotmarg5"; -#line 25512 "" +#line 25506 "" i__10[4] = 1, a__7[4] = sq; -#line 25512 "" +#line 25506 "" i__10[5] = 10, a__7[5] = "Interligne"; -#line 25512 "" +#line 25506 "" i__10[6] = 1, a__7[6] = sq; -#line 25512 "" +#line 25506 "" i__10[7] = 14, a__7[7] = "interstaff{10}"; -#line 25512 "" +#line 25506 "" i__10[8] = 1, a__7[8] = sq; -#line 25512 "" +#line 25506 "" i__10[9] = 5, a__7[9] = "relax"; -#line 25512 "" +#line 25506 "" s_cat(ch__29, a__7, i__10, &c__10, (ftnlen)62); -#line 25512 "" +#line 25506 "" do_fio(&c__1, ch__29, (ftnlen)62); -#line 25512 "" +#line 25506 "" e_wsfe(); -#line 25515 "" +#line 25509 "" } -#line 25516 "" +#line 25510 "" if (*nv == 1) { -#line 25516 "" - s_wsfe(&io___1873); +#line 25510 "" + s_wsfe(&io___1868); /* Writing concatenation */ -#line 25516 "" +#line 25510 "" i__2[0] = 1, a__2[0] = sq; -#line 25516 "" +#line 25510 "" i__2[1] = 11, a__2[1] = "nostartrule"; -#line 25516 "" +#line 25510 "" s_cat(ch__10, a__2, i__2, &c__2, (ftnlen)12); -#line 25516 "" +#line 25510 "" do_fio(&c__1, ch__10, (ftnlen)12); -#line 25516 "" +#line 25510 "" e_wsfe(); -#line 25516 "" +#line 25510 "" } -#line 25517 "" - s_wsfe(&io___1874); +#line 25511 "" + s_wsfe(&io___1869); /* Writing concatenation */ -#line 25517 "" +#line 25511 "" i__3[0] = 1, a__3[0] = sq; -#line 25517 "" +#line 25511 "" i__3[1] = 8, a__3[1] = "readmod{"; -#line 25517 "" +#line 25511 "" i__3[2] = *lbase, a__3[2] = basenameq; -#line 25517 "" +#line 25511 "" i__3[3] = 1, a__3[3] = "}"; -#line 25517 "" +#line 25511 "" s_cat(ch__30, a__3, i__3, &c__4, (ftnlen)54); -#line 25517 "" +#line 25511 "" do_fio(&c__1, ch__30, *lbase + 10); -#line 25517 "" +#line 25511 "" e_wsfe(); -#line 25518 "" +#line 25512 "" if (comnvst_1.cstuplet) { -#line 25519 "" - s_wsfe(&io___1875); +#line 25513 "" + s_wsfe(&io___1870); /* Writing concatenation */ -#line 25519 "" +#line 25513 "" i__11[0] = 1, a__8[0] = sq; -#line 25519 "" +#line 25513 "" i__11[1] = 12, a__8[1] = "input tuplet"; -#line 25519 "" +#line 25513 "" i__11[2] = 1, a__8[2] = sq; -#line 25519 "" +#line 25513 "" i__11[3] = 3, a__8[3] = "def"; -#line 25519 "" +#line 25513 "" i__11[4] = 1, a__8[4] = sq; -#line 25519 "" +#line 25513 "" i__11[5] = 12, a__8[5] = "xnumt#1#2#3{"; -#line 25519 "" +#line 25513 "" i__11[6] = 1, a__8[6] = sq; -#line 25519 "" +#line 25513 "" i__11[7] = 16, a__8[7] = "zcharnote{#2}{~}"; -#line 25519 "" +#line 25513 "" i__11[8] = 1, a__8[8] = sq; -#line 25519 "" +#line 25513 "" i__11[9] = 3, a__8[9] = "def"; -#line 25519 "" +#line 25513 "" i__11[10] = 1, a__8[10] = sq; -#line 25519 "" +#line 25513 "" i__11[11] = 10, a__8[11] = "tuplettxt{"; -#line 25519 "" +#line 25513 "" i__11[12] = 1, a__8[12] = sq; -#line 25519 "" +#line 25513 "" i__11[13] = 9, a__8[13] = "smalltype"; -#line 25519 "" +#line 25513 "" i__11[14] = 1, a__8[14] = sq; -#line 25519 "" +#line 25513 "" i__11[15] = 6, a__8[15] = "it{#3}"; -#line 25519 "" +#line 25513 "" i__11[16] = 1, a__8[16] = sq; -#line 25519 "" +#line 25513 "" i__11[17] = 1, a__8[17] = "/"; -#line 25519 "" +#line 25513 "" i__11[18] = 1, a__8[18] = sq; -#line 25519 "" +#line 25513 "" i__11[19] = 4, a__8[19] = "/}}%"; -#line 25519 "" +#line 25513 "" s_cat(ch__31, a__8, i__11, &c__20, (ftnlen)86); -#line 25519 "" +#line 25513 "" do_fio(&c__1, ch__31, (ftnlen)86); -#line 25519 "" +#line 25513 "" e_wsfe(); -#line 25523 "" - s_wsfe(&io___1876); +#line 25517 "" + s_wsfe(&io___1871); /* Writing concatenation */ -#line 25523 "" +#line 25517 "" i__12[0] = 1, a__9[0] = sq; -#line 25523 "" +#line 25517 "" i__12[1] = 3, a__9[1] = "let"; -#line 25523 "" +#line 25517 "" i__12[2] = 1, a__9[2] = sq; -#line 25523 "" +#line 25517 "" i__12[3] = 5, a__9[3] = "ovbkt"; -#line 25523 "" +#line 25517 "" i__12[4] = 1, a__9[4] = sq; -#line 25523 "" +#line 25517 "" i__12[5] = 8, a__9[5] = "uptuplet"; -#line 25523 "" +#line 25517 "" i__12[6] = 1, a__9[6] = sq; -#line 25523 "" +#line 25517 "" i__12[7] = 3, a__9[7] = "let"; -#line 25523 "" +#line 25517 "" i__12[8] = 1, a__9[8] = sq; -#line 25523 "" +#line 25517 "" i__12[9] = 5, a__9[9] = "unbkt"; -#line 25523 "" +#line 25517 "" i__12[10] = 1, a__9[10] = sq; -#line 25523 "" +#line 25517 "" i__12[11] = 11, a__9[11] = "downtuplet%"; -#line 25523 "" +#line 25517 "" s_cat(ch__32, a__9, i__12, &c__12, (ftnlen)41); -#line 25523 "" +#line 25517 "" do_fio(&c__1, ch__32, (ftnlen)41); -#line 25523 "" +#line 25517 "" e_wsfe(); -#line 25525 "" +#line 25519 "" } -#line 25526 "" - s_wsfe(&io___1877); +#line 25520 "" + s_wsfe(&io___1872); /* Writing concatenation */ -#line 25526 "" +#line 25520 "" i__13[0] = 1, a__10[0] = sq; -#line 25526 "" +#line 25520 "" i__13[1] = 11, a__10[1] = "startmuflex"; -#line 25526 "" +#line 25520 "" i__13[2] = 1, a__10[2] = sq; -#line 25526 "" +#line 25520 "" i__13[3] = 10, a__10[3] = "startpiece"; -#line 25526 "" +#line 25520 "" i__13[4] = 1, a__10[4] = sq; -#line 25526 "" +#line 25520 "" i__13[5] = 8, a__10[5] = "addspace"; -#line 25526 "" +#line 25520 "" i__13[6] = 1, a__10[6] = sq; -#line 25526 "" +#line 25520 "" i__13[7] = 14, a__10[7] = "afterruleskip%"; -#line 25526 "" +#line 25520 "" s_cat(ch__33, a__10, i__13, &c__8, (ftnlen)47); -#line 25526 "" +#line 25520 "" do_fio(&c__1, ch__33, (ftnlen)47); -#line 25526 "" +#line 25520 "" e_wsfe(); -#line 25528 "" +#line 25522 "" return 0; } /* topfile_ */ @@ -63985,19 +63921,19 @@ L4: /* Slur directions */ -#line 25536 "" +#line 25530 "" ntest = *nolev - *ncm; -#line 25537 "" +#line 25531 "" if (ntest < 0 || ntest == 0 && combc_1.bcspec && *ncm == 23) { -#line 25539 "" +#line 25533 "" *(unsigned char *)ret_val = 'd'; -#line 25540 "" +#line 25534 "" } else { -#line 25541 "" +#line 25535 "" *(unsigned char *)ret_val = 'u'; -#line 25542 "" +#line 25536 "" } -#line 25543 "" +#line 25537 "" return ; } /* udfq_ */ @@ -64015,52 +63951,52 @@ L4: /* Stem direction for single notes */ -#line 25552 "" +#line 25546 "" if (bit_test(*isl,30)) { /* Absolute override */ -#line 25556 "" +#line 25550 "" if (bit_test(*isl,17)) { -#line 25557 "" +#line 25551 "" *(unsigned char *)udqqq = 'u'; -#line 25558 "" +#line 25552 "" } else { -#line 25559 "" +#line 25553 "" *(unsigned char *)udqqq = 'l'; -#line 25560 "" +#line 25554 "" } -#line 25561 "" +#line 25555 "" } else if (*nvmx == 1) { /* Single voice per staff, default */ -#line 25565 "" +#line 25559 "" r__1 = *nole * 1.f; -#line 25565 "" +#line 25559 "" ulfq_(ch__2, (ftnlen)1, &r__1, ncm); -#line 25565 "" +#line 25559 "" *(unsigned char *)udqqq = *(unsigned char *)&ch__2[0]; -#line 25566 "" +#line 25560 "" } else { /* Multi-voice per staff, 1st is lower, 2nd upper */ -#line 25570 "" +#line 25564 "" if (*ivx <= *nv) { -#line 25571 "" +#line 25565 "" *(unsigned char *)udqqq = 'l'; -#line 25572 "" +#line 25566 "" } else { -#line 25573 "" +#line 25567 "" *(unsigned char *)udqqq = 'u'; -#line 25574 "" +#line 25568 "" } -#line 25575 "" +#line 25569 "" } -#line 25576 "" +#line 25570 "" *(unsigned char *)ret_val = *(unsigned char *)udqqq; -#line 25577 "" +#line 25571 "" return ; } /* udqq_ */ @@ -64072,19 +64008,19 @@ L4: /* Stem directions */ -#line 25585 "" +#line 25579 "" test = *xnolev - *ncm; -#line 25586 "" +#line 25580 "" if (test < -.001f || test < .001f && combc_1.bcspec && *ncm == 23) { -#line 25588 "" +#line 25582 "" *(unsigned char *)ret_val = 'u'; -#line 25589 "" +#line 25583 "" } else { -#line 25590 "" +#line 25584 "" *(unsigned char *)ret_val = 'l'; -#line 25591 "" +#line 25585 "" } -#line 25592 "" +#line 25586 "" return ; } /* ulfq_ */ @@ -64106,40 +64042,40 @@ L4: extern /* Character */ VOID chax_(char *, ftnlen, integer *); /* Fortran I/O blocks */ - static cilist io___1881 = { 0, 6, 0, 0, 0 }; + static cilist io___1876 = { 0, 6, 0, 0, 0 }; -#line 25596 "" +#line 25590 "" if (*(unsigned char *)chq >= 61 && *(unsigned char *)chq < 122) { -#line 25597 "" +#line 25591 "" i__1 = *(unsigned char *)chq - 32; -#line 25597 "" +#line 25591 "" chax_(ch__2, (ftnlen)1, &i__1); -#line 25597 "" +#line 25591 "" *(unsigned char *)ret_val = *(unsigned char *)&ch__2[0]; -#line 25598 "" +#line 25592 "" } else { -#line 25599 "" +#line 25593 "" *(unsigned char *)ret_val = *(unsigned char *)chq; -#line 25600 "" - s_wsle(&io___1881); +#line 25594 "" + s_wsle(&io___1876); /* Writing concatenation */ -#line 25600 "" +#line 25594 "" i__2[0] = 52, a__1[0] = "Warning, upcaseq was called with improper a"\ "rgument: "; -#line 25600 "" +#line 25594 "" i__2[1] = 1, a__1[1] = chq; -#line 25600 "" +#line 25594 "" s_cat(ch__3, a__1, i__2, &c__2, (ftnlen)53); -#line 25600 "" +#line 25594 "" do_lio(&c__9, &c__1, ch__3, (ftnlen)53); -#line 25600 "" +#line 25594 "" e_wsle(); -#line 25602 "" +#line 25596 "" s_stop("", (ftnlen)0); -#line 25603 "" +#line 25597 "" } -#line 25604 "" +#line 25598 "" return ; } /* upcaseq_ */ @@ -64160,258 +64096,258 @@ L4: extern /* Character */ VOID chax_(char *, ftnlen, integer *); /* Fortran I/O blocks */ - static cilist io___1883 = { 0, 11, 0, "(a25,i1,a2,i1,a3)", 0 }; - static cilist io___1884 = { 0, 11, 0, "(a25,i1,a2,i2,a3)", 0 }; - static cilist io___1885 = { 0, 11, 0, "(a25,i2,a2,i1,a3)", 0 }; - static cilist io___1886 = { 0, 11, 0, "(a25,i2,a2,i2,a3)", 0 }; - static cilist io___1887 = { 0, 11, 0, "(a26,i1,a2,i1,a3)", 0 }; - static cilist io___1888 = { 0, 11, 0, "(a21,i1,a2)", 0 }; - static cilist io___1889 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1890 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1891 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1878 = { 0, 11, 0, "(a25,i1,a2,i1,a3)", 0 }; + static cilist io___1879 = { 0, 11, 0, "(a25,i1,a2,i2,a3)", 0 }; + static cilist io___1880 = { 0, 11, 0, "(a25,i2,a2,i1,a3)", 0 }; + static cilist io___1881 = { 0, 11, 0, "(a25,i2,a2,i2,a3)", 0 }; + static cilist io___1882 = { 0, 11, 0, "(a26,i1,a2,i1,a3)", 0 }; + static cilist io___1883 = { 0, 11, 0, "(a21,i1,a2)", 0 }; + static cilist io___1884 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1885 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1886 = { 0, 11, 0, "(a)", 0 }; /* Writes meter stuff to file 11, so only called if islast=.true. */ -#line 25611 "" +#line 25605 "" if (*mtrdnp == 0) { -#line 25611 "" +#line 25605 "" return 0; -#line 25611 "" +#line 25605 "" } -#line 25612 "" +#line 25606 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 25612 "" +#line 25606 "" *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; -#line 25613 "" +#line 25607 "" if (*mtrnmp > 0 && *mtrnmp <= 9) { -#line 25614 "" +#line 25608 "" if (*mtrdnp < 10) { -#line 25615 "" - s_wsfe(&io___1883); +#line 25609 "" + s_wsfe(&io___1878); /* Writing concatenation */ -#line 25615 "" +#line 25609 "" i__1[0] = 1, a__1[0] = sq; -#line 25615 "" +#line 25609 "" i__1[1] = 13, a__1[1] = "generalmeter{"; -#line 25615 "" +#line 25609 "" i__1[2] = 1, a__1[2] = sq; -#line 25615 "" +#line 25609 "" i__1[3] = 10, a__1[3] = "meterfrac{"; -#line 25615 "" +#line 25609 "" s_cat(ch__2, a__1, i__1, &c__4, (ftnlen)25); -#line 25615 "" +#line 25609 "" do_fio(&c__1, ch__2, (ftnlen)25); -#line 25615 "" +#line 25609 "" do_fio(&c__1, (char *)&(*mtrnmp), (ftnlen)sizeof(integer)); -#line 25615 "" +#line 25609 "" do_fio(&c__1, "}{", (ftnlen)2); -#line 25615 "" +#line 25609 "" do_fio(&c__1, (char *)&(*mtrdnp), (ftnlen)sizeof(integer)); -#line 25615 "" +#line 25609 "" do_fio(&c__1, "}}%", (ftnlen)3); -#line 25615 "" +#line 25609 "" e_wsfe(); -#line 25618 "" +#line 25612 "" } else { -#line 25619 "" - s_wsfe(&io___1884); +#line 25613 "" + s_wsfe(&io___1879); /* Writing concatenation */ -#line 25619 "" +#line 25613 "" i__1[0] = 1, a__1[0] = sq; -#line 25619 "" +#line 25613 "" i__1[1] = 13, a__1[1] = "generalmeter{"; -#line 25619 "" +#line 25613 "" i__1[2] = 1, a__1[2] = sq; -#line 25619 "" +#line 25613 "" i__1[3] = 10, a__1[3] = "meterfrac{"; -#line 25619 "" +#line 25613 "" s_cat(ch__2, a__1, i__1, &c__4, (ftnlen)25); -#line 25619 "" +#line 25613 "" do_fio(&c__1, ch__2, (ftnlen)25); -#line 25619 "" +#line 25613 "" do_fio(&c__1, (char *)&(*mtrnmp), (ftnlen)sizeof(integer)); -#line 25619 "" +#line 25613 "" do_fio(&c__1, "}{", (ftnlen)2); -#line 25619 "" +#line 25613 "" do_fio(&c__1, (char *)&(*mtrdnp), (ftnlen)sizeof(integer)); -#line 25619 "" +#line 25613 "" do_fio(&c__1, "}}%", (ftnlen)3); -#line 25619 "" +#line 25613 "" e_wsfe(); -#line 25622 "" +#line 25616 "" } -#line 25623 "" +#line 25617 "" } else if (*mtrnmp >= 10) { -#line 25624 "" +#line 25618 "" if (*mtrdnp < 10) { -#line 25625 "" - s_wsfe(&io___1885); +#line 25619 "" + s_wsfe(&io___1880); /* Writing concatenation */ -#line 25625 "" +#line 25619 "" i__1[0] = 1, a__1[0] = sq; -#line 25625 "" +#line 25619 "" i__1[1] = 13, a__1[1] = "generalmeter{"; -#line 25625 "" +#line 25619 "" i__1[2] = 1, a__1[2] = sq; -#line 25625 "" +#line 25619 "" i__1[3] = 10, a__1[3] = "meterfrac{"; -#line 25625 "" +#line 25619 "" s_cat(ch__2, a__1, i__1, &c__4, (ftnlen)25); -#line 25625 "" +#line 25619 "" do_fio(&c__1, ch__2, (ftnlen)25); -#line 25625 "" +#line 25619 "" do_fio(&c__1, (char *)&(*mtrnmp), (ftnlen)sizeof(integer)); -#line 25625 "" +#line 25619 "" do_fio(&c__1, "}{", (ftnlen)2); -#line 25625 "" +#line 25619 "" do_fio(&c__1, (char *)&(*mtrdnp), (ftnlen)sizeof(integer)); -#line 25625 "" +#line 25619 "" do_fio(&c__1, "}}%", (ftnlen)3); -#line 25625 "" +#line 25619 "" e_wsfe(); -#line 25628 "" +#line 25622 "" } else { -#line 25629 "" - s_wsfe(&io___1886); +#line 25623 "" + s_wsfe(&io___1881); /* Writing concatenation */ -#line 25629 "" +#line 25623 "" i__1[0] = 1, a__1[0] = sq; -#line 25629 "" +#line 25623 "" i__1[1] = 13, a__1[1] = "generalmeter{"; -#line 25629 "" +#line 25623 "" i__1[2] = 1, a__1[2] = sq; -#line 25629 "" +#line 25623 "" i__1[3] = 10, a__1[3] = "meterfrac{"; -#line 25629 "" +#line 25623 "" s_cat(ch__2, a__1, i__1, &c__4, (ftnlen)25); -#line 25629 "" +#line 25623 "" do_fio(&c__1, ch__2, (ftnlen)25); -#line 25629 "" +#line 25623 "" do_fio(&c__1, (char *)&(*mtrnmp), (ftnlen)sizeof(integer)); -#line 25629 "" +#line 25623 "" do_fio(&c__1, "}{", (ftnlen)2); -#line 25629 "" +#line 25623 "" do_fio(&c__1, (char *)&(*mtrdnp), (ftnlen)sizeof(integer)); -#line 25629 "" +#line 25623 "" do_fio(&c__1, "}}%", (ftnlen)3); -#line 25629 "" +#line 25623 "" e_wsfe(); -#line 25632 "" +#line 25626 "" } -#line 25633 "" +#line 25627 "" } else if (*mtrnmp < 0) { -#line 25634 "" - s_wsfe(&io___1887); +#line 25628 "" + s_wsfe(&io___1882); /* Writing concatenation */ -#line 25634 "" +#line 25628 "" i__1[0] = 1, a__1[0] = sq; -#line 25634 "" +#line 25628 "" i__1[1] = 13, a__1[1] = "generalmeter{"; -#line 25634 "" +#line 25628 "" i__1[2] = 1, a__1[2] = sq; -#line 25634 "" +#line 25628 "" i__1[3] = 11, a__1[3] = "meterfracS{"; -#line 25634 "" +#line 25628 "" s_cat(ch__3, a__1, i__1, &c__4, (ftnlen)26); -#line 25634 "" +#line 25628 "" do_fio(&c__1, ch__3, (ftnlen)26); -#line 25634 "" +#line 25628 "" i__2 = -(*mtrnmp); -#line 25634 "" +#line 25628 "" do_fio(&c__1, (char *)&i__2, (ftnlen)sizeof(integer)); -#line 25634 "" +#line 25628 "" do_fio(&c__1, "}{", (ftnlen)2); -#line 25634 "" +#line 25628 "" do_fio(&c__1, (char *)&(*mtrdnp), (ftnlen)sizeof(integer)); -#line 25634 "" +#line 25628 "" do_fio(&c__1, "}}%", (ftnlen)3); -#line 25634 "" +#line 25628 "" e_wsfe(); -#line 25637 "" +#line 25631 "" } else if (*mtrdnp <= 4) { -#line 25638 "" - s_wsfe(&io___1888); +#line 25632 "" + s_wsfe(&io___1883); /* Writing concatenation */ -#line 25638 "" +#line 25632 "" i__1[0] = 1, a__1[0] = sq; -#line 25638 "" +#line 25632 "" i__1[1] = 13, a__1[1] = "generalmeter{"; -#line 25638 "" +#line 25632 "" i__1[2] = 1, a__1[2] = sq; -#line 25638 "" +#line 25632 "" i__1[3] = 6, a__1[3] = "meterN"; -#line 25638 "" +#line 25632 "" s_cat(ch__4, a__1, i__1, &c__4, (ftnlen)21); -#line 25638 "" +#line 25632 "" do_fio(&c__1, ch__4, (ftnlen)21); -#line 25638 "" +#line 25632 "" do_fio(&c__1, (char *)&(*mtrdnp), (ftnlen)sizeof(integer)); -#line 25638 "" +#line 25632 "" do_fio(&c__1, "}%", (ftnlen)2); -#line 25638 "" +#line 25632 "" e_wsfe(); -#line 25640 "" +#line 25634 "" } else if (*mtrdnp == 5) { -#line 25641 "" - s_wsfe(&io___1889); +#line 25635 "" + s_wsfe(&io___1884); /* Writing concatenation */ -#line 25641 "" +#line 25635 "" i__1[0] = 1, a__1[0] = sq; -#line 25641 "" +#line 25635 "" i__1[1] = 12, a__1[1] = "generalmeter"; -#line 25641 "" +#line 25635 "" i__1[2] = 1, a__1[2] = sq; -#line 25641 "" +#line 25635 "" i__1[3] = 10, a__1[3] = "allabreve%"; -#line 25641 "" +#line 25635 "" s_cat(ch__5, a__1, i__1, &c__4, (ftnlen)24); -#line 25641 "" +#line 25635 "" do_fio(&c__1, ch__5, (ftnlen)24); -#line 25641 "" +#line 25635 "" e_wsfe(); -#line 25642 "" +#line 25636 "" } else if (*mtrdnp == 6) { -#line 25643 "" - s_wsfe(&io___1890); +#line 25637 "" + s_wsfe(&io___1885); /* Writing concatenation */ -#line 25643 "" +#line 25637 "" i__1[0] = 1, a__1[0] = sq; -#line 25643 "" +#line 25637 "" i__1[1] = 12, a__1[1] = "generalmeter"; -#line 25643 "" +#line 25637 "" i__1[2] = 1, a__1[2] = sq; -#line 25643 "" +#line 25637 "" i__1[3] = 7, a__1[3] = "meterC%"; -#line 25643 "" +#line 25637 "" s_cat(ch__4, a__1, i__1, &c__4, (ftnlen)21); -#line 25643 "" +#line 25637 "" do_fio(&c__1, ch__4, (ftnlen)21); -#line 25643 "" +#line 25637 "" e_wsfe(); -#line 25644 "" +#line 25638 "" } else if (*mtrdnp == 7) { -#line 25645 "" - s_wsfe(&io___1891); +#line 25639 "" + s_wsfe(&io___1886); /* Writing concatenation */ -#line 25645 "" +#line 25639 "" i__1[0] = 1, a__1[0] = sq; -#line 25645 "" +#line 25639 "" i__1[1] = 12, a__1[1] = "generalmeter"; -#line 25645 "" +#line 25639 "" i__1[2] = 1, a__1[2] = sq; -#line 25645 "" +#line 25639 "" i__1[3] = 10, a__1[3] = "meterIIIS%"; -#line 25645 "" +#line 25639 "" s_cat(ch__5, a__1, i__1, &c__4, (ftnlen)24); -#line 25645 "" +#line 25639 "" do_fio(&c__1, ch__5, (ftnlen)24); -#line 25645 "" +#line 25639 "" e_wsfe(); -#line 25646 "" +#line 25640 "" } -#line 25647 "" +#line 25641 "" return 0; } /* wgmeter_ */ @@ -64435,9 +64371,8 @@ L4: integer s_wsfe(cilist *); /* Subroutine */ int s_cat(char *, char **, integer *, integer *, ftnlen); integer do_fio(integer *, char *, ftnlen), e_wsfe(void), lbit_shift( - integer, integer), s_wsle(cilist *), do_lio(integer *, integer *, - char *, ftnlen), e_wsle(void), s_wsfi(icilist *), e_wsfi(void), - f_clos(cllist *); + integer, integer), s_wsfi(icilist *), e_wsfi(void), f_clos(cllist + *); /* Local variables */ static integer i__, kv, ib0, ib1, icm; @@ -64447,33 +64382,32 @@ L4: extern /* Subroutine */ int printl_(char *, ftnlen); /* Fortran I/O blocks */ - static cilist io___1893 = { 0, 51, 0, "(a,$)", 0 }; - static cilist io___1894 = { 0, 52, 0, "(a6,10Z4)", 0 }; - static cilist io___1899 = { 0, 51, 0, "(a,$)", 0 }; - static cilist io___1900 = { 0, 52, 0, "(a6,8z4)", 0 }; - static cilist io___1901 = { 0, 51, 0, "(a,$)", 0 }; - static cilist io___1902 = { 0, 52, 0, "(a)", 0 }; - static cilist io___1903 = { 0, 51, 0, "(a,$)", 0 }; - static cilist io___1904 = { 0, 52, 0, "(a)", 0 }; - static cilist io___1907 = { 0, 51, 0, "(a,$)", 0 }; - static cilist io___1908 = { 0, 52, 0, "(z4)", 0 }; - static cilist io___1909 = { 0, 51, 0, "(a,$)", 0 }; - static cilist io___1910 = { 0, 52, 0, "(4z4)", 0 }; - static cilist io___1915 = { 0, 51, 0, "(a,$)", 0 }; - static cilist io___1916 = { 0, 6, 0, 0, 0 }; - static cilist io___1917 = { 0, 52, 0, "(a4,z2,a7,11z4)", 0 }; - static cilist io___1918 = { 0, 51, 0, "(a,$)", 0 }; - static cilist io___1919 = { 0, 52, 0, "(4z4)", 0 }; + static cilist io___1888 = { 0, 51, 0, "(a,$)", 0 }; + static cilist io___1889 = { 0, 52, 0, "(a6,10Z4)", 0 }; + static cilist io___1894 = { 0, 51, 0, "(a,$)", 0 }; + static cilist io___1895 = { 0, 52, 0, "(a6,8z4)", 0 }; + static cilist io___1896 = { 0, 51, 0, "(a,$)", 0 }; + static cilist io___1897 = { 0, 52, 0, "(a)", 0 }; + static cilist io___1898 = { 0, 51, 0, "(a,$)", 0 }; + static cilist io___1899 = { 0, 52, 0, "(a)", 0 }; + static cilist io___1902 = { 0, 51, 0, "(a,$)", 0 }; + static cilist io___1903 = { 0, 52, 0, "(z4)", 0 }; + static cilist io___1904 = { 0, 51, 0, "(a,$)", 0 }; + static cilist io___1905 = { 0, 52, 0, "(4z4)", 0 }; + static cilist io___1910 = { 0, 51, 0, "(a,$)", 0 }; + static cilist io___1911 = { 0, 52, 0, "(a4,z2,a7,11z4)", 0 }; + static cilist io___1912 = { 0, 51, 0, "(a,$)", 0 }; + static cilist io___1913 = { 0, 52, 0, "(4z4)", 0 }; + static cilist io___1914 = { 0, 51, 0, "(a,$)", 0 }; + static cilist io___1915 = { 0, 52, 0, "(a)", 0 }; + static icilist io___1917 = { 0, tempoq, 0, "(i2)", 10, 1 }; + static icilist io___1919 = { 0, instq, 0, "(i3)", 10, 1 }; static cilist io___1920 = { 0, 51, 0, "(a,$)", 0 }; - static cilist io___1921 = { 0, 52, 0, "(a)", 0 }; - static icilist io___1923 = { 0, tempoq, 0, "(i2)", 10, 1 }; - static icilist io___1925 = { 0, instq, 0, "(i3)", 10, 1 }; - static cilist io___1926 = { 0, 51, 0, "(a,$)", 0 }; - static cilist io___1927 = { 0, 52, 0, "(z4)", 0 }; - static cilist io___1928 = { 0, 51, 0, "(a,$)", 0 }; - static cilist io___1929 = { 0, 52, 0, "(4z4)", 0 }; - static cilist io___1930 = { 0, 6, 0, "(1x,a12,(10i6))", 0 }; - static cilist io___1931 = { 0, 15, 0, "(1x,a12,(10i6))", 0 }; + static cilist io___1921 = { 0, 52, 0, "(z4)", 0 }; + static cilist io___1922 = { 0, 51, 0, "(a,$)", 0 }; + static cilist io___1923 = { 0, 52, 0, "(4z4)", 0 }; + static cilist io___1924 = { 0, 6, 0, "(1x,a12,(10i6))", 0 }; + static cilist io___1925 = { 0, 15, 0, "(1x,a12,(10i6))", 0 }; @@ -64485,714 +64419,705 @@ L4: /* Write Header */ -#line 25700 "" - s_wsfe(&io___1893); +#line 25694 "" + s_wsfe(&io___1888); /* Writing concatenation */ -#line 25700 "" +#line 25694 "" i__1[0] = 11, a__1[0] = "MThd\000\000\000\006\000\001\000"; -#line 25700 "" +#line 25694 "" *(unsigned char *)&ch__2[0] = commidi_1.numchan + 1; -#line 25700 "" +#line 25694 "" i__1[1] = 1, a__1[1] = ch__2; -#line 25700 "" +#line 25694 "" i__1[2] = 1, a__1[2] = "\000"; -#line 25700 "" +#line 25694 "" i__1[3] = 1, a__1[3] = "\360"; -#line 25700 "" +#line 25694 "" s_cat(ch__1, a__1, i__1, &c__4, (ftnlen)14); -#line 25700 "" +#line 25694 "" do_fio(&c__1, ch__1, (ftnlen)14); -#line 25700 "" +#line 25694 "" e_wsfe(); -#line 25702 "" +#line 25696 "" if (commidi_1.debugmidi) { -#line 25702 "" - s_wsfe(&io___1894); -#line 25702 "" +#line 25696 "" + s_wsfe(&io___1889); +#line 25696 "" do_fio(&c__1, "\"MThd\"", (ftnlen)6); -#line 25702 "" +#line 25696 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25702 "" +#line 25696 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25702 "" +#line 25696 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25702 "" +#line 25696 "" do_fio(&c__1, (char *)&c__6, (ftnlen)sizeof(integer)); -#line 25702 "" +#line 25696 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25702 "" +#line 25696 "" do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer)); -#line 25702 "" +#line 25696 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25702 "" +#line 25696 "" i__2 = commidi_1.numchan + 1; -#line 25702 "" +#line 25696 "" do_fio(&c__1, (char *)&i__2, (ftnlen)sizeof(integer)); -#line 25702 "" +#line 25696 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25702 "" +#line 25696 "" do_fio(&c__1, (char *)&c__240, (ftnlen)sizeof(integer)); -#line 25702 "" +#line 25696 "" e_wsfe(); -#line 25702 "" +#line 25696 "" } /* Write the "conductor" track, for keys, meter, and tempos */ /* Get the number of bytes in the conductor event stream */ -#line 25709 "" +#line 25703 "" ndata = commidi_1.imidi[commidi_1.numchan] + 1 - commmac_1.msecstrt[ commidi_1.numchan + commmac_1.nmidsec * 25 - 25]; -#line 25710 "" +#line 25704 "" i__2 = commmac_1.nmidsec - 1; -#line 25710 "" +#line 25704 "" for (isec = 1; isec <= i__2; ++isec) { -#line 25711 "" +#line 25705 "" ndata = ndata + 1 + commmac_1.msecend[commidi_1.numchan + isec * 25 - 25] - commmac_1.msecstrt[commidi_1.numchan + isec * 25 - 25]; -#line 25712 "" +#line 25706 "" /* L15: */ -#line 25712 "" +#line 25706 "" } /* ib1 = (4+ljob+26+ndata+4)/256 */ /* ib0 = 4+ljob+26+ndata+4-256*ib1 */ -#line 25715 "" +#line 25709 "" ib1 = (*ljob + 31 + ndata + 4) / 256; -#line 25716 "" +#line 25710 "" ib0 = *ljob + 31 + ndata + 4 - (ib1 << 8); -#line 25717 "" - s_wsfe(&io___1899); +#line 25711 "" + s_wsfe(&io___1894); /* Writing concatenation */ -#line 25717 "" +#line 25711 "" i__3[0] = 6, a__2[0] = "MTrk\000\000"; -#line 25717 "" +#line 25711 "" *(unsigned char *)&ch__2[0] = ib1; -#line 25717 "" +#line 25711 "" i__3[1] = 1, a__2[1] = ch__2; -#line 25717 "" +#line 25711 "" *(unsigned char *)&ch__4[0] = ib0; -#line 25717 "" +#line 25711 "" i__3[2] = 1, a__2[2] = ch__4; -#line 25717 "" +#line 25711 "" i__3[3] = 1, a__2[3] = "\000"; -#line 25717 "" +#line 25711 "" i__3[4] = 1, a__2[4] = "\377"; -#line 25717 "" +#line 25711 "" i__3[5] = 1, a__2[5] = "\001"; -#line 25717 "" +#line 25711 "" *(unsigned char *)&ch__5[0] = *ljob + 27; -#line 25717 "" +#line 25711 "" i__3[6] = 1, a__2[6] = ch__5; -#line 25717 "" +#line 25711 "" s_cat(ch__3, a__2, i__3, &c__7, (ftnlen)12); -#line 25717 "" +#line 25711 "" do_fio(&c__1, ch__3, (ftnlen)12); -#line 25717 "" +#line 25711 "" e_wsfe(); /* Text header */ /* * //char(0)//char(255)//char(1)//char(ljob+26) */ -#line 25723 "" +#line 25717 "" if (commidi_1.debugmidi) { -#line 25723 "" - s_wsfe(&io___1900); -#line 25723 "" +#line 25717 "" + s_wsfe(&io___1895); +#line 25717 "" do_fio(&c__1, "\"MTrk\"", (ftnlen)6); -#line 25723 "" +#line 25717 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25723 "" +#line 25717 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25723 "" +#line 25717 "" do_fio(&c__1, (char *)&ib1, (ftnlen)sizeof(integer)); -#line 25723 "" +#line 25717 "" do_fio(&c__1, (char *)&ib0, (ftnlen)sizeof(integer)); -#line 25723 "" +#line 25717 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25723 "" +#line 25717 "" do_fio(&c__1, (char *)&c__255, (ftnlen)sizeof(integer)); -#line 25723 "" +#line 25717 "" do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer)); -#line 25723 "" +#line 25717 "" i__2 = *ljob + 27; -#line 25723 "" +#line 25717 "" do_fio(&c__1, (char *)&i__2, (ftnlen)sizeof(integer)); -#line 25723 "" +#line 25717 "" e_wsfe(); -#line 25723 "" +#line 25717 "" } -#line 25726 "" - s_wsfe(&io___1901); -#line 25726 "" +#line 25720 "" + s_wsfe(&io___1896); +#line 25720 "" do_fio(&c__1, jobname, (*ljob)); -#line 25726 "" +#line 25720 "" e_wsfe(); -#line 25727 "" +#line 25721 "" if (commidi_1.debugmidi) { -#line 25727 "" - s_wsfe(&io___1902); +#line 25721 "" + s_wsfe(&io___1897); /* Writing concatenation */ -#line 25727 "" +#line 25721 "" i__4[0] = 1, a__3[0] = "\""; -#line 25727 "" +#line 25721 "" i__4[1] = *ljob, a__3[1] = jobname; -#line 25727 "" +#line 25721 "" i__4[2] = 1, a__3[2] = "\""; -#line 25727 "" +#line 25721 "" s_cat(ch__6, a__3, i__4, &c__3, (ftnlen)46); -#line 25727 "" +#line 25721 "" do_fio(&c__1, ch__6, *ljob + 2); -#line 25727 "" +#line 25721 "" e_wsfe(); -#line 25727 "" +#line 25721 "" } /* (separate writes are needed to defeat compiler BUG!!!) */ /* write(51,'(a,$)')'.mid, produced by PMX 2.30' */ -#line 25732 "" - s_wsfe(&io___1903); +#line 25726 "" + s_wsfe(&io___1898); /* Writing concatenation */ -#line 25732 "" +#line 25726 "" i__5[0] = 22, a__4[0] = ".mid, produced by PMX "; -#line 25732 "" +#line 25726 "" i__5[1] = 5, a__4[1] = comver_1.versionc; -#line 25732 "" +#line 25726 "" s_cat(ch__7, a__4, i__5, &c__2, (ftnlen)27); -#line 25732 "" +#line 25726 "" do_fio(&c__1, ch__7, (ftnlen)27); -#line 25732 "" +#line 25726 "" e_wsfe(); -#line 25733 "" +#line 25727 "" if (commidi_1.debugmidi) { -#line 25733 "" - s_wsfe(&io___1904); +#line 25727 "" + s_wsfe(&io___1899); /* Writing concatenation */ -#line 25733 "" +#line 25727 "" i__4[0] = 23, a__3[0] = "\".mid, produced by PMX "; -#line 25733 "" +#line 25727 "" i__4[1] = 5, a__3[1] = comver_1.versionc; -#line 25733 "" +#line 25727 "" i__4[2] = 1, a__3[2] = "\""; -#line 25733 "" +#line 25727 "" s_cat(ch__8, a__3, i__4, &c__3, (ftnlen)29); -#line 25733 "" +#line 25727 "" do_fio(&c__1, ch__8, (ftnlen)29); -#line 25733 "" +#line 25727 "" e_wsfe(); -#line 25733 "" +#line 25727 "" } /* Conductor event data: Loop over sections. */ -#line 25738 "" +#line 25732 "" i__2 = commmac_1.nmidsec; -#line 25738 "" +#line 25732 "" for (isec = 1; isec <= i__2; ++isec) { -#line 25739 "" +#line 25733 "" if (isec < commmac_1.nmidsec) { -#line 25740 "" +#line 25734 "" mend = commmac_1.msecend[commidi_1.numchan + isec * 25 - 25]; -#line 25741 "" +#line 25735 "" } else { -#line 25742 "" +#line 25736 "" mend = commidi_1.imidi[commidi_1.numchan]; -#line 25743 "" +#line 25737 "" } -#line 25744 "" +#line 25738 "" i__6 = mend; -#line 25744 "" +#line 25738 "" for (i__ = commmac_1.msecstrt[commidi_1.numchan + isec * 25 - 25]; i__ <= i__6; ++i__) { -#line 25745 "" - s_wsfe(&io___1907); -#line 25745 "" +#line 25739 "" + s_wsfe(&io___1902); +#line 25739 "" *(unsigned char *)&ch__2[0] = (char) commidi_1.mmidi[ commidi_1.numchan + i__ * 25 - 25]; -#line 25745 "" +#line 25739 "" do_fio(&c__1, ch__2, (ftnlen)1); -#line 25745 "" +#line 25739 "" e_wsfe(); -#line 25746 "" +#line 25740 "" if (commidi_1.debugmidi) { -#line 25746 "" - s_wsfe(&io___1908); -#line 25746 "" +#line 25740 "" + s_wsfe(&io___1903); +#line 25740 "" do_fio(&c__1, (char *)&commidi_1.mmidi[commidi_1.numchan + i__ * 25 - 25], (ftnlen)sizeof(shortint)); -#line 25746 "" +#line 25740 "" e_wsfe(); -#line 25746 "" +#line 25740 "" } -#line 25747 "" +#line 25741 "" /* L17: */ -#line 25747 "" +#line 25741 "" } -#line 25748 "" +#line 25742 "" /* L16: */ -#line 25748 "" +#line 25742 "" } /* And close out the time sig / tempo track. */ -#line 25752 "" - s_wsfe(&io___1909); -#line 25752 "" +#line 25746 "" + s_wsfe(&io___1904); +#line 25746 "" do_fio(&c__1, "\000\377/\000", (ftnlen)4); -#line 25752 "" +#line 25746 "" e_wsfe(); -#line 25753 "" +#line 25747 "" if (commidi_1.debugmidi) { -#line 25753 "" - s_wsfe(&io___1910); -#line 25753 "" +#line 25747 "" + s_wsfe(&io___1905); +#line 25747 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25753 "" +#line 25747 "" do_fio(&c__1, (char *)&c__255, (ftnlen)sizeof(integer)); -#line 25753 "" +#line 25747 "" do_fio(&c__1, (char *)&c__47, (ftnlen)sizeof(integer)); -#line 25753 "" +#line 25747 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25753 "" +#line 25747 "" e_wsfe(); -#line 25753 "" +#line 25747 "" } /* Loop over track for each voice: The following sets up iv. */ -#line 25757 "" +#line 25751 "" all_1.iv = all_1.nv; -#line 25758 "" +#line 25752 "" if (commidi_1.twoline[all_1.nv - 1]) { -#line 25759 "" +#line 25753 "" kv = 2; -#line 25760 "" +#line 25754 "" } else { -#line 25761 "" +#line 25755 "" kv = 1; -#line 25762 "" +#line 25756 "" } -#line 25764 "" +#line 25758 "" i__2 = commidi_1.numchan - 1; -#line 25764 "" +#line 25758 "" for (icm = 0; icm <= i__2; ++icm) { /* Get the number of bytes in the data stream */ -#line 25768 "" +#line 25762 "" ndata = commidi_1.imidi[icm] + 1 - commmac_1.msecstrt[icm + commmac_1.nmidsec * 25 - 25]; -#line 25769 "" +#line 25763 "" i__6 = commmac_1.nmidsec - 1; -#line 25769 "" +#line 25763 "" for (isec = 1; isec <= i__6; ++isec) { -#line 25770 "" +#line 25764 "" ndata = ndata + 1 + commmac_1.msecend[icm + isec * 25 - 25] - commmac_1.msecstrt[icm + isec * 25 - 25]; -#line 25771 "" +#line 25765 "" /* L11: */ -#line 25771 "" +#line 25765 "" } /* Add 3 for instrum, 4 for bal, plus 4 (for closing) to byte count, */ -#line 25775 "" +#line 25769 "" ndata += 11; /* Add 4+lnam(iinsiv(iv)) if lnam>0 , */ -#line 25779 "" +#line 25773 "" if (comtop_1.lnam[commvel_1.iinsiv[all_1.iv - 1] - 1] > 0) { -#line 25779 "" +#line 25773 "" ndata = ndata + 4 + comtop_1.lnam[commvel_1.iinsiv[all_1.iv - 1] - 1]; -#line 25779 "" +#line 25773 "" } /* Separate total byte counts into 4 bytes */ -#line 25783 "" +#line 25777 "" for (ibyte = 1; ibyte <= 4; ++ibyte) { -#line 25784 "" +#line 25778 "" if (ndata > 0) { -#line 25785 "" +#line 25779 "" *(unsigned char *)&byteq[ibyte - 1] = (char) (ndata % 256); -#line 25786 "" +#line 25780 "" ndata = lbit_shift(ndata, (ftnlen)-8); -#line 25787 "" +#line 25781 "" } else { -#line 25788 "" +#line 25782 "" *(unsigned char *)&byteq[ibyte - 1] = '\0'; -#line 25789 "" +#line 25783 "" } -#line 25790 "" +#line 25784 "" /* L2: */ -#line 25790 "" +#line 25784 "" } /* Now write front stuff for this track */ -#line 25794 "" - s_wsfe(&io___1915); +#line 25788 "" + s_wsfe(&io___1910); /* Writing concatenation */ -#line 25794 "" +#line 25788 "" i__7[0] = 4, a__5[0] = "MTrk"; -#line 25794 "" +#line 25788 "" i__7[1] = 1, a__5[1] = byteq + 3; -#line 25794 "" +#line 25788 "" i__7[2] = 1, a__5[2] = byteq + 2; -#line 25794 "" +#line 25788 "" i__7[3] = 1, a__5[3] = byteq + 1; -#line 25794 "" +#line 25788 "" i__7[4] = 1, a__5[4] = byteq; -#line 25794 "" +#line 25788 "" i__7[5] = 1, a__5[5] = "\000"; -#line 25794 "" +#line 25788 "" *(unsigned char *)&ch__2[0] = icmm[icm] + 192; -#line 25794 "" +#line 25788 "" i__7[6] = 1, a__5[6] = ch__2; -#line 25794 "" +#line 25788 "" *(unsigned char *)&ch__4[0] = commidi_1.midinst[commvel_1.iinsiv[ all_1.iv - 1] - 1]; -#line 25794 "" +#line 25788 "" i__7[7] = 1, a__5[7] = ch__4; -#line 25794 "" +#line 25788 "" i__7[8] = 1, a__5[8] = "\000"; -#line 25794 "" +#line 25788 "" *(unsigned char *)&ch__5[0] = icmm[icm] + 176; -#line 25794 "" +#line 25788 "" i__7[9] = 1, a__5[9] = ch__5; -#line 25794 "" +#line 25788 "" i__7[10] = 1, a__5[10] = "\n"; -#line 25794 "" +#line 25788 "" *(unsigned char *)&ch__10[0] = commvel_1.midbc[icm]; -#line 25794 "" +#line 25788 "" i__7[11] = 1, a__5[11] = ch__10; -#line 25794 "" +#line 25788 "" s_cat(ch__9, a__5, i__7, &c__12, (ftnlen)15); -#line 25794 "" +#line 25788 "" do_fio(&c__1, ch__9, (ftnlen)15); -#line 25794 "" +#line 25788 "" e_wsfe(); -#line 25797 "" - s_wsle(&io___1916); -#line 25797 "" - do_lio(&c__9, &c__1, "#25294 In writemidi, midbc:", (ftnlen)27); -#line 25797 "" - do_lio(&c__3, &c__1, (char *)&commvel_1.midbc[icm], (ftnlen)sizeof( - integer)); -#line 25797 "" - e_wsle(); -#line 25798 "" +#line 25791 "" if (commidi_1.debugmidi) { -#line 25798 "" - s_wsfe(&io___1917); -#line 25798 "" +#line 25791 "" + s_wsfe(&io___1911); +#line 25791 "" do_fio(&c__1, "icm=", (ftnlen)4); -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&icm, (ftnlen)sizeof(integer)); -#line 25798 "" +#line 25791 "" do_fio(&c__1, " \"MTrk\"", (ftnlen)7); -#line 25798 "" +#line 25791 "" i__6 = *(unsigned char *)&byteq[3]; -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&i__6, (ftnlen)sizeof(integer)); -#line 25798 "" +#line 25791 "" i__8 = *(unsigned char *)&byteq[2]; -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&i__8, (ftnlen)sizeof(integer)); -#line 25798 "" +#line 25791 "" i__9 = *(unsigned char *)&byteq[1]; -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&i__9, (ftnlen)sizeof(integer)); -#line 25798 "" +#line 25791 "" i__10 = *(unsigned char *)&byteq[0]; -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&i__10, (ftnlen)sizeof(integer)); -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25798 "" +#line 25791 "" i__11 = icmm[icm] + 192; -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&i__11, (ftnlen)sizeof(integer)); -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&commidi_1.midinst[commvel_1.iinsiv[ all_1.iv - 1] - 1], (ftnlen)sizeof(integer)); -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25798 "" +#line 25791 "" i__12 = icmm[icm] + 176; -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&i__12, (ftnlen)sizeof(integer)); -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&c__10, (ftnlen)sizeof(integer)); -#line 25798 "" +#line 25791 "" do_fio(&c__1, (char *)&commvel_1.midbc[icm], (ftnlen)sizeof( integer)); -#line 25798 "" +#line 25791 "" e_wsfe(); -#line 25798 "" +#line 25791 "" } -#line 25802 "" +#line 25795 "" if (comtop_1.lnam[commvel_1.iinsiv[all_1.iv - 1] - 1] > 0) { /* Add instrument name as sequence name */ -#line 25806 "" - s_wsfe(&io___1918); +#line 25799 "" + s_wsfe(&io___1912); /* Writing concatenation */ -#line 25806 "" +#line 25799 "" i__5[0] = 3, a__4[0] = "\000\377\003"; -#line 25806 "" +#line 25799 "" *(unsigned char *)&ch__2[0] = comtop_1.lnam[commvel_1.iinsiv[ all_1.iv - 1] - 1]; -#line 25806 "" +#line 25799 "" i__5[1] = 1, a__4[1] = ch__2; -#line 25806 "" +#line 25799 "" s_cat(ch__11, a__4, i__5, &c__2, (ftnlen)4); -#line 25806 "" +#line 25799 "" do_fio(&c__1, ch__11, (ftnlen)4); -#line 25806 "" +#line 25799 "" e_wsfe(); -#line 25808 "" +#line 25801 "" if (commidi_1.debugmidi) { -#line 25808 "" - s_wsfe(&io___1919); -#line 25808 "" +#line 25801 "" + s_wsfe(&io___1913); +#line 25801 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25808 "" +#line 25801 "" do_fio(&c__1, (char *)&c__255, (ftnlen)sizeof(integer)); -#line 25808 "" +#line 25801 "" do_fio(&c__1, (char *)&c__3, (ftnlen)sizeof(integer)); -#line 25808 "" +#line 25801 "" do_fio(&c__1, (char *)&comtop_1.lnam[commvel_1.iinsiv[ all_1.iv - 1] - 1], (ftnlen)sizeof(integer)); -#line 25808 "" +#line 25801 "" e_wsfe(); -#line 25808 "" +#line 25801 "" } -#line 25809 "" - s_wsfe(&io___1920); -#line 25809 "" +#line 25802 "" + s_wsfe(&io___1914); +#line 25802 "" do_fio(&c__1, comtop_1.inameq + (commvel_1.iinsiv[all_1.iv - 1] - 1) * 79, comtop_1.lnam[commvel_1.iinsiv[all_1.iv - 1] - 1] ); -#line 25809 "" +#line 25802 "" e_wsfe(); -#line 25811 "" +#line 25804 "" if (commidi_1.debugmidi) { -#line 25811 "" - s_wsfe(&io___1921); +#line 25804 "" + s_wsfe(&io___1915); /* Writing concatenation */ -#line 25811 "" +#line 25804 "" i__4[0] = 1, a__3[0] = "\""; -#line 25811 "" +#line 25804 "" i__4[1] = comtop_1.lnam[commvel_1.iinsiv[all_1.iv - 1] - 1], a__3[1] = comtop_1.inameq + (commvel_1.iinsiv[ all_1.iv - 1] - 1) * 79; -#line 25811 "" +#line 25804 "" i__4[2] = 1, a__3[2] = "\""; -#line 25811 "" +#line 25804 "" s_cat(ch__12, a__3, i__4, &c__3, (ftnlen)81); -#line 25811 "" +#line 25804 "" do_fio(&c__1, ch__12, comtop_1.lnam[commvel_1.iinsiv[all_1.iv - 1] - 1] + 2); -#line 25811 "" +#line 25804 "" e_wsfe(); -#line 25811 "" +#line 25804 "" } -#line 25813 "" +#line 25806 "" } -#line 25814 "" - s_wsfi(&io___1923); -#line 25814 "" +#line 25807 "" + s_wsfi(&io___1917); +#line 25807 "" do_fio(&c__1, (char *)&icm, (ftnlen)sizeof(integer)); -#line 25814 "" +#line 25807 "" e_wsfi(); -#line 25815 "" - s_wsfi(&io___1925); -#line 25815 "" +#line 25808 "" + s_wsfi(&io___1919); +#line 25808 "" do_fio(&c__1, (char *)&commidi_1.midinst[commvel_1.iinsiv[all_1.iv - 1] - 1], (ftnlen)sizeof(integer)); -#line 25815 "" +#line 25808 "" e_wsfi(); /* Writing concatenation */ -#line 25816 "" +#line 25809 "" i__1[0] = 16, a__1[0] = "MIDI instrument "; -#line 25816 "" +#line 25809 "" i__1[1] = 2, a__1[1] = tempoq; -#line 25816 "" +#line 25809 "" i__1[2] = 4, a__1[2] = " is "; -#line 25816 "" +#line 25809 "" i__1[3] = 3, a__1[3] = instq; -#line 25816 "" +#line 25809 "" s_cat(ch__13, a__1, i__1, &c__4, (ftnlen)25); -#line 25816 "" +#line 25809 "" printl_(ch__13, (ftnlen)25); /* Notes: Loop over sections. */ -#line 25820 "" +#line 25813 "" i__6 = commmac_1.nmidsec; -#line 25820 "" +#line 25813 "" for (isec = 1; isec <= i__6; ++isec) { -#line 25821 "" +#line 25814 "" if (isec < commmac_1.nmidsec) { -#line 25822 "" +#line 25815 "" mend = commmac_1.msecend[icm + isec * 25 - 25]; -#line 25823 "" +#line 25816 "" } else { -#line 25824 "" +#line 25817 "" mend = commidi_1.imidi[icm]; -#line 25825 "" +#line 25818 "" } -#line 25826 "" +#line 25819 "" i__8 = mend; -#line 25826 "" +#line 25819 "" for (i__ = commmac_1.msecstrt[icm + isec * 25 - 25]; i__ <= i__8; ++i__) { -#line 25827 "" - s_wsfe(&io___1926); -#line 25827 "" +#line 25820 "" + s_wsfe(&io___1920); +#line 25820 "" *(unsigned char *)&ch__2[0] = (char) commidi_1.mmidi[icm + i__ * 25 - 25]; -#line 25827 "" +#line 25820 "" do_fio(&c__1, ch__2, (ftnlen)1); -#line 25827 "" +#line 25820 "" e_wsfe(); -#line 25828 "" +#line 25821 "" if (commidi_1.debugmidi) { -#line 25828 "" - s_wsfe(&io___1927); -#line 25828 "" +#line 25821 "" + s_wsfe(&io___1921); +#line 25821 "" do_fio(&c__1, (char *)&commidi_1.mmidi[icm + i__ * 25 - 25], (ftnlen)sizeof(shortint)); -#line 25828 "" +#line 25821 "" e_wsfe(); -#line 25828 "" +#line 25821 "" } -#line 25829 "" +#line 25822 "" /* L10: */ -#line 25829 "" +#line 25822 "" } -#line 25830 "" +#line 25823 "" /* L9: */ -#line 25830 "" +#line 25823 "" } /* Closing 4 bytes */ -#line 25834 "" - s_wsfe(&io___1928); +#line 25827 "" + s_wsfe(&io___1922); /* Writing concatenation */ -#line 25834 "" +#line 25827 "" chax_(ch__2, (ftnlen)1, &c__0); -#line 25834 "" +#line 25827 "" i__1[0] = 1, a__1[0] = ch__2; -#line 25834 "" +#line 25827 "" i__1[1] = 1, a__1[1] = "\377"; -#line 25834 "" +#line 25827 "" i__1[2] = 1, a__1[2] = "/"; -#line 25834 "" +#line 25827 "" i__1[3] = 1, a__1[3] = "\000"; -#line 25834 "" +#line 25827 "" s_cat(ch__11, a__1, i__1, &c__4, (ftnlen)4); -#line 25834 "" +#line 25827 "" do_fio(&c__1, ch__11, (ftnlen)4); -#line 25834 "" +#line 25827 "" e_wsfe(); -#line 25835 "" +#line 25828 "" if (commidi_1.debugmidi) { -#line 25835 "" - s_wsfe(&io___1929); -#line 25835 "" +#line 25828 "" + s_wsfe(&io___1923); +#line 25828 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25835 "" +#line 25828 "" do_fio(&c__1, (char *)&c__255, (ftnlen)sizeof(integer)); -#line 25835 "" +#line 25828 "" do_fio(&c__1, (char *)&c__47, (ftnlen)sizeof(integer)); -#line 25835 "" +#line 25828 "" do_fio(&c__1, (char *)&c__0, (ftnlen)sizeof(integer)); -#line 25835 "" +#line 25828 "" e_wsfe(); -#line 25835 "" +#line 25828 "" } -#line 25836 "" +#line 25829 "" if (kv == 2) { -#line 25837 "" +#line 25830 "" kv = 1; -#line 25838 "" +#line 25831 "" } else if (all_1.iv == 1) { -#line 25839 "" +#line 25832 "" goto L5; -#line 25840 "" +#line 25833 "" } else { -#line 25841 "" +#line 25834 "" --all_1.iv; -#line 25842 "" +#line 25835 "" if (commidi_1.twoline[all_1.iv - 1]) { -#line 25842 "" +#line 25835 "" kv = 2; -#line 25842 "" +#line 25835 "" } -#line 25843 "" +#line 25836 "" } -#line 25844 "" +#line 25837 "" L5: -#line 25844 "" +#line 25837 "" ; -#line 25844 "" +#line 25837 "" } -#line 25845 "" - s_wsfe(&io___1930); -#line 25845 "" +#line 25838 "" + s_wsfe(&io___1924); +#line 25838 "" do_fio(&c__1, "Bytes used:", (ftnlen)11); -#line 25845 "" +#line 25838 "" i__2 = commidi_1.numchan; -#line 25845 "" +#line 25838 "" for (icm = 0; icm <= i__2; ++icm) { -#line 25845 "" +#line 25838 "" do_fio(&c__1, (char *)&commidi_1.imidi[icm], (ftnlen)sizeof(integer)); -#line 25845 "" +#line 25838 "" } -#line 25845 "" +#line 25838 "" e_wsfe(); -#line 25846 "" - s_wsfe(&io___1931); -#line 25846 "" +#line 25839 "" + s_wsfe(&io___1925); +#line 25839 "" do_fio(&c__1, "Bytes used:", (ftnlen)11); -#line 25846 "" +#line 25839 "" i__2 = commidi_1.numchan; -#line 25846 "" +#line 25839 "" for (icm = 0; icm <= i__2; ++icm) { -#line 25846 "" +#line 25839 "" do_fio(&c__1, (char *)&commidi_1.imidi[icm], (ftnlen)sizeof(integer)); -#line 25846 "" +#line 25839 "" } -#line 25846 "" +#line 25839 "" e_wsfe(); -#line 25848 "" +#line 25841 "" cl__1.cerr = 0; -#line 25848 "" +#line 25841 "" cl__1.cunit = 51; -#line 25848 "" +#line 25841 "" cl__1.csta = 0; -#line 25848 "" +#line 25841 "" f_clos(&cl__1); -#line 25849 "" +#line 25842 "" if (commidi_1.debugmidi) { -#line 25849 "" +#line 25842 "" cl__1.cerr = 0; -#line 25849 "" +#line 25842 "" cl__1.cunit = 52; -#line 25849 "" +#line 25842 "" cl__1.csta = 0; -#line 25849 "" +#line 25842 "" f_clos(&cl__1); -#line 25849 "" +#line 25842 "" } -#line 25850 "" +#line 25843 "" return 0; } /* writemidi_ */ @@ -65217,143 +65142,143 @@ L5: static char notexq[79]; /* Fortran I/O blocks */ - static cilist io___1935 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1929 = { 0, 11, 0, "(a)", 0 }; /* Assumes notexq is blank */ -#line 25861 "" +#line 25854 "" /* Parameter adjustments */ -#line 25861 "" +#line 25854 "" --itranskey; -#line 25861 "" +#line 25854 "" --iinsttrans; -#line 25861 "" +#line 25854 "" -#line 25861 "" +#line 25854 "" /* Function Body */ -#line 25861 "" +#line 25854 "" i__1 = *ninsttrans; -#line 25861 "" +#line 25854 "" for (i__ = 1; i__ <= i__1; ++i__) { /* Writing concatenation */ -#line 25862 "" +#line 25855 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 25862 "" +#line 25855 "" i__2[0] = 1, a__1[0] = ch__1; -#line 25862 "" +#line 25855 "" i__2[1] = 7, a__1[1] = "setsign"; -#line 25862 "" +#line 25855 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); -#line 25863 "" +#line 25856 "" lnote = 8; -#line 25864 "" +#line 25857 "" if (iinsttrans[i__] < 10) { /* Writing concatenation */ -#line 25865 "" +#line 25858 "" i__2[0] = lnote, a__1[0] = notexq; -#line 25865 "" +#line 25858 "" i__3 = iinsttrans[i__] + 48; -#line 25865 "" +#line 25858 "" chax_(ch__1, (ftnlen)1, &i__3); -#line 25865 "" +#line 25858 "" i__2[1] = 1, a__1[1] = ch__1; -#line 25865 "" +#line 25858 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); -#line 25866 "" +#line 25859 "" ++lnote; -#line 25867 "" +#line 25860 "" } else { -#line 25868 "" +#line 25861 "" i__3 = lnote; -#line 25868 "" +#line 25861 "" ici__1.icierr = 0; -#line 25868 "" +#line 25861 "" ici__1.icirnum = 1; -#line 25868 "" +#line 25861 "" ici__1.icirlen = lnote + 4 - i__3; -#line 25868 "" +#line 25861 "" ici__1.iciunit = notexq + i__3; -#line 25868 "" +#line 25861 "" ici__1.icifmt = "(a1,i2,a1)"; -#line 25868 "" +#line 25861 "" s_wsfi(&ici__1); -#line 25868 "" +#line 25861 "" do_fio(&c__1, "{", (ftnlen)1); -#line 25868 "" +#line 25861 "" do_fio(&c__1, (char *)&iinsttrans[i__], (ftnlen)sizeof(integer)); -#line 25868 "" +#line 25861 "" do_fio(&c__1, "}", (ftnlen)1); -#line 25868 "" +#line 25861 "" e_wsfi(); -#line 25870 "" +#line 25863 "" lnote += 4; -#line 25871 "" +#line 25864 "" } -#line 25872 "" +#line 25865 "" if (itranskey[i__] < 0) { -#line 25873 "" +#line 25866 "" i__3 = lnote; -#line 25873 "" +#line 25866 "" ici__1.icierr = 0; -#line 25873 "" +#line 25866 "" ici__1.icirnum = 1; -#line 25873 "" +#line 25866 "" ici__1.icirlen = lnote + 4 - i__3; -#line 25873 "" +#line 25866 "" ici__1.iciunit = notexq + i__3; -#line 25873 "" +#line 25866 "" ici__1.icifmt = "(a1,i2,a1)"; -#line 25873 "" +#line 25866 "" s_wsfi(&ici__1); -#line 25873 "" +#line 25866 "" do_fio(&c__1, "{", (ftnlen)1); -#line 25873 "" +#line 25866 "" do_fio(&c__1, (char *)&itranskey[i__], (ftnlen)sizeof(integer)); -#line 25873 "" +#line 25866 "" do_fio(&c__1, "}", (ftnlen)1); -#line 25873 "" +#line 25866 "" e_wsfi(); -#line 25875 "" +#line 25868 "" lnote += 4; -#line 25876 "" +#line 25869 "" } else { /* Writing concatenation */ -#line 25877 "" +#line 25870 "" i__2[0] = lnote, a__1[0] = notexq; -#line 25877 "" +#line 25870 "" i__3 = itranskey[i__] + 48; -#line 25877 "" +#line 25870 "" chax_(ch__1, (ftnlen)1, &i__3); -#line 25877 "" +#line 25870 "" i__2[1] = 1, a__1[1] = ch__1; -#line 25877 "" +#line 25870 "" s_cat(notexq, a__1, i__2, &c__2, (ftnlen)79); -#line 25878 "" +#line 25871 "" ++lnote; -#line 25879 "" +#line 25872 "" } -#line 25880 "" - s_wsfe(&io___1935); +#line 25873 "" + s_wsfe(&io___1929); /* Writing concatenation */ -#line 25880 "" +#line 25873 "" i__2[0] = lnote, a__1[0] = notexq; -#line 25880 "" +#line 25873 "" i__2[1] = 1, a__1[1] = "%"; -#line 25880 "" +#line 25873 "" s_cat(ch__2, a__1, i__2, &c__2, (ftnlen)80); -#line 25880 "" +#line 25873 "" do_fio(&c__1, ch__2, lnote + 1); -#line 25880 "" +#line 25873 "" e_wsfe(); -#line 25881 "" +#line 25874 "" /* L1: */ -#line 25881 "" +#line 25874 "" } -#line 25882 "" +#line 25875 "" *flag__ = FALSE_; -#line 25883 "" +#line 25876 "" return 0; } /* writesetsign_ */ @@ -65368,75 +65293,75 @@ L5: integer s_wsfi(icilist *), do_fio(integer *, char *, ftnlen), e_wsfi(void) ; -#line 25887 "" +#line 25880 "" if (*x < .95f) { -#line 25888 "" +#line 25881 "" i__1 = *lenline; -#line 25888 "" +#line 25881 "" ici__1.icierr = 0; -#line 25888 "" +#line 25881 "" ici__1.icirnum = 1; -#line 25888 "" +#line 25881 "" ici__1.icirlen = *lenline + 2 - i__1; -#line 25888 "" +#line 25881 "" ici__1.iciunit = notexq + i__1; -#line 25888 "" +#line 25881 "" ici__1.icifmt = "(f2.1)"; -#line 25888 "" +#line 25881 "" s_wsfi(&ici__1); -#line 25888 "" +#line 25881 "" do_fio(&c__1, (char *)&(*x), (ftnlen)sizeof(real)); -#line 25888 "" +#line 25881 "" e_wsfi(); -#line 25889 "" +#line 25882 "" *lenline += 2; -#line 25890 "" +#line 25883 "" } else if (*x < 9.95f) { -#line 25891 "" +#line 25884 "" i__1 = *lenline; -#line 25891 "" +#line 25884 "" ici__1.icierr = 0; -#line 25891 "" +#line 25884 "" ici__1.icirnum = 1; -#line 25891 "" +#line 25884 "" ici__1.icirlen = *lenline + 3 - i__1; -#line 25891 "" +#line 25884 "" ici__1.iciunit = notexq + i__1; -#line 25891 "" +#line 25884 "" ici__1.icifmt = "(f3.1)"; -#line 25891 "" +#line 25884 "" s_wsfi(&ici__1); -#line 25891 "" +#line 25884 "" do_fio(&c__1, (char *)&(*x), (ftnlen)sizeof(real)); -#line 25891 "" +#line 25884 "" e_wsfi(); -#line 25892 "" +#line 25885 "" *lenline += 3; -#line 25893 "" +#line 25886 "" } else { -#line 25894 "" +#line 25887 "" i__1 = *lenline; -#line 25894 "" +#line 25887 "" ici__1.icierr = 0; -#line 25894 "" +#line 25887 "" ici__1.icirnum = 1; -#line 25894 "" +#line 25887 "" ici__1.icirlen = *lenline + 4 - i__1; -#line 25894 "" +#line 25887 "" ici__1.iciunit = notexq + i__1; -#line 25894 "" +#line 25887 "" ici__1.icifmt = "(f4.1)"; -#line 25894 "" +#line 25887 "" s_wsfi(&ici__1); -#line 25894 "" +#line 25887 "" do_fio(&c__1, (char *)&(*x), (ftnlen)sizeof(real)); -#line 25894 "" +#line 25887 "" e_wsfi(); -#line 25895 "" +#line 25888 "" *lenline += 4; -#line 25896 "" +#line 25889 "" } -#line 25897 "" +#line 25890 "" return 0; } /* writflot_ */ @@ -65464,12 +65389,12 @@ L5: extern integer numclef_(char *, ftnlen); /* Fortran I/O blocks */ - static cilist io___1938 = { 0, 6, 0, 0, 0 }; - static cilist io___1939 = { 0, 6, 0, 0, 0 }; - static icilist io___1943 = { 0, temq, 0, "(a9,i2,a1)", 40, 1 }; - static cilist io___1944 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1946 = { 0, 11, 0, "(a)", 0 }; - static cilist io___1947 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1932 = { 0, 6, 0, 0, 0 }; + static cilist io___1933 = { 0, 6, 0, 0, 0 }; + static icilist io___1937 = { 0, temq, 0, "(a9,i2,a1)", 40, 1 }; + static cilist io___1938 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1940 = { 0, 11, 0, "(a)", 0 }; + static cilist io___1941 = { 0, 11, 0, "(a)", 0 }; /* subroutine wsclef(iv,ninow,clefq,nclef) */ @@ -65480,209 +65405,209 @@ L5: /* In pmx271, had removed clefq, so with 2 or more staves in */ /* an instrument, had problems. So replace in 272 */ -#line 25918 "" +#line 25911 "" if (*nclef < 7) { -#line 25919 "" +#line 25912 "" i__1 = *nclef + 48; -#line 25919 "" +#line 25912 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 25919 "" +#line 25912 "" *(unsigned char *)&comclefq_1.clefq[*iv - 1] = *(unsigned char *)& ch__1[0]; -#line 25920 "" +#line 25913 "" } else { -#line 25921 "" +#line 25914 "" *(unsigned char *)&comclefq_1.clefq[*iv - 1] = '9'; -#line 25922 "" +#line 25915 "" } -#line 25923 "" +#line 25916 "" if (! comlast_1.islast) { -#line 25923 "" +#line 25916 "" return 0; -#line 25923 "" +#line 25916 "" } -#line 25924 "" +#line 25917 "" iv1 = 1; -#line 25925 "" +#line 25918 "" i__1 = *ninow; -#line 25925 "" +#line 25918 "" for (iinst = 1; iinst <= i__1; ++iinst) { -#line 25926 "" +#line 25919 "" if (*iv < iv1 + comnvi_1.nspern[iinst - 1]) { -#line 25926 "" +#line 25919 "" goto L2; -#line 25926 "" +#line 25919 "" } -#line 25927 "" +#line 25920 "" iv1 += comnvi_1.nspern[iinst - 1]; -#line 25928 "" +#line 25921 "" /* L1: */ -#line 25928 "" +#line 25921 "" } -#line 25929 "" - s_wsle(&io___1938); -#line 25929 "" +#line 25922 "" + s_wsle(&io___1932); +#line 25922 "" e_wsle(); -#line 25930 "" - s_wsle(&io___1939); -#line 25930 "" +#line 25923 "" + s_wsle(&io___1933); +#line 25923 "" do_lio(&c__9, &c__1, "Should not be here in wsclef!", (ftnlen)29); -#line 25930 "" +#line 25923 "" e_wsle(); -#line 25931 "" +#line 25924 "" stop1_(); -#line 25932 "" +#line 25925 "" L2: /* Here, iinst is the instrument number with staff of clef change */ -#line 25936 "" +#line 25929 "" iv2 = iv1 + comnvi_1.nspern[iinst - 1] - 1; -#line 25937 "" +#line 25930 "" if (iinst < 10) { /* Writing concatenation */ -#line 25938 "" +#line 25931 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 25938 "" +#line 25931 "" i__2[0] = 1, a__1[0] = ch__1; -#line 25938 "" +#line 25931 "" i__2[1] = 7, a__1[1] = "setclef"; -#line 25938 "" +#line 25931 "" i__1 = iinst + 48; -#line 25938 "" +#line 25931 "" chax_(ch__2, (ftnlen)1, &i__1); -#line 25938 "" +#line 25931 "" i__2[2] = 1, a__1[2] = ch__2; -#line 25938 "" +#line 25931 "" s_cat(temq, a__1, i__2, &c__3, (ftnlen)40); -#line 25939 "" +#line 25932 "" ltem = 9; -#line 25940 "" +#line 25933 "" } else { -#line 25941 "" - s_wsfi(&io___1943); +#line 25934 "" + s_wsfi(&io___1937); /* Writing concatenation */ -#line 25941 "" +#line 25934 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 25941 "" +#line 25934 "" i__3[0] = 1, a__2[0] = ch__1; -#line 25941 "" +#line 25934 "" i__3[1] = 8, a__2[1] = "setclef{"; -#line 25941 "" +#line 25934 "" s_cat(ch__3, a__2, i__3, &c__2, (ftnlen)9); -#line 25941 "" +#line 25934 "" do_fio(&c__1, ch__3, (ftnlen)9); -#line 25941 "" +#line 25934 "" do_fio(&c__1, (char *)&iinst, (ftnlen)sizeof(integer)); -#line 25941 "" +#line 25934 "" do_fio(&c__1, "}", (ftnlen)1); -#line 25941 "" +#line 25934 "" e_wsfi(); -#line 25942 "" +#line 25935 "" ltem = 12; -#line 25943 "" +#line 25936 "" } -#line 25944 "" +#line 25937 "" if (iv1 == iv2) { /* Only one staff (iv) in instrument with clef change */ -#line 25948 "" - s_wsfe(&io___1944); +#line 25941 "" + s_wsfe(&io___1938); /* Writing concatenation */ -#line 25948 "" +#line 25941 "" i__2[0] = ltem, a__1[0] = temq; -#line 25948 "" +#line 25941 "" i__2[1] = 1, a__1[1] = comclefq_1.clefq + (*iv - 1); -#line 25948 "" +#line 25941 "" i__2[2] = 1, a__1[2] = "%"; -#line 25948 "" +#line 25941 "" s_cat(ch__4, a__1, i__2, &c__3, (ftnlen)42); -#line 25948 "" +#line 25941 "" do_fio(&c__1, ch__4, ltem + 2); -#line 25948 "" +#line 25941 "" e_wsfe(); -#line 25949 "" +#line 25942 "" } else { /* Writing concatenation */ -#line 25950 "" +#line 25943 "" i__3[0] = ltem, a__2[0] = temq; -#line 25950 "" +#line 25943 "" i__3[1] = 1, a__2[1] = "{"; -#line 25950 "" +#line 25943 "" s_cat(temq, a__2, i__3, &c__2, (ftnlen)40); -#line 25951 "" +#line 25944 "" ++ltem; /* Loop over staves, but clefq has only changed for one of them */ -#line 25955 "" +#line 25948 "" i__1 = iv2; -#line 25955 "" +#line 25948 "" for (iiv = iv1; iiv <= i__1; ++iiv) { /* Writing concatenation */ -#line 25956 "" +#line 25949 "" i__3[0] = ltem, a__2[0] = temq; -#line 25956 "" +#line 25949 "" i__4 = numclef_(comclefq_1.clefq + (iiv - 1), (ftnlen)1) + 48; -#line 25956 "" +#line 25949 "" chax_(ch__1, (ftnlen)1, &i__4); -#line 25956 "" +#line 25949 "" i__3[1] = 1, a__2[1] = ch__1; -#line 25956 "" +#line 25949 "" s_cat(temq, a__2, i__3, &c__2, (ftnlen)40); -#line 25957 "" +#line 25950 "" ++ltem; -#line 25958 "" +#line 25951 "" /* L3: */ -#line 25958 "" +#line 25951 "" } -#line 25959 "" - s_wsfe(&io___1946); +#line 25952 "" + s_wsfe(&io___1940); /* Writing concatenation */ -#line 25959 "" +#line 25952 "" i__3[0] = ltem, a__2[0] = temq; -#line 25959 "" +#line 25952 "" i__3[1] = 2, a__2[1] = "}%"; -#line 25959 "" +#line 25952 "" s_cat(ch__4, a__2, i__3, &c__2, (ftnlen)42); -#line 25959 "" +#line 25952 "" do_fio(&c__1, ch__4, ltem + 2); -#line 25959 "" +#line 25952 "" e_wsfe(); -#line 25960 "" +#line 25953 "" } -#line 25961 "" +#line 25954 "" if (comc8flag_1.c8flag[*iv - 1]) { /* If we change FROM octave treble clef to some other, need the following. */ -#line 25965 "" - s_wsfe(&io___1947); +#line 25958 "" + s_wsfe(&io___1941); /* Writing concatenation */ -#line 25965 "" +#line 25958 "" i__5[0] = 20, a__3[0] = "\\settrebleclefsymbol"; -#line 25965 "" +#line 25958 "" i__1 = iinst + 48; -#line 25965 "" +#line 25958 "" chax_(ch__1, (ftnlen)1, &i__1); -#line 25965 "" +#line 25958 "" i__5[1] = 1, a__3[1] = ch__1; -#line 25965 "" +#line 25958 "" i__5[2] = 1, a__3[2] = "\\"; -#line 25965 "" +#line 25958 "" i__5[3] = 11, a__3[3] = "trebleclef%"; -#line 25965 "" +#line 25958 "" s_cat(ch__5, a__3, i__5, &c__4, (ftnlen)33); -#line 25965 "" +#line 25958 "" do_fio(&c__1, ch__5, (ftnlen)33); -#line 25965 "" +#line 25958 "" e_wsfe(); -#line 25967 "" +#line 25960 "" comc8flag_1.c8flag[*iv - 1] = FALSE_; -#line 25968 "" +#line 25961 "" } -#line 25969 "" +#line 25962 "" return 0; } /* wsclef_ */ @@ -65701,89 +65626,89 @@ L2: extern /* Subroutine */ int g1etchar_(char *, integer *, char *, ftnlen, ftnlen); -#line 25974 "" +#line 25967 "" *lyrerr = 0; /* On entry, last char was " */ -#line 25978 "" +#line 25971 "" L18: -#line 25978 "" +#line 25971 "" g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); -#line 25979 "" +#line 25972 "" if (*iccount == 121) { -#line 25980 "" +#line 25973 "" *lyrerr = 2; -#line 25981 "" +#line 25974 "" return 0; /* else if (charq.eq.'"') then */ -#line 25983 "" +#line 25976 "" } else /* if(complicated condition) */ { -#line 25983 "" +#line 25976 "" i__1 = *iccount - 2; -#line 25983 "" +#line 25976 "" if (*(unsigned char *)charq == '"' && ! (s_cmp(lineq + i__1, "\\", * iccount - 1 - i__1, (ftnlen)1) == 0)) { -#line 25985 "" +#line 25978 "" g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); /* Check for raise/lower command */ -#line 25989 "" +#line 25982 "" if (*(unsigned char *)charq == '@') { /* @ positions lyrics vertically for current voice */ /* [a,b] above or below of the staff */ /* +/- i offset, \internotes */ -#line 25995 "" +#line 25988 "" g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); -#line 25996 "" +#line 25989 "" if (i_indx("ab", charq, (ftnlen)2, (ftnlen)1) == 0) { -#line 25997 "" +#line 25990 "" *lyrerr = 3; -#line 25998 "" +#line 25991 "" return 0; -#line 25999 "" +#line 25992 "" } -#line 26000 "" +#line 25993 "" g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); -#line 26001 "" +#line 25994 "" if (i_indx("+-", charq, (ftnlen)2, (ftnlen)1) == 0) { -#line 26002 "" +#line 25995 "" *lyrerr = 4; -#line 26003 "" +#line 25996 "" return 0; -#line 26004 "" +#line 25997 "" } -#line 26005 "" +#line 25998 "" g1etchar_(lineq, iccount, charq, (ftnlen)128, (ftnlen)1); -#line 26006 "" +#line 25999 "" if (i_indx("0123456789", charq, (ftnlen)10, (ftnlen)1) == 0) { -#line 26007 "" +#line 26000 "" *lyrerr = 5; -#line 26008 "" +#line 26001 "" return 0; -#line 26009 "" +#line 26002 "" } -#line 26010 "" +#line 26003 "" } else if (*(unsigned char *)charq != ' ') { /* 2nd " must be followed by ' ' */ -#line 26014 "" +#line 26007 "" *lyrerr = 1; -#line 26015 "" +#line 26008 "" return 0; -#line 26016 "" +#line 26009 "" } -#line 26017 "" +#line 26010 "" return 0; -#line 26018 "" +#line 26011 "" } -#line 26018 "" +#line 26011 "" } -#line 26019 "" +#line 26012 "" goto L18; } /* chkpmxlyr_ */ @@ -65813,7 +65738,7 @@ L18: extern integer lenstr_(char *, integer *, ftnlen); /* Fortran I/O blocks */ - static cilist io___1954 = { 0, 6, 0, 0, 0 }; + static cilist io___1948 = { 0, 6, 0, 0, 0 }; @@ -65821,171 +65746,171 @@ L18: /* with \pmxlyr{...}\, but also look for ~ in lyrics and replace with '\ll ', */ /* (unless preceded with '\'), check length */ -#line 26029 "" +#line 26022 "" chax_(ch__1, (ftnlen)1, &c__92); -#line 26029 "" +#line 26022 "" *(unsigned char *)sq = *(unsigned char *)&ch__1[0]; -#line 26030 "" +#line 26023 "" iend = lenstr_(lineq, &c__128, (ftnlen)128); /* i2nd = iccount+index(lineq(iccount+1:128),'"') */ /* Find position of closing '"'; must bypass any \" which is used for umlaut */ -#line 26035 "" +#line 26028 "" i__1 = *iccount; -#line 26035 "" +#line 26028 "" i2nd = *iccount + i_indx(lineq + i__1, "\"", 128 - i__1, (ftnlen)1); -#line 26036 "" +#line 26029 "" L2: -#line 26037 "" +#line 26030 "" i__1 = i2nd - 2; -#line 26037 "" +#line 26030 "" if (s_cmp(lineq + i__1, "\\", i2nd - 1 - i__1, (ftnlen)1) == 0) { -#line 26038 "" +#line 26031 "" i__1 = i2nd; -#line 26038 "" +#line 26031 "" i2nd += i_indx(lineq + i__1, "\"", 128 - i__1, (ftnlen)1); -#line 26039 "" +#line 26032 "" goto L2; -#line 26040 "" +#line 26033 "" } -#line 26041 "" +#line 26034 "" istart = *iccount; -#line 26042 "" +#line 26035 "" L1: -#line 26042 "" +#line 26035 "" i__1 = istart; -#line 26042 "" +#line 26035 "" itilde = istart + i_indx(lineq + i__1, "~", i2nd - 1 - i__1, (ftnlen)1); -#line 26043 "" +#line 26036 "" if (itilde > istart && itilde < i2nd) { /* Replace tilde if not preceded by \ */ -#line 26047 "" +#line 26040 "" if (iend >= 117) { -#line 26048 "" - s_wsle(&io___1954); -#line 26048 "" +#line 26041 "" + s_wsle(&io___1948); +#line 26041 "" do_lio(&c__9, &c__1, "Sorry, lyric string is too long, stopping", (ftnlen)41); -#line 26048 "" +#line 26041 "" e_wsle(); -#line 26049 "" +#line 26042 "" stop1_(); -#line 26050 "" +#line 26043 "" } else /* if(complicated condition) */ { -#line 26050 "" +#line 26043 "" i__1 = itilde - 2; -#line 26050 "" +#line 26043 "" if (s_cmp(lineq + i__1, sq, itilde - 1 - i__1, (ftnlen)1) == 0) { -#line 26051 "" +#line 26044 "" istart = itilde; -#line 26052 "" +#line 26045 "" goto L1; -#line 26053 "" +#line 26046 "" } -#line 26053 "" +#line 26046 "" } -#line 26054 "" +#line 26047 "" i__1 = itilde; /* Writing concatenation */ -#line 26054 "" +#line 26047 "" i__2[0] = itilde - 1, a__1[0] = lineq; -#line 26054 "" +#line 26047 "" i__2[1] = 1, a__1[1] = sq; -#line 26054 "" +#line 26047 "" i__2[2] = 3, a__1[2] = "lk "; -#line 26054 "" +#line 26047 "" i__2[3] = iend - i__1, a__1[3] = lineq + i__1; -#line 26054 "" +#line 26047 "" s_cat(lineqt, a__1, i__2, &c__4, (ftnlen)128); -#line 26056 "" +#line 26049 "" iend = lenstr_(lineqt, &c__128, (ftnlen)128); -#line 26057 "" +#line 26050 "" i2nd += 3; -#line 26058 "" +#line 26051 "" s_copy(lineq, lineqt, (ftnlen)128, (ftnlen)128); -#line 26059 "" +#line 26052 "" goto L1; -#line 26060 "" +#line 26053 "" } -#line 26061 "" +#line 26054 "" if (*iccount == 1) { -#line 26062 "" +#line 26055 "" i__1 = i2nd; /* Writing concatenation */ -#line 26062 "" +#line 26055 "" i__3[0] = 1, a__2[0] = sq; -#line 26062 "" +#line 26055 "" i__3[1] = 7, a__2[1] = "pmxlyr{"; -#line 26062 "" +#line 26055 "" i__3[2] = i2nd - 2, a__2[2] = lineq + 1; -#line 26062 "" +#line 26055 "" i__3[3] = 1, a__2[3] = "}"; -#line 26062 "" +#line 26055 "" i__3[4] = 1, a__2[4] = sq; -#line 26062 "" +#line 26055 "" i__3[5] = 128 - i__1, a__2[5] = lineq + i__1; -#line 26062 "" +#line 26055 "" s_cat(lineqt, a__2, i__3, &c__6, (ftnlen)128); -#line 26064 "" +#line 26057 "" } else { -#line 26065 "" +#line 26058 "" i__1 = *iccount; -#line 26065 "" +#line 26058 "" i__4 = i2nd; /* Writing concatenation */ -#line 26065 "" +#line 26058 "" i__5[0] = *iccount - 1, a__3[0] = lineq; -#line 26065 "" +#line 26058 "" i__5[1] = 1, a__3[1] = sq; -#line 26065 "" +#line 26058 "" i__5[2] = 7, a__3[2] = "pmxlyr{"; -#line 26065 "" +#line 26058 "" i__5[3] = i2nd - 1 - i__1, a__3[3] = lineq + i__1; -#line 26065 "" +#line 26058 "" i__5[4] = 1, a__3[4] = "}"; -#line 26065 "" +#line 26058 "" i__5[5] = 1, a__3[5] = sq; -#line 26065 "" +#line 26058 "" i__5[6] = 128 - i__4, a__3[6] = lineq + i__4; -#line 26065 "" +#line 26058 "" s_cat(lineqt, a__3, i__5, &c__7, (ftnlen)128); -#line 26068 "" +#line 26061 "" } -#line 26069 "" +#line 26062 "" i2nd += 8; -#line 26070 "" +#line 26063 "" s_copy(lineq, lineqt, (ftnlen)128, (ftnlen)128); -#line 26071 "" +#line 26064 "" i__1 = i2nd; -#line 26071 "" +#line 26064 "" if (s_cmp(lineq + i__1, "@", i2nd + 1 - i__1, (ftnlen)1) == 0) { -#line 26072 "" +#line 26065 "" i__1 = i2nd + 1; -#line 26072 "" +#line 26065 "" i__4 = i2nd + 4; /* Writing concatenation */ -#line 26072 "" +#line 26065 "" i__3[0] = i2nd, a__2[0] = lineq; -#line 26072 "" +#line 26065 "" i__3[1] = 3, a__2[1] = "at{"; -#line 26072 "" +#line 26065 "" i__3[2] = i2nd + 4 - i__1, a__2[2] = lineq + i__1; -#line 26072 "" +#line 26065 "" i__3[3] = 1, a__2[3] = "}"; -#line 26072 "" +#line 26065 "" i__3[4] = 1, a__2[4] = sq; -#line 26072 "" +#line 26065 "" i__3[5] = 128 - i__4, a__2[5] = lineq + i__4; -#line 26072 "" +#line 26065 "" s_cat(lineqt, a__2, i__3, &c__6, (ftnlen)128); -#line 26074 "" +#line 26067 "" s_copy(lineq, lineqt, (ftnlen)128, (ftnlen)128); -#line 26075 "" +#line 26068 "" } -#line 26076 "" +#line 26069 "" return 0; } /* dopmxlyr_ */ @@ -65995,33 +65920,33 @@ L1: static integer iv; /* propagate per-instrument quantities to per-channel ones */ -#line 26084 "" +#line 26077 "" /* Parameter adjustments */ -#line 26084 "" +#line 26077 "" --twoline; -#line 26084 "" +#line 26077 "" --iinsiv; -#line 26084 "" +#line 26077 "" midchan -= 25; -#line 26084 "" +#line 26077 "" --midi; -#line 26084 "" +#line 26077 "" -#line 26084 "" +#line 26077 "" /* Function Body */ -#line 26084 "" +#line 26077 "" for (iv = *nv; iv >= 1; --iv) { -#line 26085 "" +#line 26078 "" if (twoline[iv]) { -#line 26086 "" +#line 26079 "" midc[midchan[iv + 48]] = midi[iinsiv[iv]]; -#line 26087 "" +#line 26080 "" } -#line 26088 "" +#line 26081 "" midc[midchan[iv + 24]] = midi[iinsiv[iv]]; -#line 26089 "" +#line 26082 "" } -#line 26090 "" +#line 26083 "" return 0; } /* inst2chan_ */ diff --git a/Build/source/utils/pmx/pmx-src/tests/barsant.pml b/Build/source/utils/pmx/pmx-src/tests/barsant.pml index 9791dc1127e..1be48b99ea1 100644 --- a/Build/source/utils/pmx/pmx-src/tests/barsant.pml +++ b/Build/source/utils/pmx/pmx-src/tests/barsant.pml @@ -1,4 +1,4 @@ -This is PMX, Version 2.94 , 27 Jan 20 +This is PMX, Version 2.94 , 17 Mar 20 Opening barsant.pmx Starting first PMX pass diff --git a/Build/source/utils/pmx/pmx-src/tests/barsant.tex b/Build/source/utils/pmx/pmx-src/tests/barsant.tex index 54a84462518..eaf97e45880 100644 --- a/Build/source/utils/pmx/pmx-src/tests/barsant.tex +++ b/Build/source/utils/pmx/pmx-src/tests/barsant.tex @@ -45,15 +45,15 @@ \starteq% \pnotes{2.00}\qu{'C}&\zcharnote{16}{\bigfont\kern-30pt Adagio}% \ibl2{'e}{-2}\qb2g\en% -\pnotes{1.82}&\ast{.29}\shlft8{\zcu{'f}}\nbbl2\qbp2e\en% +\pnotes{1.82}&\ast{.10}\shlft8{\zcu{'f}}\nbbl2\qbp2e\en% \pnotes{1.27}\sk\ds&\tbbbl2\tbl2\qb2{'d}\ibbbl2e{-2}\rbbbl2\rbbl2\qb2c% \en% \pnotes{1.50}&\qb2{''a}\en% \pnotes{0.50}\Figu0{6}\Figu4{5}\cl{'F}&\en% \pnotes{1.08}&\isluru0{''a}\nbbbbl2\qb2{`g}\qb2f\qb2e\qb2d\tslur0d% \tbl2\qb2c\en% -\pnotes{2.00}\ast{1.21}\Figu0{4}\Figu4{2}\ibl1{'F}{-1}\qb1F\Figu0{6}% -\tbl1\qb1E\ds\cu C&\ast{1.21}\ibl2{'b}1\isluru0b\shlft8{\zcu c}\qb2b% +\pnotes{2.00}\ast{1.03}\Figu0{4}\Figu4{2}\ibl1{'F}{-1}\qb1F\Figu0{6}% +\tbl1\qb1E\ds\cu C&\ast{1.03}\ibl2{'b}1\isluru0b\shlft8{\zcu c}\qb2b% \tslur0c\tbl2\qb2c\ds\cl e\en% % Bar count 2 \xbar @@ -62,7 +62,7 @@ \isluru0d\qb2d\qb2c\tslur0d\qb2d\uppz e\tbl2\qb2e\ibbbl2e0\isluru0e\qb2e% \qb2d\tslur0e\qb2e\uppz f\tbl2\qb2f\ibbbl2f0\isluru0f\qb2f\qb2e\tslur0f% \qb2f\tbl2\qb2g\ibbbl2f0\qb2g\qb2f\qb2e\tbl2\qb2f\en% -\pnotes{1.82}\ast{1.02}\qu{'C}&\ast{1.02}\ibbl2{'e}{-2}\shlft8{\zcu f}% +\pnotes{1.82}\ast{.83}\qu{'C}&\ast{.83}\ibbl2{'e}{-2}\shlft8{\zcu f}% \qbp2e\en% \pnotes{1.27}&\tbbbl2\tbbl2\qb2{'d}\en% \pnotes{2.00}\sk\ds&\tbl2\qb2{'c}\ds\en% @@ -79,16 +79,16 @@ \pnotes{1.17}&\tbl2\qbp2{''d}\en% \pnotes{0.58}\Figu0{6}\Figu4{5}\bigfl{'B}\qu B&\en% \pnotes{1.05}&\ibbbl2{''b}{-3}\qb2c\en% -\pnotes{0.87}&\ast{.45}\nbbbbl2\isluru0{''d}\fl b\xnum{0.87}c3\qb2b\qb2a% +\pnotes{0.87}&\ast{.34}\nbbbbl2\isluru0{''d}\fl b\xnum{0.87}c3\qb2b\qb2a% \tslur0b\tbl2\qb2{`g}\en% -\pnotes{1.45}\Figu0{4}\Figu4{2}&\ast{1.41}\ibbl2{'f}9\shlft8{\bigna f\zcu% +\pnotes{1.45}\Figu0{4}\Figu4{2}&\ast{1.24}\ibbl2{'f}9\shlft8{\bigna f\zcu% f}\qb2e\en% \pnotes{1.17}&\tbl2\qbp2{''c}\en% \pnotes{0.58}\Figu0{6}\Figu4{5}\islurd0{'A}\cu A&\en% \pnotes{1.05}&\ibbbl2{''a}{-3}\qb2b\en% \pnotes{0.87}&\nbbbbl2\xnum{0.87}{''b}3\qb2a\qb2{`g}\tbl2\qb2f\en% -\pnotes{2.00}\ast{1.68}\Figu{-1}{\fsmsh}\Figu0{4}\Figu4{2}\ibu1{'A}{-1}% -\tslur0A\qb1A\Figu0{6}\tbu1\qb1{`G}\ds&\ast{1.68}\ibl2{'d}1\shlft{13}{% +\pnotes{2.00}\ast{1.49}\Figu{-1}{\fsmsh}\Figu0{4}\Figu4{2}\ibu1{'A}{-1}% +\tslur0A\qb1A\Figu0{6}\tbu1\qb1{`G}\ds&\ast{1.49}\ibl2{'d}1\shlft{13}{% \zcu e}\shake g\sh d\qb2d\tbl2\qb2e\ds\en% \pnotes{1.75}\Figu0{6}\Figu4{5}\islurd0G\cu G&\ibbl2{'e}{-2}\qbp2e\en% \pnotes{1.05}&\bigna{'d}\tbbbl2\tbl2\qb2d\en% @@ -101,7 +101,7 @@ \pnotes{1.05}&\ibbbl2{'f}{-3}\qb2g\en% \pnotes{0.87}&\nbbbbl2\isluru0{''a}\xnum{0.87}{`g}3\qb2f\qb2e\tslur0f% \tbl2\qb2d\en% -\pnotes{1.45}\Figu0{4}\Figu4{2}&\ast{1.41}\ibbl2{'c}4\shlft8{\bigna c\zcu% +\pnotes{1.45}\Figu0{4}\Figu4{2}&\ast{1.24}\ibbl2{'c}4\shlft8{\bigna c\zcu% c}\rbbl2\qb2b\en% \pnotes{1.00}\sk\global\figdrop8\Figu06\cu E&\qb2{'c}\en% \pnotes{1.45}&\tbbl2\tbl2\qb2{'g}\en% @@ -133,11 +133,11 @@ % Bar count 6 \xbar \pnotes{2.00}\Figu0{5}\bigsh{'C}\qu C&\cl{'g}\en% -\pnotes{1.43}&\xnum{1.55}{''a}3\ibbl2{`g}0\isluru0{'a}\qb2{`g}\ast{.25}% +\pnotes{1.43}&\xnum{1.55}{''a}3\ibbl2{`g}0\isluru0{'a}\qb2{`g}\ast{.13}% \sh f\qb2f\tslur0{'a}\tbl2\qb2{`g}\en% -\pnotes{2.00}\ast{.25}\ds&\ast{.25}\fl{''b}\cl b\en% +\pnotes{2.00}\ast{.13}\ds&\ast{.13}\fl{''b}\cl b\en% \pnotes{1.31}\Figu0{6}\Figu4{5}\cu{'C}&\ibbbl2{'g}{-2}\isluru0{'a}\qb2a% -\qb2{`g}\ast{.37}\na f\qb2f\tslur0e\tbl2\qb2e\en% +\qb2{`g}\ast{.26}\na f\qb2f\tslur0e\tbl2\qb2e\en% \pnotes{1.62}\qu{'D}\sk\sk\sk\ds\sk\ibbl1F{-1}\qbp1F&\ibbl2{'d}0% \isluru0f\qb2f\qb2d\tslur0c\bigsh c\qb2c\uppz e\tbl2\qb2d\ibbl2e2% \isluru0d\qb2d\qb2e\tslur0f\qb2f\en% @@ -146,21 +146,21 @@ % Bar count 7 \fixdrop% \alaligne -\pnotes{2.00}\ast{1.08}\Figu0{5}\sh{'D}\qu D&\ast{1.08}\cl{''a}\en% -\pnotes{1.89}&\xnum{3.56}{''b}3\ibbl2a0\isluru0c\qb2a\ast{1.92}\sh{`g}% +\pnotes{2.00}\ast{.67}\Figu0{5}\sh{'D}\qu D&\ast{.67}\cl{''a}\en% +\pnotes{1.89}&\xnum{3.56}{''b}3\ibbl2a0\isluru0c\qb2a\ast{1.17}\sh{`g}% \qb2g\tslur0{'c}\tbl2\qb2a\en% \pnotes{2.00}\ds&\ibl2{''b}{-3}\qb2c\en% \pnotes{1.97}\Figu0{6}\Figu4{5}\cu{'D}&\shake{''d}\nbbl2\qbp2b\en% -\pnotes{1.87}&\ast{1.49}\tbbbl2\tbl2\qb2{''a}\en% +\pnotes{1.87}&\ast{.81}\tbbbl2\tbl2\qb2{''a}\en% \pnotes{1.93}\Figu{-1}{\sharpfig}\ibl1{'E}0\qb1E&\ibbl2{'g}{-6}% \rbbl2\qb2g\en% -\pnotes{1.00}&\ast{3.84}\shlft8{\bigsh{'f}\zcu f}\tbl2\qbp2e\en% +\pnotes{1.00}&\ast{2.70}\shlft8{\bigsh{'f}\zcu f}\tbl2\qbp2e\en% \pnotes{1.97}\nbbl1\qbp1{'E}&\en% -\pnotes{1.87}\ast{3.05}\sh{'F}\tbbbl1\tbl1\qb1F&\en% -\pnotes{1.93}\ast{1.94}\ibl1{'G}{-3}\sh G\qb1G&\ast{1.94}\qs\ibbl2{''a}0% +\pnotes{1.87}\ast{2.06}\sh{'F}\tbbbl1\tbl1\qb1F&\en% +\pnotes{1.93}\ast{1.19}\ibl1{'G}{-3}\sh G\qb1G&\ast{1.19}\qs\ibbl2{''a}0% \qb2b\en% \pnotes{1.97}\Figu0{7}\tbl1\qb1{'E}&\shake{''d}\qbp2b\en% -\pnotes{1.80}&\ast{1.49}\isluru0{''a}\nbbbbl2\qb2a\tslur0b\tbl2\qb2b\en% +\pnotes{1.80}&\ast{.81}\isluru0{''a}\nbbbbl2\qb2a\tslur0b\tbl2\qb2b\en% % Bar count 8 \xbar \pnotes{1.89}\ql{''A}\sk\sk\sk\sk\sk\ds&\xnum{1.89}{''d}3\ibbl2b{-3}% @@ -171,7 +171,7 @@ \pnotes{1.89}\Figu0{7}\ql{'G}\sk\sk\sk\sk\sk\ds&% \xnum{1.89}{''c}3\ibbl2a{-3}\isluru0d\qb2b\qb2a\tslur0b\tbl2\qb2{`g}% \xnum{1.89}{'a}3\ibbl2{`f}{-3}\isluru0{'b}\qb2{`g}\qb2f\tslur0g% -\tbl2\qb2e\xnum{3.56}f3\ibbl2e0\isluru0g\qb2e\ast{1.92}\sh d\qb2d\tslur0g% +\tbl2\qb2e\xnum{3.56}f3\ibbl2e0\isluru0g\qb2e\ast{1.17}\sh d\qb2d\tslur0g% \tbl2\qb2e\en% \pnotes{2.00}\Figu0{6}\cl{'G}&\cl{''b}\en% % Bar count 9 @@ -179,15 +179,15 @@ \pnotes{1.89}\Figu0{7}\ql{'F}\sk\sk\sk\sk\sk\ds&% \xnum{1.89}{''b}3\ibbl2{`g}{-3}\isluru0{'c}\qb2a\qb2{`g}\tslur0{'a}% \tbl2\qb2{`f}\xnum{1.89}g3\ibbl2e{-3}\isluru0{'a}\qb2{`f}\qb2e\tslur0f% -\tbl2\qb2d\xnum{3.56}e3\ibbl2d0\isluru0f\qb2d\ast{1.92}\sh c\qb2c\tslur0f% +\tbl2\qb2d\xnum{3.56}e3\ibbl2d0\isluru0f\qb2d\ast{1.17}\sh c\qb2c\tslur0f% \tbl2\qb2d\en% \pnotes{2.00}\Figu0{6}\Figu4{5}\cu{'D}&\cl{''a}\en% -\pnotes{1.93}\ast{1.81}\ql{'E}&\ast{1.81}\ibbl2{''a}6\sh{`g}\qb2g% +\pnotes{1.93}\ast{1.06}\ql{'E}&\ast{1.06}\ibbl2{''a}6\sh{`g}\qb2g% \tbbl2\qb2{'b}\en% \pnotes{2.00}&\tbl2\qb2{''d}\en% \pnotes{1.93}\Figu0{6}\Figu4{5}\bigsh G\qu G&\qs\ibbl2{''c}0\qb2d\en% \pnotes{1.97}&\qbp2{''c}\en% -\pnotes{1.87}&\ast{1.49}\isluru0{''b}\tbbbl2\tbl2\qb2b\en% +\pnotes{1.87}&\ast{.81}\isluru0{''b}\tbbbl2\tbl2\qb2b\en% % Bar count 10 \znotes&\roffset{-.4}{\tslur0{{''b}}}\en% \fixdrop% @@ -195,48 +195,48 @@ \alaligne \def\raisebarno{3.5\internote}% \znotes&\off{-\afterruleskip}\isu0{{''b}}{-.7}\off{\afterruleskip}\en% -\pnotes{1.92}\qu{'A}\sk\sk\sk\ast{4.18}\ast{4.18}\qp\sk\sk\sk\ast{4.18}% -\ast{4.18}\ast{4.18}\qp\sk\sk\sk\ast{4.18}\ast{4.18}\ast{4.18}\Figu0{6}% +\pnotes{1.92}\qu{'A}\sk\sk\sk\ast{1.64}\ast{1.64}\qp\sk\sk\sk\ast{1.64}% +\ast{1.64}\ast{1.64}\qp\sk\sk\sk\ast{1.64}\ast{1.64}\ast{1.64}\Figu0{6}% \Figu4{5}\bigsh G\ql G&\ibbl2{''b}{-1}\tslur0c\qb2c\isluru0a\qb2a% -\ast{4.18}\tslur0b\fl b\qb2b\ast{4.18}\isluru0{`g}\sh g\tbl2\qb2g% -\ibbl2g{-1}\tslur0{'a}\qb2a\ast{4.18}\isluru0{`f}\sh f\qb2f\ast{4.18}% -\tslur0g\na g\qb2g\isluru0e\tbl2\qb2e\ast{4.18}\ibbl2e{-1}\tslur0f\na f% -\qb2f\ast{4.18}\isluru0d\sh d\qb2d\tslur0e\qb2e\ast{4.18}\isluru0c\sh c% -\tbl2\qb2c\ast{4.18}\ibbl2e0\tslur0d\na d\qb2d\isluru0f\qb2f\qb2e\tslur0d% +\ast{1.64}\tslur0b\fl b\qb2b\ast{1.64}\isluru0{`g}\sh g\tbl2\qb2g% +\ibbl2g{-1}\tslur0{'a}\qb2a\ast{1.64}\isluru0{`f}\sh f\qb2f\ast{1.64}% +\tslur0g\na g\qb2g\isluru0e\tbl2\qb2e\ast{1.64}\ibbl2e{-1}\tslur0f\na f% +\qb2f\ast{1.64}\isluru0d\sh d\qb2d\tslur0e\qb2e\ast{1.64}\isluru0c\sh c% +\tbl2\qb2c\ast{1.64}\ibbl2e0\tslur0d\na d\qb2d\isluru0f\qb2f\qb2e\tslur0d% \tbl2\qb2d\en% % Bar count 11 \xbar -\pnotes{1.92}\ibl1{'G}{-6}\qb1{'A}\sk\ast{4.18}\Figu0{7}\tbl1\qb1{`D}&% -\ibbl2{'e}1\isluru0e\qb2c\ast{4.18}\sh g\qb2g\tslur0{'b}\qb2a% +\pnotes{1.92}\ibl1{'G}{-6}\qb1{'A}\sk\ast{1.64}\Figu0{7}\tbl1\qb1{`D}&% +\ibbl2{'e}1\isluru0e\qb2c\ast{1.64}\sh g\qb2g\tslur0{'b}\qb2a% \tbl2\qb2{`d}\en% -\pnotes{2.00}\ast{5.93}\Figu0{4}\ibu1{'C}{-9}\qb1E&\ast{5.93}\ibu2{'b}{-2}% +\pnotes{2.00}\ast{2.67}\Figu0{4}\ibu1{'C}{-9}\qb1E&\ast{2.67}\ibu2{'b}{-2}% \shlft8{\zcu c}\shake{'c}\qbp2{`b}\en% \pnotes{1.00}\Figu{-1}{\fsmsh}\Figu0{3}\tbu1\qb1E&\en% \pnotes{1.92}&\tbbu2\tbu2\qb2{'a}\en% \pnotes{2.00}\ibl1{'C}9\qb1A&\qu{'a}\en% \pnotes{1.96}\nbbl1\qbp1{''A}&\en% -\pnotes{1.83}\ast{3.57}\tbbbl1\tbl1\qb1{''B}&\en% +\pnotes{1.83}\ast{1.27}\tbbbl1\tbl1\qb1{''B}&\en% \pnotes{2.00}\ibl1{''B}{-8}\qb1C&\ds\en% -\pnotes{1.96}\ast{4.09}\Figu0{6}\Figu4{5}\sh{'G}\tbl1\qb1G&\ast{4.09}% +\pnotes{1.96}\ast{1.56}\Figu0{6}\Figu4{5}\sh{'G}\tbl1\qb1G&\ast{1.56}% \ibbl2{'e}{-3}\qbp2e\en% -\pnotes{1.83}&\ast{3.57}\tbbbl2\tbl2\qb2{'d}\en% +\pnotes{1.83}&\ast{1.27}\tbbbl2\tbl2\qb2{'d}\en% % Bar count 12 \xbar -\pnotes{1.92}\ast{2.32}\Figu{-1}{\sharpfig}\ql{''A}&\ast{2.32}\ibbl2{'d}6% -\sh c\qb2c\qb2e\qb2g\ast{4.18}\fl{'b}\tbl2\qb2b\en% +\pnotes{1.92}\ast{.94}\Figu{-1}{\sharpfig}\ql{''A}&\ast{.94}\ibbl2{'d}6% +\sh c\qb2c\qb2e\qb2g\ast{1.64}\fl{'b}\tbl2\qb2b\en% \pnotes{1.83}\Figu0{6}\Figu4{5}\bigsh{'C}\qu C&\ibbbl2{''b}6\qb2a% -\ast{4.26}\sh c\tbbbl2\qb2c\en% +\ast{1.72}\sh c\tbbbl2\qb2c\en% \pnotes{1.92}&\isluru0{''e}\tbl2\qb2e\en% -\pnotes{1.76}&\ibbbbl2{''c}{-3}\tslur0e\qb2e\isluru0d\qb2d\ast{4.34}\na c% -\qb2c\ast{4.34}\fl b\qb2b\qb2a\qb2{`g}\qb2f\tslur0e\tbl2\qb2e\en% -\pnotes{1.96}\ast{6.09}\ibl1{'D}0\qb1D&\ast{6.09}\ibbl2{'f}{-3}\shlft8{% +\pnotes{1.76}&\ibbbbl2{''c}{-3}\tslur0e\qb2e\isluru0d\qb2d\ast{1.80}\na c% +\qb2c\ast{1.80}\fl b\qb2b\qb2a\qb2{`g}\qb2f\tslur0e\tbl2\qb2e\en% +\pnotes{1.96}\ast{2.82}\ibl1{'D}0\qb1D&\ast{2.82}\ibbl2{'f}{-3}\shlft8{% \zcu e}\qbp2f\en% -\pnotes{1.83}&\ast{3.57}\tbbbl2\tbbl2\qb2{'e}\en% +\pnotes{1.83}&\ast{1.27}\tbbbl2\tbbl2\qb2{'e}\en% \pnotes{1.96}\nbbl1\qbp1{'D}&\shake{'g}\tbl2\qb2d\en% -\pnotes{1.83}\ast{3.57}\tbbbl1\tbl1\qb1{'E}&\en% +\pnotes{1.83}\ast{1.27}\tbbbl1\tbl1\qb1{'E}&\en% \pnotes{2.00}\ibl1{'E}{-5}\qb1F&\ds\en% \pnotes{1.96}\tbl1\qb1{'D}&\ibbl2{'d}{-3}\qbp2d\en% -\pnotes{1.83}&\ast{6.07}\na{'c}\tbbbl2\tbl2\qb2c\en% +\pnotes{1.83}&\ast{2.72}\na{'c}\tbbbl2\tbl2\qb2c\en% % Bar count 13 \fixdrop% \alaligne @@ -247,12 +247,12 @@ \pnotes{1.57}&\isluru0{''d}\tbl2\qb2d\en% \pnotes{1.13}&\ibbbbl2{''c}{-3}\tslur0d\qb2d\qb2c\qb2b\qb2a\qb2{`g}\qb2f% \qb2e\tbl2\qb2d\en% -\pnotes{1.73}\ast{1.27}\ibu1{'C}1\qb1C&\ast{1.27}\ibbl2{'d}{-2}\shlft8{% +\pnotes{1.73}\ast{1.09}\ibu1{'C}1\qb1C&\ast{1.09}\ibbl2{'d}{-2}\shlft8{% \zcu d}\shake g\qbp2e\en% \pnotes{1.33}&\tbbbl2\tbbl2\qb2{'d}\en% \pnotes{1.73}\nbbu1\qbp1{'C}&\tbl2\qb2{'c}\en% \pnotes{1.33}\tbbbu1\tbu1\qb1{'D}&\en% -\pnotes{1.57}\ast{.53}\ibu1{'D}{-3}\fl E\qb1E&\ast{.53}\qs\ibbl2{'c}0% +\pnotes{1.57}\ast{.39}\ibu1{'D}{-3}\fl E\qb1E&\ast{.39}\qs\ibbl2{'c}0% \qb2d\en% \pnotes{1.73}\Figu0{6}\tbu1\qb1{'B}&\shake{'g}\qbp2d\en% \pnotes{1.13}&\isluru0{'c}\nbbbbl2\qb2c\tslur0d\tbl2\qb2d\en% @@ -262,15 +262,15 @@ \qb2c\en% \pnotes{1.73}&\shake{'g}\qbp2c\en% \pnotes{1.13}&\isluru0{'b}\nbbbbl2\qb2b\tslur0c\tbl2\qb2c\en% -\pnotes{1.57}\ast{.74}\Figu{-1}{\fsmna}\Figu0{4}\Figu4{2}\bigfl{'B}\qu B% -&\ast{.74}\ibbl2{'b}0\na e\qb2e\qb2c\en% +\pnotes{1.57}\ast{.60}\Figu{-1}{\fsmna}\Figu0{4}\Figu4{2}\bigfl{'B}\qu B% +&\ast{.60}\ibbl2{'b}0\na e\qb2e\qb2c\en% \pnotes{1.73}&\shake{'g}\qbp2c\en% \pnotes{1.13}&\isluru0{'b}\nbbbbl2\qb2b\tslur0c\tbl2\qb2c\en% \pnotes{1.57}\Figu0{6}\bigfl{'A}\qu A&\ibbl2{'b}0\qb2f\qb2c\en% \pnotes{1.73}&\shake{'g}\qbp2c\en% \pnotes{1.13}&\isluru0{'b}\nbbbbl2\qb2b\tslur0c\tbl2\qb2c\en% -\pnotes{1.57}\ast{.74}\Figu{-1}{\fsmsh}\Figu0{6}\bigna{'A}\qu A&% -\ast{.74}\ibbl2{'b}0\sh f\qb2f\qb2c\en% +\pnotes{1.57}\ast{.60}\Figu{-1}{\fsmsh}\Figu0{6}\bigna{'A}\qu A&% +\ast{.60}\ibbl2{'b}0\sh f\qb2f\qb2c\en% \pnotes{1.73}&\shake{'g}\qbp2c\en% \pnotes{1.13}&\isluru0{'b}\nbbbbl2\qb2b\tslur0c\tbl2\qb2c\en% % Bar count 15 @@ -279,19 +279,19 @@ \pnotes{2.03}\Figu0{6}\ibu1{'B}{-1}\qb1B&\ql{'g}\en% \pnotes{1.77}\nbbu1\qbp1G&\en% \pnotes{1.03}\tbbbu1\tbu1\qb1{'A}&\en% -\pnotes{1.45}\ibu1{'A}{-2}\qb1B&\qs\ast{.61}\ibbl2{''a}{-2}\fl a\qb2a\en% +\pnotes{1.45}\ibu1{'A}{-2}\qb1B&\qs\ast{.10}\ibbl2{''a}{-2}\fl a\qb2a\en% \pnotes{1.77}\Figu0{7}\tbu1\qb1G&\qbp2{'g}\en% \pnotes{1.03}&\tbbbl2\tbl2\qb2{'f}\en% -\pnotes{1.45}\ast{1.02}\Figu{-1}{\fsmfl}\Figu0{3}\qu{'C}\sk\sk\sk% -\ast{.61}\ast{.61}\ast{.61}\qp&\ast{1.02}\ibbl2{'g}2\fl e\qb2e\ast{.61}% -\isluru0{'b}\na b\qb2b\tslur0c\qb2c\ast{.61}\isluru0a\na a\tbl2\qb2a% -\ast{.61}\ibbl2a{-1}\tslur0b\fl b\qb2b\isluru0{`g}\qb2g\ast{.61}% -\tslur0{'a}\fl a\qb2a\ast{.61}\isluru0{`f}\sh f\tbl2\qb2f\en% +\pnotes{1.45}\ast{.52}\Figu{-1}{\fsmfl}\Figu0{3}\qu{'C}\sk\sk\sk% +\ast{.10}\ast{.10}\ast{.10}\qp&\ast{.52}\ibbl2{'g}2\fl e\qb2e\ast{.10}% +\isluru0{'b}\na b\qb2b\tslur0c\qb2c\ast{.10}\isluru0a\na a\tbl2\qb2a% +\ast{.10}\ibbl2a{-1}\tslur0b\fl b\qb2b\isluru0{`g}\qb2g\ast{.10}% +\tslur0{'a}\fl a\qb2a\ast{.10}\isluru0{`f}\sh f\tbl2\qb2f\en% % Bar count 16 \xbar \pnotes{1.45}\hpause&\ibbl2{'f}{-1}\tslur0g\qb2g\isluru0e\qb2e\tslur0f% -\qb2f\isluru0d\tbl2\qb2d\ast{.61}\ibbl2d{-1}\tslur0e\fl e\qb2e\isluru0c% -\qb2c\ast{.61}\tslur0d\fl d\qb2d\ast{.61}\isluru0b\na b\tbl2\qb2b\en% +\qb2f\isluru0d\tbl2\qb2d\ast{.10}\ibbl2d{-1}\tslur0e\fl e\qb2e\isluru0c% +\qb2c\ast{.10}\tslur0d\fl d\qb2d\ast{.10}\isluru0b\na b\tbl2\qb2b\en% \pnotes{2.03}\ds\ibl1{'F}{-2}\qb1F\Figu0{6}\isluru1E\qb1E\Figu0{6}% \tslur1D\tbl1\qb1D&\ibl2{'a}2\tslur0c\qb2c\uppz e\qb2a\uppz e\qb2{`g}% \isluru0{'f}\tbl2\qb2f\en% -- cgit v1.2.3