Duplex : Notes On Wheels

After weeks of hard labour I can finally say that N.O.W. has gone beta.

Check out the first post (updated with download link and proper documentation) :

Enjoy, and tell me what you think (strike that, I’d rather just hear the results!!)

Well, i can’t tell anything about your Notes on Wheels yet,
Here is what it does out of the box: (Yes i uninstalled the old duplex first)

'C:\Users\vvoois\AppData\Roaming\Renoise\V2.7.2\Scripts\Tools\com.renoise.Duplex.xrnx\' failed to execute in one of its menu entry functions.  
Please contact the author (danoise [bjorn.nesby@googlemail.com]) for assistance...  
std::logic_error: 'invalid mute column value '1'. valid values are (1-0).'  
stack traceback:  
 [C]: in function 'mute_column'  
 .\Duplex/Applications/NotesOnWheels.lua:2383: in function 'set_num_steps'  
 .\Duplex/Applications/NotesOnWheels.lua:2136: in function <.><br>
  [C]: in function 'NOW_Sequence'<br>
  .\Duplex/Applications/NotesOnWheels.lua:807: in function 'create_empty_sequence'<br>
  .\Duplex/Applications/NotesOnWheels.lua:531: in function 'start_app'<br>
  .\Duplex/Browser.lua:1555: in function 'start'<br>
  .\Duplex/Browser.lua:568: in function 'start_current_configuration'<br>
  .\Duplex/Browser.lua:519: in function 'set_configuration'<br>
  main.lua:31: in function 'create_browser'<br>
  main.lua:41: in function 'show_dialog'<br>
  main.lua:121: in function <120><br>

Though the response looks also like an API bug, the value 1 clearly corresponds to a valid value.<br>
Just to inform you:You need to add a Master and Sendtrack filter in this routine so that it doesn't mess up when the cursor is placed in the master or sendtrack.</120></.>

Yeah, I noticed that as well.

Thanks, this should be easy enough to fix!!

Ok, should have first read through the documentation on how this thing actually works :slight_smile: , but yeah…trying to run it with my bcr2000 and am encountering slow down quickly when tweaking in notes. Is this because of Renoise’s undo collection, is there a way to optimize this?

Ensuring good performance is not yet covered by the docs, but let me just tell you that the FILL mode is a potential CPU hog!! (No wonder really, as it’s writing dozens or even hundreds of lines several times per second…). Did you enable this when it happened?

In general, retriggering notes is a bit heavy and could probably be optimized some more - especially when the retrig count is high.

Edit: while on the subject of things not covered by the documentation, I did a bit of a hackish workaround for the virtual keyboard: if you’re using a keyboard layout other than english, you might experience wrong notes when inputting multiple notes while holding shift (transpose is working OK). This is due to a limitation in the API described here.

Second beta has arrived with much less CPU usage, and external MIDI keyboard support

Goto Duplex beta versions for the most recent download link

Full list of features & fixes:

  • Optimize: precalculate @gate_cached
  • Optimize: scheduled updates, use the idle loop to reduce CPU usage
  • MIDI keyboard input (add as option listing available MIDI ports)-
    • Detect multiple pressed keys, update sequence length on release
    • Pitchbend is hardwired to @pitch_adjust
    • CC is hardwired to @multi_adjust (pitch is ignored)
  • Fixed: virtual KB had a couple of minor bugs
  • Fixed: skip master/send tracks when writing output
  • Tweak: start output (‘touch’) when using virtual keyboard
  • Tweak: output immediately when starting playback (first line)


I used the sprachenspell sample from the Renoise kit to produce this little gem


Another update is ready - download is already on SVN, packaged tool coming later…Edit: here it is
I took some time to finish a couple of new features that I missed while using this thing - especially, the ability to clone steps.
Also, support for the Remote-SL25 controller is complete - and support for many more controllers is coming.

  • Added: control-map assignements for Remote-SL-MKII
  • Feature: continuous/endless write in looped patterns
  • New mapping: ‘extend’, expand sequence by repeating it
  • New mapping: ‘shrink’ - reduce to half the number of steps
  • Changed how global retrig-adjustment works: it now multiplies steps, instead of adding to them (more musically relevant values)
  • Global mode: (when disabled) always output note along with retriggers
  • Prefix tooltips with “NOW”, provide more useful descriptions…
  • Fixed: some controls did not use position when assigned to hardware
  • Fixed: a learned sequence is adapted to sliced instrument
  • Fixed: setting length to 0 can cause output to stop
  • Fixed: write mode (latch) always wait for touched control
  • Fixed: sliced sample support, highest slice was sometimes unavailable
  • Fixed: sliced sample support, check when slices are changed (notifier)

@danoise: i have not tried this app out (yet) because i don’t use a midi-controller. would it be possible to also have the features of Duplex/Notes on Wheels with sample-based instruments?

@rhowaldt: absolutely, samples are the source material that benefit the most from this. Plugins seem almost boring in comparison And there’s absolutely no need for external hardware, the dedicated control surface is fully functional and has every feature exposed. It even features PC keyboard transpose and note entry (try pressing keys with/out the shift modifier!!)

That’s it’s based on the Duplex framework simply makes it easier to plug into various controllers, with bi-directional communication, control surface emulation etc. In other words, from a developer’s perspective, it takes care of a lot of the boring stuff that you don’t want to do over and over, each time you want to create something that makes music.

If you want to try it out, I just updated the download link (Duplex beta version thread)

oh yeah i see how it works now! this could be interesting! thanks danoise!

What version of the ReMOTE are you using? I’ve got the mark1 (SL 25), and it’s not fully compatible with the mkII-xml, as the bottom right row buttons (below the faders) aren’t midi-mappable on my version (it seems). Would it be possible to make a N.O.W.-only config? -Without the mixer/transport apps (i’ve got an apc40 to cover these functions anyway)?

I just briefly looked into this app now, and I don’t understand ‘squat’ tbh. ;)

I must say…I love this little device! I tried it out with my BCF2000. It works really well as a step sequencer for sliced drums. :drummer: The only problem I encountered was going too crazy with retriggers tends to slow down renoise, but that’s not a bug, just the result of putting way too many notes in at once.

A feature I think would be awesome, though maybe not so easy to implement:

  • The ability to swap between different sequences quickly
  • The choice to record sequences to specific tracks

This would allow you to record an arp sequence on one track, then hit a button to jump to the next track and record a different sequence. Then you could swap back and forth between them, tweaking the patterns.

I’m going to incorporate NOW into a live performance next weekend. Thanks so much for your work!

Great, I’m really happy to hear that!!

As for the “specific track”, yes this is planned, not hard to make. Basically, you press some button and it will “LOCK” the selected instrument + track.
This also means that someone else can use Renoise while you are using N.O.W.

Awesome, I can’t wait!

Also, I think I found a bug. When working with a sliced sample if you change the pitches then switch to another page and back, when you switch back the pitches will be all crammed in the middle instead of spread out like they’re supposed to.

Thanks, fixed. Replace the NotesOnWheels.lua file with this corrected version (Renoise 2.8)
Edit: fix got merged into distribution, simply download most recent version of Duplex

Does anybody have the manual? The download link on page 1 does not work

Thanks for pointing that out. The manual is also located here:


The file was located on a server I once administered. So, the link has actually been broken for some time…

Have fun with this beast!

Hi, I will try to ask again and more clearly as I believe it will push my WIP maschine jam controller to be much more powerful.

Right now - there are multiple pages with faders for every track.
I would love to use each of 8 Maschine Jam faders to control one parameter each.
So it would work like monophonic sequencer - one fader for step, the second for note, third for delay etc. etc.
Maybe I can add pagination for controlling multiple columns?
My main priority is not to generate a sequence but to have possibility to modify various note elements from DUPLEX which seems to be possible only from Notes on Wheels.
Or is there some different way how can I use 8 faders to modify velocity, delay etc. for selected (or to-be inserted) note?

Thank you

1 Like