Page 4 of 6

Re: Lemur 5

Posted: 12 Mar 2014 20:20
by saveas
In App editor also lacks "on Cursor" script execution triggers

Re: Lemur 5

Posted: 13 Mar 2014 09:26
by oldgearguy
oldgearguy wrote:So if our app is now broken under 5.0, do you have any suggestions for fixing it?

Quick summary -
(the reverse order of the operators is due to the way Yamaha laid out the data in the sysex messages. By using a reverse order in the array, it makes life much easier in other places)
the code looked like this:

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

// Focus is a custom button inside each container and I want to reset it for OP1->OP6
for (i=1; i < 7; i++) {
tmpOp = operators;
setexpression(tmpOp.Focus, 'x', 0);
}

Lemur 4.1.1 allowed me to reference the custom button inside the container using tmpOp.Focus. Lemur 5.0 does not.


Based on suggestions from Nick and some experimenting, I believe I have found a solution to this problem (and my other issues as well).

The new code looks like this:

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

// Focus is a custom button inside each container and I want to reset it for OP1->OP6
for (i=1; i < 7; i++) {
tmpOp = findobject('OP' + (7 - i)); // note that the operators vector is no longer needed
tmpOp2 = getexpression(tmpOp, 'Focus');
setexpression(tmpOp2, 'x', 0);
}

The whole reason for this technique is that I have 6 different containers using the same structure and same processing. I did not want 6 copies of all the scripts used to process and display the data. So the approach was to create a single script that acted on whatever container object was passed into it. Additionally, I could use a single for loop to initialize/clear/update all 6 containers. This saves space, (hopefully) reduces coding errors due to incomplete updates, and (hopefully) makes the code easier to maintain and update. My entire Yamaha TX-802 template so far is using less than 20%.

This technique does rely on a couple things -- one is the string concatenation functionality available in 5.0 (which means no backwards compatibility) and the other is a careful naming of objects that you want to manipulate in this way. There is probably a slight performance hit using findobject(), especially if you have a ton of objects in your template, but in my initial limited testing, I haven't noticed any difference.

Re: Lemur 5

Posted: 13 Mar 2014 10:27
by electrofux
nick_liine wrote:
electrofux wrote:I tested around a bit with the sequencers. The timing is pretty spot on especially when used wired. Over Wifi (no adhoc) it wasn't that tight though still alot better than it used to be.

There is one thing that is a bit annoying and that is the little hickup when the Clock sending Apllication (in my case Reason) is going through a loop. Seems like Step 1 is triggered twice when the Song Pointer jumps from the right to the left loop marker. I have checked for the correct loop setting.
Maybe it is Reason, maybe something is intepreted as a clock pulse that shouldnt be. Can someone check this with another program? I am using the iconnect midi2+ without the daemon running. You can even see the little hickup on the Lemur.

Edit: checked Genome slaved to Reason and the hickup doesnt appear.

Also the provided sequencers seem to not respond to stop messages. They keep on running when stop in the sequencer is pressed. Is this because they are coded this way?
There are a couple different ways to handle clock start/stop/run messages, we've tried to accomodate for all cases but there might be some particularities about the way Reason handles clock messages.

Does this problem occur with other DAWs, or only with Reason?
Well, what can i say. I installed Ableton Demo and tried it out and there is no problem. Now i have to make the Propellerheads to fix this, sigh.

Re: Lemur 5

Posted: 13 Mar 2014 10:58
by nick_liine
oldgearguy wrote: The new code looks like this:

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

// Focus is a custom button inside each container and I want to reset it for OP1->OP6
for (i=1; i < 7; i++) {
tmpOp = findobject('OP' + (7 - i)); // note that the operators vector is no longer needed
tmpOp2 = getexpression(tmpOp, 'Focus');
setexpression(tmpOp2, 'x', 0);
}
This is indeed the preferred method in 5.0 onwards. getexpression() can be used to reference expressions in objects, but also objects in containers.

Re: Lemur 5

Posted: 13 Mar 2014 10:59
by nick_liine
electrofux wrote:
nick_liine wrote: There are a couple different ways to handle clock start/stop/run messages, we've tried to accomodate for all cases but there might be some particularities about the way Reason handles clock messages.

Does this problem occur with other DAWs, or only with Reason?
Well, what can i say. I installed Ableton Demo and tried it out and there is no problem. Now i have to make the Propellerheads to fix this, sigh.
Keep us posted, and please feel free to contact support directly at support@liine.net when you get more info about the issue.

Re: Lemur 5

Posted: 13 Mar 2014 14:15
by electrofux
nick_liine wrote:
electrofux wrote:
nick_liine wrote: There are a couple different ways to handle clock start/stop/run messages, we've tried to accomodate for all cases but there might be some particularities about the way Reason handles clock messages.

Does this problem occur with other DAWs, or only with Reason?
Well, what can i say. I installed Ableton Demo and tried it out and there is no problem. Now i have to make the Propellerheads to fix this, sigh.
Keep us posted, and please feel free to contact support directly at support@liine.net when you get more info about the issue.
Sure, i have contacted Propellerheads on every possible channel and sent an email to liine support. Reason is currently in Beta, so maybe if that gets through in time, it might even get fixed.

Re: Lemur 5

Posted: 13 Mar 2014 21:52
by analog604
Liine Team! Very excellent news, congratulations on this new release. I'm very exited about the possibilities and been hoping for sweet string concatenation for some years now. : ) All good! :)

oldgearguy! Hi thanks for pointing out how to fix the indirect object reference code. I used that technique quite a bit in later templates in because it allowed re-usable code bits (easier to maintain too).
I have work cut out for me to rewrite some broken templates now (minikeys, mophoDashboard, others not released), fine by me because the new updates to Lemur are worth the time. :D Now it is into the lab for me.. :geek:

cheers guys~
Jay

Re: Lemur 5

Posted: 14 Mar 2014 00:24
by sculptair
Any word on whether Liine increased the 256 bit limitation? I've been trying to learn subtractive analog synth using analog604's Mophodashboard and my Mopho desktop, but have been handicapped by the inability of Lemur to load all of the parameters of a Mopho preset.

Re: Lemur 5

Posted: 14 Mar 2014 19:37
by newtfish
Yes, I also am noticing that the new 5 editor shows 5% higher template size than 4 editor.

Why is this?

Is it not possible to remove the limit on the editor? Keep the template size monitor there to let us know where we are. But dont truncate our templates when loading them up, or stop us from adding objects once we reached the limit. Seems like a sledgehammer is being used to crack a nut here. If the lemur ipad app cant handle the size then I guess we can only blame ourselves then for going over the limit....

I cant say Ive had any problems with templates that are 100% filesize on the ipad app.

Re: Lemur 5

Posted: 15 Mar 2014 16:30
by analog604
A 2x 'upgrade' of max template size would be appreciated here too, guys! :D I have templates that are now at 100% and can't be developed any further... well.. until I delete a load of formatting/text overlay layers and rewrite using the HTML5 methods.
I wonder if there is an HTML5 drawing/path editor that can be modified to output Lemur compatible script, anyone know of a possible tool? Standard HTML5 Canvas+cascading style sheet integration would be sweet.
Jay