"Store /Release" seems to work.
Funny it's not documented.
Posts by hepi
BECOME PART OF THE COMMUNITY - Sign up here
-
-
Hi,
What I want to Achieve?
What I am actually trying to do is to create an "Anti-Preset", a preset which has "Release" value for ALL of the values in a given Preset.
For example,
If Preset-1 has a Dimmer value of 100%
I want to create Preset-2 which has a Dimmer value of "Release".
Then I want to use this "Anti-Preset", in a Recipe-Cue inside a tracking Sequence.
What did I tried?
I tried:
Group 1Preset 1
Release /Active
Store Preset 2
Then I saw attributes, which were NOT in Preset 1, getting "Release" values.
So I tried without the "preset 1":Group 1
Release /Active
Store Preset 2
And those attributes still got the "Realese" value.
Is "Release /Active" legal?
The documentation doesn't state it explicitly, but it makes sense.
If I do "Release" without "/Active", then All attributes (for selected fixtures) get the "Release" value.
When using the "/Active" then only the attributes which are active get the "Release" value + some unrelated attributes (Tilt, Green and Blue) which seems like a bug. -
The repo mentioned above is of course a fork of the original grandMA3 module
-
Hi,
1) You can't hook outgoing OSC messages 😞
2) you can take a look at my Work-InProgress Chataigne module here.
3) The module expects special "sync" OSC messages from an MA3 plugin with address prefix
:
/ma3/chataigne_companion/seq2exec
The plugin does something like this (This Is a snippet from my prototype code which is in TypeScript and uses my infrastructure):
for (let page of HPage.getAllPages(of)) { for (let exec of page.getAllExecutors()) { if (exec.isAssigned()) { if (exec.isTargetSequence()) { const seqIndex = exec.getTargetObject()!.index const faderType = exec.getObj()!.fader const faderValue = exec.getFaderValue() const address = addressPrefix Cmd( `SendOSC ${oscRemoteNumber} "${address},ssiii,${seqIndex},${faderType},${page.index},${exec.index},${faderValue}"` ) } } } }
Let me know your GitHub user name (email) and I'll give you access for that repository. -
I did:
ClearAll
Group 2
Release /Active
As you can see in the attached screenshot, the Tilt, Green and Blue attributes are active, although I didn't have them active in the Programmer before running "Release /Active".
How could that be?
Is this a bug? -
Hi,
This is very nice idea.
I personally don't like solutions that require polling (a loop that runs every 0.5 sec or so).
In your case, you can avoid this loop if you use hooks, and hook ALL the executors including the Page object. Then you can update the Remote mappings only when an executor is changed or created/deleted.
Now let's talk about MIDI feedback.
MA3 does NOT send MIDI feedback to the defined MIDI remotes. But it does send OSC feedback.
You could solve this for MIDI if you use polling, a loop that check all executor value and send out MIDI.
For a non-polling solution, you need to use OSC.
I have started working on a solution involving Chataigne (grandMA3 module) and an MA3 plugin, which will work together to implement Executor feedback.
The issue is that OSC feedback is sent out using the Sequence number and not the Executor number.
The MA3 plugin prototype I've tried, sent the mapping of Sequences to Executors to Chataigne, so that Chataigne can do the mapping and send out the proper MIDI feedback to the controller.
- This solution is complicated
- It requires 3rd party App (Chataigne)
- But it should work perfectly, without any polling.
I have stopped development of that since I'm working on something with much more impact.
But I meant to do it open-source.
Let me know if you are interested in continuing it's development.
I can share my work with you. -
Got it, thanks.
I guess the Search option in the online manual doesn't work so well.
-
When I edit the settings of a Preset.
I can turn it into a recipe.
Then I can do "Take Selection".
I can't find any documentation about this action.
What does it do? -
Aha, found it.
The User Profile object has a SELECTEDPAGE property.
-
Can I hook the changing of the current active exec page?
I don't see anything in the object tree that changes when the current exec page changes.
I only see the CurrentExecPage() function which I can you to poll the active page.
Did anyone found a way to listen for a change? -
The Executor Time Master object doesn't seem to have some "active" property. (meaning if it's enabled or disabled)
Root()["ShowData"]["Masters"]["Grand"]["ExecutorTime"]
Is there a way to get the active state? -
You need to get the Selected Sequence, then the active Cue,
then the first Part of the cue, and then the cueInFade property.
The property is a number which represents linearly 1 second with the value 16777216. (2^24)local cueInFadeSec = SelectedSequence():CurrentChild():Children()[1].cueInFade / 16777216
-
Well,
The World object, for example:Root()["ShowData"]["DataPools"]["Default"]["Worlds"]["Full"]
Has an "active" property.
But this property seems to be always [nil]
So I don't know ... )-: -
I am pretty sure the is no proper way to find that.
I guess a hack could be to look at some UI element and check its state.What is your use-case?
Maybe you can find a different solution.... -
Hi,
What distribution of Linux do the MA3 consoles use?
I am asking since I am developing a plugin that uses OS features.
Using the LUA function:
os.execute()
I made it work on Mac and Windows.
And I want to make it work on a console.
But I don't have a console with me.
I thought that it would be a good start to write the OS dependent part without the console, and test it later with a console.
Any idea? -
How do I get the ShowFile name?
-
Has anyone found a way to do text wrapping?
If I:
- add a uiobject element with a given width- and add text line which is longer than the element's width
The text doesn't wrap onto a new line. It just gets cut off.
Any ideas?
BTW: I found "textAutoAdjust" but when it's enabled, the text size gets smaller in order to fit the width. -
Here is the full MessageBox API (In TypeScript format):
https://github.com/ma3-pro-plu…lobal/functions.d.ts#L132 -
Yeah, using yield in this case should give similar results as using Timer.
With yield, you keep using the same thread.
With Timer() each callback will be a different thread.
I can not say which is better in this case.
With that said, I am sure LUA was NOT intended for this real-time usage.
And I suggest we keep on pressing on MA to add the real-time features we need as a native implementation. -
I encountered this issue:
[Using 1.9.2.2]
The Setup
- I set a Sequence 1 with one cue (dimmer at 100%).
- I set the OffCue to have type=Follow
When I do "Go+ Seq 1", the fixtures goes to 100% and immediately to 0% (A Flash)The Timecode Setup
When I create a timecode with a single event with token= "Go+" (Without an OFF event).
And I play this timecode.
The fixtures go to 100% and stay.
It seems that the Follow OffCue is ignored.
Very strange...
MotivationThe motivation to NOT have an Off event, is so that I could control the duration of the flash in a single place, the sequence.
Any ideas?