ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray BrainModular BrainModular Users Forum 2016-10-24T23:40:02+02:00 https://brainmodular.com/forums/app.php/feed/topic/5544 2016-10-24T23:40:02+02:00 2016-10-24T23:40:02+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36114#p36114 <![CDATA[A better way? (VST Params + Names via Index)]]>
I am thinking a button on tbe receive bus to request value. Off topic, will post in feature suggestions.
great idea !
we need both !

Statistics: Posted by oli_lab — 24 Oct 2016, 23:40


]]>
2016-10-24T16:30:43+02:00 2016-10-24T16:30:43+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36112#p36112 <![CDATA[A better way? (VST Params + Names via Index)]]> Statistics: Posted by gurulogic — 24 Oct 2016, 16:30


]]>
2016-10-24T11:02:15+02:00 2016-10-24T11:02:15+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36111#p36111 <![CDATA[A better way? (VST Params + Names via Index)]]>
-Busses. They only send values when changed. This keeps making me very very frustrated. Need a way in HH to request busses send current values.
definitly an issue on advanced patches

an input " send data" on the bus send modules would be a great improvement, Senso ?

Statistics: Posted by oli_lab — 24 Oct 2016, 11:02


]]>
2016-10-24T06:43:48+02:00 2016-10-24T06:43:48+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36110#p36110 <![CDATA[A better way? (VST Params + Names via Index)]]>
Things I would like the patch to be able to do:
-Scrolling through learned parameters pages
-Toggling between multiple VST's workspace wide with auto parameters update
-Learn from multiple VST's on one page (have working sort of via a mess of busses, and concat /extract array modules etc.
-Cook me dinner.

Annoying things:
-Busses. They only send values when changed. This keeps making me very very frustrated. Need a way in HH to request busses send current values.
-Empty parameter names in VST. Does not show as a parameter name and causes name index malfunctions.
-Can't figure out how to do the learn reset thing in this patch without the annoying double press of learn switch for next learn.
-Cold pizza

http://www.sensomusic.org/forums/upload ... s%20v3.pat

Statistics: Posted by gurulogic — 24 Oct 2016, 06:43


]]>
2016-10-19T10:15:08+02:00 2016-10-19T10:15:08+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36094#p36094 <![CDATA[A better way? (VST Params + Names via Index)]]> Statistics: Posted by gurulogic — 19 Oct 2016, 10:15


]]>
2016-10-19T10:09:02+02:00 2016-10-19T10:09:02+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36093#p36093 <![CDATA[A better way? (VST Params + Names via Index)]]> Statistics: Posted by 23fx23 — 19 Oct 2016, 10:09


]]>
2016-10-19T08:46:35+02:00 2016-10-19T08:46:35+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36091#p36091 <![CDATA[A better way? (VST Params + Names via Index)]]>
On my side i found a different solution,i suppose if we use this patch for some specific Plug ins , and each one will need different new parameters name. Not easy to create a rule.
So i 've insert a list box ( via comma text) in the parameters name flow, once populated, i delete the inlet wire.
Now i can rename individually each parameters . Save the patch with the name for this plug in

Image

Statistics: Posted by nay-seven — 19 Oct 2016, 08:46


]]>
2016-10-19T07:43:15+02:00 2016-10-19T07:43:15+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36090#p36090 <![CDATA[A better way? (VST Params + Names via Index)]]> normally it should be this: if you locate in the script you use where there is "copy"

param := copy(param,0,NB_CHAR_MAX); // actually keep part from char 0 to NB_CHAR_MAX defined at top of the script

so what you could do is define a new constant at top of the script like const CHAR_START = wanted start position value;
and then replace by

CODE:

 param &#58;= copy&#40;param,CHAR_START, CHAR_START + NB_CHAR_MAX&#41;;
however i don't know what will happen if doing so we go beyond the actual char lenght of item, as the offset+lenght could potentially be greater
so maybe if problems use this that will pick the minimum integer between item actual length and lenght we asked

CODE:

            if Length&#40;param&#41; > NB_CHAR_MAX then begin          param &#58;= copy&#40;param,CHAR_START , minI&#40;CHAR_START + NB_CHAR_MAX,Length&#40;param&#41;&#41;&#41;;      end;

Statistics: Posted by 23fx23 — 19 Oct 2016, 07:43


]]>
2016-10-19T06:14:01+02:00 2016-10-19T06:14:01+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36088#p36088 <![CDATA[A better way? (VST Params + Names via Index)]]>
Is there anywhere to enter a value to offset the start of where to clip from.. ie: iwanttoextract[thispartonly] ? I tried but my guesses were not so good..

Statistics: Posted by gurulogic — 19 Oct 2016, 06:14


]]>
2016-10-19T00:37:30+02:00 2016-10-19T00:37:30+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36075#p36075 <![CDATA[A better way? (VST Params + Names via Index)]]> can edit at top of the script.
I also set fast callbacks to false wich is better when dealing with iml and a lentency bloc count man can adjust , both should help if observing feedback.
just have to set MODE_MULTI to true if using the way the multi vst patch shown, or false if using only one vst in same patch. then should just replace existing script codes

CODE:

/////////////////////////////////////////////// IML VST Scroller 23fx 17/10/16// Allow to scroll Vst params names and values// And passes them to items   // VST and items should be in same patch  // of the script, VST should be TAGGED// with 'VST ' tag bellow, and items// tag numbered from 0 to NB_ELEMENTS-1////////////////////////////////////////////const NB_ELEMENTS = 8;    //how many items ie faders/knobsconst NB_CHAR_MAX = 8;    // Max lengh of displayed namesconst MODE_MULTI = true; //set false if only one vst in same patch, true                         // for multi vst spread accross different patchsconst msg_VST_TAG    = 'VST ';     //vst header tag followed by space         const msg_SET_PATCH  = 'SET_TARGET_PATCH SENDER_PATCH';                const msg_SET_STRING = 'SET_STRING_VALUE ';                   const msg_GET_VALUE  = 'GET_VALUE ';                             const msg_SET_VALUE  = 'SET_VALUE ';                                                                                                                  const max_count_scroll = 200;                        const max_count_set = 200;                        //when scrolling iml get VST values and sets item values                        //that items values get back to script via array                                    // normally we want when modifying items to                         // send values back to vst                         // so there is a wait time when scrolling                         //to avoid msgs loops overflows being constantly send back                         //idem when we set a value, params array in feedback                        //this means high amount of message we stop while we set                        // increase if observing feedback, decrease for less wait // parameters declaration                 var pParamsArray &#58; Tparameter;var pCommaIn    &#58; Tparameter;   var pscroll    &#58; Tparameter;                                      var parray &#58; Tparameter;var pNB_params &#58; Tparameter;       var pMax_Scroll &#58; Tparameter;                                        var pMax_Pages &#58; Tparameter; var pCounting_Scroll&#58; Tparameter;var pCounting_Set&#58; Tparameter;   var pIML&#58; Tparameter;                                            //var output    &#58; array &#91;0..NB_ELEMENTS&#93; of Tparameter;var sl1       &#58; TStringList;                                              //var mess &#58; string;   var scroll &#58; integer;    var count_scroll &#58; integer;   var counting_scroll &#58; boolean;   var count_set &#58; integer;   var counting_set &#58; boolean; var nb_params &#58; integer;        var param &#58; string;                                     var msg_iml&#58; string;     var i ,iscroll, id, idscroll&#58; integer;                        var in_val, mem_val ,idval&#58; single;                        var array_mem &#58; array &#91;0..NB_ELEMENTS&#93; of single;                                              // destroyprocedure Destroy;begin   sl1.free;end; ///////////////////////////////////////////////////////// // initialisation &#58; create parametersprocedure init;var i &#58; integer;begin      SetModuleColor&#40;$909090&#41;;            pParamsArray &#58;= CreateParam&#40;'params array',ptArray&#41;;   SetIsOutput&#40;pParamsArray,false&#41;;   SetFastCallBack&#40;pParamsArray, false&#41;;             pCommaIn &#58;= CreateParam&#40;'params names',ptTextField&#41;; SetIsOutPut&#40;pCommaIn,false&#41;;  SetFastCallBack&#40;pCommaIn , false&#41;;                                                            pscroll &#58;= CreateParam&#40;'scroll',ptDataField&#41;;  SetIsOutPut&#40;pscroll,false&#41;;   SetFastCallBack&#40;pscroll, false&#41;;                                        parray &#58;= CreateParam&#40;'items array',ptArray&#41;;   SetIsOutput&#40;parray,false&#41;;                         setlength&#40;parray,NB_ELEMENTS&#41;;    SetFastCallBack&#40;parray , false&#41;;         pNB_params &#58;= CreateParam&#40;'nb of params',ptDataField&#41;;   SetIsInPut&#40;pNB_params,false&#41;;        pMax_Scroll &#58;= CreateParam&#40;'max scroll',ptDataField&#41;;    SetIsInPut&#40;pMax_Scroll,false&#41;;       pMax_Pages &#58;= CreateParam&#40;'max pages',ptDataField&#41;;    SetIsInPut&#40;pMax_Pages,false&#41;;                 pCounting_Set&#58;= CreateParam&#40;'VST feedback blocked',ptSwitch&#41;;    SetIsInPut&#40;pCounting_Set,false&#41;;                             pCounting_Scroll&#58;= CreateParam&#40;'User feedback blocked',ptSwitch&#41;;    SetIsInPut&#40;pCounting_Scroll,false&#41;;              pIML&#58;= CreateParam&#40;'IML_message',ptTextField&#41;;     SetIsInPut&#40;pIML,false&#41;;                                                                    count_scroll&#58;= -1;      count_set&#58;= -1;           counting_scroll &#58;= FALSE;       counting_set &#58;= FALSE;   Sl1.Create;       Sl1.SetCommaText&#40;GetStringValue&#40;pCommaIn&#41;&#41;;   nb_params &#58;= Sl1.count;  SetValue&#40;pNB_params,nb_params&#41;;                       SetValue&#40;pMax_Scroll,nb_params-NB_ELEMENTS&#41;;  SetValue&#40;pMax_Pages, nb_params div NB_ELEMENTS&#41;;    end;///INIT   /////////////////////////////////// Procedure SEND_NAMES_TO_ITEMS;begin                                For i &#58;= 0 to NB_ELEMENTS-1                           do begin                               iscroll&#58;=i+scroll;                                                                 if &#40;iscroll<nb_params&#41;                               then begin                                                   param &#58;= SL1.GetStrings&#40;iscroll&#41;;             if Length&#40;param&#41; > NB_CHAR_MAX then begin      param &#58;= copy&#40;param,0,NB_CHAR_MAX&#41;;      end;         end                                           else begin      param &#58;= '_';        end;     msg_iml &#58;= +msg_SET_STRING + inttostr&#40;i&#41; + ' CAPTION '+ ''''+param+'''';     SendUsineMsg &#40;msg_iml&#41;;  //name apply       end;//loopend;   ///////////////////////////////////////////// Procedure SEND_VALUES_TO_ITEMS; var temp &#58; single;begin     For i &#58;= 0 to NB_ELEMENTS-1      do begin                               iscroll&#58;=i+scroll;                                                                 if &#40;iscroll<nb_params&#41;                               then begin                                                   param &#58;= SL1.GetStrings&#40;iscroll&#41;;                                             //method A gets from VST to temp var and send back to item        // but use 2x more iml messages so prob higher cpu           // msg_iml &#58;= msg_GET_VALUE + msg_VST_TAG + param + ' "PARAM_VALUE"';        //  SendUsineMsg &#40;msg_iml&#41;;     //get from vst to temp var                   //  msg_iml &#58;= msg_SET_VALUE + inttostr&#40;i&#41; + ' 1 '+ '"PARAM_VALUE"';       //  SendUsineMsg &#40;msg_iml&#41;;    // send temp var to item                   //method B picks directly from params array float        temp &#58;= GetDataArrayValue&#40;pParamsArray,iscroll&#41;;        msg_iml &#58;= msg_SET_VALUE + inttostr&#40;i&#41; + ' 1 '+ floattostr&#40;temp&#41;;         SendUsineMsg &#40;msg_iml&#41;;    // send temp var to item                     end                                           else begin         msg_iml &#58;= msg_SET_VALUE + inttostr&#40;i&#41; + ' 1 '+ '0';          SendUsineMsg &#40;msg_iml&#41;;   //send 0 if out of range       end;                                                            end; //loop        end;///////////////////////////////Procedure IMPORT_COMMA_TEXT;begin  Sl1.SetCommaText&#40;GetStringValue&#40;pCommaIn&#41;&#41;;   nb_params &#58;= Sl1.count;                                SetValue&#40;pNB_params,nb_params&#41;;    SetValue&#40;pMax_Scroll,nb_params-NB_ELEMENTS&#41;;    SetValue&#40;pMax_Pages, nb_params div NB_ELEMENTS&#41;;  end;  //////////////////////////////////////Procedure SEND_VALUE_TO_VST;begin  if &#40;idscroll < nb_params&#41; then begin         if&#40;MODE_MULTI&#41; then begin         msg_iml &#58;= msg_SET_PATCH + ',' + '"'+ msg_SET_VALUE + msg_VST_TAG +  '''' +SL1.GetStrings&#40;idscroll&#41;+ ''''+ ' '+ floattostr&#40;idval&#41; +'"';        SetStringValue&#40;pIML,msg_iml&#41;;     end   else begin                                             SendUsineMsg &#40;msg_SET_PATCH&#41;;    msg_iml &#58;= msg_SET_VALUE + msg_VST_TAG +  '''' +SL1.GetStrings&#40;idscroll&#41;+ ''''+ ' '+ floattostr&#40;idval&#41;;    SendUsineMsg &#40;msg_iml&#41;;   end;        end;   end;///////////////////////////////////////////////////////////////////////////  procedure Callback&#40;n&#58;integer&#41;;begin     if&#40;n=pCommaIn&#41; then begin IMPORT_COMMA_TEXT; SEND_NAMES_TO_ITEMS; end;     if&#40; &#40;n= parray&#41; AND &#40;not counting_scroll&#41;&#41;then begin   count_set &#58;=0;      //while we set we don't want params array in feedback  For i &#58;= 0 to NB_ELEMENTS-1      do begin         in_val &#58;= GetDataArrayValue&#40;parray,i&#41;;        mem_val &#58;= array_mem&#91;i&#93;;        if &#40;mem_val - in_val <> 0&#41;    then begin        id &#58;= i;        idval &#58;= in_val;                      end;                                                      array_mem&#91;i&#93; &#58;= getDataArrayValue&#40;parray,i&#41;;                       end; //loop                                  idscroll &#58;= id + scroll;                     SEND_VALUE_TO_VST;            end;                                                                                                                                      if &#40;n = pscroll&#41; then begin       count_scroll &#58;= 0;                                                              SendUsineMsg &#40;msg_SET_PATCH&#41;;                                                                                      scroll &#58;= trunc&#40;GetValue&#40;pscroll&#41;&#41;;      &#40;SEND_NAMES_TO_ITEMS&#41;;     &#40;SEND_VALUES_TO_ITEMS&#41;;                                                                           end;    if&#40;n=pParamsArray&#41; AND &#40;not counting_set&#41;then begin     count_scroll &#58;= 0;    &#40;SEND_VALUES_TO_ITEMS&#41;;  end;                                                        end;  ////Callback   // strace&#40;GetStringValue&#40;outPut&#41;&#41;;          ///////////////////////////////////////////////      Procedure Process;begin      if &#40;count_scroll >-1&#41; then begin count_scroll &#58;= count_scroll+1;     counting_scroll &#58;= true; if &#40;count_scroll >max_count_scroll&#41; then begin count_scroll &#58;=-1;   counting_scroll &#58;= false;  end;   SetValue&#40;pCounting_Scroll,count_scroll&#41;;   end;       if &#40;count_set >-1&#41; then begin count_set &#58;= count_set+1;     counting_set &#58;= true; if &#40;count_set >max_count_set&#41; then begin count_set &#58;=-1;   counting_set &#58;= false; end;  SetValue&#40;pCounting_Set,count_set&#41;;   end;  end; //PROC   ////////////////////////////////////////////////////                       // no process bloc
edit: i had also made one mistake that would create feedback when modifying on vst, fixed in above code

Statistics: Posted by 23fx23 — 19 Oct 2016, 00:37


]]>
2016-10-18T23:48:57+02:00 2016-10-18T23:48:57+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36074#p36074 <![CDATA[A better way? (VST Params + Names via Index)]]> not sure what you mean by "breaking the inputs from the outputs for me at the read within the script"?

@ Nay yeah not Sure IML is much more cpu efficient here, it just allow less wiring. think it might be when/ig passing huges params arrays or commatext only. Xtouch mini seems def a nice toy :p

@guru/others maybe iml would need some latency bloc to wait in certain cases, or i think i forgot to set to slower callback that could create problems, ill check

for the 'clipped too long names' thing
Ive made a simple script to force a max amount of char on a displayed item of a commatext. basically pick commain, if a n element is too long format it, and output comma tex out, so you can paste if want this in a new script and insert out of param names to filter too long names.

CODE:

////////////////////////////// set a max char length for comma text elements////////////////////////////const MAX_LEN = 8; //max displayed  chars per itemVar Commain,Commaout &#58; tparameter;Var SL1&#58; Tstringlist;   //////////////////////////////             Procedure Init;                                         Begin  commain&#58;= CreateParam&#40;'comma in',Pttextfield&#41;;Setisoutput&#40;commain,false&#41;;     commaout&#58;= CreateParam&#40;'comma out',Pttextfield&#41;;Setisinput&#40;commaout,false&#41;;     SL1.Create;         SetModuleColor&#40;$909090&#41;;END;                         // destroyprocedure Destroy;begin   sl1.free;end;   ///////////////////////////////////////////////////////////Procedure Callback &#40;n&#58;integer&#41;;    Var i, L, Litem &#58;integer;  Var item &#58; string; BEGIN                                                                               SL1.setcommatext&#40;getstringvalue&#40;COMMAIN&#41;&#41;;    L &#58;= SL1.Getcount;    for i&#58;= 0 to L -1 do begin     item &#58;= SL1.GetStrings&#40;i&#41;;    Litem&#58;= Length&#40;item&#41;;                       if Litem  > MAX_LEN then begin       item &#58;= copy&#40;item,0,MAX_LEN&#41;;           SL1.setstrings&#40;i,item&#41;;   end;                                          end;    SetStringValue&#40;commaout,SL1.Getcommatext&#41;;           END;    /////////////////////////////////////
NB this can work only on the non iml version, othewise iml will try to access params by cliped name and that won't work, ill try to provide a modified version of iml code with same setting, but can be a useful separated bloc maybe for other things..

Statistics: Posted by 23fx23 — 18 Oct 2016, 23:48


]]>
2016-10-17T12:32:34+02:00 2016-10-17T12:32:34+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36066#p36066 <![CDATA[A better way? (VST Params + Names via Index)]]> I'm working this script as well as a single script, the only problem is breaking the inputs from the outputs for me at the read within the script.

Ton's of MIDI tools! coming this way as well as data to arrays, clock arrays, conversions, etc...
Expect many new features in the next version :)

Until then I will do some conversions and share to try out, hopefully some feedback and we can optimize our modules and tools to build the library!

I haven't had a chance to go through these ones you guys are sharing, awesome collaboration and I hope we all continue to share....what a wonderful community and user group!!
Hopefully take some time later this evening or tomorrow morning away from hectic life to go through these and maybe help out.

-s

Statistics: Posted by sephult — 17 Oct 2016, 12:32


]]>
2016-10-17T11:06:34+02:00 2016-10-17T11:06:34+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36065#p36065 <![CDATA[A better way? (VST Params + Names via Index)]]>

Statistics: Posted by nay-seven — 17 Oct 2016, 11:06


]]>
2016-10-17T10:43:24+02:00 2016-10-17T10:43:24+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36064#p36064 <![CDATA[A better way? (VST Params + Names via Index)]]> A lot of fun with a simple LPD8 (and will more better with the behringer X-TOUCH MINI i'm waiting soon :) ) .

Working with, I've add an increment /decrement button to the select fader, more precise and easy to midi learn.
these 3 scripts will be really useful , good idea to separate them !
IML version seems to win the cpu battle but with only 0,2, 0.3 % better here

Statistics: Posted by nay-seven — 17 Oct 2016, 10:43


]]>
2016-10-17T10:35:11+02:00 2016-10-17T10:35:11+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36063#p36063 <![CDATA[A better way? (VST Params + Names via Index)]]>
Agreed about some parameter names being too long. Would be nice to be able to clip.

Statistics: Posted by gurulogic — 17 Oct 2016, 10:35


]]>
2016-10-17T07:18:49+02:00 2016-10-17T07:18:49+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36062#p36062 <![CDATA[A better way? (VST Params + Names via Index)]]> :o:o

I can't wait to check these out! Tomorrow..

Statistics: Posted by gurulogic — 17 Oct 2016, 07:18


]]>
2016-10-17T04:32:59+02:00 2016-10-17T04:32:59+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36061#p36061 <![CDATA[A better way? (VST Params + Names via Index)]]>
I couldn't help trying to push a bit more :p , so here are two versions that might be of interest.

first one is same patch idea used previously, but where 3 main process that looked a bit weird heavy tricks in classic patch methods have been scripted.
I made 3 scripts rather than one only as 'maybe re-usable blocs for other things simplifying the patching':

_one that directly extracts a 'page' from a big input comma text with a scroll input, splitting to individual elements.
_one that combine 'extract sub array of a bigger one, let apply settings to the subarray, and re-incrusts it in parent bigger array.
_one that picks an array and demuliplex to n outs acting as if they had pass_if_changed, so no need to add n times a pass_if_change

Image

so this one should *theorically behave same way as previous
VST_SCROLLER_KNOBS_SCRIPTED_VERSION

And a new one different approach, only one script and IML. iml setting wirelessly captions and values to items, and back to VST.
The VST has to be tagged 'VST', and the items tagged with numbers '0', '1', '2' ect, then iml will be able to adress them.
(Tho this one however imply all stuff being in same patch, ill think of a way to use with multiples vsts via busses but might be tricky).

Image

VST_SCROLLER_IML_VERSION

EDIT: and while we are here, here is a multi VST IML edition exemple based on your busses idea, so should be able to scroll vsts anywhere in wksp.
I used dynamic busses names switching, feel it's lighter than spreading n big comma text and arrays with selector. just add a Send_iml module like the
exemple in each vst subpatch, and set busses names in listboxes, here works quite nicely :)

IML_MULTI_VST_SCROLLER

Statistics: Posted by 23fx23 — 17 Oct 2016, 04:32


]]>
2016-10-16T23:35:02+02:00 2016-10-16T23:35:02+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36060#p36060 <![CDATA[A better way? (VST Params + Names via Index)]]> on my side i've change the max of the fader select ,
cause many plug in have a lot of parameters, so we i rely the get array size to his max ( divide by 8+ round)
second issue is the parameters names which are sometimes long and can't be read correctly

Statistics: Posted by nay-seven — 16 Oct 2016, 23:35


]]>
2016-10-16T22:15:45+02:00 2016-10-16T22:15:45+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36059#p36059 <![CDATA[A better way? (VST Params + Names via Index)]]>
It my fault because wasn't that clear when explained, but while we need the 8x pass_if_change before params (so we can set the knobs), we don't need them on output, and in-out before/after knobs shouldn't be same array, but one for demultiplex in and one for multiplex out otherwise it's kinda looping on itself and not useful., but add just 1 pass if change after the big array is reconstructed then.

here is a modified version based on nay'one i feel would work slighlty better and save tiny bit of cpu:

patch_with knobs_V2

im cleaning a bit the 1 script/iml version and will upload in one hour or so.

Statistics: Posted by 23fx23 — 16 Oct 2016, 22:15


]]>
2016-10-16T21:31:39+02:00 2016-10-16T21:31:39+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36058#p36058 <![CDATA[A better way? (VST Params + Names via Index)]]>
nay-seven, your build + expansion of 23fx23 patch idea works perfect. I can learn a lot from these examples.
I have done some more patching which allows usage of just one patch to switch between several VST plugins and have all parameters and names updated on switch. I did have some weird issues with sort of a feedback loop with parameters when using buses for this method but I think the stop modules have solved this.

Image

Statistics: Posted by gurulogic — 16 Oct 2016, 21:31


]]>
2016-10-16T16:26:54+02:00 2016-10-16T16:26:54+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36054#p36054 <![CDATA[A better way? (VST Params + Names via Index)]]> not at home yet but ill check when back.
Between ive made a single script/iml much efficient version ill post as well later

Statistics: Posted by 23fx23 — 16 Oct 2016, 16:26


]]>
2016-10-16T13:59:18+02:00 2016-10-16T13:59:18+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36053#p36053 <![CDATA[A better way? (VST Params + Names via Index)]]> Statistics: Posted by nay-seven — 16 Oct 2016, 13:59


]]>
2016-10-16T13:56:45+02:00 2016-10-16T13:56:45+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36052#p36052 <![CDATA[A better way? (VST Params + Names via Index)]]> )
I love VST dad from sephult and your solution 23FX is interesting too, a good complement to VST dad !
here my version, based on your's but with knobs to use midi learn
Download

Statistics: Posted by nay-seven — 16 Oct 2016, 13:56


]]>
2016-10-16T04:39:28+02:00 2016-10-16T04:39:28+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36051#p36051 <![CDATA[A better way? (VST Params + Names via Index)]]>
in case it's possible this way:

_add the given with usine split comma text to N outs script, out of the listbox on right, there you'll have your 8x name scrolling done.

then your 8x fader/knobs outs go to pin of an array , and on input the reverse, an array splits all the 8x pins out to your faders, but with a passif change in bettwenn,
then this can replace the array im using here.

but im pretty sure sephult could script ya a magic single thing to replace all that mess ;)

Statistics: Posted by 23fx23 — 16 Oct 2016, 04:39


]]>
2016-10-16T04:22:01+02:00 2016-10-16T04:22:01+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36050#p36050 <![CDATA[A better way? (VST Params + Names via Index)]]>
If really want no scripts, here is one possible solution without a single script, while keeping ability to adjust NB of element displayed per pages easily setting a constant

but typically for this i would use scripts and/or IML , will be less webby and more cpu efficient/modular ..

Image

workspace HH exemple

Statistics: Posted by 23fx23 — 16 Oct 2016, 04:22


]]>
BrainModular BrainModular Users Forum 2016-10-24T23:40:02+02:00 https://brainmodular.com/forums/app.php/feed/topic/5544 2016-10-24T23:40:02+02:00 2016-10-24T23:40:02+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36114#p36114 <![CDATA[A better way? (VST Params + Names via Index)]]>
I am thinking a button on tbe receive bus to request value. Off topic, will post in feature suggestions.
great idea !
we need both !

Statistics: Posted by oli_lab — 24 Oct 2016, 23:40


]]>
2016-10-24T16:30:43+02:00 2016-10-24T16:30:43+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36112#p36112 <![CDATA[A better way? (VST Params + Names via Index)]]> Statistics: Posted by gurulogic — 24 Oct 2016, 16:30


]]>
2016-10-24T11:02:15+02:00 2016-10-24T11:02:15+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36111#p36111 <![CDATA[A better way? (VST Params + Names via Index)]]>
-Busses. They only send values when changed. This keeps making me very very frustrated. Need a way in HH to request busses send current values.
definitly an issue on advanced patches

an input " send data" on the bus send modules would be a great improvement, Senso ?

Statistics: Posted by oli_lab — 24 Oct 2016, 11:02


]]>
2016-10-24T06:43:48+02:00 2016-10-24T06:43:48+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36110#p36110 <![CDATA[A better way? (VST Params + Names via Index)]]>
Things I would like the patch to be able to do:
-Scrolling through learned parameters pages
-Toggling between multiple VST's workspace wide with auto parameters update
-Learn from multiple VST's on one page (have working sort of via a mess of busses, and concat /extract array modules etc.
-Cook me dinner.

Annoying things:
-Busses. They only send values when changed. This keeps making me very very frustrated. Need a way in HH to request busses send current values.
-Empty parameter names in VST. Does not show as a parameter name and causes name index malfunctions.
-Can't figure out how to do the learn reset thing in this patch without the annoying double press of learn switch for next learn.
-Cold pizza

http://www.sensomusic.org/forums/upload ... s%20v3.pat

Statistics: Posted by gurulogic — 24 Oct 2016, 06:43


]]>
2016-10-19T10:15:08+02:00 2016-10-19T10:15:08+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36094#p36094 <![CDATA[A better way? (VST Params + Names via Index)]]> Statistics: Posted by gurulogic — 19 Oct 2016, 10:15


]]>
2016-10-19T10:09:02+02:00 2016-10-19T10:09:02+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36093#p36093 <![CDATA[A better way? (VST Params + Names via Index)]]> Statistics: Posted by 23fx23 — 19 Oct 2016, 10:09


]]>
2016-10-19T08:46:35+02:00 2016-10-19T08:46:35+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36091#p36091 <![CDATA[A better way? (VST Params + Names via Index)]]>
On my side i found a different solution,i suppose if we use this patch for some specific Plug ins , and each one will need different new parameters name. Not easy to create a rule.
So i 've insert a list box ( via comma text) in the parameters name flow, once populated, i delete the inlet wire.
Now i can rename individually each parameters . Save the patch with the name for this plug in

Image

Statistics: Posted by nay-seven — 19 Oct 2016, 08:46


]]>
2016-10-19T07:43:15+02:00 2016-10-19T07:43:15+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36090#p36090 <![CDATA[A better way? (VST Params + Names via Index)]]> normally it should be this: if you locate in the script you use where there is "copy"

param := copy(param,0,NB_CHAR_MAX); // actually keep part from char 0 to NB_CHAR_MAX defined at top of the script

so what you could do is define a new constant at top of the script like const CHAR_START = wanted start position value;
and then replace by

CODE:

 param &#58;= copy&#40;param,CHAR_START, CHAR_START + NB_CHAR_MAX&#41;;
however i don't know what will happen if doing so we go beyond the actual char lenght of item, as the offset+lenght could potentially be greater
so maybe if problems use this that will pick the minimum integer between item actual length and lenght we asked

CODE:

            if Length&#40;param&#41; > NB_CHAR_MAX then begin          param &#58;= copy&#40;param,CHAR_START , minI&#40;CHAR_START + NB_CHAR_MAX,Length&#40;param&#41;&#41;&#41;;      end;

Statistics: Posted by 23fx23 — 19 Oct 2016, 07:43


]]>
2016-10-19T06:14:01+02:00 2016-10-19T06:14:01+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36088#p36088 <![CDATA[A better way? (VST Params + Names via Index)]]>
Is there anywhere to enter a value to offset the start of where to clip from.. ie: iwanttoextract[thispartonly] ? I tried but my guesses were not so good..

Statistics: Posted by gurulogic — 19 Oct 2016, 06:14


]]>
2016-10-19T00:37:30+02:00 2016-10-19T00:37:30+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36075#p36075 <![CDATA[A better way? (VST Params + Names via Index)]]> can edit at top of the script.
I also set fast callbacks to false wich is better when dealing with iml and a lentency bloc count man can adjust , both should help if observing feedback.
just have to set MODE_MULTI to true if using the way the multi vst patch shown, or false if using only one vst in same patch. then should just replace existing script codes

CODE:

/////////////////////////////////////////////// IML VST Scroller 23fx 17/10/16// Allow to scroll Vst params names and values// And passes them to items   // VST and items should be in same patch  // of the script, VST should be TAGGED// with 'VST ' tag bellow, and items// tag numbered from 0 to NB_ELEMENTS-1////////////////////////////////////////////const NB_ELEMENTS = 8;    //how many items ie faders/knobsconst NB_CHAR_MAX = 8;    // Max lengh of displayed namesconst MODE_MULTI = true; //set false if only one vst in same patch, true                         // for multi vst spread accross different patchsconst msg_VST_TAG    = 'VST ';     //vst header tag followed by space         const msg_SET_PATCH  = 'SET_TARGET_PATCH SENDER_PATCH';                const msg_SET_STRING = 'SET_STRING_VALUE ';                   const msg_GET_VALUE  = 'GET_VALUE ';                             const msg_SET_VALUE  = 'SET_VALUE ';                                                                                                                  const max_count_scroll = 200;                        const max_count_set = 200;                        //when scrolling iml get VST values and sets item values                        //that items values get back to script via array                                    // normally we want when modifying items to                         // send values back to vst                         // so there is a wait time when scrolling                         //to avoid msgs loops overflows being constantly send back                         //idem when we set a value, params array in feedback                        //this means high amount of message we stop while we set                        // increase if observing feedback, decrease for less wait // parameters declaration                 var pParamsArray &#58; Tparameter;var pCommaIn    &#58; Tparameter;   var pscroll    &#58; Tparameter;                                      var parray &#58; Tparameter;var pNB_params &#58; Tparameter;       var pMax_Scroll &#58; Tparameter;                                        var pMax_Pages &#58; Tparameter; var pCounting_Scroll&#58; Tparameter;var pCounting_Set&#58; Tparameter;   var pIML&#58; Tparameter;                                            //var output    &#58; array &#91;0..NB_ELEMENTS&#93; of Tparameter;var sl1       &#58; TStringList;                                              //var mess &#58; string;   var scroll &#58; integer;    var count_scroll &#58; integer;   var counting_scroll &#58; boolean;   var count_set &#58; integer;   var counting_set &#58; boolean; var nb_params &#58; integer;        var param &#58; string;                                     var msg_iml&#58; string;     var i ,iscroll, id, idscroll&#58; integer;                        var in_val, mem_val ,idval&#58; single;                        var array_mem &#58; array &#91;0..NB_ELEMENTS&#93; of single;                                              // destroyprocedure Destroy;begin   sl1.free;end; ///////////////////////////////////////////////////////// // initialisation &#58; create parametersprocedure init;var i &#58; integer;begin      SetModuleColor&#40;$909090&#41;;            pParamsArray &#58;= CreateParam&#40;'params array',ptArray&#41;;   SetIsOutput&#40;pParamsArray,false&#41;;   SetFastCallBack&#40;pParamsArray, false&#41;;             pCommaIn &#58;= CreateParam&#40;'params names',ptTextField&#41;; SetIsOutPut&#40;pCommaIn,false&#41;;  SetFastCallBack&#40;pCommaIn , false&#41;;                                                            pscroll &#58;= CreateParam&#40;'scroll',ptDataField&#41;;  SetIsOutPut&#40;pscroll,false&#41;;   SetFastCallBack&#40;pscroll, false&#41;;                                        parray &#58;= CreateParam&#40;'items array',ptArray&#41;;   SetIsOutput&#40;parray,false&#41;;                         setlength&#40;parray,NB_ELEMENTS&#41;;    SetFastCallBack&#40;parray , false&#41;;         pNB_params &#58;= CreateParam&#40;'nb of params',ptDataField&#41;;   SetIsInPut&#40;pNB_params,false&#41;;        pMax_Scroll &#58;= CreateParam&#40;'max scroll',ptDataField&#41;;    SetIsInPut&#40;pMax_Scroll,false&#41;;       pMax_Pages &#58;= CreateParam&#40;'max pages',ptDataField&#41;;    SetIsInPut&#40;pMax_Pages,false&#41;;                 pCounting_Set&#58;= CreateParam&#40;'VST feedback blocked',ptSwitch&#41;;    SetIsInPut&#40;pCounting_Set,false&#41;;                             pCounting_Scroll&#58;= CreateParam&#40;'User feedback blocked',ptSwitch&#41;;    SetIsInPut&#40;pCounting_Scroll,false&#41;;              pIML&#58;= CreateParam&#40;'IML_message',ptTextField&#41;;     SetIsInPut&#40;pIML,false&#41;;                                                                    count_scroll&#58;= -1;      count_set&#58;= -1;           counting_scroll &#58;= FALSE;       counting_set &#58;= FALSE;   Sl1.Create;       Sl1.SetCommaText&#40;GetStringValue&#40;pCommaIn&#41;&#41;;   nb_params &#58;= Sl1.count;  SetValue&#40;pNB_params,nb_params&#41;;                       SetValue&#40;pMax_Scroll,nb_params-NB_ELEMENTS&#41;;  SetValue&#40;pMax_Pages, nb_params div NB_ELEMENTS&#41;;    end;///INIT   /////////////////////////////////// Procedure SEND_NAMES_TO_ITEMS;begin                                For i &#58;= 0 to NB_ELEMENTS-1                           do begin                               iscroll&#58;=i+scroll;                                                                 if &#40;iscroll<nb_params&#41;                               then begin                                                   param &#58;= SL1.GetStrings&#40;iscroll&#41;;             if Length&#40;param&#41; > NB_CHAR_MAX then begin      param &#58;= copy&#40;param,0,NB_CHAR_MAX&#41;;      end;         end                                           else begin      param &#58;= '_';        end;     msg_iml &#58;= +msg_SET_STRING + inttostr&#40;i&#41; + ' CAPTION '+ ''''+param+'''';     SendUsineMsg &#40;msg_iml&#41;;  //name apply       end;//loopend;   ///////////////////////////////////////////// Procedure SEND_VALUES_TO_ITEMS; var temp &#58; single;begin     For i &#58;= 0 to NB_ELEMENTS-1      do begin                               iscroll&#58;=i+scroll;                                                                 if &#40;iscroll<nb_params&#41;                               then begin                                                   param &#58;= SL1.GetStrings&#40;iscroll&#41;;                                             //method A gets from VST to temp var and send back to item        // but use 2x more iml messages so prob higher cpu           // msg_iml &#58;= msg_GET_VALUE + msg_VST_TAG + param + ' "PARAM_VALUE"';        //  SendUsineMsg &#40;msg_iml&#41;;     //get from vst to temp var                   //  msg_iml &#58;= msg_SET_VALUE + inttostr&#40;i&#41; + ' 1 '+ '"PARAM_VALUE"';       //  SendUsineMsg &#40;msg_iml&#41;;    // send temp var to item                   //method B picks directly from params array float        temp &#58;= GetDataArrayValue&#40;pParamsArray,iscroll&#41;;        msg_iml &#58;= msg_SET_VALUE + inttostr&#40;i&#41; + ' 1 '+ floattostr&#40;temp&#41;;         SendUsineMsg &#40;msg_iml&#41;;    // send temp var to item                     end                                           else begin         msg_iml &#58;= msg_SET_VALUE + inttostr&#40;i&#41; + ' 1 '+ '0';          SendUsineMsg &#40;msg_iml&#41;;   //send 0 if out of range       end;                                                            end; //loop        end;///////////////////////////////Procedure IMPORT_COMMA_TEXT;begin  Sl1.SetCommaText&#40;GetStringValue&#40;pCommaIn&#41;&#41;;   nb_params &#58;= Sl1.count;                                SetValue&#40;pNB_params,nb_params&#41;;    SetValue&#40;pMax_Scroll,nb_params-NB_ELEMENTS&#41;;    SetValue&#40;pMax_Pages, nb_params div NB_ELEMENTS&#41;;  end;  //////////////////////////////////////Procedure SEND_VALUE_TO_VST;begin  if &#40;idscroll < nb_params&#41; then begin         if&#40;MODE_MULTI&#41; then begin         msg_iml &#58;= msg_SET_PATCH + ',' + '"'+ msg_SET_VALUE + msg_VST_TAG +  '''' +SL1.GetStrings&#40;idscroll&#41;+ ''''+ ' '+ floattostr&#40;idval&#41; +'"';        SetStringValue&#40;pIML,msg_iml&#41;;     end   else begin                                             SendUsineMsg &#40;msg_SET_PATCH&#41;;    msg_iml &#58;= msg_SET_VALUE + msg_VST_TAG +  '''' +SL1.GetStrings&#40;idscroll&#41;+ ''''+ ' '+ floattostr&#40;idval&#41;;    SendUsineMsg &#40;msg_iml&#41;;   end;        end;   end;///////////////////////////////////////////////////////////////////////////  procedure Callback&#40;n&#58;integer&#41;;begin     if&#40;n=pCommaIn&#41; then begin IMPORT_COMMA_TEXT; SEND_NAMES_TO_ITEMS; end;     if&#40; &#40;n= parray&#41; AND &#40;not counting_scroll&#41;&#41;then begin   count_set &#58;=0;      //while we set we don't want params array in feedback  For i &#58;= 0 to NB_ELEMENTS-1      do begin         in_val &#58;= GetDataArrayValue&#40;parray,i&#41;;        mem_val &#58;= array_mem&#91;i&#93;;        if &#40;mem_val - in_val <> 0&#41;    then begin        id &#58;= i;        idval &#58;= in_val;                      end;                                                      array_mem&#91;i&#93; &#58;= getDataArrayValue&#40;parray,i&#41;;                       end; //loop                                  idscroll &#58;= id + scroll;                     SEND_VALUE_TO_VST;            end;                                                                                                                                      if &#40;n = pscroll&#41; then begin       count_scroll &#58;= 0;                                                              SendUsineMsg &#40;msg_SET_PATCH&#41;;                                                                                      scroll &#58;= trunc&#40;GetValue&#40;pscroll&#41;&#41;;      &#40;SEND_NAMES_TO_ITEMS&#41;;     &#40;SEND_VALUES_TO_ITEMS&#41;;                                                                           end;    if&#40;n=pParamsArray&#41; AND &#40;not counting_set&#41;then begin     count_scroll &#58;= 0;    &#40;SEND_VALUES_TO_ITEMS&#41;;  end;                                                        end;  ////Callback   // strace&#40;GetStringValue&#40;outPut&#41;&#41;;          ///////////////////////////////////////////////      Procedure Process;begin      if &#40;count_scroll >-1&#41; then begin count_scroll &#58;= count_scroll+1;     counting_scroll &#58;= true; if &#40;count_scroll >max_count_scroll&#41; then begin count_scroll &#58;=-1;   counting_scroll &#58;= false;  end;   SetValue&#40;pCounting_Scroll,count_scroll&#41;;   end;       if &#40;count_set >-1&#41; then begin count_set &#58;= count_set+1;     counting_set &#58;= true; if &#40;count_set >max_count_set&#41; then begin count_set &#58;=-1;   counting_set &#58;= false; end;  SetValue&#40;pCounting_Set,count_set&#41;;   end;  end; //PROC   ////////////////////////////////////////////////////                       // no process bloc
edit: i had also made one mistake that would create feedback when modifying on vst, fixed in above code

Statistics: Posted by 23fx23 — 19 Oct 2016, 00:37


]]>
2016-10-18T23:48:57+02:00 2016-10-18T23:48:57+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36074#p36074 <![CDATA[A better way? (VST Params + Names via Index)]]> not sure what you mean by "breaking the inputs from the outputs for me at the read within the script"?

@ Nay yeah not Sure IML is much more cpu efficient here, it just allow less wiring. think it might be when/ig passing huges params arrays or commatext only. Xtouch mini seems def a nice toy :p

@guru/others maybe iml would need some latency bloc to wait in certain cases, or i think i forgot to set to slower callback that could create problems, ill check

for the 'clipped too long names' thing
Ive made a simple script to force a max amount of char on a displayed item of a commatext. basically pick commain, if a n element is too long format it, and output comma tex out, so you can paste if want this in a new script and insert out of param names to filter too long names.

CODE:

////////////////////////////// set a max char length for comma text elements////////////////////////////const MAX_LEN = 8; //max displayed  chars per itemVar Commain,Commaout &#58; tparameter;Var SL1&#58; Tstringlist;   //////////////////////////////             Procedure Init;                                         Begin  commain&#58;= CreateParam&#40;'comma in',Pttextfield&#41;;Setisoutput&#40;commain,false&#41;;     commaout&#58;= CreateParam&#40;'comma out',Pttextfield&#41;;Setisinput&#40;commaout,false&#41;;     SL1.Create;         SetModuleColor&#40;$909090&#41;;END;                         // destroyprocedure Destroy;begin   sl1.free;end;   ///////////////////////////////////////////////////////////Procedure Callback &#40;n&#58;integer&#41;;    Var i, L, Litem &#58;integer;  Var item &#58; string; BEGIN                                                                               SL1.setcommatext&#40;getstringvalue&#40;COMMAIN&#41;&#41;;    L &#58;= SL1.Getcount;    for i&#58;= 0 to L -1 do begin     item &#58;= SL1.GetStrings&#40;i&#41;;    Litem&#58;= Length&#40;item&#41;;                       if Litem  > MAX_LEN then begin       item &#58;= copy&#40;item,0,MAX_LEN&#41;;           SL1.setstrings&#40;i,item&#41;;   end;                                          end;    SetStringValue&#40;commaout,SL1.Getcommatext&#41;;           END;    /////////////////////////////////////
NB this can work only on the non iml version, othewise iml will try to access params by cliped name and that won't work, ill try to provide a modified version of iml code with same setting, but can be a useful separated bloc maybe for other things..

Statistics: Posted by 23fx23 — 18 Oct 2016, 23:48


]]>
2016-10-17T12:32:34+02:00 2016-10-17T12:32:34+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36066#p36066 <![CDATA[A better way? (VST Params + Names via Index)]]> I'm working this script as well as a single script, the only problem is breaking the inputs from the outputs for me at the read within the script.

Ton's of MIDI tools! coming this way as well as data to arrays, clock arrays, conversions, etc...
Expect many new features in the next version :)

Until then I will do some conversions and share to try out, hopefully some feedback and we can optimize our modules and tools to build the library!

I haven't had a chance to go through these ones you guys are sharing, awesome collaboration and I hope we all continue to share....what a wonderful community and user group!!
Hopefully take some time later this evening or tomorrow morning away from hectic life to go through these and maybe help out.

-s

Statistics: Posted by sephult — 17 Oct 2016, 12:32


]]>
2016-10-17T11:06:34+02:00 2016-10-17T11:06:34+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36065#p36065 <![CDATA[A better way? (VST Params + Names via Index)]]>

Statistics: Posted by nay-seven — 17 Oct 2016, 11:06


]]>
2016-10-17T10:43:24+02:00 2016-10-17T10:43:24+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36064#p36064 <![CDATA[A better way? (VST Params + Names via Index)]]> A lot of fun with a simple LPD8 (and will more better with the behringer X-TOUCH MINI i'm waiting soon :) ) .

Working with, I've add an increment /decrement button to the select fader, more precise and easy to midi learn.
these 3 scripts will be really useful , good idea to separate them !
IML version seems to win the cpu battle but with only 0,2, 0.3 % better here

Statistics: Posted by nay-seven — 17 Oct 2016, 10:43


]]>
2016-10-17T10:35:11+02:00 2016-10-17T10:35:11+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36063#p36063 <![CDATA[A better way? (VST Params + Names via Index)]]>
Agreed about some parameter names being too long. Would be nice to be able to clip.

Statistics: Posted by gurulogic — 17 Oct 2016, 10:35


]]>
2016-10-17T07:18:49+02:00 2016-10-17T07:18:49+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36062#p36062 <![CDATA[A better way? (VST Params + Names via Index)]]> :o:o

I can't wait to check these out! Tomorrow..

Statistics: Posted by gurulogic — 17 Oct 2016, 07:18


]]>
2016-10-17T04:32:59+02:00 2016-10-17T04:32:59+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36061#p36061 <![CDATA[A better way? (VST Params + Names via Index)]]>
I couldn't help trying to push a bit more :p , so here are two versions that might be of interest.

first one is same patch idea used previously, but where 3 main process that looked a bit weird heavy tricks in classic patch methods have been scripted.
I made 3 scripts rather than one only as 'maybe re-usable blocs for other things simplifying the patching':

_one that directly extracts a 'page' from a big input comma text with a scroll input, splitting to individual elements.
_one that combine 'extract sub array of a bigger one, let apply settings to the subarray, and re-incrusts it in parent bigger array.
_one that picks an array and demuliplex to n outs acting as if they had pass_if_changed, so no need to add n times a pass_if_change

Image

so this one should *theorically behave same way as previous
VST_SCROLLER_KNOBS_SCRIPTED_VERSION

And a new one different approach, only one script and IML. iml setting wirelessly captions and values to items, and back to VST.
The VST has to be tagged 'VST', and the items tagged with numbers '0', '1', '2' ect, then iml will be able to adress them.
(Tho this one however imply all stuff being in same patch, ill think of a way to use with multiples vsts via busses but might be tricky).

Image

VST_SCROLLER_IML_VERSION

EDIT: and while we are here, here is a multi VST IML edition exemple based on your busses idea, so should be able to scroll vsts anywhere in wksp.
I used dynamic busses names switching, feel it's lighter than spreading n big comma text and arrays with selector. just add a Send_iml module like the
exemple in each vst subpatch, and set busses names in listboxes, here works quite nicely :)

IML_MULTI_VST_SCROLLER

Statistics: Posted by 23fx23 — 17 Oct 2016, 04:32


]]>
2016-10-16T23:35:02+02:00 2016-10-16T23:35:02+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36060#p36060 <![CDATA[A better way? (VST Params + Names via Index)]]> on my side i've change the max of the fader select ,
cause many plug in have a lot of parameters, so we i rely the get array size to his max ( divide by 8+ round)
second issue is the parameters names which are sometimes long and can't be read correctly

Statistics: Posted by nay-seven — 16 Oct 2016, 23:35


]]>
2016-10-16T22:15:45+02:00 2016-10-16T22:15:45+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36059#p36059 <![CDATA[A better way? (VST Params + Names via Index)]]>
It my fault because wasn't that clear when explained, but while we need the 8x pass_if_change before params (so we can set the knobs), we don't need them on output, and in-out before/after knobs shouldn't be same array, but one for demultiplex in and one for multiplex out otherwise it's kinda looping on itself and not useful., but add just 1 pass if change after the big array is reconstructed then.

here is a modified version based on nay'one i feel would work slighlty better and save tiny bit of cpu:

patch_with knobs_V2

im cleaning a bit the 1 script/iml version and will upload in one hour or so.

Statistics: Posted by 23fx23 — 16 Oct 2016, 22:15


]]>
2016-10-16T21:31:39+02:00 2016-10-16T21:31:39+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36058#p36058 <![CDATA[A better way? (VST Params + Names via Index)]]>
nay-seven, your build + expansion of 23fx23 patch idea works perfect. I can learn a lot from these examples.
I have done some more patching which allows usage of just one patch to switch between several VST plugins and have all parameters and names updated on switch. I did have some weird issues with sort of a feedback loop with parameters when using buses for this method but I think the stop modules have solved this.

Image

Statistics: Posted by gurulogic — 16 Oct 2016, 21:31


]]>
2016-10-16T16:26:54+02:00 2016-10-16T16:26:54+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36054#p36054 <![CDATA[A better way? (VST Params + Names via Index)]]> not at home yet but ill check when back.
Between ive made a single script/iml much efficient version ill post as well later

Statistics: Posted by 23fx23 — 16 Oct 2016, 16:26


]]>
2016-10-16T13:59:18+02:00 2016-10-16T13:59:18+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36053#p36053 <![CDATA[A better way? (VST Params + Names via Index)]]> Statistics: Posted by nay-seven — 16 Oct 2016, 13:59


]]>
2016-10-16T13:56:45+02:00 2016-10-16T13:56:45+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36052#p36052 <![CDATA[A better way? (VST Params + Names via Index)]]> )
I love VST dad from sephult and your solution 23FX is interesting too, a good complement to VST dad !
here my version, based on your's but with knobs to use midi learn
Download

Statistics: Posted by nay-seven — 16 Oct 2016, 13:56


]]>
2016-10-16T04:39:28+02:00 2016-10-16T04:39:28+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36051#p36051 <![CDATA[A better way? (VST Params + Names via Index)]]>
in case it's possible this way:

_add the given with usine split comma text to N outs script, out of the listbox on right, there you'll have your 8x name scrolling done.

then your 8x fader/knobs outs go to pin of an array , and on input the reverse, an array splits all the 8x pins out to your faders, but with a passif change in bettwenn,
then this can replace the array im using here.

but im pretty sure sephult could script ya a magic single thing to replace all that mess ;)

Statistics: Posted by 23fx23 — 16 Oct 2016, 04:39


]]>
2016-10-16T04:22:01+02:00 2016-10-16T04:22:01+02:00 https://brainmodular.com/forums/viewtopic.php?t=5544&p=36050#p36050 <![CDATA[A better way? (VST Params + Names via Index)]]>
If really want no scripts, here is one possible solution without a single script, while keeping ability to adjust NB of element displayed per pages easily setting a constant

but typically for this i would use scripts and/or IML , will be less webby and more cpu efficient/modular ..

Image

workspace HH exemple

Statistics: Posted by 23fx23 — 16 Oct 2016, 04:22


]]>