# Lemur Forum Dead?



## DanielBrunelle (Mar 13, 2018)

Hey guys,

Does anyone know whats going on at liine? The Lemur forums arent accessible to me.

https://forum.liine.net/

Maybe lemur has been a zombie for years but losing the forums is still a huge blow!

Im pretty committed to the touch screen interface and lemur's very powerful tools for customization. TouchOSC can't do what lemur does. Are there alternative ipad apps that are still in active dev?


----------



## InLight-Tone (Mar 13, 2018)

Not looking good....


----------



## procreative (Mar 13, 2018)

Well its only the forum, last app update was only in Feb so no need to panic just yet. Probably an oversight.


----------



## WindcryMusic (Mar 21, 2018)

It's still missing in action as of today, and the above link simply redirects to their main Lemur page. Makes me a little bit nervous, especially as I am starting to delve into more advanced Lemur programming now and was really hoping to make use of that forum as a resource.


----------



## robgb (Mar 21, 2018)

DanielBrunelle said:


> TouchOSC can't do what lemur does.


I use TouchOSC and have never used Lemur. What does Lemur do that TouchOSC doesn't?


----------



## DanielBrunelle (Mar 21, 2018)

WindcryMusic said:


> It's still missing in action as of today, and the above link simply redirects to their main Lemur page. Makes me a little bit nervous, especially as I am starting to delve into more advanced Lemur programming now and was really hoping to make use of that forum as a resource.



I sent a support email. Ill update if I hear anything back. 
Does anyone have contact with the guys at liine? 




robgb said:


> I use TouchOSC and have never used Lemur. What does Lemur do that TouchOSC doesn't?



Short answer is "everything". Its little bit like the difference between a crayon and adobe illustrator.

TouchOSC is great if all you need is a touchscreen version of a faderbank. Steep learning curve but with lemur you can build fully interactive interfaces. 

I recommend you try it out.


----------



## WindcryMusic (Mar 21, 2018)

robgb said:


> I use TouchOSC and have never used Lemur. What does Lemur do that TouchOSC doesn't?



I think the most important differences between the two are that Lemur has an API, scripting, expressions, and some more advanced/esoteric controls.

E.g., with TouchOSC you basically are limited to telling a control what to send out via OSC or MIDI when activated (or what inputs to react to). Whereas with Lemur, just to give one example, I'm currently engaged in building a "popover" screen when a particular button is clicked, from which a selection can be made that filters the set of controls visible/active on the parent page, as well as changing the text and/or color of some controls. I'm pretty sure that wouldn't be possible with TouchOSC.

Warning: I do own both, but haven't spent much time with TouchOSC. My statements are based largely on a few quick Google searches.


----------



## procreative (Mar 21, 2018)

robgb said:


> I use TouchOSC and have never used Lemur. What does Lemur do that TouchOSC doesn't?



I wanted to make an articulation switching system with each pad labelled up with the appropriate articulation for all my libraries. I found using keyswitches soon became a headache trying to remember which key di what and where it was (even tried a Komplete Kontrol and while the coloured keys were handy, I still did not remember which one did what).

I tried TouchOSC and I could do what I wanted. But could not find a way to switch layouts automatically and there seems to be a maximum amount of layouts as they have to be in tabbed windows.

So after much searching I came across a Lemur based project called Composer Tools Pro. With it you can save presets for every library you have, tag them with the Dev, Instrument etc and they will recall on track select.

By combining this with Osculator I have found a way to have the correct template load every time I select a track in my DAW (Logic). I also have a section for DAW shortcuts (there are so many hidden tricks I was not even aware of).

One of my sets of shortcuts is able to hide tracks based on the group they belong to e.g. one button click and I can hide all tracks and only show say Cinematic Studio Strings. Handy when you have lots of tracks.

TouchOSC is a very capable software, just cannot go as deep.


----------



## DanielBrunelle (Mar 21, 2018)

procreative said:


> I wanted to make an articulation switching system with each pad labelled up with the appropriate articulation for all my libraries. I found using keyswitches soon became a headache trying to remember which key di what and where it was (even tried a Komplete Kontrol and while the coloured keys were handy, I still did not remember which one did what).
> 
> I tried TouchOSC and I could do what I wanted. But could not find a way to switch layouts automatically and there seems to be a maximum amount of layouts as they have to be in tabbed windows.
> 
> ...




Definitely getting off topic here but Ill go with it.
I saw your other post on this and Ive actually been meaning to ask you if you could explain your OSC set up step by step. Logic -> Osculator -> Lemur template switching. Im still stuck in MIDI land unfortunately. 

Im pretty new to OSC. I've been able to monitor messages from logic to Osculator and from lemur to osculator. However I am having trouble with communication between lemur and logic via OSC.


----------



## stigc56 (Mar 21, 2018)

If you imagine 100 different instruments in Cubase or Logic. Everytime you select a track with one of these instruments, you can have your Ipad mirror the correct set of articulations. Imagine to accomplish this in an app where you have to create a *separate* "scene" for each set, that's a lot of work. In Lemur you use the same "scene", and just change the text according to the set you selected. Furthermore it's possible, to create these articulation sets in excel and via a macro create both the VST map, articulation set (Cubase & Logic) and the all variables for Lemur.
Mihkel Zilmer and Marco Di Stefano has created videos that show how to do, and I will try to create a video showing Excel doing the hard work.


----------



## DanielBrunelle (Mar 21, 2018)

stigc56 said:


> Furthermore it's possible, to create these articulation sets in excel and via a macro create both the VST map, articulation set (Cubase & Logic) and the all variables for Lemur.
> Mihkel Zilmer and Marco Di Stefano has created videos that show how to do, and I will try to create a video showing Excel doing the hard work.



This sounds amazing, you have this working in logic in concert with their new articulation sets?

Please share your excel method!


----------



## robgb (Mar 21, 2018)

I use TouchOSC in conjunction with @tack's reaticulate, so the articulation setup changes depending on which track I choose.


----------



## A.G (Mar 21, 2018)

robgb said:


> I use TouchOSC in conjunction with @tack's reaticulate, so the articulation setup changes depending on which track I choose.


TouchOSC is a toy in comparison with the Lemur. You can script amazing powerful Workstations in Lemur and set all sort of comunication with the DAW or third party application via MIDI or Control Surface track selection.

Liine released a rock solid update in February. That means, no worries...


----------



## robgb (Mar 21, 2018)

A.G said:


> TouchOSC is a toy in comparison with the Lemur.


Well, it's a toy that works great for me and does what I want, but I'll give Lemur a look anyway.


----------



## DanielBrunelle (Mar 21, 2018)

bump



DanielBrunelle said:


> Does anyone have contact with the guys at liine?



we need the forums!


----------



## A.G (Mar 21, 2018)

DanielBrunelle said:


> bump
> we need the forums!


Sometimes the specific app forums can be silent but it does not mean that the app is dead.
For example we can make a Lemur discussion in this forum. I noted that a few Lemur gurus post here...


----------



## jononotbono (Mar 21, 2018)

DanielBrunelle said:


> bump
> we need the forums!



What about asking a Mod to start a sub forum here at VI-C? Just thinking out loud!


----------



## DanielBrunelle (Mar 21, 2018)

A.G said:


> Sometimes the specific app forums can be silent but it does not mean that the app is dead.
> For example we can make a Lemur discussion in this forum. I noted that a few Lemur gurus post here...



Its not that the forums are silent its that they arent accessible. This thread isnt about the app being dead its about the forums being inaccessible. 

I think a VI-C lemur forum is great idea! But that doesnt help the loss of years of forum posts and hosted modules within them.


----------



## WindcryMusic (Mar 21, 2018)

jononotbono said:


> What about asking a Mod to start a sub forum here at VI-C? Just thinking out loud!



That's an interesting idea. Perhaps not for Lemur alone (even though that's the one I'm personally most interested in), but for all of the programmable/configurable control surfaces (Lemur, TouchOSC, Metagrid, and any others I don't know about).


----------



## A.G (Mar 21, 2018)

DanielBrunelle said:


> But that doesnt help the loss of years of forum posts and hosted modules within them.


Who knows, it can be a sort of forum under construction...


----------



## procreative (Mar 21, 2018)

DanielBrunelle said:


> Definitely getting off topic here but Ill go with it.
> I saw your other post on this and Ive actually been meaning to ask you if you could explain your OSC set up step by step. Logic -> Osculator -> Lemur template switching. Im still stuck in MIDI land unfortunately.
> 
> Im pretty new to OSC. I've been able to monitor messages from logic to Osculator and from lemur to osculator. However I am having trouble with communication between lemur and logic via OSC.



Logic makes use of a midi plugin that comes with Osculator, when configured right it recognises the connection to Lemur (as it transmits OSC). Thats the key.

I found the info that one of the messages Logic outputs when you select a track is /logic/track/name/"your track name". Osculator sees this, then you have to configure an output when its received.

As CTP is able to switch templates from a recall message, you just have to tell Osculator to output that message.



stigc56 said:


> If you imagine 100 different instruments in Cubase or Logic. Everytime you select a track with one of these instruments, you can have your Ipad mirror the correct set of articulations. Imagine to accomplish this in an app where you have to create a *separate* "scene" for each set, that's a lot of work. In Lemur you use the same "scene", and just change the text according to the set you selected.



Before Logic Articulation Sets this was impossible as the only place these names existed was inside Midi FX scripts like ArtzID. Not sure if this is now possible with the Logic update.

I did explore trying to name the pads in TouchOSC this way, however in Logic unless a midi plugin has been created that passes midi feedback (like the Mackie Control one) its almost impossible to send OSC messages with that kind of info. Sure its easy when its a Mackie Controller as the commands are already there to pass on.

I agree making templates for every library is a long process and the ideal would be just to pass Articulation names.

Luckily CTP has lots of tools to speed it up and given many libraries use similar setups I was able to duplicate templates and change some pads only. I am sure there might be a better way, but dont know anyone thats found a way (in Logic) yet.


----------



## jononotbono (Mar 21, 2018)

WindcryMusic said:


> That's an interesting idea. Perhaps not for Lemur alone (even though that's the one I'm personally most interested in), but for all of the programmable/configurable control surfaces (Lemur, TouchOSC, Metagrid, and any others I don't know about).



Yeah definitely. Basically all things to do with Touch Screens and using them for Music. 

I'm actually thinking there should be a Games section (discussing Game Music, Game Audio, Implementation and Middleware etc) as well but that's another topic altogether. 

Again, just thinking out loud.


----------



## stigc56 (Mar 22, 2018)

DanielBrunelle said:


> This sounds amazing, you have this working in logic in concert with their new articulation sets?
> 
> Please share your excel method!


Hi I will try do it tomorrow.


----------



## stigc56 (Mar 24, 2018)

Hi
This is the excel file. It's FAR from perfect, but maybe you can develop it in to something useful.
https://www.dropbox.com/s/l64qd36osmgrcy4/Logic Articulations Mapper V0.4.xlsm?dl=0


----------



## synthetic (Mar 25, 2018)

Liine Lemur has seemed dead for a while. I've reported many bugs that got no response. Perhaps 14bitmidi.com will be the answer.


----------



## WindcryMusic (Mar 26, 2018)

synthetic said:


> Liine Lemur has seemed dead for a while. I've reported many bugs that got no response.



Well, I for one certainly hope not, since I don't think there is anything else that can fully replace Lemur at this point in time, and if not quite married to it, my studio is certainly engaged to Lemur at the very least at this point. Also, they did update the application just a month ago, so I'm choosing to remain hopeful that there is still life in it.


----------



## Nathanael Iversen (Apr 10, 2018)

14bitmidi.com's CPU Bundle is excellent for controlling Cubase. I bought an inexpensive Dell 24" touchscreen, and it works very well for all the Cubase controls. Lemur is where I have articulation switching stuff set up. So while it can do Cubase controls, that isn't how I use it. If 14bitmidi added the ability to do articulation management easily, I'd be quite interested. I'd even buy another touchscreen just for that - I've got another open port on the graphics card.


----------



## 24dBFS (Apr 13, 2018)

Nathanael Iversen said:


> 14bitmidi.com's CPU Bundle is excellent for controlling Cubase. I bought an inexpensive Dell 24" touchscreen, and it works very well for all the Cubase controls. Lemur is where I have articulation switching stuff set up. If 14bitmidi added the ability to do articulation management easily, I'd be quite interested.



I think you will be interested in the new CPU-E and CPU-F not only for articulation switching but also for all the new features that are added there. 
I can send you the latest version if you think you will be fine without the proper Manual for few more days.
Cheers Nathanael!


----------



## stigc56 (Apr 13, 2018)

I'm interested too, but it seems your web-site is down??


----------



## gpax (Apr 13, 2018)

stigc56 said:


> I'm interested too, but it seems your web-site is down??


I get a message saying to come back in a few days. Hence, a couple of people have referenced it, yet I have no clue what the “it” even is at this point, apart from a vague possible alternative to either Lemur or OSC.


----------



## gpax (Apr 13, 2018)

The OS version of the Lemur editor has always been a curious beast for me, as it both looks and functions like something designed 15+ years ago. It has always been buggy on Mac OS terms of its UI. But it always works, and I’ve built several involved templates, sometimes lurking on their forum, or researching syntax elsewhere when I’ve needed to configure a specific workflow. 

But the sum of Liine’s release cycles for iOS, and it’s retro editor, and practically non-existent support, has always left me holding my breath. The last big update a few years back which introduced in-app editing seemed to mark an apex of sorts, at least in hindsight; I had all but given up on proper display support for the 10.5 iPad Pro, for example, then ten months in, the February update rectified this, just when I began to question their possible demise.


----------



## WindcryMusic (Apr 13, 2018)

gpax said:


> The OS version of the Lemur editor has always been a curious beast for me, as it both looks and functions like something designed 15+ years ago. It has always been buggy on Mac OS terms of its UI. But it always works, and I’ve built several involved templates, sometimes lurking on their forum, or researching syntax elsewhere when I’ve needed to configure a specific workflow.
> 
> But the sum of Liine’s release cycles for iOS, and it’s retro editor, and practically non-existent support, has always left me holding my breath. The last big update a few years back which introduced in-app editing seemed to mark an apex of sorts, at least in hindsight; I had all but given up on proper display support for the 10.5 iPad Pro, for example, then ten months in, the February update rectified this, just when I began to question their possible demise.



I agree on pretty much all of this. The editor on Mac feels like a kludge to use, but I can still get things done in it. Actually the communications and syncing with an attached iPad running Lemur feels like the most polished part, as it pretty much just works ... it's the basic UI behaviors where the editor lacks.

I was just glad to see that they had added support for the 12" iPad Pro recently, as I went out and bought one of those a couple of months ago specifically to run Lemur on for my studio. Works great thus far ... I'm still developing the template, but expect it won't be long now before I will be describing it as something I can't live without. So I really hope that Liine isn't closing up shop.


----------



## WindcryMusic (Apr 14, 2018)

Hey - does anyone here happen to know if there is any way to parse string values in Lemur scripts? I get values from Logic as OSC strings from Osculator, but as far as I can tell, there is no way for me to do any processing with them at all in Lemur aside from concatenating them with other strings. I was really hoping to be able to extract them into arrays so I could check the values of specific characters, but I'm not finding any way to do that.


----------



## AlexRuger (Apr 14, 2018)

synthetic said:


> Liine Lemur has seemed dead for a while. I've reported many bugs that got no response. Perhaps 14bitmidi.com will be the answer.


I abandoned Lemur for this reason. Actually, the biggest thing for me was that the Daemon would crash *constantly.* So frustrating.

I'm building a pretty amazing touch controller in Max that is able to do things you could *never* do in something like Lemur. Having the ability to parse and manipulate MIDI data between the controller and the DAW is proving to be insanely cool. Throw in the fact that you can write javascript for it as well...


----------



## gpax (Apr 14, 2018)

AlexRuger said:


> I'm building a pretty amazing touch controller in Max that is able to do things you could *never* do in something like Lemur. Having the ability to parse and manipulate MIDI data between the controller and the DAW is proving to be insanely cool. Throw in the fact that you can write javascript for it as well...


This is very helpful. I would be interested to see how you are using Max in this context. Should I consider upgrading my Live Standard to Suite?


----------



## AlexRuger (Apr 14, 2018)

I'm using Max standalone. Ableton doesn't factor into it at all. 

That said, yeah, Max 4 Live is incredible.


----------



## InLight-Tone (Apr 14, 2018)

AlexRuger said:


> I'm using Max standalone. Ableton doesn't factor into it at all.
> 
> That said, yeah, Max 4 Live is incredible.


That's awesome, I wondered if such a thing were doable a while back...


----------



## Nathanael Iversen (Apr 14, 2018)

24dBFS said:


> I think you will be interested in the new CPU-E and CPU-F not only for articulation switching but also for all the new features that are added there.
> I can send you the latest version if you think you will be fine without the proper Manual for few more days.
> Cheers Nathanael!


I won't be able to do anything with it for a week or two due to scheduling, but I'd be happy to give it a go. I'm very pleased with the other CPU layouts.


----------



## MIDI Kinetics (Apr 15, 2018)

The last Lemur update was an entire rewrite of the underlying engine resulting in something like 3-4x increase in performance. Additionally, I believe they got a new lead developer so whoever took over had a _massive_ amount of work to do. This probably explains the slow release cycle in the past year.

As far as to why the forum is down, that I don't know. I'm sure it will be back. The Lemur team is small and things take time.

As for any bugs, I have noticed very few, if any. I'm curious as to what they are. If you like, send me an email through our support page detailing them and I will take a look when I get a chance. https://www.midikinetics.com/contact/

The challenge for providing support for a product like Lemur is that it's a monumental task for the support team to sort out bugs in the product itself from bugs in users' code.

MOH


----------



## dgburns (Apr 15, 2018)

MIDI Kinetics said:


> The last Lemur update was an entire rewrite of the underlying engine resulting in something like a more than 3-4x increase in performance. Additionally, I believe they got a new lead developer so whomever took over had a _massive_ amount of work to do. This probably explains the slow release cycle in the past year.
> 
> As far as to why the forum is down, that I don't know. I'm sure it will be back. The Lemur team is small and things take time.
> 
> ...



This explains a lot. I noticed the reduced memory footprint in templates, was scratching my head as to why. 

Lemur is the most incredible tool, really the only complaint I have is that I wish they would release Dexter as an iPad app...


----------



## WindcryMusic (Apr 15, 2018)

MIDI Kinetics said:


> The last Lemur update was an entire rewrite of the underlying engine resulting in something like a more than 3-4x increase in performance. Additionally, I believe they got a new lead developer so whoever took over had a _massive_ amount of work to do. This probably explains the slow release cycle in the past year.
> 
> As far as to why the forum is down, that I don't know. I'm sure it will be back. The Lemur team is small and things take time.
> 
> ...



Thanks, I really hope this is the case. Lemur is becoming so important to my studio that I wouldn't hesitate to pay them the same $50 again for a version 2.0 even if it only included modest improvements. (Hint: string parsing, hehe.)


----------



## procreative (Apr 15, 2018)

MIDI Kinetics said:


> The last Lemur update was an entire rewrite of the underlying engine resulting in something like 3-4x increase in performance. Additionally, I believe they got a new lead developer so whoever took over had a _massive_ amount of work to do. This probably explains the slow release cycle in the past year.
> 
> As far as to why the forum is down, that I don't know. I'm sure it will be back. The Lemur team is small and things take time.
> 
> ...



Hey! I ve got your CTP project, wondered if its okay to update Lemur, will it break anything in CTP? Especially as I did a couple of tweaks to CTP.


----------



## MIDI Kinetics (Apr 16, 2018)

There is no problem for anyone to upgrade Lemur. The new version did not break any existing projects.

I doubt they would release a new version which would break existing projects because then every project in the Liine User Library would become useless.

https://liine.net/en/community/user-library/

MOH


----------



## pmcrockett (Apr 16, 2018)

WindcryMusic said:


> Hey - does anyone here happen to know if there is any way to parse string values in Lemur scripts? I get values from Logic as OSC strings from Osculator, but as far as I can tell, there is no way for me to do any processing with them at all in Lemur aside from concatenating them with other strings. I was really hoping to be able to extract them into arrays so I could check the values of specific characters, but I'm not finding any way to do that.


In addition to concatenating, you can perform comparisons (>, <, >=, <=, ==) against other strings which sorts them alphabetically (or more technically, in ASCII table order). I've not actually attempted this, but it should be possible to build a function that runs a bunch of recursive comparisons to determine the contents of the string and then loads the data into a vector so you can work with it.


----------



## WindcryMusic (Apr 16, 2018)

pmcrockett said:


> In addition to concatenating, you can perform comparisons (>, <, >=, <=, ==) against other strings which sorts them alphabetically (or more technically, in ASCII table order). I've not actually attempted this, but it should be possible to build a function that runs a bunch of recursive comparisons to determine the contents of the string and then loads the data into a vector so you can work with it.



I know what you mean, but that would be a rather extreme solution that might hit the maximum allowed size for a function all by itself. 26 conditionals for each letter position (and that's assuming only alphabetic characters in the same case) would be a whole lot of code.

I haven't tried writing any recursive code in Lemur scripts. I wonder if there is a maximum stack size? Anyway, the problem I foresee with a recursive solution is that there isn't a way to "peel off" each letter of the string. It might be possible to recursively concatenate the match pattern though, I suppose.

Fortunately I found a different way to attack my current problem that eliminated the need to do the string parsing. Still, I hope Lemur might add this someday. Even just adding a stringtoarray() function to complement the existing arraytostring() function would go a long way in the right direction.


----------



## pmcrockett (Apr 17, 2018)

WindcryMusic said:


> I know what you mean, but that would be a rather extreme solution that might hit the maximum allowed size for a function all by itself. 26 conditionals for each letter position (and that's assuming only alphabetic characters in the same case) would be a whole lot of code.
> 
> I haven't tried writing any recursive code in Lemur scripts. I wonder if there is a maximum stack size? Anyway, the problem I foresee with a recursive solution is that there isn't a way to "peel off" each letter of the string. It might be possible to recursively concatenate the match pattern though, I suppose.
> 
> Fortunately I found a different way to attack my current problem that eliminated the need to do the string parsing. Still, I hope Lemur might add this someday. Even just adding a stringtoarray() function to complement the existing arraytostring() function would go a long way in the right direction.


The code is actually pretty simple and ends up not even needing recursion (which is just as well, because I'm not sure whether Lemur _can_ call functions recursively). Paste the following code into a function named _stringtoarray(s)_ and set its execution to manual. Like the comment header says, the only real limitation is that it can't deal with _'_ and _"_ characters because these define strings in the code and I can't find any info on whether Lemur has escape sequences that let you include them in the strings themselves.

```
/*
This function formats a string as individual characters in a vector. It does not deal with
ASCII control codes, and I don't know if/how Lemur does escape codes, so it cannot parse
single or double quote marks.
--P.M. Crockett
*/
decl strComp = {' ','!','#','$','%','(',')','*','+',',','-','.','/','0','1','2','3',
'4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H',
'I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\',']',
'^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r',
's','t','u','v','w','x','y','z','{','|','}','~'};
decl compLen = sizeof(strComp);
decl retArray;
decl retIdx = 0;
decl concat = '';
decl failsafe = 0;
decl failsafeLimit = 9999;
decl i;

do
{
        for (i = 0; i < compLen; i++)
        {
                if (i == compLen - 1 || (s >= concat + strComp[i] && s < concat + strComp[i + 1]))
                {
                        retArray[retIdx] = strComp[i];
                        retIdx++;
                        concat = concat + strComp[i];
                        break;
                }
        }
        failsafe++;
}
while (concat != s && failsafe < failsafeLimit);

return retArray;
```


----------



## WindcryMusic (Apr 17, 2018)

pmcrockett said:


> The code is actually pretty simple and ends up not even needing recursion (which is just as well, because I'm not sure whether Lemur _can_ call functions recursively). Paste the following code into a function named _stringtoarray(s)_ and set its execution to manual. Like the comment header says, the only real limitation is that it can't deal with _'_ and _"_ characters because these define strings in the code and I can't find any info on whether Lemur has escape sequences that let you include them in the strings themselves.
> 
> ```
> /*
> ...



Very impressive! I'll definitely want to hang onto this in case the need re-arises at some point ... thanks!

FYI, I just did a quick experiment out of curiosity, and while Lemur does technically seem to perform recursion, there seems to be something wrong with how it works, like it reuses the 1st call's parameter value on each iteration, or something like that (difficult to tell without any debugging facilities). So I'm still not sure it is actually a useful option.


----------



## Shad0wLandsUK (May 29, 2018)

I know this is about the Lemur Forum, but please forgive me for posting here since I am due to be up for work in a few hours.
I have been trying to get my Lemur on iPad Air to work in Windows with Composer Tools Pro, but I just cannot figure out how on earth you setup the MIDI ports???

I purchased Cubase Pro the yesterday as I wanted to see what it is like to work in on Windows instead of my Mac Pro (which it does not seem to handle well)

Why does it suck so much to work with MIDI in Windows?
I have Studiomux as I thought that would solve it, but this journey is a maze...and I have achieved nothing in the whole day of trying this now 

Any Gurus out there...please I would love some insight


----------



## DanielBrunelle (May 29, 2018)

Shad0wLandsUK said:


> I know this is about the Lemur Forum, but please forgive me for posting here since I am due to be up for work in a few hours.
> I have been trying to get my Lemur on iPad Air to work in Windows with Composer Tools Pro, but I just cannot figure out how on earth you setup the MIDI ports???
> 
> I purchased Cubase Pro the yesterday as I wanted to see what it is like to work in on Windows instead of my Mac Pro (which it does not seem to handle well)
> ...




With all due respect, this isn’t the place for technical set up help. There are loads of tutorials for both OS’s and all the DAWs. Search these forums, liines YouTube uploads and midikinetics’ setup instruction. 

It’s important to keep threads focused. I appreciate your understanding.


----------



## Aesthetic (Aug 12, 2018)

DanielBrunelle said:


> With all due respect, this isn’t the place for technical set up help. There are loads of tutorials for both OS’s and all the DAWs. Search these forums, liines YouTube uploads and midikinetics’ setup instruction.
> 
> It’s important to keep threads focused. I appreciate your understanding.



Soooooooo -- I can't speak for anyone else here, but I found this thread because I'm a brand new Lemur user (_as of an hour ago_) and already feeling extremely concerned to discover (_while trying to figure out how to set everything up_) that their forums have apparently now been down for at least a half year.

That's far more than an 'oversight'. You suggested this isn't the place for technical setup help, and yet their forums are down (_which is where they instruct people like me to go FIND those tutorials and templates_), sooooo... :-\

Well this sucks.

[EDIT]: It should also be noted that I attempted to e-mail [email protected] and the e-mail bounced back. Is dev on this app dead? Seriously considering returning it. :-( Bummed.


----------



## Piano Pete (Aug 12, 2018)

Aesthetic, from my understanding, there are plenty of alternative apps that have popped up. So if you are concerned regarding the support from Lemur, I do not use it so I cannot comment on that dev: do not fret. It may be best to return it for something that is actively being developed, if that is the case with that project.

Metagrid and a few others are actively being developed with decent user populations from VIcontrol and elsewhere. Midikinetics (?) is an option as well. TouchOSC pops up a lot. There are others I have seen on this forum, but I appear to have lost those bookmarks. Search Touchosc, Metagrid, alternatives etc. and you'll find plenty of threads on all those subjects.

Shadowlands, are you having issues connecting the midi from your ipad to your DAW on windows? Based on your post, I cannot ascertain where you are actually having issues. Especially over text, it is hard to know where your problem--and what it actually is--stems from.

If you are talking about being able to connect your devices together, you probably need some form of RTPmidi software. Windows does not natively support this like apple does. Luckily, rtpMIDI is free. There are paid alternatives, but I have never used them.


----------



## Aesthetic (Aug 12, 2018)

Piano Pete said:


> Aesthetic, from my understanding, there are plenty of alternative apps that have popped up. So if you are concerned regarding the support from Lemur, I do not use it so I cannot comment on that dev: do not fret. It may be best to return it for something that is actively being developed, if that is the case with that project.
> 
> Metagrid and a few others are actively being developed with decent user populations from VIcontrol and elsewhere. Midikinetics (?) is an option as well. TouchOSC pops up a lot. There are others I have seen on this forum, but I appear to have lost those bookmarks. Search Touchosc, Metagrid, alternatives etc. and you'll find plenty of threads on all those subjects.
> 
> ...



Right on! Thank you so much for the other recommendations. I'll start checking them out!

(Since posting that reply, I've actually figured out that the latest version of Lemur has a lot of weird visual bugs with OSX High Sierra. The only way I got a lot of it to work was, as weird as this is going to sound, unplugging my external monitor. Even then it was pretty glitchy. I found someone else mentioning the same issue in another forum from last December -- apparently still not resolved.)


----------



## MLP Aarts (Sep 25, 2018)

I'm running Lemur on an iPad with Osculator and Keyboard Maestro for controlling Logic Pro X in Sierra.

With one touch I can insert a track with a particular soft synth or effect plugin. Very time-saving.
The template also includes a button for toggling all master inserts on or off, set the volume fader at a specific level (0db, -3dB, etc.) and many other things that would otherwise require a lot of clicks and mouse movements.

It would be great if Lemur had some extra string functions. I tried implementing a 'search track by name' function, but the limited string parsing functions kept me from continuing.


----------



## WindcryMusic (Sep 25, 2018)

MLP Aarts said:


> I'm running Lemur on an iPad with Osculator and Keyboard Maestro for controlling Logic Pro X in Sierra.
> 
> With one touch I can insert a track with a particular soft synth or effect plugin. Very time-saving.



Sounds great! I'm already using Osculator, but I don't know of a way to have it set up a track with a specific plugin. Maybe you are using Keyboard Maestro to help with that? I'll have to look into that one.

It continues to be a cause for increasing concern for me that the Lemur forum and tech support emails appear to be gone. I'm very concerned that a future version of iOS will break Lemur, and as a result am thinking that, unless something new is heard from Liine at some point, I'd better try to keep my studio iPad at iOS 11 in perpetuity, something which Apple doesn't make easy with its constant downloading and prompting to update iOS versions ... one absent-minded button touch someday and suddenly the Lemur controls for my studio could be gone forever.


----------



## MLP Aarts (Sep 25, 2018)

WindcryMusic said:


> Sounds great! I'm already using Osculator, but I don't know of a way to have it set up a track with a specific plugin. Maybe you are using Keyboard Maestro to help with that? I'll have to look into that one.



Keyboard Maestro is great. You can trigger anything with anything. Lemur sends some MIDI messages that trigger mouse and keyboard actions. When I hoover over an insert slot, I can press 'RenComp' and it navigates through submenus and selects the plugin. This take about half a second.


----------



## pmcrockett (Sep 25, 2018)

MLP Aarts said:


> It would be great if Lemur had some extra string functions. I tried implementing a 'search track by name' function, but the limited string parsing functions kept me from continuing.


What string functions in particular are you interested in implementing? As posted earlier in the thread, I've managed to get a basic character-by-character string parser working. Most string operations should be programmable using this parser as the foundation.


----------



## MLP Aarts (Sep 26, 2018)

pmcrockett said:


> What string functions in particular are you interested in implementing? As posted earlier in the thread, I've managed to get a basic character-by-character string parser working. Most string operations should be programmable using this parser as the foundation.



What I would need is an array containing track name and track id. A search by track name should give me the corresponding track ID and select that track in Logic. Auto complete would be great, showing a dynamic list with all tracks that start with the search string..


----------



## pmcrockett (Sep 26, 2018)

MLP Aarts said:


> What I would need is an array containing track name and track id. A search by track name should give me the corresponding track ID and select that track in Logic. Auto complete would be great, showing a dynamic list with all tracks that start with the search string..


I think this would be possible. Do you already have a way of accepting user text entry?


----------



## MLP Aarts (Sep 26, 2018)

I think I can use Keyboard Maestro to enter some kind of 'search mode' so my key strokes are translated to MIDI notes to Lemur, and have an array of note to keystroke.


----------



## pmcrockett (Sep 26, 2018)

Okay, here are the necessary functions to perform a search within a string. If you set all of these as project scripts, you'll be able to use _findInStr(s1,s2)_ to locate string _s2_'s position within string _s1_. The function's return is _s2_'s position counting from 0 within _s1_, or -1 if _s2_ isn't found. The search is case sensitive; if you want case insensitivity, convert both _s1_ and _s2_ to the same case using _toUpper(s)_ or _toLower(s)_.

All of these scripts should be set to manual execution.


charToNum(c)

```
/*
P.M. Crockett, Sept. 26, 2018

This function accepts a single ASCII character and returns its decimal equivalent. Lemur's arraytostring()
function needs the array elements to be decimal numbers rather than ASCII characters, so charToNum() can be
used to format vectors full of ASCII characters for string conversion.
*/
decl strComp = {' ','!','#','$','%','&','(',')','*','+',',','-','.','/','0','1','2','3',
'4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H',
'I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\',']',
'^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r',
's','t','u','v','w','x','y','z','{','|','}','~'};
decl asciiMin = 32;
decl retVal = asciiMin;
decl offset = asciiMin;
decl i;
for (i = 0; i < sizeof(strComp); i++)
{
        //Increment offset to skip ASCII characters that we can't display
        if (i == 2 || i == 6) offset = offset + 1;
        if (c == strComp[i])
        {
                retVal = i + offset;
                break;
        }
}
return retVal;
```


findInStr(s1,s2)

```
/*
P.M. Crockett, Sept. 26, 2018

This function returns the first location of string s2 within string s1. If s2 is not within s1,
-1 is returned. The search is case sensitive. If you want case insensitivity, convert both search
terms using toUpper() or toLower().
*/
decl s1Vector = strToNumVector(s1);
decl s2Vector = strToNumVector(s2);
decl matchIdx = -1;
decl i;
decl j;

for (i = 0; i < sizeof(s1Vector); i++)
{
        for (j = 0; j < sizeof(s2Vector); j++)
        {
                if (s2Vector[j] != s1Vector[i + j]) break;
                else if (j == sizeof(s2Vector) - 1) matchIdx = i;
        }
        if (matchIdx != -1) break;
}
return matchIdx;
```


strToCharVector(s)

```
/*
P.M. Crockett, Sept. 26, 2018

This function formats a string as individual characters in a vector. It does not deal with
ASCII control codes, and I don't know if/how Lemur does escape codes, so it cannot parse
single or double quote marks.
*/
decl strComp = {' ','!','#','$','%','&','(',')','*','+',',','-','.','/','0','1','2','3',
'4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H',
'I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\',']',
'^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r',
's','t','u','v','w','x','y','z','{','|','}','~'};
decl compLen = sizeof(strComp);
decl retArray;
decl retIdx = 0;
decl concat = '';
decl failsafe = 0;
decl failsafeLimit = 9999;
decl i;

do
{
        for (i = 0; i < compLen; i++)
        {
                if (i == compLen - 1 || (s >= concat + strComp[i] && s < concat + strComp[i + 1]))
                {
                        retArray[retIdx] = strComp[i];
                        retIdx++;
                        concat = concat + strComp[i];
                        break;
                }
        }
        failsafe++;
}
while (concat != s && failsafe < failsafeLimit);

return retArray;
```


strToNumVector(s)

```
/*
P.M. Crockett, Sept. 26, 2018

This function is identical to strToCharVector() except that the returned vector contains the number
values of the string's ASCII characters rather than the characters themselves. This allows for easy
conversion back to a string using arraytostring(), which expects these number values.
*/
decl i;
decl sVector = strToCharVector(s);

for (i = 0; i < sizeof(sVector); i++) sVector[i] = charToNum(sVector[i]);
return sVector;
```


toLower(s)

```
/*
P.M. Crockett, Sept. 26, 2018

Converts a string to lower case.
*/
decl sVector = strToNumVector(s);
decl i;

for (i = 0; i < sizeof(sVector); i++)
{
        if (sVector[i] >= 65 && sVector[i] <= 90) sVector[i] = sVector[i] + 32;
}
return arraytostring(sVector);
```


toUpper(s)

```
/*
P.M. Crockett, Sept. 26, 2018

Converts a string to upper case.
*/
decl sVector = strToNumVector(s);
decl i;

for (i = 0; i < sizeof(sVector); i++)
{
        if (sVector[i] >= 97 && sVector[i] <= 122) sVector[i] = sVector[i] - 32;
}
return arraytostring(sVector);
```


----------



## MLP Aarts (Sep 26, 2018)

Thanks, I'm gonna try this out!

Guess I'll be calling findInStr for the array of tracknames each time a new key is entered, so 'b' would give me all tracknames starting with 'b', and 'ba' would give me only 'bass' (if that's the only matching trackname).

No idea how fast Lemur is processing iterative functions, guess I'll find out soon enough..


----------



## pmcrockett (Sep 26, 2018)

Right, you'll want to loop through the track name array and run _findInStr()_ for each track name every time the user input is updated, keep track of which track names give a return of 0 (meaning the track name begins with the user input) or a return of >= 0 (meaning the track name contains the user input), and then list those track names in a way that lets the user select among them. So something like:


```
if (input != oldInput)
{
        //Delete everything in autocomplete list
        for (i = 0; i < sizeof(trackNames); i++)
        {
                if (findInStr(trackNames[i], input) == 0)
                {
                        //Add trackNames[i] to autocomplete list
                }

        }
}
```

There shouldn't be any noticeable lag; in my experience, Lemur is reasonably speedy at everything except graphics.

Also note that Lemur's arrays are limited to 256 elements, so you'll run into problems if your track list is longer than that.


----------



## Vadium (Dec 14, 2018)

robgb said:


> I use TouchOSC in conjunction with @tack's reaticulate, so the articulation setup changes depending on which track I choose.



Hi! Is there examples how to setup these keyswitches in TouchOSC?


----------



## chimuelo (Dec 14, 2018)

stigc56 said:


> If you imagine 100 different instruments in Cubase or Logic. Everytime you select a track with one of these instruments, you can have your Ipad mirror the correct set of articulations. Imagine to accomplish this in an app where you have to create a *separate* "scene" for each set, that's a lot of work. In Lemur you use the same "scene", and just change the text according to the set you selected. Furthermore it's possible, to create these articulation sets in excel and via a macro create both the VST map, articulation set (Cubase & Logic) and the all variables for Lemur.
> Mihkel Zilmer and Marco Di Stefano has created videos that show how to do, and I will try to create a video showing Excel doing the hard work.



I’m interested in seeing if Lemur can add anything to my live performances.
But I’ve got access to 4 Scenes, each with 4 banks of 9 buttons which I’ve never needed as that’s 148 articulations.
So some are automated drawbar (Hammond B3) combos, upper C3 Vibrato, etc.

I’ve got so many USB Input/Output maps I could easily add Editors and iPads.
Is this forum a good place to learn Lemur and study it’s resources?


----------



## robgb (Dec 14, 2018)

Vadium said:


> Hi! Is there examples how to setup these keyswitches in TouchOSC?


You can find everything you need here:
http://reaticulate.com/


----------



## chimuelo (Dec 14, 2018)

robgb said:


> You can find everything you need here:
> http://reaticulate.com/



This is most helpful as I’m considering Reaper as my live host sometime in 2019.
I’m hearing that’s its very efficient when each Kontakt instrument gets its own instance. 
Also can create a Hybrid Mixer for complete MIDI Control.
I’ve given up trying to get answers from CueMix/MOTU, UAD Console, RME Total Mix and LynxStudio’ FPGA Based “Hardware” Mixer.
I’m still shocked UAD Plug Ins don’t have MIDI....£]~\_]£<~{.???.?


----------



## Vadium (Dec 15, 2018)

robgb said:


> You can find everything you need here:


not everything. For example, there is not info about 256 character limit for text in Lemur expression. So, some people make a patch with abbreviated articulation names, etc.. I am interesting what is easy way to make a Lemur or TouchOSC patch for couple instruments with big list of articulations (for example, VSL organ has about 100 stops). What object is better - separate buttons or multiple switches (i like a Radio button mode, when if you select one articulation, corresponding button is still highlited after you stop press it, but I not see how to make this mode with separate buttons, for me it possible only with multiple switches)


----------



## robgb (Dec 15, 2018)

Vadium said:


> not everything. For example, there is not info about 256 character limit for text in Lemur expression. So, some people make a patch with abbreviated articulation names, etc.. I am interesting what is easy way to make a Lemur or TouchOSC patch for couple instruments with big list of articulations (for example, VSL organ has about 100 stops). What object is better - separate buttons or multiple switches (i like a Radio button mode, when if you select one articulation, corresponding button is still highlited after you stop press it, but I not see how to make this mode with separate buttons, for me it possible only with multiple switches)


My suggestion is that you talk to @tack about this. He created and coded Reaticulate (for which I am eternally grateful) and is active on this forum.


----------



## tack (Dec 15, 2018)

Unfortunately I'm not familiar with Lemur, but given the design of Reaticulate I'm not sure it's necessary. The idea is that you pick some CC to use to activate articulations (I happen to use CC119) and then bind that CC to one of the "Activate articulations by CC" actions. Then if you want to trigger the articulation with program 42, you send this CC value 42 to one of MIDI devices you have Reaper configured to listen on for control events.

Articulation buttons in your TouchOSC template just need to send out CC119 according to how you've assigned the articulation program numbers for your Reaticulate banks.


----------



## robgb (Dec 15, 2018)

tack said:


> Unfortunately I'm not familiar with Lemur, but given the design of Reaticulate I'm not sure it's necessary. The idea is that you pick some CC to use to activate articulations (I happen to use CC119) and then bind that CC to one of the "Activate articulations by CC" actions. Then if you want to trigger the articulation with program 42, you send this CC value 42 to one of MIDI devices you have Reaper configured to listen on for control events.
> 
> Articulation buttons in your TouchOSC template just need to send out CC119 according to how you've assigned the articulation program numbers for your Reaticulate banks.


I've actually found that life is so much easier if you pick up a copy of OSCulator and use it in conjunction with TouchOSC (or whatever) and Reaticulate. Gives you much more flexibility and has an interface that won't drive you nuts (TouchOSC).


----------



## tack (Dec 15, 2018)

Unfortunately OSCulator is Mac only :(


----------



## robgb (Dec 15, 2018)

tack said:


> Unfortunately OSCulator is Mac only :(


Well, we should all be using Macs anyway...


----------



## robgb (Dec 15, 2018)

For Windows users, maybe try this?

https://www.bome.com/products/miditranslator


----------



## tack (Dec 15, 2018)

I use the hell out of Bome MIDI Translator -- it's great! -- but I don't believe it supports OSC.

But FWIW, I do put Bome between all my controllers and my DAW and do all kinds of crazy translations providing custom functionality, including for articulations. But it's still ultimately translating MIDI to MIDI.


----------



## tack (Dec 15, 2018)

@robgb can you expand a bit on how you're using OSCulator?


----------



## robgb (Dec 15, 2018)

tack said:


> @robgb can you expand a bit on how you're using OSCulator?


I just use it as a Bridge, as it's much more flexible than TouchOSC's Bridge. When I use the TouchOSC editor, I just create buttons and sliders, and don't assign any specific information to them other than a name, with OSC auto checked. I then open it up on my tablet and the info is then transmitted to OSCulator, comes up as say /ARTICULATIONS/TREMOLO (the page and button name in TouchOSC) and in OSCulator I simply assign that to Midi Prg 12 or however I've set it up in Reaticulate. For CC sliders I assign it to a Midi CC plus whatever value is needed. This allows me to change things on the fly, if I need to, without having to open up TouchOSC, change it there, download it to my tablet, etc. Takes me about two seconds to make a change in OSCulator


----------



## tack (Dec 15, 2018)

robgb said:


> I then open it up on my tablet and the info is then transmitted to OSCulator, comes up as say /ARTICULATIONS/TREMOLO (the page and button name in TouchOSC) and in OSCulator I simply assign that to Midi Prg 12 or however I've set it up in Reaticulate.


Makes sense. I can definitely see the value in shimming a translation layer between TouchOSC and Reaper, especially where OSC is involved.

It'd be interesting to support OSC directly with Reaticulate. I think it's possible given the current state of Reaper's API. But in that case, I think we'd need some standard naming for articulations, much like the (attempted) standardized program numbers for common articulations (based on UACC v2). Alternatively (or by default, absent an alias), I could do a substring match such that /articulations/tremolo will activate the articulation that most closely matches the text "tremolo".


----------



## robgb (Dec 15, 2018)

tack said:


> Makes sense. I can definitely see the value in shimming a translation layer between TouchOSC and Reaper, especially where OSC is involved.
> 
> It'd be interesting to support OSC directly with Reaticulate. I think it's possible given the current state of Reaper's API. But in that case, I think we'd need some standard naming for articulations, much like the (attempted) standardized program numbers for common articulations (based on UACC v2). Alternatively (or by default, absent an alias), I could do a substring match such that /articulations/tremolo will activate the articulation that most closely matches the text "tremolo".


That would be nice, but, honestly, I love the way it's working for me right now and figure don't mess with success.  I'm in the midst of setting up the Amadeus library and things are working beautifully. You truly are a coding wizard.


----------



## tack (Dec 15, 2018)

robgb said:


> I'm in the midst of setting up the Amadeus library and things are working beautifully. You truly are a coding wizard.


Thanks! Always great to hear when things go well. Normally I mainly hear about bugs.


----------



## robgb (Dec 17, 2018)

tack said:


> Thanks! Always great to hear when things go well. Normally I mainly hear about bugs.


By the way, is there a way to control host automation in Kontakt with Reaticulate?


----------

