Led Feedback/talkback

Hi all,

Is there a getting started for implementing LED feedback/talkback through scripting? e.g. I’ve got a script that starts when CC-7 comes in, but I want the LED on my controlled for CC-7 to blink when that happens. I need to get better at nagivating the API :)


Most controllers accept the same range as the messages they produce themselves, in which case it would be enough to echo the message back to the source.

For example, if you receive a MIDI message that says 0xB0 0xBE 0x7F,

Assuming that we have received a CC message : first part details the channel number, second part CC number and third part, the actual value. Of course, MIDI can do much more than this, but…

…then it would likely be enough to swap the last value to 0x00 to turn it off, or 0x7F to turn it on

However, this is not the same with all MIDI devices. Some devices need special attention in some way, to support various advanced features, or to allow control of LED states at all. Hopefully, your device is either so simple you can use the approach I suggested here, or it comes with a MIDI specification?

In any case, you need to learn how to use the API to transmit MIDI messages back and forth. This document contains some examples thereof:
http://code.google.c…ippets/Midi.lua . As a bonus, this will also help you to learn how your devices works, as you can print the incoming MIDI messages to the console

As for making the button blink, you need to use a idle notifier in your script to create periodic updates

Hi, the controller is a Livid Block (looks pretty configurable and has extensive docs on mapping + LEDs). I’m dabbling with Duplex at the moment where I believe the feedback is “built-in” so maybe I don’t need to get too deep just yet, but when I do I know where to start now, thanks.


Thanks. By the way, I found this thread with some useful info at the start and end on LED feed/talk back.


Well, your original question is similar to Conner’s in that thread, but this time I carefully avoided mentioning Duplex. You seem to have discovered by yourself that Duplex might fit your purpose, which is perfect.
I’m having a bit of qualms about that other thread. Asking how to change a LED’s state can be answered in many ways, but Conner wanted to know how to use Duplex. But since Duplex is a framework which does not only handle MIDI, but also OSC, the answer is bound to be quite complex - there is a lot of abstraction in there. And I did the mistake of trying to explain all those things, coming home late at night from a concert and not being entirely sober (well, I hope you’ve found some useful information in there anyway ).

And then, a lot of programmers - both experienced and beginners - are suspicious about frameworks in the first place. A framework is there to assist, make life easier when you have a complex environment. So it does a lot of the heavy lifting, but what is actually going on? Actually, this is perfectly reasonable question to ask, and of course it’s also reasonable not to use a framework, make your own solution, whatever. But I personally consider Duplex a “light” framework (the quick port of Grid Pie to Duplex is testament to that).


While not top of the list, I still don’t have the feedback working btw - probably an issue my end, but just to check, to get feedback using Duplex do I need to do anything special?

I’ve set the midi in/out (to “block”, it’s a Livid Block), and used Livid’s software to set button 1 to send CC#70, which is happily starting a pattern in Renoise using a Duplex map (the one I’m figuring out in the other thread), but nothing lights up.

I know the LED’s on the Block work because you can test that using Block Editor (Livid’s config tool for their controllers), it’s probably something in that editor that I’m missing but thought I’d see if there was anything else obvious to try.


Let me just guess here - since it’s livid instrument, perhaps they are using a different maximum value for toggling LED on/off.
The Ohm64 (from the same company) needs 64 as the maximum value, it might be worth a shot.

So, the control-map could look something like this:

<param value="G#3" type="button" name="Button 1,8" maximum="64" minimum="0">
<param value="A-3" type="button" name="Button 2,8" maximum="64" minimum="0">
<param value="A#3" type="button" name="Button 3,8" maximum="64" minimum="0">
<param value="B-3" type="button" name="Button 4,8" maximum="64" minimum="0">
<param value="C-4" type="button" name="Button 5,8" maximum="64" minimum="0">
<param value="C#4" type="button" name="Button 6,8" maximum="64" minimum="0">
<param value="D-4" type="button" name="Button 7,8" maximum="64" minimum="0">
<param value="D#4" type="button" name="Button 8,8" maximum="64" minimum="0">

Something that might be handy here, is the Duplex “dump MIDI to console” option. It allows you to eavesdrop on the communication between the block and renoise.

I also dug up some information on the Block on their fine WIKI : link

Thanks for the dump MIDI tip – I dug a little deeper and using the editor set the “listen back” LED value correctly and now I have basic feedback working :) I say basic because at the moment the led for button 1 toggles on/off but the behaviour in Renoise for button 1 is a trigger so I need to keep trying things out but each step takes me closer to understand how this all fits together.

[EDIT] the toggle problem is probably because I mixed button types between the XML and the LUA, I need the LUA to use PushButton instead of Toggle - my bad. Will test it later. [EDIT] yup, that was it (doh!)


where you able to make Block work?
i am trying to have a simple light on/off control
for example i want the first grid button to be on to indicate the track is ON, and to turn off when the track is MUTE (or disabled).
i tried to make some sense outtta the OHM lua but i have absolutely no idea what any of it means
thanks any feedback would be awesome!

This Livid instruments WIKI has some info on how to enable/disable LED feedback:

If you are planning on using Duplex, you would want to disable the default behavior (making the block remotely controllable). Then check the minimum/maximum value of the LEDs in your editor and perhaps specify them as “pushbuttons” in the Duplex control-map (the XML file).

i actually do have a a Livid Code, which works great with Renoise without Duplex.
Block is totally different for some reason, even the software for each is different, which yeah they should be somewhat different but i would think they would kinda work the same in many ways (at least in the encoders and pushbuttons).

in any case i’ve been trying to figure this out this whole month and I’m starting to pull my hair out. I’m spending more time trying to make Gridpie work on in than actually writing music! lol

sorry to vent. i guess Lua is just more difficult than i thought.

but thanks for the info!

hey would it be possible for you to share the code you’ve written for Block?
i think i would get a better understanding of what to do if i see someone that knows what they are doing, unlike me :\
Lua is kinda driving me crazy

I think I would try something more basic than lua to begin with. To get your bearings, you need to figure out what makes the Block actually respond (light up). Sending MIDI directly to the thing would make it easy to be absolutely certain about what is going on.
I’ve been using Pure Data for this very purpose - makes it damn easy to try out different things and see the result.

Once some working values are established we could recreate the same results in Duplex, perhaps as a cooperative effort.

Oh, and I know for certain that the Ohm was special because it responded when note values were sent with a very specific value. So don’t forget to check any available information from Livid. They seem to be very nice about documenting their products.


I’ve been trying to recall just what I did to get this going. My Block is in storage and I can only find bits and bobs on the netbook from this old project. Looks like I was writing a Block device with Duplex, but sounds like your issue may be on the Livid end of things.

I’ve attached a Block settings file that I found, it might yield something useful for you on your quest, but without Block to hand I can’t even load up the config (editor insists you have it plugged in). If I think of anything else I’ll let you know.