...what I DID to PianoCheater             

2012Sep
   made a yamaha_cvp303 devicetype - Yamaha Clavinova
   finishin up SYN's SoundTracker soundbank - SHEEEEEEOISH :/
   now sorting tracks by 1st sound of channel/track's group,sound
   fixed set local control off/on to only do midiins that have mout of same name
      this would leave local control back ON on a song change :(
   new prios:
      finish,release syn;  polish sync2me;  add RandSong;  polish std notation

2012Aug
   redid the DANG videos (a quick stab is all i can afford fer now)
      n modernized pages a bit
   starting a NEW half time project - SYN the second !!
      sick of coding standard notation, so breaking into a COMPLETE
      software synthesizer rewrite - NO more soundfonts, any vestiges of
      fluidsynth will be GONE.  a program change now refs a dir of WAV files
         which can have key,velocity ranges.
      done with loading WAVs, interpolation, mixing, n pan :)
      done with filter, fx
      instead of lfo n envelopes, will use "modWaves" (to be explained later:/)
      Half my time still spent on standard notation.
   MAKe that full time...!!
      drum notes all have their OWN channel in syn now :)
         eventually (once pianocheater/tinkerer can handle it) you'll be able to
         change fiterCut,Res,vol,pan,chor,rvrbSend on ANY drum note
   chord recognition is better - taking bass notes into account more, tossed 9
   accidentals are offset horizontally now instead of piling on each other
   ties are curved and ALMOST right, but, hmmm...  more to go

2012Jul

** release=20120728  (2012 Jul 28)
   argh - most notes weren't being natural'd - fixed
   durations and rests MUCH better
   ties within bar done ok now (for durs like 15/16 in bass)
   QUIte a bit better sheet music now :)

** release=20120724  (2012 Jul 24)
   pianonotes were displaying 1 bar too far resulting in a octave=-1 display :/
   fixed sheet music durs (and beaming) QUITE a bit
      now things are SORT of auto-quantized, but not really :/
      (but, of course, more work to do there)

** release=20120721  (2012 Jul 21)
   made piano background more plain, but still with red line, middlec thicker
   pianonotes show off-sheet red dots now (but not sheetmusic yet:/)
   making GREAT progress with calc'ing good durs and rests and beams !!
      (but, of course, more work to do there)

** release=20120708  (2012 Jul 08)
   pianonotes has red line btw octaves now so it's easier to orient yerself.
   no more wait4me mode;  wait4meEZ becomes wait4me
   flipped loop,trk pics on buttons to show CURRENT mode
      (so they're consistent w/ other buttons and MAKE SENSE:)
   killed another infinite loop bug having to do with paging :/

** release=20120702  (2012 Jul 02)
   rats - when you pick an empty drumtrack to learn, infinite loop :(  FIXED.
   new config option (click on pianonotes display somewhere not on a note)
      at end of a loop, now have option to swap between
         LH=>RH=>... and
         LH=>RH=>HT=>...

** release=20120701  (2012 Jul 01)
   rats - bugs with loops;
      []() now drawn correctly
      loops init right and WORK

2012Jun

** release=20120620  (2012 Jun 20)
   pretty big changes to GUI - stripping it down to just the useful stuff
      should be a little easier to find your way around, although, eh, more
      work to do in this area...
   got a start on rests, but not that great yet
   looping - big changes...
      [] => () show green brackets - always active.  change 1st to ) to NOT skip
      new [] mark loops directly;  no autoLoopin bug spots;  byebye bugs:(
      show ALL loops always;  if loop=y, current one is hilited bold red
      loops CAN overlap  [MainLoopA  [SuffixA PrefixB]  MainLoopB]
         but no loops completely inside other loops allowed
      each time [ or ] added or killed, recalc matching and ignored.
         ignored shows no red line;  else red line;  curr loop hilited;
      song sees (, hops forward to next )
      song sees ] hops back to =paired= [
   identify LH/RH tracks better
      if .mid came from HCX, mark RH,LH tracks and put in wait4meEZ
      also does this if track has right/treble or left/bass in the track name
   MidiConfiger stripped down to make it less confusing.
      it plays to midiout and shows midiin events now (in top window)
      general_midi => DEFAULT
      setting devType to OFF scoots it to end
   sends local control off on opening output dev when inp dev of same name is
      open.  and always just turns local control on when closing a device.
   SETUP
      redone quite a bit for better handling of multiple users and
      making midi file dirs easier to get to from plain ole wihnders
   RepRpt is outa commission for a while - it'll come back pretty soon
   bugfixes
      leaving green now line at end of prev sheet row
      green recording lines in sheets would go way past end of bar
      hold recording line in pianonotes was wrecked
      another inf loop bug in paging sheetmusic

2012May

** release=20120520  (2012 May 20)
   inner ledger lines drawn correctly!!  per standard, but sighhh..
      but a HT track means no inner ledgers,
      NEEDs tracks to be hands seperate to show inner ledgers correctly
   pardon my nonstandardness of the sheet music while I figure out a good way
      to show your recording against the "to learn" notes...:/
   using little LH,RH,HT icons instead of the dumb (non-obvious) keyboard icon
   now green dots expand to flicker when you're missing some
   track/notes splitter can be drug now - SHEESH that was tricky
   whether to view track control is now saved with the song
   corrected scale spellings in sheet music
      which meant handlin double flats - ARGH !!
   TONS of bug fixes :P
      especially would infinite loop OFTEN when setting a track to LEARN mode:(
      bug fixin has been murder lately :/
   moved some of the dumb descrip stuff in Mid2Song to debug stream to keep
      it's junkiness outa the practice file

2012Apr

** release=20120429  (2012 Apr 29)
   sorry for so many releases lately, but it's WELL worth it this time :)
   ONE DANG WINDOW now :)))     it's sooooooooooooooo nice !!
   SETUP now has a taskbar entry - whoops alot of pianocheater apps didn't :/
   REMOVE now asks if you want to delete whole c:\wherever\pianocheater dir
   limited auto transpose to +-24 (used to be +-130 or somethin??)

** release=20120422  (2012 Apr 22)
   made autolooping quit splitting loops on 4 bars so they're almost always
      joined unless there's a whole measure gap
   turned off pause capturing for autolooping - spare it - just wrong keys
   fixed keysig of CM,Am to use flats - oops
   ledger lines were a little messed up - still need to really do em, but later

** release=20120414  (2012 Apr 14)
   multiple column pianonotes and multiple row sheetmusic DONE.
      (well, the basics work, much finesse-ing to do)
   Robotics is DONE - time to kick some butt
   FINALLY got the page flippin worked out - that was TOUGH !!
   sheet music now has juuust about everything pianonotes' got
   lame attempt at ledger lines to get em into the release, WILL improve em :/

2012Mar
   FIRST robotics takin prio...
   squishing max bars in when mixed sheetmusic/pianonotes

2012Feb
   FIRST robotics takin prio...
   got sheet music showin the red x n green o's now :)
   multi-row, multi-col mostly ok now :)

2012Jan

** release=20120124  (2012 Jan 24)
   fix to bug looping - if it can't find a silent spot within 3 bars of bug,
      it just uses bug position
      (again, just a minor update to current version)

** release=20120119  (2012 Jan 19)
   SORRY - just a bug fix release - handles extra-ascii characters in midi
      device names better - you'll still have to rename your unicode filenamed
      midi files to use regular ascii instead of the tildes, etc.

   makin good progress on multicolumn PianoNotes notation
   makin good progress on multirow SheetMusic notation TOO !!
      but much work to do still - probably a good month out :(
   slightly better chord recognition now

2011Dec
   big rewrite - multiple cols of pianonotes, multiple rows of sheetmusic
      sheetmusic gets red xs, green os, pink rec trails, etc, etc
   no more scrolling, pageflips now - so both notations WORK for acoustics.
   transparent green now line now :)
   workin on an algorithmic composer that'll put together infinite random
      songs for practicing sightreadin with

2011Nov

** release=20111107  (2011 Nov 07)
   sync2me is fiiiiiinally usable.
      YOU control time, not the timer within pianocheater.
      Playing a song too fast scoots you to the notes early.
      Playing too slow pauses for ya.
      But tempo changes are recorded to play your rubato back EXACTLY.
      If you messup, pianocheater will hop to where you're actually playing
         on the fewest # "note sets" possible.
      If the song has few repeats you MAY be able to autohop to any part of
         the song just by playing the notes.
         Most songs have repeats and will hop to the first of the repeats.
         In MOST songs, you can autohop +- 2 bars.
         In Some, +- 8 bars.
         In Some very not repeating songs, you can hop ANYwhere :)
   judgement/AutoLoopFinder works (read up below, please).

2011Oct
   STILL tuning sync2me's autohop, but we're gettin' close :/
      also trackin down loopin/judgement bugs :/
   bug fix - pcheater was diein' when a marker had # in it
      (but not a sheet rep#)

2011Sep
   pianocheater draws overlapping notes WAY better now
      (in pianonotes AND sheetmusic displays)
      this also fixes a lot of sheetmusic problems with "held way too long"notes
      and notes of same duration are grouped better in sheet music now
      but still much to do in sheet music notation view
   velocity scaling was messed up - it's aaaalmost PERFECT now
      sometimes the scaling would CRANK some of the velocities to max - feexed
   judgement (autoLoop'ing)
      tossed out manually marked []s
         now [ and ] mark EASY areas to SKIP (drawn in green)
            sorry, but ya gotta edit your songs and reverse the [] areas now :/
         loop=hop goes away
            the "easy [] hops" ONLY happen in wait4me* modes when loop=n
      manually mark loop by clicking juuust to left of PianoNotes right border
         this drops in ladybugs and loops will be autowrapped around em.
      when loop=n, in wait* n sync2me modes,
         if wrong ntDn is hit or
         pause>quarternote,
            time is silently MARKED (for when loop=y)
      when loop=y, loops are created grouping up these times
      with manual "ladybug times"
         groups bad times next to each other but tries to keep loops < 5 bars.
            current loop shows redx, greenlight for wrongKeys, pozs respectively
            (in rightmost area of pianonotes)
         SORTED by worst to "not so bad" according to
            ladybugs sorted by time, then
            # distinct messup times in loop (bad keys weited 2x pauses)
            so manually picked, then WORST FIRST
         timeBar1  hops to loop #1
         timeSect> hops to next worst (not as bad) loop (wrapping back to worst)
         timeSect< hops to prev (worser) loop          (wrapping to least worst)
      SO THE IDEA IS...
         you mark off areas you don't care to practice with green []s manually
         moving ] from end of song back to beginning to practice from end to
         beginning (so most practice is of "climax" of song, not intro)
         play thru song with loop=n
         turn loop=y and cycle thru the loops and practice em.
            if you find a loop particulary useful for practice,
               drop a ladybug in an empty area to
                  expand loop and make it PERManent.
               also, click on a redx,greendot to kill em and shrink loop.
         move green ] a little further back and repeat with loop=n, etc, etc
   key commands for F keys below f10 were messed up - feexed
   took out whole recNext thing - will have step entry recording later :/
   fixed an infinite loop bug in Tinkerer if more than 255 lyric entries :(
   bugfix - song wouldn't be removed from learn list in songlist window
      if it happened to already exist in zDone dir

2011Aug

** release=20110824  (2011 Aug 24)
   making more progress on sync2me's "find any riff anywhere" part ;)
      eh, so far gotta limit it to 2 bars back n 4 bars forward
      it's still not done, but it's time for a releeeEEEASE
   ah RATS, pianocheater's SETUP was broke - MidiConfiger was still ref'ing to
      a.pianocheater.com - blew up on soundfont download :(  feexed.

2011Jul
   (sorry - no release yet till more stuff is stomped)
   reordered the commands (sorry) and added new "arp" and "listen" commands :)
   arpeggio generator
      makes a new track of arpeggios for the song based on chord calcs
      param'd, but pretty static for now, randomization later
         (don't try to practice these unless you're CRAZY:)
         hit cancel to clear out the arp track when it starts drivin ya nuts
   new "listen" command
      IFF loop=y, learn=wait* or sync2me,
         save current learn mode;  set learn=play4me;  hop to [
         on hop back at ], restore learn mode
   mousewheel scrolls time like in tinkerer's bar edit control
      this can get annoying cuz mouse events queue faster than drawing can
      happen...:/
      make sure main window's keyinput control or pianonotes or sheetmusic
         is active.  If songlist is active, you'll scroll thru the songs :)
   show chords mode now puts a big O by bass of chord and . on chordals
      no marking for non chordals within scale
      / on accidentals (outside the scale)
   "to learn" drum notes weren't being drawn right
      still show on "keyboard now" display, but oh well :/
      will need similar "drum now" display eventually
   when paused and not in a wait4me mode,
      playing notes unpauses ya now
      instead of recording a bunch of notes with note on/offs at same time :/
   fixed bug not showing red pause rect in time display sometimes :/

2011Jun
   rats - one last bug tweak (please redownload if ya got it yesterday=6/24 :/)

** release=20110624  (2011 Jun 24)
   first part of SYNC2ME is workin :)
      when playing against "to learn" track(s)
         you don't need to play perfectly.
            you can miss notes here and there and time stays sync'd to YOU.
         your rubato is recorded as tempo changes and notes stay on the beat.
         The display's current time syncs to YOU.
         this is for SAVing a recording with YOUR expression (rubato, velocity).
         unfortunately, if you make mistakes, etc, pianocheater can
            lose where you are - workin on that part now - pretty tough :/
            eventually, you'll be able to play any riff to hop right to that
               part of the song (or where it occurs next)
   added artic to fingering
      . stacatto        1/4
      ' stacattisimo    1/100 :)
      - tenuto/portato  1/2   legerrio is default=3/4 (means lightly)
      > marcato         loud
   added Fz (fortissimo) to dynamics dialogs
   oops - fixed help buttons in pianocheater,tinkerer (new urls now:)
   finally stomped down all the "mode buttons"
      so they only show if there's something to set, and have decent defaults
      and you can turn any window OFF and such stuphs
   stomped many bugs
      RepRpt problems due to not using passive ftp - feexed
      for bmp sheetz, often wasn't starting at page 1 :/
      fixed infinite loop bug that'd happen due to lyrics probs
      loading a practice song always focuses key input control now
         if just listening, songlist (initially) gets focus
      when split notes happen, (a notedown with no noteup or visa versa)
         pianonotes are drawn better now.
      when changing learn mode, it no longer unpauses.
         Seems more helpful to "stay put" when changing learn modes
      also changing learn mode was doing a recWipe
         NOT good when you're listening to a recorded song with learn left on :(
      ALSO when loop=hop, it was doing a recWipe.
         (also NOT good for listening to a recorded song)

2011May

** release=20110529  (2011 May 29)
   FULL SCALE lyrics are DONE now
      shows full 4 lines of hilited text   if lyrics have "returns"
      else a scrolling hilited single line
      adding lyrics:
         copy lyric stanzas off one of the jillions of lyrics sites
         turn on tinker syncing with eye icon in pianocheater,
            now pcheater pastes bar# to clipboard
         open lyrics in text editor
            cursor to start of first line
            when pianocheater plays bar where this lyric starts,
               PASTE - to put in bar#
            scoot cursor to start of next lyric, etc, etc
            put LYRIC in first line of text file.
         open THAT song in pianocheater
            either with winexplorer to get just it or
            open pianocheater, scoot to song JUST before it in list.
         in text editor - select all, copy,
         in pianocheater, pick that song to load it.
         BOOM, your song has lyrics.
   last of the neon over black text is GONE...:)
      some nice big time,tempo displays now
   now preserving song/recording velocity ratio when you play a note not
      matching the "to learn" track events
      used to be resetting it making volume skyrocket on background tracks when
      you played a note not in "to learn" tracks
   song/sound rating dialog height fixed when hiding sound rating

** release=20110524  (2011 May 24)
   ARGH, download song pack thing is fixed now (due to website change:/)

** release=20110522  (2011 May 22)
   pianonotes/sheetmusic drawing (threading) issues fixed
      was causing notes to be underdrawn, overdrawn n such :(
      always draw white notes first, then black (on top) for proper overlap
   PianoNotes
      moved settings out of MidiConfiger and onto PianoNotes window.
         You'll need to re set your settings:
         click on top piano keyboard to pop the settings dialog
      sub-dialogs are auto-positioned now
      dynamic/txt dialog and sheetmusic scribble dialog both have all
         the usually needed markings:
            . stacatto (has to be o to show on sheetz)
            ~ arpeggiated chord
            :( TOUGH (to work on) spot
            [ ] brackets to delimit the "fracture" areas (tough whole areas)
            but you still gotta use other text...
               like a left hand stacatto section, I go:
               LH . -  where it starts     and then | where it ends
               etc, etc, etc...:/
      editing [ and ] now refresh "outside brackets" when loop=y
   RepRpt
      redo for new website format
      fixed bug where it wasn't sending .PNGs
   SETUP
      assoc pianocheater with *.txt files...:/
      more uninstall info
      on vista,win7 doin HKEY_CLASSES_ROOT\Applications\* entries now :/
   toss out "sections" (kind of behind the scenes stuff Steve needed to do)
      only markers now w #2, #3 suffix, etc
      section dialog killed outa pianocheater
      unroll killed outa tinkerer
      (lots of cleaner code in everything now:)
      Txt2Song fixes
         txt2trak=>txt2song with !name=, !sound=, Unroll in .txt file now...
         pianocheater,tinkerer,etc load *song.txt files,
            but *.txt is ok for included files like drumtracks, etc

2011Apr

** release=20110429  (2011 Apr 29)
   PianoCheater
      bunch of (very difficult) optimizations to drawing PianoNotes display
         so it doesn't chew cpu
      so tweaked midi config's options dialog since we don't need refresh thing
         add color notes by scale/off   (by velocity later, too)
      fixed terrible bug in note durations for sheet music
      changing RH,LH in track display wasn't refreshing PianoNotes' color
   MidiConfiger - was resetting wasapi.cfg on each run - which would turn it
      off if syn still had it at last sec :(
      moved it to redo logic
         (if you get a RATS about syn.exe not there, refresh midiconfiger)

** release=20110422  (2011 Apr 22)
   MidiConfiger has a new config dialog for some wierd configs
   (wrench toolbar button)
      show min keys or FULL keyrange on pianonotes screen
      chord position #s can be toggled on/off
      millisec timer period
      refresh speed for PianoNotes window

   a little streamlining of the songlist dialog
      listen only vs. practice songlist radio buttons spec which songist to load
      right clicking dir in win explorer => listen to all songs in that dir
      else if any practice songs => practice
      else if none => listen to songs from last time
      else if no songs from last time, pop songlist dialog
      (no more load/save songlists biz)

** release=20110420  (2011 Apr 20)
   PianoCheater
      labelled bar in pianonotes display
      you can pick new device by click in Play column of track display now :)
         sound will be remapped to new dev, else set back to GM AcousticGrand
      BASSMIDI driver support
         it's lame API won't do sysex so I tweaked pcheater to not send it
         (for bassmidi device only)
         it's XP only - don't bother with bassmidi on Vista or better
            on Vista or 7, it's latency is noticable
            and my SYN softsynth's is way better ;)
   MidiConfiger
      starting it from PianoCheater also exits PCheater now (post save)
         (too many wierd dependencies need to be reloaded)
         and whenever MidiConfiger exits, it starts PCheater
      uses OFF as a deviceType now  (so don't need seperate on/off column)
      always does a save upon command dialog,main dialog exit (less hassle)
   bug fixes:
      SETUP app on XP had some BAD probs I've hopefully fixed
         I suspect people couldn't get past install - especially on xp.
         If anyone notices bugs during install  PLEASE TELL ME!!  grovel, grovel
      chord calc - wasn't using keysig to get flat/sharp correctly
      when loop=y was setting wrong boundary when at end of song
      sheetmusic
         when SheetSync=n, wasn't ever drawin calc'd sheetmusic:(
         natural/sharp/flat not scooted past fingering
         ties on unquantized songs were really messed up - fixed much as i could
      scribble on bmp sheets needed to repos when window resizes
         had only re-resolution'd per screen res - FEEXED
         (except still not behaving right with mouse click biz)

2011Mar

** release=20110325  (2011 Mar 25)
   sheetmusic
      I know I've said it before, but NOW the updating problems are
      ACTUALLY FIXED !!  (that was brutal:O)
      ALL PianoNotes info is shown in sheetmusic window:
         fracture []s, chords, dyna, holdpedal
      green bars on notes show playing duration (kinda like pianonotes)

** release=20110323  (2011 Mar 23)
   pianonotes - wider white keys over where they cover black keys now
   sheetmusic - shows Major/minor by keysig
   when loop=y, loopBgn set to 1st silent time at least a half bar before [
                loopEnd set to 1st silent time after next [ or ]
      thicker brackets show these positions
      so that you can practice lead in and lead out of the "drilled" section
   recording "takes":
      from songlist dialog, create new song - pick 4_4_4.mid
         (make other songs for other timesigs with drumtracks, etc similarly
          these are stored in \pianocheater\song\Init\ dir)
      when song has no "to learn" tracks and Loop=y,
         it assumes you're recording live and plays one bar before the [
      you record from there till you mess up.
      If you record no notes, it loops back and pauses,
      else                    it replays what you've just recorded
      recNext command scoots [ to last note
         if already on last note, (pressing it 2nd time,etc)
            it "backspaces" killing notes to the previous silent spot
      make SURE you switch rec track back to non-recording before exiting song
         or that recording is GONE :(
      this recording mode is still almost as hard as playing the song live.
         so step entry will be coming along some day.
   SongList screen
      after adding a new song, shows it in stats window too for editing
      keeps pos in practice list (right side) better and
      keeps curr selected song refreshed in stats window
   bug fixes:
      SYN was havin probs with drum pitch (snare would play at too high a frq)
      just playing a song in Recorded\ made a new junky .mid with today's date
      Cmd NtUps (unpaired noteup events) needed to be filtered
         8cDn 4f#Dn 8cUp 4f#Up recorded last 4f#Up :(
         simlar prob on loop end with notes down - FEEXED

2011Feb

** release=20110224  (2011 Feb 24)
   rats, bug fix to view button (piano/sheet=>sheet/piano=>pianonotes=>sheetmus)
   and sheetmusic still does have problems, but it's usable IF the song is
      quantized already.  more fixes to come.

** release=20110223  (2011 Feb 23)
   have loop=y,n,hop now
      n   - play whole song as usual
      hop - tough areas marked with [ ]
            play tough area, autohop over easy parts to next tough area, etc
      y   - drill a tough area from [  (picked by timeSect<,> commands)
            to next ] or 2nd [  (to practice into next section)
            eh, email me for a better explanation.  i'll get it doc'd eventually
   gave pianonotes dynamics dialog some [ ] :( buttons so ya don't gotta type em
   sheetmusic notation window is MUCH better behaved now
      It should finally be USEable
      bugfixes
         lots of "refresh"ing probs fixed
         should always be correct height for all notes in song now
         hacked in some fixes to problems with
            gui and background thread both stomping on windows :/
         found wrong keysig sometimes, and not eliminating accidentals correctly
         divide by 0 sometimes during bar width calc :(

** release=20110214  (2011 Feb 14)
   oh the awesomeness of bein' laid off :)))
   added view=PianoNotes, SheetMusic, Piano/Sheet, Sheet/Piano
      and these AUTOMATICALLY size the DANG windows so this is no longer a
      PAIN in the BUTT when you switch from one hand to other to both (h)
      Or when you change which windows you want.
      Now they're auto sized NICEly :)
   added heel U and toe ^ to fingering for organ feet tracks
   made an app to help me create sound.txt files for diff midi devices easier.
      sounder - devtype\sound.txt maker
      load progch bankhi banklo CustomSoundname
      save gmname\custom_soundname progch bankhi banklo custom_soundname
         except 1st custom_soundname of gm group (progch)
         has no \custom_sn suffix (maps to pure gm)
   bug fixes:
      Song2Mid was putting in too many programchanges.
         this would occasionally cause empty tracks to get added on EACH load in
         PianoCheater,Tinkerer.  Over and over - an extra track each time:(
      Tinkerer progchange control was drawn as line graph instead of ` mark:(
   took out Sync2Me mode completely - it's an idea who's time has GONE :/
      it's good stuff will be incorporated into wait4meEZ eventually

2011Jan
   added a default ascii keymap to install
   new command - hand - to swap which tracks to learn (marked w LH,RH prefixes)
      between learn left hand, right hand and both
      it's a handy command (get it?  SORRY!!)

** release=20110108  (2011 Jan 08)
   possibly last release for 6 weeks - starting FIRST Robotics Team 1778 :)
   sheetz scribble - click on scanned sheetz to add "scribbles"
      buttons for quick stuff (fingering,loudness,markers)
         else you enter whatever text you want
      click and drag to move em.   right click to delete em.
   chord notes are marked now
      1 = bass of chord.  2,3,4,5 mean 2nd,3rd note of chord, etc
                                                         (shows chord inversion)
      x means non chord outside the keysig
   png/bmp sheets would die with "out of memory" cuz I wasn't freein bmp mem
      fixed!!
   track mode has pretty lil icons now (green play tri, red x mute, keys learn)
   now all piano tracks are colored per LH / RH prefix L=blue,R=red (drum=green)
   right clicking track name (while NOT editing) toggles prefix to RH>LH>none>
   defaults learn mode to play4me when .mid not from pianocheater
   remembers last learn= mode when all tracks go to non-learn
      restores it when any track goes to learn
   sheetmusic and pianoroll windows now do pc keyboard commands
      if they have keyboard focus
      (don't NEEd to focus on little icon by songlist in main window any more)
   Tinker wasn't redrawing screen correctly - fixed :/
   Took out sync2me mode - just not ready for prime time :/

2010Dec

** release=20101212  (2010 Dec 12)
   BEDBUGS !!   These bugs are all fixed:
    - problems with Vista,Win7 Conexant cards still
    - when editing fingering,dynamics on pianoroll screen,
      not showing them till a refresh
    - window height sizing wrecked due to new tracks list
   And saves sheets window dimensions relative to screen w,h so moving to a pc
      with lower,higher res looks the same (during piano lessons:)

** release=20101211  (2010 Dec 11)
   scooted keyboard to top with keysig,octave,midc,hilite symbols
      label octaves at G too
      red xs,green lights stay at "now" - green line
      and fingering on top of green light
   track control much glitzier now
      can edit track name, sound directly now instead with dialog
   i think I've got color stepping and ranging nailed finally
   took out UPD.exe cuz of hassles with virus checkers - no auto checks no mo :(
   fixed WASAPI check so people with lame Conexant soundcards can still use
      PianoCheater on Vista+ - those things don't do WASAPI:(

2010Nov

** release=20101106  (2010 Nov 06)
   i think SYN.EXE is finally ok !!!
      we lose soundfont hardware support, but gain softsynth capability
      but, ya gotta have Vista or Win7 - sorry - here's an excuse to upgrade? ;)
         but it WILL work well on a plain jane soundcard !!
         (I'm on a crappy RealTek and it works GREAT)
      I dump a song's full bank of sounds at once now
      (WAY faster than writin' to soundblaster api)
      currently still doin 16 bit although 24 bits are in it's future
   moved timer to syn.exe when vista or better - xp uses mm timer still
      that's some HARD CORE code there;)
   fixed up a way to SEE what's happening during the FRACKIN COMPLEX
      control mapping process:  (sliders, pedals, knobs, buttons, etc, etc)
      create a non empty file called {whereverYaPutIt}\pianocheater\rats.txt
      download DebugView from
         http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
      and run it during pianocheater sessions.
      NOW you can see controls being processed by pianocheater
         and how the mapping occurs :)
         (and maybe a few more informative things in the future)
         rename or delete rats.txt when done debugging - it SLOWs things down:(

2010Oct

** release=20101002  (2010 Oct 02)
   calc'd sheetz
      got ties in there now (just straight green lines, not too pretty, oh well)
      STILL need to get NONquantized songs to show up ok :/
         but SYN.EXE awaits!!  ;)
      showing bar #s now;   staff lines stop on last bar now (don't keep goin)
      fixed bug when right partial beam kills rest of bar
   new fingering,subbeat format to be more compat w other editors :(
      append note,num/den to current str (,4b# or ,3/16)
      add check for correct prev event
   fixed bug in pianocheater's save when nonexistent device has no sound :/

2010Sep

** release=20100922  (2010 Sep 22)
   page flipping on calc'd sheetz WERks now
   manual and sync'd - when synced, green noteheads show playin notes!
   Ash helped me find an insidious bug with storing fingering and subbeats in
      midi files - other sequencers can change these events' order so I'll
      need to rethink how I'm storing these.  But for now, I'll just check that
      the previous event was indeed a note or timesig before STOMPing on it.

** release=20100916  (2010 Sep 16)
   KC sez the timer's 2x too slow - try on xp at home - good grief :(
      back to oooole multimedia timer :/
      Can't even get AT ole DMusic timer now - THANKS microsoft :(
   beams split on beat now
   fixed grid display on calc'd sheets

** release=20100915  (2010 Sep 15)
   new timer may not ALWAYS be capable of 1 msec dep on machine :(
      fixed new time calc to take less capable machines into account
      might fall back to DirectMusic timer...:/
   put Rand() back in which i had to take out for 9/12 release to compile :/

** release=20100914  (2010 Sep 12)
   fixin stupid .dll needs of vc2010 - compiler/linker settings from hell fixed
   new win2000+ timer
   fixed green lines during sheetz flipping (sometimes)

** release=20100912  (2010 Sep 12)
   move to vc2010 express,resedit too:/
   got ledger lines in (just on 4c, 2c-e, 4a-5c, else usin 16va/b)
   accidentals are displayed correctly now
   keysigs/timesigs are followed religiously now in pcheater
      (tinkerer still needs to edit em perfectly-er)
   startin' on beams!

2010Aug

** release=20100822  (2010 Aug 22)
   fixed x magnification bug causing a lot of songs to show NO sheet music
   got x offsetting of stems on same track same time in
   if track name starts with R, stems below middle c will always go up
                             L        above                         down
** release=20100814  (2010 Aug 14)
   fixed bug in MidiCfg - buffer for downloading devices wasn't BIG enough :(
   live transpose (+/- halfsteps) stored w/ song and gui'd now
   sort of "bracketted up" keysig symbols a bit
      also, if keysig happens for notes "coming down the pipe",
         solfege colors will swap to the new keysig/scale (on future notes)
   GOOD start on stems and time spacing for sheet music display!

2010Jul
** release=20100728  (2010 Jul 28)    SORRY !!  :)
   if SETUP can't find txtfile in registry, just forget those file exten assocs
      (instead of SETUP just dieing with a confusing error)
   stomped the bug makin Tinker&bmp sheet display flicker 16X during bar refresh

** release=20100727  (2010 Jul 27)
   RATS - velocity adjusting happening on recording tracks :( - feexed :/

** release=20100726  (2010 Jul 26)
   added background track noteon velocity adjusting (per recording) to wait4me:)
   HAD to change color scheme again - keysig and note roll looks WAY better now

** release=20100724  (2010 Jul 24)
   scale colors now and cute little red Xs and green dots
      colors are kinda CRAZY now, but -kind- of cool...;)
         jury is still out on whether it stays in future note area...
      so tonic is always red, dominant tone is cyan, leading tone pink, etc.
   have a start on standard notation - if song has no sheet .bmp,
      clicking sheetsync button shows (really lame so far) standard notation :)
   time<sect now works for loops similar to time>sect now
   loop docs on TrickyParts page now

** release=20100711  (2010 Jul 11)
   too quick to release: loop>sect didn't work if on very START of curr loop :(

** release=20100709  (2010 Jul 09)
   Got start for a chord labeler.  More to do on it, but ok start
      if bass is #/b, use #/b per ksig
   bugfix - songlist dialog's Copy2Learn wasn't making sheet dir :(
   now "ToDo!" is cleared when song has some practice notes
   oops - only way to reshow a closed sheet window is to reload song :( - feexed
   fixed bug that'd put Learn window off screen (occasionally) :/
   start of a sheetz display of midi - oh noes...  got scale calc'd,
      standard dur symbols next...
   sheetsync and learn mode => buttons finally
   fingering shown ON kbd now (instead of being obscured)
   save sheetpos window in .mid now
      (no more windowpos.cfg in .bmp dir needed and used for calc'd sheet wndo)
   looping tricky sections
      mark sections with dynamics comments (right area of fingering edit screen)
      [ means start tricky section
      ] means end tricky section
      if Loop=y, song hops to 1st tricky section and loops it
      use time>sect to hop to next tricky section
   fixed songlist bug - when saving a non prac.songlist,
      it'd still recalc and go back to prac.songlist
   middle c has a cool little symbol now "naka"

2010Jun
** release=20100617  (2010 Jun 17)
   Jammed a lame-ish foreign language detector in SETUP - a hack, but oh welllll
   shortened MidiConfig'er's CmdKeymap config screen (for teeny screens)

** release=20100614  (2010 Jun 14)
   RATS - something wrong with SongDL getting it's songpack argument
      it's empty sometimes :(  fixin THAT now :)

** release=20100613  (2010 Jun 13)
   fixed leftmost white note x offset problem
   RATS - bug fix - SETUP => MidiConfig'er => death cuz no device.txt
      shows "died" error message cuz check happens before initial creation of
      device.txt - fixed n rerelease :/

** release=20100611  (2010 Jun 11)
   redid a LOT of docs and screenshots - bleh :P
   PianoCheater/MidiConfig'er
      now you can map regular pc (qwerty) keys to edit commands in MidiConfig'er
      in pcheater, press tab to move from songlist to "keyboard inputter"
         press esc to toggle between command layout and note layout modes
         note layout plays notes from pc keyboard,
         else does command map (shown in help screen).
   PianoCheater
      new SongList dialog button to create a .mid from scratch
         (copies a template midi file to Learn dir and names it)
      copy2learn autoconverts .song+.txt => .mid now
      when moving a learn song to rep/zDone, asks if you wanna automark it DONE.
      keysig wasn't displaying correctly sometimes
      timesig wasn't showing correctly on main screen sometime due to subbeats
   MidiConfig'er
      made DeviceType downloader :)
      devictype names are now in the FULL manufacturer_model format
         GenMidi => general_midi, SFont => soundfont, cp33 => yamaha_cp33, etc
      have a FULL precreated downloadable soundfont device now !!
      ripped out sound, ccout, and global cc editing
         spare it, just doc .txt file format.
   RepRpt
      completed my FULL repertoire into midi files now!  yeah!
      a little prettier (some might say uglier:)
      uses userinfo txt now
      collapsible sections now (but links can't find a collapsed section dest)
   SFontEditor
      SFontBank that compiles \Device\soundfont\sound.txt
      NOW happens when PianoCheater boots it (cuz SF2Rip has been run in past)
   Mid2Wav lives again!!  bugs w/ timesigs feexed:)

2010May
** release=20100523  (2010 May 23)
   PianoCheater
      songlist dialog now has "song pack downloader" :)
      RepRpt can upload ALL the songs in your Learn and Recorded dirs !!
         (including sheets/midis/recorded mp3s!)
         giving you your own repertoire website :)))
      sheet scrolling was too harsh on my eyes - changed to "flipping"
         one bar before page change, half of new page shows on top of current
         with a "half frame" showing if it'll be scooted down
            or other half is just drawn with no scoot needed
         this needs to be DOC'd...:/
         manual scrolling just does a straight page left/right

** release=20100506  (2010 May 06)
   PianoCheater
      new learn=wait4meEASY(no hold)  don't need to hold notes, just hit initial
         note ons - for those messy held note songs and so you can play slop :)
      now stamps pract stats with today upon 30 recorded events.
         for both midi AND sheet songs now.
      new song stats dialog within songlist dialog for editing song stats.
         practice, daily notes, revisit, default tempo, etc
         click on a practice song to get to it.
         tossing out top level descrip dialog since stats dialog works better
      make the vertical text (lyrics/dynamics) in learn display a little bigger

2010Apr
   Tinkerer bugs - copy/paste - drums not recog'd, up velocity of 0 not loaded
   PianoCheater
      track mode now toggles from off=>?=>#=>off  (new order - easier for learn)
      Learn window size now saved in .mid and NOT init'd too skinny
         still need to size it to save pos tho :/
      wait4me now shows new notes to press as green
         even if already held down from prev notes (instead of blue)
      fixed bug not displayin leftmost key to press

** release=20100404  (2010 Apr 04)
   best release EVER !!  :)
   pianocheater -
      BIG display changes - now looks AWESOME !!  keys are beautifully hilighted
         but, it's kinda, umm, LOUD :/
         More to do on this...  But it's pretty cool
      also shortened lastpracticed comments
   tinker - copy,append,paste,replace funcs and new clip text format for perl
   song2mid/mid2song - fixed bug w timesig subbeats

2010Mar
** release=20100321  (2010 Mar 21)
   Adding keysig and timesig-subbeat support
      pcheater shows keysig now, uses timesig subbeat instead of song descrip sb
      tinkerer can edit em (and finally shows subbeat)
   sync2me mode will now search whole song when 4 NtDns don't match next notes
   now song can have revisit= in notes and practice list will be sorted special:
      normal sort by filename, but if in Learn or Rep dir,
         max pract date is picked out of notes
         revisit= is picked out of notes
         if song should be revisited, it's sorted to top
         else just sorted by max pract date so song practiced longest ago sorts
                                                                          to top
      this way, pianocheater keeps track of which song to practice FOR you.
   made fingering window pop NEAR where you click
   RepRpt cleaned up a bit and now lists matching Recorded\* and source=

** release=20100307  (2010 Mar 07)
   pretty piano keyboard in learn window now...:)
   learn window shows drum notes too
   click in learn display on a note to EDIT FINGERING now :)))
      and on right side to EDIT/insert/remove DYNAMICS NOTES
                                               (same thing as lyrics for now...)
2010Feb
** release=20100228  (2010 Feb 28)
   new Learn=Sync2Me !!
      bg tracks follow you in the song no matter how uneven your tempo, etc.
      bg track velocity will match your recording velocity
      tempo syncs to the tempo you're playing live
      NICE for when you get notes,rhythms down and want to work on EXPRESSION
   fixed bug where wait4me was LEAVING vol=0 on bg tracks
      so if you ever toggled learn through wait4me you'ld never hear bg tracks:(
   and my dang DscUpd func was putting in dup learn= and sheetsync= lines :(
   got start for hold pedal display in learn mode
   fixed prob w learn display when held notes go across sections in REC tracks

** release=20100214  (2010 Feb 14)
   fixed bugs
      quite a few problems found with control mapping
         most notably hold pedal causing tempo to go SUPER fast :(
         control handling is MUCH more stable now.
      always reloaded practice\* even if saved non prac.songlist :(
   vastly improved Die()  you'll see ;)
   PianoCheater's SongList dialog has new "repertoire report"
      at least it's a start...
      SongList dialog now STOPS song, cuz to delete/rename a prac song that's
         already LOADED won't work cuz it gets saved w/ old name again later:/
   Tinker
      fixed broke print preview - STILL memory hoggin', but oh well :/
      NoteFix now dumps all events to DbgView: so you can hunt for problem notes

** release=20100201  (2010 Feb 01)
   fixed bug in Mid2Song adding extra tracks if a "from pianocheater" .mid
   tweaked docs some more

2010Jan
** release=20100121  (2010 Jan 21)
   PianoCheater
      ? tracks are colored in track display now to match learn mode display
      new learn=play4me that solos the ? tracks while showin em
      so now off=> play4me(preview difficulty)=> show2me(rec live to tempo)=>
         wait4me(learn notes,fingering,rhythm)=> sync2me(MY tempo,dynamics)
      fixed bug showing extra recorded notes in learn mode
      fixed bug in tracking current section of sheet music
   Tinkerer
      when notes are colored by track,sound this shows in colored tracklist now
      fixed NoteFix to elim completely dup notes while fixin
   pointed PianoCheater,Tinkerer to new help web docs
   SETUP - new checkbox for OPTional file associations

** release=20100110  (2010 Jan 10)
   stomped MAJOR bug in Die()
      if anything doesn't work in SETUP_PIANOCHEATER.exe, Die used to go into
      an infinite loop and die silently leaving user to think everything's cool
      And since setup didn't complete, none of the apps will run without a Die()
         which means THEY go into an infinite loop and die silently   :(((
      STOMPED the bug - MUCHO thanks to Bob Felice for his testing !! :)))
   good start on sync2me :)  But still bein' debugged so beware ;)
   PianoCheater can edit Practice songs list gui-ly now  (more work to go tho)
   finally gave Tinker a toolbar button for NoteFix
      NoteFix can now shrink note duration and scale velocities quieter :)
   rats - bug in Mid2Song always mutes DrumTracks in last release - feexed
   fixed Mid2Song bug (for saving .mid) - 2 drumtracks=infinite loop - feexed
   can't change page scrolling to happen in ONE beat per user request
      toooo fast for MY eyes to follow - maybe config'able later...:/
   fixed some notes that disappear in wait4me mode when noteon
                                                   went beyond oldest time shown
   toolbars now have a full 256 glorious colors;)

2009Nov
** release=20091119
   if you're installing from a PREVIOUS VERISON of pianocheater,
      you'll NEED to copy your files in "whereever\Midi"
         to "whereever\PianoCheater" =after= new install
      and NOTE the new dir names in the PianoCheater dir
         without _ prefix and so much dir nesting now :/
   tossed out worthless "oops" command :/
   # (mute) for drum track - wasn't loading back into pchtr/tink

2009Oct
   took out SetThreadExecutionState (that turns off screensaver)
                                                         for win9x compatibility
   major redo of piano and midi docs

2009Sep
   moved .cfg files to {PianoCheater}/device/etc dir so i can coexist with Vista
   stomped the crash during app close
   Wait4Me mode bug fix - wasn't echoing controls during pause
   lyrics now show in wait4me display so you can stick dynamics in there
   Sheet paging fixes

** release=20090926
   changed Die() since auto-email doesn't always work :(
      (Now opens an html error file to copy/paste into whichever email app)
   fixed Mid2Wav handling of drums, etc
   fixed manual forward scroll to go in increments so midi can go out
   fixed tinker bug when moving notes (moving too many to wrong spot:()

** release=20090914
   SFontEditor's toolbar now runs new Mid2Wav app :)
   Tinker bugfix - going into track/drum/control dialog n hitting InsRow = death

2009Aug
** release=20090822
   fixed up MidiConfig'er to refresh EXISTING device list.
      (no more REtyping your device names upon adding devices, etc:)
   bug in MidiCfg picking CCMap column
      (possibly affected other areas too - that use my "table" class)
   Rats - drum clips weren't working since I added an extra dir :(
      oops - and Txt2Trak still had _Txt dir in it :(
      eh, might as well release again :/

** release=20090816
   setup.exe wasn't using gui picked program files path - fixed
   UPD.exe now pops pianocheater.com's releasenotes
   renumbering octaves so 4 is middle c, not 5
      allll the song files in .txt format needed to change :P
      aaand the screen shots :P
      aaand code everywhere...:P
      aaaaaaand SF2 ripping and glueing :((((((((((  which means re-rip all SF2s
   minor bug fix - rec>Dev was cycling correctly.
   my dang gpp3 pedal was sending rogue HOLD events and freakin me out >;(
   much work on Mid2Wav, but no dice yet :/

2009Jul
   renamed update.exe to UPD.exe to get around stupid vista UAC :(
   much work on Mid2Wav, but no dice yet :/

2009Jun
** release=20090629  Big huge bug in 20090628 :(  fixed.  gotta rererelease
** release=20090628
   rats - fixed broken tinkerer sync'ing
   yikes - fixed memory corruption bug in RecIns - a biggie - better rerelease

2009Jun
** release=20090618
   fixed help toolbar button links :/
   glitzed up ditty's track listing
   MidiCfg/PChtr can now map button controls to do_<EdCmd> functions
      and they show in help window
   fixed sheet music sync bug when hopping bars
   gave sheetsync a shared gui button w/ lrnMode
      since songs will have either one or the other, not both
   now if apps die, apps can auto email me (if ok'd by user)
   new OOPS! command kills current bar rec events, hops back to prev bar
      seemed like a good idea, but:( it's pretty tough to hear bar
      boundaries and pick up again - rats - may take out...

2009May
   docs galore updated - bleh :(   FINALLY, back to writin' code :)
   manual sheet music turn cmds for when you're not yet ready for a metronome

2009Apr
** release=20090418
   ok, time to STAMP release versions now (yyyymmdd format)
   first PianoCheater release!!
   somewhere around 3/4 of the way to 1.0 (first commercial release)
   stabilization/debuggin' period while i
      build new PianoCheater site, docs refresh - ARGH!!!

2009Mar
   Ditty=>PianoCheater
      scanned .bmp sheet music display - per line or per half page
         make dir with same filename prefix as .mid file
         put 0001_0004.bmp file for each scanned page
            0001 is 1st bar on page
            0004 is 1st fully shown (not chopped by page split)
               bar of 2nd half of page
         or if you have a .bmp per sheet music line, just name as 0001.bmp
      fixed default tempo which SHOWED 120 by WAS 110 for songs w/out tmpo cc
      descrip text for autogenerating music_practice.html:
         notes yyyymmdd Accomplishments/ToDoNext
         pract yyyymm dd dd dd dd dd
         (also)
            subbeat=3  (etc)
         opening descrip dialog auto-stamps notes,pract if today ain't there
         shutting it wipes any empty notes
   Tinker=>TinkerER ;/
      is now single instance ONLY for PianoCheater invocations.
         You can bring up several tinkerers now,
         but PianoCheater only ever has ONE tinkerer open to show curr bar, etc
      Help toolbar button now repairs unpaired note events
         (on w no off, off w no on)
         dorky UI, but I'm in a hurry ;(
         (and still need to check for note overlap)
         makes teeny 2 click notes, but at least you can del/edit em now
      if no initial file given to load, loads song\_prep\init.mid  if it exists
      repeating bar report was broke - fixed
      DrumTrak is part of tinkerer now ("Track Stamper" toolbar button)
         and can stamp bass tracks and other tracks, too now
      Txt2Trak (behind the scenes now - pchtr and tink call it)
         now does simple chords - trailing + for major,
            +- minor, ++ aug, +* dim,
            +7 dom7, +7- min7, +7+ maj7
            +6 6th, ...
   PSetEdit=>SFontEdit
      it runs SF2Lst, SF2SFont and SFontBank from it's toolbar now

2009Feb
   complete overhaul of c:\MIDI directory structure.
      PLEASE rename your existing c:\MIDI dir to, like, MIDI1 =before= install!!
   bug fix in ditty
      it'd hang at end of song sometimes
      resizing section dialog didn't repaint right
      bug in init'ing controllers to chase
   bug fix in tinker
      copy and kill didn't handle markers/lyrics correctly
      copy had a bug scooting notes to right during copying
   tinker now has an "unroll" function to dup all repeated sections
      to prep such song for recording so you can record 2 verse variations, etc
   ditty
      scrapped "kill future rec notes" during time hop
         rec notes HAVE to be killed by command now
      song always loops back to start if any recording is goin on
         (or loaded from compose dir)
         learn @ mode's auto recWipe at end of song is off for now
      practice songlist always re-finded from song\_Practice dir now
         (minus done\ dir)
      recSave of a _Practice dir song saves to _Recorded
         changing songs/exiting/etc re-saves _Practice\*\*_rec songs
      learn mode is at song level now (off/wait/show) saved in descrip for now:(
      track mode is just whether it's a learn track (off/mute/learn)
      muteAll won't change REC or ? tracks now

2009Jan
** release=20090128  Last release of Ditty.  Long live PianoCheater!! :)
   docs - aaaaaugh!!!  (MidiCfg/Ditty commands/learn mode are better now)
   death in vista :(((  Actually due to buggy code for "device already grabbed"
   redoin' learn mode display in seperate window
      resizable now and no more flicker
   fixed up autokill of rec events to kill from HopTo time till
      end of last sect pre Hop
      (optimising autokill to NOT kill off useful rec'd notes if song is sect'd)
   any looping can be done via sections
   changed green hilighting to middle of note for prac display
   now we got STEP and BEND ModifyCommands in MidiCfg's EDIT mapping so
      programchangers (that step from 0..#tracks+1) and pitchbenders can be used
   now have edit KEY - no more "help mode" - help window pops when edit is on
      more docs - auuuuuuugh!!!
   added commands to edit fingering while in @ mode.  last key gets edited.
      eh, too painful to hop to next time to edit fingering for: yanked it out:/
   bug fixin w time hopping in learn modes, and hopping to start at end of song
   Tinker can transpose now :)  all notes btw bgn/end bars on sel'd tracks
      (doesn't do drum notes, of course)
      to transpose a small set of notes, you'll need to move em to their own
         track and select just that track, transpose and move em back
         (till I think of a better way to select subsets of notes)

2008Dec
   made ditty,tinker show beat/4 subdivisions
      hardcoded to /4 for now, config'd later...:/
   more fixes to learn mode - workin better now
   learn mode goes across sections now
   fixed recording bug that would throw ditty into an infinite loop
      (rarely, tough to find, but STOMPED)
   oops - some bugs in songlist editing part of ditty - feexed
   and songlist is now saved across sessions (even if using prac.songlist)
   fixed some probs in learn mode at time=0
   renamed TRAK ctrl back to EDIT
   added STEP ccMod to allow progchange to be used for EDIT ctrl
   made ditty not die when UPDATE.exe doesn't exist (some virus checkers whine)
   added subbeat= to song descrip as a hack to allow subbeat=3 (defaults to 4)
   made toolbar tooltips BIGGER and made em NOT go away
   fixed some probs w subbeat lines in learn mode not showin right
   changed "to play" note hilight to green instead of yellow
   made red dot in pause bar for note to hit (to turn green)
   fixed bug with sections during learn mode display

2008Nov
   learn mode (aka spoon feeder, aka pianohero) fixed up pretty good
   redoin gui and ditty's live editing via the keyboard
      major docs overhaul time again :/
   made song picker, fixed randomness to not dup pick
   for AddTrack's default sound, you can set it sneakily via making a file in
      program files\Ditty\Ditty_Default_Sound.cfg (with the sound in it)
   hopping back in time while recording erases recorded events that are now
      "in the future" so you don't record notes on top of notes.
      It's done silently, but it's kinda necessary...:/
   implemented first cc "mod" command - FLIP swaps from 0..127 to 127..0
      in MidiCfg's input map
   in learn @ mode, now loops back to start at end of song

2008Oct
   Well, QUITE a few bug fixes :(  :)
   Starting work on PianoHero mode...  toggle mute to ? and check it out...:)
      (click just left of first char of track name:  space => # => ? => space)

2008Sep
   MAJOR RELEASE with full controller mapping, device types, way less ID #s
   taking .song/.trak files OUT of the users' world for simplicity
      just .mid and .song/.txt now :)
   redid docs - PHEW !!
   .song file format changes - you may need to read the docs again, sorry :/

2008Feb - 08Aug
   a LOT of WORK...!!

2007Dec
   MAJOR surgery to ditty and MidiIO.cpp and all kinds of stuff.
   MidiGuy gets sucked into the hellish Song class...:(

2007Nov
   STABLE RELEASE NOT GONNA HAPPEN for a while - tons of code to rework
   finally got a decent table editor setup goin (w/ some minor ui annoyances:()

2007Sep
   putting off fancy controller remapping biz to get a stable release again :/
   edit ctrl (prog change) can be on any channel now (on 1st inp dev of MidiCfg)
   any song in *Compose* dir turns on _rcrd now
      (so next song in playlist isn't hopped to at end of song)
   fixed bug w changing track sound - changing to an existing sound where the
      old one was used by other tracks broke the other tracks
   took out spoonfeeder for now - just not ready for primetime...:(
   took out mastervol,balance,tune in prep for real controller mapping

2007Aug
   redoing MidiIn and MidiOut classes and MidiCfg app
      for better controller mapping and handling of RPN,NRPN
      well, thinkin bout it anyway...
   when MidiIn dev ain't on or when in use, just do nothin.  pop a Hey()
   Finally biting the bullet and converting docs to "shazware format".
      docs are now going to be only on the web - slims ditty.zip to 265K :)
      doc'ing my install/update details

2007Jul
   MidiCfg,Ditty,Tinker(all midi cfg using apps)
      had to change midi config settings - can't store multimedia ID in config
      file since it CHANGES when usb midi connection are added and removed :(
      Make =SURE= you run MidiCfg -first- if you're updating Ditty
   EditKey is now TOP key for editing on midi kbd and
      only on -1st- midiin dev in list

2007May
   DrumTrak
      automatically does Mid2Song/Txt2Trak and cleanup so you don't need to keep
      the .trak files around

2007Apr
   new docs for piano practice :)      http://shazware.com/piano
   Ditty
      toggle mute (#) to ? to mark a track to learn
      keyboard is displayed and song pauses until keys are
      pressed/released to match
      (not sure this is useful...)
   docs update a bit for Txt2Trak

2007Mar
   Txt2Trak
      repeat count at end of a #include .txt file includes it that many times
         ex:  #DrumPat\Click4 80       (will include it 80 x)
      new grace note dur of g
         ex:  g 5e@
            will create a legato 32nd note ENDing just before curr time
            (and won't bump time at all)
      new rolled chord via ~ prefix on dur
         ex:  ~q 5ceg6c
            will start the e a 64th note after the c,
            then the g a 64th after that, etc, etc
      tweaked V0..9 to map to vel=1-127
         not 0-127 - noteon velo=0 is defined as noteOFF by midi
         0,1,2,3,4,5,6,7,8,9 => 1,15,29,43,57,71,85,99,113,127
         note sure how to map PP,P,MP,MF,F,FF exactly...?
            PP,P,MP,MF,F,FF => V2,V4,V6,V7,V8,V9
   Ditty
      looks for filename.txt matching .song file and calls Txt2Trak for you
         and kills off .trak when done
      squashed another sections time calc bug - was calcing tsig end time wrong
      note spoon feeder is done
         but i dunno if it'll be useful after all :((

2007Feb
   Ditty
      started dev on "note spoon feeder"
      mark track as a "pracTrak" via mute mode (normal->mute->prac->normal->...)
      when pracTrak, live keyboard displayed with next press/releases to do
         (WAY too fast to humanly follow, but it's a start)
   Tinker
      song files can now store FINGERING !!
         hover over MIDDLE of note with songcontrol in focus (==> is green) and
         then mousewheel changes fingering :)   (similar to how you edit velo)
      has PRINT PREVIEW now :)    (major addition to StvLib :)
      prints song title n page number now
      shows sound+dev assoc'd w track in check'd listbox now
   Txt2Trak - new fingering syntax: append [5] to the note.  ex:  q 5e@[23]
   DOCS refresh - Eeeeeyuck !!  i hate doin that :P
   Mid2Song/Song2Mid
      saves fingering in .mid now  (dang 2/28 one last bug fixed for this)
      non GM sound names preserved in .mid and restored to .song now
      preserving Copyright now (except for that dang non-ascii circle-c char)

2007Jan
   new Str class   (no functional change - just easier for me - no more LIMITS:)
   UPDATE - new app that checks (only) weekly for a new version of ditty to D/L
            when booting ditty (no background task stuff!)
      sees if local version.txt is over a week old
      if not, exits
      if so, update version.txt's date to today (so no bugging for min of a wk)
      D/L 10 byte version.txt from shazware.com
      sees if shazware.com's version.txt is newer than local version.txt
      if not, exits
      if so, asks to D/L - if no, just copies new version.txt to local
                           if yes, downloads new ditty.zip and exits
   Ditty/Tinker
      can load shorter times for lyrics,markers (ex:  1 = time 0, 1.2, etc)
      fixed time bugs w songs having tsigs not starting at time=0
   Tinker
      color note by sound, too :)
      right drag to delete or moveTrack events within boundary
      (and fixed bugs - and some more)

2006Dec
   Tinker
      color notes by trakno as well as velocity now :)
      can save .mid format now  (via new Song2Mid.exe)
         when saving specify .mid file ext to save in midi fmt
      can edit note on and off velocity via mousewheel while hovering
      fixed some marker/lyric editing bugs
   Mid2Song tweaks
      port meta event fixes
      removed track# from track names
         otherwise after multiple mid2song+song2mid's track names grow :P
   took trk# out of marker events (to be like lyrics)

2006Nov
   startin Song2Mid finally...  bleh :P
   Tinker wasn't sorting quite right for notes that end and start at the exact
      same time (which shouldn't really happen, but oh well, that's .mid for ya)

2006Oct
   FIGURED OUT AudigyNotebook BUG!!! - can't reuse filenames for calced .SF2s!!!
   fixed Ditty/SFontSet to work w AudigyNotebook - ahhhhhhh :)

2006Sep
   just piano practicin

2006Aug
   Tinker can print now!
      prints columns of piano roll bars with notes oriented as on keyboard
      looks pretty good - a little diff than on screen,
         but good for making piano practicin' sheets

2006Jul
   end of job again - practicing and sound sorting and figurin out what to fixup
   ditty - rec'ing new drum resizes screen now
   ditty,tinker - oops - skippin comments again while loading
      not req'ing .beat.ticks for marker pos anymore
   ditty
      shows marker in titlebar now
      fixed bug w loading sections (verse2 was picking verse, etc)
      #bars was wrong for sections
      when last section ended, wasn't skipping to next song
      was hopping too early on last section of track

2006Jun
   SFontBank - added Y/N box for less wait (by skipping cleanup)
   Ditty - bugfix - rec'ing new drum snd not dumping to SFont dev
           did the sectionlist gui
           syncs tinker to "traktime" bar correctly now
   sf2SFont - deletes dup drum .psets now
      unfortunately in a random bank order (order the .sf2 has) but oh well
   Tinker - repeating bar report thingy can check more than 1 track now

2006May
   MAJOR DOCS OVERHAUL - YOU BETTER APPRECIATE IT !!!
   Txt2Trak - fixed some bugs and made it able to include files indefinitely w #
   ditty - niggling bug fixes
   Ditty/SFontBank - sorting sounds a little better (based on rating, too)
   thinkin bout tinker...

2006Apr
   Ditty
      Rate dialog will auto-rename _ sounds to without the _ and redo the dialog
         until you hit cancel.  Makes sorting thru new sounds MUCH easier!
         new song rating of X and <nothing> now set up
      TrkEdit now lets you tack on new recording tracks for drums,melodic sounds
      better recording
         can now just play new drum keys to create new drumtracks
         can record multiple device/chans into particular tracks now
      new edit track name,sound dialog
      fixed bugs in time calcs for editctl of time
   Tinker FINALLY can tell ditty to SHUTUP with the bar position notifications
   SFontBank - wasn't creating _x dir so left unused .WAV files there - fixed

2006Mar
   EdiSn can now auto-chop-up a long wav of several songs by silent spots
      into individual wav files per song
   Ditty
      now strips common path prefixes outa filenames in the songlist
         (easier to read :)
      tweaked the ui layout a lot
      spiffed docs for Ditty to include keyboard mappings (plenty of em)
      sf2SFont now uses a _ prefix for the new pset files thrown into SFont dir
      ditty now sorts those to the end of the list per drum/inst
      rating a sound from _ to non _ leaves your current pos so you don't have
         to scoot all the way back to rate next sound
   FINALLY updating website !!!
   got my laptop networked - ahhh - can debug to desktop now
      plus nicer ALL around - shoulda done this looong ago

2006Feb
   debugging the stupid audigy notebook bug - arrrrrrrgh - can't reproduce it:(

2006Jan
   Ditty now does KEYS for (rather lame) midi input (finallly)
      z and row to right have low c notes (with sharps in row above)
      q and row to right have middle c notes (with sharps above)
      cursor down/up change the note velocity (default of 100)
      cursor left/right change octave (default of 4 for z row, 5 for q row)
      f1-f8 do toolbar buttons
      f9-f12 do arrow buttons (value editing for rightmost arrows)
      shift f9-shift f12 do leftmost arrow buttons
   sections basically work, but currently have no gui.
      i'm tired of em for now :(
      edit song by hand and put in SECTIONS: block with
         marker strings in order/reps desired -
         markers MUST be on a bar boundary currently
      ditty can skip forward/back a section via EdTime
   starting to organize my soundfonts (agaaaaain)
   sf2SFont
      puts converted (non gm default) .sf2 presets into
      SFont\_\SFPre\psetname.pset    for non gm and
      SFont\_\GMDir\GMPre_SFPre.pset for gm nondefault
      SFont\Drum\_\grp\sym\sym_SFPre.pset for drums
      This way you can easily review the NEW presets in the _ dirs and
         kill em all off if you want or get em in the right GM dirs and
         move em to your main "all sorted out" dirs.
   want to work on somethin FUN
      so thinkin bout an "auto pitch bender" to take a sin/saw sfont inst and
      autogenerate pitchbend events to get that "monosynth sound"...
      Or die tryin...  Or give up...  Or -WHAT-everrrr...

2005Dec
   still goin...

2005Nov
   working on sections of markers
      marker ctrl changes split sequence in time
      sections (in .song file) list sections (delim'd by markers)
         to play the song parts (verse, chorus, bridge, etc) in any order/reps
      many changes to ditty timing, a few minor changes to tinker, mid2song

2005Oct
   Ditty debuggin done i theen
   back to EdiSn
      better display w mag and no reaccessing huge diskspace for right wav
      playfrom/to
      fixed plenty of bugs, etc

2005Sep
   done debuggin' ???
   added ability to cache soundfont presets of WHOLE playlist
      (for fast playback instead of flexible editing, etc)

2005Aug
   still debuggin' :(

2005Jul
   still debuggin' :(

2005Jun
   pretty big rewrite to cache devs/snds between songs

2005May
   FINALLY got an Audigy 2 - no midiport???  WHAT everrr...  still got my live
   Ditty - corrected picking the right sf device# - oops bug fix
   SFontSet - ditto
   MidiCfg - tweaked for less mess

2005Apr
   tinker
      Copy WORKS now!  pick barBgn,End w [], hover to dest bar, click +
      handles mastervolume/masterbalance
   ditty
      load is interruptible now - no more WAIT if you scroll thru tons of songs
         many speed improvements on the way :)
      Pause WORKS now :)  click time display or use synth kbd
      also a goto bar #1 in EdTime
      songlist remembers current pos automatically now (w a > in the txt file)
      fixed bug in song rating saying new file exists when it doesn't :/
      new editctrls for masterVolume,Tune,Balance
   sf2sfont - made main .WAV variable dynamic so low RAM folks can use it :)

2005Mar
   fixed sound rating bug during delete - it WORKS :)
   TONS of new ideas from Dominique Paon - my brainz a-swimmin'
      what to do first...  hmm...  thinkin time...:)
   timing glitches have been due to background UI bmp tiling :(
      spare the gui glitz till i figure out why...
      thinkin bout using events in midiguy rather than msgloop
   tinker gui for copying a clip is there but doesn't do anything yet
      fixed del bug, spare doin copy till timer pausing in ditty is workin
   gave LED display a pause indicator (red box)
   made timer "pause"-able, gotta hook up UI tho

2005Feb
   Ditty can rate sounds now.
   gave SFontBank a little better status

2005Jan
   RATS!
      Tinker was broke, too...  save file died, no sounds during trak insert
      Wasn't doing MidiDev.Load since squishin exe size :(
      ok now :)
   PSetEdit didn't load .pset files via winexplorer
      fixed and added a "kick off edisn" button
   sf2sfont was broke?  recompiled it and it works now...  Whaaa?
   got a bunch of new .sf2s from sf2midi.com - mergin em into my collection...
   updating docs - bleh :P

2004Dec
   EdiSn - save WORKS now
           displays all pos's in minutes:seconds.samples format
2004Nov
   EdiSn - got bgn,end,loopBgn,loopEnd displayed now
           got an editable pos now (for setting the above)
2004Oct
   found new job - contracting again :/   No time for nothin

2004Sep
   changed del icon to a "rate" icon to rate, rename and delete a songfile :)

2004Aug
   changed the del icon of ditty to actually del file in filesystem,
      not just take it out of the playlist

2004Jul
   fixed bug in SFontBank.exe that'd make it just freeze.
   thought i had bugs in ditty, but it was just my midipath :/

2004Jun
   shazware and checkin out processing.org - ditty kinda on hold till i get
   back into graphics a bit :)

2004May
   memMapped files for EdiSn - stillll goin...
   FINALLY updated website!!!

2004Apr
   done making ditty tinier
   FINALLY back to EdiSn?  memMappedFiles n all :)

2004Mar
   recompilin ditty for tiny (no) clib - trickier :/

2004Feb
   recompilin shazware for tiny (no) clib

2004Jan
   still bootin shazware

2003Dec
   booted shazware

2003Nov
   tweaked Ned
   back to EdiSn
   fixed MidiCfg to put SFont devices first in list

2003Oct
   redoin registry/config file infrastructure stuph
   started EdiSn :)

2003Sep
   new job still

2003Aug
   new job!  no time :/

2003Jul
   FINALLY done w PSetEdit.  Back to Ditty recording i spose...
   learning php, built new ditty email list

2003Jun
   still workin on PSetEdit soundfont preset editing
   built elshaz.com.  bye bye freeservers.com...

2003May
   PSetEdit - to edit soundfont presets on the fly ala vienna, but less bulky
   can view ok now.  working on editing...

2003Apr
   Tinker
      added saveall button with versioning so no naming necessary
      changed rev# to start at _002  (Ditty too)
      can edit all controllers now :)
      "All" checkbox so new controllers can be added in
      add/del drumnote now

2003Mar
   Tinker    - now has track insert, update, delete, scootup, scootdown
               basic controller editing goin
   Ditty     - sound editing a bit nicer - prev/next top group and prev/next 5
   sf2SFont  - has a "wait" gui
   SFontBank - added some progress messages during the wait
   sf2SFont  - ditto

2003Feb
   Ditty and Tinker now have the basics!  (decent save functionality in both)
   Tinker saves/plays selected tracks/controllers now (between time bgn and end)
          has del clip function to kill off events tween clip bgn,end (all trks)
   minor change to .TRAK format - old .trak files ain't compat anymore...:(
   fixed bug in Ditty's Save of recorded track
      (noteons were being saved as notepressure - dang)

2003Jan
   Tinker uses DrumMap from song file in addition to on drum notes to show
      drum track - NOW i can finally use tinker to edit drums!
   got rid of the stupid dependency on msvcrt7.dll or whatever that was

2002Dec
   Ditty
      adds each note of drumtrack to drummap (if not there already)
      files have ONE drumtrack, but are expanded to a drum
         per track (for easier editing of sound/volume) (in Ditty only)
   Ditty,SFontSet now use "Synth B" sblive device correctly
   (built shelf in utility room, figurin out dremel, scrollsaw, router:)

2002Nov
   added EditKey param to MidiCfg
      cuz my keyboard died - usin 5 octave one till repaired:(
   (new tablesaw, built crosscut sled, etc)

2002Oct
   laid off;  learnin .NET, SqlSvr, C#, ADO, ASP, ETC, ETC, ETC

2002Sep
   (summer off with the kids, using ditty for practise, new roof, painting)

2002Aug
   (summer off with the kids, using ditty for practise, new roof, painting)

2002Jul
   Ditty - sends REAL fname to Tinker during rec'ing instead of old "_new.song"
   DrumTrak - spiffed a bit for more elaborate patterns;  rep bars in pat line
   SFontBank - more logical sorting now

2002Jun
   Ditty
      can explode drumtracks now  (in Edit:  EdMute)
      can find songs in a dir picked by windows explorer now :)
      fixed save bug (it's been there for a while :()
      fixed bug in sound picking - prevgroup / nextgroup
      fixed song sorting bug
   Tinker
      spiffed BarQ a bit still not of a lotta use, but kinda helps :/
      slightly better colors for controller graphs

2002May
   Ditty and Tinker sync better now - tinker doesn't GRIND ya...:/
   Tinker - note deleting done now (still no save whole song yet)
      leftclick=insert/update;  rightclick=delete
      (and fixed some note editing bugs...:/)
      track picker has checks to pick all/none/some/etc (right click it, too)
      ctrl picker, too  (had to optimise chek ctrl for speed)
   Whoops - never fixed sorting in SFontBank - fixed now :)

2002Apr
   Tinker - NOTE EDITING!!!  (but no save whole song yet)
   finally squashed the "txtfile finding" bug in SETUPDITTY.exe

2002Mar
   Tinker
    can send a clip to Ditty now
    displays lyrics,markers (sorta lame, but they're there at least)
   Ditty
    editing reorganized a bit to be handier (although uglier)
    changed mute editing a bit
    added editmode so you can play/record the "edit" midi keyboard keys
    turned off MasterTuneCents usage cuz it fries some softsynths
    setwidth for songlist (and all CtlCmbos) now
   Mid2Song
    now parses track Marker events (like lyrics, but per track)
    fixed a rare infinite loopin bug

2002Feb
   Ditty chases controllers !!!  :)))
   can use the stupid .rmi files now
   hopefully fixed incorrect StartMenu/Programs folder picked in SETUPDITTY.
   added RPN controller support for MasterTuneCents and PitchBendRange
      oops had PbendRange at 1 for a release there :/  fixed now

2002Jan
   fixed timesig display bugs in Ditty,Tinker (and bug in Ditty's Edit=>Time)
   Ditty
    drumnotes expanded to standard GS ones and FULL drummap editing
    saves the WHOLE song including lyrics, etc, etc
    listens to ALL "on" midi ins (up to max of 8 currently)
    popup help of 4arrow area changes with edit type picked
    gui and midi in update each other for current edit mode
    added help button
   Tinker
    can show ALL controllers at ONCE now with diff height scaling!
    remembers dirs, defaults good .trak filename for saving clips
    velocity scale (rainbow:) fills screen width
    BarQ now spits to a text file and takes tsig into account, etc
    added help button
   DrumTrak handles subdirs now and kicks ditty MUCH more interactively-ish(?)
   spiffed nav of .html docs

2001Dec
   FINALLY have ditty on XP WORKin - worked around bug in Creative's sfman32.dll
      (thanks to LasTNighT!)
   got ridda the dang _ for _.song biz;  tossed SysX dir;
   now you can click on Ditty's track display to pick edit track n edit type
   Tinker can display notes, drums and controllers on ONE screen now
   save uses {fn}_001.song, etc for filename

2001Nov
   been learning DirectMusic since my poor sblive won't go on XP...
      can parse a .DLS file now, workin on a .sf2->.dls setup for Ditty  (later)

2001Oct
   ripping .SF2s and organizing the good presets into a BIG GOOD sound lib
   with sf2SFont, etc

2001Sep
   a bit nicer icons
   total soundfont drumset picking via Ditty :)

2001Aug
   splitting out soundfont drums for better/easier drumset editing
   sayin goodbye to DeviceSound.txt, and extra DeviceTypes:
      PvV3 :(, RoGS, EnKS, etc.  Just GenMidi and SFont now.

2001Jul
   Ditty n Tinker now remember window position stuff
   got a fancier background onto Ditty...
   redid app framework a bit - nicer now

2001Jun
   Just killed some bugs w the GS,XG handling
   made Tinker sync up to Ditty's time when started from Ditty

2001May
   started using DirectMusic's clock
   got ridda the LargeFonts screen layout problems

2001Apr
   cool SFont device! - use Cvt_to_Lst & Cvt_to_SFont to rip each preset out
   SFontBank builds SFont_Bank.txt from .pset files
   Ditty builds/dumps new sf2 on the fly (sorta kinda like DLS but not really)

2001Mar
   Banks handled better now (can handle SFont better plus can do GS,XG)
      SFont devices correctly list banks there + descrip
      Mid2Song converts bank changes (cc0) into soundnames w .bbb
      Ditty maps sounds w .bbb to snd.bbb if exists, else snd (w/out .bbb)
   cleaned up REMOVE.exe to commit suicide
   finally cleaned up DrumTrak to sort it's lists

2001Feb
   Ditty - changed edit ctrl biz - progch sets which type, keys 8e-g do editin
   ignorin MC_BANK on recording and translating any VOL to EXPR
   new devtype "SFont" is GenMidi but fills in snd.Desc to soundfont preset name

2001Jan
   gotta sblive!  should i lose the PvV3,EnKS midiout?  :(
   learnin bout .sf2 and sblive sound architecture
   nicer (teeny-er) toolbar code
   Tinker  starts w a better sized/zoomed display (note wise AND bars wise)
   Mid2Song  sort DrumTrack to top
   Ditty  fixed bug keepin time=1.1 from showin
          now does "auto rec" for Compose directory song files

2000Dec
   fixed some fricken bugs in Mid2Song

2000Nov
   made DMusTest app to hear DirectX/DirectMusic/MSSynth's GM sounds
   made TryWav app to preview lots of .wav files at once

2000Oct
   Ditty
    - listview was TOO SLOW - back to static ctrl - somewhat nicer tho
    - tossed Default\Chan99 stuff in Mid2Song,Ditty
    - added correct timesig handling (not yet robust in Tinker, but passable)
   Mid2Song
    - now handle progch correctly when ctrl in front of 1st progch not assoc'd
    - added correct timesig handling
   DrumTrak
    - added badly needed Tempo control
   spiffed docs
   tried out DirectMusic sorta

2000Sep
   SETUP
    - now makes Ditty default .mid,.kar player n restores default on uninstall
   MidiCfg
    - upon Save, now kicks Ditty to reload MidiCfg
   Ditty
    - redid internal dev/snd/trk organization
    - listview output looks a little classier than ole edit control
    - toobar button for MidiCfg

2000Aug
   MidiCfg
    - new app to configure the midi devices via gui
    - added Online column to DeviceName.txt n fixed up apps to use it
   DrumTrak
    - new app that picks drum clips, ABABABACs em into a DrumTrak.song
      and kicks Ditty to play it

2000Jul
   Mid2Song
    - all drum notes n tempo events are consolidated into one DrumKit track now

2000Jun
   Ditty
    - DeviceName.txt now has chan config for MidiOut: and swaps to another
      device if snd can't get a channel on the default device
    - added Edit: solo/mute  (fixed Edit: Sound bug w pgm/mapped snd)
    - more button glitz (Edit: PickTrack split to own buttons)
    - now boots Tinker at current bar

2000May
   Tinker
    - lotso display fixes - color velocity & zoomin in both dimensions!!!

   Ditty
    - fixed prob w PvV3's Drum\Drum patch - had combi pointin at nothin :(
    - added EnKS_Bank.txt - Ensoniq KS32 (SQx) patch list :)
    - added RoGS_Bank.txt - Roland GS (approx SC55 level :/ ) patch list
    - fixed bug for Edit: Snd (not settin track's new snd, etc)
    - added Bars display of song's len in bars (assuming 4/4 still)

2000Apr
   Ditty/Mid2Song
    - set up DeviceSound.txt so certain sounds always pick the best device
   SETUPDITTY.exe
    - no longer requires fricken WinZip biz
   Ditty
    - a bit of glitz for time,tempo,status displays
    - added Edit Ctrl/Valu stuff to Ditty UI (to use it w/out a MidiIn)
   Mid2Song
    - fixed bug makin huge lines in .song file keepin Ditty n Tinker from loadin

2000Mar
   Ditty
    - made window resizable, longer track names (Mid2Song fixup)
    - stopped saving non recorded songs (hmmm - what about sound changes)
   Tinker
    - gets a drum display
   SampSend
    - can SDS load n save .wav files
   SysX
    - fixed some tweaky bugs

2000Feb
   PvV3
    - added Combi and Fx editing, fixed up docs a bit

2000Jan
   Ditty
    - can load .mid files directly now (temp .song/.trak made then killed)
    - added "findsong" func to Ditty n lost SongList app

1999Dec
   SETUP.exe
    - has editable install dir now
   Ditty
    - shows lyrics
    - can now launch WordPad and Tinker to check out current song
    - can load .songlist files now
    - changed time refresh to per qnote for hi perf songs
   Mid2Song
    - .KAR explorer file mapping added
    - Lyrics (std midi and karaoke fmt) now processed
   SysX
    - has Get capability now
   sx2PvV3,PvV3
    - new apps for Peavey DPM V3 patch editing
   SongList
    - new app to find all song files in a dir and subdirs

1999Sep
   did SETUP.exe and the start of Tinker.

1999Apr
   First release of Ditty and my family's webpage.
   Primarily so folks could see it's there.

1997-98???
   spent a loooooong time spinning my wheels with MFC.
   Started learnin Win32 API.

1995-96???
   95 was a busy year - bought house, had 2nd child, got married :)
   Dove into the Mac - I didn't want to be a clone...
   got some midi interface code started
   got to the point of debugging a REALLY early start on a sequencer
   totally GAVE UP and committed myself to CLONEZ.

1989-94???
   First dive into building a sequencer and patch editor for the Amiga
   It was about as functional as Ditty's Sep99 windows version
   I was happy.  Commodore died.  I was sad.
________________________________________________________________________________

These folks were awesome enough to help:
   Dominique.Paon over at libertysurf.fr
   LasTNighT over at mtu-net.ru
   Deslov over at infogen.net.nz
   MidiTrouble over at free.fr
   Samuel_Sierra over at hotmail.com
   Ajja64 over at wanadoo.fr
   Thomas Hammer of hammersound
   Claude Veziau
   Andy Turner of andyware
   Mitch of the sonic spot
   mahlzeit over at pianoworld forums