
OSC Out
BECOME PART OF THE COMMUNITY - Sign up here
-
-
Yes I agree that this would be a nice option!
-
I've been thinking a bit about this myself. I'm sure this behavior is due to MA3's treatment of playbacks simply as handles for the actual objects (e.g. sequences) they are controlling, and that many playbacks can be controlling the same object.
A few solutions come to mind, so MA, if you're listening, consider this a feature request:1. Ability to "subscribe" to a playback. [Ideal.] I might be sending commands targeted at /Page2/Fader204, which may happen to control Sequence 1 (/13.13.1.5.1). Clearly I am interested in updating my own control surface's handle.. which probably knows nothing about Sequence 1 – it's just a fader addressing Page2.204. Being able to tell MA "Please send OSC messages with any changes to the path /Page2/Fader204" would allow this to work without flooding the network with redundant or unneeded messages.
2. Send ALL playback updates. [Less scalable.] In addition to OSC updates for objects (e.g. sequences) in the console, also send equivalent updates for each playback control that is assigned to it. Essentially the same as #1 but it would be for all the playbacks, not just the ones we might be interested in. Results in extra network traffic. Maybe there could be an option in the "In&Out > OSC" settings to choose whether or not to send playback statuses.
3. Ability to "query" for a playback's object. [Useful, not ideal.] If I could send an OSC message asking for the object linked to a playback, I could dynamically create a local mapping of playback handles to their objects. Now my control surface can say "tell me what's on /Page2/Fader204" and it could respond with "/Page 2/Fader204 is /13.13.1.5.1" and then I could make a lookup table on my end. Downside is that there would also need to be messages indicating when playback objects change inside of MA to keep it accurate.
4. Sending contextual responses. [Less than ideal.] We could keep receiving OSC messages whenever objects change inside of MA, referencing their object pool numbers, etc. But, if a change were triggered BY a playback handle, ALSO send an OSC message referencing that playback's path. If I move the fader at Page 2.204, also send out an OSC message with the path "/Page2/Fader204". This is not as ideal because not all playback controls that reference the same object will be reflected with the updates. -
To overcome this asymmetric OSC output behavior I wrote a small LUA plugin to update my faders in TouchOsc after making changes on Executors in Grandma3-UI. What is missing is to trigger the script whenever an executor fader has been changed. But I have no idea, yet, how to get the appropriate events needed for the trigger.
Code
Display Morelocal function main() Printf("Get Fader Value and send OSC from grandma3 to TouchOSC") local mypage = CurrentExecPage() Echo("Page_index: "..mypage.index.." Page_name".. mypage.name) executor_table = {201,202,203,204,205,206,207,208,209,210,211,212,213,214,215} function Read_Fader_Send_OSC_nn(executor_nr) local FaderDataStructure = {} FaderDataStructure.value = FaderValue FaderDataStructure.token = "FaderMaster" FaderDataStructure.faderDisabled = false my_ex_obj_1 = GetExecutor(executor_nr) if my_ex_obj_1 == nil then Echo("Executor not assigned") else local fader_current_Value = my_ex_obj_1:GetFader(FaderDataStructure) Echo("Exec_nr: ".. my_ex_obj_1.index .." Executor: ".. my_ex_obj_1.name .. " Value: " .. fader_current_Value) local exact = fader_current_Value * 2550.0 / 1000 local osc_value = tonumber(string.format("%.1f", exact)) Cmd("SendOSC 2 \"/Page1/Fader"..executor_nr..",i," .. osc_value .. "\"") end end for i, name in ipairs(executor_table) do Printf (name) Read_Fader_Send_OSC_nn(name) end end return main
-
But I have no idea, yet, how to get the appropriate events needed for the trigger.
Play with this:
Code
Display More-- **************************************************************** -- plugin main entry point -- **************************************************************** local function Main(display_handle, argument) end -- **************************************************************** -- Cleanup (placeholder) -- **************************************************************** local function Cleanup() end -- **************************************************************** -- Execute (placeholder) -- **************************************************************** local function Execute(Type, ...) local status = select(1, ...); -- Echo(status) -- On/Off local source = select(2, ...); -- Echo(source) -- Original local profile = select(3, ...); -- Echo(profile) -- 1 local token = select(4, ...); -- Echo(token) -- Go/Flash/Master local value = select(5, ...); -- Echo(value) -- 0 .. 100 if Master -- Debug Echo(token .. " " .. value) end return Main, Cleanup, Execute
Assign Plugin 1 At Page 1.201
Then take a look at the System Monitor... Magic
-
Hi,
I'm struggling to customise the outputted OSC cmds.
My goal is to send an updated OSC string each time a specific fader is moved.
SendOSC 2 "/mix/chan/1/fader,f,xxx”
Any advice on how to change the outputted OSC cmd with this plugin would be much appreciated.
-
Heyho,
I had the Same Issue/Idear.I Created a Plugin, that automaticaly send OSC Values based on the Faders. Pagination is also working.
Also i created a Template for OpenStageControl to map it to Midi devices.
GitHub - xxpasixx/pam-osc: Controll Grandma3 with Midi Decvices over Open Stage Control and a Plugin to get Feedback for Motorfaders and Button lights.Controll Grandma3 with Midi Decvices over Open Stage Control and a Plugin to get Feedback for Motorfaders and Button lights. - GitHub - xxpasixx/pam-osc:…github.comHere is a YT Video where i demonstrate it.
Grandma3 onPC Motor Fader & LED Button'sUse Motor Faders and LED Button Fedback in Grandma3 onPC.It uses OpenStageControl and a Custom GrandMA Plugin.Link to the Configuration & Plugin: https://git...www.youtube.coma Setup tutorial comes in the future. But if you have questions feel free to ask!
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!