66 lines
2.4 KiB
Plaintext
66 lines
2.4 KiB
Plaintext
// =====================================================================
|
|
// boot.data-only.scd -- Entry point auto-executable pour le mode
|
|
// "Data-only" du launcher : SC + oF + data_feeds, pas de web UI.
|
|
//
|
|
// Sequence :
|
|
// 1. Boot du moteur via live/_load.scd (SynthDefs, FX, wrappers)
|
|
// 2. Chargement de control/data_feeds.scd (OSCdef /data/*)
|
|
// 3. Chargement de live/data_only_program.scd
|
|
// 4. Demarrage automatique de la scene \all (cavity + geo + body)
|
|
//
|
|
// Usage :
|
|
// sclang /path/to/AV-Live/sound_algo/boot.data-only.scd
|
|
// Le launcher fait ca automatiquement quand mode = .dataOnly.
|
|
//
|
|
// Pilotage en cours de jeu (OSC depuis n'importe ou) :
|
|
// /control/dataScene <\\all|\\cavity|\\geo|\\body|\\stop>
|
|
// =====================================================================
|
|
(
|
|
~base = (thisProcess.nowExecutingPath !? { |p| p.dirname ++ "/" })
|
|
?? { File.getcwd ++ "/" };
|
|
|
|
("[boot.data-only] ~base = " ++ ~base).postln;
|
|
|
|
// 1) Engine + palette + setupAll
|
|
(~base ++ "live/_load.scd").load;
|
|
|
|
// 2/3/4) Une fois le bootstrap pret (~setupAll_done == true), on charge
|
|
// data_feeds + le programme et on bascule sur la scene \all.
|
|
// liveSetup est asynchrone (charge palette/scales) donc on poll.
|
|
Routine({
|
|
var maxWait = 60, waited = 0;
|
|
while({ (~setupAll_done != true) and: { waited < maxWait } }) {
|
|
0.5.wait; waited = waited + 0.5;
|
|
};
|
|
if(~setupAll_done != true) {
|
|
"[boot.data-only] WARN : setupAll pas pret apres 60s, on tente quand meme".postln;
|
|
};
|
|
|
|
"[boot.data-only] loading data_feeds OSCdef...".postln;
|
|
(~base ++ "palette/note.scd").load;
|
|
(~base ++ "control/data_feeds.scd").load;
|
|
(~base ++ "control/finger_piano.scd").load;
|
|
1.0.wait;
|
|
|
|
"[boot.data-only] loading web_bridge OSCdef + sync push...".postln;
|
|
(~base ++ "control/web_bridge.scd").load;
|
|
0.5.wait;
|
|
|
|
"[boot.data-only] loading data-only program...".postln;
|
|
(~base ++ "live/data_only_program.scd").load;
|
|
1.5.wait;
|
|
|
|
if(~dataScene.isNil) {
|
|
"[boot.data-only] ERREUR : ~dataScene non defini, le programme n'a pas charge.".postln;
|
|
} {
|
|
"[boot.data-only] starting scene \\all".postln;
|
|
~dataScene.(\all);
|
|
};
|
|
|
|
"=== DATA-ONLY READY ===".postln;
|
|
(" Bridge alive : " ++ ~feedAlive.value).postln;
|
|
" Scenes : ~dataScene.(\\cavity|\\geo|\\body|\\all|\\stop)".postln;
|
|
" Remote : /control/dataScene <name>".postln;
|
|
}).play(AppClock);
|
|
)
|