Besoin d'aide pour le scripting
Bonjour à tous, content d'être là et d'être un nouvel utilisateur d'Usine !
Je suis très intéressé par l’aspect scripting du logiciel mais j’ai un peu du mal avec ce langage et les exemples fournis ne me permettent pas d’y voir plus clair (je suis plus à l’aise avec l’asp ou le javascript pour le web).
Besoin d'aide !
Voici ce que je souhaiterais faire :
Dans un rack, placer un fichier wav puis ajouter 5 autres fichiers wav dans la liste.
Le script devra :
Lire le premier pendant une durée définie (par exemple, 30 secondes) avant de se mettre en pause et de lancer le deuxième qui devra également être lu pendant une durée définie avant de se mettre en pause et de lancer le suivant, et ainsi de suite jusqu'au dernier.
J'aurais besoin de savoir comment :
- faire une boucle (for n=1 to 5)
- lancer la lecture du son n
- définir sa durée
- mettre sur pause
- passer au suivant (n+1)
- en option, (si possible) définir un fader entre deux extraits d’une durée 10 secondes.
Pouvez-vous m’aider et m'apporter quelques élément pour ce script? J'’aurais alors suffisamment d’éléments pour aller plus loin !
Sinon, des liens avec des exemples qui pourraient correspondre ?
Merci d'avance !
Je suis très intéressé par l’aspect scripting du logiciel mais j’ai un peu du mal avec ce langage et les exemples fournis ne me permettent pas d’y voir plus clair (je suis plus à l’aise avec l’asp ou le javascript pour le web).
Besoin d'aide !
Voici ce que je souhaiterais faire :
Dans un rack, placer un fichier wav puis ajouter 5 autres fichiers wav dans la liste.
Le script devra :
Lire le premier pendant une durée définie (par exemple, 30 secondes) avant de se mettre en pause et de lancer le deuxième qui devra également être lu pendant une durée définie avant de se mettre en pause et de lancer le suivant, et ainsi de suite jusqu'au dernier.
J'aurais besoin de savoir comment :
- faire une boucle (for n=1 to 5)
- lancer la lecture du son n
- définir sa durée
- mettre sur pause
- passer au suivant (n+1)
- en option, (si possible) définir un fader entre deux extraits d’une durée 10 secondes.
Pouvez-vous m’aider et m'apporter quelques élément pour ce script? J'’aurais alors suffisamment d’éléments pour aller plus loin !
Sinon, des liens avec des exemples qui pourraient correspondre ?
Merci d'avance !
salut, voici un petit ex qui j'espere pourra t'aider un peu,
(ça fait un petit moment que je me suis pas servi du script alors ya tet plus simple, mais en gros ça marche^^)
la c pas vraiment une boucle qui me semble moins adaptée a ce cas de figure, mais il y a une variable file_number qui incremente et va piocher dans un array défini les durées maxi.
tu peux copier paste le texte ds un script et init ncompile:
(ça fait un petit moment que je me suis pas servi du script alors ya tet plus simple, mais en gros ça marche^^)
la c pas vraiment une boucle qui me semble moins adaptée a ce cas de figure, mais il y a une variable file_number qui incremente et va piocher dans un array défini les durées maxi.
tu peux copier paste le texte ds un script et init ncompile:
Code: Select all
//////////////////////////////////////////////////////
const max_files = 5; //global constant of number of files
//////////////////////////////////////////////////////
// Paramters declaration
//////////////////////////////////////////////////////
var start : Tparameter; //start button parameter
var stop : Tparameter; //stop button parameter
var playing : Tparameter; // swicth of playing status
var paused : Tparameter; // switch of paused status
var pause_duration : Tparameter; // parameter for pauseduration in seconds
var file_seconds: Tparameter; //current file diplayed time
var pause_seconds: Tparameter; //current pause displayed time
var file_number: Tparameter; // current file number
var durations : array [0..max_files-1] of integer = [3,5,4,5,5];
// file playing durations in seconds
// Global Variables
var file_num : integer;
var file_time : single;
var file_trigger_time : single;
var file_max_time : integer;
var pause_time : single;
var pause_trigger_time : single;
var pause_max_time : single;
var run : boolean;
var pause : boolean;
//////////////////////////////////////////////////////
// initialisation procedure
//////////////////////////////////////////////////////
procedure init; //create ui parameters
begin
start := CreateParam('start',ptButton);
SetIsOutput(start,false);
stop := CreateParam('stop',ptButton);
SetIsOutput(stop,false);
pause_duration := CreateParam('pause_duration',ptDataFader );
SetIsOutput(pause_duration,false);
SetFormat(pause_duration, '%.0f');
SetMin(pause_duration,0);
SetMax(pause_duration,100);
SetValue(pause_duration,5);
SetDefaultValue(pause_duration,5);
SetSymbol(pause_duration,'seconds');
playing := CreateParam('playing',ptSwitch);
SetIsInput(playing,false);
file_seconds := CreateParam('file_seconds',ptDataFader );
SetIsInput(file_seconds,false);
SetFormat(file_seconds, '%.2f');
SetMin(file_seconds,0);
SetMax(file_seconds,500);
SetDefaultValue(file_seconds,0);
file_number := CreateParam('file_number',ptDataFader );
SetIsInput(file_number,false);
SetMin(file_number,0);
SetMax(file_number,max_files-1);
SetDefaultValue(file_number,0);
paused := CreateParam('paused',ptSwitch);
SetIsInput(paused,false);
pause_seconds := CreateParam('pause_seconds',ptDataFader );
SetIsInput(pause_seconds,false);
SetFormat(pause_seconds, '%.2f');
SetMin(pause_seconds,0);
SetMax(pause_seconds,30);
SetDefaultValue(pause_seconds,0);
SetSymbol(pause_seconds,'seconds');
//init variables
file_num := 0;
file_time := 0;
file_max_time = 500;
file_trigger_time := 0;
pause_time := 0;
pause_trigger_time := 0;
pause_max_time := 5;
run := false;
pause := false;
end;
/////////////////////////////////////////////
Procedure RESET()
begin
file_trigger_time := time;
file_time := 0;
file_max_time := 100000;
setvalue(file_seconds,0);
if (file_num >= max_files) then
begin
run := false;
setvalue(file_number,0);
setvalue(playing,0);
end;
end;
/////////////////////////////////////////
Procedure PAUSE_PROC()
begin
pause := true;
setvalue(paused,1);
pause_trigger_time := time;
run := false;
end;
///////////////////////////////////////////
Procedure Callback (n: integer)
begin
if( n = start) then
begin
file_num := 0;
file_trigger_time := time;
run := true;
pause_max_time := getvalue(pause_duration);
end;
if( n = stop) then
begin
run := false;
setvalue(file_seconds,0);
setvalue(file_number,0);
setvalue(playing,0);
end;
end; //callback
//////////////////////////////////////////////////////
// Main Loop procedure
//////////////////////////////////////////////////////
Procedure Process;
begin
if (pause) then
begin
setvalue(playing,0);
pause_time := (time - pause_trigger_time) * 100000; //as time is in nanosed
setvalue(pause_seconds, pause_time);
if (pause_time >= pause_max_time ) then
begin
pause := false;
setvalue(paused,0);
setvalue(pause_seconds, 0);
run:= true;
RESET(); //reset file second counter
end;
end;
if (run) then
begin
setvalue(playing,1);
file_time := (time - file_trigger_time) * 100000; //as time is in nanosec
setvalue(file_seconds,file_time);
file_max_time := durations[file_num]; //check in array what is max_time
if (file_time >= file_max_time) then // if over
begin
PAUSE_PROC(); //start pause procedure
inc(file_num); // increment file number
setvalue(file_number,file_num);
end;
end;
end; //process
/////////////////////Bonjour 23fx23, merci beaucoup ! Je regarde ça très vite et te dis.
Désolé, j'aurais peut-être dû commencer par là mais ... comment on fait pour associer ce script à mon patch ??
A partir de la bibliothèque, j'ai fait glisser sur mon sample un Empty Script que je retrouve dans le mode Edition du patch et dans lequel j'ouvre le script que tu m'as fourni.
Je lance ensuite la lecture mais ça ne fonctionne pas. J'ai oublié de faire quelque chose?
Pourtant, les paramètres file_seconds, file_number et pause_seconds bougent bien dans le mode édition
(voir www.sensomusic.org/forums/uploads.php?f ... -Usine.png).
Une idée ? Encore merci !
PS. Le copier/coller ne fonctionne pas dans le Script Editor Panel. Je suis obligé de créer un fichier texte que j'ouvre ensuite dans le panel. C'est normal?
A partir de la bibliothèque, j'ai fait glisser sur mon sample un Empty Script que je retrouve dans le mode Edition du patch et dans lequel j'ouvre le script que tu m'as fourni.
Je lance ensuite la lecture mais ça ne fonctionne pas. J'ai oublié de faire quelque chose?
Pourtant, les paramètres file_seconds, file_number et pause_seconds bougent bien dans le mode édition
(voir www.sensomusic.org/forums/uploads.php?f ... -Usine.png).
Une idée ? Encore merci !
PS. Le copier/coller ne fonctionne pas dans le Script Editor Panel. Je suis obligé de créer un fichier texte que j'ouvre ensuite dans le panel. C'est normal?
le plus simple c'est de glisser un module empty script dans le patch a coté du sampler. /modules/scipts/empty script
quand tu double clic dessus, ça ouvre l'editeur. cliquer dedans, ctrl-A puis supp, ça vire tout.
copie le code ci dessus puis dans l'editeur, ctl v, (chez moi ça marche, c bizarre), puis compile and init.
la ça a créé le script, ensuite le plus simple c de relier le playing au play loop du sampler, et file_number au file number du sampler.
quand tu double clic sur le sampler, ça affiche la liste, ajouter les 5 fichiers, si ce nombre change l'editer dans le script , et l'array des durées voulues.
la si tu clic sur le bouton start du script, ça devrait les lire en sequences, avec la pause definie entre .

quand tu double clic dessus, ça ouvre l'editeur. cliquer dedans, ctrl-A puis supp, ça vire tout.
copie le code ci dessus puis dans l'editeur, ctl v, (chez moi ça marche, c bizarre), puis compile and init.
la ça a créé le script, ensuite le plus simple c de relier le playing au play loop du sampler, et file_number au file number du sampler.
quand tu double clic sur le sampler, ça affiche la liste, ajouter les 5 fichiers, si ce nombre change l'editer dans le script , et l'array des durées voulues.
la si tu clic sur le bouton start du script, ça devrait les lire en sequences, avec la pause definie entre .

C'est top, merci !
Encore des petites choses avant de tenter de me débrouiller tout seul :
- quand je relance la lecture du patch du début, comment faire pour que le script reparte lui aussi du début? Là , il reprend là où il s'est arrêté (file_number 2 par exemple).
- Si je ne veux pas de pause entre les extraits (file_seconds=0), y a-t-il un moyen de créer un fondu entre les deux extraits?
- Comment indiquer que la lecture de l'extrait commence à 10 secondes du début ?
- Quand les 5 morceaux sont lus, recommencer depuis le début 3 fois
Merci merci merci
Encore des petites choses avant de tenter de me débrouiller tout seul :
- quand je relance la lecture du patch du début, comment faire pour que le script reparte lui aussi du début? Là , il reprend là où il s'est arrêté (file_number 2 par exemple).
- Si je ne veux pas de pause entre les extraits (file_seconds=0), y a-t-il un moyen de créer un fondu entre les deux extraits?
- Comment indiquer que la lecture de l'extrait commence à 10 secondes du début ?
- Quand les 5 morceaux sont lus, recommencer depuis le début 3 fois
Merci merci merci
le restart ça peut etre simplement un stop puis start. il ya un module dans /patching/patch control/ patch on activation qui envoie une pulsation quand le patch démarre.
du coup tu peux relier ça au stop du script, il attend un bloc avec un wait one /patching/wait puis il fait comme si ça rapuyait sur start

le reste c'est un peu plus compliqué, pour un fondu il faudrait passer par 2 samplers, et que le script genere une valeur genre crossfade qui controle un crossfade entre les 2.
et qui controle le start/stop de chaque sampler en fonction.
pour le start pos sur le sampler il y a un parametre start pos , mais c'est en pourcentage par contre. si il fallait le definir par fichier il y a plusieurs solutions:
en patch utiliser un selector /data mix selector, le select etant controlé par le file number. ou un array , avec get array element value, avec les valeurs voulues entrées
sinon dans le script, recreer un array avec les valeurs de start, et quand le num de ficher change, regarder dans cet array et envoyer la valeur correspondant dans un nouveau parametre de sortie relié au sampleur.
pour recommencer 3 fois je ferais une variable loop_nb dans le script, initialisée a 0. quand le num_fichier est >= last fichier dans le bas du script cette valeur incremente.
il faut faire un check et genre quand elle est >= a 3 run := false; par exemple
edit: je te laisse essyer c'est un bon, exercice^^ sinon je te filerait une modif du script en ex un peu plus tard
du coup tu peux relier ça au stop du script, il attend un bloc avec un wait one /patching/wait puis il fait comme si ça rapuyait sur start

le reste c'est un peu plus compliqué, pour un fondu il faudrait passer par 2 samplers, et que le script genere une valeur genre crossfade qui controle un crossfade entre les 2.
et qui controle le start/stop de chaque sampler en fonction.
pour le start pos sur le sampler il y a un parametre start pos , mais c'est en pourcentage par contre. si il fallait le definir par fichier il y a plusieurs solutions:
en patch utiliser un selector /data mix selector, le select etant controlé par le file number. ou un array , avec get array element value, avec les valeurs voulues entrées
sinon dans le script, recreer un array avec les valeurs de start, et quand le num de ficher change, regarder dans cet array et envoyer la valeur correspondant dans un nouveau parametre de sortie relié au sampleur.
pour recommencer 3 fois je ferais une variable loop_nb dans le script, initialisée a 0. quand le num_fichier est >= last fichier dans le bas du script cette valeur incremente.
il faut faire un check et genre quand elle est >= a 3 run := false; par exemple
edit: je te laisse essyer c'est un bon, exercice^^ sinon je te filerait une modif du script en ex un peu plus tard
OK, c'est parfait, je vais tenter tout ça. Merci encore et bonne soirée
je te mets un script modifié en cas qui loop 3 fois , tu peux editer la variable dans l'entete du script, ou te creer un parametre pour t'entrainer,
et un array pour definir les start_positions (il faut donc relier le start pos en sortie de script au start pos du sampler.
et un array pour definir les start_positions (il faut donc relier le start pos en sortie de script au start pos du sampler.
Code: Select all
//////////////////////////////////////////////////////
const max_files = 5; //global constant of number of files
const max_cycles = 3; // how many times will cycle
//////////////////////////////////////////////////////
// Paramters declaration
//////////////////////////////////////////////////////
var pstart : Tparameter; //start button parameter
var stop : Tparameter; //stop button parameter
var playing : Tparameter; // swicth of playing status
var paused : Tparameter; // switch of paused status
var pause_duration : Tparameter; // parameter for pauseduration in seconds
var start_pos : Tparameter;
var current_cycle : Tparameter;
var file_seconds: Tparameter; //current file diplayed time
var pause_seconds: Tparameter; //current pause displayed time
var file_number: Tparameter; // current file number
var durations : array [0..max_files-1] of integer = [3,5,4,5,5];
// file playing durations in seconds
var starts : array [0..max_files-1] of single = [0.10,0.25,0.0,0.12,0.50];
// files start pos 0 =0 1= 100 percent
// Global Variables
var cycle_nb : integer;
var file_num : integer;
var file_time : single;
var file_trigger_time : single;
var file_max_time : integer;
var pause_time : single;
var pause_trigger_time : single;
var pause_max_time : single;
var run : boolean;
var pause : boolean;
//////////////////////////////////////////////////////
// initialisation procedure
//////////////////////////////////////////////////////
procedure init; //create ui parameters
begin
pstart := CreateParam('start',ptButton);
SetIsOutput(pstart,false);
stop := CreateParam('stop',ptButton);
SetIsOutput(stop,false);
pause_duration := CreateParam('pause_duration',ptDataFader );
SetIsOutput(pause_duration,false);
SetFormat(pause_duration, '%.0f');
SetMin(pause_duration,0);
SetMax(pause_duration,100);
SetValue(pause_duration,2);
SetDefaultValue(pause_duration,5);
SetSymbol(pause_duration,'seconds');
playing := CreateParam('playing',ptSwitch);
SetIsInput(playing,false);
file_seconds := CreateParam('file_seconds',ptDataFader );
SetIsInput(file_seconds,false);
SetFormat(file_seconds, '%.2f');
SetMin(file_seconds,0);
SetMax(file_seconds,500);
SetDefaultValue(file_seconds,0);
file_number := CreateParam('file_number',ptDataFader );
SetIsInput(file_number,false);
SetMin(file_number,0);
SetMax(file_number,max_files-1);
SetDefaultValue(file_number,0);
paused := CreateParam('paused',ptSwitch);
SetIsInput(paused,false);
pause_seconds := CreateParam('pause_seconds',ptDataFader );
SetIsInput(pause_seconds,false);
SetFormat(pause_seconds, '%.2f');
SetMin(pause_seconds,0);
SetMax(pause_seconds,30);
SetDefaultValue(pause_seconds,0);
SetValue(pause_seconds,2);
SetSymbol(pause_seconds,'seconds');
start_pos := CreateParam('start_pos', ptDataFader);
SetIsInput(start_pos,false);
SetFormat(start_pos, '%.2f');
SetMin(start_pos,0);
SetMax(start_pos,100);
SetDefaultValue(start_pos,0);
SetSymbol(start_pos,'percent');
current_cycle:= CreateParam('current_cycle',ptdatafield);
setIsInput(current_cycle,false);
//init variables
file_num := 0;
file_time := 0;
file_max_time = 500;
file_trigger_time := 0;
pause_time := 0;
pause_trigger_time := 0;
pause_max_time := 0;
run := false;
pause := false;
setvalue(start_pos, starts[0]);
cycle_nb := 0;
setvalue(current_cycle,0);
end;
/////////////////////////////////////////////
Procedure RESET()
begin
file_trigger_time := time;
file_time := 0;
file_max_time := 100000;
setvalue(file_seconds,0);
if (file_num >= max_files) then
begin
inc(cycle_nb);
setvalue(current_cycle,cycle_nb);
file_num := 0;
setvalue(file_number,0);
if(cycle_nb > max_cycles) then //if over last cycle, completely stop
begin
run := false;
setvalue(file_number,0);
setvalue(playing,0);
end
else //else only reset file nb to 0
begin
file_num := 0;
setvalue(file_number,0);
end;
end;
end;//reset
/////////////////////////////////////////
Procedure PAUSE_PROC()
begin
pause := true;
setvalue(paused,1);
pause_trigger_time := time;
run := false;
end;
///////////////////////////////////////////
Procedure Callback (n: integer)
begin
if( n = pstart) then
begin
pause_max_time := getvalue(pause_duration);
file_num := 0;
setvalue(file_number,0);
cycle_nb := 0;
setvalue(current_cycle,0);
file_trigger_time := time;
run := true;
end;
if( n = stop) then
begin
run := false;
setvalue(file_seconds,0);
setvalue(file_number,0);
setvalue(current_cycle,0);
setvalue(playing,0);
end;
if(n = pause_duration) then
begin
pause_max_time := getvalue(pause_duration);
end;
end; //callback
//////////////////////////////////////////////////////
// Main Loop procedure
//////////////////////////////////////////////////////
Procedure Process;
begin
if (pause) then
begin
setvalue(playing,0);
pause_time := (time - pause_trigger_time) * 100000; //as time is in nanosed
setvalue(pause_seconds, pause_time);
if (pause_time >= pause_max_time ) then
begin
pause := false;
setvalue(paused,0);
setvalue(pause_seconds, 0);
run:= true;
RESET(); //reset file second counter
end;
end;
if (run) then
begin
setvalue(playing,1);
file_time := (time - file_trigger_time) * 100000; //as time is in nanosec
setvalue(file_seconds,file_time);
file_max_time := durations[file_num]; //check in array what is max_time
if (file_time >= file_max_time) then // if over
begin
PAUSE_PROC(); //start pause procedure
inc(file_num); // increment file number
setvalue(file_number,file_num);
setvalue(start_pos, starts[file_num]); //check in array start pos and output to param
end;
end;
end; //process
/////////////////////Terrible ! Trop fort, merci !
Sans vouloir abuser, comment faire pour obtenir une info du sample ? je voudrais, par exemple, obtenir la valeur de DURATION. Et comment afficher des infos dans la fenêtre Trace (ou ailleurs)? Je veux, par exemple, vérifier l'info 'duration' du sample et le 'strat_pos' pour chaque extrait.
Merci encore
Sans vouloir abuser, comment faire pour obtenir une info du sample ? je voudrais, par exemple, obtenir la valeur de DURATION. Et comment afficher des infos dans la fenêtre Trace (ou ailleurs)? Je veux, par exemple, vérifier l'info 'duration' du sample et le 'strat_pos' pour chaque extrait.
Merci encore
quand tu tire un cable par exemple de duration tu a 'trace_value' dans le menu, ça ça l'envoie vers la console si tu ouvre trace, (mais ça s'update que lorsqu 'il ya un changement).
ou tu peux cliquer sur le cable pour voir la valeur qui passe. sinon pour voir tout le temps tu peux simplement connecter un fader, et tu mets des valeurs max tres grandes. apres le fader tu peux le placer ou tu veux,
par ex quand tu clic sur l'icone 'oeil' du fader, dans "where", tu peux choisir top header ça le metra a coté du tempo.
si tu parlais du 'une variable dans un script tu peux utiliser la commande Writeln, ça trace dans la console (si tu clic sur trace, apres tu peux re-double cliquer dans la fenetre pour garder ouvert). writeln attends un string par contre, donc si tu veux tracer un nombre il faut le convertir par ex Writeln(IntToStr(5)); ou floattostr.
sinon perso des fois je me fais un parametre ptdtafield que j'apelle 'debug' et j'envoie les valeur que je veux verif dessus.
ou tu peux cliquer sur le cable pour voir la valeur qui passe. sinon pour voir tout le temps tu peux simplement connecter un fader, et tu mets des valeurs max tres grandes. apres le fader tu peux le placer ou tu veux,
par ex quand tu clic sur l'icone 'oeil' du fader, dans "where", tu peux choisir top header ça le metra a coté du tempo.
si tu parlais du 'une variable dans un script tu peux utiliser la commande Writeln, ça trace dans la console (si tu clic sur trace, apres tu peux re-double cliquer dans la fenetre pour garder ouvert). writeln attends un string par contre, donc si tu veux tracer un nombre il faut le convertir par ex Writeln(IntToStr(5)); ou floattostr.
sinon perso des fois je me fais un parametre ptdtafield que j'apelle 'debug' et j'envoie les valeur que je veux verif dessus.
OK merci. Mais pour récupérer la valeur de duration dans le script, c'est quoi ?
je suis pas sur de comprendre, la valeur en sortie du sampler la recuperer dans le script? si c'est ça il faut creer un nouveau parametre dans le script, par ex un ptDatafield, et relier la sortie du sampler a l'entree du script. et faire un get value, dans la procedure callback par exemple;
tu peux mater les ex sur cette page, je la rajouterai si tu galere
http://www.sensomusic.org/manual/en/scr ... tutorial07
tu peux mater les ex sur cette page, je la rajouterai si tu galere
http://www.sensomusic.org/manual/en/scr ... tutorial07
Oui, c'est exactement ça. OK, je commence à comprendre le principe. C'est énorme. Je pense pouvoir me débrouiller, merci à toi !
cool, wé en gros il faut toujours se dire quels parametres j'aurai besoin en entrée/sortie , les declarer, les creer, connecter le tout ,recuperer les valeurs, les traiter, regler les sortie, c comme un module/patch en fait.
ya aussi un mode 'sans fil" qui s'apelle iml pour regler /recuperer les valeurs mais ça peut etre tricky, jpense qu'il vaut mieux aprendre avec les connections dans un premier temps deja,
et j'y repense ya plus simple que le writeln si tu veux tracer des valeurs dans le script in ya aussi itrace et strace i pour les int et s pour les single(float) c plus simple.
ya aussi un mode 'sans fil" qui s'apelle iml pour regler /recuperer les valeurs mais ça peut etre tricky, jpense qu'il vaut mieux aprendre avec les connections dans un premier temps deja,
et j'y repense ya plus simple que le writeln si tu veux tracer des valeurs dans le script in ya aussi itrace et strace i pour les int et s pour les single(float) c plus simple.
Salut. Je commence à y voir plus clair et à tester des trucs très intéressants avec les scripts!
Une question de plus : imaginons que je dispose de cinq racks. Puis-je, à partir d'un script placé dans le premier, lancer la lecture du premier rack puis, après un certain nombre d'actions, lancer la lecture du deuxième rack qui prendra la main avec son propre script, et ainsi de suite? Pour mes besoins, je ne souhaite pas utiliser la grille.
Merci à toi
Une question de plus : imaginons que je dispose de cinq racks. Puis-je, à partir d'un script placé dans le premier, lancer la lecture du premier rack puis, après un certain nombre d'actions, lancer la lecture du deuxième rack qui prendra la main avec son propre script, et ainsi de suite? Pour mes besoins, je ne souhaite pas utiliser la grille.
Merci à toi
ce que tu peux faire c utiliser les datas bus. c un peu comme des liasons sans fil.
par exemple ton premier script allume un swich quand il a terminé, la tu connecte un 'from 0 to 1' qui va dans un bus disons 'to_patch2'
dans ton deuxieme patch tu as un bus receive qui reprends le meme nom et qui se connecte au start du script, et ainsi de suite.
par exemple ton premier script allume un swich quand il a terminé, la tu connecte un 'from 0 to 1' qui va dans un bus disons 'to_patch2'
dans ton deuxieme patch tu as un bus receive qui reprends le meme nom et qui se connecte au start du script, et ainsi de suite.
OK, je teste ça. Merci pour la rapidité et l'efficacité de la réponse !
Who is online
Users browsing this forum: No registered users and 6 guests
