ArrayArrayArrayArrayArray
Statistics: Posted by woodslanding — 05 Mar 2020, 19:46
Statistics: Posted by nay-seven — 05 Mar 2020, 16:58
CODE:
///////////////////////////////////////////////////Const MAX = 32;// parameters declarationvar fxStatusIN,huesIN,satsIN : TParameter; var ctIN : TParameter;var fxChansOUT,ctOUT,huesOUT,satsOUT : TParameter; var fxChans: array[1..MAX] of integer; var hues: array[1..MAX] of single; var sats: array[1..MAX] of single; // initialisation : create parametersprocedure init;begin fxStatusIN := CreateParam('fx status',PtArray); SetIsOutput(fxStatusIN,false); SetMax(fxStatusIN,MAX); ctIn := CreateParam('ch names',PtTextfield); SetIsOutput(ctIn,false); HuesIn := CreateParam('ch hues',PtArray); SetIsOutput(HuesIn,false); SatsIn := CreateParam('ch saturations',PtArray); SetIsOutput(SatsIn,false); fxChansOUT := CreateParam('fx chs',PtArray); SetIsInput(fxChansOUT,false); SetMax(fxChansOUT,MAX); ctOut := CreateParam('fx prgs',PtTextfield); SetIsInput(ctOut,false); HuesOUT := CreateParam('fx hues',PtArray); SetIsInput(HuesOUT,false); satsOUT := CreateParam('fx saturations',PtArray); SetIsInput(SatsOUT,false); end;// Callback procedureProcedure Callback(N:integer); var fxCount,len,chanNum,i : integer;var status : integer; var name : string;var slIN,slOUT: TStringlist;var hue,sat : single;begin slIN.create; slOUT.create; len := GetLength(fxStatusIN); slIN.setCommatext(getStringValue(ctIN)); //sl count is long because of an extra comma at the end! fxCount := 0; if (slIN.count - 1 <> len) then strace('>>>ERROR---isfx count = ' + inttostr(len) + ',string count = ' + intToStr(slIN.count) + ':getFXprogramNames') for chanNum := 0 to len-1 do begin status := trunc(GetDataArrayValue(fxStatusIN,chanNum)); hue := GetDataArrayValue(huesIN,chanNum); sat := GetDataArrayValue(satsIN,chanNum); if status > 0 then begin fxChans[fxCount] := status; name := slIN.getstrings(status - 1);// status is more reliable than string number. 1 indexed. //strace('got value:' + name + ' for chan ' + inttostr(chanNum) + 'status ch = ' + inttostr(status)); //strace('hue = ' + floattostr(hue)); slOUT.add(name); hues[fxCount] := hue; sats[fxCount] := sat; fxCount := fxCount + 1; end; end; //strace('len = ' + inttostr(fxCount)); SetLength(fxChansOUT, fxCount); SetLength(huesOUT,fxCount); SetLength(satsOUT,fxCount); for i := 0 to fxCount-1 do begin SetDataArrayValue(fxChansOUT,i,fxChans[i]); SetStringValue(ctOUT,slOUT.getCommatext()); SetDataArrayValue(huesOUT,i,hues[i]); SetDataArrayValue(satsOUT,i,sats[i]); end; slIN.free; slOUT.free; end;Statistics: Posted by woodslanding — 18 Feb 2020, 09:28
Statistics: Posted by woodslanding — 05 Mar 2020, 19:46
Statistics: Posted by nay-seven — 05 Mar 2020, 16:58
CODE:
///////////////////////////////////////////////////Const MAX = 32;// parameters declarationvar fxStatusIN,huesIN,satsIN : TParameter; var ctIN : TParameter;var fxChansOUT,ctOUT,huesOUT,satsOUT : TParameter; var fxChans: array[1..MAX] of integer; var hues: array[1..MAX] of single; var sats: array[1..MAX] of single; // initialisation : create parametersprocedure init;begin fxStatusIN := CreateParam('fx status',PtArray); SetIsOutput(fxStatusIN,false); SetMax(fxStatusIN,MAX); ctIn := CreateParam('ch names',PtTextfield); SetIsOutput(ctIn,false); HuesIn := CreateParam('ch hues',PtArray); SetIsOutput(HuesIn,false); SatsIn := CreateParam('ch saturations',PtArray); SetIsOutput(SatsIn,false); fxChansOUT := CreateParam('fx chs',PtArray); SetIsInput(fxChansOUT,false); SetMax(fxChansOUT,MAX); ctOut := CreateParam('fx prgs',PtTextfield); SetIsInput(ctOut,false); HuesOUT := CreateParam('fx hues',PtArray); SetIsInput(HuesOUT,false); satsOUT := CreateParam('fx saturations',PtArray); SetIsInput(SatsOUT,false); end;// Callback procedureProcedure Callback(N:integer); var fxCount,len,chanNum,i : integer;var status : integer; var name : string;var slIN,slOUT: TStringlist;var hue,sat : single;begin slIN.create; slOUT.create; len := GetLength(fxStatusIN); slIN.setCommatext(getStringValue(ctIN)); //sl count is long because of an extra comma at the end! fxCount := 0; if (slIN.count - 1 <> len) then strace('>>>ERROR---isfx count = ' + inttostr(len) + ',string count = ' + intToStr(slIN.count) + ':getFXprogramNames') for chanNum := 0 to len-1 do begin status := trunc(GetDataArrayValue(fxStatusIN,chanNum)); hue := GetDataArrayValue(huesIN,chanNum); sat := GetDataArrayValue(satsIN,chanNum); if status > 0 then begin fxChans[fxCount] := status; name := slIN.getstrings(status - 1);// status is more reliable than string number. 1 indexed. //strace('got value:' + name + ' for chan ' + inttostr(chanNum) + 'status ch = ' + inttostr(status)); //strace('hue = ' + floattostr(hue)); slOUT.add(name); hues[fxCount] := hue; sats[fxCount] := sat; fxCount := fxCount + 1; end; end; //strace('len = ' + inttostr(fxCount)); SetLength(fxChansOUT, fxCount); SetLength(huesOUT,fxCount); SetLength(satsOUT,fxCount); for i := 0 to fxCount-1 do begin SetDataArrayValue(fxChansOUT,i,fxChans[i]); SetStringValue(ctOUT,slOUT.getCommatext()); SetDataArrayValue(huesOUT,i,hues[i]); SetDataArrayValue(satsOUT,i,sats[i]); end; slIN.free; slOUT.free; end;Statistics: Posted by woodslanding — 18 Feb 2020, 09:28