Inc/Dec value of max object in javascript?
This one might be a little advanced...it is getting more and more rare these days when I find something that trips me up.
I have this nifty little "MIDI Learn" tool that allows you to click on UI elements in your Max patch and assign MIDI controllers to these objects dynamically.
Here is a link to the midilearn Tool - with access to the source code:
The problem I am currently trying to solve is that one of my controllers has a knob - which you can turn - however, it doesn't send MIDI CC values as you would expect - it sends a value of 127 for every click of turning clockwise, and value of 0 for every click of turning counterclockwise.
So what I need to do is whenever one of these types of MIDI controls is assigned to a UI element, I need to increment/decrement the current value based on a MIDI CC value of 127/0. This should be easy...
Here is the problem. I don't know how to query the current value of an object from javascript.
So lets say I have already acquired a javascript reference to my UI object and assigned it to a var : obj. I can do things like:
var obj = this.patcher.getnamed(nameofobj);
var thisPatcher = obj.patcher; // this works just fine
if (obj.understands("rawfloat")) {
obj.message("rawfloat", newval / 127.0); // this works just fine
}
What I want to do is something like:
if (control == incdecTypeControl)
{
if (ctlValue == 0) {
obj.value -= 1; // or whatever value I have determined is the incremental value
// you can't do this because there is no "value" parameter for a max object - which is kinda absurd
}
else if (ctlValue == 127) {
obj.value += 1; // there is no obj.value - so how do I increment the value?
}
}
if i follow you correctly - you want to be able to get the value of a dial and increment it?
if so -
var currVal = obj.getvalueof();
obj.setvalueof (currVal++);
Ahh... they are methods on the obj - not properties... This seems to work just fine... any idea where in the docs these get/set methods (obj.getvalueof() / obj.setvalueof() ) are documented? Are these officially supported methods?
Thanks a bunch!
great - glad that helped.
definitely officially supported: