Lemur 5

Discuss Lemur and share techniques.
nick_liine
Liine Staff
Posts:340
Joined:01 Oct 2010 11:06
Re: Lemur 5

Post by nick_liine » 11 Mar 2014 08:40

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?

oldgearguy
Regular
Posts:315
Joined:02 Nov 2013 11:19

Re: Lemur 5

Post by oldgearguy » 11 Mar 2014 08:55

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:

Code: Select all

<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?

nick_liine
Liine Staff
Posts:340
Joined:01 Oct 2010 11:06

Re: Lemur 5

Post by nick_liine » 11 Mar 2014 09:32

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:

Code: Select all

<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
Liine Staff
Posts:340
Joined:01 Oct 2010 11:06

Re: Lemur 5

Post by nick_liine » 11 Mar 2014 09:34

If you can post a small JZML with an isolated example of your broken code, that would help.

oldgearguy
Regular
Posts:315
Joined:02 Nov 2013 11:19

Re: Lemur 5

Post by oldgearguy » 11 Mar 2014 09:56

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

nick_liine
Liine Staff
Posts:340
Joined:01 Oct 2010 11:06

Re: Lemur 5

Post by nick_liine » 11 Mar 2014 10:17

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

oldgearguy
Regular
Posts:315
Joined:02 Nov 2013 11:19

Re: Lemur 5

Post by oldgearguy » 11 Mar 2014 10:38

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

electrofux
Regular
Posts:297
Joined:24 Jan 2012 18:22

Re: Lemur 5

Post by electrofux » 11 Mar 2014 11:10

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.

Softcore
Regular
Posts:1639
Joined:04 Nov 2012 08:34

Re: Lemur 5

Post by Softcore » 11 Mar 2014 11:21

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?

nick_liine
Liine Staff
Posts:340
Joined:01 Oct 2010 11:06

Re: Lemur 5

Post by nick_liine » 11 Mar 2014 11:30

oldgearguy wrote:
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
http://files.liine.nl/n/Lemur-Installer-4.1.1.exe

Post Reply