|
|
|
01-10-2022, 06:08 AM
|
#1
|
Human being with feelings
Join Date: Nov 2012
Posts: 178
|
How to set a parameter on every track?
Hi, can someone please give me a script that does the following, or point me in the direction of the API functions I need to read up on (and how to do a for loop in Lua/Eel). I can program, but never used Reascript before:
for each track
----for each FX parameter (in every VST)
--------if name == 'Tight'
------------parameter = 1
|
|
|
01-10-2022, 06:51 AM
|
#2
|
Human being with feelings
Join Date: Sep 2021
Location: Berlin
Posts: 1,935
|
Quote:
Originally Posted by richardj
Hi, can someone please give me a script that does the following, or point me in the direction of the API functions I need to read up on (and how to do a for loop in Lua/Eel). I can program, but never used Reascript before:
for each track
----for each FX parameter (in every VST)
--------if name == 'Tight'
------------parameter = 1
|
Pretty much just like you said:
Code:
// SetNamedParameterValues.eel
// Jeremy Bernstein / sockmonkey72
theValue = 1;
ct = CountTracks(0);
i = 0;
loop(ct,
tr = GetTrack(0, i);
tr ? (
fxct = TrackFX_GetCount(tr);
j = 0;
loop(fxct,
paramct = TrackFX_GetNumParams(tr, j);
keepGoing = 1;
k = 0;
while (
TrackFX_GetParamName(tr, j, k, #paramName);
match("Bypass", #paramName) ? (
TrackFX_SetParam(tr, j, k, theValue);
keepGoing = 0;
);
k += 1;
keepGoing;
);
j += 1;
);
);
i += 1;
);
|
|
|
01-10-2022, 07:13 AM
|
#3
|
Human being with feelings
Join Date: Nov 2012
Posts: 178
|
Thanks. I renamed your variables so I could understand what the script is doing, but I get an error when I try to run it.
First I got an error like "SetNamedParamaterValue.eel:4 Syntax error <valueToSet = 0>", but that vanished when I reloaded the script (weird).
And now I get the error "SetNamedParamaterValue.eel:17: 'loop' undefined: ' <!> loop'"
Code:
// SetNamedParameterValues.eel
// Jeremy Bernstein / sockmonkey72
parameterToSet = "Tight Toggle";
valueToSet = 0;
numberOfTracks = CountTracks(0);
currentTrackNumber = 0;
loop
(
numberOfTracks,
currentTrack = GetTrack(0, currentTrackNumber);
currentTrack ?
(
numberOfFX = TrackFX_GetCount(currentTrack);
currentFXNumber = 0;
loop
(
numberOfParams = TrackFX_GetNumParams(currentTrack, currentFXNumber);
keepGoing = 1;
currentParameterNumber = 0;
while
(
TrackFX_GetParamName(currentTrack, currentFXNumber, currentParameterNumber, parameterToSet);
match("Bypass", parameterToSet) ?
(
TrackFX_SetParam(currentTrack, currentFXNumber, currentParameterNumber, valueToSet);
keepGoing = 0;
);
currentParameterNumber += 1;
keepGoing;
);
currentFXNumber += 1;
);
);
currentTrackNumber += 1;
);
Last edited by richardj; 01-10-2022 at 07:21 AM.
|
|
|
01-10-2022, 07:22 AM
|
#4
|
Human being with feelings
Join Date: Nov 2012
Posts: 178
|
Also, you never seem to use numberOfParamters (paramct), I think this code will get stuck in an endless loop if it finds a track without a matching parameter because of this.
|
|
|
01-10-2022, 07:25 AM
|
#5
|
Human being with feelings
Join Date: Sep 2021
Location: Berlin
Posts: 1,935
|
Quote:
Originally Posted by richardj
Also, you never seem to use numberOfParamters (paramct), I think this code will get stuck in an endless loop if it finds a track without a matching parameter because of this.
|
You're right, yes, sorry about that -- I changed strategies halfway through and forgot to fix that.
|
|
|
01-10-2022, 07:28 AM
|
#6
|
Human being with feelings
Join Date: Sep 2021
Location: Berlin
Posts: 1,935
|
Updated code with your changes and stuff fixed
Code:
// SetNamedParameterValues.eel
// Jeremy Bernstein / sockmonkey72
parameterToSet = "Bypass";
valueToSet = 0;
numberOfTracks = CountTracks(0);
currentTrackNumber = 0;
loop
(
numberOfTracks,
currentTrack = GetTrack(0, currentTrackNumber);
currentTrack ?
(
numberOfFX = TrackFX_GetCount(currentTrack);
currentFXNumber = 0;
loop(
numberOfFX,
numberOfParams = TrackFX_GetNumParams(currentTrack, currentFXNumber);
keepGoing = 1;
currentParameterNumber = 0;
while
(
TrackFX_GetParamName(currentTrack, currentFXNumber, currentParameterNumber, #parameterName);
match(parameterToSet, #parameterName) ?
(
TrackFX_SetParam(currentTrack, currentFXNumber, currentParameterNumber, valueToSet);
keepGoing = 0;
);
currentParameterNumber += 1;
currentParameterNumber >= numberOfParams ? keepGoing = 0;
keepGoing;
);
currentFXNumber += 1;
);
);
currentTrackNumber += 1;
);
|
|
|
01-10-2022, 07:36 AM
|
#7
|
Human being with feelings
Join Date: Nov 2012
Posts: 178
|
Thank you! This will save me literally hours of time instead of linking CC parameters to MIDI manually.
But one final question please, my script still gives a syntax error on loop, while yours works, but I can't see the difference - is it somehow my whitespace or what??
YOURS
Code:
parameterToSet = "Tight Toggle";
valueToSet = 1;
numberOfTracks = CountTracks(0);
currentTrackNumber = 0;
loop
(
numberOfTracks,
currentTrack = GetTrack(0, currentTrackNumber);
currentTrack ?
(
numberOfFX = TrackFX_GetCount(currentTrack);
currentFXNumber = 0;
loop(
numberOfFX,
numberOfParams = TrackFX_GetNumParams(currentTrack, currentFXNumber);
keepGoing = 1;
currentParameterNumber = 0;
while
(
TrackFX_GetParamName(currentTrack, currentFXNumber, currentParameterNumber, #parameterName);
match(parameterToSet, #parameterName) ?
(
TrackFX_SetParam(currentTrack, currentFXNumber, currentParameterNumber, valueToSet);
keepGoing = 0;
);
currentParameterNumber += 1;
currentParameterNumber >= numberOfParams ? keepGoing = 0;
keepGoing;
);
currentFXNumber += 1;
);
);
currentTrackNumber += 1;
);
MINE
Code:
// SetNamedParameterValues.eel
// Jeremy Bernstein / sockmonkey72
parameterToSet = "Tight Toggle";
valueToSet = 0;
numberOfTracks = CountTracks(0);
currentTrackNumber = 0;
loop
(
numberOfTracks,
currentTrack = GetTrack(0, currentTrackNumber);
currentTrack ?
(
numberOfFX = TrackFX_GetCount(currentTrack);
currentFXNumber = 0;
loop
(
numberOfParams = TrackFX_GetNumParams(currentTrack, currentFXNumber);
keepGoing = 1;
currentParameterNumber = 0;
while
(
TrackFX_GetParamName(currentTrack, currentFXNumber, currentParameterNumber, valueToSet);
match(parameterToSet, #parameterName) ?
(
TrackFX_SetParam(currentTrack, currentFXNumber, currentParameterNumber, valueToSet);
keepGoing = 0;
);
currentParameterNumber += 1;
currentParameterNumber >= numberOfParams ? keepGoing = 0;
keepGoing;
);
currentFXNumber += 1;
);
);
currentTrackNumber += 1;
);
|
|
|
01-10-2022, 07:42 AM
|
#8
|
Human being with feelings
Join Date: Sep 2021
Location: Berlin
Posts: 1,935
|
MINE
Code:
loop(
numberOfFX,
numberOfParams = TrackFX_GetNumParams(currentTrack, currentFXNumber);
keepGoing = 1;
YOURS
Code:
loop
(
numberOfParams = TrackFX_GetNumParams(currentTrack, currentFXNumber);
keepGoing = 1;
|
|
|
01-28-2022, 01:02 AM
|
#9
|
Human being with feelings
Join Date: Nov 2012
Posts: 178
|
Also, is there a similar way to toggle media playback offset between 0 and -125 in this script please?
|
|
|
01-28-2022, 01:57 AM
|
#10
|
Human being with feelings
Join Date: Sep 2021
Location: Berlin
Posts: 1,935
|
Quote:
Originally Posted by richardj
Also, is there a similar way to toggle media playback offset between 0 and -125 in this script please?
|
For every track?
|
|
|
01-28-2022, 06:06 AM
|
#11
|
Human being with feelings
Join Date: Nov 2012
Posts: 178
|
Yes, it doesn't even need to be dependent on the Tight parameter. Just want to set all track offsets simultaneously.
|
|
|
01-28-2022, 06:44 AM
|
#12
|
Human being with feelings
Join Date: Sep 2021
Location: Berlin
Posts: 1,935
|
Quote:
Originally Posted by richardj
Yes, it doesn't even need to be dependent on the Tight parameter. Just want to set all track offsets simultaneously.
|
voilà!
Code:
// SetNamedParameterValues.eel
// Jeremy Bernstein / sockmonkey72
parameterToSet = "Bypass";
valueToSet = 0;
HasExtState("sockmonkey72_SetNamedParameterValues", "mediaPlayOffsetToggle") ? (
GetExtState(#retVal, "sockmonkey72_SetNamedParameterValues", "mediaPlayOffsetToggle");
mediaPlayOffsetToggle = !strcmp(#retVal, "1") ? 0 : 1;
);
(!mediaPlayOffsetToggle) ? mediaPlayOffset = -125; // otherwise initialized to 0
SetExtState("sockmonkey72_SetNamedParameterValues", "mediaPlayOffsetToggle", !mediaPlayOffsetToggle ? "0" : "1", 0); // or could persist between runs (0 -> 1)
numberOfTracks = CountTracks(0);
currentTrackNumber = 0;
loop
(
numberOfTracks,
currentTrack = GetTrack(0, currentTrackNumber);
currentTrack ?
(
numberOfFX = TrackFX_GetCount(currentTrack);
currentFXNumber = 0;
loop(
numberOfFX,
numberOfParams = TrackFX_GetNumParams(currentTrack, currentFXNumber);
keepGoing = 1;
currentParameterNumber = 0;
while
(
TrackFX_GetParamName(currentTrack, currentFXNumber, currentParameterNumber, #parameterName);
match(parameterToSet, #parameterName) ?
(
TrackFX_SetParam(currentTrack, currentFXNumber, currentParameterNumber, valueToSet);
keepGoing = 0;
);
currentParameterNumber += 1;
currentParameterNumber >= numberOfParams ? keepGoing = 0;
keepGoing;
);
currentFXNumber += 1;
);
SetMediaTrackInfo_Value(currentTrack, "I_PLAY_OFFSET_FLAG", 2); // offset in samples
SetMediaTrackInfo_Value(currentTrack, "D_PLAY_OFFSET", mediaPlayOffset);
);
currentTrackNumber += 1;
);
|
|
|
01-28-2022, 11:49 AM
|
#13
|
Human being with feelings
Join Date: Nov 2012
Posts: 178
|
Thanks again
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 05:17 PM.
|