Duplex Beta Versions

This is a reply to this post

In Duplex, each physical (or, in the case of TouchOSC, virtual) control can be represented in three ways: state (on/off), color (RGB) and text. So a “compound values” is then a question of representing / transmitting both color AND text as the current state. This is not so hard - the tricky part is to get the hardware details right (make it work across a wide range of gear, while keeping it flexible enough to be interesting.

We could end up with these slightly different features, which are technically related:

1. UILabel. A separate UIComponent which can display a text string (can be configured to one or multiple lines, contain X number of chars, etc.)
The UILabel will facilitate “LCD panel readouts” or just static labels that improve the readability of the virtual control surface (for example, put a label called “DSP devices” next to the Effect application’s device list)
The interface for setting the text should be specified by the device driver (e.g. TouchOSC.lua) - this can vary widely between devices, as different MIDI sysex or OSC message implementations have to be dealt with

2. Compound values. Display button text + color on the device / virtual control surface (currently, we need to choose between color OR text)
If the device supports dynamic text, use the same methods for updating the text as the UILabel

If the device doesn’t support text (the Launchpad, for example), it still represent an improvement for the virtual control surface (add those arrows which are painted on to the hardware)

You mean, because creating a template in TouchOSC is already a lot of work?
Well, control-maps are functional. You can’t skip that step, it is the thing that tell us which parameters are located next to each other (groups), and much more.

Sorry, I don’t understand. You assign mappings through a device configuration. This is as complex and unique as it gets.

I’m noticing a small issue and I hope this isn’t the wrong place to post this. After having used Duplex Grid Pie, every time I open Renoise, Grid Pie has been already loaded, and I have to go to duplex browser, uncheck run, and open a new project to get rid of the grid pie stuff. Is there something I can do so that Renoise doesn’t automatically load Grid Pie?

You probably checked “autostart configuration”, which means that whichever device configuration(s) you have checked will launch when Renoise starts.

So, it’s not a bug, it’s a feature :slight_smile:

PS: If you’re running the latest version, you’ll have an extra entry in the Duplex menu → Display on startup
This will make any running configuration “reveal itself” on startup (if you have no active configuration, it will have no effect)



Temporary, I made the GridPie configs for APC20/40 & nanoKONTROL2.

2693 GridPie_for_APC_nK2.zip

But I cannot see the GridPie color specification for APC yet.
Unless colors are lit properly, I cannot get actual feeling so much (it’s a bit boring :( ).
Give me this color setting please… ;)

 self.palette = {   
 out_of_bounds = {   
 selected_filled = {   
 selected_empty = {   
 empty = {   
 filled = {   

:excl: Btw, maybe we need an dedicated thread for suggesting about APC40’s layout.
I think APC20 is OK since I could touch and confirm it enough here.
But I could not understand about the right side of APC40 well.
It seems that APC40’s knob part has 4 banks, so we should be able to make more nice layout.

Sure - you’ll have customizable colors per device-configuration in the next version

I agree, I think it should be for both the APC20/40. I was thinking about merging our little APC discussion with this one:

Duplex REALLY needs to go out of beta soon, but…I just added some more content

The big news this time is XYPad, a swiss-army knife type of application. Too complex to explain in a single paragraph,
I created this topic, for the discussion and feedback thereof.

Next, OSC bundling support is also good news. While developing XYPad, I discovered that wireless devices lost a lot of
messages (even for low-intensity traffic, this could become a problem). The solution is simple, and optional.
TouchOSC now support message bundling as the default, but wired devices like the monome are still using single
messages, as they have the sufficient bandwidth and speed.

The full changelog for the full 0.98 release:

Click to view contents

Done 0.98

Duplex API

  • New input method: xypad (supports multi-message values on OSC)
  • New UIComponent: UIPad (dual-value, or independant X/Y axis)
  • Control-map syntax:
    o Attribute names can now contain underscore
  • OscDevice: optional message bundling
    o No more lost messages on wireless devices?
    o Set per-device (for example, see the TouchOSC device class)
  • NRPN support (see http://goo.gl/xOAvf for details)
    o Feature is disabled per default, enable in Duplex menu)
  • Restructured device folders (separate configuration files)
  • Customizable palette for each application configuration
    o Will import specified values on top of default palette
    o See Launchpad XYPad configuration for an example
  • Automation class for recording controller movements
    o Touch and latch recording (latch is considered experimental)
    Automation class is utilized by Effect, Mixer, XYPad (so far)

Duplex browser/menu

  • Tool menu: devices organized into sub-menu’s
  • Tool menu: display on startup (only when active config)
  • Tool menu: release all devices (useful shortcut)
  • Tool menu: enable NRPN support

XYPad (new application)

  • For utilizing the new xypad input method on a wide range of gear
  • Lock to specific device across sessions
  • Navigate to previous/next XYPad device across tracks
  • Supports automation recording

Transport application

  • Fixed: incorrectly named “on_new_document” method
  • Minor optimizations (relies on notifiers where possible)

GridPie application (new)

  • Live recombination of an existing Renoise song
  • Paged navigation scheme (align to other Duplex apps like Mixer)
  • Supported on devices with buttons (required) and/or sliders
  • When device supports release, toggle pattern by holding button
  • Option: Follow position
    o Follow track and pattern (paged navigation)
    o Follow track but don’t follow pattern
    o Don’t follow

NotesOnWheels application (new)

  • Realtime phrase arpeggiator/sequencer
  • See the details here:

SwitchConfiguration application (new)

  • Switch config from the controller itself)

Mixer application

  • Soft takeover/parameter pickup for volume
  • Automation recording (default is off)

Effect application

  • Automation recording (default is off)

Device: Monome

  • Serialosc monomeserial interoperability

Devices + configs

  • New devices LPD8, nanoKONTROL2
  • Overall improved device configurations

Download and beta test

Hi thank Danoise!!!

:( But Grid Pie reset all when I switch to other configuration… and the light button for the Row and track turn Off on my launchpad…


The manual covering Duplex has been rewritten to include changes in 0.98.
It’s better structured, with more images and illustrations, and (hopefully) better at answering all those often asked questions.

The first post in this thread has been updated with this link as well.

Download the new manual here (PDF, ~723KB) -

I need help! I’ve been having no luck at all getting Duplex to work; I held off on using it until the serialosc update, but now I’m trying to get it up and running it’s not working for me.

I have a monome 40h, and have successfully been using it with various Max patches so serialosc is definitely working as it should. When I open Duplex I choose the Monome 64 GridPie option, but when the interface opens my monome is listed as Monome 64 [N/A] (running) in the device settings. I just can’t get it to see the monome at all. I’ve changed the Monome.lua script to read SERIALOSC as the instructions say, but have had no joy. I’ve tried this in both the 64 and 32 bit versions of 2.8, and also in 2.7.2. Am I missing something with regard to the actual connection? In all the Max patches I use there’s a “connect” button which autoconfigures the ports etc and connects the monome to the patch, but I’m not seeing anything like this in Renoise. I’m 99% sure it’s a problem with the ports that serialosc is trying to use, but even if I manually configure the serialosc script to force it to use a certain port it’s still refusing to connect.

I’m on a Mac, by the way.

Thanks for any help anyone can offer, I’m really looking forward to getting this running!

Hi Morpion, I believe you need to edit a file called monomeIDnumber.conf, to ‘hardwire’ the port numbers to the same ones as in the Duplex options dialog. Currently, there is no component for resolving the address by clicking a button like Max/MSP does

Note that I’m simply passing this info on from another user, and not able to verify it from where I am.

Thanks for the tip danoise - I’ll look into that when I get home and post my results. I hope that’s all it is!

Ah, I’ve just found that file and realised that I’ve already tried that - that’s what I meant when I said in my last post that I’d manually configured the serialosc script to use a certain port. It currently looks like this:

Does anything there look obviously wrong? My In port in Duplex is set to 12076. Out port is set to 12077, although I just added that randomly; I’m not sure how that info is read by the monome or Duplex since there’s no out port in the .conf file.

Sorry about the multiple posts in a row but I’ve got some more info on this. I got home last night and opened Renoise up before doing anything else. Duplex worked, kind of; my monome was controlling Duplex but was getting no LED feedback from it - so, the problem must be the outgoing port I thought. I opened up a few of the Max example/test patches for serialosc to see if I could figure out which port it should be receiving data on, but couldn’t find anything so gave up and went back to Renoise. It had stopped working again. I checked the .conf file because the Max patches obviously switched the send port on the monome, but even with it all correctly set up again and even a full restart of my Mac and starting from scratch with the setup, Duplex has stopped working for me once more. I’m not sure why it kind of worked for five minutes then gave up the ghost again…

Has anyone on a Mac, using serialosc, got Duplex working reliably for them? How have you got your ports set up, and where have you set them up on the serialosc end of things? Thanks again for any help… :slight_smile:

I believe another user has his monome working through serialosc, it’s his advice I passed on. Really sorry I can’t help you any further ATM, but I’m actually stranded on a small island due to the winter storm (!!)

He also mentioned that serialosc is getting rewritten, as Renoise/Duplex is far from the only software that suffer from this quirky setup

Wow, that’s got to be the most valid excuse for anything I’ve ever heard! :lol:

No probs, and thanks for the info - I’ll stick at it and if I find a solution “pre- serialosc update” I’ll post back with the details. It’s frustrating - I’m usually good with stuff like this (I’m an IT tech so I don’t mind getting my hands dirty) but I just can’t seem to get to the bottom of the port issue. I’ll keep an eye on the thread on monome.org too, and maybe PM nightmorph. I’m pretty new round here though, so I’m not keen on hassling people directly. :)

I’m trying to get Duplex and my Monome 40h to work on my new laptop (the old one crashed).

Renoise 2.7.1 + Duplex 0.97 = work fine.
Renoise 2.7.1 + Duplex 0.98a2 = work somewhat buggy
Renoise 2.8.0b5 + Duplex 0.98b9 = no response, no lights

Thanks - I’m investigating right now. Hopefully, a fix will arrive shortly.

Edit: yes, I had broken some stuff. I will just do a few tests and release it.

Oooo, fingers crossed this is why I was having LED problems rather than it being a serialosc thing!

Duplex 0.98b10 has arrived

  • You can now link specific instruments to tracks in the StepSequencer: simply provide the same name for the track & instrument you want to link. - “Rotate” is a new application, basically a port of taktik’s Rotate tool which I found useful in combination with the StepSequencer (see the Launchpad config for an example) - A XYPad configuration for the monome with tilt sensor support has been added (monomeserial-only for now) - Improved support of multiple min/max values in XYPad application, plus some bug fixes - Automatic device configs : just copy a device-config to any /Configurations folder and it’s automatically included on startup


Firstly, the monome issue is resolved. Once I got around to reinstalling my OS, I soon discovered that I had messed up “normal” osc message while developing the bundled-message support for wireless devices.
But now, finally both monomeserial and serialosc support can be confirmed as working.

As for obtaining the right ports and addresses: I found this nifty little tool, which can locate the current port of the monome on Windows:

Mac users can use a similar program called Bonjour Browser, they both do the same thing.

I think it’s standard practice for the serialosc service to register at port 8000, which means that you could probably use these device options

Still looking for the place that serialosc1.0 put it’s configuration on windows, because when using MaxMSP applications this might change between sessions.
Been trying to monitor the serialosc process using ProcessMonitor, but I haven’t found anything useful yet…
Scratch that, their location has been found. Look here