239 lines
9.8 KiB
JavaScript
239 lines
9.8 KiB
JavaScript
exports.__esModule = true;
|
|
exports.Mitti = void 0;
|
|
var HyperdeckLib = require("hyperdeck-js-lib");
|
|
var Mitti = /** @class */ (function () {
|
|
function Mitti(ip) {
|
|
this.events = {};
|
|
this.connected = false;
|
|
// console.log(`Connecting to hyperdeck at ${ip}`);
|
|
var _this = this;
|
|
this.hyperdeck = new HyperdeckLib.Hyperdeck(ip);
|
|
this.hyperdeck
|
|
.onConnected()
|
|
.then(function () {
|
|
_this.hyperdeck.getNotifier().on('asynchronousEvent', function (response) {
|
|
//console.log('Got an asynchronous event with code ' + response.code + '.');
|
|
});
|
|
_this.hyperdeck.getNotifier().on('connectionLost', function () {
|
|
_this.connected = false;
|
|
console.error('Connection lost.');
|
|
if (_this.events.connectionlost != undefined)
|
|
_this.events.connectionlost();
|
|
});
|
|
if (_this.events.connected != undefined)
|
|
_this.events.connected();
|
|
})["catch"](function (error) {
|
|
console.log(error);
|
|
_this.connected = false;
|
|
if (_this.events.connecterror != undefined)
|
|
_this.events.connecterror('Failed to connect to hyperdeck.');
|
|
});
|
|
}
|
|
Mitti.prototype.on = function (event, callback) {
|
|
if (this.events[event] != undefined)
|
|
throw new Error("Event '" + event + "' already created");
|
|
else {
|
|
this.events[event] = callback;
|
|
if (event == 'connected' && this.connected == true)
|
|
callback();
|
|
}
|
|
};
|
|
Mitti.prototype.raw = function (command) {
|
|
var _this_1 = this;
|
|
return new Promise(function (resolve, reject) {
|
|
//console.log('Sending command: ' + command);
|
|
_this_1.hyperdeck
|
|
.makeRequest(command)
|
|
.then(function (response) {
|
|
//console.log('Got response with code ' + response.code + '.');
|
|
resolve(response);
|
|
})["catch"](function (errResponse) {
|
|
if (!errResponse) {
|
|
reject(new Error('The request failed because the hyperdeck connection was lost.'));
|
|
}
|
|
else {
|
|
reject(new Error('The hyperdeck returned an error with status code ' + errResponse.code + '.'));
|
|
}
|
|
});
|
|
});
|
|
};
|
|
Mitti.prototype.getTransportInfo = function () {
|
|
var _this_1 = this;
|
|
return new Promise(function (resolve, reject) {
|
|
//console.log('Getting transport info');
|
|
_this_1.hyperdeck
|
|
.makeRequest('transport info')
|
|
.then(function (response) {
|
|
//console.log('Got response with code ' + response.code + '.');
|
|
if (response.params != undefined) {
|
|
resolve(response.params);
|
|
}
|
|
else {
|
|
reject(new Error('Response contained no params'));
|
|
}
|
|
})["catch"](function (errResponse) {
|
|
if (!errResponse) {
|
|
reject(new Error('The request failed because the hyperdeck connection was lost.'));
|
|
}
|
|
else {
|
|
reject(new Error('The hyperdeck returned an error with status code ' + errResponse.code + '.'));
|
|
}
|
|
});
|
|
});
|
|
};
|
|
Mitti.prototype.getClipCount = function () {
|
|
var _this_1 = this;
|
|
return new Promise(function (resolve, reject) {
|
|
//console.log('Getting clips');
|
|
_this_1.hyperdeck
|
|
.makeRequest('clips count')
|
|
.then(function (response) {
|
|
//console.log('Got response with code ' + response.code + '.');
|
|
if (response.params != undefined) {
|
|
if (response.params['clip count'] != undefined) {
|
|
resolve(response.params['clip count']);
|
|
}
|
|
else {
|
|
reject(new Error('Response contained no clip count data'));
|
|
}
|
|
}
|
|
else {
|
|
reject(new Error('Response contained no params data'));
|
|
}
|
|
})["catch"](function (errResponse) {
|
|
if (!errResponse) {
|
|
reject(new Error('The request failed because the hyperdeck connection was lost.'));
|
|
}
|
|
else {
|
|
reject(new Error('The hyperdeck returned an error with status code ' + errResponse.code + '.'));
|
|
}
|
|
});
|
|
});
|
|
};
|
|
Mitti.prototype.getClips = function () {
|
|
var _this_1 = this;
|
|
return new Promise(function (resolve, reject) {
|
|
//console.log('Getting clips');
|
|
_this_1.hyperdeck
|
|
.clipsGet()
|
|
.then(function (response) {
|
|
//console.log('Got response with code ' + response.code + '.');
|
|
if (response.params != undefined) {
|
|
if (response.params['clip count'] != undefined)
|
|
delete response.params['clip count'];
|
|
resolve(response.params);
|
|
}
|
|
else {
|
|
reject(new Error('Response contained no clip data'));
|
|
}
|
|
})["catch"](function (errResponse) {
|
|
if (!errResponse) {
|
|
reject(new Error('The request failed because the hyperdeck connection was lost.'));
|
|
}
|
|
else {
|
|
reject(new Error('The hyperdeck returned an error with status code ' + errResponse.code + '.'));
|
|
}
|
|
});
|
|
});
|
|
};
|
|
Mitti.prototype.selectClip = function (index) {
|
|
var _this_1 = this;
|
|
return new Promise(function (resolve, reject) {
|
|
//console.log('Selecting clip');
|
|
_this_1.hyperdeck
|
|
.makeRequest("goto: clip id: " + index)
|
|
.then(function (response) {
|
|
//console.log('Got response with code ' + response.code + '.');
|
|
resolve(true);
|
|
})["catch"](function (errResponse) {
|
|
if (!errResponse) {
|
|
reject(new Error('The request failed because the hyperdeck connection was lost.'));
|
|
}
|
|
else {
|
|
reject(new Error('The hyperdeck returned an error with status code ' + errResponse.code + '.'));
|
|
}
|
|
});
|
|
});
|
|
};
|
|
Mitti.prototype.play = function () {
|
|
var _this_1 = this;
|
|
return new Promise(function (resolve, reject) {
|
|
//console.log('Playing');
|
|
_this_1.hyperdeck
|
|
.play()
|
|
.then(function (response) {
|
|
//console.log('Got response with code ' + response.code + '.');
|
|
resolve(true);
|
|
})["catch"](function (errResponse) {
|
|
if (!errResponse) {
|
|
reject(new Error('The request failed because the hyperdeck connection was lost.'));
|
|
}
|
|
else {
|
|
reject(new Error('The hyperdeck returned an error with status code ' + errResponse.code + '.'));
|
|
}
|
|
});
|
|
});
|
|
};
|
|
Mitti.prototype.stop = function () {
|
|
var _this_1 = this;
|
|
return new Promise(function (resolve, reject) {
|
|
//console.log('Stopping');
|
|
_this_1.hyperdeck
|
|
.stop()
|
|
.then(function (response) {
|
|
//console.log('Got response with code ' + response.code + '.');
|
|
resolve(true);
|
|
})["catch"](function (errResponse) {
|
|
if (!errResponse) {
|
|
reject(new Error('The request failed because the hyperdeck connection was lost.'));
|
|
}
|
|
else {
|
|
reject(new Error('The hyperdeck returned an error with status code ' + errResponse.code + '.'));
|
|
}
|
|
});
|
|
});
|
|
};
|
|
Mitti.prototype.next = function (wrap) {
|
|
var _this_1 = this;
|
|
return new Promise(function (resolve, reject) {
|
|
//console.log('Next clip');
|
|
_this_1.getTransportInfo()
|
|
.then(function (transportInfo) {
|
|
var newClip = parseInt(transportInfo['clip id']) + 1;
|
|
if (wrap == true) {
|
|
_this_1.getClipCount()
|
|
.then(function (clipCount) {
|
|
if (newClip > clipCount)
|
|
newClip = 1;
|
|
_this_1.selectClip(newClip).then(resolve)["catch"](reject);
|
|
})["catch"](reject);
|
|
}
|
|
else
|
|
_this_1.selectClip(newClip).then(resolve)["catch"](reject);
|
|
})["catch"](reject);
|
|
});
|
|
};
|
|
Mitti.prototype.previous = function (wrap) {
|
|
var _this_1 = this;
|
|
return new Promise(function (resolve, reject) {
|
|
//console.log('Previous clip');
|
|
_this_1.getTransportInfo()
|
|
.then(function (transportInfo) {
|
|
var newClip = parseInt(transportInfo['clip id']) - 1;
|
|
if (wrap == true) {
|
|
_this_1.getClipCount()
|
|
.then(function (clipCount) {
|
|
if (newClip < 1)
|
|
newClip = clipCount;
|
|
_this_1.selectClip(newClip).then(resolve)["catch"](reject);
|
|
})["catch"](reject);
|
|
}
|
|
else
|
|
_this_1.selectClip(newClip).then(resolve)["catch"](reject);
|
|
})["catch"](reject);
|
|
});
|
|
};
|
|
return Mitti;
|
|
}());
|
|
exports.Mitti = Mitti;
|
|
//# sourceMappingURL=MittiClass.js.map
|