nodeskini 1.0.6 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blocklySkini/blocklySkini.html +5 -1
- package/blocklySkini/scripts/hiphop_blocks.js +5 -6
- package/client/controleurHH/controleurHH.html +4 -0
- package/client/queueViewer/queue.html +34 -0
- package/client/queueViewer/queue.js +187 -0
- package/client/queueViewer/style.css +26 -0
- package/client/score/parto1.js +11 -11
- package/client/score/parto1bundle.js +11 -11
- package/client/score/score.html +8 -7
- package/doc/Mode d'emploi Skini Node.pdf +0 -0
- package/myReact/orchestrationHH.hh.js +147 -1858
- package/myReact/orchestrationHH.mjs +50 -231
- package/myReact/orchestrationHH.mjs.map +1 -1
- package/package.json +1 -1
- package/pieces/tutos/tutoTestAll.hh.js +401 -0
- package/pieces/tutos/tutoTestAll.xml +18 -11
- package/serveur/OSCandMidi.mjs +27 -3
- package/serveur/controleDAW.mjs +2 -1
- package/serveur/groupeClientsSons.mjs +27 -3
- package/serveur/ipConfig.json +2 -2
- package/serveur/skiniParametres.js +56 -104
- package/serveur/utilsSkini.mjs +1 -1
- package/serveur/websocketServer.mjs +14 -4
- package/skini.mjs +4 -0
package/serveur/OSCandMidi.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @fileOverview OSC and Midi control
|
|
3
3
|
* <BR> See: http://www.indiana.edu/~emusic/cntrlnumb.html,
|
|
4
4
|
* http://www.ccarh.org/courses/253/handout/controllers/
|
|
5
|
-
* @copyright (C) 2022-
|
|
5
|
+
* @copyright (C) 2022-2026 Bertrand Petit-Hédelin
|
|
6
6
|
*
|
|
7
7
|
* This program is free software: you can redistribute it and/or modify
|
|
8
8
|
* it under the terms of the GNU General Public License as published by
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* You should have received a copy of the GNU General Public License
|
|
18
18
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
19
19
|
* @author Bertrand Petit-Hédelin <bertrand@hedelin.fr>
|
|
20
|
-
* @version 1.
|
|
20
|
+
* @version 1.5
|
|
21
21
|
*/
|
|
22
22
|
"use strict"
|
|
23
23
|
import { createRequire } from 'module';
|
|
@@ -159,7 +159,7 @@ export function sendOSCProcessing(message, val1, val2) {
|
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
/**
|
|
162
|
-
* Send a note on through OSC
|
|
162
|
+
* Send a note on through OSC or MIDI
|
|
163
163
|
* @param {number} bus
|
|
164
164
|
* @param {number} channel
|
|
165
165
|
* @param {number} note
|
|
@@ -178,6 +178,30 @@ export function sendNoteOn(bus, channel, note, velocity) {
|
|
|
178
178
|
}
|
|
179
179
|
};
|
|
180
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Send a note on through OSC or MIDI to activate a clip
|
|
183
|
+
* @param {number} note
|
|
184
|
+
*/
|
|
185
|
+
export function convertAndActivateClip(note){
|
|
186
|
+
let buf;
|
|
187
|
+
|
|
188
|
+
if (debug1) console.log("INFO: LogosOSCandMidiLocal : convertAndActivateClip: sending MIDI: " + note);
|
|
189
|
+
let channel = Math.floor(note / 127) + 1;
|
|
190
|
+
note = note % 127;
|
|
191
|
+
if (channel > 15) {
|
|
192
|
+
if (debug1) console.log("ERR: LogosOSCandMidiLocal : convertAndActivateClip: Nombre de canaux midi dépassé.");
|
|
193
|
+
return -1;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (directMidi) {
|
|
197
|
+
midiOutput.sendMessage([144 + channel, note, 100]);
|
|
198
|
+
} else {
|
|
199
|
+
buf = osc.toBuffer({ address: "/noteOn" , args: [ par.busMidiAbleton, channel, note, 127 ] });
|
|
200
|
+
return udp.send(buf, 0, buf.length, par.outportForMIDI, par.remoteIPAddressSound,
|
|
201
|
+
function(err) { if (err !== null) console.log("ERR: logosOSCandMidi: convertAndActivateClip: Erreur udp send: ", err); });
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
|
|
181
205
|
/**
|
|
182
206
|
* Send a note off through OSC
|
|
183
207
|
* @param {number} bus
|
package/serveur/controleDAW.mjs
CHANGED
|
@@ -649,7 +649,8 @@ export function cleanQueues() {
|
|
|
649
649
|
messageLog.type = "VIDAGE FILES ATTENTES";
|
|
650
650
|
logInfoDAW(messageLog);
|
|
651
651
|
if (debug) console.log("controleDAW: cleanQueues");
|
|
652
|
-
|
|
652
|
+
// Envoyer le même format que displayQueues() : un array vide car les files sont vidées
|
|
653
|
+
serv.broadcast(JSON.stringify({ type: "etatDeLaFileAttente", value: [] }));
|
|
653
654
|
}
|
|
654
655
|
|
|
655
656
|
/**
|
|
@@ -67,7 +67,7 @@ var midimix;
|
|
|
67
67
|
var orchestration;
|
|
68
68
|
var groupesClient;
|
|
69
69
|
export var matriceDesPossibles;
|
|
70
|
-
|
|
70
|
+
let timerDivision; // Nombre de pulses par tick, doit rester undefined si pas à jour par les automates
|
|
71
71
|
var nbeDeGroupesSons = 0;
|
|
72
72
|
var nombreDePatternsPossibleEnListe = [[1, 255]]; // init pour client memorySortable
|
|
73
73
|
|
|
@@ -81,6 +81,7 @@ var groupeName = "";
|
|
|
81
81
|
// On créé ce fichier à partir du xml de Blockly
|
|
82
82
|
var myReactOrchestration = "../myReact/orchestrationHH.mjs";
|
|
83
83
|
var socketControleur;
|
|
84
|
+
var socketQueueViewer;
|
|
84
85
|
var computeScorePolicy = 0;
|
|
85
86
|
var computeScoreClass = 0;
|
|
86
87
|
|
|
@@ -341,6 +342,7 @@ export function setComputeScoreClass(scoreClass) {
|
|
|
341
342
|
* @param {number} timer division
|
|
342
343
|
*/
|
|
343
344
|
export function setTimerDivision(timer) {
|
|
345
|
+
if(debug1) console.log("INFO: groupecliensSons: setTimerDivision:", timer);
|
|
344
346
|
timerDivision = timer;
|
|
345
347
|
}
|
|
346
348
|
|
|
@@ -352,6 +354,14 @@ export function setSocketControleur(socket) {
|
|
|
352
354
|
socketControleur = socket;
|
|
353
355
|
}
|
|
354
356
|
|
|
357
|
+
/**
|
|
358
|
+
* Set the queueViewer socket
|
|
359
|
+
* @param {socket} queueViewer socket
|
|
360
|
+
*/
|
|
361
|
+
export function setSocketQueueViewer(socket) {
|
|
362
|
+
socketQueueViewer = socket;
|
|
363
|
+
}
|
|
364
|
+
|
|
355
365
|
/**
|
|
356
366
|
* Call the reset of the rcoehstration matrix.
|
|
357
367
|
*/
|
|
@@ -490,7 +500,7 @@ export function informSelecteurOnMenuChange(groupe, sons, status) {
|
|
|
490
500
|
}
|
|
491
501
|
|
|
492
502
|
/**
|
|
493
|
-
* To display the tick on the controler
|
|
503
|
+
* To display the tick on the controler and queueViewer clients.
|
|
494
504
|
* @param {number} tick
|
|
495
505
|
*/
|
|
496
506
|
export function setTickOnControler(tick) {
|
|
@@ -505,6 +515,19 @@ export function setTickOnControler(tick) {
|
|
|
505
515
|
} else {
|
|
506
516
|
if (debug) console.log("ERR: groupecliensSons: informControleur: socketControleur not ready;", socketControleur.readyState);
|
|
507
517
|
}
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
// Send the tick to queueViewer.
|
|
521
|
+
if (socketQueueViewer !== undefined) {
|
|
522
|
+
if (socketQueueViewer.readyState == 1) {
|
|
523
|
+
try {
|
|
524
|
+
socketQueueViewer.send(JSON.stringify(message));
|
|
525
|
+
} catch (err) {
|
|
526
|
+
if (debug) console.log("ERR: groupecliensSons: send setTickAutomate to queueViewer", err);
|
|
527
|
+
}
|
|
528
|
+
} else {
|
|
529
|
+
if (debug) console.log("ERR: groupecliensSons: informControleur: socketControleur not ready;", socketControleur.readyState);
|
|
530
|
+
}
|
|
508
531
|
}
|
|
509
532
|
}
|
|
510
533
|
|
|
@@ -884,6 +907,7 @@ export async function makeOneAutomatePossibleMachine() {
|
|
|
884
907
|
if (debug) console.log("groupeClientsSons.js: makeOneAutomatePossibleMachine", par.groupesDesSons);
|
|
885
908
|
|
|
886
909
|
try {
|
|
910
|
+
//C'est l'import qui compile le code HH en machine HipHop.js
|
|
887
911
|
const orchestration = await import(myReactOrchestration + '?foo=bar' + tempIndex);
|
|
888
912
|
tempIndex++;
|
|
889
913
|
orchestration.setServ(serv, DAW, this, oscMidiLocal, midimix);
|
|
@@ -891,7 +915,7 @@ export async function makeOneAutomatePossibleMachine() {
|
|
|
891
915
|
|
|
892
916
|
makeSignalsListeners(machine);
|
|
893
917
|
|
|
894
|
-
if (debug) console.log("------------- groupecliensSons: makeOneAutomatePossibleMachine:
|
|
918
|
+
if (debug) console.log("------------- groupecliensSons: makeOneAutomatePossibleMachine:par: ", par);
|
|
895
919
|
|
|
896
920
|
return machine;
|
|
897
921
|
} catch (err) {
|
package/serveur/ipConfig.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
// Generated by Skini:
|
|
2
|
+
// Generated by Skini: Thu May 28 2026 10:24:15 GMT+0200 (heure d’été d’Europe centrale)
|
|
3
3
|
"use strict"
|
|
4
4
|
|
|
5
5
|
// A utiliser si Processing en passerelle
|
|
@@ -19,9 +19,9 @@ exports.english = true;
|
|
|
19
19
|
Si ces valeurs ne sont pas données c'est celle qui
|
|
20
20
|
sont dans le simulateur qui sont utilisées
|
|
21
21
|
************************************/
|
|
22
|
-
exports.tempoMax =
|
|
23
|
-
exports.tempoMin =
|
|
24
|
-
exports.limiteDureeAttente =
|
|
22
|
+
exports.tempoMax = 3000; // En ms
|
|
23
|
+
exports.tempoMin = 2900; // En ms
|
|
24
|
+
exports.limiteDureeAttente = 33; // En pulsations
|
|
25
25
|
|
|
26
26
|
/********************************************************
|
|
27
27
|
AUTOMATE
|
|
@@ -36,7 +36,7 @@ exports.pulsationON = false;
|
|
|
36
36
|
CHEMIN DES FICHIERS SONS MP3 pour les clients
|
|
37
37
|
Nom du sous répartoire ./sounds/xxxx
|
|
38
38
|
*************************************/
|
|
39
|
-
exports.soundFilesPath1 = "
|
|
39
|
+
exports.soundFilesPath1 = "";
|
|
40
40
|
|
|
41
41
|
/***************************************
|
|
42
42
|
CHEMIN DES PARTITIONS DES PATTERNS ET CONFIG AVEC MUSICIENS
|
|
@@ -83,106 +83,58 @@ exports.synchroSkini = false;
|
|
|
83
83
|
exports.timer = 500;
|
|
84
84
|
exports.gameOSCSignals = false;
|
|
85
85
|
|
|
86
|
-
exports.sensorOSC =
|
|
87
|
-
exports.tempoSensorsInit = [
|
|
88
|
-
exports.sensorsSensibilities = [
|
|
86
|
+
exports.sensorOSC = false;
|
|
87
|
+
exports.tempoSensorsInit = [0,0,0,0,0,0,0,0,0,0,0,0];
|
|
88
|
+
exports.sensorsSensibilities = [5,5,5,5,5,5,5,5,5,5,5,5];
|
|
89
89
|
|
|
90
90
|
const groupesDesSons = [
|
|
91
|
-
[ "
|
|
92
|
-
[ "
|
|
93
|
-
[ "
|
|
94
|
-
[ "
|
|
95
|
-
[ "
|
|
96
|
-
[ "
|
|
97
|
-
[ "
|
|
98
|
-
[ "
|
|
99
|
-
[ "
|
|
100
|
-
[ "
|
|
101
|
-
[ "
|
|
102
|
-
[ "
|
|
103
|
-
[ "
|
|
104
|
-
[ "
|
|
105
|
-
[ "
|
|
106
|
-
[ "
|
|
107
|
-
[ "
|
|
108
|
-
[ "
|
|
109
|
-
[ "
|
|
110
|
-
[ "
|
|
111
|
-
[ "
|
|
112
|
-
[ "
|
|
113
|
-
[ "
|
|
114
|
-
[ "
|
|
115
|
-
[ "
|
|
116
|
-
[ "
|
|
117
|
-
[ "
|
|
118
|
-
[ "
|
|
119
|
-
[ "
|
|
120
|
-
[ "
|
|
121
|
-
[ "
|
|
122
|
-
[ "
|
|
123
|
-
[ "
|
|
124
|
-
[ "
|
|
125
|
-
[ "
|
|
126
|
-
[ "
|
|
127
|
-
[ "
|
|
128
|
-
[ "
|
|
129
|
-
[ "
|
|
130
|
-
[ "
|
|
131
|
-
[ "
|
|
132
|
-
[ "
|
|
133
|
-
[ "
|
|
134
|
-
[ "
|
|
135
|
-
[ "
|
|
136
|
-
[ "
|
|
137
|
-
[ "
|
|
138
|
-
[ "
|
|
139
|
-
[ "BrassIntro4",55, "tank",,,3,"#039879",[], ],
|
|
140
|
-
[ "BrassIntro5",56, "tank",,,3,"#039879",[], ],
|
|
141
|
-
[ "BrassIntro6",57, "tank",,,3,"#039879",[], ],
|
|
142
|
-
[ "BrassIntro7",58, "tank",,,3,"#039879",[], ],
|
|
143
|
-
[ "BrassMilieu1",59, "tank",,,3,"#039879",[], ],
|
|
144
|
-
[ "BrassMilieu2",60, "tank",,,3,"#039879",[], ],
|
|
145
|
-
[ "BrassMilieu3",61, "tank",,,3,"#039879",[], ],
|
|
146
|
-
[ "BrassMilieu4",62, "tank",,,3,"#039879",[], ],
|
|
147
|
-
[ "BrassMilieu5",63, "tank",,,3,"#039879",[], ],
|
|
148
|
-
[ "BrassMilieu6",64, "tank",,,3,"#039879",[], ],
|
|
149
|
-
[ "BrassMilieu7",65, "tank",,,3,"#039879",[], ],
|
|
150
|
-
[ "BrassFin1",66, "tank",,,3,"#039879",[], ],
|
|
151
|
-
[ "BrassFin2",67, "tank",,,3,"#039879",[], ],
|
|
152
|
-
[ "BrassFin3",68, "tank",,,3,"#039879",[], ],
|
|
153
|
-
[ "BrassFin4",69, "tank",,,3,"#039879",[], ],
|
|
154
|
-
[ "BrassFin5",70, "tank",,,3,"#039879",[], ],
|
|
155
|
-
[ "BrassFin6",71, "tank",,,3,"#039879",[], ],
|
|
156
|
-
[ "BrassFin7",72, "tank",,,3,"#039879",[], ],
|
|
157
|
-
[ "Percu1",73, "tank",800,600,4,"#039879",[],1 ],
|
|
158
|
-
[ "Percu2",74, "tank",,,4,"#039879",[], ],
|
|
159
|
-
[ "Percu3",75, "tank",,,4,"#039879",[], ],
|
|
160
|
-
[ "Percu4",76, "tank",,,4,"#039879",[], ],
|
|
161
|
-
[ "Percu5",77, "tank",,,4,"#039879",[], ],
|
|
162
|
-
[ "Percu6",78, "tank",,,4,"#039879",[], ],
|
|
163
|
-
[ "Percu7",79, "tank",,,4,"#039879",[], ],
|
|
164
|
-
[ "FluteIntro1",80, "tank",400,400,5,"#039879",[],1 ],
|
|
165
|
-
[ "FluteIntro2",81, "tank",,,5,"#039879",[], ],
|
|
166
|
-
[ "FluteIntro3",82, "tank",,,5,"#039879",[], ],
|
|
167
|
-
[ "FluteIntro4",83, "tank",,,5,"#039879",[], ],
|
|
168
|
-
[ "FluteIntro5",84, "tank",,,5,"#039879",[], ],
|
|
169
|
-
[ "FluteIntro6",85, "tank",,,5,"#039879",[], ],
|
|
170
|
-
[ "FluteIntro7",86, "tank",,,5,"#039879",[], ],
|
|
171
|
-
[ "FluteMilieu1",87, "tank",,,5,"#039879",[], ],
|
|
172
|
-
[ "FluteMilieu2",88, "tank",,,5,"#039879",[], ],
|
|
173
|
-
[ "FluteMilieu3",89, "tank",,,5,"#039879",[], ],
|
|
174
|
-
[ "FluteMilieu4",90, "tank",,,5,"#039879",[], ],
|
|
175
|
-
[ "FluteMilieu5",91, "tank",,,5,"#039879",[], ],
|
|
176
|
-
[ "FluteMilieu6",92, "tank",,,5,"#039879",[], ],
|
|
177
|
-
[ "FluteMilieu7",93, "tank",,,5,"#039879",[], ],
|
|
178
|
-
[ "FluteFin1",94, "tank",,,5,"#039879",[], ],
|
|
179
|
-
[ "FluteFin2",95, "tank",,,5,"#039879",[], ],
|
|
180
|
-
[ "FluteFin3",96, "tank",,,5,"#039879",[], ],
|
|
181
|
-
[ "FluteFin4",97, "tank",,,5,"#039879",[], ],
|
|
182
|
-
[ "FluteFin5",98, "tank",,,5,"#039879",[], ],
|
|
183
|
-
[ "FluteFin6",99, "tank",,,5,"#039879",[], ],
|
|
184
|
-
[ "FluteFin7",100, "tank",,,5,"#039879",[], ],
|
|
185
|
-
[ "Flesh",110, "group",100,350,7,"#008CBA",[],1 ],
|
|
186
|
-
[ "Massive",111, "group",100,400,7,"#008CBA",[],1 ],
|
|
91
|
+
[ "PianoC",0, "group",100,100,5,"#5F6262",[],1 ],
|
|
92
|
+
[ "PianoEb",1, "group",200,100,5,"#5F6262",[],1 ],
|
|
93
|
+
[ "PianoFmin",2, "group",300,100,5,"#5F6262",[],1 ],
|
|
94
|
+
[ "FluteC1",3, "tank",400,100,1,"#5F6262",[],1 ],
|
|
95
|
+
[ "FluteC2",5, "tank",,,1,"",[],1 ],
|
|
96
|
+
[ "FluteC3",6, "tank",,,1,"",[],1 ],
|
|
97
|
+
[ "FluteC4",7, "tank",,,1,"",[],1 ],
|
|
98
|
+
[ "FluteC5",8, "tank",,,1,"",[],1 ],
|
|
99
|
+
[ "FluteC6",9, "tank",,,1,"",[],1 ],
|
|
100
|
+
[ "FluteC7",10, "tank",,,1,"",[],1 ],
|
|
101
|
+
[ "FluteC8",11, "tank",,,1,"",[],1 ],
|
|
102
|
+
[ "FluteC9",12, "tank",,,1,"",[],1 ],
|
|
103
|
+
[ "FluteC10",13, "tank",,,1,"",[],1 ],
|
|
104
|
+
[ "FluteC11",14, "tank",,,1,"",[],1 ],
|
|
105
|
+
[ "FluteC12",15, "tank",,,1,"",[],1 ],
|
|
106
|
+
[ "FluteC13",16, "tank",,,1,"",[],1 ],
|
|
107
|
+
[ "FluteC14",17, "tank",,,1,"",[],1 ],
|
|
108
|
+
[ "FluteC15",18, "tank",,,1,"",[],1 ],
|
|
109
|
+
[ "FluteEb1",19, "tank",100,200,2,"#BCA104",[],1 ],
|
|
110
|
+
[ "FluteEb2",20, "tank",,,2,"",[],1 ],
|
|
111
|
+
[ "FluteEb3",21, "tank",,,2,"",[],1 ],
|
|
112
|
+
[ "FluteEb4",22, "tank",,,2,"",[],1 ],
|
|
113
|
+
[ "FluteEb5",23, "tank",,,2,"#039879",[],1 ],
|
|
114
|
+
[ "FluteEb6",24, "tank",,,2,"#039879",[],1 ],
|
|
115
|
+
[ "FluteEb7",25, "tank",,,2,"#039879",[],1 ],
|
|
116
|
+
[ "FluteEb8",26, "tank",,,2,"",[],1 ],
|
|
117
|
+
[ "FluteEb9",27, "tank",,,2,"",[],1 ],
|
|
118
|
+
[ "FluteEb10",28, "tank",,,2,"",[],1 ],
|
|
119
|
+
[ "FluteEb11",29, "tank",,,2,"",[],1 ],
|
|
120
|
+
[ "FluteEb12",30, "tank",,,2,"",[],1 ],
|
|
121
|
+
[ "FluteEb13",31, "tank",,,2,"",[],1 ],
|
|
122
|
+
[ "FluteEb14",32, "tank",,,2,"",[],1 ],
|
|
123
|
+
[ "FluteEb15",33, "tank",,,2,"",[],1 ],
|
|
124
|
+
[ "FluteFmin1",34, "tank",200,200,3,"#BCA104",[],1 ],
|
|
125
|
+
[ "FluteFmin2",35, "tank",,,3,"",[],1 ],
|
|
126
|
+
[ "FluteFmin3",36, "tank",,,3,"",[],1 ],
|
|
127
|
+
[ "FluteFmin4",37, "tank",,,3,"",[],1 ],
|
|
128
|
+
[ "FluteFmin5",38, "tank",,,3,"",[],1 ],
|
|
129
|
+
[ "FluteFmin6",39, "tank",,,3,"",[],1 ],
|
|
130
|
+
[ "FluteFmin7",40, "tank",,,3,"",[],1 ],
|
|
131
|
+
[ "FluteFmin8",41, "tank",,,3,"",[],1 ],
|
|
132
|
+
[ "FluteFmin9",42, "tank",,,3,"",[],1 ],
|
|
133
|
+
[ "FluteFmin10",43, "tank",,,3,"",[],1 ],
|
|
134
|
+
[ "FluteFmin11",44, "tank",,,3,"",[],1 ],
|
|
135
|
+
[ "FluteFmin12",45, "tank",,,3,"",[],1 ],
|
|
136
|
+
[ "FluteFmin13",46, "tank",,,3,"",[],1 ],
|
|
137
|
+
[ "FluteFmin14",47, "tank",,,3,"",[],1 ],
|
|
138
|
+
[ "FluteFmin15",48, "tank",,,3,"",[],1 ],
|
|
187
139
|
];
|
|
188
140
|
exports.groupesDesSons = groupesDesSons;
|
package/serveur/utilsSkini.mjs
CHANGED
|
@@ -265,6 +265,7 @@ let offsetDivision = 0;
|
|
|
265
265
|
let compteurDivisionMesure = 0;
|
|
266
266
|
let nbeDeGroupesSons = 0;
|
|
267
267
|
let socketControleur;
|
|
268
|
+
let socketQueueViewer;
|
|
268
269
|
let groupeName = "";
|
|
269
270
|
let automatePossibleMachine;
|
|
270
271
|
|
|
@@ -1326,7 +1327,8 @@ maybe an hiphop compile Error`);
|
|
|
1326
1327
|
}));
|
|
1327
1328
|
break;
|
|
1328
1329
|
|
|
1329
|
-
/*
|
|
1330
|
+
/* Pas à jour dans la version node.js
|
|
1331
|
+
case "DAWStartClip":
|
|
1330
1332
|
pseudo = msgRecu.pseudo;
|
|
1331
1333
|
if (msgRecu.clipChoisi === undefined ) break; // Protection si pas de selection sur le client
|
|
1332
1334
|
if (debug) console.log("Web Socket Serveur: DAWStartClip: clipChoisi", msgRecu.clipChoisi, " pour ID: ", msgRecu.id);
|
|
@@ -1361,8 +1363,8 @@ maybe an hiphop compile Error`);
|
|
|
1361
1363
|
messageLog.pseudo = msgRecu.pseudo;
|
|
1362
1364
|
messageLog.text = msg.text;
|
|
1363
1365
|
logInfoSocket(messageLog);
|
|
1364
|
-
break
|
|
1365
|
-
|
|
1366
|
+
break;
|
|
1367
|
+
*/
|
|
1366
1368
|
case "dureeDuTickHorlogeMidi": // Reçu de Processing chaque 24 pulses de l'horloge Midi (une noire)
|
|
1367
1369
|
receivedTickFromSynchro();
|
|
1368
1370
|
break;
|
|
@@ -1871,6 +1873,14 @@ maybe an hiphop compile Error`);
|
|
|
1871
1873
|
ws.id = msgRecu.id;
|
|
1872
1874
|
if (debug) console.log("INFO: websocketserbeur: startSpectateur: ", msgRecu.id);
|
|
1873
1875
|
|
|
1876
|
+
// On ne permet donc qu'un seul queueViewer.
|
|
1877
|
+
if (msgRecu.text === "queueViewer") {
|
|
1878
|
+
if (debug1) console.log("INFO: webSocketServeur: startSpectateur: un queueViewer connecté");
|
|
1879
|
+
socketQueueViewer = ws;
|
|
1880
|
+
groupesClientSon.setSocketQueueViewer(ws);
|
|
1881
|
+
break; // Pas besoin d'aller plus loin dans ce cas
|
|
1882
|
+
}
|
|
1883
|
+
|
|
1874
1884
|
// On ne permet donc qu'un seul controleur.
|
|
1875
1885
|
// Attention: La connexion d'un deuxième contrôleur, fait perdre la première et réinitialise la matrice des possible.
|
|
1876
1886
|
if (msgRecu.text === "controleur") {
|
|
@@ -1882,7 +1892,7 @@ maybe an hiphop compile Error`);
|
|
|
1882
1892
|
type: "skiniParametres",
|
|
1883
1893
|
value: par
|
|
1884
1894
|
}));
|
|
1885
|
-
break;
|
|
1895
|
+
break; // Pas besoin d'aller plus loin dans ce cas
|
|
1886
1896
|
}
|
|
1887
1897
|
|
|
1888
1898
|
if (msgRecu.text === "pieceParameters") {
|
package/skini.mjs
CHANGED
|
@@ -130,6 +130,10 @@ function startSkini() {
|
|
|
130
130
|
res.sendFile(path.join(__dirname + '/client/parametrage/parametrage.html'));
|
|
131
131
|
});
|
|
132
132
|
|
|
133
|
+
app.get('/queueViewer', function (req, res) {
|
|
134
|
+
res.sendFile(path.join(__dirname + '/client/queueViewer/queue.html'));
|
|
135
|
+
});
|
|
136
|
+
|
|
133
137
|
var port = ipConfig.webserveurPort;
|
|
134
138
|
var addressServer = ipConfig.serverIPAddress;
|
|
135
139
|
app.listen(port, () => {
|