Basic support is ready, canvas is not implemented jet
This commit is contained in:
47
lib/timec.js
47
lib/timec.js
@ -11,12 +11,9 @@ var http = httpp.createServer();
|
||||
const io = require("socket.io");
|
||||
var ioClient = require("socket.io-client")("http://localhost:5000");
|
||||
var ios = io(http);
|
||||
const rtpmidi = require("rtpmidi");
|
||||
var midisession = rtpmidi.manager.createSession({
|
||||
localName: "node",
|
||||
bonjourName: "node",
|
||||
port: 5004
|
||||
});
|
||||
const artnetp = require("artnet");
|
||||
const universe = 21;
|
||||
var artnet = artnetp({ host: "192.168.1.255" });
|
||||
class FrameTime {
|
||||
constructor(millis) {
|
||||
this.lframe = 0;
|
||||
@ -28,8 +25,8 @@ class FrameTime {
|
||||
this.milliseconds = millis;
|
||||
}
|
||||
else if (typeof millis === "object") {
|
||||
if (Number.isInteger(millis.frames) && Number.isInteger(millis.seconds) && Number.isInteger(millis.minutes) && Number.isInteger(millis.hours)) {
|
||||
this.lframe = millis.frames; //use the local, because its mor performant
|
||||
if (Number.isInteger(Number(millis.frame)) && Number.isInteger(Number(millis.seconds)) && Number.isInteger(Number(millis.minutes)) && Number.isInteger(Number(millis.hours))) {
|
||||
this.lframe = millis.frame; //use the local, because its mor performant
|
||||
this.lseconds = millis.seconds;
|
||||
this.lminutes = millis.minutes;
|
||||
this.lhours = millis.hours;
|
||||
@ -95,12 +92,16 @@ class Timecode {
|
||||
var d = new Date().getTime() - this.startTime;
|
||||
this.toTrigger.forEach(e => {
|
||||
if (e.time.milliseconds <= d) {
|
||||
ios.emit("midi", e.midi);
|
||||
midisession.sendMessage([e.midi.channel, e.midi.note, e.midi.value]);
|
||||
ios.emit("artnet", e.art);
|
||||
artnet.set(universe, e.art.subnet);
|
||||
var i = this.toTrigger.indexOf(e);
|
||||
this.toTrigger.splice(i, 1);
|
||||
}
|
||||
});
|
||||
var data = {};
|
||||
data.time = new FrameTime(d);
|
||||
data.track = this.activeTrack.id;
|
||||
ios.emit("update", data);
|
||||
}
|
||||
loadTrack(trackid) {
|
||||
this.playing = false;
|
||||
@ -145,6 +146,9 @@ class Track {
|
||||
}
|
||||
var timecode = new Timecode();
|
||||
ios.on("connection", socket => {
|
||||
function senddata() {
|
||||
ios.emit("get_data", db.getState());
|
||||
}
|
||||
console.log("Client", socket.id, "connected");
|
||||
socket.on("load", (id) => {
|
||||
var track = db.get(id).value();
|
||||
@ -171,31 +175,26 @@ ios.on("connection", socket => {
|
||||
track.triggers = [];
|
||||
db.set(track.id, track).write();
|
||||
socket.emit("created", track);
|
||||
senddata();
|
||||
});
|
||||
socket.on("set", (data) => {
|
||||
var tid = data.track;
|
||||
var midi = data.midi;
|
||||
var time = new FrameTime(data.time);
|
||||
var tracke = new TrackEvent();
|
||||
tracke.midi = midi;
|
||||
tracke.art = data.art;
|
||||
tracke.time = time;
|
||||
tracke.id = sid.generate();
|
||||
db.get(tid + ".triggers").push(tracke).write();
|
||||
socket.emit("set_finished", tracke);
|
||||
senddata();
|
||||
});
|
||||
socket.on("get", () => {
|
||||
socket.emit("get_data", db.getState());
|
||||
});
|
||||
socket.on("delete", (data) => {
|
||||
db.get(data.track + ".triggers").remove({ id: data.id }).write();
|
||||
senddata();
|
||||
});
|
||||
});
|
||||
midisession.on("ready", () => {
|
||||
http.listen(5001);
|
||||
setInterval(() => {
|
||||
midisession.sendMessage([0x80, 0x40]);
|
||||
midisession.sendMessage([0x90, 0x40, 0x7f]);
|
||||
//midisession.sendMessage([1, 5, 100]);
|
||||
}, 500);
|
||||
});
|
||||
midisession.on('message', function (deltaTime, message) {
|
||||
console.log('Received a message', message);
|
||||
});
|
||||
midisession.connect({ address: "dmx.event.margau.net", port: 5004 });
|
||||
http.listen(5001);
|
||||
//# sourceMappingURL=timec.js.map
|
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user