nodeskini 1.0.5 → 1.0.6
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/client/clientListe/clientListe.js +11 -0
- package/client/clientListe/clientListebundle.js +1755 -1909
- package/client/score/parto1.js +4 -1
- package/client/score/parto1bundle.js +45 -23
- package/doc/Doc Skini Node english.pdf +0 -0
- package/doc/Mode d'emploi Skini Node.pdf +0 -0
- package/doc/Tuto Skini.pdf +0 -0
- package/doc/quickstart.pdf +0 -0
- package/myReact/orchestrationHH.hh.js +27 -12
- package/myReact/orchestrationHH.mjs +170 -170
- package/myReact/orchestrationHH.mjs.map +1 -1
- package/package.json +11 -8
- package/pieces/tutos/demoAbleton.csv +21 -0
- package/pieces/tutos/demoAbleton.js +100 -0
- package/pieces/tutos/demoAbleton.xml +180 -0
- package/pieces/tutos/demoHH.js +99 -0
- package/pieces/tutos/demoHH.xml +184 -0
- package/pieces/tutos/demoHHwait.js +100 -0
- package/pieces/tutos/demoHHwait.xml +175 -0
- package/pieces/tutos/tuto.csv +10 -0
- package/pieces/tutos/tuto.csv.good +1 -0
- package/pieces/tutos/tuto1.js +105 -0
- package/pieces/tutos/tuto1.xml +147 -0
- package/pieces/tutos/tuto10.back.js +106 -0
- package/pieces/tutos/tuto10.js +107 -0
- package/pieces/tutos/tuto10.xml +199 -0
- package/pieces/tutos/tuto11.js +111 -0
- package/pieces/tutos/tuto11.xml +124 -0
- package/pieces/tutos/tuto12.js +91 -0
- package/pieces/tutos/tuto12.xml +258 -0
- package/pieces/tutos/tuto2.back.js +106 -0
- package/pieces/tutos/tuto2.js +95 -0
- package/pieces/tutos/tuto2.xml +94 -0
- package/pieces/tutos/tuto3-2.js +105 -0
- package/pieces/tutos/tuto3-2.xml +96 -0
- package/pieces/tutos/tuto3.js +97 -0
- package/pieces/tutos/tuto3.xml +49 -0
- package/pieces/tutos/tuto4.js +107 -0
- package/pieces/tutos/tuto4.xml +106 -0
- package/pieces/tutos/tuto5.js +109 -0
- package/pieces/tutos/tuto5.xml +42 -0
- package/pieces/tutos/tuto6.js +105 -0
- package/pieces/tutos/tuto6.xml +26 -0
- package/pieces/tutos/tuto7.js +107 -0
- package/pieces/tutos/tuto7.xml +65 -0
- package/pieces/tutos/tuto8.js +105 -0
- package/pieces/tutos/tuto8.xml +76 -0
- package/pieces/tutos/tuto9.js +107 -0
- package/pieces/tutos/tuto9.xml +90 -0
- package/pieces/tutos/tutoAwait.js +111 -0
- package/pieces/tutos/tutoAwait.xml +171 -0
- package/pieces/tutos/tutoDoubleEmission.js +93 -0
- package/pieces/tutos/tutoDoubleEmission.xml +65 -0
- package/pieces/tutos/tutoESP32.js +104 -0
- package/pieces/tutos/tutoESP32.xml +246 -0
- package/pieces/tutos/tutoGame.js +126 -0
- package/pieces/tutos/tutoGame.xml +109 -0
- package/pieces/tutos/tutoGroups1.js +111 -0
- package/pieces/tutos/tutoGroups1.xml +137 -0
- package/pieces/tutos/tutoGroups2.js +97 -0
- package/pieces/tutos/tutoGroups2.xml +103 -0
- package/pieces/tutos/tutoGroups3.js +111 -0
- package/pieces/tutos/tutoGroups3.xml +128 -0
- package/pieces/tutos/tutoGroups4.js +111 -0
- package/pieces/tutos/tutoGroups4.xml +84 -0
- package/pieces/tutos/tutoIZ.js +95 -0
- package/pieces/tutos/tutoIZ.xml +135 -0
- package/pieces/tutos/tutoIf.js +111 -0
- package/pieces/tutos/tutoIf.xml +126 -0
- package/pieces/tutos/tutoMidi.js +126 -0
- package/pieces/tutos/tutoMidi.xml +62 -0
- package/pieces/tutos/tutoOS.js +121 -0
- package/pieces/tutos/tutoOSC.js +109 -0
- package/pieces/tutos/tutoOSC.xml +223 -0
- package/pieces/tutos/tutoOSCJonathan.js +94 -0
- package/pieces/tutos/tutoOSCJonathan.xml +312 -0
- package/pieces/tutos/tutoPatternInGroup.js +109 -0
- package/pieces/tutos/tutoPatternInGroup.xml +116 -0
- package/pieces/tutos/tutoRandomBlock.js +129 -0
- package/pieces/tutos/tutoRandomBlock.xml +194 -0
- package/pieces/tutos/tutoSuspend.js +107 -0
- package/pieces/tutos/tutoSuspend.xml +139 -0
- package/pieces/tutos/tutoSustain.js +107 -0
- package/pieces/tutos/tutoSustain.xml +109 -0
- package/pieces/tutos/tutoTank.csv +9 -0
- package/pieces/tutos/tutoTank.js +100 -0
- package/pieces/tutos/tutoTank.xml +326 -0
- package/pieces/tutos/tutoTestAll.csv +11 -0
- package/pieces/tutos/tutoTestAll.js +101 -0
- package/pieces/tutos/tutoTestAll.xml +859 -0
- package/serveur/skiniParametres.js +104 -11
- package/blocklySkini/archive/blocklyControleur.js +0 -87
- package/blocklySkini/archive/blocklySkini.js +0 -84
- package/blocklySkini/archive/blocklyhop.js +0 -75
- package/blocklySkini/archive/clientControleurBlocly.js +0 -170
- package/blocklySkini/archive/index.html +0 -76
- package/blocklySkini/archive/testHHsuspend.txt +0 -89
- package/blocklySkini/archive/testHHtrap.txt +0 -262
- package/blocklySkini/archive/testOrchestration.txt +0 -177
- package/blocklySkini/archive/testOrchestration.xml +0 -447
- package/blocklySkini/archive/testOrchestration2.xml +0 -456
- package/blocklySkini/scripts/hiphop_blocks.old.js +0 -3010
- package/blocklySkini/scripts/hiphop_blocks11-2025.js +0 -6104
- package/myReact/archive/Nodeemitvaluedlocal1.hh.js +0 -52
- package/myReact/archive/abort-parNode.js +0 -79
- package/myReact/archive/abroNode.js +0 -169
- package/myReact/archive/abroNode2.js +0 -80
- package/myReact/archive/atom.compile.hh.js +0 -52
- package/myReact/archive/await-countNode.js +0 -67
- package/myReact/archive/await-nowvalNode.js +0 -44
- package/myReact/archive/callHH.js +0 -96
- package/myReact/archive/emit-if2.hh.compiled.js +0 -113
- package/myReact/archive/every1Node.js +0 -35
- package/myReact/archive/if-runNode.js +0 -74
- package/myReact/archive/if1Node.js +0 -43
- package/myReact/archive/makeawait.js +0 -0
- package/myReact/archive/myReact.old.js +0 -684
- package/myReact/archive/orchestration.js +0 -281
- package/myReact/archive/orchestration1.js +0 -132
- package/myReact/archive/orchestration1.xml +0 -465
- package/myReact/archive/orchestration2.js +0 -161
- package/myReact/archive/orchestrationHH.mano.js +0 -280
- package/myReact/archive/orchestrationHHTest.js +0 -428
- package/myReact/archive/orchestrationHHTest.xml +0 -234
- package/myReact/archive/orchestrationHHTestRun.js +0 -104
- package/myReact/archive/orchestrationHHTestRun.xml +0 -34
- package/myReact/archive/orchestrationTest0.js +0 -178
- package/myReact/archive/orchestrationTest1.js +0 -181
- package/myReact/archive/orchestrationTest2.js +0 -281
- package/myReact/archive/run3pointsNode.js +0 -59
- package/myReact/archive/runNode.js +0 -123
- package/myReact/archive/runNode2.js +0 -91
- package/myReact/archive/testAwait1.js +0 -141
- package/myReact/archive/testAwait1.xml +0 -86
- package/myReact/archive/testEvery1.js +0 -122
- package/myReact/archive/testEvery1.xml +0 -79
- package/myReact/archive/testHH1.js +0 -135
- package/myReact/archive/testHH1.xml +0 -86
- package/myReact/archive/testHH1revu.js +0 -104
- package/myReact/archive/testHH2.js +0 -122
- package/myReact/archive/testHH2.xml +0 -79
- package/myReact/archive/testHH3.js +0 -130
- package/myReact/archive/testHH3.xml +0 -86
- package/myReact/archive/testHHabort.js +0 -121
- package/myReact/archive/testHHabort.xml +0 -83
- package/myReact/archive/testMakeawait.js +0 -202
- package/myReact/archive/testRun1.js +0 -168
- package/myReact/archive/testRun1.xml +0 -142
- package/myReact/archive/titi.js +0 -28
- package/myReact/archive/titi.xml +0 -110
- package/myReact/archive/toto.js +0 -73
- package/myReact/archive/toto.xml +0 -198
- package/myReact/archive/trap-await-parallelNode.js +0 -123
- package/myReact/inutiles/hiver2022.xml +0 -804
- package/myReact/inutiles/hopeNode.xml +0 -459
- package/myReact/inutiles/mars2022.xml +0 -871
- package/myReact/inutiles/mystique1.xml +0 -318
- package/myReact/inutiles/mystiqueOSC.xml +0 -277
- package/myReact/inutiles/opus5Node.xml +0 -1271
- package/myReact/inutiles/opus5NodeLinux.xml +0 -1241
- package/myReact/inutiles/orchestrationHH.xml +0 -541
- package/myReact/inutiles/orchestrationHH2.xml +0 -547
- package/myReact/inutiles/testHH.xml +0 -95
- package/myReact/inutiles/trouveLaPercuTenor.xml +0 -349
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
// Generated by Skini:
|
|
2
|
+
// Generated by Skini: Wed Jan 07 2026 10:47:37 GMT+0100 (heure normale 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 = 2000; // En ms
|
|
23
|
+
exports.tempoMin = 2200; // En ms
|
|
24
|
+
exports.limiteDureeAttente = 2000; // 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 = "opus4";
|
|
40
40
|
|
|
41
41
|
/***************************************
|
|
42
42
|
CHEMIN DES PARTITIONS DES PATTERNS ET CONFIG AVEC MUSICIENS
|
|
@@ -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 =
|
|
57
|
+
exports.algoGestionFifo = 2;
|
|
58
58
|
exports.shufflePatterns = false;
|
|
59
59
|
/*****************************************************************************
|
|
60
60
|
|
|
@@ -84,12 +84,105 @@ exports.timer = 500;
|
|
|
84
84
|
exports.gameOSCSignals = false;
|
|
85
85
|
|
|
86
86
|
exports.sensorOSC = true;
|
|
87
|
-
exports.tempoSensorsInit = [100,100,100,100,
|
|
88
|
-
exports.sensorsSensibilities = [200,200,200,200,200,
|
|
87
|
+
exports.tempoSensorsInit = [100,100,100,100,100,100,20,20,20,20,20,20];
|
|
88
|
+
exports.sensorsSensibilities = [200,200,200,200,200,200,200,200,200,200,200,199];
|
|
89
89
|
|
|
90
90
|
const groupesDesSons = [
|
|
91
|
-
[ "
|
|
92
|
-
[ "
|
|
93
|
-
[ "
|
|
91
|
+
[ "saxo",1, "group",401,200,21,"#4CAF50",[],10 ],
|
|
92
|
+
[ "nappeViolons",2, "group",100,500,20,"#4CAF50",[],1 ],
|
|
93
|
+
[ "nappe2Violons",3, "group",100,600,20,"#797bbf",[],1 ],
|
|
94
|
+
[ "Piano1Intro1",10, "tank",100,51,1,"#5F6262",[],1 ],
|
|
95
|
+
[ "Piano1Intro2",11, "tank",,,1,"#5F6262",[], ],
|
|
96
|
+
[ "Piano1Intro3",12, "tank",,,1,"#5F6262",[], ],
|
|
97
|
+
[ "Piano1Intro4",13, "tank",,,1,"#5F6262",[], ],
|
|
98
|
+
[ "Piano1Intro5",14, "tank",,,1,"#5F6262",[], ],
|
|
99
|
+
[ "Piano1Intro6",15, "tank",,,1,"#5F6262",[], ],
|
|
100
|
+
[ "Piano1Intro7",16, "tank",,,1,"#5F6262",[], ],
|
|
101
|
+
[ "Piano1Milieu1",17, "tank",,,1,"#5F6262",[], ],
|
|
102
|
+
[ "Piano1Milieu2",18, "tank",,,1,"#5F6262",[], ],
|
|
103
|
+
[ "Piano1Milieu3",19, "tank",,,1,"#5F6262",[], ],
|
|
104
|
+
[ "Piano1Milieu4",20, "tank",,,1,"#5F6262",[], ],
|
|
105
|
+
[ "Piano1Milieu5",21, "tank",,,1,"#5F6262",[], ],
|
|
106
|
+
[ "Piano1Milieu6",22, "tank",,,1,"#5F6262",[], ],
|
|
107
|
+
[ "Piano1Milieu7",23, "tank",,,1,"#5F6262",[], ],
|
|
108
|
+
[ "Piano1Fin1",24, "tank",,,1,"#5F6262",[], ],
|
|
109
|
+
[ "Piano1Fin2",25, "tank",,,1,"#5F6262",[], ],
|
|
110
|
+
[ "Piano1Fin3",26, "tank",,,1,"#5F6262",[], ],
|
|
111
|
+
[ "Piano1Fin4",27, "tank",,,1,"#5F6262",[], ],
|
|
112
|
+
[ "Piano1Fin5",28, "tank",,,1,"#5F6262",[], ],
|
|
113
|
+
[ "Piano1Fin6",29, "tank",,,1,"#5F6262",[], ],
|
|
114
|
+
[ "Piano1Fin7",30, "tank",,,1,"#5F6262",[], ],
|
|
115
|
+
[ "SaxIntro1",31, "tank",400,51,2,"#5F6262",[],1 ],
|
|
116
|
+
[ "SaxIntro2",32, "tank",,,2,"#5F6262",[], ],
|
|
117
|
+
[ "SaxIntro3",33, "tank",,,2,"#5F6262",[], ],
|
|
118
|
+
[ "SaxIntro4",34, "tank",,,2,"#5F6262",[], ],
|
|
119
|
+
[ "SaxIntro5",35, "tank",,,2,"#5F6262",[], ],
|
|
120
|
+
[ "SaxIntro6",36, "tank",,,2,"#5F6262",[], ],
|
|
121
|
+
[ "SaxIntro7",37, "tank",,,2,"#5F6262",[], ],
|
|
122
|
+
[ "SaxMilieu1",38, "tank",,,2,"#5F6262",[], ],
|
|
123
|
+
[ "SaxMilieu2",39, "tank",,,2,"#5F6262",[], ],
|
|
124
|
+
[ "SaxMilieu3",40, "tank",,,2,"#5F6262",[], ],
|
|
125
|
+
[ "SaxMilieu4",41, "tank",,,2,"#5F6262",[], ],
|
|
126
|
+
[ "SaxMilieu5",42, "tank",,,2,"#5F6262",[], ],
|
|
127
|
+
[ "SaxMilieu6",43, "tank",,,2,"#5F6262",[], ],
|
|
128
|
+
[ "SaxMilieu7",44, "tank",,,2,"#5F6262",[], ],
|
|
129
|
+
[ "SaxFin1",45, "tank",,,2,"#5F6262",[], ],
|
|
130
|
+
[ "SaxFin2",46, "tank",,,2,"#5F6262",[], ],
|
|
131
|
+
[ "SaxFin3",47, "tank",,,2,"#5F6262",[], ],
|
|
132
|
+
[ "SaxFin4",48, "tank",,,2,"#5F6262",[], ],
|
|
133
|
+
[ "SaxFin5",49, "tank",,,2,"#5F6262",[], ],
|
|
134
|
+
[ "SaxFin6",50, "tank",,,2,"#5F6262",[], ],
|
|
135
|
+
[ "SaxFin7",51, "tank",,,2,"#5F6262",[], ],
|
|
136
|
+
[ "BrassIntro1",52, "tank",700,51,3,"#039879",[],1 ],
|
|
137
|
+
[ "BrassIntro2",53, "tank",,,3,"#039879",[], ],
|
|
138
|
+
[ "BrassIntro3",54, "tank",,,3,"#039879",[], ],
|
|
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 ],
|
|
94
187
|
];
|
|
95
188
|
exports.groupesDesSons = groupesDesSons;
|
|
@@ -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
|
-
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/**************************************************
|
|
3
|
-
|
|
4
|
-
Pour compiler et lancer l'orchestration depuis
|
|
5
|
-
le client Blockly.
|
|
6
|
-
Permet de se passer du contrôleur pendant le
|
|
7
|
-
développement.
|
|
8
|
-
|
|
9
|
-
© Copyright 2017-2021, Bertrand Petit-Hédelin
|
|
10
|
-
|
|
11
|
-
****************************************************/
|
|
12
|
-
"use strict"
|
|
13
|
-
"use hopscript"
|
|
14
|
-
|
|
15
|
-
var port;
|
|
16
|
-
var par;
|
|
17
|
-
var ws;
|
|
18
|
-
var id = Math.floor((Math.random() * 1000000) + 1 ); // Pour identifier le client;
|
|
19
|
-
|
|
20
|
-
var debug = false;
|
|
21
|
-
var debug1 = true;
|
|
22
|
-
|
|
23
|
-
var abletonTableEnCours = 0;
|
|
24
|
-
var automateEncours = false;
|
|
25
|
-
|
|
26
|
-
// Autres déclarations
|
|
27
|
-
|
|
28
|
-
var msg = { // On met des valeurs pas defaut, mais ce n'est pas nécessaire.
|
|
29
|
-
type: "configuration",
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
service controleur();
|
|
33
|
-
service controleurPing();
|
|
34
|
-
|
|
35
|
-
function cleanQueues() {
|
|
36
|
-
var msg = {
|
|
37
|
-
type: "cleanQueues",
|
|
38
|
-
};
|
|
39
|
-
ws.send(JSON.stringify(msg));
|
|
40
|
-
}
|
|
41
|
-
exports.cleanQueues = cleanQueues;
|
|
42
|
-
|
|
43
|
-
//****** Lancement des opérations et fermeture *********
|
|
44
|
-
|
|
45
|
-
function init(port, p) {
|
|
46
|
-
par = p;
|
|
47
|
-
initWSSocket( port );
|
|
48
|
-
}
|
|
49
|
-
exports.init = init;
|
|
50
|
-
|
|
51
|
-
// Gestion de la fermeture du browser
|
|
52
|
-
window.onbeforeunload = function () {
|
|
53
|
-
msg.type = "closeSpectateur";
|
|
54
|
-
msg.text = "DISCONNECT_SPECTATEUR";
|
|
55
|
-
ws.send(JSON.stringify(msg));
|
|
56
|
-
ws.close();
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function loadAbleton(val) {
|
|
60
|
-
if ( !automateEncours) {
|
|
61
|
-
console.log("clientControleur:loadAbleton:", val);
|
|
62
|
-
msg.type = "loadAbletonTable";
|
|
63
|
-
msg.value = val -1; // Pour envoyer un index
|
|
64
|
-
abletonTableEnCours = val;
|
|
65
|
-
ws.send(JSON.stringify(msg));
|
|
66
|
-
} else {
|
|
67
|
-
alert("WARNING: Orchestration running, stop before selecting another one.")
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
exports.loadAbleton = loadAbleton;
|
|
71
|
-
|
|
72
|
-
function startAutomate() {
|
|
73
|
-
msg.type = "setAbletonON";
|
|
74
|
-
if (abletonTableEnCours !== 0 && !automateEncours) {
|
|
75
|
-
msg.value = abletonTableEnCours;
|
|
76
|
-
ws.send(JSON.stringify(msg));
|
|
77
|
-
document.getElementById( "buttonStartAutomate").style.display = "none";
|
|
78
|
-
document.getElementById( "buttonStopAutomate").style.display = "inline";
|
|
79
|
-
msg.type = "startAutomate";
|
|
80
|
-
ws.send(JSON.stringify(msg));
|
|
81
|
-
automateEncours = true;
|
|
82
|
-
} else {
|
|
83
|
-
alert("WARNING: No orchestration selected or one is running ");
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
exports.startAutomate = startAutomate;
|
|
87
|
-
|
|
88
|
-
function stopAutomate() {
|
|
89
|
-
document.getElementById( "buttonStartAutomate").style.display = "inline";
|
|
90
|
-
document.getElementById( "buttonStopAutomate").style.display = "none";
|
|
91
|
-
msg.type = "stopAutomate";
|
|
92
|
-
ws.send(JSON.stringify(msg));
|
|
93
|
-
automateEncours = false;
|
|
94
|
-
cleanQueues();
|
|
95
|
-
}
|
|
96
|
-
exports.stopAutomate = stopAutomate;
|
|
97
|
-
|
|
98
|
-
//************ WEBSOCKET HOP et listener BROADCAST ******************************
|
|
99
|
-
function initWSSocket(port) {
|
|
100
|
-
|
|
101
|
-
ws = new WebSocket( "ws://" + par.serverIPAddress + ":" + port + "/hop/serv", [ "bar", "foo" ] );
|
|
102
|
-
|
|
103
|
-
if (debug) console.log("clientcontroleur.js WS: ", "ws://" + par.serverIPAddress + ":" + port + "/hop/serv" );
|
|
104
|
-
ws.onopen = function( event ) {
|
|
105
|
-
msg.type = "startSpectateur";
|
|
106
|
-
msg.text = "controleur";
|
|
107
|
-
msg.id = id;
|
|
108
|
-
console.log("ID sent to server:", msg.id);
|
|
109
|
-
ws.send(JSON.stringify(msg));
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
//Traitement de la Réception sur le client
|
|
113
|
-
ws.onmessage = function( event ) {
|
|
114
|
-
//console.log( "Client: received [%s]", event.data );
|
|
115
|
-
|
|
116
|
-
var msgRecu = JSON.parse(event.data);
|
|
117
|
-
|
|
118
|
-
switch(msgRecu.type) {
|
|
119
|
-
case "abletonTableNotReady": // Si la table n'est pas chargée on garde le bouton start
|
|
120
|
-
alert("Orchestration not ready");
|
|
121
|
-
document.getElementById( "buttonStartAutomate").style.display = "inline";
|
|
122
|
-
document.getElementById( "buttonStopAutomate").style.display = "none";
|
|
123
|
-
automateEncours = false;
|
|
124
|
-
break;
|
|
125
|
-
|
|
126
|
-
case "groupesClientLength":
|
|
127
|
-
break;
|
|
128
|
-
|
|
129
|
-
case "noAutomaton":
|
|
130
|
-
//document.getElementById("consoleArea").innerHTML = "No automaton at this position";
|
|
131
|
-
console.log("No automaton at this position");
|
|
132
|
-
automateEncours = false;
|
|
133
|
-
break;
|
|
134
|
-
|
|
135
|
-
case "sessionLoaded":
|
|
136
|
-
document.getElementById("consoleArea").innerHTML = "Orchestration loaded :" + msgRecu.fileName;
|
|
137
|
-
break;
|
|
138
|
-
|
|
139
|
-
case "message":
|
|
140
|
-
if (debug) console.log(msgRecu.text);
|
|
141
|
-
break;
|
|
142
|
-
|
|
143
|
-
default: if (debug) console.log("Le Client reçoit un message inconnu", msgRecu );
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
|
|
147
|
-
ws.onerror = function (event) {
|
|
148
|
-
if (debug) console.log( "clientcontroleur.js : received error on WS", ws.socket, " ", event );
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// Mécanisme de reconnexion automatique si le serveur est tombé.
|
|
152
|
-
// Le service Ping permet de vérifier le présence du serveur
|
|
153
|
-
ws.onclose = function( event ) {
|
|
154
|
-
if (debug1) console.log( "clientcontroleur.js : ON CLOSE");
|
|
155
|
-
|
|
156
|
-
/* (function loop() {
|
|
157
|
-
if (!debug) {
|
|
158
|
-
controleurPing()
|
|
159
|
-
.post()
|
|
160
|
-
.then(function(){ // Si serveur présent
|
|
161
|
-
document.location=controleur();
|
|
162
|
-
},
|
|
163
|
-
function(){ // Si serveur absent
|
|
164
|
-
if (debug) console.log( "reconnecting..." );
|
|
165
|
-
setTimeout( loop, 2000 );
|
|
166
|
-
} );
|
|
167
|
-
}
|
|
168
|
-
})();*/
|
|
169
|
-
}
|
|
170
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
|
|
8
|
-
<title>Blockly for the Web Codelab modified for test</title>
|
|
9
|
-
<link rel="stylesheet" href="styles/material.css">
|
|
10
|
-
<link rel="stylesheet" href="styles/index.css">
|
|
11
|
-
</head>
|
|
12
|
-
|
|
13
|
-
<body mode="maker">
|
|
14
|
-
<header class="mdl-color--cyan-500">
|
|
15
|
-
<h1 class="mode-maker">Music Maker</h1>
|
|
16
|
-
<h1 class="mode-edit mode-blockly">Music Maker Configuration</h1>
|
|
17
|
-
</header>
|
|
18
|
-
|
|
19
|
-
<main>
|
|
20
|
-
<button class="mode-maker mdl-button" id="edit">Edit</button>
|
|
21
|
-
<button class="mode-edit mdl-button mdl-js-button" id="done">Done</button>
|
|
22
|
-
<button class="mode-blockly mdl-button mdl-js-button" id="save">Save</button>
|
|
23
|
-
<p class="hint mode-edit">Tap any button to edit its code. <br/>When complete, press Done.</p>
|
|
24
|
-
|
|
25
|
-
<div class="maker">
|
|
26
|
-
<div>
|
|
27
|
-
<div class="button mdl-color--amber-500">1</div>
|
|
28
|
-
<div class="button mdl-color--yellow-500">2</div>
|
|
29
|
-
<div class="button mdl-color--lime-500">3</div>
|
|
30
|
-
</div>
|
|
31
|
-
<div>
|
|
32
|
-
<div class="button mdl-color--pink-500">4</div>
|
|
33
|
-
<div class="button mdl-color--red-500">5</div>
|
|
34
|
-
<div class="button mdl-color--light-green-500">6</div>
|
|
35
|
-
</div>
|
|
36
|
-
<div>
|
|
37
|
-
<div class="button mdl-color--cyan-500">7</div>
|
|
38
|
-
<div class="button mdl-color--teal-500">8</div>
|
|
39
|
-
<div class="button mdl-color--green-500">9</div>
|
|
40
|
-
</div>
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<div id="textarea" style="height: 480px; width: 600px;">TATU</div>
|
|
44
|
-
|
|
45
|
-
<div class="blockly-editor">
|
|
46
|
-
<div id="blocklyDiv" style="height: 480px; width: 400px;"></div>
|
|
47
|
-
<xml id="toolbox" style="display: none">
|
|
48
|
-
<block type="controls_repeat_ext">
|
|
49
|
-
<value name="TIMES">
|
|
50
|
-
<shadow type="math_number">
|
|
51
|
-
<field name="NUM">5</field>
|
|
52
|
-
</shadow>
|
|
53
|
-
</value>
|
|
54
|
-
</block>
|
|
55
|
-
|
|
56
|
-
<block type="play_sound"></block>
|
|
57
|
-
<block type="controls_if"></block>
|
|
58
|
-
<block type="controls_whileUntil"></block>
|
|
59
|
-
<block type="logic_compare"></block>
|
|
60
|
-
<block type="math_number"></block>
|
|
61
|
-
<block type="math_arithmetic"></block>
|
|
62
|
-
<block type="text"></block>
|
|
63
|
-
<block type="text_print"></block>
|
|
64
|
-
<block type="testblock"></block>
|
|
65
|
-
</xml>
|
|
66
|
-
</div>
|
|
67
|
-
</main>
|
|
68
|
-
|
|
69
|
-
<script src="../../node_modules/blockly/blockly.min.js"></script>
|
|
70
|
-
<script src="../../node_modules/blockly/javascript_compressed.js"></script>
|
|
71
|
-
<script src="scripts/music_maker.js"></script>
|
|
72
|
-
<script src="scripts/sound_blocks.js"></script>
|
|
73
|
-
<script src="scripts/main.js"></script>
|
|
74
|
-
|
|
75
|
-
</body>
|
|
76
|
-
</html>
|