
!Midiphile - Development History
================================

0.01 (29 Dec 1996)
   * Designed the Drop Panel and Config windows.
   * Coded wimp shell (ibar menu, open/close Drop Panel and Config windows).

0.02 (30 Dec 1996)
   * Config Pane switching.
   * Options : Default, Display, Setting (inc Ctrlr popup), Saving, Loading.

0.03 (31 Dec 1996)
   * Drag loading of a MIDI file :
     * Filename capture/suffix (changes if OpMode is subsequently changed).
     * Overview scan of MIDI file - number of tracks.
   * Values of 'From Track' and 'To Track' icons can be altered.
   * Caret is placed in Drop Panel window (Output filename) and returned to
     its previous owner when the Drop Panel window is closed.

0.04 (02 Jan 1997)
   * DragASprite dragging of output file, to ascertain destination path.
     Took lots of faffing about until I discovered 'Icon_FileIcon()'.
   * Added 'Remember destination path' switch.
   * Sorted handling of output filename when changing OpMode (Desc/Clean).
     The name is not patched if the user has edited it.

0.05 (26 Feb 1997)
   * Popup a warning if the output file will overwrite the input file.
   * Fade icons in Config windows, as appropriate.
   * The MIDI file is validated when it is loaded onto the Drop Panel.
     This acts as a first pass through the data.

0.06 (03 Mar 1997)
   * Coding 'Describe' :
     * Delta / Interpreted timing; All / Filtered
     * SysEx and Meta events reported

0.07 (04 Mar 1997)
   * Processing is now performed with multi-tasking
     (a bit course at the moment - one track per Wimp_Poll).
   * Added a slider (non-draggable) to indicate progress.
   * Whilst processing, the 'Process' button changes to 'Abort'.

0.08 (05 Mar 1997)
   * Coding 'Describe' :
     * Multi-tasking is now smoother ('n' events per Wimp_Poll, 'n' is set
       in the Messages file, default 80).
     * Midi events reported (All / Filtered).  Not Hanging notes, yet.
     * Track summary showing totals found.

0.09 (07 Mar 1997)
   * Whilst processing a file, the following are disabled :
     * iconbar menu.
     * closing the Panel window.
     * response to dropping a file on the 'in' icon.
     * All Panel window icons (inc drag Out) except 'Abort'.
     * 'Default', 'Save' and 'Set' buttons in Config window.
   * When aborting a Describe process, the text 'Process aborted' is
     appended to the output file.

0.10 (15 Mar 1997)
   * Describe mode:
     * The Progress bar now considers the selected track range rather than
       the entire track range.
   * Coding 'Clean' :
     * Midi, SysEx and (Inspiration specific) Meta events.
   * Initial scan (pre-Process) now determines the initial TimeSig.

0.11 (17 Mar 1997)
   * More tolerant of bad MIDI files :
     * Accepts files with TimeSig event with dtime > 0.
     * Accepts files without a TimeSig event (assumes 4/4 time).
   * Pointer is restricted to Message window, whenever that appears.
   * Show tags (for ticked events) when using Delta timing.
   * Dragging the 'out' fileicon to non-filer windows is trapped out,
     specifically if the returned filename starts with :
       '<Wimp$ScrapDir>'  or  'Blinds:'

0.12 (18 Apr 1997)
   * Generates a Time Sig map based on TimeSig events in track 0, and this
     info is used when Describe'ing any tracks (not just track 0, the tempo
     track).  The exception is with 'format 2' MIDIfiles.
     Previously it was as shameless as Serenade in that it took the initial
     value and ignored any subsequent changes.
   * Copes with MIDIfiles containing 'unrecognised chunks' by offering to
     accept the file up to the point where the unrecognised chunk occurs.

0.13 (21 Apr 1997)
   * Now perform two passes for each track during a Describe process.  The
     first pass just makes a list of hanging notes, and these are tagged
     during the second pass.

0.14 (24 Apr 1997)
   * Added 'Hanging notes' section to the 'Clean' options dbox, and coded
     support re the !Options file and Options dbox fill/read.
   * Now perform two passes for each track during a Clean process.  First
     making a list of hanging notes, and then acting according to the
     'Hanging notes' (Clean) option.
   * The 'Inspiration' (Clean) option now also fixes the initial TimeSig
     Meta event (it gets moved to time=0).

     (30 Apr 1997)
   * Improved checking of the output filename.

0.15 (07 Jul 1997)
   * Pressing the RETURN key when the caret is in the Panel window's
     filename icon now starts the process (if a MIDIfile has been loaded).
     And now that KeyPress events are handled properly, it no longer
     causes problems for !SmartBar (Risc User).
   * The Config window is now opened in the same mode as the current op
     mode (Describe/Clean).
   * Iconbar clicks : SELECT will open/surface the Panel window,
                      ADJUST will open/close it.
   * Similarly with SELECT/ADJUST on the 'Config ...' button in the
     Control panel window to open/surface or open/close the Config window.

0.16 (17 Aug 1997) : [ INITIAL WEB RELEASE ]
   * Improved pane handling :
     * Opening a window which was previously closed when partially off-
       screen, now works as it should.
     * Similarly when switching panes (in Config window).  Though this can
       flicker due to my forcing the pane partially off-screen after the
       Wimp has forced it on-screen !
   * Added 'Include track 0' option to the Panel window.  Only applicable
     to 'Describe' operations.

0.16b (30 Mar 1998)
   * Re-compiled with new version of DeskLib_X (0.10).

0.17 (04 Jan 1999) : [ WEB RELEASE ]
   * Should now cope with leafnames longer than 10 characters.

0.18 (04 Apr 1999) : [ WEB RELEASE ]
   * Use '!Controls' file to provide names for all controllers, and this
     info is used in the output Description file.
   * Allow Data files if their leafname ends with '/MID' (or a case
     independant truncated version of that).  This allows PC-sourced
     MIDIfiles held within a zip archive to be processed.

0.18b (28 Apr 1999)
   * Re-compiled with new version of DeskLib_X (0.11).

0.18c (12 Jun 1999)
   * Re-compiled with new version of DeskLib_X (0.12).

0.18d (30 Nov 1999)
   * Re-compiled with new version of DeskLib_X (0.13).
   * Marginally improved the description of SysEx events - identify Universal
     SysEx (RT and NRT) and a few of the more common manufacturers.
   * ADJUST click on the iconbar icon when the Panel window is open, now
     also closes the Config window.

0.18e (14 Jan 2000)
   * Re-compiled with new version of DeskLib_X (0.14).

0.19 (31 Oct 2000) : [ WEB RELEASE ]
   * Re-compiled with new version of DeskLib_X (0.15).
   * Bug fix : Clean operation : Treatment of 'hanging notes' was a bit
     flakey in a number of respects :
     * Groups of hanging notes occuring at the same time would be missed.
     * 'Remove' sometimes removed the wrong event.
     * 'Add NoteOff' didn't allow for extending the EndOfTrack event.

0.20 (19 Nov 2000) : [ WEB RELEASE ]
   * Initial file assessment :
     * Format 0 files with more than one track are rejected as invalid.
   * Now much stricter handling of TimeSig events :
     * For MIDI file formats 0 and 1 they should only occur in track zero.
       TimeSig events found in tracks other than 0 for format 1 files, are
       reported as errors, and their effect is ignored.
     * For format 2 files they can occur in any track.
   * Fixing hanging notes (ie adding a NoteOff event) :
     * Now pushes the EOT along if necessary.
     * If Metrical time the note is no longer given a fixed duration :
       * If the hanging note occurs just before a bar end, it is assumed that
         it was intended to be on the bar, and is given a duration of 1 beat.
       * Otherwise the hanging note is given a duration that takes it up to
         the end of the bar.
     * If Timecode time, hanging notes are given a fixed duration (as before,
       ie as specified by the 'HangNote.Dur' parameter in the Messages file).
   * Added new Clean option : Ensure whole number of bars (for each track).

0.21 (13 Mar 2001) : [ WEB RELEASE ]
   * Re-compiled with new version of DeskLib_X (0.16).
   * BugFix: During drag save operations (in fn 'DragDone()'), now construct
     the DataSave message properly (ie I initially set 'yourref=0').
   * Prevention of saving direct to apps now looks out for both <Wimp$Scrap>
     and <Wimp$ScrapDir>.
   * Extended the iconbar click action :
     * Ctrl-SELECT : Open/surface the Options window.
     * Ctrl-ADJUST : Open/close the Options window.
   * If the 'new boot' is present, 'Choices:' is used as the location of the
     !Options file (in a subdir 'MidiWays'), in accordance with the guidelines
     in Justin's 'Choices document'.

0.22 (14 Sep 2001) : [ WEB RELEASE ]
   * Now identifies 'MIDIPort' Meta events (ie Meta 0x21).
   * Support for long filenames.  The leafname for the input MIDI file is
     displayed truncated to 28 characters.
     Added a third user option (UserOpt.LongName) in the Messages file to
     control truncation (to 10 characters) of the output filename.
   * A MIDI file's format (0, 1 or 2) is now shown in the Panel window.
   * The 'Include track 0' toggle is now faded when Describe is selected if
     the MIDI file is format 0 or 2.

0.23 (12 Mar 2003) : [ WEB RELEASE ]
   * Re-compiled with 32-bit DDE (and new 32-bit DeskLib_X 0.17), ie it's
     now 26/32-bit neutral.
   * Added a few more manufacturers to SysEx decoding (previously only
     dealt with single-byte IDs).

0.23b (15 Apr 2003)
   * Now use '...' in place of elipsis chars (ibar menu and Panel window).

0.23c (16 Feb 2004)
   * Re-compiled with new version of DeskLib_X (0.19).
   * It will now close the (incomplete) output file, if an error occurs
     during processing.
   * Added a few more manufacturers to SysEx decoding.
   * Fixed fatal bug (in Describe mode, with some SysEx messages).

0.24 (23 Feb 2004) : [ WEB RELEASE ]
   * Better handling of source files with a '/MID' file extension.
     '/TXT' is used in output file in Describe mode.

0.25 (29 Jan 2007) : [ WEB RELEASE ]
   * Re-compiled with new version of DeskLib_X (0.24).
   * Linked with StubsG, so now no longer requires Castle's 32-bit CLib.
   * Config migration : MidiWays to Somascape (directories).
   * Added a few more Manufacturer ID codes (SysEx identification).
   * Added a few more controllers to Controller menus, and extended range of
     'All controllers' setting from 0-101 to 0-119.

-------------------------------------------------------------------------------
