nl_tokens: / ........................................... MIDIFileHeader : Read and edit a MIDI header chunk in a given ArrayBuffer
pl_tokens: function MIDIFileHeader ( buffer ) { let a ; // No buffer creating him if ( ! buffer ) { a = new Uint8Array ( MIDIFileHeader . HEADER_LENGTH ) ; // Adding the header id (MThd) a [ 0 ] = 0x4D ; a [ 1 ] = 0x54 ; a [ 2 ] = 0x68 ; a [ 3 ] = 0x64 ; // Adding the header chunk size a [ 4 ] = 0x00 ; a [ 5 ] = 0x00 ; a [ 6 ] = 0x00 ; a [ 7 ] = 0x06 ; // Adding the file format (1 here cause it's the most commonly used) a [ 8 ] = 0x00 ; a [ 9 ] = 0x01 ; // Adding the track count (1 cause it's a new file) a [ 10 ] = 0x00 ; a [ 11 ] = 0x01 ; // Adding the time division (192 ticks per beat) a [ 12 ] = 0x00 ; a [ 13 ] = 0xC0 ; // saving the buffer this . datas = <mask> DataView ( a . buffer , 0 , MIDIFileHeader . HEADER_LENGTH ) ; // Parsing the given buffer } else { if ( ! ( buffer instanceof ArrayBuffer ) ) { throw Error ( 'Invalid buffer received.' ) ; } this . datas = new DataView ( buffer , 0 , MIDIFileHeader . HEADER_LENGTH ) ; // Reading MIDI header chunk if ( ! ( 'M' === String . fromCharCode ( this . datas . getUint8 ( 0 ) ) && 'T' === String . fromCharCode ( this . datas . getUint8 ( 1 ) ) && 'h' === String . fromCharCode ( this . datas . getUint8 ( 2 ) ) && 'd' === String . fromCharCode ( this . datas . getUint8 ( 3 ) ) ) ) { throw new Error ( 'Invalid MIDIFileHeader : MThd prefix not found' ) ; } // Reading chunk length if ( 6 !== this . datas . getUint32 ( 4 ) ) { throw new Error ( 'Invalid MIDIFileHeader : Chunk length must be 6' ) ; } } }