Duplex: How Do I...? Or Feature Request?

I’ve spent a couple of hours today getting my head around re-mapping the controls of my Ohm64 in Duplex and I’m now feeling fairly confident with it (editing mostly the Ohm64.lua, and occasionally the Ohm64.xml).

There are a few things I would like to be able to do but haven’t been able to, either I can’t work it out or they are not possible yet (I don’t know which!). If they are possible, please can you let me know how. Alternatively, if they are not already possible, please could you consider them as feature requests:

  1. I’ve mapped a fader so that I can choose a device (effect) on the current track. I would like to be able to assign a button to toggle enable/bypass for the current device/effect.
  2. I need to map buttons (or a fader/dial) to change track. Navigator.lua mentions mappings for next_track and previous_track but I can’t get them to work and the file doesn’t look as complete as (for example) Mixer.lua, is this still in development?
  3. I would like to map buttons to play specific samples (nothing musical, just spot fx), or maybe two buttons to cycle through all the samples and another to play the currently selected one.
  4. I would like to be able to comment the xml (so I can remember what I’ve messed up!), but adding results in a error when it is loaded.

I really appreciate the help people have given me so far with this, I hope you don’t mind these extra questions. Thank you.

I may have also come across a bug (or two?) in Duplex:

In Ohm64.xml there are 7 buttons assigned to the group “ControlsRight”. In Ohm64.lua six of these buttons are used in pairs for three different functions, using index = 0 for the first pair, index = 2 for the second pair and index = 4 for the third pair. The problem I have is that the function mapped to the third pair (index = 4) does not work. I’ve tried swapping the mappings around, but whichever function I put on the index = 4 pair does not work. I’ve checked the button assignments in Ohm64.xml, and had to change the order slightly to match my controller but they are otherwise correct. I cannot see any reason why the function mapped to the index = 4 pair will not work. Any ideas?

Another minor issue, when I was checking the Ohm64.xml file, I used renoise’s midi mapping to check the buttons, I noticed that if midi mapping reports a button as (for example) B-5, then in the Duplex .xml file it has to be listed as B-4, there seems to be a difference of 1 octave. Obviously not difficult to work around, but slightly confusing at first.

Great! Hope your brand new Ohm64 is as fun as the virtual control surface suggest :slight_smile:

Not implemented. You’d have to modify the Effect app to do this: use the Mixer mute buttons as a blueprint for this modification, as they are conceptually the same. Then set the buttons to listen to/modify the TrackDevice.is_active property/observable

In development, as it everything else :slight_smile: But next_track/previous_track? I must have another version, because this has not been added.
Question is, if the Transport should even touch this? A dedicated application for controlling the ‘current focus’ seems more appropriate. Like, a “Navigator” or something…?

You would have to write the note to the pattern and play it, in order to do this (unless you’re planning on using external gear that you can send MIDI notes to). It’s a limitation of the current Renoise API.

+1 for comments

Yeah, it’s a design flaw, which I plan on fixing soon:

Problem is, the six buttons are automatically described by Duplex in a two-dimensional space, and this is good and fine most of the time (especially for grid controllers). But when we simply treat a group as a bunch of indexed parameters like in your example, the apps are written in a way so they try to assign just the horizontal position to the controller. Here’s why that is a problem…

[A][B][C][D] ← this is how we want the buttons to be assigned
[E][F]
[A][B][C][D][E][F] ← this is how they are actually assigned - the last two buttons doesn’t exist!

It’s a well known quirk in Renoise. But since Duplex works with it’s own MIDI implementation (raw messages only), this is nothing to worry about.
Enable the console and select ‘dump MIDI’ from the Duplex menu if you want to see what’s being sent and received…

PS: If it seems like I’m obsessively answering these messages, you’re correct - at least for the time being.

Thanks (again!) for your help, your “obsessively answering” really is very much appreciated. Regarding the quote above, I have a “Navigator.lua” file in my local /Scripts/Tools/com.renoise.Duplex.xrnx/Duplex/Applications folder, although I notice it’s not in the XRNX repository. In that file there is a reference to next_track/previous_track, so I guess somebody (you?) has already been working on it as a dedicated “Navigator” application.

I’m actually glad that the six buttons issue is a flaw at the moment, at least that means I wasn’t doing something wrong! I can work around this by splitting the single (2 row) group into two single row groups.

Thanks for the dump midi hint too. I’ll try to leave you alone for a while now, and will continue working on my controller mapping, I’ll share the results If I come up with anything worth sharing!

Spot on! And for future reference, Ithe apps will get a new method for setting the control to an indexed position, as well as the current (x/y) position scheme.