Skip to content

Commit

Permalink
umpNoteOn/Off()
Browse files Browse the repository at this point in the history
  • Loading branch information
jazz-soft committed Sep 10, 2023
1 parent 2dd7fea commit 5a7a5e2
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 10 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,15 +68,15 @@ by running `npm remove midi-test --save-dev`.

```html
<script src="https://cdn.jsdelivr.net/npm/jzz"></script> // the latest version, or
<script src="https://cdn.jsdelivr.net/npm/jzz@1.6.8"></script> // any particular version
<script src="https://cdn.jsdelivr.net/npm/jzz@1.6.9"></script> // any particular version
//...
```

##### CDN (unpkg)

```html
<script src="https://unpkg.com/jzz"></script> // the latest version, or
<script src="https://unpkg.com/jzz@1.6.8"></script> // any particular version
<script src="https://unpkg.com/jzz@1.6.9"></script> // any particular version
//...
```

Expand Down
39 changes: 35 additions & 4 deletions javascript/JZZ.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
})(this, function() {

var _scope = typeof window === 'undefined' ? global : window;
var _version = '1.6.8';
var _version = '1.6.9';
var i, j, k, m, n;

/* istanbul ignore next */
Expand Down Expand Up @@ -2920,6 +2920,7 @@
}
UMP.prototype = [];
UMP.prototype.constructor = UMP;
UMP.prototype.isMidi2 = true;
UMP.prototype.dump = function() {
var i;
var s = '';
Expand Down Expand Up @@ -2997,6 +2998,17 @@
}
};
var _helperGC = {
umpNoteOn: function(g, c, n, v, t, a) {
if (typeof v == 'undefined') v = 0xffff;
t = t || 0; a = a || 0;
v = _16b(v); a = _16b(a);
return [0x40 + g, 0x90 + _ch(c), _7bn(n), _8b(t), v >> 8, v & 255, a >> 8, a & 255];
},
umpNoteOff: function(g, c, n, v, t, a) {
v = v || 0; t = t || 0; a = a || 0;
v = _16b(v); a = _16b(a);
return [0x40 + g, 0x80 + _ch(c), _7bn(n), _8b(t), v >> 8, v & 255, a >> 8, a & 255];
}
};

var _helpersUmp = {};
Expand All @@ -3005,7 +3017,6 @@
_helpersUmp[name] = function() { return this.send(func.apply(this, arguments)); };
}
function _copyHelperGC(name, func) {
/*
UMP[name] = function() {
var args = Array.prototype.slice.call(arguments);
if (typeof this._gr != 'undefined') args = [this._gr].concat(args);
Expand All @@ -3018,7 +3029,6 @@
if (typeof this._ch != 'undefined') args = [args[0]].concat([this._ch]).concat(args.slice(1));
return this.send(func.apply(this, args));
};
*/
}
function _copyHelperGN(name, func) {
UMP[name] = function() {
Expand Down Expand Up @@ -3116,7 +3126,20 @@
UMP.prototype.isDelta = function() { return this[0] == 0 && (this[1] >> 4) == 4; };
UMP.prototype.isStartClip = function() { return this.match([0xf0, 0x20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); };
UMP.prototype.isEndClip = function() { return this.match([0xf0, 0x21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); };

UMP.prototype.isNoteOn = function() {
var c = (this[0] || 0) >> 4;
var d = (this[1] || 0) >> 4;
if (c == 4) return d == 9;
else if (c == 2) return d == 9 && !!this[3];
return false;
};
UMP.prototype.isNoteOff = function() {
var c = (this[0] || 0) >> 4;
var d = (this[1] || 0) >> 4;
if (c == 4) return d == 8;
else if (c == 2) return d == 8 || (d == 9 && !this[3]);
return false;
};
UMP.prototype.toString = MIDI.prototype.toString;
UMP.prototype._str = function() {
var t = this._string();
Expand All @@ -3131,6 +3154,14 @@
s = ['NOOP', 'JR Clock', 'JR Timestamp', 'Ticks Per Quarter Note', 'Delta Ticks'][n];
return s;
}
if (t == 4) {
n = this[1] >> 4;
s = {
8: 'Note Off',
9: 'Note On'
}[n];
return s;
}
if (this[0] == 0xd0) {
if (this[2] == 0) {
if (this[3] == 0) return 'Tempo ' + this.getBPM() + ' BPM';
Expand Down
2 changes: 1 addition & 1 deletion minified/JZZ.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "jzz",
"version": "1.6.8",
"version": "1.6.9",
"description": "MIDI library for Node.js and web-browsers",
"main": "javascript/JZZ.js",
"scripts": {
Expand All @@ -22,7 +22,7 @@
"jazz-midi": "^1.7.9"
},
"devDependencies": {
"eslint": "^8.48.0",
"eslint": "^8.49.0",
"grunt": "^1.6.1",
"grunt-contrib-jshint": "^3.2.0",
"grunt-contrib-uglify": "^5.2.2",
Expand Down
43 changes: 43 additions & 0 deletions test/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -773,6 +773,8 @@ describe('UMP messages', function() {
it('noop', function() {
var s = '00000000 -- NOOP';
var msg =JZZ.UMP.noop();
assert.equal(msg.isNoteOn(), false);
assert.equal(msg.isNoteOff(), false);
assert.equal(typeof msg.getGroup(), 'undefined');
assert.equal(typeof msg.getDelta(), 'undefined');
assert(msg.dump(), '\0\0\0\0');
Expand All @@ -789,6 +791,8 @@ describe('UMP messages', function() {
it('noteOn', function() {
var s = '21923d7f -- Note On';
var msg = JZZ.UMP.noteOn(1, 2, 'C#5');
assert.equal(msg.isNoteOn(), true);
assert.equal(msg.isNoteOff(), false);
assert.equal(msg.getGroup(), 1);
assert.equal(JZZ.UMP.noteOn(1, 2, 'C#5').toString(), s);
assert.equal(JZZ.UMP.ch().noteOn(1, 2, 'C#5').toString(), s);
Expand All @@ -803,6 +807,9 @@ describe('UMP messages', function() {
});
it('noteOff', function() {
var s = '21823d40 -- Note Off';
var msg = JZZ.UMP.noteOff(1, 2, 61);
assert.equal(msg.isNoteOn(), false);
assert.equal(msg.isNoteOff(), true);
assert.equal(JZZ.UMP.noteOff(1, 2, 61).toString(), s);
assert.equal(JZZ.UMP.noteOff(1, 2, 'C#5', 64).toString(), s);
});
Expand Down Expand Up @@ -903,6 +910,31 @@ describe('UMP messages', function() {
assert.throws(function() { JZZ.UMP.gr(0).umpTimeSignature(100, 4); });
assert.throws(function() { JZZ.UMP.gr(0).umpTimeSignature(); });
});
it('umpNoteOn', function() {
var s = '41923d00 ffff0000 -- Note On';
var msg = JZZ.UMP.umpNoteOn(1, 2, 'C#5');
assert.equal(msg.isNoteOn(), true);
assert.equal(msg.isNoteOff(), false);
assert.equal(msg.getGroup(), 1);
assert.equal(JZZ.UMP.umpNoteOn(1, 2, 'C#5').toString(), s);
assert.equal(JZZ.UMP.ch().umpNoteOn(1, 2, 'C#5').toString(), s);
assert.equal(JZZ.UMP.ch(5).ch().umpNoteOn(1, 2, 'C#5').toString(), s);
assert.equal(JZZ.UMP.gr().umpNoteOn(1, 2, 'C#5').toString(), s);
assert.equal(JZZ.UMP.gr(5).gr().umpNoteOn(1, 2, 'C#5').toString(), s);
assert.equal(JZZ.UMP.gr(1).umpNoteOn(2, 'C#5').toString(), s);
assert.equal(JZZ.UMP.ch(2).umpNoteOn(1, 'C#5').toString(), s);
assert.equal(JZZ.UMP.gr(1).ch(2).umpNoteOn('C#5').toString(), s);
assert.equal(JZZ.UMP.ch(2).gr(1).umpNoteOn('C#5', 0xffff).toString(), s);
assert.equal(JZZ.UMP.ch(2).gr(1).ch(2).gr(1).umpNoteOn('C#5', 0xffff, 0, 0).toString(), s);
});
it('umpNoteOff', function() {
var s = '41823d00 00000000 -- Note Off';
var msg = JZZ.UMP.umpNoteOff(1, 2, 'C#5');
assert.equal(msg.isNoteOn(), false);
assert.equal(msg.isNoteOff(), true);
assert.equal(JZZ.UMP.umpNoteOff(1, 2, 61).toString(), s);
assert.equal(JZZ.UMP.umpNoteOff(1, 2, 'C#5', 0).toString(), s);
});

it('unknown', function() {
assert.equal(JZZ.UMP([0xd0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]).toString(), 'd0000500 00000000 00000000 00000000');
Expand Down Expand Up @@ -1298,6 +1330,17 @@ describe('JZZ.Widget2', function() {
port.connect(function(msg) { sample.compare(msg); });
port.noteOn(1, 2, 'C#5', 126).gr(1).noteOn(2, 'C#5', 126).ch(2).noteOn('C#5', 126).gr().noteOn(1, 'C#5', 126);
});
it('umpNoteOn', function(done) {
var sample = new test.Sample(done, [
[65, 146, 61, 0, 0, 126, 0, 0],
[65, 146, 61, 0, 0, 126, 0, 0],
[65, 146, 61, 0, 0, 126, 0, 0],
[65, 146, 61, 0, 0, 126, 0, 0]
]);
var port = JZZ.Widget2();
port.connect(function(msg) { sample.compare(msg); });
port.umpNoteOn(1, 2, 'C#5', 126).gr(1).umpNoteOn(2, 'C#5', 126).ch(2).umpNoteOn('C#5', 126).gr().umpNoteOn(1, 'C#5', 126);
});
it('sxGS', function(done) {
var sample = new test.Sample(done, [
[49, 22, 65, 127, 66, 18, 64, 0],
Expand Down
2 changes: 1 addition & 1 deletion web-midi-api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"web-midi-api"
],
"dependencies": {
"jzz": "^1.6.8"
"jzz": "^1.6.9"
},
"contributors": [
{
Expand Down

0 comments on commit 5a7a5e2

Please sign in to comment.