src/MIDIFile.js
function MIDIFile(buffer, strictMode) {
  var track;
  var curIndex;
  var i;
  var j;

  // If not buffer given, creating a new MIDI file
  if (!buffer) {
    // Creating the content
    this.header = new MIDIFileHeader();
    this.tracks = [new MIDIFileTrack()];
    // if a buffer is provided, parsing him
  } else {
    buffer = ensureArrayBuffer(buffer);
    // Minimum MIDI file size is a headerChunk size (14bytes)
    // and an empty track (8+3bytes)
    if (25 > buffer.byteLength) {
      throw new Error(
        'A buffer of a valid MIDI file must have, at least, a' +
          ' size of 25bytes.'
      );
    }
    // Reading header
    this.header = new MIDIFileHeader(buffer, strictMode);
    this.tracks = [];
    curIndex = MIDIFileHeader.HEADER_LENGTH;
    // Reading tracks
    for (i = 0, j = this.header.getTracksCount(); i < j; i++) {
      // Testing the buffer length
      if (strictMode && curIndex >= buffer.byteLength - 1) {
        throw new Error(
          "Couldn't find datas corresponding to the track #" + i + '.'
        );
      }
      // Creating the track object
      track = new MIDIFileTrack(buffer, curIndex, strictMode);
      this.tracks.push(track);
      // Updating index to the track end
      curIndex += track.getTrackLength() + 8;
    }
    // Testing integrity : curIndex should be at the end of the buffer
    if (strictMode && curIndex !== buffer.byteLength) {
      throw new Error('It seems that the buffer contains too much datas.');
    }
  }
}
function MIDIFile(buffer, strictMode) {
  var track;
  var curIndex;
  var i;
  var j;

  // If not buffer given, creating a new MIDI file
  if (!buffer) {
    // Creating the content
    this.header = new MIDIFileHeader();
    this.tracks = [new MIDIFileTrack()];
    // if a buffer is provided, parsing him
  } else {
    buffer = ensureArrayBuffer(buffer);
    // Minimum MIDI file size is a headerChunk size (14bytes)
    // and an empty track (8+3bytes)
    if (25 > buffer.byteLength) {
      throw new Error(
        'A buffer of a valid MIDI file must have, at least, a' +
          ' size of 25bytes.'
      );
    }
    // Reading header
    this.header = new MIDIFileHeader(buffer, strictMode);
    this.tracks = [];
    curIndex = MIDIFileHeader.HEADER_LENGTH;
    // Reading tracks
    for (i = 0, j = this.header.getTracksCount(); i < j; i++) {
      // Testing the buffer length
      if (strictMode && curIndex >= buffer.byteLength - 1) {
        throw new Error(
          "Couldn't find datas corresponding to the track #" + i + '.'
        );
      }
      // Creating the track object
      track = new MIDIFileTrack(buffer, curIndex, strictMode);
      this.tracks.push(track);
      // Updating index to the track end
      curIndex += track.getTrackLength() + 8;
    }
    // Testing integrity : curIndex should be at the end of the buffer
    if (strictMode && curIndex !== buffer.byteLength) {
      throw new Error('It seems that the buffer contains too much datas.');
    }
  }
}
function MIDIFile ( buffer , strictMode ) { var track ; var curIndex ; var i ; var j ; // If not buffer given, creating a new MIDI file if ( ! buffer ) { // Creating the content this . header = new MIDIFileHeader ( ) ; this . tracks = [ new MIDIFileTrack ( ) ] ; // if a buffer is provided, parsing him } else { buffer = ensureArrayBuffer ( buffer ) ; // Minimum MIDI file size is a headerChunk size (14bytes) // and an empty track (8+3bytes) if ( 25 > buffer . byteLength ) { throw new Error ( 'A buffer of a valid MIDI file must have, at least, a' + ' size of 25bytes.' ) ; } // Reading header this . header = new MIDIFileHeader ( buffer , strictMode ) ; this . tracks = [ ] ; curIndex = MIDIFileHeader . HEADER_LENGTH ; // Reading tracks for ( i = 0 , j = this . header . getTracksCount ( ) ; i < j ; i ++ ) { // Testing the buffer length if ( strictMode && curIndex >= buffer . byteLength - 1 ) { throw new Error ( "Couldn't find datas corresponding to the track #" + i + '.' ) ; } // Creating the track object track = new MIDIFileTrack ( buffer , curIndex , strictMode ) ; this . tracks . push ( track ) ; // Updating index to the track end curIndex += track . getTrackLength ( ) + 8 ; } // Testing integrity : curIndex should be at the end of the buffer if ( strictMode && curIndex !== buffer . byteLength ) { throw new Error ( 'It seems that the buffer contains too much datas.' ) ; } } }
Constructor
Constructor