New tool (3.0): Mlrx

Just had an idea while jamming with this tool. I mean, I feel I can now work this thing, even when quantized to a single line.
So, with the fundamentals in place, it would be interesting to look at how the “improvisational aspects” of the tool can be improved.

Right now, the cycle length is great when you want to introduce a stutter-like effect, but it’s something you could do just by hitting a trigger fast enough. But how about having a button which, when pressed, will toggle between forwards and backwards playback?

So if the sound is already triggered, the reverse command could be inserted at the next (quantized) line, and if a sound was (re)triggered it would start playing in backwards mode.
And this state could then even be memorized per track, and stored in the song settings.

How would you imagine something like this to work? Feedback is most welcome!

A new day, a new update

I spent most of yesterday trying to catch any bugs that might still be lurking. Found the following six:

fixed: a sound whose length is longer than a pattern is always retriggered when the note was originally placed on the first line
fixed: wiping track lines would ignore the first line in a pattern
fixed: when switching track inside a group, scheduled note-offs should be quantized too
fixed: when switching between two tracks in the same group, make sure that the (now inactive) track has the line immediately following the note-off cleared as well
fixed: note duration for notes triggered in hold mode, with the trigger being released before the actual note-on now have the correct length (before it was always 1)
fixed: track summary not always updated when instr. props got modified

There are some minor optimizations here and there too. Please check it out!

Raw lua file is up on SVN

looking forward to try out this tool (hopefully soon). great idea.

No idea what I was thinking. Haven’t used it since, actually.

Nononono. I was speaking about the mlr concept of groups. And somehow someway I found the lights on the LP(S) looking like;
etc. - So I believed for a second that this was how you bind instruments to tracks (which should indeed be the renoise translation of any mlr’s “groups”), in mlrx. Thus I ranted on. How cool it would be to have that live assignment on deck, via what I would call ‘pages’ on the Launchpad - it showing and controlling another group of data while holding a button like session/user12/mixer.

Just a quick bump for this topic:

The Duplex tool is currently defunkt in Renoise 3.0 - I left for my holiday vacation just before the release - but once I get home, Duplex will have full support for Renoise 3.0
And this application - Mlrx - will then have support for phrases as well :dribble:


Slight bump, as there has been a new version available for a few days

I have updated Duplex for Renoise 3.0, download is located here

I promised phrase support stuff for mlrx, but only managed to make it a “feature preview” (you can trigger phrases but the running lights may, or may not, display correctly).

Also, for the next version of mlrx I have a few ideas:

First, I want to get rid of the “write a note-off when stopping a recording for a looped track” - it seems excessive, as the loop mode in itself is about producing a seamlessly (constant) sound.
If you want to stop the output of a looped track, this is still possible but it will then skip the automatic note-off and instead allow you to mute the track the standard way (non-destructive)

Also, I don’t like how the mlrx group is currently created on startup. Would be nice to have an “init” button that would create / take over the special pattern-editor tracks.

I have just released a new version of Duplex which include the first “production ready” version of mlrx
Many planned features have been implemented, and the Renoise integration more tight than ever.

See first post (updated), or grab it here:

Looks completely impressive!

any chance of adding “phrase” to the list of midi mappable controls?

Yes, we could make all those controls become natively mappable. I simply started with the rotaries, because they work quite well in this way - being standard Renoise MIDI mappings (CTRL/CMD+M), you don’t get the luxury of messages being sent back to the controller.

So, unless you actually assign the phrase button mapping via Duplex (which is possible, also in the current version), you won’t see the button light up to indicate it’s state.
But then again, this sort of fancy behavior is by far most important for the trigger buttons, seeing the playback position within the loop etc.

ah i see you what you mean,its just im using a launchpad and all the buttons are used up but reaching for the mouse is a bit of a hassle…maybe for the slice and phrase functions it would be possible to do something like holding down a pad for a certain length of time…maybe the buttons that are already set for the “hold” and “toggle” settings. (which are 8th row no 1 + 2 pads on the launchpad"

That would be quite simple actually, just exhange this:

set_mode_hold = {  
 group_name = "track_controls",  
 index = 1,  

With this

set_source_phrase = {  
 group_name = "track_controls",  
 index = 1,  

(getting rid of HOLD mode because TOGGLE is very similar, and perhaps more useful)

Doing this you’ll get the ability to press/hold the button, to control phrase recording. Phrase recording is activated when held (and playing), but you can also transfer any track into a phrase by doing the same thing while playback is stopped.

All of this is specified in the Launchpads’ mlrx configuration - “group_name” is referring to the named group within the control-map, and index is the position within this group (first button, in this case)

You can modify the layout quite a bit, using these two files. Let me know how it goes :slight_smile:

How can I make one of these for the Novation Launchkey?

I have Duplex Browser…

I did a quick search, and according to Novation there isn’t support for bi-directional MIDI (LED talkback), unless you are lucky enough to use one of the supported DAWs :confused:

But in any case, you can still use the MIDI keyboard and sliders/encoder to trigger & control mlrx (including the arpeggiator) :slight_smile:

the more i play with this the more fun t gets…

There is hope if someone who owns the device also knows a bit of Lua. I Googled it a bit and I found that some people have been talking about this on another forum:

It would be natural to then write something like:

<param value="E2|Ch10" action="C6%7CCh1" type="button" minimum="0" maximum="127">

Though MIDI devices do not support “action”. But it would make sense if they did.

Indeed it would, and I see no reason not to implement it like that.

Thanks for the digging, ValentinDavid.

I have being playing Mlrx and I tried to figure out how to use it. I do not think I understood everything. I have some remarks about the applications. Probably most of them are due to the fact that I tried to use it in a way that was not intended.

When I switch from “hold” to “toggle”, I would like to be able to switch off the track. If I do that, once the pattern looped it will play again the sample with no way to remove it, unless put the track in write mode.

If I manually slice a sample, then it shows up as “slice” on Mlrx. Good. Then I start to record a phrase. Everything works. I stop the recording of the phrase. Then the slice goes off. But the sample is still slice. I cannot play anything anymore except in phrase mode. I cannot even switch the slice mode manually. I then need to restart Duplex.

I am not sure about the clone button what it is intended for. As it adds a new pattern, the whole song loops then on two patterns, then three, etc. I thought at the beginning that it was some kind of snapshot to store an interesting pattern before erasing it.

That would be nice to be able to switch a sample to “one-shot” directly from mlrx. Though it is possible to do it manually on the instrument. For drum samples, it is quite interesting. Also I have noticed that in touch mode you cannot have several notes in the same time. For example if you use an external midi keyboard, you cannot play several notes. For sliced drum samples as well it would be nice, since when you hit the snare, the cymbal should not decide to go mute. And also for short samples not synched intended to be played on the keyboard to register a phrase (like a one note sample), it would be nice to be able not to loop the sample. I thought the “sample loop” option was doing this, but it did not seem to do anything.

Instead of using an external keyboard, it would be nice to use the triggers of a track as different notes on a sample. I would see that in the “track output” section.

If I click toggle on a track, wait a bit for the cursor to be around the middle, then toggle it off. Then I press “erase”. And then I toggle it on again from the beginning, the cursor will start from the middle, do all the steps until in comes back in the middle, then jump to the beginning. I have seen other ways to make this behavior, but I do not recall how to reproduce it.

There seems to be a bit of latency when triggering notes from a keyboard through Mlrx compared to when mapping the keyboard directly to the instrument. Could this be? Any plan to find a way to optimize that?

It would be nice to be able to have several devices for on application on Duplex. It is possible to have several applications for one device. That was probably because most of Duplex’s applications were small. Now Mlrx is bigger. It then make sense to be able to have several devices for one control map. And I think that 2 launchpads are cheaper than 1 monome 128.

8 tracks should fit most songs. But would it be possible to have some scrolling up and down using a rotary or slider to have more tracks?

Yes, mlrx is capable of a lot of weird noises. Precisely the reason I decided to stop piling new features on top, and just releasing it in it’s current state. And of course, to get some feedback, so thanks!

Indeed, a lot of effort has gone into defining some generally useful looping options. Toggle did in fact use to work like that, I was simply not sure if this was the right choice. But what you suggest makes sense.

Hm, sounds like a little bug crept in. However, understand that from mlrx’ perspective, PHRASE and SLICE are mutually exclusive. The selected mode will affect how notes are written to the pattern, so it doesn’t make sense to be able to have both modes active at the same time. However, you should be able to slice a sample and then use that to record a phrase. Technically, you would now have a phrase consisting of sliced notes (this should work?).

It simply is a nice and easy way to take a copy of the pattern and move the playhead into a new one, so you can continue making edits.

Absolutely, this is at the very top of my own list of ideas. It would actually not need to toggle the one-shot option in the sample, but just output a single loop cycle.

This is somewhat further down the list of ideas, as mlrx is currently a “true” monophonic sequencer, in the sense that you can hold multiple buttons, and release one of them. Mlrx will then “snap back”, activate the most recently pressed button remaining - a useful musical gesture in itself, as you can then quickly alternate between multiple buttons.

I’m basically hesitant to add a polyphonic mode because it brings a lot of additional complexity to an already complex sequencer. It would have to be an additional option to complement the currently selected trigger mode (I mean, why should pressing multiple triggers in HOLD, TOGGLE or WRITE mode be any different from pressing multiple triggers in TOUCH mode?). Also, polyphonic input would have to overrule the arpeggiator (such a limitation would need to be obvious somehow).

Indeed, switching between viewing the current track as “running lights / position within sample” to a more traditional “notes” view (switching could then be done e.g. by holding the track select button). Currently you have to use transpose to target a new sample/slice/phrase, so it would be a very useful addition, also for operating the thing without a MIDI keyboard.

I reckon that in this “notes” mode, the transpose buttons would change their behavior to not transpose the internal mlrx pitch up & down (like they normally do), but instead give you the ability to “scroll” up and down the virtual keyboard.

Yes, the position detection can be a bit glitchy at times. Fortunately, it is only a display issue and if we can reliably reproduce it we can also fix it :slight_smile:

Obviously, mlrx needs to produce output at least one line into the future, or the note won’t be triggered (currently the sequencer is using the line-quantize setting in Renoise, this might change to a per-track option in the future). So, while the whole output stage is quite complex, the response time for pressing a trigger is just one line - but you can achieve a result which is perceived as faster, simply by increasing the song tempo. Some personal experimentation is required here - I personally like to run at 8LPB, no matter the BPM.

Yes, Duplex won’t have a problem running two Launchpads side by side, it’s rather that an application is limited to a specific device. But in this case, mlrx could simply be made to support multiple instances and share it’s configuration data.

Maybe, eventually. Right now, I’d rather look into the idea of having “presets” that you could store and recall from the controller - the information stored in ‘song settings’ is more than flexible enough to swap entire sets of instruments, or have different loop settings etc. I just need to add a way to do this in realtime, instead of when the application boots.