General

Lemur 5

Started by Softcore on .

Sign in or create an account to join the conversation.

54 posts

So if our app is now broken under 5.0, do you have any suggestions for fixing it?

Quick summary of what it's mainly complaining about:

I had a variable operators = {OP7, OP6, OP5, OP4, OP3, OP2, OP1};
Where OP7, OP6, etc are the names of containers.

Then I had code that did things like this:

tmpOp = operators;
setexpression(tmpOp.Focus, 'x', 0);


I would use this technique to change the position of containers based on a menu selection (setobjectrect(tmpOp, coords);) and other manipulations of objects.
I also have vectors of coordinates based on different layouts and would select the coordinates by using a menu to get the Monitor object holding the vector I want, then subindexing into that vector. I can post more code examples, or you can take a look at my TX-802 editor that was actually nearing completion before the update happened.

This allowed very compact code - I could write a single generic routine and have it operate on all my containers with basically no code duplication.

None of that works now in 5.0

Any suggestions of acceptable ways to manipulate objects?
wow, I like the radial stuff made with the new Canvas object. Beautiful. Thank you very much Liine team for the update, this is huge.

Besides, the Windows editor crashes every time when I try to download templates with said radial stuff from the iPad. Will need to do this with iFunbox.

Edit: certain templates (with radial Canvas objects, but also other new templates) crash the Windows editor anyway, when downloading from the Lemur app or when loading from file. On a Mac everything is working fine. No crashes so far. My advice: get a Mac, or build a hackintosh when working with Lemur. It's worth it for several reasons.
Phil999 wrote:wow, I like the radial stuff made with the new Canvas object. Beautiful. Thank you very much Liine team for the update, this is huge.

Besides, the Windows editor crashes every time when I try to download templates with said radial stuff from the iPad. Will need to do this with iFunbox.

Edit: certain templates (with radial Canvas objects, but also other new templates) crash the Windows editor anyway, when downloading from the Lemur app or when loading from file. On a Mac everything is working fine. No crashes so far. My advice: get a Mac, or build a hackintosh when working with Lemur. It's worth it for several reasons.
Investigating this. No need to buy a new computer yet. ;-)
Phil999 wrote:sorry, I shouldn't have said that. Of course the Windows editor does work fine, I use it often without problem. It's just that the Mac editor works slightly better and is always stable.
No worries! Apologies for the crash that slipped through quality control over here at Liine HQ. Looking into that bug.
oldgearguy wrote: I had a variable operators = {OP7, OP6, OP5, OP4, OP3, OP2, OP1};
Where OP7, OP6, etc are the names of containers.

Then I had code that did things like this:

tmpOp = operators;
setexpression(tmpOp.Focus, 'x', 0);


One can no longer use the dot notation indirectly, by placing a dot after a variable that was set to point to an object. Is 'Focus' the actual name of an object, or is it a variable pointing to an object?
nick_liine wrote:
oldgearguy wrote: I had a variable operators = {OP7, OP6, OP5, OP4, OP3, OP2, OP1};
Where OP7, OP6, etc are the names of containers.

Then I had code that did things like this:

tmpOp = operators;
setexpression(tmpOp.Focus, 'x', 0);


One can no longer use the dot notation indirectly, by placing a dot after a variable that was set to point to an object. Is 'Focus' the actual name of an object, or is it a variable pointing to an object?


in this case, Focus is a custom button that I programmatically turn off. In other cases, I use Monitor objects to create multi-dimensional arrays like this:

<WINDOW class="Monitor" text="b1" x="20" y="20" width="20" height="20" id="50" state="241" group="0" font="tahoma,20,0" send="1" osc_target="-2" midi_target="-2" kbmouse_target="-2" color="1596013" label="0" precision="3" unit="" value="0">
<VARIABLE name="value={7, {0.31, 0.31, 0.59, 0.59, 0.72, 0.72, 0.59}, {0.45, 0.12, 0.12, 0.97, 0.97, 0.76, 0.76}}" send="0" osc_target="0" osc_trigger="1" osc_message="/graphic/b1/value" midi_target="-1" midi_trigger="1" midi_message="0x90,0x90,0,0" midi_scale="0,16383" kbmouse_target="-1" kbmouse_trigger="1" kbmouse_message="0,0,0" kbmouse_scale="0,1,0,1"/>
</WINDOW>
<WINDOW class="Monitor" text="b2" x="20" y="20" width="20" height="20" id="51" state="241" group="0" font="tahoma,20,0" send="1" osc_target="-2" midi_target="-2" kbmouse_target="-2" color="1596013" label="0" precision="3" unit="" value="0">
<VARIABLE name="value={7, {0.31, 0.18, 0.18, 0.31, 0.31, 0.59, 0.59}, {0.34, 0.34, 0.55, 0.55, 0.12, 0.12, 0.91}}" send="0" osc_target="0" osc_trigger="1" osc_message="/graphic/b2/value" midi_target="-1" midi_trigger="1" midi_message="0x90,0x90,0,0" midi_scale="0,16383" kbmouse_target="-1" kbmouse_trigger="1" kbmouse_message="0,0,0" kbmouse_scale="0,1,0,1"/>
</WINDOW>
<WINDOW class="Monitor" text="b3" x="20" y="20" width="20" height="20" id="52" state="241" group="0" font="tahoma,20,0" send="1" osc_target="-2" midi_target="-2" kbmouse_target="-2" color="1596013" label="0" precision="3" unit="" value="0">
<VARIABLE name="value={7, {0.31, 0.31, 0.59, 0.59, 0.72, 0.72, 0.59}, {0.56, 0.12, 0.12, 0.76, 0.76, 0.55, 0.55}}" send="0" osc_target="0" osc_trigger="1" osc_message="/graphic/b3/value" midi_target="-1" midi_trigger="1" midi_message="0x90,0x90,0,0" midi_scale="0,16383" kbmouse_target="-1" kbmouse_trigger="1" kbmouse_message="0,0,0" kbmouse_scale="0,1,0,1"/>
</WINDOW>

<VARIABLE name="brkpoints={b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32}" send="1" osc_target="0" osc_trigger="1" osc_message="/graphic/brkpoints" midi_target="-1" midi_trigger="1" midi_message="0x90,0x90,0,0" midi_scale="0,16383" kbmouse_target="-1" kbmouse_trigger="1" kbmouse_message="0,0,0" kbmouse_scale="0,1,0,1"/>

<SCRIPT name="dispBrkpts(algNum)" script="
decl numPts, bpCfg;    

bpCfg = brkpoints[algNum];  // contains the current algorithm line drawing info (stored in a monitor object)
   
// set the number of points, then set the X and Y coordinate info for each of those points   
numPts = bpCfg.value[0];   
setattribute(LineArt, 'nbr', numPts);   
//LineArt is the Breakpoint object that is displaying the connecting lines between the operators
LineArt.x = subarray(bpCfg.value, 1, numPts);   
LineArt.y = subarray(bpCfg.value, 1+numPts, numPts);
" trigger_script="" trigger_type="4" trigger="1" osc_message="/graphic/dispBrkpts" midi_message="0x90,0x90,0,0" midi_target="-1" flag="1"/>
This type of construct is at the heart of my application. It allows me to treat Lemur objects as objects and manipulate them with common code. If the dot notation is no longer supported, is there anything comparable or do I throw away 3+ months of work and start from scratch?
oldgearguy wrote:
nick_liine wrote:
oldgearguy wrote: I had a variable operators = {OP7, OP6, OP5, OP4, OP3, OP2, OP1};
Where OP7, OP6, etc are the names of containers.

Then I had code that did things like this:

tmpOp = operators;
setexpression(tmpOp.Focus, 'x', 0);


One can no longer use the dot notation indirectly, by placing a dot after a variable that was set to point to an object. Is 'Focus' the actual name of an object, or is it a variable pointing to an object?


in this case, Focus is a custom button that I programmatically turn off. In other cases, I use Monitor objects to create multi-dimensional arrays like this:

<WINDOW class="Monitor" text="b1" x="20" y="20" width="20" height="20" id="50" state="241" group="0" font="tahoma,20,0" send="1" osc_target="-2" midi_target="-2" kbmouse_target="-2" color="1596013" label="0" precision="3" unit="" value="0">
<VARIABLE name="value={7, {0.31, 0.31, 0.59, 0.59, 0.72, 0.72, 0.59}, {0.45, 0.12, 0.12, 0.97, 0.97, 0.76, 0.76}}" send="0" osc_target="0" osc_trigger="1" osc_message="/graphic/b1/value" midi_target="-1" midi_trigger="1" midi_message="0x90,0x90,0,0" midi_scale="0,16383" kbmouse_target="-1" kbmouse_trigger="1" kbmouse_message="0,0,0" kbmouse_scale="0,1,0,1"/>
</WINDOW>
<WINDOW class="Monitor" text="b2" x="20" y="20" width="20" height="20" id="51" state="241" group="0" font="tahoma,20,0" send="1" osc_target="-2" midi_target="-2" kbmouse_target="-2" color="1596013" label="0" precision="3" unit="" value="0">
<VARIABLE name="value={7, {0.31, 0.18, 0.18, 0.31, 0.31, 0.59, 0.59}, {0.34, 0.34, 0.55, 0.55, 0.12, 0.12, 0.91}}" send="0" osc_target="0" osc_trigger="1" osc_message="/graphic/b2/value" midi_target="-1" midi_trigger="1" midi_message="0x90,0x90,0,0" midi_scale="0,16383" kbmouse_target="-1" kbmouse_trigger="1" kbmouse_message="0,0,0" kbmouse_scale="0,1,0,1"/>
</WINDOW>
<WINDOW class="Monitor" text="b3" x="20" y="20" width="20" height="20" id="52" state="241" group="0" font="tahoma,20,0" send="1" osc_target="-2" midi_target="-2" kbmouse_target="-2" color="1596013" label="0" precision="3" unit="" value="0">
<VARIABLE name="value={7, {0.31, 0.31, 0.59, 0.59, 0.72, 0.72, 0.59}, {0.56, 0.12, 0.12, 0.76, 0.76, 0.55, 0.55}}" send="0" osc_target="0" osc_trigger="1" osc_message="/graphic/b3/value" midi_target="-1" midi_trigger="1" midi_message="0x90,0x90,0,0" midi_scale="0,16383" kbmouse_target="-1" kbmouse_trigger="1" kbmouse_message="0,0,0" kbmouse_scale="0,1,0,1"/>
</WINDOW>

<VARIABLE name="brkpoints={b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32}" send="1" osc_target="0" osc_trigger="1" osc_message="/graphic/brkpoints" midi_target="-1" midi_trigger="1" midi_message="0x90,0x90,0,0" midi_scale="0,16383" kbmouse_target="-1" kbmouse_trigger="1" kbmouse_message="0,0,0" kbmouse_scale="0,1,0,1"/>

<SCRIPT name="dispBrkpts(algNum)" script="
decl numPts, bpCfg;    

bpCfg = brkpoints[algNum];  // contains the current algorithm line drawing info (stored in a monitor object)
   
// set the number of points, then set the X and Y coordinate info for each of those points   
numPts = bpCfg.value[0];   
setattribute(LineArt, 'nbr', numPts);   
//LineArt is the Breakpoint object that is displaying the connecting lines between the operators
LineArt.x = subarray(bpCfg.value, 1, numPts);   
LineArt.y = subarray(bpCfg.value, 1+numPts, numPts);
" trigger_script="" trigger_type="4" trigger="1" osc_message="/graphic/dispBrkpts" midi_message="0x90,0x90,0,0" midi_target="-1" flag="1"/>
This type of construct is at the heart of my application. It allows me to treat Lemur objects as objects and manipulate them with common code. If the dot notation is no longer supported, is there anything comparable or do I throw away 3+ months of work and start from scratch?
dot notation is still supported, the only case it is not supported is when the part AFTER the dot is a variable referring to an object. in that case you should use setexpression()
nick_liine wrote:If you can post a small JZML with an isolated example of your broken code, that would help.

I will post it tonight when I get home. About 30% of the time I end up using Wordpad/Notepad to edit the .jzml directly to make changes, but in this case I do not think I can successfully cut down the application without seeing it in the editor.

The script in the code snippet above does not violate your rule and yet I think it was still flagged with a yellow triangle (but I can't be 100% sure now).

In fact, the original problem I posted was using setexpression and that was definitely marked as incorrect in version 5.0:

decl i=0, tmpOp, operators = {OP7, OP6, OP5, OP4, OP3, OP2, OP1}; //Where OP7, OP6, etc are the names of containers.

tmpOp = operators;
setexpression(tmpOp.Focus, 'x', 0); // Focus is a custom button living inside all my OPx containers
oldgearguy wrote:
nick_liine wrote:If you can post a small JZML with an isolated example of your broken code, that would help.

I will post it tonight when I get home. About 30% of the time I end up using Wordpad/Notepad to edit the .jzml directly to make changes, but in this case I do not think I can successfully cut down the application without seeing it in the editor.

The script in the code snippet above does not violate your rule and yet I think it was still flagged with a yellow triangle (but I can't be 100% sure now).

In fact, the original problem I posted was using setexpression and that was definitely marked as incorrect in version 5.0:

decl i=0, tmpOp, operators = {OP7, OP6, OP5, OP4, OP3, OP2, OP1}; //Where OP7, OP6, etc are the names of containers.

tmpOp = operators;
setexpression(tmpOp.Focus, 'x', 0); // Focus is a custom button living inside all my OPx containers


Please send an isolated example JZML example (i.e. extracted from the larger template) that demonstrates the issue, you can send it directly to support@liine.net
nick_liine wrote: Please send an isolated example JZML example (i.e. extracted from the larger template) that demonstrates the issue, you can send it directly to support@liine.net

I'll do that. Is there anywhere I can re-download the 4.1.1 Windows editor? I upgraded my machine to 5.0 and I wanted to make sure the example I send is working in 4.1.1
This is all cool. Very excitig.

There is one thing though. My 98% template is now 100%+ and giving me errors because of missing stuff. Will take some time to fix it. I hope the size hit is not too big on 5.0. I was already fighting with every bit.
The new string functions, even though they mean total re-work of older templates, may perhaps ease off some stuff - not sure though!

Too early and I havent yet had a chance to check out all the new scripting stuff, plus I now have to study about html5 canvas.

BTW...minor bug in windows editor: when enabling aliasing, it crashes - perhaps if those radial objects have antaliasing enabled, thats what causes the windows editor to crash when uploaded from the iPad?