What is this message "_parameter_*" about Max for live UI objects

leico's icon

When I digged/reverse engineered Map8 patch, included about Max for Live Essentials,
to bandit/learn M4L technique, I found unknown message : "_parameter_shortname".

It effect live.dial's shortname. but I can't find on reference / Help / Documentation / Attributes.
I tried "_parameter_range" message, it effects live.dial's range I guess, and it works I surprized.

Does anyone know about it?
Future functions? Lost functions / deprecated ?

Max Patch
Copy patch and select New From Clipboard in Max.

Here is test patch.

parameter_shortname.png
png
Nikolas K's icon

Hi Leico,

If you open the inspector of a "live" object, you will find that some attributes' names are "hidden". These attributes are in this form : _parameter_***** where the ***** is the parameters name. You can find out which is the name by opening the inspector, copying an attribute (not the value, just click on the attribute name) and pasting in a message box.
You will see a message like { attributes : { _parameter_initial_enable : [ 0 ] } } - I just copied the "initial enable". You can then format a message like _parameter_initial_enable 0.5 or something, and it will change that attribute's value.
I haven't any problem using them in Max standalones or patches, but I suppose it could create a conflict or strange behaviour if you use it in a M4L device.
They are hidden after all for a reason, probably being that Live could use them!

-N

S4racen's icon

Ok so if a parameter is hidden it's for a very good reason.

The parameter itself is initialised when a device is loaded, changing it whilst it resides within Live can and will break things and can lead to crashes of Live itself...

Cheers
D

S4racen's icon

That said, i have had success with changing the hidden attributes on the start up of a device, for example using attributes on a bpatcher to give a parameter shortname to a Live.Dial...

Cheers
D

leico's icon

Hi Nikolas K and S4Racen

Thank you reply, I wish that to revive their officially(taken "hidden" tag away or will be implemented similar function).
I want to change shortname and range during run Live.

After posted this topic, I found a Easter egg in old documentation, suggested hidden messages.paraminspector
probably has been neglected to create, and no link to reach it. Haha, that's bad.

Cheers,
leico

S4racen's icon

As before these can be changed, but you will break Ableton and it's likely to increase the chance of crashing...

Cheers
D

Edsko de Vries's icon

Note that in https://cycling74.com/tutorials/building-a-synthesizer-editor-with-javascript-part-2/ (an official Cycling '74 tutorial), they are also setting those hidden parameters. I'm guessing it's probably ok on initialization?

Jeremy's icon

Anything which changes the longname, range, type, modulation tyle, default value and... maybe a few more things... may cause crashes in Max for Live usage. Also creation or deletion of parameters via scripting.

In Max (without Live), there's no harm.

Edsko de Vries's icon

Ah, I had missed that they weren't using Max for Live, the use of live.dial threw me off :) So if we're not supposed to change these settings, is there a way to programmatically construct a dial at all? What is the "correct" way to use patcher.newdefault to create a live.dial with the various parameters?

Jeremy's icon

@Edsko, what I did in the tutorial you linked to is perfectly fine, as long as you're not doing it at runtime in Max for Live.

Edsko de Vries's icon

Oh, my apologies for saying they rather than you, I didn't recognise you were the author! Sorry. But question remains. If I want to construct a live.dial device programmatically in Max for Live (not Max), and I am not supposed to change those settings, what should I do? Is it even possible? Right now I'm creating the device using newdefault and then setting properties immediately after (and then never change them after that), which seems to work, but if I understand you correctly, that's not actually correct. But then I'm not entirely sure how to create the live.dial in the first place.

Jeremy's icon

If the parameter object's visibility is set to hidden, it's probably safe. Otherwise, do not do it, you will almost certainly corrupt the parameter table.

Edsko de Vries's icon

Ok, that is valuable information, thank you! :)