Liine Lemur for iPad

main mixer interface

main mixer interface

I’ve spent the past week learning the lemur workflow and working on templates, and made a template to control Numerology, Audiomulch, and Reaktor.  I replaced two midi controllers with Lemur, and now control everything with my iPad and Novation Launchpad, which i’ve found to be an elegant and flexible solution.  I can do all my sequencing from the launchpad, and the tweaking with Lemur.

Learning Lemur and implementing my live template for it was difficult at first.  Lemur is a beast of a program, with the depth that comes from software that has been around since 2005.  It has the flexibility and power to do almost anything imaginable short of making sounds.  The flexibility comes at the cost of ease of use, but I’m finding it to worth the effort.  Any interface object can send and receive an arbitrary number of different kinds of OSC or MIDI messages, execute its own scripts, use global or local variables, and reference and control other objects, including the visual elements, making very dynamic interface work possible.

editor for my drum effects and the delay effect

editor for my drum effects and the delay effect

Scripting in lemur is fairly straightforward, and   Learning how to use it is essential to doing anything interesting with lemur, and somewhat necessary for some of the basic stuff.  Simple, static templates (like in touchOSC) can be made without any scripting, but the power of the scripting is what makes Lemur interesting, but difficult.  It took me about a week of using it a little each day to get a feel for it and get reasonably fast at using it.   Working on lemur templates needs to be done on a computer.  The iPad only editing is fairly good, but crashes, and is much more limited than the desktop editor.  Also, setup can be a hassle.  Entering the IP address of a new computer each session is annoying, especially if you are using an ad-hoc IP that changes every time you reboot.

Here are a few tips for anyone else jumping in and getting started.  I’m not an expert coder, but hopefully this is helpful for some of you.  I usually avoid reading manuals except for quick reference, but using Lemur requires a good cup of coffee and a couple hours for reading. Here’s some tips if you’re just getting started with lemur–some basics to get the interface working and using the multi-objects and arrays.

my metasurface control panel for audiomulch

my metasurface control panel for audiomulch

The almighty X

every object has its own variables, and the default variable for any single interface object is x.  Some objects have more variables.  For instance, creating a variable called “exponential” for a knob, and defining it as  x*x will give you an exponential curve.  pow(x,2) will return the same result.

the firstof(x) function.  This function is essential for using the ‘switches’ object in radio mode, and returns the index number of the most recently pressed switch button.

“multi” labels and colors.

Using the multi label function requires writing a script for your object, and using the setattribute function.  For instance, to label a switches object, I would create a script called names() and use this line of code:


note the use of quotation marks around the name of the attribute to be set from the muteSwitches object, as well as the individual titles for the switches.  Also, make sure to turn the ‘multi labels’ parameter is switched on in the object properties panel.

using the multi colors option is easier: enable the multi color option in the object properties dialog, and in the ‘light=‘ field, enter an array, formatted like so:



Vectors and Arrays

Some lemur objects output an array of values, including the “multi” objects and others.  Arrays of values can also be stored in almost any object and modified with scripts.  This is handy from a programming perspective but not all OSC clients (Numerology and Reaktor, in my case) can handle these array messages easily.  These arrays are easy to handle when making MIDI assignments, because a range of CC values can be set in the MIDI assignment dialog:


However, for an array of OSC values, sometimes an individual variable needs to be made for each element and then connected in the OSC mapping dialog.  You can see in the following picture how each variable is assigned to an index from the x array, such as x[0], x[1] etc.  The same idea applies to multi slider objects and others as well.



Expressions in Lemur can hold single values or multiple values.   For instance, to store a few values in an array, here is some example code.  First, I made an expression called scene1Array, then wrote the script ‘storeScene1().’ This script stores the firstof() value of 5 different switches objects set to radio mode, which I use to store scene presets for Numerology.

scene1Array[0] = firstof(Presets1.x);

scene1Array[1] = firstof(Presets2.x);

scene1Array[2] = firstof(Presets3.x);

scene1Array[3] = firstof(Presets4.x);

scene1Array[4] = firstof(Presets5.x);

scene1Array[5] = firstof(Presets6.x);


I would recall the values to the switches objects by using this code:

Presets1.x[scene1Array[0]] = 1;

Presets2.x[scene1Array[1]] = 1;

Presets3.x[scene1Array[2]] = 1;

Presets4.x[scene1Array[3]] = 1;

Presets5.x[scene1Array[4]] = 1;

Presets6.x[scene1Array[5]] = 1;


Scripting Examples

A few examples of scripts should be helpful; It took me a little while to figure out the proper syntax for some simple things.

This is a script called ‘resetParams()’ that I use to reset a few values.


//set the values for two different sliders

Feed.x = 0;

HPF.x = 0.2;

//set the values for two different multi slider objects.

FiltLfo.x[0] = 0.15;

FiltLfo.x[1] = 0;

FiltLfo2.x[0] = 0.15;

FiltLfo2.x[1] = 0;


This is a script I use to set random values for all the sliders in a multi slider object named ‘probabilities’, and also unmute all my drum channels:

decl i;

decl r;

for(i=0; i<8; i++){

r = rand();

probabilities.x[i] = r;

drumMutes.x[i] = 0;



This script sets the values in a multi fader individually, while adding a random amount to each one, and then turns off all the buttons in a switches object called ‘drumMutes.’

probabilities.x[0] = 0.8 + rand()*0.2;

probabilities.x[1] = 0.6 + rand()*0.2;

probabilities.x[2] = 0.4 + rand()*0.2;

probabilities.x[3] = 0.4 + rand()*0.2;

probabilities.x[4] = 0.2 + rand()*0.2;

probabilities.x[5] = 0.2 + rand()*0.2;

probabilities.x[6] = 0.5 + rand()*0.2;

probabilities.x[7] = 0.4 + rand()*0.2;


decl i;


drumMutes.x[i] = 0;




  • September 7, 2015 - 8:54 am | Permalink

    Merely wanna remark on few general things, The website pattern is perfect, the subject matter is really fantastic : D.

  • September 28, 2015 - 1:00 pm | Permalink

    You are my inspiration , I own few web logs and sometimes run out from to post .I think this web site has got some really fantastic information for everyone. “Good advice is always certain to be ignored, but that’s no reason not to give it.” by Agatha Christie.

  • October 20, 2015 - 8:06 am | Permalink

    I have read several excellent stuff here. Certainly price bookmarking for revisiting. I wonder how so much effort you set to make such a excellent informative website.

  • November 23, 2015 - 9:02 am | Permalink

    you are truly a excellent webmaster. The web site loading velocity is amazing. It kind of feels that you’re doing any unique trick. In addition, The contents are masterpiece. you’ve done a wonderful activity in this subject!

  • November 23, 2015 - 9:04 am | Permalink

    I like this site very much, Its a real nice place to read and obtain information. “God cannot alter the past, but historians can.” by Samuel Butler.

  • December 9, 2015 - 3:02 pm | Permalink

    Just wanna input on few general things, The website design and style is perfect, the content material is rattling excellent. “To imagine is everything, to know is nothing at all.” by Anatole France.

  • December 9, 2015 - 3:05 pm | Permalink

    Good – I should definitely pronounce, impressed with your website. I had no trouble navigating through all the tabs and related information ended up being truly easy to do to access. I recently found what I hoped for before you know it in the least. Quite unusual. Is likely to appreciate it for those who add forums or something, website theme . a tones way for your client to communicate. Excellent task.

  • December 22, 2015 - 12:05 pm | Permalink

    I reckon something truly interesting about your web blog so I bookmarked .

  • December 23, 2015 - 6:15 pm | Permalink

    If the ring swings in a circular movement, the unborn kid is likely to be
    a GIRL. t ready to spend a little more time warming up the
    bottle or getting up at night, perhaps you should rethink the whole thing.
    With a pink and chocolate floral design on the
    cover, it reads, ‘You’re invited to a baby shower.

  • January 18, 2016 - 4:42 pm | Permalink

    I bookmarked this link. Thank you for good job!

  • February 22, 2016 - 12:58 pm | Permalink

    Pretty portion of content. I simply stumbled upon your blog and in accession capital to
    say that I acquire in fact enjoyed account your weblog
    posts. Anyway I’ll be subscribing in your augment
    and even I fulfillment you get entry to consistently fast.

  • May 4, 2016 - 11:28 pm | Permalink

    Thanks, I’ve recently been searching for info about this topic for a long time and yours is the greatest I’ve discovered till now. However, what in regards to the bottom line? Are you certain concerning the supply?

  • July 4, 2016 - 8:23 pm | Permalink

    excellent issues altogether, you just received a emblem new reader. What would you suggest in regards to your submit that you made a few days in the past? Any sure?

  • July 12, 2016 - 4:14 pm | Permalink

    You are my breathing in, I own few blogs and rarely run out from to post .I think this internet site contains some very good information for everyone. “Je veux que les paysans mettent la poule au pot tous les dimanches.” by King Henry IV of France.

  • July 12, 2016 - 4:15 pm | Permalink

    Very interesting subject, thanks for posting.

  • July 14, 2016 - 7:33 am | Permalink

    Usually I don’t learn article on blogs, however I would like to say that this write-up very compelled me to check out and do so! Your writing taste has been amazed me. Thanks, quite great article.

  • July 14, 2016 - 7:36 am | Permalink

    Some genuinely nice and useful info on this website, likewise I think the design contains excellent features.

  • July 22, 2016 - 12:46 pm | Permalink

    Great blog here! Also your website loads up fast! What web host are you using? Can I get your affiliate link to your host? I wish my website loaded up as fast as yours lol

  • July 22, 2016 - 12:52 pm | Permalink

    Perfectly indited subject matter, appreciate it for information .

  • August 5, 2016 - 7:24 pm | Permalink

    Your information is extremely helpful.|

  • September 15, 2016 - 8:14 am | Permalink

    rolling stones lyrics

  • December 1, 2016 - 4:49 am | Permalink

    Love the site– very user pleasant and lots to see!|

  • June 20, 2017 - 5:26 am | Permalink

    I have learned newer and more effective things through your blog post. One other thing to I have discovered is that normally, FSBO sellers may reject anyone. Remember, they would prefer to not use your companies. But if you maintain a comfortable, professional romance, offering guide and keeping contact for about four to five weeks, you will usually be able to win interviews. From there, a listing follows. Thanks

  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>