From 0bd291527143fd9e190fb058e91004126a40f13c Mon Sep 17 00:00:00 2001 From: Sema Date: Mon, 5 Jul 2021 14:00:58 -0400 Subject: [PATCH] Yamaha XF metaevents --- javascript/JZZ.js | 11 ++++++++--- package.json | 2 +- test/common.js | 6 ++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/javascript/JZZ.js b/javascript/JZZ.js index 3af5640..29bb8fd 100644 --- a/javascript/JZZ.js +++ b/javascript/JZZ.js @@ -2315,13 +2315,18 @@ if (this.dd.charCodeAt(0) == 0x43) { if (this.dd.charCodeAt(1) == 0x7b) { s += '[XF:' + __hex(this.dd.charCodeAt(2)) + ']'; + ss = { 0: 'Version', 1: 'Chord', 2: 'Rehearsal Mark', 3: 'Phrase Mark', 4: 'Max Phrase Mark', + 5: 'Fingering Number', 12: 'Guide Track Flag', 16: 'Guitar Info', 18: 'Chord Voicing', + 127: 'XG Song Data Number' }[this.dd.charCodeAt(2)]; + s += ss ? ' ' + ss : ''; + s += ': '; if (this.dd.charCodeAt(2) == 0) { - s += ' Version: ' + this.dd.substr(3, 4) + ' ' + _hex(_s2a(this.dd.substr(7))); + return s + this.dd.substr(3, 4) + ' ' + _hex(_s2a(this.dd.substr(7))); } if (this.dd.charCodeAt(2) == 1) { - s += ' Chord: ' + this.getText(); + return s + this.getText(); } - return s; + return s + _hex(_s2a(this.dd.substr(3))); } } s += 'Sequencer Specific' + _smfhex(this.dd); diff --git a/package.json b/package.json index a657526..7aae1b5 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "grunt-contrib-jshint": "^3.0.0", "grunt-contrib-uglify": "^5.0.1", "midi-test": "^1.1.7", - "mocha": "^9.0.1", + "mocha": "^9.0.2", "nyc": "^15.1.0", "web-midi-test": "^1.1.7" }, diff --git a/test/common.js b/test/common.js index 2809418..fcbacc4 100644 --- a/test/common.js +++ b/test/common.js @@ -820,6 +820,12 @@ describe('SMF events', function() { assert.equal(JZZ.MIDI.smf(0x7f, '\x43\x7b\x01\x44\x23\x44\x23').toString(), 'ff7f -- [XF:01] Chord: F#?'); assert.equal(JZZ.MIDI.smf(0x7f, '\x43\x7b\x01\x00\x00\x00\x00').toString(), 'ff7f -- [XF:01] Chord: -'); }); + it('smf/XF Song Data Number', function() { + assert.equal(JZZ.MIDI.smf(0x7f, '\x43\x7b\x7f\x01\x02\x03\x04\x05\x06\x07\x08\x01\x02').toString(), 'ff7f -- [XF:7f] XG Song Data Number: 01 02 03 04 05 06 07 08 01 02'); + }); + it('smf/XF Unknown', function() { + assert.equal(JZZ.MIDI.smf(0x7f, '\x43\x7b\x7e\x01\x02\x03').toString(), 'ff7f -- [XF:7e]: 01 02 03'); + }); }); describe('SMPTE', function() {