@tonejs/midi
Version:
Convert binary midi into JSON
98 lines • 2.74 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ControlChange = exports.controlChangeIds = exports.controlChangeNames = void 0;
/**
* A map of values to control change names
* @hidden
*/
exports.controlChangeNames = {
1: "modulationWheel",
2: "breath",
4: "footController",
5: "portamentoTime",
7: "volume",
8: "balance",
10: "pan",
64: "sustain",
65: "portamentoTime",
66: "sostenuto",
67: "softPedal",
68: "legatoFootswitch",
84: "portamentoControl",
};
/**
* swap the keys and values
* @hidden
*/
exports.controlChangeIds = Object.keys(exports.controlChangeNames).reduce(function (obj, key) {
obj[exports.controlChangeNames[key]] = key;
return obj;
}, {});
var privateHeaderMap = new WeakMap();
var privateCCNumberMap = new WeakMap();
/**
* Represents a control change event
*/
var ControlChange = /** @class */ (function () {
/**
* @param event
* @param header
*/
function ControlChange(event, header) {
privateHeaderMap.set(this, header);
privateCCNumberMap.set(this, event.controllerType);
this.ticks = event.absoluteTime;
this.value = event.value;
}
Object.defineProperty(ControlChange.prototype, "number", {
/**
* The controller number
*/
get: function () {
return privateCCNumberMap.get(this);
},
enumerable: false,
configurable: true
});
Object.defineProperty(ControlChange.prototype, "name", {
/**
* return the common name of the control number if it exists
*/
get: function () {
if (exports.controlChangeNames[this.number]) {
return exports.controlChangeNames[this.number];
}
else {
return null;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(ControlChange.prototype, "time", {
/**
* The time of the event in seconds
*/
get: function () {
var header = privateHeaderMap.get(this);
return header.ticksToSeconds(this.ticks);
},
set: function (t) {
var header = privateHeaderMap.get(this);
this.ticks = header.secondsToTicks(t);
},
enumerable: false,
configurable: true
});
ControlChange.prototype.toJSON = function () {
return {
number: this.number,
ticks: this.ticks,
time: this.time,
value: this.value,
};
};
return ControlChange;
}());
exports.ControlChange = ControlChange;
//# sourceMappingURL=ControlChange.js.map
;