ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray BrainModular BrainModular Users Forum 2018-06-04T17:15:33+02:00 https://brainmodular.org/forums/app.php/feed/topic/6227 2018-06-04T17:15:33+02:00 2018-06-04T17:15:33+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39978#p39978 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 04 Jun 2018, 17:15


]]>
2018-06-04T16:57:47+02:00 2018-06-04T16:57:47+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39977#p39977 <![CDATA[Besoin d'aide pour le scripting]]> 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.

Statistics: Posted by 23fx23 — 04 Jun 2018, 16:57


]]>
2018-06-04T14:55:45+02:00 2018-06-04T14:55:45+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39976#p39976 <![CDATA[Besoin d'aide pour le scripting]]> 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

Statistics: Posted by divers69 — 04 Jun 2018, 14:55


]]>
2018-05-29T16:22:16+02:00 2018-05-29T16:22:16+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39960#p39960 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 29 May 2018, 16:22


]]>
2018-05-29T15:20:39+02:00 2018-05-29T15:20:39+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39959#p39959 <![CDATA[Besoin d'aide pour le scripting]]> 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.

Statistics: Posted by 23fx23 — 29 May 2018, 15:20


]]>
2018-05-29T15:12:43+02:00 2018-05-29T15:12:43+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39958#p39958 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 29 May 2018, 15:12


]]>
2018-05-29T15:01:23+02:00 2018-05-29T15:01:23+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39957#p39957 <![CDATA[Besoin d'aide pour le scripting]]>
tu peux mater les ex sur cette page, je la rajouterai si tu galere
http://www.sensomusic.org/manual/en/scr ... tutorial07

Statistics: Posted by 23fx23 — 29 May 2018, 15:01


]]>
2018-05-29T13:05:37+02:00 2018-05-29T13:05:37+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39955#p39955 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 29 May 2018, 13:05


]]>
2018-05-29T12:45:40+02:00 2018-05-29T12:45:40+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39954#p39954 <![CDATA[Besoin d'aide pour le scripting]]> 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.

Statistics: Posted by 23fx23 — 29 May 2018, 12:45


]]>
2018-05-29T09:13:37+02:00 2018-05-29T09:13:37+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39953#p39953 <![CDATA[Besoin d'aide pour le scripting]]> 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

Statistics: Posted by divers69 — 29 May 2018, 09:13


]]>
2018-05-28T18:12:06+02:00 2018-05-28T18:12:06+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39940#p39940 <![CDATA[Besoin d'aide pour le scripting]]> 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:

//////////////////////////////////////////////////////const max_files = 5;            //global constant of number of files const max_cycles = 3;           // how many times will cycle//////////////////////////////////////////////////////// Paramters declaration                                           //////////////////////////////////////////////////////var pstart &#58; Tparameter;       //start button parameter                                    var stop  &#58; Tparameter;       //stop button parameter        var playing &#58; Tparameter;     // swicth of playing status                     var paused &#58; Tparameter;      // switch of paused status            var pause_duration &#58; Tparameter;    // parameter for pauseduration in seconds   var start_pos &#58; Tparameter;  var current_cycle &#58; Tparameter;var file_seconds&#58; Tparameter;        //current file diplayed timevar pause_seconds&#58; Tparameter;       //current pause displayed time                          var file_number&#58; Tparameter;         // current file numbervar durations &#58; array &#91;0..max_files-1&#93; of integer = &#91;3,5,4,5,5&#93;;                                // file playing durations in seconds var starts &#58; array &#91;0..max_files-1&#93; of single = &#91;0.10,0.25,0.0,0.12,0.50&#93;;                              // files start pos 0 =0 1= 100 percent                            // Global Variables  var cycle_nb &#58; integer;                                         var file_num &#58; integer;  var file_time &#58; single;                           var file_trigger_time &#58; single;    var file_max_time &#58; integer;     var pause_time &#58; single;    var pause_trigger_time &#58; single;  var pause_max_time &#58; single;      var run &#58; boolean;  var pause &#58; boolean;                           //////////////////////////////////////////////////////// initialisation procedure//////////////////////////////////////////////////////procedure init;        //create ui parametersbegin   pstart &#58;= CreateParam&#40;'start',ptButton&#41;; SetIsOutput&#40;pstart,false&#41;;        stop &#58;= CreateParam&#40;'stop',ptButton&#41;;            SetIsOutput&#40;stop,false&#41;;    pause_duration &#58;= CreateParam&#40;'pause_duration',ptDataFader &#41;; SetIsOutput&#40;pause_duration,false&#41;; SetFormat&#40;pause_duration, '%.0f'&#41;; SetMin&#40;pause_duration,0&#41;;                                        SetMax&#40;pause_duration,100&#41;;  SetValue&#40;pause_duration,2&#41;; SetDefaultValue&#40;pause_duration,5&#41;;  SetSymbol&#40;pause_duration,'seconds'&#41;;                playing &#58;= CreateParam&#40;'playing',ptSwitch&#41;; SetIsInput&#40;playing,false&#41;;                                   file_seconds &#58;= CreateParam&#40;'file_seconds',ptDataFader &#41;; SetIsInput&#40;file_seconds,false&#41;; SetFormat&#40;file_seconds, '%.2f'&#41;; SetMin&#40;file_seconds,0&#41;;           SetMax&#40;file_seconds,500&#41;;                SetDefaultValue&#40;file_seconds,0&#41;;              file_number &#58;= CreateParam&#40;'file_number',ptDataFader &#41;; SetIsInput&#40;file_number,false&#41;; SetMin&#40;file_number,0&#41;;                        SetMax&#40;file_number,max_files-1&#41;;  SetDefaultValue&#40;file_number,0&#41;;                    paused &#58;= CreateParam&#40;'paused',ptSwitch&#41;; SetIsInput&#40;paused,false&#41;;     pause_seconds &#58;= CreateParam&#40;'pause_seconds',ptDataFader &#41;; SetIsInput&#40;pause_seconds,false&#41;; SetFormat&#40;pause_seconds, '%.2f'&#41;; SetMin&#40;pause_seconds,0&#41;;           SetMax&#40;pause_seconds,30&#41;;                SetDefaultValue&#40;pause_seconds,0&#41;;    SetValue&#40;pause_seconds,2&#41;;   SetSymbol&#40;pause_seconds,'seconds'&#41;;     start_pos &#58;= CreateParam&#40;'start_pos', ptDataFader&#41;; SetIsInput&#40;start_pos,false&#41;;  SetFormat&#40;start_pos, '%.2f'&#41;; SetMin&#40;start_pos,0&#41;;           SetMax&#40;start_pos,100&#41;;                SetDefaultValue&#40;start_pos,0&#41;;  SetSymbol&#40;start_pos,'percent'&#41;;  current_cycle&#58;= CreateParam&#40;'current_cycle',ptdatafield&#41;; setIsInput&#40;current_cycle,false&#41;;    //init variables                                                   file_num &#58;= 0; file_time &#58;= 0;   file_max_time = 500;                                    file_trigger_time &#58;= 0;                                pause_time &#58;= 0;   pause_trigger_time &#58;= 0; pause_max_time &#58;= 0;     run &#58;= false;                  pause &#58;= false;  setvalue&#40;start_pos, starts&#91;0&#93;&#41;;  cycle_nb &#58;= 0;                        setvalue&#40;current_cycle,0&#41;; end;                                                            /////////////////////////////////////////////Procedure RESET&#40;&#41;begin      file_trigger_time &#58;= time;     file_time &#58;= 0;    file_max_time &#58;= 100000;    setvalue&#40;file_seconds,0&#41;;                                                              if &#40;file_num >= max_files&#41; then                        begin   inc&#40;cycle_nb&#41;;   setvalue&#40;current_cycle,cycle_nb&#41;;   file_num &#58;= 0;   setvalue&#40;file_number,0&#41;;          if&#40;cycle_nb > max_cycles&#41; then     //if over last cycle, completely stop        begin      run &#58;= false;                    setvalue&#40;file_number,0&#41;;              setvalue&#40;playing,0&#41;;      end    else       //else only reset file nb to 0               begin                                              file_num &#58;= 0;       setvalue&#40;file_number,0&#41;;        end;   end;   end;//reset     /////////////////////////////////////////Procedure PAUSE_PROC&#40;&#41;                          begin                               pause &#58;= true;    setvalue&#40;paused,1&#41;;      pause_trigger_time &#58;= time;   run &#58;= false;end;                                                 ///////////////////////////////////////////Procedure Callback &#40;n&#58; integer&#41;begin                                             if&#40; n = pstart&#41; then           begin             pause_max_time &#58;= getvalue&#40;pause_duration&#41;;            file_num &#58;= 0;           setvalue&#40;file_number,0&#41;;            cycle_nb &#58;= 0;             setvalue&#40;current_cycle,0&#41;;            file_trigger_time &#58;= time;                             run &#58;= true;          end;                   if&#40; n = stop&#41; then           begin                                         run &#58;= false;          setvalue&#40;file_seconds,0&#41;;          setvalue&#40;file_number,0&#41;;           setvalue&#40;current_cycle,0&#41;;            setvalue&#40;playing,0&#41;;                      end;                   if&#40;n = pause_duration&#41; then         begin          pause_max_time &#58;= getvalue&#40;pause_duration&#41;;         end;         end; //callback               //////////////////////////////////////////////////////// Main Loop procedure//////////////////////////////////////////////////////Procedure Process;begin     if &#40;pause&#41; then   begin    setvalue&#40;playing,0&#41;;   pause_time &#58;= &#40;time - pause_trigger_time&#41; * 100000; //as time is in nanosed       setvalue&#40;pause_seconds, pause_time&#41;;       if &#40;pause_time >= pause_max_time &#41; then      begin       pause &#58;= false;                   setvalue&#40;paused,0&#41;;                       setvalue&#40;pause_seconds, 0&#41;;      run&#58;= true;      RESET&#40;&#41;;       //reset file second counter                 end;    end;    if &#40;run&#41; then                          begin                                               setvalue&#40;playing,1&#41;;   file_time &#58;= &#40;time - file_trigger_time&#41; * 100000;   //as time is in nanosec   setvalue&#40;file_seconds,file_time&#41;;                       file_max_time &#58;= durations&#91;file_num&#93;;  //check in array what is max_time                          if &#40;file_time >= file_max_time&#41; then    // if over             begin    PAUSE_PROC&#40;&#41;;                          //start pause procedure        inc&#40;file_num&#41;;                         // increment file number            setvalue&#40;file_number,file_num&#41;;         setvalue&#40;start_pos, starts&#91;file_num&#93;&#41;; //check in array start pos and output to param     end;    end;end; //process/////////////////////

Statistics: Posted by 23fx23 — 28 May 2018, 18:12


]]>
2018-05-28T17:27:50+02:00 2018-05-28T17:27:50+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39939#p39939 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 28 May 2018, 17:27


]]>
2018-05-28T17:22:39+02:00 2018-05-28T17:22:39+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39938#p39938 <![CDATA[Besoin d'aide pour le scripting]]> 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
Image

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

Statistics: Posted by 23fx23 — 28 May 2018, 17:22


]]>
2018-05-28T16:36:52+02:00 2018-05-28T16:36:52+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39937#p39937 <![CDATA[Besoin d'aide pour le scripting]]> 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

Statistics: Posted by divers69 — 28 May 2018, 16:36


]]>
2018-05-28T16:09:41+02:00 2018-05-28T16:09:41+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39936#p39936 <![CDATA[Besoin d'aide pour le scripting]]> 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 .

Image

Statistics: Posted by 23fx23 — 28 May 2018, 16:09


]]>
2018-05-28T15:44:29+02:00 2018-05-28T15:44:29+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39935#p39935 <![CDATA[Besoin d'aide pour le scripting]]> 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?

Statistics: Posted by divers69 — 28 May 2018, 15:44


]]>
2018-05-28T13:39:05+02:00 2018-05-28T13:39:05+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39934#p39934 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 28 May 2018, 13:39


]]>
2018-05-28T13:30:11+02:00 2018-05-28T13:30:11+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39933#p39933 <![CDATA[Besoin d'aide pour le scripting]]> (ç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:

//////////////////////////////////////////////////////const max_files = 5;            //global constant of number of files//////////////////////////////////////////////////////// Paramters declaration                                           //////////////////////////////////////////////////////var start &#58; Tparameter;       //start button parameter                                    var stop  &#58; Tparameter;       //stop button parameter        var playing &#58; Tparameter;     // swicth of playing status                     var paused &#58; Tparameter;      // switch of paused status            var pause_duration &#58; Tparameter;    // parameter for pauseduration in secondsvar file_seconds&#58; Tparameter;        //current file diplayed timevar pause_seconds&#58; Tparameter;       //current pause displayed time                          var file_number&#58; Tparameter;         // current file numbervar durations &#58; array &#91;0..max_files-1&#93; of integer = &#91;3,5,4,5,5&#93;;                                // file playing durations in seconds// Global Variables                                  var file_num &#58; integer;  var file_time &#58; single;                           var file_trigger_time &#58; single;    var file_max_time &#58; integer;     var pause_time &#58; single;    var pause_trigger_time &#58; single;  var pause_max_time &#58; single;      var run &#58; boolean;  var pause &#58; boolean;                           //////////////////////////////////////////////////////// initialisation procedure//////////////////////////////////////////////////////procedure init;        //create ui parametersbegin   start &#58;= CreateParam&#40;'start',ptButton&#41;; SetIsOutput&#40;start,false&#41;;        stop &#58;= CreateParam&#40;'stop',ptButton&#41;;            SetIsOutput&#40;stop,false&#41;;    pause_duration &#58;= CreateParam&#40;'pause_duration',ptDataFader &#41;; SetIsOutput&#40;pause_duration,false&#41;; SetFormat&#40;pause_duration, '%.0f'&#41;; SetMin&#40;pause_duration,0&#41;;                                        SetMax&#40;pause_duration,100&#41;;  SetValue&#40;pause_duration,5&#41;; SetDefaultValue&#40;pause_duration,5&#41;;  SetSymbol&#40;pause_duration,'seconds'&#41;;                playing &#58;= CreateParam&#40;'playing',ptSwitch&#41;; SetIsInput&#40;playing,false&#41;;                                   file_seconds &#58;= CreateParam&#40;'file_seconds',ptDataFader &#41;; SetIsInput&#40;file_seconds,false&#41;; SetFormat&#40;file_seconds, '%.2f'&#41;; SetMin&#40;file_seconds,0&#41;;           SetMax&#40;file_seconds,500&#41;;                SetDefaultValue&#40;file_seconds,0&#41;;              file_number &#58;= CreateParam&#40;'file_number',ptDataFader &#41;; SetIsInput&#40;file_number,false&#41;; SetMin&#40;file_number,0&#41;;                        SetMax&#40;file_number,max_files-1&#41;;  SetDefaultValue&#40;file_number,0&#41;;                    paused &#58;= CreateParam&#40;'paused',ptSwitch&#41;; SetIsInput&#40;paused,false&#41;;     pause_seconds &#58;= CreateParam&#40;'pause_seconds',ptDataFader &#41;; SetIsInput&#40;pause_seconds,false&#41;; SetFormat&#40;pause_seconds, '%.2f'&#41;; SetMin&#40;pause_seconds,0&#41;;           SetMax&#40;pause_seconds,30&#41;;                SetDefaultValue&#40;pause_seconds,0&#41;;  SetSymbol&#40;pause_seconds,'seconds'&#41;;                //init variables                                                   file_num &#58;= 0; file_time &#58;= 0;   file_max_time = 500;                       file_trigger_time &#58;= 0;     pause_time &#58;= 0;   pause_trigger_time &#58;= 0; pause_max_time &#58;= 5;     run &#58;= false;                  pause &#58;= false; end;                                                            /////////////////////////////////////////////Procedure RESET&#40;&#41;begin      file_trigger_time &#58;= time;     file_time &#58;= 0;    file_max_time &#58;= 100000;    setvalue&#40;file_seconds,0&#41;;                                                              if &#40;file_num >= max_files&#41; then                        begin   run &#58;= false;   setvalue&#40;file_number,0&#41;;    setvalue&#40;playing,0&#41;;   end;   end;     /////////////////////////////////////////Procedure PAUSE_PROC&#40;&#41;                          begin                               pause &#58;= true;    setvalue&#40;paused,1&#41;;      pause_trigger_time &#58;= time;   run &#58;= false;end;                                                 ///////////////////////////////////////////Procedure Callback &#40;n&#58; integer&#41;begin                                             if&#40; n = start&#41; then           begin                                      file_num &#58;= 0;          file_trigger_time &#58;= time;                             run &#58;= true;           pause_max_time &#58;= getvalue&#40;pause_duration&#41;;         end;                   if&#40; n = stop&#41; then           begin                                         run &#58;= false;          setvalue&#40;file_seconds,0&#41;;          setvalue&#40;file_number,0&#41;;          setvalue&#40;playing,0&#41;;                      end;          end; //callback               //////////////////////////////////////////////////////// Main Loop procedure//////////////////////////////////////////////////////Procedure Process;begin     if &#40;pause&#41; then   begin    setvalue&#40;playing,0&#41;;   pause_time &#58;= &#40;time - pause_trigger_time&#41; * 100000; //as time is in nanosed       setvalue&#40;pause_seconds, pause_time&#41;;       if &#40;pause_time >= pause_max_time &#41; then      begin       pause &#58;= false;                   setvalue&#40;paused,0&#41;;                       setvalue&#40;pause_seconds, 0&#41;;      run&#58;= true;      RESET&#40;&#41;;       //reset file second counter                 end;    end;    if &#40;run&#41; then                          begin                                               setvalue&#40;playing,1&#41;;   file_time &#58;= &#40;time - file_trigger_time&#41; * 100000;   //as time is in nanosec   setvalue&#40;file_seconds,file_time&#41;;                       file_max_time &#58;= durations&#91;file_num&#93;;  //check in array what is max_time                           if &#40;file_time >= file_max_time&#41; then    // if over             begin    PAUSE_PROC&#40;&#41;;                          //start pause procedure        inc&#40;file_num&#41;;                         // increment file number            setvalue&#40;file_number,file_num&#41;;           end;    end;end; //process/////////////////////

Statistics: Posted by 23fx23 — 28 May 2018, 13:30


]]>
2018-05-28T10:24:57+02:00 2018-05-28T10:24:57+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39932#p39932 <![CDATA[Besoin d'aide pour le scripting]]>
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 !

Statistics: Posted by divers69 — 28 May 2018, 10:24


]]>
BrainModular BrainModular Users Forum 2018-06-04T17:15:33+02:00 https://brainmodular.org/forums/app.php/feed/topic/6227 2018-06-04T17:15:33+02:00 2018-06-04T17:15:33+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39978#p39978 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 04 Jun 2018, 17:15


]]>
2018-06-04T16:57:47+02:00 2018-06-04T16:57:47+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39977#p39977 <![CDATA[Besoin d'aide pour le scripting]]> 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.

Statistics: Posted by 23fx23 — 04 Jun 2018, 16:57


]]>
2018-06-04T14:55:45+02:00 2018-06-04T14:55:45+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39976#p39976 <![CDATA[Besoin d'aide pour le scripting]]> 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

Statistics: Posted by divers69 — 04 Jun 2018, 14:55


]]>
2018-05-29T16:22:16+02:00 2018-05-29T16:22:16+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39960#p39960 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 29 May 2018, 16:22


]]>
2018-05-29T15:20:39+02:00 2018-05-29T15:20:39+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39959#p39959 <![CDATA[Besoin d'aide pour le scripting]]> 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.

Statistics: Posted by 23fx23 — 29 May 2018, 15:20


]]>
2018-05-29T15:12:43+02:00 2018-05-29T15:12:43+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39958#p39958 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 29 May 2018, 15:12


]]>
2018-05-29T15:01:23+02:00 2018-05-29T15:01:23+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39957#p39957 <![CDATA[Besoin d'aide pour le scripting]]>
tu peux mater les ex sur cette page, je la rajouterai si tu galere
http://www.sensomusic.org/manual/en/scr ... tutorial07

Statistics: Posted by 23fx23 — 29 May 2018, 15:01


]]>
2018-05-29T13:05:37+02:00 2018-05-29T13:05:37+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39955#p39955 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 29 May 2018, 13:05


]]>
2018-05-29T12:45:40+02:00 2018-05-29T12:45:40+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39954#p39954 <![CDATA[Besoin d'aide pour le scripting]]> 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.

Statistics: Posted by 23fx23 — 29 May 2018, 12:45


]]>
2018-05-29T09:13:37+02:00 2018-05-29T09:13:37+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39953#p39953 <![CDATA[Besoin d'aide pour le scripting]]> 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

Statistics: Posted by divers69 — 29 May 2018, 09:13


]]>
2018-05-28T18:12:06+02:00 2018-05-28T18:12:06+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39940#p39940 <![CDATA[Besoin d'aide pour le scripting]]> 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:

//////////////////////////////////////////////////////const max_files = 5;            //global constant of number of files const max_cycles = 3;           // how many times will cycle//////////////////////////////////////////////////////// Paramters declaration                                           //////////////////////////////////////////////////////var pstart &#58; Tparameter;       //start button parameter                                    var stop  &#58; Tparameter;       //stop button parameter        var playing &#58; Tparameter;     // swicth of playing status                     var paused &#58; Tparameter;      // switch of paused status            var pause_duration &#58; Tparameter;    // parameter for pauseduration in seconds   var start_pos &#58; Tparameter;  var current_cycle &#58; Tparameter;var file_seconds&#58; Tparameter;        //current file diplayed timevar pause_seconds&#58; Tparameter;       //current pause displayed time                          var file_number&#58; Tparameter;         // current file numbervar durations &#58; array &#91;0..max_files-1&#93; of integer = &#91;3,5,4,5,5&#93;;                                // file playing durations in seconds var starts &#58; array &#91;0..max_files-1&#93; of single = &#91;0.10,0.25,0.0,0.12,0.50&#93;;                              // files start pos 0 =0 1= 100 percent                            // Global Variables  var cycle_nb &#58; integer;                                         var file_num &#58; integer;  var file_time &#58; single;                           var file_trigger_time &#58; single;    var file_max_time &#58; integer;     var pause_time &#58; single;    var pause_trigger_time &#58; single;  var pause_max_time &#58; single;      var run &#58; boolean;  var pause &#58; boolean;                           //////////////////////////////////////////////////////// initialisation procedure//////////////////////////////////////////////////////procedure init;        //create ui parametersbegin   pstart &#58;= CreateParam&#40;'start',ptButton&#41;; SetIsOutput&#40;pstart,false&#41;;        stop &#58;= CreateParam&#40;'stop',ptButton&#41;;            SetIsOutput&#40;stop,false&#41;;    pause_duration &#58;= CreateParam&#40;'pause_duration',ptDataFader &#41;; SetIsOutput&#40;pause_duration,false&#41;; SetFormat&#40;pause_duration, '%.0f'&#41;; SetMin&#40;pause_duration,0&#41;;                                        SetMax&#40;pause_duration,100&#41;;  SetValue&#40;pause_duration,2&#41;; SetDefaultValue&#40;pause_duration,5&#41;;  SetSymbol&#40;pause_duration,'seconds'&#41;;                playing &#58;= CreateParam&#40;'playing',ptSwitch&#41;; SetIsInput&#40;playing,false&#41;;                                   file_seconds &#58;= CreateParam&#40;'file_seconds',ptDataFader &#41;; SetIsInput&#40;file_seconds,false&#41;; SetFormat&#40;file_seconds, '%.2f'&#41;; SetMin&#40;file_seconds,0&#41;;           SetMax&#40;file_seconds,500&#41;;                SetDefaultValue&#40;file_seconds,0&#41;;              file_number &#58;= CreateParam&#40;'file_number',ptDataFader &#41;; SetIsInput&#40;file_number,false&#41;; SetMin&#40;file_number,0&#41;;                        SetMax&#40;file_number,max_files-1&#41;;  SetDefaultValue&#40;file_number,0&#41;;                    paused &#58;= CreateParam&#40;'paused',ptSwitch&#41;; SetIsInput&#40;paused,false&#41;;     pause_seconds &#58;= CreateParam&#40;'pause_seconds',ptDataFader &#41;; SetIsInput&#40;pause_seconds,false&#41;; SetFormat&#40;pause_seconds, '%.2f'&#41;; SetMin&#40;pause_seconds,0&#41;;           SetMax&#40;pause_seconds,30&#41;;                SetDefaultValue&#40;pause_seconds,0&#41;;    SetValue&#40;pause_seconds,2&#41;;   SetSymbol&#40;pause_seconds,'seconds'&#41;;     start_pos &#58;= CreateParam&#40;'start_pos', ptDataFader&#41;; SetIsInput&#40;start_pos,false&#41;;  SetFormat&#40;start_pos, '%.2f'&#41;; SetMin&#40;start_pos,0&#41;;           SetMax&#40;start_pos,100&#41;;                SetDefaultValue&#40;start_pos,0&#41;;  SetSymbol&#40;start_pos,'percent'&#41;;  current_cycle&#58;= CreateParam&#40;'current_cycle',ptdatafield&#41;; setIsInput&#40;current_cycle,false&#41;;    //init variables                                                   file_num &#58;= 0; file_time &#58;= 0;   file_max_time = 500;                                    file_trigger_time &#58;= 0;                                pause_time &#58;= 0;   pause_trigger_time &#58;= 0; pause_max_time &#58;= 0;     run &#58;= false;                  pause &#58;= false;  setvalue&#40;start_pos, starts&#91;0&#93;&#41;;  cycle_nb &#58;= 0;                        setvalue&#40;current_cycle,0&#41;; end;                                                            /////////////////////////////////////////////Procedure RESET&#40;&#41;begin      file_trigger_time &#58;= time;     file_time &#58;= 0;    file_max_time &#58;= 100000;    setvalue&#40;file_seconds,0&#41;;                                                              if &#40;file_num >= max_files&#41; then                        begin   inc&#40;cycle_nb&#41;;   setvalue&#40;current_cycle,cycle_nb&#41;;   file_num &#58;= 0;   setvalue&#40;file_number,0&#41;;          if&#40;cycle_nb > max_cycles&#41; then     //if over last cycle, completely stop        begin      run &#58;= false;                    setvalue&#40;file_number,0&#41;;              setvalue&#40;playing,0&#41;;      end    else       //else only reset file nb to 0               begin                                              file_num &#58;= 0;       setvalue&#40;file_number,0&#41;;        end;   end;   end;//reset     /////////////////////////////////////////Procedure PAUSE_PROC&#40;&#41;                          begin                               pause &#58;= true;    setvalue&#40;paused,1&#41;;      pause_trigger_time &#58;= time;   run &#58;= false;end;                                                 ///////////////////////////////////////////Procedure Callback &#40;n&#58; integer&#41;begin                                             if&#40; n = pstart&#41; then           begin             pause_max_time &#58;= getvalue&#40;pause_duration&#41;;            file_num &#58;= 0;           setvalue&#40;file_number,0&#41;;            cycle_nb &#58;= 0;             setvalue&#40;current_cycle,0&#41;;            file_trigger_time &#58;= time;                             run &#58;= true;          end;                   if&#40; n = stop&#41; then           begin                                         run &#58;= false;          setvalue&#40;file_seconds,0&#41;;          setvalue&#40;file_number,0&#41;;           setvalue&#40;current_cycle,0&#41;;            setvalue&#40;playing,0&#41;;                      end;                   if&#40;n = pause_duration&#41; then         begin          pause_max_time &#58;= getvalue&#40;pause_duration&#41;;         end;         end; //callback               //////////////////////////////////////////////////////// Main Loop procedure//////////////////////////////////////////////////////Procedure Process;begin     if &#40;pause&#41; then   begin    setvalue&#40;playing,0&#41;;   pause_time &#58;= &#40;time - pause_trigger_time&#41; * 100000; //as time is in nanosed       setvalue&#40;pause_seconds, pause_time&#41;;       if &#40;pause_time >= pause_max_time &#41; then      begin       pause &#58;= false;                   setvalue&#40;paused,0&#41;;                       setvalue&#40;pause_seconds, 0&#41;;      run&#58;= true;      RESET&#40;&#41;;       //reset file second counter                 end;    end;    if &#40;run&#41; then                          begin                                               setvalue&#40;playing,1&#41;;   file_time &#58;= &#40;time - file_trigger_time&#41; * 100000;   //as time is in nanosec   setvalue&#40;file_seconds,file_time&#41;;                       file_max_time &#58;= durations&#91;file_num&#93;;  //check in array what is max_time                          if &#40;file_time >= file_max_time&#41; then    // if over             begin    PAUSE_PROC&#40;&#41;;                          //start pause procedure        inc&#40;file_num&#41;;                         // increment file number            setvalue&#40;file_number,file_num&#41;;         setvalue&#40;start_pos, starts&#91;file_num&#93;&#41;; //check in array start pos and output to param     end;    end;end; //process/////////////////////

Statistics: Posted by 23fx23 — 28 May 2018, 18:12


]]>
2018-05-28T17:27:50+02:00 2018-05-28T17:27:50+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39939#p39939 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 28 May 2018, 17:27


]]>
2018-05-28T17:22:39+02:00 2018-05-28T17:22:39+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39938#p39938 <![CDATA[Besoin d'aide pour le scripting]]> 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
Image

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

Statistics: Posted by 23fx23 — 28 May 2018, 17:22


]]>
2018-05-28T16:36:52+02:00 2018-05-28T16:36:52+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39937#p39937 <![CDATA[Besoin d'aide pour le scripting]]> 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

Statistics: Posted by divers69 — 28 May 2018, 16:36


]]>
2018-05-28T16:09:41+02:00 2018-05-28T16:09:41+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39936#p39936 <![CDATA[Besoin d'aide pour le scripting]]> 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 .

Image

Statistics: Posted by 23fx23 — 28 May 2018, 16:09


]]>
2018-05-28T15:44:29+02:00 2018-05-28T15:44:29+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39935#p39935 <![CDATA[Besoin d'aide pour le scripting]]> 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?

Statistics: Posted by divers69 — 28 May 2018, 15:44


]]>
2018-05-28T13:39:05+02:00 2018-05-28T13:39:05+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39934#p39934 <![CDATA[Besoin d'aide pour le scripting]]> Statistics: Posted by divers69 — 28 May 2018, 13:39


]]>
2018-05-28T13:30:11+02:00 2018-05-28T13:30:11+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39933#p39933 <![CDATA[Besoin d'aide pour le scripting]]> (ç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:

//////////////////////////////////////////////////////const max_files = 5;            //global constant of number of files//////////////////////////////////////////////////////// Paramters declaration                                           //////////////////////////////////////////////////////var start &#58; Tparameter;       //start button parameter                                    var stop  &#58; Tparameter;       //stop button parameter        var playing &#58; Tparameter;     // swicth of playing status                     var paused &#58; Tparameter;      // switch of paused status            var pause_duration &#58; Tparameter;    // parameter for pauseduration in secondsvar file_seconds&#58; Tparameter;        //current file diplayed timevar pause_seconds&#58; Tparameter;       //current pause displayed time                          var file_number&#58; Tparameter;         // current file numbervar durations &#58; array &#91;0..max_files-1&#93; of integer = &#91;3,5,4,5,5&#93;;                                // file playing durations in seconds// Global Variables                                  var file_num &#58; integer;  var file_time &#58; single;                           var file_trigger_time &#58; single;    var file_max_time &#58; integer;     var pause_time &#58; single;    var pause_trigger_time &#58; single;  var pause_max_time &#58; single;      var run &#58; boolean;  var pause &#58; boolean;                           //////////////////////////////////////////////////////// initialisation procedure//////////////////////////////////////////////////////procedure init;        //create ui parametersbegin   start &#58;= CreateParam&#40;'start',ptButton&#41;; SetIsOutput&#40;start,false&#41;;        stop &#58;= CreateParam&#40;'stop',ptButton&#41;;            SetIsOutput&#40;stop,false&#41;;    pause_duration &#58;= CreateParam&#40;'pause_duration',ptDataFader &#41;; SetIsOutput&#40;pause_duration,false&#41;; SetFormat&#40;pause_duration, '%.0f'&#41;; SetMin&#40;pause_duration,0&#41;;                                        SetMax&#40;pause_duration,100&#41;;  SetValue&#40;pause_duration,5&#41;; SetDefaultValue&#40;pause_duration,5&#41;;  SetSymbol&#40;pause_duration,'seconds'&#41;;                playing &#58;= CreateParam&#40;'playing',ptSwitch&#41;; SetIsInput&#40;playing,false&#41;;                                   file_seconds &#58;= CreateParam&#40;'file_seconds',ptDataFader &#41;; SetIsInput&#40;file_seconds,false&#41;; SetFormat&#40;file_seconds, '%.2f'&#41;; SetMin&#40;file_seconds,0&#41;;           SetMax&#40;file_seconds,500&#41;;                SetDefaultValue&#40;file_seconds,0&#41;;              file_number &#58;= CreateParam&#40;'file_number',ptDataFader &#41;; SetIsInput&#40;file_number,false&#41;; SetMin&#40;file_number,0&#41;;                        SetMax&#40;file_number,max_files-1&#41;;  SetDefaultValue&#40;file_number,0&#41;;                    paused &#58;= CreateParam&#40;'paused',ptSwitch&#41;; SetIsInput&#40;paused,false&#41;;     pause_seconds &#58;= CreateParam&#40;'pause_seconds',ptDataFader &#41;; SetIsInput&#40;pause_seconds,false&#41;; SetFormat&#40;pause_seconds, '%.2f'&#41;; SetMin&#40;pause_seconds,0&#41;;           SetMax&#40;pause_seconds,30&#41;;                SetDefaultValue&#40;pause_seconds,0&#41;;  SetSymbol&#40;pause_seconds,'seconds'&#41;;                //init variables                                                   file_num &#58;= 0; file_time &#58;= 0;   file_max_time = 500;                       file_trigger_time &#58;= 0;     pause_time &#58;= 0;   pause_trigger_time &#58;= 0; pause_max_time &#58;= 5;     run &#58;= false;                  pause &#58;= false; end;                                                            /////////////////////////////////////////////Procedure RESET&#40;&#41;begin      file_trigger_time &#58;= time;     file_time &#58;= 0;    file_max_time &#58;= 100000;    setvalue&#40;file_seconds,0&#41;;                                                              if &#40;file_num >= max_files&#41; then                        begin   run &#58;= false;   setvalue&#40;file_number,0&#41;;    setvalue&#40;playing,0&#41;;   end;   end;     /////////////////////////////////////////Procedure PAUSE_PROC&#40;&#41;                          begin                               pause &#58;= true;    setvalue&#40;paused,1&#41;;      pause_trigger_time &#58;= time;   run &#58;= false;end;                                                 ///////////////////////////////////////////Procedure Callback &#40;n&#58; integer&#41;begin                                             if&#40; n = start&#41; then           begin                                      file_num &#58;= 0;          file_trigger_time &#58;= time;                             run &#58;= true;           pause_max_time &#58;= getvalue&#40;pause_duration&#41;;         end;                   if&#40; n = stop&#41; then           begin                                         run &#58;= false;          setvalue&#40;file_seconds,0&#41;;          setvalue&#40;file_number,0&#41;;          setvalue&#40;playing,0&#41;;                      end;          end; //callback               //////////////////////////////////////////////////////// Main Loop procedure//////////////////////////////////////////////////////Procedure Process;begin     if &#40;pause&#41; then   begin    setvalue&#40;playing,0&#41;;   pause_time &#58;= &#40;time - pause_trigger_time&#41; * 100000; //as time is in nanosed       setvalue&#40;pause_seconds, pause_time&#41;;       if &#40;pause_time >= pause_max_time &#41; then      begin       pause &#58;= false;                   setvalue&#40;paused,0&#41;;                       setvalue&#40;pause_seconds, 0&#41;;      run&#58;= true;      RESET&#40;&#41;;       //reset file second counter                 end;    end;    if &#40;run&#41; then                          begin                                               setvalue&#40;playing,1&#41;;   file_time &#58;= &#40;time - file_trigger_time&#41; * 100000;   //as time is in nanosec   setvalue&#40;file_seconds,file_time&#41;;                       file_max_time &#58;= durations&#91;file_num&#93;;  //check in array what is max_time                           if &#40;file_time >= file_max_time&#41; then    // if over             begin    PAUSE_PROC&#40;&#41;;                          //start pause procedure        inc&#40;file_num&#41;;                         // increment file number            setvalue&#40;file_number,file_num&#41;;           end;    end;end; //process/////////////////////

Statistics: Posted by 23fx23 — 28 May 2018, 13:30


]]>
2018-05-28T10:24:57+02:00 2018-05-28T10:24:57+02:00 https://brainmodular.org/forums/viewtopic.php?t=6227&p=39932#p39932 <![CDATA[Besoin d'aide pour le scripting]]>
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 !

Statistics: Posted by divers69 — 28 May 2018, 10:24


]]>