    BUGS (12/29/88)

A ~~~ to the left of the bug # means I can't repeat it.

3.
    Don't allow dot-overlap between adjacent voices or within clusters.

4.
    Stemless chord's pseudo-stem direction forced opposite of adjacent voice.

~~~8.
   -- Hide/show mouse can be messy with x-hair.  Especially noticeable in
      playback.  See 108.
    
11.
	MIDI step entry: 
	-- accidentals collide on vertically near notes in chord
~~~-- excessive midi input crashes program?

14.
    Somehow, don't allow "nested grouping":

    (1) beam two notes, then insert two notes between them, then beam the two 
        new notes.
    (2) put 4 notes:  low w/ stem down, high w/ stem up, high w/ stem up,
        low w/ stem down.  Beam the two stem downs.  Beam the two stem ups.
        Then flip the stem up group.
    (3) Put two 16th note triplets.  Then beam them together -- you get
        two triplets inside a beamed group.  If this doesn't
        lead to any weirdness with flipping/deleting/adding/autostemming/
        ungrouping/grouping, then this is a great feature in the program.

~~~23.
    There are situations where deleting a symbol causes the right tips of
    the left-edge bracket to be erased.

25.
    Following insert/delete ending, don't redraw screen if start of ending
    was right of screen or if end of ending was left of screen.  Also, with
    copy/cut, expand/compress, etc.  (Most or all of section menu commands)

27.
    The chord editor isn't very ergonometric.

~~~36.
    Chekhilo() takes too long for large scores.  Re-code chekhilo() using
    makescrsig() techniques.  Or, better yet, implement find_n_edit().

37.
   With symbol menu safety on, button down on menu title / up on menu
   item -- the symbol gets selected.  Fix this by freezing mouse while button
	down.

~~~38.
    "New" command must cancel region.  Other commands also?

~~~41.
    Copy/cut/paste creates very non-dense scores, especially if the repeating
    unit is only a few symbols.  You quickly run out of memory.

43.
    Paste must account for non-existent y-units and non-existent staves:
    Put up a warning message, allow user to proceed at his own risk.

46.
    Checkhilo() doesn't detect hairpins out of range.

47.
    Any symbol whose x isn't on screen isn't put into currscreen by calc_data,
    even if part of the symbol's domain intersects the screen.

~~~52.
    Somehow I managed to create a score in which two consecutive symbols
    (bar lines) were more than 127 pixels apart.  I think it had something
    to do with endings.

~~~58.
    Bad redraw when you delete the non-suspended note of a suspended stem-down
    note pair.

59.
    Scroll forward or backward (especially backward) in a long score is too
    slow.  Also, there's an annoying delay between contrl-P and start of
    playing.  Presumably, makescrsig() is to blame.  Maybe I'll have to
    have a global array corresponding to barntable.

60.
 	 Polyphonic music with whole notes won't playback over correct midi channels.
	 Whole notes must have voice bits (stem direction).

65.
    Rests must have tuplet bytes; for playback they must be includable into
    tuplets.  Display:  Bracket can start and/or end over/under a rest.
	 Note that this also affects auto-scoring with triplet quantization.
	 See SERVE.SNG:  quantize it to 32nd note triplets, track 20 on both
	 staves 2 and 3 (piano format), minimize rests, beams on.  Split at D/D#2.
	 Comes out wrong because of rests not having tuplet bytes.

67.
    The rubberbox routine can hang, if you draw a very small rubber box very
    quickly.  Hangs before notching.  This RARELY happens.

~~~81.
    Various problems with mouse bounce.  For example, when clicking OK out of
    RNGEDIAL, sometimes the following alert box cancels and bounces you
    back into RNGEDIAL (i.e. if the range is bad for any reason).  This happens
    only on Craig's computer?

~~~82.
    I saw the control panel get EZ-Score's accessory-handling mechanism
    out of sync.  (On Craig's computer)

96.
    You shouldn't be able to replace a non-faint bar with faint bar if it is 
    start or end of an ending, and you shouldn't be able to insert an ending
    onto a faint bar line.

107.
    There will be situations where a single measure cannot fit onto one
    screen.  This causes problems.  See 169.

~~~108.
   Go into chord mode by typing a function key: messy if x-hair is on.  I
   think in various other situations the cross hair garbages the screen.
	See 8.

~~~110.
    Jeff had this happen:  Start with new piano score, put common time, put 
    Eb maj, put treble on 2 and bass on 3, insert 4 blank measures (w=100),
    put some data in measures 1 and 2, try to expand from 2 to 4.  Crashed
    between RNGEDIAL and EXPNDIAL.

111.
    In color, symbbar's y2 is one too small?

~~~115.
    Redraw:  part of flag chopped off of stem-up flagged note when deleting
    something to the right of it.

118.
    Starting with a new score:  put a key sig and a metro mark at the start.
    Then put clefs at the start.  pack_insert() fails.  Maybe change order
    of signatures at start of score.

120.
    Lyrics:
    -- underscore frequently cuts through bar lines.  When you get rid of
       an underscore (for example, by typing <esc>) those bar lines must
       redraw.  This is also true of slurs/lines/etc. that are cut by lyrics.

121.
   Auto-Scoring:
   -- when quantizing in triplets you can end up with beamed groups cutting
      bars.  I think this would happen only when it should have been quantized
      in duplets.  In general, test triplet quantizing better.
   -- division of rests should depend on notes.  For example, in 4/4, 
      32nd note + dotted 16th rest + dotted quarter rest, but reverse that
      order if rest/rest/note.
	-- Accidentals in front of a chord having a left-suspended head often
		collide with the suspended note(s).
	-- when quantizing to quarter note triplets the group size should be half
		notes, otherwise you get quarter + eighth-tied-to-eight + quarter.
	-- Load in DANCETLK.SCX, then auto-score DANCETLK.SNX.  Bar 5 should be
		two bars; 1st is a whole rest in both staves, and 2nd should have
		whole rest centered on top staff.
	-- More intelligent minimize-rests.  (Code currently marked with '!!!').

143.
    Stem-up / Stem-down 2nds won't play right.  Gets damaged during printer
	 justification.  They should be handled by some kind of system analogous
	 to suspension.  Play would work correctly if I use the Amadeus technique
	 (see 189).

144.
    Stretchy symbol with one end off screen:  "off screen" can be for
    horizontal and/or vertical reasons.  show_symbs() assumes that it is
    for horizontal reason.  OK on printer, because currscreen includes
	 symbols on all staves.

~~~146.
    On the screen a column of lyric syllables lines up perfectly, but on
    print out they skew.

~~~152.
	Greg reports:
	-- lyric editor crashed:  encountered left edge of screen, current screen 
		rather than previous screen redrew, then crash.
	-- AUTODIAL hung.

169.
	Doug Rider reports: lyric scroll at edge of screen sometimes jumps forward
	too far.  When next bar start on next screen?  See 107.

178.
	-- Short ties on printout are illegible.  Have a certain width below which
		ties aren't thickened?

189.
	Playback:
	-- Empty voice in a measure should be treated as a centered whole rest.
	-- This measure won't play right:  whole rest centered on staff 1, whole
		note at start of staff 2, staff 3 has dotted 8th rest followed by
		3 dotted 8th notes followed by half note.
	-- I think the preceeding two bugs can be fixed by using the Amadeus
		technique.  Also see 143.
	-- Screen chase loses its place if bar line is near or just beyond
		right edge of screen.  Theory:  Playback encounters sync point on
		next screen before next screen has a chance to be drawn.  Or more of
		bug 107.
	-- There are definitely still situations where centered whole rests won't
		play back correctly.

204.
	Wording in FORMDIAL:  "Reformat" instead of "(Re)Format", and center
	the title at the top without dashes on either side of it.

~~~205.
	In color, auto-scored the EXAMPLE.SNG, then tried to delete top note of
	first chord in staff 3, 2nd measure:  Mouse cross hair appeared on screen
	but didn't track the mouse.  Note didn't delete.  From this point on
	none of the mouse modes would work.  Look at those cross_hair() calls in
	event.c -- not enough parameters.  How could they EVER work?  Does fixing
	these also fix up some of the other mouse cross hair bugs? (See other
	bugs concerning little pieces of cross hairs left lying around on screen.)

~~~206.
	Bug Williams reports:  Load in and print EZ 1.0 file, key sigs aren't
	on staves (only on printer).

~~~211.
	In some situations when pitch bend moves the mouse off the left edge
	of the screen, the screen does not scroll.

212.
	In color, insert an S_LINE from lower left to upper right, ending with
	mouse very near to window info line.  Click to insert the symbol.  When
	the big-mouse reappears it is partly over the window's info line.  Has
	no bad effects as far as I can tell.

~~~214.
	Compress can make symbols overlap (especially accidentals).

218.
	Fence post error:  Left arrow moves mousex to = x_left, the screen scrolls.
	But right arrow moves mousex to = x_right scrolls screen so that mousex
	= x_left.  So the only way to set mousex=x_left via key commands is to
	wrap from the screen's right edge.

220.
	Playback slows down slightly but noticeably when music is dense vertically.
	This may become VERY noticeable in Midi-Score.

221.
	In add_stretch(), the standard Atari alt- and shift-alt- left/right arrow
	keys act strangely:  You have to type them several times to get any effect.

222.
	Midi step entry:  Play a chord, only one note of it gets inserted.  Due to
	running status?

223.
	Print half note stem-down barely to the left of quarter note stem-up.  Won't
	justify correctly if score has no bar lines.

225.
	Trying to line up generic lines end-to-end:  Can't, because programs thinks
	you're trying to nest them.  Even if end of one line and start of next are
	a couple pixels apart.

~~~228.
	On color mega-4, the program hung when mouse clicked on right scroll arrow.
	Not repeatable.

229.
	Playback tempo not same as MTST at all.  Check under switcher:  Auto-score
	something and go back and forth between the two play functions.

~~~231.
	Dave Oleniacz reports:  Typing a function key for an undefined guitar
	chord does NOT enter the guitar chord editor.

232.
	Create a blank score, 10000 measures.  Then insert a note into measure 1.
	Too slow.  Irrelevant in EZS, but relevant in MS?

233.
	Start with a new score, add two notes side by side.  Go into lyric editor,
	put a syllable beneath each note, then left arrow back to first syllable.
	Type esc (delete syllable), then insert:  The syllable reappears.  I think
	that I'd better rewrite all of ex_lyrics() and organize and comment it
	better.

234.
	The slur-drawing routines become unstable with small numbers.  It is
	too difficult to place small slurs at exact positions.

235. Justification problems

	-- When you print an entire score, measures X and X+1
		are together on a single line.  But when you print from X to X+1 they
		come out on separate lines.
	-- In general, too few measures per line.

236.
	Note heads are slightly too wide on printout.

237.
	Solid and hollow diamonds should be two independent note head styles, not
	dependent on the note's duration.

239.
	Load in SOMEWHER.SCO, right-click forward, clear staff 1 start to end,
	trashes cursor, crashes on mega-4 (due to screen overshoot no doubt).

240.
	Print from middle of score:  Key and time sigs have garbage y-coord.
	Not in release version?

241.
	My way of replacing a file is wrong:  Don't just Fwrite to it; it must
	be Fcreate'd.

242.
	Often when printing, the staff lines aren't evenly spaced.  Also in release
	version.

243.
	John reports a crash during auto-scoring something in 5/8.

XXX244.
	Try to print FERRARI2.SCX:  Prints one line, then hangs.  Not in release
	version.

245.
	Up-bow symbol doesn't print?

246.
	Stuff in manilla folder on my bookshelf.

247.
	In Craig's DIALOGS.C there is code dependent on strings being a certain
	length.  For example: str= textptr(tree,obj); i=atoi(&str[24]);

248.
	Tom Calderaro says that it hung while trying to do a huge cut.

249.
	Rehearsal mark on start-of-section bar line at start of line prints wrong.
