nodeskini 1.0.5 → 1.0.7

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.
Files changed (179) hide show
  1. package/blocklySkini/blocklySkini.html +5 -1
  2. package/blocklySkini/scripts/hiphop_blocks.js +5 -6
  3. package/client/clientListe/clientListe.js +11 -0
  4. package/client/clientListe/clientListebundle.js +1755 -1909
  5. package/client/controleurHH/controleurHH.html +4 -0
  6. package/client/queueViewer/queue.html +34 -0
  7. package/client/queueViewer/queue.js +187 -0
  8. package/client/queueViewer/style.css +26 -0
  9. package/client/score/parto1.js +14 -11
  10. package/client/score/parto1bundle.js +55 -33
  11. package/client/score/score.html +8 -7
  12. package/doc/Doc Skini Node english.pdf +0 -0
  13. package/doc/Mode d'emploi Skini Node.pdf +0 -0
  14. package/doc/Tuto Skini.pdf +0 -0
  15. package/doc/quickstart.pdf +0 -0
  16. package/myReact/orchestrationHH.hh.js +147 -1843
  17. package/myReact/orchestrationHH.mjs +50 -231
  18. package/myReact/orchestrationHH.mjs.map +1 -1
  19. package/package.json +11 -8
  20. package/pieces/tutos/demoAbleton.csv +21 -0
  21. package/pieces/tutos/demoAbleton.js +100 -0
  22. package/pieces/tutos/demoAbleton.xml +180 -0
  23. package/pieces/tutos/demoHH.js +99 -0
  24. package/pieces/tutos/demoHH.xml +184 -0
  25. package/pieces/tutos/demoHHwait.js +100 -0
  26. package/pieces/tutos/demoHHwait.xml +175 -0
  27. package/pieces/tutos/tuto.csv +10 -0
  28. package/pieces/tutos/tuto.csv.good +1 -0
  29. package/pieces/tutos/tuto1.js +105 -0
  30. package/pieces/tutos/tuto1.xml +147 -0
  31. package/pieces/tutos/tuto10.back.js +106 -0
  32. package/pieces/tutos/tuto10.js +107 -0
  33. package/pieces/tutos/tuto10.xml +199 -0
  34. package/pieces/tutos/tuto11.js +111 -0
  35. package/pieces/tutos/tuto11.xml +124 -0
  36. package/pieces/tutos/tuto12.js +91 -0
  37. package/pieces/tutos/tuto12.xml +258 -0
  38. package/pieces/tutos/tuto2.back.js +106 -0
  39. package/pieces/tutos/tuto2.js +95 -0
  40. package/pieces/tutos/tuto2.xml +94 -0
  41. package/pieces/tutos/tuto3-2.js +105 -0
  42. package/pieces/tutos/tuto3-2.xml +96 -0
  43. package/pieces/tutos/tuto3.js +97 -0
  44. package/pieces/tutos/tuto3.xml +49 -0
  45. package/pieces/tutos/tuto4.js +107 -0
  46. package/pieces/tutos/tuto4.xml +106 -0
  47. package/pieces/tutos/tuto5.js +109 -0
  48. package/pieces/tutos/tuto5.xml +42 -0
  49. package/pieces/tutos/tuto6.js +105 -0
  50. package/pieces/tutos/tuto6.xml +26 -0
  51. package/pieces/tutos/tuto7.js +107 -0
  52. package/pieces/tutos/tuto7.xml +65 -0
  53. package/pieces/tutos/tuto8.js +105 -0
  54. package/pieces/tutos/tuto8.xml +76 -0
  55. package/pieces/tutos/tuto9.js +107 -0
  56. package/pieces/tutos/tuto9.xml +90 -0
  57. package/pieces/tutos/tutoAwait.js +111 -0
  58. package/pieces/tutos/tutoAwait.xml +171 -0
  59. package/pieces/tutos/tutoDoubleEmission.js +93 -0
  60. package/pieces/tutos/tutoDoubleEmission.xml +65 -0
  61. package/pieces/tutos/tutoESP32.js +104 -0
  62. package/pieces/tutos/tutoESP32.xml +246 -0
  63. package/pieces/tutos/tutoGame.js +126 -0
  64. package/pieces/tutos/tutoGame.xml +109 -0
  65. package/pieces/tutos/tutoGroups1.js +111 -0
  66. package/pieces/tutos/tutoGroups1.xml +137 -0
  67. package/pieces/tutos/tutoGroups2.js +97 -0
  68. package/pieces/tutos/tutoGroups2.xml +103 -0
  69. package/pieces/tutos/tutoGroups3.js +111 -0
  70. package/pieces/tutos/tutoGroups3.xml +128 -0
  71. package/pieces/tutos/tutoGroups4.js +111 -0
  72. package/pieces/tutos/tutoGroups4.xml +84 -0
  73. package/pieces/tutos/tutoIZ.js +95 -0
  74. package/pieces/tutos/tutoIZ.xml +135 -0
  75. package/pieces/tutos/tutoIf.js +111 -0
  76. package/pieces/tutos/tutoIf.xml +126 -0
  77. package/pieces/tutos/tutoMidi.js +126 -0
  78. package/pieces/tutos/tutoMidi.xml +62 -0
  79. package/pieces/tutos/tutoOS.js +121 -0
  80. package/pieces/tutos/tutoOSC.js +109 -0
  81. package/pieces/tutos/tutoOSC.xml +223 -0
  82. package/pieces/tutos/tutoOSCJonathan.js +94 -0
  83. package/pieces/tutos/tutoOSCJonathan.xml +312 -0
  84. package/pieces/tutos/tutoPatternInGroup.js +109 -0
  85. package/pieces/tutos/tutoPatternInGroup.xml +116 -0
  86. package/pieces/tutos/tutoRandomBlock.js +129 -0
  87. package/pieces/tutos/tutoRandomBlock.xml +194 -0
  88. package/pieces/tutos/tutoSuspend.js +107 -0
  89. package/pieces/tutos/tutoSuspend.xml +139 -0
  90. package/pieces/tutos/tutoSustain.js +107 -0
  91. package/pieces/tutos/tutoSustain.xml +109 -0
  92. package/pieces/tutos/tutoTank.csv +9 -0
  93. package/pieces/tutos/tutoTank.js +100 -0
  94. package/pieces/tutos/tutoTank.xml +326 -0
  95. package/pieces/tutos/tutoTestAll.csv +11 -0
  96. package/pieces/tutos/tutoTestAll.hh.js +401 -0
  97. package/pieces/tutos/tutoTestAll.js +101 -0
  98. package/pieces/tutos/tutoTestAll.xml +866 -0
  99. package/serveur/OSCandMidi.mjs +27 -3
  100. package/serveur/controleDAW.mjs +2 -1
  101. package/serveur/groupeClientsSons.mjs +27 -3
  102. package/serveur/ipConfig.json +2 -2
  103. package/serveur/skiniParametres.js +55 -10
  104. package/serveur/utilsSkini.mjs +1 -1
  105. package/serveur/websocketServer.mjs +14 -4
  106. package/skini.mjs +4 -0
  107. package/blocklySkini/archive/blocklyControleur.js +0 -87
  108. package/blocklySkini/archive/blocklySkini.js +0 -84
  109. package/blocklySkini/archive/blocklyhop.js +0 -75
  110. package/blocklySkini/archive/clientControleurBlocly.js +0 -170
  111. package/blocklySkini/archive/index.html +0 -76
  112. package/blocklySkini/archive/testHHsuspend.txt +0 -89
  113. package/blocklySkini/archive/testHHtrap.txt +0 -262
  114. package/blocklySkini/archive/testOrchestration.txt +0 -177
  115. package/blocklySkini/archive/testOrchestration.xml +0 -447
  116. package/blocklySkini/archive/testOrchestration2.xml +0 -456
  117. package/blocklySkini/scripts/hiphop_blocks.old.js +0 -3010
  118. package/blocklySkini/scripts/hiphop_blocks11-2025.js +0 -6104
  119. package/myReact/archive/Nodeemitvaluedlocal1.hh.js +0 -52
  120. package/myReact/archive/abort-parNode.js +0 -79
  121. package/myReact/archive/abroNode.js +0 -169
  122. package/myReact/archive/abroNode2.js +0 -80
  123. package/myReact/archive/atom.compile.hh.js +0 -52
  124. package/myReact/archive/await-countNode.js +0 -67
  125. package/myReact/archive/await-nowvalNode.js +0 -44
  126. package/myReact/archive/callHH.js +0 -96
  127. package/myReact/archive/emit-if2.hh.compiled.js +0 -113
  128. package/myReact/archive/every1Node.js +0 -35
  129. package/myReact/archive/if-runNode.js +0 -74
  130. package/myReact/archive/if1Node.js +0 -43
  131. package/myReact/archive/makeawait.js +0 -0
  132. package/myReact/archive/myReact.old.js +0 -684
  133. package/myReact/archive/orchestration.js +0 -281
  134. package/myReact/archive/orchestration1.js +0 -132
  135. package/myReact/archive/orchestration1.xml +0 -465
  136. package/myReact/archive/orchestration2.js +0 -161
  137. package/myReact/archive/orchestrationHH.mano.js +0 -280
  138. package/myReact/archive/orchestrationHHTest.js +0 -428
  139. package/myReact/archive/orchestrationHHTest.xml +0 -234
  140. package/myReact/archive/orchestrationHHTestRun.js +0 -104
  141. package/myReact/archive/orchestrationHHTestRun.xml +0 -34
  142. package/myReact/archive/orchestrationTest0.js +0 -178
  143. package/myReact/archive/orchestrationTest1.js +0 -181
  144. package/myReact/archive/orchestrationTest2.js +0 -281
  145. package/myReact/archive/run3pointsNode.js +0 -59
  146. package/myReact/archive/runNode.js +0 -123
  147. package/myReact/archive/runNode2.js +0 -91
  148. package/myReact/archive/testAwait1.js +0 -141
  149. package/myReact/archive/testAwait1.xml +0 -86
  150. package/myReact/archive/testEvery1.js +0 -122
  151. package/myReact/archive/testEvery1.xml +0 -79
  152. package/myReact/archive/testHH1.js +0 -135
  153. package/myReact/archive/testHH1.xml +0 -86
  154. package/myReact/archive/testHH1revu.js +0 -104
  155. package/myReact/archive/testHH2.js +0 -122
  156. package/myReact/archive/testHH2.xml +0 -79
  157. package/myReact/archive/testHH3.js +0 -130
  158. package/myReact/archive/testHH3.xml +0 -86
  159. package/myReact/archive/testHHabort.js +0 -121
  160. package/myReact/archive/testHHabort.xml +0 -83
  161. package/myReact/archive/testMakeawait.js +0 -202
  162. package/myReact/archive/testRun1.js +0 -168
  163. package/myReact/archive/testRun1.xml +0 -142
  164. package/myReact/archive/titi.js +0 -28
  165. package/myReact/archive/titi.xml +0 -110
  166. package/myReact/archive/toto.js +0 -73
  167. package/myReact/archive/toto.xml +0 -198
  168. package/myReact/archive/trap-await-parallelNode.js +0 -123
  169. package/myReact/inutiles/hiver2022.xml +0 -804
  170. package/myReact/inutiles/hopeNode.xml +0 -459
  171. package/myReact/inutiles/mars2022.xml +0 -871
  172. package/myReact/inutiles/mystique1.xml +0 -318
  173. package/myReact/inutiles/mystiqueOSC.xml +0 -277
  174. package/myReact/inutiles/opus5Node.xml +0 -1271
  175. package/myReact/inutiles/opus5NodeLinux.xml +0 -1241
  176. package/myReact/inutiles/orchestrationHH.xml +0 -541
  177. package/myReact/inutiles/orchestrationHH2.xml +0 -547
  178. package/myReact/inutiles/testHH.xml +0 -95
  179. package/myReact/inutiles/trouveLaPercuTenor.xml +0 -349
@@ -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-2024 Bertrand Petit-Hédelin
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.4
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
@@ -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
- serv.broadcast(JSON.stringify({ type: "etatDeLaFileAttente", value: filesDattente }));
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
- var timerDivision; // Nombre de pulses par tick, doit rester undefined si pas à jour par les automates
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 client.
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:machine: ", machine);
918
+ if (debug) console.log("------------- groupecliensSons: makeOneAutomatePossibleMachine:par: ", par);
895
919
 
896
920
  return machine;
897
921
  } catch (err) {
@@ -19,6 +19,6 @@
19
19
  "outportProcessing": 10000,
20
20
  "outportLumiere": 7700,
21
21
  "inportLumiere": 9000,
22
- "sessionPath": "./pieces/opus/",
23
- "piecePath" : "./pieces/opus/"
22
+ "sessionPath": "./pieces/etudesHarmonie/",
23
+ "piecePath" : "./pieces/etudesHarmonie/"
24
24
  }
@@ -1,5 +1,5 @@
1
1
 
2
- // Generated by Skini: Tue Dec 23 2025 18:00:58 GMT+0100 (heure normale d’Europe centrale)
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,8 +19,8 @@ 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 = 500; // En ms
23
- exports.tempoMin = 400; // En ms
22
+ exports.tempoMax = 3000; // En ms
23
+ exports.tempoMin = 2900; // En ms
24
24
  exports.limiteDureeAttente = 33; // En pulsations
25
25
 
26
26
  /********************************************************
@@ -54,7 +54,7 @@ Si autre ... à créer...
54
54
  ATTENTION: NE JAMAIS UTILISER EN SITUATION D'INTERACTION SI L'ALGORITHME
55
55
  PEUT SUPPRIMER DES PATTERNS DES FIFOs
56
56
  *****************************************/
57
- exports.algoGestionFifo = 0;
57
+ exports.algoGestionFifo = 2;
58
58
  exports.shufflePatterns = false;
59
59
  /*****************************************************************************
60
60
 
@@ -83,13 +83,58 @@ exports.synchroSkini = false;
83
83
  exports.timer = 500;
84
84
  exports.gameOSCSignals = false;
85
85
 
86
- exports.sensorOSC = true;
87
- exports.tempoSensorsInit = [100,100,100,100,20,20,20,20,20,20,20,20];
88
- exports.sensorsSensibilities = [200,200,200,200,200,5,5,5,5,5,5,5];
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
- [ "toto",1, "group",100,100,3,"",[],1 ],
92
- [ "titi",2, "group",200,200,3,"",[],1 ],
93
- [ "tutu",2, "group",300,300,3,"",[],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 ],
94
139
  ];
95
140
  exports.groupesDesSons = groupesDesSons;
@@ -31,7 +31,7 @@ let debug1 = true;
31
31
  export function creationInterfacesOUT(groupes) {
32
32
  if (groupes !== undefined) {
33
33
  return groupes.map(function (k) {
34
- return k[0] + "OUT";
34
+ return k[0] + "OUT";
35
35
  })
36
36
  };
37
37
  }
@@ -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
- /* case "DAWStartClip":
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, () => {
@@ -1,87 +0,0 @@
1
- "use hiphop"
2
- "use hopscript"
3
-
4
- require.lang = "hopscript";
5
- require("./scripts/surLeServeurSkini.js", "hiphop");
6
- var par = require('../serveur/logosParametres');
7
-
8
- // Services dans d'autres fichiers, il faut aussi les déclarer ici
9
- service printServeurFromBlockly();
10
- service getFileBlockly();
11
- service saveBlocksServer();
12
- service generateHHcode();
13
-
14
- //console.log( "For Blockly, gGo to \"http://localhost:%d/hop/block\"", hop.port );
15
-
16
- service block() {
17
- return <html>
18
- <head>
19
- <link rel="stylesheet" href=${require.resolve("./styles/index.css")}>
20
- <script src="hiphop" lang="hopscript"/>
21
- // Déclarations nécessaires pour faire les requires sur le client.
22
- <script src="./scripts/hiphop_blocks.js" lang="hiphop"/>
23
- <script src="./scripts/main2.js" lang="hiphop"/>
24
- <script src='./clientControleurBlocly.js' lang='hopscript'/>
25
- <script src='../serveur/logosParametres' lang='hopscript'/>
26
- <meta charset="UTF-8" name="viewport" />
27
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
28
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
29
-
30
- <title>Blockly and Hop.js</title>
31
- </head>
32
- ~{
33
- var mainProg, clientControleur, printServeur;
34
- window.onload = function() {
35
- // Require correspondant aux déclarations ci-dessus
36
- require('./scripts/hiphop_blocks.js', "hiphop");
37
- mainProg = require('./scripts/main2.js');
38
- clientControleur = require('./clientControleurBlocly.js');
39
- printServeur = ${printServeurFromBlockly};
40
- console.log("mainprog");
41
- printServeur("-- Blockly for Skini started --").post();
42
- mainProg.init();
43
- clientControleur.init(${hop.port}, ${par});
44
- }
45
- }
46
- <body>
47
- <table>
48
- <thead>
49
- <tr>
50
- <td>
51
- <header class="mdl-color--cyan-500">
52
- <h1 class="mode-maker">Orchestration Skini</h1>
53
- <div id="menubar">
54
- <label for="loadFile" class="small button">Select Blockly File</label>
55
- <input type="file" id="loadFile" onchange=~{mainProg.loadBlocks();} />
56
-
57
- <button class="small button" id="buttonSave" onclick=~{mainProg.saveBlocksAndGenerateHH();} >Save Blocks</button>
58
- <input class="inputText" type="text" id="saveFile" />
59
- <input class="inputText" type="text" id="consoleArea" />
60
-
61
- <button class="small button" id="buttonLoadAbleton1" onclick=~{clientControleur.loadAbleton(1);} >ORCH1</button>
62
- <button class="small button" id="buttonLoadAbleton2" onclick=~{clientControleur.loadAbleton(2);} >ORCH2</button>
63
- <button class="small button" id="buttonLoadAbleton3" onclick=~{clientControleur.loadAbleton(3);} >ORCH3</button>
64
-
65
- <button id="buttonStopAutomate" class="small button" style="display:none" onclick=~{clientControleur.stopAutomate();} >AUT OFF</button>
66
- <button id="buttonStartAutomate" class="small button" onclick=~{clientControleur.startAutomate();} >AUT ON</button>
67
-
68
- </div>
69
- </header>
70
- </td>
71
- </tr>
72
- </thead>
73
- <tbody>
74
- <tr>
75
- <td id="blocklyArea"></td>
76
- </tr>
77
- </tbody>
78
- </table>
79
-
80
- <div id="blocklyDiv" style="position: absolute"></div>
81
- <script src=${block.resource("./blockly/blockly.min.js")}></script>
82
- <script src=${block.resource("./blockly/javascript_compressed.js")}></script>
83
- </body>
84
- </html>
85
- };
86
- exports.block = block;
87
-
@@ -1,84 +0,0 @@
1
- /**************************************************
2
-
3
- Editeur Skini en ligne avec Blockly
4
-
5
- © Copyright 2017-2021, Bertrand Petit-Hédelin
6
-
7
- ****************************************************/
8
-
9
- "use hiphop"
10
- "use hopscript"
11
-
12
- require.lang = "hopscript";
13
- require("./scripts/surLeServeurSkini.js", "hiphop");
14
-
15
- // Services dans d'autres fichiers, il faut aussi les déclarer ici
16
- service printServeurFromBlockly();
17
- service getFileBlockly();
18
- service saveBlocksServer();
19
- service generateHHcode();
20
-
21
- //console.log( "For Blockly, gGo to \"http://localhost:%d/hop/block\"", hop.port );
22
-
23
- service block() {
24
- return <html>
25
- <head>
26
- <link rel="stylesheet" href=${require.resolve("./styles/index.css")}>
27
- <script src="hiphop" lang="hopscript"/>
28
- // Déclarations nécessaires pour faire les requires sur le client.
29
- <script src="./scripts/hiphop_blocks.js" lang="hiphop"/>
30
- <script src="./scripts/main2.js" lang="hiphop"/>
31
- <meta charset="UTF-8" name="viewport" />
32
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
33
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
34
- <title>Blockly and Hop.js</title>
35
- </head>
36
- ~{
37
- var mainProg;
38
- window.onload = function() {
39
- // Require correspondant aux déclarations ci-dessus
40
- require('./scripts/hiphop_blocks.js', "hiphop");
41
- mainProg = require('./scripts/main2.js');
42
- var printServeur = ${printServeurFromBlockly};
43
- console.log("mainprog");
44
- printServeur("-- Blockly for Skini started --").post();
45
- mainProg.init();
46
- }
47
- }
48
- <body>
49
- <table>
50
- <thead>
51
- <tr>
52
- <td>
53
- <header class="mdl-color--cyan-500">
54
- <h1 class="mode-maker">Orchestration Skini</h1>
55
- <div id="menubar">
56
- <!--
57
- <button class="small button" id="buttonGenerate" onclick=~{mainProg.save();} >Generate HipHop</button>
58
- -->
59
- <label for="loadFile" class="small button">Select Blockly File</label>
60
- <input type="file" id="loadFile" onchange=~{mainProg.loadBlocks();} />
61
-
62
- <button class="small button" id="buttonSave" onclick=~{mainProg.saveBlocksAndGenerateHH();} >Save Blocks</button>
63
- <input class="inputText" type="text" id="saveFile" />
64
- <input class="inputText" type="text" id="consoleArea" />
65
- </div>
66
- </header>
67
- </td>
68
- </tr>
69
- </thead>
70
- <tbody>
71
- <tr>
72
- <td id="blocklyArea"></td>
73
- </tr>
74
- </tbody>
75
- </table>
76
-
77
- <div id="blocklyDiv" style="position: absolute"></div>
78
- <script src=${block.resource("./blockly/blockly.min.js")}></script>
79
- <script src=${block.resource("./blockly/javascript_compressed.js")}></script>
80
- </body>
81
- </html>
82
- };
83
- exports.block = block;
84
-
@@ -1,75 +0,0 @@
1
- "use hiphop"
2
- "use hopscript"
3
-
4
- require.lang = "hopscript";
5
- require("./scripts/surLeServeur.js", "hiphop");
6
-
7
-
8
- // Services dans d'autres fichiers, il faut aussi les déclarer ici
9
- service printServeur();
10
- //service executeHHServeur();
11
-
12
- console.log( "Go to \"http://localhost:%d/hop/block\"", hop.port );
13
-
14
- service block() {
15
- return <html>
16
- <head>
17
- <link rel="stylesheet" href=${require.resolve("./styles/index.css")}>
18
- <script src="hiphop" lang="hopscript"/>
19
- // Déclarations nécessaires pour faire les requires sur le client.
20
- <script src="./scripts/hiphop_blocks.js" lang="hiphop"/>
21
- <script src="./scripts/main2.js" lang="hiphop"/>
22
- <meta charset="UTF-8" name="viewport" />
23
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
24
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
25
- <title>Blockly and Hop.js</title>
26
- </head>
27
- ~{
28
- var mainProg;
29
- window.onload = function() {
30
- // Require correspondant aux déclarations ci-dessus
31
- require('./scripts/hiphop_blocks.js', "hiphop");
32
- mainProg = require('./scripts/main2.js');
33
- var printServeur = ${printServeur};
34
- console.log("mainprog");
35
- printServeur("declaration").post();
36
- mainProg.init();
37
- }
38
- }
39
- <body>
40
- <table>
41
- <tbody>
42
- <tr>
43
- <td>
44
- <header class="mdl-color--cyan-500">
45
- <h1 class="mode-maker">HipHop Orchestration</h1>
46
- <div id="menubar">
47
- <button class="small button" id="buttonGenerate" onclick=~{mainProg.save();} >Generate HipHop</button>
48
-
49
- <button class="small button" id="runButton" onclick=~{mainProg.runHH();} >Run HipHop</button>
50
- <input class="inputText" type="text" id="signalsHH" style="max-width:400px" />
51
-
52
- <label for="loadFile" class="small button">Select File</label>
53
- <input type="file" id="loadFile" onchange=~{mainProg.loadBlocks();} />
54
-
55
- <button class="small button" id="buttonSave" onclick=~{mainProg.saveBlocks();} >Save Blocks</button>
56
- <input class="inputText" type="text" id="saveFile" style="max-width:400px" />
57
- </div>
58
- </header>
59
- </td>
60
- </tr>
61
- <tr>
62
- <td id="blocklyArea">
63
- </td>
64
- </tr>
65
- </tbody>
66
- </table>
67
-
68
- <div id="blocklyDiv" style="position: absolute"></div>
69
- <script src=${block.resource("./blockly/blockly.min.js")}></script>
70
- <script src=${block.resource("./blockly/javascript_compressed.js")}></script>
71
- </body>
72
- </html>
73
- };
74
- exports.block = block;
75
-