JazzMutant''s Lemur is a touch-screen controller that allows you to create multiple highly customizable interfaces. The many available interface elements can model the physical properties of natural forces such as friction and gravity.
Using a mouse to manipulate the many buttons and knobs in today's DAWs can get tiresome and painful. Though most external control surfaces give you a lot of controls to work with, and perhaps even some programmability, JazzMutant's new Lemur multitouch control surface takes the concept of remote control to a new level.
The Lemur is a touch-screen controller with a programmable interface that interacts with the destination software via Open Sound Control commands (OSC; see www.opensoundcontrol.org/about). The included JazzEditor software (Mac and Windows, with Linux “on the way”) allows the user to create a colorful, configurable interface using various graphical objects. The software is also used to set up the parameters for communication with the Lemur itself. The result is an extremely versatile piece of hardware that is way beyond your average knobs-and-dials MIDI controller, though at an equally beyond-average price: at $2,495, the unit probably costs the same as the entire computer system you might use it with.
At Your Fingertips
The Lemur is a flat device that has a 12-inch multitouch-sensitive LCD screen and an overall footprint the size of a large laptop. It contains its own processor for graphics and mathematics, so it uses no host CPU power. It has four lighted buttons at the top right corner: the Settings button accesses communication settings, the Interface List button displays thumbnails of all available interfaces, and the forward and back buttons scroll through the interfaces. The front side is curved for comfortable manipulation, and around back are the power switch, DC input, and an Ethernet port, through which the Lemur communicates with the outside world.
OSC has several advantages over MIDI, most notably 32-bit precision and extremely low-to-nonexistent latency. (Some speculate that OSC will one day replace MIDI.) Only a few commercial programs currently employ OSC directly, the most ubiquitous being Reaktor (and a few other Native Instruments applications) and Cycling '74's Max/MSP and Jitter. Several popular noncommercial programs also use OSC, including SuperCollider, AudioMulch, and Miller Puckette's Pd.
The Lemur can also internally map its own OSC messages to MIDI, so that nearly any program can use it as a controller. For example, you could use the Lemur's Pad object to send Note Ons to trigger cells in a non-OSC-compatible application like Ableton Live. When the output is mapped to MIDI, the Lemur shows up as a virtual MIDI input port in the target software. Of course, the output resolution is then limited to the depth of the MIDI Control Change message you're using.
Getting the Lemur to communicate with your software is trickier than making a USB or FireWire connection, but once the idea of using Ethernet cables and IP addresses sets in, you're halfway there. Fortunately, the documentation contains step-by-step instructions for many routing configurations and is thorough and easy to read.
When you plug the unit into your computer's Ethernet port, the Lemur will assign itself a network address. The Settings button at the top of the front panel accesses the Lemur's Setup window in case you want to assign a specific address to it. The corresponding button at the top right of the JazzEditor software shows you the Lemur's address as well as your host computer's IP address, which you then have to make sure is the target address. Next, you specify the TCP/UDP port, usually port 8000 in, and you're on your way.
Initially I had frustrating problems with Lemur-to-computer communication. The main problem was the Lemur's inability to gain a network address dynamically. But this was fixed within a week with updated firmware and helpful suggestions from the manufacturer. With the new firmware installed, I plugged the Lemur into my router; it acquired its own network address and then became accessible to any networked computer in my studio. Because the Lemur appears as a networked device, many Lemur controllers could exist on the same network, or one Lemur could conceivably control many computers.
The real work with the Lemur starts with making your own graphical interfaces. This process involves choosing from eight interface objects: Fader, Monitor, MultiBall, MultiSlider, Pads, RingArea, SignalScope, and Switches (other interface elements are in the works, according to the manufacturer). You can freely position objects anywhere on the screen and easily change their sizes, and you can have up to 1,024 objects and 1,024 mathematical expressions (for scaling or converting data, for example) in one project (see Fig. 1). You can make either horizontal or vertical faders, and you can configure the Monitor object to monitor other objects' values (for example, the values of MIDI notes being sent from an application). You can also monitor any variables you might be using. The Lemur comes with one variable already set: Time, which is based on its built-in clock. The Time variable allows the Lemur to display and transmit timecode, and you could map the values of some variable to Time so that the values would increment or decrement in sync with the clock.
MultiBall is an x-y area controller that can have up to ten controllable balls. The balls can remain permanently visible or show up only when you touch the pad, and the Lemur can discretely recognize up to all ten spots at once. When you place your fingers on the MultiBall object area, the ball nearest the spot you touch becomes the one that you control. Imagine controlling the frequencies and volumes of ten separate synthesizer voices with your ten fingers simultaneously!
FIG. 1: Lemur''s multitouch capabilities let you control many different parameters of your software at once. Its internal clock feature allows controller data to be transmitted in sync with real time or with the tempo of your music.
A RingArea has one ball and an attraction point, and you can set a value for the attraction point that the ball will always move back to. For example, the attraction point could be set to play back a sample at normal speed, and you could then use the movement of the ball to “scratch” the sample like a turntable. You can arrange the Pads and Switches into multiple rows and columns, and each control can transmit its range of values under enveloped control.
Beyond the ability to make your own custom interfaces, what's really amazing is the type of control you have over the interface objects' visual and output behavior. Objects can be set to mimic various physical properties, such as the behavior of a mass spring. You can apply the properties of friction and attraction to an object's behavior, or use the amount of area that your finger covers (that is, contact-point size or z-axis control) to make touching the screen feel more pressure sensitive. Adding a small amount of physical behavior can make a world of difference, not only in tactile perception, but also in the way a parameter responds: smooth interpolation of a control makes volume or frequency feel much more organic.
The addition of mass-spring behavior adds previously unheard-of possibilities for, say, controlling filter cutoff frequency. Imagine that instead of simply moving a knob or fader to set filter resonance and cutoff frequency, you have a ball in a two-dimensional grid, where one axis is set to frequency and the other to resonance level. If you assign a higher attraction value and lower friction value to the ball's response settings, the Lemur will follow your finger on the screen like a living object, circling in on the values you are moving through and transmitting. (Because of its multitouch capabilities, you could control many such objects at the same time.) Translated into an audio response, this makes for extremely natural-sounding results.
Because your interface designs are saved as XML files, you can transfer an interface file to a text editor and edit it. A single file can contain multiple interface arrangements, all of which are accessible from the JazzEditor software's Project browser or via the Interface List button at the top right of the Lemur itself. This allows you to easily switch among all the interfaces you have saved.
Keep in mind that for every patch in Max/MSP or Reaktor you want to control, you'll have to spend an additional amount of time creating a corresponding patch for the Lemur. Interfaces are highly individualized to the parameters of a specific patch, so some are going to be easy, and some not. And even after you've finished the design stage, you'll need to spend additional time ensuring that the target software can handle what you're sending it (see the sidebar “Making Connections” for details of communication problems related to specific applications).
The Lemur feels good. Perhaps not fuzzy like a living lemur, but the touch surface has a slight grid pattern, so running your fingers over it provides very, very slight resistance, making it just perceptible. This feeling, combined with the visual feedback from the LCD touch screen, makes it seem as if the objects are really responsive to pressure, despite a lack of actual pressure sensitivity. The visual response of the unit depends on the physical behavior you have set for an object; faders may move exactly with your fingertip or follow it only slightly. (Note that your host audio software will follow the object's motion, not the movement of your finger.)
Using the Lemur as a control surface in live performance feels much more like playing an actual instrument than simply turning knobs or moving faders on a control surface. In the studio, it's easy to make banks of sliders to control a mix and to touch and control many sliders at once. With the added ability to program a softer interpolation between touched points, large adjustments in a mix can be rendered smoothly.
The Lemur is easily my favorite hardware controller, and I hope it becomes popular (especially so that the price will drop). It seems to have a few problems that still need sorting out, including infrequent freezes of both its hardware and its software, and there is certainly a learning curve. But if you're aching to get away from your usual keyboard-and-knobs controller, and you want to take a step into the future, this is a great place to start.
Jonathan E. Segel is a musician and composer of various types of music. Learn more atwww.magneticmotorworks.com.
Parsing the OSC messages in Max/MSP, SuperCollider, or Reaktor is, for the most part, fairly easy. In Max you use the provided udpreceive object, then route the messages by name and send their respective values to the corresponding object in the patch. Max and SuperCollider will look for OSC activity by port, but in Reaktor you must set the remote controller's information (name, IP address, and port number) in the global OSC settings panel. Sometimes, however, I noticed that Reaktor couldn't detect the Lemur, especially when starting a new patch. Relaunching Reaktor and the JazzEditor software usually solved that problem.
Simpler Reaktor modules have OSC input listed in their Properties menu already (knobs and faders, for example). For others, you have to get the message in and route it somehow. In attempting this I encountered a few snags. For example, whenever an object is created in the Lemur interface, its name shows up in the JazzEditor's Project browser window with a little checkbox that is not enabled. In order for the object's data to be sent, you must remember to enable the object in the Project window. Also, every time I created a Lemur object, I needed to bring Reaktor into focus and move the object on the Lemur to get Lemur to show up in the list of available inputs for OSC control in the desired Reaktor module's properties window.
A bigger problem was getting Reaktor to parse OSC messages with multiple arguments. In Max/MSP or Jitter, this is no problem: a message comes in by name, followed by any number of arguments. For example, if you had a MultiBall object with five balls, the x-axis movement (horizontal) would send “/multiball.x,” followed by five numbers corresponding to the balls' positions. It would also send a set of messages for the corresponding y-axis (vertical) and z-axis (contact-point size) movements.
In Reaktor, however, it is extremely easy to route an OSC message with one argument, but messages with multiple arguments proved extremely difficult. Even a set of two radio buttons weren't understood by a Reaktor panel button when set in radio mode. Trying to send Lemur MultiBall or MultiSlider info was impossible; an attempt to use Reaktor's OSCReceive module to parse multiple-argument messages crashed the application. A few emails with Native Instruments' tech support have confirmed that its OSCReceive module is faulty, at least in the Mac OS.
One way around this is to assign each individual multislider bar to a MIDI controller within the Lemur, which gets the control information to the application, though at a much-reduced resolution. MIDI mapping to multiple controllers is done automatically; when you set the controller number and assign its out value to be a multiple-argument object, the Lemur maps each argument to the next available controller number.
LEMUR SPECIFICATIONS Display Size 12" Display Resolution 800 × 600 pixels Display Type LCD Computer Interface Ethernet (100Base-T) Power Requirements 12 VAC external, 100-240 VAC Dimensions 14.5" (W) × 1.2" (H) × 11.6" (D) Weight 6.5 lbs.
PROS: Amazing response. Infinitely configurable. Beautiful interface. Instant visual feedback. It's much better than knobs or sliders.
CONS: Expensive. Software still in development. Not all bugs have been ironed out yet. Few commercial music programs support the Open Sound Control communications protocol.
EASE OF USE 3
JazzMutant/Cycling '74 (distributor)