Duplex Beta Versions

(Jackie) #421

Ok, I just posted a bug report here:

Let me know if You need more details, thanks!

(danoise) #422

Another update of Duplex has arrived. Get it here

This time around, there is finally support for 14-bit MIDI pitch bend.
For anyone with access to such a controller (and there aren’t that many around), it would be great if you could drop me a PM so we could get proper device support.

Also, MMC support is now built in. This means that you can send MMC sysex commands to Duplex without running any applications, and still control the song transport.

And if you have been looking for a good iPad keyboard, Duplex now has a configuration for discoDSP’s “KeyPad”. You can head over to their website to download the template: http://www.discodsp.com/keypad/

Last, but not least, Duplex now has something called States. They are XML based “namespaces” that you can add to a control-map, basically allowing you to show and hide certain parts of a control-map while the device is running. Very handy when you are running out of room on the controller, want to conserve space, or when the application just isn’t flexible enough to be mapped the way you want it to.
Also, states are quite a complex subject, so expect me to post a separate topic to cover this in more detail. For now, you can peruse the Duplex docs (part of the download) to learn about this new feature - in particular, you want to check out “ControlMap” and “StateController”.

-- Duplex 0.99.3 -----------  
* New class, StateController (toggle parts of control-map in realtime)  
* See also ControlMap.lua and MessageStream for details  
* Support for MMC (Midi Machine Control) messages over sysex  
* Support for 14-bit MIDI pitch bend messages   
* Ability to pass unmatched (not just unhandled) messages to Renoise   
* Ability to dump OSC message to console (just like MIDI messages)  
* Feedback prevention: optionally block messages that appear to be echoed back  
* <param> (new), match a specific (CC) value   
* <param> (new), match a (CC) value-range   
* <param> (new), explicitly state the value resolution (e.g. 7 or 14 bit)  
* <param> (new), interpret parameter in the context of a specific device class  
* Ability to cache multiple matched ui-components (implemented as queue)  
* Integration with StateController  
Core/UIComponents (all)  
* Refactored force_refresh method into base-class  
* UIComponent:test() now include test for active state and group-name  
* Improved validation methods  
* Removed some print statements that were overlooked  
* All device classes should now be using output_number/boolean/text methods  
* New application, take control of the pattern cursor (preview release)  
* Control-map / configuration for the M-Audio Oxygen88 controller (preview)  
* Control-map / configuration for on-screen keyboard  

(delt) #423

Downloaded, tried to install, and on renoise startup i get the following error:

'/home/user/.renoise/V3.0.0/Scripts/Tools/com.renoise.Duplex.xrnx/' failed to load.  
Please remove this tool or contact the author (danoise [bjorn.nesby@googlemail.com]) for assistance...  
.///Duplex/Controllers/APC40/APC40.lua:36: variable 'APC20' is not declared  
stack traceback:  
 [C]: in function '_error'  
 [string "local mt = getmetatable(_G)..."]:29: in function   
 .///Duplex/Controllers/APC40/APC40.lua:36: in main chunk  
 [C]: in function 'require'  
 ./Duplex.lua:60: in main chunk  
 [C]: in function 'require'  
 main.lua:7: in main chunk  

(danoise) #424

Oops, sorry about that. Should be fixed now, try downloading again…
It was just a single character that got mixed up (APC20 instead of APC40)

(delt) #425

Thanks, works perfectly!! :D/>

/* edit */

Just wondering, in the “duplex browser” window, why are all the devices in the “devices” list (including my oxygen88) marked as [N/A] ?

Also, when i move the sliders & knobs on the (physical) oxygen88, the ones on the window don’t respond…is this normal?

(danoise) #426

Great! But how about the ability to hold the button and scroll through many lines (“key-repeat” style) - does that work too?

I’m planning to extend this application to include single lines, editstep, next/previous column/track navigation etc. Maybe even include pattern selections? Suggestions are welcome.

They have this suffix appended when the MIDI port isn’t specified/opened. Your Oxygen should no longer have the “N/A” appended, once you have selected the right MIDI port?

Yes, generally speaking Duplex will not update controls unless they are controlled by a Duplex application. In your case, the Oxygen configuration does not specify anything except for the two buttons - but at least they should be reponding just fine?
This feature might be implemented at a later stage, however. It would be cool to have this visual indication that messages are being picked up…but you can always see that the tiny MIDI input LED in the upper Renoise toolbar is blinking when messages are received.

Edit: oh, and btw: what OS are you running? I never got the error message you did while testing this release. Would be nice if I could somehow pick up such an elemental error before publishing it!

(Ketumatek) #427

thank danoise for making this tools i have a question for you i use a Quneo with duplex but a have to big problems

first duplex can send midi to the Quneo but the Quneo cannot send midi to duplex

second how can i configure the Quneo in duplex because i try midi map it doesnt work and i m very dummy with all those stuff …may be there is some script to do or something else???

if you could help me it should be very nice


(danoise) #428

Hi Emmanuel,
generally speaking, support for the Quneo is still quite rudimentary, but you should be able to make many interesting configurations for it(mixer, sequencers, drumpads). See also the Quneo/Duplex discussion located here.

first duplex can send midi to the Quneo but the Quneo cannot send midi to duplex

Can you see if Renoise receives any MIDI from the Quneo (the MIDI tab in Renoise should list all messages) ?
Also, the Quneo configuration that Duplex comes with assumes that the Quneo is configured in a special way - you might want to either change how the Quneo transmit messages (it comes with a utility to do this), or change the Duplex control-map for Quneo

second how can i configure the Quneo in duplex

Satobox has written a nice introduction to this, located here.
Quneo is a complex controller so don’t be afraid to ask questions.

(Rod19fr) #429

Hi is it possible to add “hold” button mode for “launchPad keyboard” ?..

I would like to use it as a sampler, but when i try to modify by myself “Launchpad_Keyboard.xml” and replace “type=key” with “type=button” it doesn’t work at all…


(danoise) #430

Hi is it possible to add “hold” button mode for “launchPad keyboard” ?..

I would like to use it as a sampler, but when i try to modify by myself “Launchpad_Keyboard.xml” and replace “type=key” with “type=button” it doesn’t work at all…

I assume you are talking about using the LP as live-triggering drumpads/keyboard?

Because then, “hold” mode is indeed something the Duplex Keyboard needs to support. Same is true for “mono”, btw.

But you can’t add it the way you describe - the controlmap is merely a passive description of the controller layout.

And since the Launchpad is born with a single button type changing this will only break things.

Rather, these modes need to be implemented straight into the Keyboard application…(on the TODO list)

(danoise) #431

A new release of Duplex has arrived:


Following up on the above post, this release is focused on improving the Keyboard application with support for the “mono” and “hold” trigger modes.

Also, the grid layout has been expanded to support extra layout modes: isomorphic, harmonic and piano-style layouts, with realtime support for the selected harmonic scale and key.

Adding a keyboard configuration for your own controller is simple, as long as it’s supported by Duplex - you can use the monome or launchpad configurations as a starting point (and please share any such configuration ;))

- Decorate open device dialogs when hardware is hot-swapped
- Prevent notifier feedback in browser dialog

- Better handling of "soft_echo", respond only to programmatic events

- Support for trigger options (hold/mono modes)
- Register_callback(), makes apps able to receive notifications

- Changed the interpretation of "colorspace" a little: monochrome devices
are now specified as {1} instead of {1,1,1}

- Support harmonic scales (scale and key)
- Custom grid layouts (harmonic, isomorphic layout and piano emulation)
- Support for trigger options (hold/mono modes)

Applications/Instrument (new)
- Control basic instrument options

- More links and descriptions

(Akiz) #432

I wanna thank you. This tool is great.
I’ve made mapping for mk-449c. I can upload it if anybody wants.

The best thing is i can use instr. automation device with auto-assigned controls very fast. It is one of the fastest midi mapping of VSTi i know.

(thetechnobear) #433


I read on some old posts about Duplex being extended to support Ableton Push, but it looks like this has completely ‘gone cold’.

Ive a Push and Id be interested to look into developing this… is there any work that could be salvaged from aborted attempts?

Im a developer by trade, and I’m reasonably familiar with the messages sent out by Push in ‘user mode’ … but I’m new to Renoise, so really just need some pointers for getting started,

e.g. say another similar device… and also the cabapilities of Duplex. (e.g. id be very interested in having LCD support)

also is Duplex the right place to do this, or is there an alternative?

Thanks for any pointers


(danoise) #434

I read on some old posts about Duplex being extended to support Ableton Push, but it looks like this has completely ‘gone cold’.

This topic, I guess?


Yes, it’s true that the project went kind of cold. Mostly because I don’t have access to a Push and have put myself in a position where any update to Duplex sort of goes through me. From what I can gather, nothing would prevent Push from being supported, and this is turn would mean that an ever-growing bunch of applications would just work (isomorphic keyboard, several sequencers etc.).

So yeah, it would great to have proper Duplex support instead of having to re-invent the wheel each time you want to create something for the Push.

Btw: I just implemented proper NRPN support in Duplex, maybe this would be useful with the Push too? (esp. thinking of the ribbon control). The feature still need a bit of finetuning, but a new release is coming soon.

(danoise) #435

Another release of Duplex, this time focusing on (finally!) getting proper 14-bit support.

With 14-bit CC/NRPN support, the range of values increases from 128 to 16384 possible values (including both relative and absolute modes). Mostly applications like the Effect and Mixer will benefit from this, but I suspect other things could be improved as well?

For now, I have supplied configurations for the Behringer BCF/BCR-2000 controllers, Check them out, as well as the accompanying documentation, to see how it’s implemented. I’d be very interested to hear about other controllers that support 14-bit resolution, like the MPD32 :slight_smile:

Also, the MidiDevice now has “input throttling”. This became necessary, as an NRPN-enabled device can easily output a lot more messages, effectively flooding the system with messages. I’ve set the threshold to a relatively low value that shouldn’t affect “normal” device operation (when several messages appear from the same source within 0.05 seconds, throttling will kick in. Note that the last received message will always be passed on, even when being throttled).

Total list of changes:

- 14-bit CC + NRPN support (absolute/relative modes)
- Input throttling (ignore input when above a certain threshold)

- Method for stopping all active voices

- <Param @throttle> (new), enable/disable (MIDI) message throttling
- More thorough parsing of XML (additional error messages)

- Ability to hold multiple MIDI messages (midi_msg -> midi_msgs)

- Ability to send multibyte CC/NRPN messages to device

- 14-bit CC + NRPN support (absolute/relative modes)
- Encoder acceleration (amount specified in Duplex prefs)

- More thorough "is changed" check when updating palette

- Dedicated method for updating trigger button

- New mapping: All notes off
- Broadcast ModWheel as CC#1 (according to MIDI standard)
- Added keyboard cycle icons to palette
- GridLayout: add note info (text) to buttons

Controllers: BCF/BCR-2000
- Now defaults to bi-directional communication
- Added NRPN controlmap/configurations

Controllers: Launchpad
- Keyboard config: added "all notes off", "cycle layout" mappings, using States

Controllers: MIDI Keyboard
- Controlmap/configuration: added ModWheel mapping

(ffx) #436

Impressive work!

(Meef Chaloin) #437

Thanks for this, I have an mpd32 so will try to give it a go soon. The whole project is truly amazing.

(kittenberg) #438

very good work but i have to report a problem with effect application.on parameters variable.

when it works on master track lpb’s knob will generate only odd numbers (midi values are from 0 to 127 while lpb is from 1 to 256)

i think this might be a problem with other parameters too and i don’t know how to eradicate this behavior from my configuration :frowning:

p.s.: mpd26 preset configuration file missing two commas after mixer pages rows :smiley: :stuck_out_tongue: :wink:

(Akiz) #439

Windows Xp and clean install of renoise 3.01 32bit.
Duplex cant be load.

"‘C:\Documents and Settings\Akiz\Data aplikací\Renoise\V3.0.1\Scripts\Tools\com.renoise.Duplex.xrnx’ failed to load.

Please remove this tool or contact the author (danoise [bjorn.nesby@googlemail.com]) for assistance…

.\Duplex/Applications/MidiActions.lua:242: module ‘Bindings’ not found:

no field package.preload[‘Bindings’]

no file ‘C:\Documents and Settings\Akiz\Data aplikací\Renoise\V3.0.1\Scripts\Tools\com.renoise.Duplex.xrnx\Duplex/Applications/MidiActions/Bindings.lua’

no file ‘.\Bindings.dll’

no file ‘E:\Renoise\Bindings.dll’

no file ‘E:\Renoise\loadall.dll’

no file ‘C:\Documents and Settings\Akiz\Data aplikací\Renoise\V3.0.1\Scripts\Libraries\Bindings.dll’

no file ‘E:\Renoise\Resources\Scripts\Libraries\Bindings.dll’

stack traceback:

[C]: in function ‘require’

.\Duplex/Applications/MidiActions.lua:242: in main chunk

[C]: in function ‘require’

.\Duplex.lua:48: in main chunk

[C]: in function ‘require’

main.lua:7: in main chunk"

(danoise) #440

Windows Xp and clean install of renoise 3.01 32bit.

Duplex cant be load.

Seems Duplex fails to load a supporting file for the MidiActions application.

I wonder if the Czech name for the application folder has something to with it… ? Will try and give it a quick look

As a quick workaround, you can disable the MidiActions application by giving it a different extension than .lua (or removing it altogether).

The file is located in the Duplex tool folder under Duplex/Applications …