yastefan / grandMA3-Chataigne-Module

A Chataigne module to control grandMA3 via OSC
GNU General Public License v3.0
23 stars 7 forks source link

MIDI Feedback #7

Open hepiyellow opened 1 year ago

hepiyellow commented 1 year ago

Does this module provide MIDI feedback for toggle buttons, and fader/knob amount?

If not, is it feasible?

yastefan commented 1 year ago

Hey,

the module does not have feedback built in. I have thought about it for a long time but have not found a satisfactory solution. Firstly, there is the problem that grandMA3 only provides feedback via the sequence number and not via the executor. This is sufficient for many things, but if you have changing sequences on the executors, you can no longer differentiate between them via OSC. The other problem I see is the reliability of sending OSC via grandMA3. I have often had problems with grandMA3 using the port exclusively, even when it is only supposed to send via the port.

If you only trigger the executors or sequences via Chataigne, you can set the midi input for the toggle buttons to toggle and simply send a midi note On to your controller when an On event occurs. This way you also get visual feedback.

Cheers Stefan

Bildschirmfoto 2023-07-06 um 09 33 26
hepiyellow commented 1 year ago

OSC output Connectivity

Yeah I do seem to also encounter issues with receiving MA3's OSC output. Sometimes it works. Need to investigate How MA3 bind the output port.

Feedback Solution

MA3 Side I can written MA3 plugin, that when initialized, it goes over all Executors, and sends out an OSC message for executor's mapping: [Object address] [page] [exec number] e.g. /13.13.1.6.2 page 1 exec 201

if an object has more than one executor assigned to it, it will send a list of executors, e.g /13.13.1.6.2 page 1 exec 201 page 1 exec 202

Chataigne Side

We can expand the grandMA3 module (or write a new one), that will receive OSC from MA3. If the first argument is "__EXEC_MAPPING" (This is an arbitrary unique identifier I just made up), then it means it is an exec mapping, and the following arguments are the executors. It will update it's own state, a map with ObjectAddres->ExecList

If the first argument is other, then it is a Value message. It will look up the object address in the Exec Mapping, then find all States with mappings that have a grandMA3 module output of the relevant executor. Then it will look at the input of these mappings, and send feedback to the appropriate Input "Values" (e.g. Midi Channel 1, CC1, 70%)

Do you want to do it? I'll do the MA3 side, you the Chataigne side?

PixelLighting commented 1 year ago

So For the Side of Ma3 i had Something Ready to use i Added the Feedback for the Active Page becasue i found this but with the Plugin saying Page1 always No matter which site you are on

local 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 3 \"/Page" ..mypage.index.. " /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

in Chataigne Comes the Massge

/Page(Current) /Fader(FaderNr) : Value(0-255)

Maybe there would be a way to teach th Chataigne Plugin to Read this Value ?

A Nice addon Would be Some kind of loop for The Plugin Where you Entering Values Like LoopTimes or LoopDelay if You Triggering it how Often it should Read out the values and Send an OSC maybe would be an Crazy thing to add an Active FaderReadout

As an extra the Page Thing can be removed aswell and it will send ut correctly

hepiyellow commented 1 year ago

Hi,

I see you have release a new version with new feature. So you are back developing this. I am happy.

I decided to make a POC for my suggested solution (Above). I think it's better NOT to send redundant OSC from MA3 to Chataigne at fixed intervals. Instead, to use the built in OSC output that MA3 has, which is Sequence based (not exec based). And do the resolution (seq->exec) in Chataigne.

I am working on it. I'll let you know when it's ready.

Is it ok If I contact you directly (via email) instead of here?

PixelLighting commented 1 year ago

Hello i think its a bit better to write here to change out Progress which will be visible for all the other people too if you want to Highlight an Code you need to type

'''Ruby '''

The ruby is for coloring the Single parts of an Code its the ' Symbol

Im not directly coding i can a bit of coding like only the basics but the Codes i used are from others or i changing Existing ones with my knowledge. This Code i got from the ma3 forum and changed it a bit.

I think the exec one is better for midi Feedback because of the simpel Thing of motorized fader Feedback so if you change pages you could make on an bheringer x Touch compact a nice setup where you even have 16 instead of 8 faders. Because on the compact are 2 banks split up so if you would had 2 of These you would have 30 faders because on both Banks it has difrent CC values and Buttons values i use the bheringer xtouch mini as an executor area becauee it has 16 Buttons and 8 rotary knobs that endles spin,but have Hard value with led Level, its the exact sich as the x Button area

For sequnce mapping you just need to add an readout in chataigne because basic fader values are send with sequnce names and Adress as i understand a sequnce is 13.13.1.2.(sequnce)

Compact mini Bank A is 0 to 100 Bank b is from the middle so lets say -50 to 0 to 50

hepiyellow commented 1 year ago

Hi,

I am happy to say that the POC works ! I will organize it a bit and make a PR som time in the following week.

PixelLighting commented 1 year ago

Hi,

I am happy to say that the POC works ! I will organize it a bit and make a PR som time in the following week.

Hey What you mean with POC ?

I think as said it makes more sense to bind a midi to a executor and not a sequnce because if the name changes or the setup you would map all New and to trigger a sequnce there are options or move the fader independat for an sequnce instead of an exec.

I use an akai apc mini mk2 and a bheringer xtouch mini at the moment in near time i will get an xtouch compact for motorized fader Feedback and the Layout is nearly the same like on consoles you have encoder fader and Buttons nearly in the same Layout so the x Touch line is nice for midi/osc+ma3. I have like already 3 ist talking i even use the Streamdeck mapöing from Fiets.

hepiyellow commented 12 months ago

POC is Proof Of Concept.

I wrote a MA3 plugin that sends OSC messages to Chataigne, so that the grandMA3 module will know the mapping between sequences and executors. And the plugin syncs grandMA3 module whenever there is a change in the mapping.

On Thu, Sep 14, 2023 at 12:25 AM PixelLighting @.***> wrote:

Hi,

I am happy to say that the POC works ! I will organize it a bit and make a PR som time in the following week.

Hey What you mean with POC ?

I think as said it makes more sense to bind a midi to a executor and not a sequnce because if the name changes or the setup you would map all New and to trigger a sequnce there are options or move the fader independat for an sequnce instead of an exec.

I use an akai apc mini mk2 and a bheringer xtouch mini at the moment in near time i will get an xtouch compact for motorized fader Feedback and the Layout is nearly the same like on consoles you have encoder fader and Buttons nearly in the same Layout so the x Touch line is nice for midi/osc+ma3. I have like already 3 ist talking i even use the Streamdeck mapöing from Fiets.

— Reply to this email directly, view it on GitHub https://github.com/yastefan/grandMA3-Chataigne-Module/issues/7#issuecomment-1718337688, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABQLRIWL36JNOJPYC77X5XTX2IQGNANCNFSM6AAAAAAZ7JKG2E . You are receiving this because you authored the thread.Message ID: @.***>

PixelLighting commented 12 months ago

So you added an sequnce Feedback and an Feedback on change for exec and sequnce did i understand corectly ?

I think you Integration the one i send and added the sequnce and change notice Part am i correct ? If you send the lua Code i could check if it would work on my system to had sometimes an copy paste problem becauwe a little Syntax changed once

hepiyellow commented 12 months ago

@PixelLighting Hi, I am sorry I am having difficulty understanding your English. Please read my previous explanation: https://github.com/yastefan/grandMA3-Chataigne-Module/issues/7#issuecomment-1624427678

But in short:

It sound complicated. But I made it all work yesterday. That was the POC (Proof Of Concept)

PixelLighting commented 12 months ago

Hey @hepiyellow ,

Now i understand what you want to Do but why sending an sequnce out of ma3 to map the exec, why just not use the normal get value from the executor itself this makes much more sense just like i swnd the code for the ma plugin where it just sends the Active Page Number+Values for fader mapping.

I dont want to map my sequnces i want to map my MAexec to my faderexec so i can rebuild myself the ma Layout on an midi controler. That i can save no matter the sequnce Nr or macro or speedmaster what is not an sequnce to a midi Position that will be updated if its on an fader.

A midi Feedback for light up Buttons you just ned to send midi via chataigne and then Invert so it stay light up and dimms when pressed.

hepiyellow commented 12 months ago

@PixelLighting

Immediate Feedback

The reason to use the built-in Sequence based OSC feedback is in order to get immediate feedback (around 10 mili-seconds). With a Plugin that sends the current executor's value, this plugin need to send ALL the values in some fixed interval, which will probably be around 0.5 a second if you don't want to overload the system. And still it is a LOT of redundant traffic.

Mapping MIDI Controls to Executor

I wrote it several times, My solution includes mapping MIDI controls to executors NOT to sequences !

yastefan commented 12 months ago

Nice to hear that the feedback feature is taking shape. In the current version, the feedback for the sequences already works very well. If you activate the OSC input and the checkbox "Learn from oscInput" in the plugin, then the plugin creates a sequence container in the values with all signals that were received. If these values are changed in Chataigne, then the plugin sends the new values directly to GrandMA. Direct mapping between the values and sequences should work without problems.

@hepiyellow I find the solution of sending an executor/sequence map from a grandMA3 plugin via OSC very elegant and think that this is the way to go :)

If you write a grandMA3 plugin which sends via OSC a JSON string with the executor/sequence map, I extend the plugin that there is also an executor container beside the sequence container. The map would then also have to contain the handle assignment, since the sequence sends the commands (MasterFader, SpeedFader, GO+, etc.) directly

PixelLighting commented 12 months ago

@hepiyellow can i ask for what excatly you need this extremly highspeed Feedback? In my head would be for an good midi setup not enough to have an interval refresh and a refresh when changing pages beacuse its lesser traffic Overall.

And sorry you talking for the ma side always in sequnce instead of executor that was confusing.

hepiyellow commented 12 months ago

Well, during the show, if the user wants to change a page, then make a quick move of one of the feeders, and then go back to the previous page. It could be annoying if there is latency when an exit page is changed. Also, I want to develop a Plugin for fader presets that when you load a preset, all the relevant feeders go into the new position. I don’t there to be any latency when loading a preset, because the user might want to immediately change one of the faders. On 2023. Sep 14., at 12:15, PixelLighting @.***> wrote: @hepiyellow can i ask for what excatly you need this extremly highspeed Feedback? In my head would be for an good midi setup not enough to have an interval refresh and a refresh when changing pages beacuse its lesser traffic Overall. And sorry you talking for the ma side always in sequnce instead of executor that was confusing.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

PixelLighting commented 12 months ago

@hepiyellow yea i understand this but why not make an Change Page Scanner so Chataigne would recive an Signal if the Page is changed becasue a Pagechange is a comand that is Triggerd so you could teach the Plugin that would run to Scan for an PageChange Comand and becasue i use 2 midi and have not all Buttons bind i can still have a simple Page change per midi and trigger a callback on Ma3

hepiyellow commented 12 months ago

I am sorry. It’s really difficult for me to understand your sentences. Yeah, you could have a plugin that listens to be page change, and send all the exec values if needed.I just want the midi setup to behave exactly like a console.

hepiyellow commented 12 months ago

EDIT: Oh no it's not possible, since MA3 has no MIDI feedback.

In fact, I'm starting to think that I could write a plugin that allows mapping MIDI faders to execs (not sequences) without using Chataigne at all. Just the built-in MIDI Remotes.

yastefan commented 12 months ago

In my opinion the design proposed by @hepiyellow is much more elegant. grandMA3 sends a change of a sequence directly without big latency and without polling overhead. A map of the executor assignment would only have to be updated when there is a change in the executors, which is comparatively rare. This would also give us the ability to change the values in Chataigne via the executors as well as the sequences. I don't see any disadvantages in the solution proposed by @hepiyellow. The only challenge I see is to get the executor assignment data from grandMA and ideally a trigger when an executor is changed

yastefan commented 12 months ago

A direct midi plugin for grandMA3 would definitely be interesting for some people, but would have the disadvantage that you could only use one midi controller

hepiyellow commented 12 months ago

@yastefan I am working on it. The plugin initially sends All the seq2exec mapping in this form:

The grandMA3 Chataigne module build an indexed map object: An example of the mapping object

var seq2exec =  {
   [1]: { // seqIndex
       ['FaderMaster']: [ // There could be multiple execs assigned to the same sequence
           {page: 1, execNumber: 201}
           {page: 1, execNumber: 215}
       ]
   }
}
yastefan commented 12 months ago

that sounds promising. The data structure in Chataigne should then have the sequences as primary key and only reference the executors (as grandMA does internally)

yastefan commented 12 months ago

I can already see it coming that MA will send OSC feedback for the executors in the next release :joy:

hepiyellow commented 12 months ago

@yastefan I have a small issue. Maybe you can help me with it. When I try to reserve the midi value which is associated with an executor, I go over all the mappings in All state machines, looking for mappings that have an output, which is a grandMA3 module callback. But I can't seem to be able to get the callback function name of the mapped command. I can only see the callback parameters, like page and excutor.

PixelLighting commented 12 months ago

@hepiyellow There is a midi Feedback Via Plugin looks like this its aplugin Provided For free by an Guy who made even a nice YOutube Tutorial for this Just Search MA3 Midi it will show this video with 3 Parts

--[[
This plugin reads the executor values from onPC and sends them to TouchOSC by OSC
and to Behringer X-Touch Compact by midi

The plugin does not yet track changes in the faders. You have to call it each time syncing is needed.
Or, you run it in a looop (configure nTimes etc. below)
Or put it as a Cmd in a sequence cue an adjust firing of the cue to your needs.

It is based on code by user "mr-button"
https://forum.malighting.com/forum/thread/7614-osc-out/?postID=16983

**************************************************************************************************
--]]

-- adjust the following variables to fit your setting

local OSCchannel=3

local nTimes = 1   -- you can loop the read out. "1" = single shot
local delay = .3   -- sleep between update loops

-- executors to read
local executor_table = {
        201, 202, 203, 204, 205, 206, 207, 208, 
        216, 217, 218, 219, 220, 221, 222, 223
    }

local function main()

    function Read_Fader_Send_OSC_nn(executor_nr)

        local FaderDataStructure = {}

        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);
            local exact = fader_current_Value  / 100
            Cmd("SendOSC 3 \"/Page1/Fader" .. executor_nr .. ",f," .. exact .. "\"")

            local fdr_nr = 0
            -- translate for Bank A of Behringer X-Touch compact
            if executor_nr < 209 then
                fdr_nr = executor_nr-200
            else
                -- translate for Bank B
                fdr_nr = executor_nr-188
            end    
            Cmd("SendOSC 3 \"Control\" " ..  fdr_nr .. " " .. fader_current_Value*1.27 )
        end
    end

    for xx=1, nTimes, 1
      do
        for i, name in ipairs(executor_table) do
           Read_Fader_Send_OSC_nn(name)
        end

        -- get the GrandMaster value 
        local val = Root().ShowData.Masters.Grand.Master.NormedValue

        -- Send GrandMaster value to X-Touch, midify it before
        Cmd("SendMidi \"Control\" " ..  9 .. " " .. val*1.27 )
        Cmd("SendMidi \"Control\" " ..  36 .. " " .. val*1.27 )
        Cmd("SendOSC 3 \"/Master"   .. ",f," .. val/100 .. "\"")

      coroutine.yield(delay) -- sleep well for a while
    end

end

return main

@yastefan Personaly in my mind it makes more Sense to have an Exec Mapping. Becasue in my Head it does not Change anything the Code it send Will only Send OSC Data Where a Sequence or SPeedmaster or whatever Is assigned to an fader with an Sequnce amppiung i would have no Feedback on Speedmaster Fader. And if it would Refresh like 2 or 3 Times a Second Would be more then enough in my Head or only Change on lets say Fader Changes becasue why should you check the Values if Nothing changed so you can minimize Traffic and Processing too.

hepiyellow commented 12 months ago

@PixelLighting

1) For the Million time I say it again:

My solution is about mapping MIDI faders to Executors NOT TO SEQUENCES. (And it will work for speed-master as well)

2) I am aware of the existing feedback plugin.

I DO NOT WANT TO SEND ALL EXEC VALUES 2-3 times a second.

hepiyellow commented 12 months ago

I can already see it coming that MA will send OSC feedback for the executors in the next release 😂

Well, did you submit a feature request with your local distributor?

PixelLighting commented 12 months ago

I can already see it coming that MA will send OSC feedback for the executors in the next release 😂

Well, did you submit a feature request with your local distributor?

Man This Sentence if you have any Problems in an Forum XD

PixelLighting commented 12 months ago

@hepiyellow if you would Show how the Plugin Side works that you made i coul Read out How you want it to work becasue you always Talking about Sequnces

yastefan commented 12 months ago
Bildschirmfoto 2023-09-14 um 13 46 32

I think we have talked past each other. I have already implemented a feedback for sequences. If we do a one-time (i.e. when something has changed in the executor assignment) JSON for the executor assignment in grandMA3 and send it via OSC to Chataigne, then I can implement a second value container that contains the values for the executors. This would just be a reference to the sequences. This way two executors referencing a sequence would also update with each other

yastefan commented 12 months ago

I mean executors are only a reference to an object in grandMA and therefore it makes sense from MA's point of view to send only the objects (Sequences, SpeedMaster, GroupMaster, etc.). Why should we try to do it any other way. We only need the objects and the assignment for the executors

hepiyellow commented 12 months ago

@PixelLighting

1) Please tell me that you have read this, it explains everything: https://github.com/yastefan/grandMA3-Chataigne-Module/issues/7#issuecomment-1624427678

2) Yes. again. MA3 sends out OSC message whenever an fader is moved. But, The message has the Sequence number not the executor number.

This is a problem.

Say you move a fader which is assigned to Sequence 1, the FaderMaster. If you could resolve which executors are assigned to Sequence 1 FaderMaster, So, whenever you get a message that Sequence 1 FaderMaster has changed,

The only thing you are missing is the mapping table from sequences to executors. This is what my plugin does. It sends this info to Chataigne.

hepiyellow commented 12 months ago

@yastefan I want to discuss with you the deployment of the solution.

As you might know, I am the developer of ma3-pro-plugins.com. I sell plugins. But because this plugin is supposed to interact with your grandMA3 Chataigne module which is free. Then I won't be selling it. It would be free as well.

Question 1 - Should the plugin be part of this repository or not ?

It is obviously easier to maintain both the plugin and the module, if the plugin is within this repository. The issue is, that in order to get the best user experience, I want my Plugin to:

Should the plugin be OpenSource ?

Well, it's not that I want to hide my infrastructure code. It's more about not have it available to other, so I don't need to support it, and make it backward compatible. Too much time consuming.

Also, my plugins are written in TypeScript, and transpiled to LUA. So they are not so readable.

In Conclusion

The only reasonable way for me is to release this plugin separately from the grandMA3 module. And make a mechanism for the plugin to check the version of the grandMA3 module, in order to make sure t is compatible.

My question is: Do you feel comfortable having the grandMA3 Chataigne module include stuff which is proprietary and work only with my plugin, which is out of your control.

Because I could make Feedback feature, a totally separate Chataigne module. Chataigne modules can access each other's data, so it is not a problem. (Just versioning makes it a bit tricky to maintain)

What do you think?

PixelLighting commented 12 months ago

@hepiyellow okay now i get what you mean im Sorry and i can See now the Problem that the Basic OSC Out From MA itslef is missing the Exec Number to map it in a Good and easy way,

And Nice to Read that you are the One behind Ma3 Pro plugins.

yastefan commented 12 months ago

The grandMA3 is licensed under the GPL-3.0 just like Chataigne. If the plugin code is maintained in the same repository, it is also subject to GPL-3.0 which I would like to see.

Via the OSC interface you can execute any commands in grandMA3. I have been thinking for a long time that you can install a plugin in grandMA3 via OSC and also get the Lua code as a string via OSC in grandMA.

If this would work you could add a button to the Chataigne plugin which would install the grandMA3 plugin if necessary.

Do you think this is feasible?

Distributing the plugin over a different infrastructure and a different license would be less appealing to me, as it would no longer be plug and play and future changes would require more communication and would always be dependent on you

hepiyellow commented 12 months ago

@yastefan

Let's make it your way

Well, it does seem more future proof to have the plugin as part of this repository, and have it OpenSource. I am willing to give up my infrastructure, and sacrifice a bit of user experience. And spend a bit more time re-writing some features in LUA (that I have already written in TypeScript). I'll try to make it minimalistic. (Hard for me as a Maximalist)

Install Plugin Via OSC

I am not sure it'll work. There is a limit on OSC message length. I think it's about 1500 bytes (or 4098) I need to test this. It's a cool idea.

Chataigne Companion

Just thought that this plugin could be called "Chataigne Companion", and serve as a general plugin for all purposes related to Chataigne grandMA3 module (not just exec feedback)

Question

I am developing now the Chataigne side of the exec feedback. Is there any drawback in you view about writing the feedback logic in a separate js file (grandMA3_feedback.js)?

(A Chataigne module can have several js script files)

hepiyellow commented 12 months ago

I solved this issue. Someone on Discord helped out.

@yastefan I have a small issue. Maybe you can help me with it. When I try to reserve the midi value which is associated with an executor, I go over all the mappings in All state machines, looking for mappings that have an output, which is a grandMA3 module callback. But I can't seem to be able to get the callback function name of the mapped command. I can only see the callback parameters, like page and excutor.

yastefan commented 12 months ago

Glad to hear that you are also okay with developing the extension open source. I like the name Chataigne Companion and I'm curious to see what other ideas come up. I think it might be a good idea to sort the JS file a bit and maybe split it into two files.

I'm not quite sure why you need the midi value from the Chataigne mapping. In my eyes this contradicts the design of Chataigne, where you can map any signal to different signals independent of the protocol. If we have a value container for executors in the Chataigne plugin, it is possible to map Midi -> grandMA3 and as feedback grandMA3 (value container) -> Midi or did I miss a problem?

hepiyellow commented 12 months ago

I am not so familiar with Chataigne protocol mappings. Currently, I wrote a custom oscEvent handler that parses the address and arguments, and resolves the executor and midiValue.

function oscEvent(address, args) {
  var address_list = address.split(".");

  if (address.indexOf("13.13.1.6") == 1) {
    var seqIndexString = address_list[address_list.length - 1];
    var faderType = args[0];
    var faderNumber = args[1]; // I think we don't need this
    var faderValue = args[2];
    var seqName = args[3]; // No need to use this

    var execs = seqToExecMapping[seqIndexString][faderType]
    for (var i = 0; i < execs.length; i++) {
      var execPage = execs[i].page;
      var execNumber = execs[i].execNumber;
      var midiValue = findMidiValueByOutputMappings(execPage, execNumber);
      midiValue.set(faderValue * 127 / 100);
    }
  }
}

So there are 2 parts for the feedback: 1) Resolve the executors from the sequence (Uses the seqToExecMapping) 2) Resolve the MIDI values from the executors. (Uses the findMidiValueByOutputMappings)

I think that for the 1st part we have to have a custom oscEvent handler. For the 2nd part, as far as I see it, the definition of the mapping MIDI->EXEC is done by the user, simply by creating Mapping objects (In a state machine), and setting their output to grandMA3 module.

This is a one-way mapping, right?

I have a hunch that a 2 way binding would be difficult to implement with built-in Chataigne tools, since this binding is not symmetrical.

One Side: MIDI => OSC(/FaderX/...) Other Side: OSC(13.1.3.1.6.X,...) => MIDI

If we look only on the 2nd part, then still: One Side: Exec Value => OSC(/FaderX/...) Other Side: OSC(13.1.3.1.6.X,...) => Exec Value

Still not symmetrical.

Dogo69Dog commented 6 months ago

Have you finished making the plugin? I have a x touch compact and would love something like this

hepiyellow commented 6 months ago

No. But i might resume the work now, because i am developing an ma3 plugin that depends on motirized faders feedback. On 6 Mar 2024, at 22:55, Dogo69Dog @.***> wrote: Have you finished making the plugin? I have a x touch compact and would love something like this

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

yastefan commented 6 months ago

I am also still interested in the feature and would like to contribute something. However, I will wait until "Prolight + Sound 2024" to do any work, as I can imagine that we will be presented with the release of GrandMA3 1.10.x or even GrandMA3 2.0.x in the next few days. I also think it's possible that the API for OSC could change

japalie commented 6 months ago

I Made something for my Launchpads and XTouch mini. Therefore I made a Quick and Dirty MA3 Plugin "OSC Chataigne Feedback". May it will help someone to make their own Connections.

OSC Chataigne Feedback.txt gma3feedback.js.txt GMA3 Midi to OSC.noisette.txt

PixelLighting commented 6 months ago

w

Yes i asked at Cinex a small Light, sound, Video convention with them the goal is that 2.0 will be released before PLS 2024 becasue the first goal was 2.0 as achristmas Gift but they did not make it but about OSC Changes he did not know stuff but because encoders and the Whole Encoder Bar it will change a lot because you can design own Encoder bars in that version

there will be with big luck bitmapping again inside too if they dont make it in time it will release with 2.1 he said they pretty close with all they already just making Finishing touches.

PixelLighting commented 6 months ago

I Made something for my Launchpads and XTouch mini. Therefore I made a Quick and Dirty MA3 Plugin "OSC Chataigne Feedback". May it will help someone to make their own Connections.

OSC Chataigne Feedback.txt gma3feedback.js.txt GMA3 Midi to OSC.noisette.txt

For you i have a bit more Updated Xtouch COmpact feedback plugin where even the encoder Rings have Feedback you just need to set with the behringer editor all led rings to Trim

This Plugin is for 1.9.7.0 X Touch Feedback Fader+ Encoder.txt

Dogo69Dog commented 6 months ago

I Made something for my Launchpads and XTouch mini. Therefore I made a Quick and Dirty MA3 Plugin "OSC Chataigne Feedback". May it will help someone to make their own Connections. OSC Chataigne Feedback.txt gma3feedback.js.txt GMA3 Midi to OSC.noisette.txt

For you i have a bit more Updated Xtouch COmpact feedback plugin where even the encoder Rings have Feedback you just need to set with the behringer editor all led rings to Trim

This Plugin is for 1.9.7.0 X Touch Feedback Fader+ Encoder.txt

Does this work with x touch compact?

PixelLighting commented 6 months ago

I Made something for my Launchpads and XTouch mini. Therefore I made a Quick and Dirty MA3 Plugin "OSC Chataigne Feedback". May it will help someone to make their own Connections. OSC Chataigne Feedback.txt gma3feedback.js.txt GMA3 Midi to OSC.noisette.txt

For you i have a bit more Updated Xtouch COmpact feedback plugin where even the encoder Rings have Feedback you just need to set with the behringer editor all led rings to Trim This Plugin is for 1.9.7.0 X Touch Feedback Fader+ Encoder.txt

Does this work with x touch compact?

This is made for the X touch Compact

PixelLighting commented 6 months ago

I Made something for my Launchpads and XTouch mini. Therefore I made a Quick and Dirty MA3 Plugin "OSC Chataigne Feedback". May it will help someone to make their own Connections. OSC Chataigne Feedback.txt gma3feedback.js.txt GMA3 Midi to OSC.noisette.txt

For you i have a bit more Updated Xtouch COmpact feedback plugin where even the encoder Rings have Feedback you just need to set with the behringer editor all led rings to Trim This Plugin is for 1.9.7.0 X Touch Feedback Fader+ Encoder.txt

Does this work with x touch compact?

If you on Facebook tthere are many Light Groups and there is a group onyl specific for midi mapping etc its calles [Ma2/3 OnPC MIDI]

Dogo69Dog commented 6 months ago

I Made something for my Launchpads and XTouch mini. Therefore I made a Quick and Dirty MA3 Plugin "OSC Chataigne Feedback". May it will help someone to make their own Connections. OSC Chataigne Feedback.txt gma3feedback.js.txt GMA3 Midi to OSC.noisette.txt

For you i have a bit more Updated Xtouch COmpact feedback plugin where even the encoder Rings have Feedback you just need to set with the behringer editor all led rings to Trim This Plugin is for 1.9.7.0 X Touch Feedback Fader+ Encoder.txt

Does this work with x touch compact?

This is made for the X touch Compact

I am kinda confused when installing the files. I have them downloaded but im not sure which ones go where. Which one is for ma3 plugin and what is the OSC chataign feecdback .txt file for?

hepiyellow commented 6 months ago

FYI: I intend to start (continue) implementing the MIDI feedback solution around mid April. I already had a prototype working 6 month ago, but I stopped the development. Now I have a MA3 plugin that I'm developing that is based on motorized faders with feedback, so I have motivation to finish this work.

The solution is explained here: https://github.com/yastefan/grandMA3-Chataigne-Module/issues/7#issuecomment-1624427678