Old 06-28-2020, 08:19 PM   #1
joeyx
Human being with feelings
 
joeyx's Avatar
 
Join Date: Dec 2017
Location: Los Angeles and San Francisco
Posts: 26
Default TouchOSC, Push Button, FX Parameter Control?

Greetings,

OSC newbie here and new to the forum...nevertheless, I humbly ask the following question:

Using TouchOSC, can I create a Push Button to set values for three FX parameters at the same time?

For example, using default ReaperOSC file, if I put ReaEQ on a track as FX1, should I be able to send /fx/1/fxparam/1,2,3/value 0 0.5 1 upon pushing the button in TouchOSC on iPad in order to simultaneously set values for Freq Low Shelf (minimum value), Gain Low Shelf (middle value), Q Low Shelf (maximum value)?

Have not been able to make this work, but the instructions in default reaperosc file lead me to believe it is possible...any help as to how to do this, if it is actually possible, would be much appreciated!!

Cheers,

Joey
joeyx is offline   Reply With Quote
Old 06-29-2020, 12:42 AM   #2
joeyx
Human being with feelings
 
joeyx's Avatar
 
Join Date: Dec 2017
Location: Los Angeles and San Francisco
Posts: 26
Default

From ReaperOSC:

Normalized and raw floating-point arguments also support multiple parameters
# sent from the device.

# Example: FX_PARAM_VALUE n/track/@/fx/@/fxparam/@/value
# The device can send /track/3/fx/1,2,5/fxparam/6,7,7/value 0.25 0.5 0.75
# to set three FX parameter values at once, to 0.25, 0.5, 0.75 respectively.

So even if I put ReaEQ as the only FX on track 3 and send the above pattern example /track/3/fx/1,2,5/fxparam/6,7,7/value 0.25 0.5 0.75, nothing happens.

Is this a limitation of TouchOSC that it cannot send this pattern from a Push Button? And if so, is there another object in TouchOSC that could send this pattern to Reaper? Have Patten config set to Default and still no results with this.

Additionally, using a Push Button to send either of the following does not seem to work as expected:

Example: TRACK_VOLUME n/track/volume n/track/@/volume
# The device sends /track/3/volume 0.5 to set the volume to 0.5 for track 3, or
# /track/volume 0.5 to set the volume for the track that is currently selected in
# the device.

With sending /track/volume 0.5 from a Push Button in TouchOSC, I would expect to see the selected track volume be set to 50% in Reaper. Or the same thing if using it for the track specific pattern.

What am I missing here?

Thanks again for anyone's help!
joeyx is offline   Reply With Quote
Old 07-03-2020, 02:21 PM   #3
pljones
Human being with feelings
 
pljones's Avatar
 
Join Date: Aug 2007
Location: London, UK
Posts: 719
Default

TouchOSC sends whatever string you tell it to, plus the value of the control. For an "on/off" you only get one of two values.

So, if you set the string to
/HELLO/WORLD

then it'll send either
/HELLO/WORLD 1.0
or
/HELLO/WORLD 0.0
depending on the value range (upper for on, lower for off).

You could send /1,2,A,Z,3,4 as the string if you wanted.

Anything.


It's entirely down to Reaper what it makes of that string. You've two options.

You can use the "Pattern config" file in Control Surface Settings under Control/OSC/Web in Settings. That lets you link a particular way of writing patterns to Reaper commands. The default config has all the documentation inside it.

Alternatively - and either more limited or more flexible, depending what you're doing - you can write a script and trigger it from your string. Whilst the script can "know" what string triggered it, you won't get any value passed.
__________________
Quote:
Originally Posted by Tony Williams
...Playing fast around the drums is one thing. But to play with people for others, to listen to, that's something else. That's a whole other world.

Last edited by pljones; 07-03-2020 at 02:28 PM.
pljones is offline   Reply With Quote
Old 07-04-2020, 09:02 PM   #4
joeyx
Human being with feelings
 
joeyx's Avatar
 
Join Date: Dec 2017
Location: Los Angeles and San Francisco
Posts: 26
Default

Thanks for the reply, pljones! I contacted Hexler support about this and they said something about sent values that is related to what you wrote:

"Generally, TouchOSC only allows you to assign one OSC and/or MIDI message to a specific control.
There is an exception; in the TouchOSC Editor you can assign a parameter to the Touch parameter for MIDI - this will send the maximum value when the control is pressed, and the minimum value when it is released. However this only functions similar to a push button (for instance, using the Touch parameter with a fader will only send the max value when the fader is touched, and min value when the fader is released, unlike the fader itself which will send a range of values depending on its location).

So for general standard functionality, each control can only have one assigned OSC/MIDI message.

Depending on the receiving software, you may be able to manually assign the MIDI input to various controls. This is how this would be worked around in most scenarios. Instead of assigning 3 separate parameters to a single control in TouchOSC, assign the output (a single parameter) to the various FX parameters you want to control in your DAW. Note that it will send the same value for all controls, so this might not be the preferred method if the controls require different values. Depending on the DAW or receiving software you may be able to adjust the values on that end, but otherwise in that situation you may just want to create three separate buttons clumped together that you could easily hit simultaneously."

Unless someone has accomplished otherwise with TouchOSC, I think the take away is that it can only send one value if you're thinking of using a push button to set a parameter to a specific value. Use case example: you want to quickly dial up levels for three mic positions on 2+ instruments loaded into a single instance of Kontakt. Again, the ReaperOSC file states this is possible, but TouchOSC cannot send a message that works this way with Reaper. I think Lemur maybe can? Writing this brings another question to mind: What TouchOSC-like program is MOST compatible with Reaper and the Default ReaperOSC file?

Back to the use case example:

If I have Kontakt as only FX on a track with any spitfire instrument with Close, Tree and Ambient mics, then under host parameters set them to 000, 001, 002, respectively. Then using a button from TouchOSC to send /fxparam/1,2,3/value 0.25 0.5 0.75 does not work. I don't think it ever will work in TouchOSC again because you can only send a value by using the value range fields. Even though if you "Listen" to the OSC message in Reaper you'll see the whole string is sent. What does work however is if you send /fxparam/1/value and uncheck "Send on Release" in TouchOSC so the message is sent only when button is pressed. That will send whatever the upper value is specified in TouchOSC Editor value range to host parameter #000 inside of Kontakt. So if I put for value range upper limit 0.5, considering this example, that would set the level of the close mic right in the middle. This of course will only work if you have at a minimum the pattern n/fxparam/@/value written next to the Reaper action FX_PARAM_VALUE in the pattern config file. Like so:

FX_PARAM_VALUE n/fxparam/@/value

The script idea is something that occurred to me once I found the right script to use (because I have no experience writing scripts) and it does work. It's outlined here by pipelineaudio and mpl: https://forum.cockos.com/showthread.php?t=202791

/*
Send MIDI CC channel 1 cc10 value 0
*/
// EEL Script for Reaper
// Author: pipelineaudio

/*
8 = Note Off
9 = Note On
10 = AfterTouch (ie, key pressure)
11 = Control Change
12 = Program (patch) change
13 = Channel Pressure
14 = Pitch Wheel
*/

msg_type = 11; // CC
channel = 0;
function main ()
(
StuffMIDIMessage(0, msg_type*16 + channel, 10, 0);
);

main ();

If you create your eel script and copy/paste the above code, you can change the last two numbers in the above example to send CC#'s and values that you want. Like if you wanted to send CC 10 with value of 0, you'd use the example above. If you wanted to send CC 47 with value of 64, then you'd change the 10, 0 to 47, 64. If you want to send multiple parameters and values from a single button, then you'd create the eel scripts as needed, save them as custom actions. Then, create a custom action that adds all the eel script actions you just made and bind them to a shortcut of your choice. Next, rather than send an OSC message with TouchOSC, send a Key message from TouchOSC which sends the shortcut key you tied to your new custom action full of eel scripts.

This method solved my problem but it is not a pure OSC way of dealing with things. I'm sure you could do this all via OSC, but just not when using TouchOSC and Reaper.

Mostly thinking out loud with all of this...if anyone has alternative solutions, would still be curious to see what they are!
joeyx is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 01:10 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, vBulletin Solutions Inc.