Updated comments
Added comment to top of Assistant Performer

The comment says that the AP works on Chrome with the Jazz plugin (v1.2)
Changed format of saved MIDI file names

The date portion of saved MIDI file names now always uses 2-character
values for month and day, using a leading '0' where necessary. See
comment in jiMIDIFile.js.
Reduced dependency on the Jazz plugin.

jiMain.js has been completely rewritten so that the Jazz plugin is
only responsible for setting the midiAccess object.
Plugin code for loading the available device names into the device
selectors is now replaced by new code in jiAPControls.js.
When the Web MIDI API is implemented, I can now simply replace the
call to JMB.init() by the corresponding way of setting midiAccess.

Revised the 'save' button's appearance.

Known Bug: When performing (non-assisted) with the start marker at
a position other than the beginning, message timestamps do not
take the position of the start marker into account.
Bug fixed, another discovered.

Recorded MIDI files now always start with the first message at
time 0.
Known Bug: The timestamps of midiMessages in the score are being
corrupted when the start marker is not at the beginning in a
non-assisted performance. This leads to problems when the 'go'
button is pressed to repeat the performance. This bug is unrelated
to the previous one.
Partial Bug Fix.

Timestamps are no longer being corrupted in non-assisted
performances, so all kinds of non-assisted peformances can now be
repeated and saved. This includes performances with some tracks
turned off, and with the start and end markers at arbitrary
positions.
Known Bug: The assistant still has to be fixed, but it is now clear
how this should be done, so should be no problem tomorrow.
The only file which needs to change now is jiAssistant.js
Timing Bug fixed completely.

Timestamps are no longer being corrupted in either assisted or
non-assisted performances. Also made some subtle improvements to
the timing (e.g. timestamps are now always integers, so that
rounding errors dont happen).
Stress test successfully completed: Assisted performance of
Study 2c3.1 with the live player playing as fast as possible.
Beginning to use jiJazzWebMIDIAPI

This commit does not run.
Added js/jiJazzWebMIDIAPI.js which is a drastic revision of Chris
Wilson's shim. Very grateful to him for starting the file, but I
need full control so have made a private copy and am changing it
so that it meets all my requirements. First, I reorganized it so
that JSLint stopped complaining and I could understand what was
going on, then I built it into the Assistant Performer.
Am currently debugging, using abudaan's JazzMidibridge as a crib,
to get it working. (It is NOT yet running).
Have decided to implement a MIDIEvent module before continuing
with the debug. The MIDIEvent module will probably affect what
happens when I continue to debug jiJazzWebMIDIAPI.
Added js/jiMIDIEvent.js

This commit does not run.
jiMIDIEvent exposes constructors for MIDIEvents which are as small
as possible, and are very like the current Web MIDI API object.
Have changed all the files which are affected by the new object,
and they all now pass JSLint. The only file which does NOT pass
JSLint is jiJazzWebMIDIAPI.js, which is going to be affected by
the new jiMIDIEvent.js file. In fact, I think both these files are
going to end up in the Web MIDI API...
jiMIDIEvent.js is where all MIDI constants are currently defined,
and these should be used in jiJazzWebMIDIAPI. In fact, I think
jiMIDIEvent.js should contain all the code not dependent on Jazz.
When the Web MIDI API is running in the browser, it should be
possible to delete jiJazzWebMIDIAPI, and turn parts of
jiMIDIEvent.js into a Javascript library containing those parts
which did not make it into the Web MIDI API.
File reorganisation: JazzWebMIDI and Sequence to lib

I've decided to put all files that can be reused in future MIDI
projects in the lib directory.
Created a new file (a stub) lib/jiJazzWebMIDI.js defining the
webMIDI namespace and having an API identical to the current
Web MIDI API as described at the W3C. Will complete this with the
help of JazzMIDIBridge and WebMIDIAPIShim code.
Other files in lib may end up in a standard library when browsers
implement the Web MIDI API.
Serious Web MIDI Library development begins

Moved files to lib, created new namespace WEB_MIDI_LIB for
the library. Am about to rename a lot of important types:
JI_NAMESPACE.MIDIEvent -> WEB_MIDI_LIB.Event etc.
Added renamed files in lib
Backup commit.

TODO: Write the function SMFToSequence (in StandardMIDIFile.js)
Complete the create/delete save button code in folder js (i.e.
outside the library) and put a simple example of loading and
saving SMFs in lib/examples.js
Documentation of the library modules is otherwise fairly complete.
TrackControl.getTrackIsOnArray function added.

The new function returns an array which is passed to the playSpan()
function. The array cannot be used to set the status of the tracks.
Debugging results (backup)
Port manufacturer and version set to null

Jazz does not support the port manufacturer or version fields, and these
are both nullable, so they are set to null.
Added JSLint directives; MIDI Input events now working.

Known Bug: (Todo next) lib/Sequence is not working. Problem is with 'this'.
MIDI constants are now read-only

The constants defined in lib/Event.js are now read-only. An exception is
thrown if an attempt is made to change their values.
Small error correction in HTML
Moved constant definitions from Event.js to Constants.js

Constants.js is a new file.