VSTi Legato without resorting to a second column?

Is it possible?

I know this is a long-shot…

Resorting to a second column for legato is annoying, because it’s fiddly to code, and visually misleading.

And because the end result is still monophonic, which intuitively you think “quick single-column entry”.

Maybe an M4 in the rightmost panning column could be a “tie notes” MIDI command? (i.e. delay the invisible Note Off a tick or two into the next note’s line)

I think many people would appreciate a single-column solution.

VSTi legato is a very common thing.

If I remember correctly, VSTi legato can not be controlled with pattern commands. The plugin needs to support it, and you need to enable legato from within the plugin.

Resorting to a second column for legato is annoying, because it’s fiddly to code, and visually misleading.

I would argue that it’s not visually misleading, but is actually a good way to show precisely what is happening.

The VSTi plugin itself (or some external MIDI synth) is responsible for producing the legato sound, which it does so in response to the following typical MIDI event flow:

  • Note A is pressed and held
  • Note B is pressed and held
  • Legato from Note A to Note B occurs
  • Note A is released
  • Note B is released
    In other words, two active notes must overlap at some point in order to trigger the legato behaviour.

Whether it’s on a real piano keyboard, or a piano roll editor, or in a tracker like Renoise, the note order and event structure remains the same.

On a real piano keyboard it’s two distinct physical keys overlapping as you play, in a piano roll editor it’s two distinct note events overlapping on the timeline, and in Renoise it just happens to be two distinct note columns overlapping each other in the pattern.

Overall I think it makes perfect sense visually, and it avoids the need for another command which introduces more ‘spooky’ behaviour to the player engine — ie. invisible note off events, hidden note delays, etc.

What about the NNA setting of instruments? There could be a special mode for easier legato handling of VSTi plugins. The NNA settings will be currently just used for the sample playback, right?

Overall I think it makes perfect sense visually, and it avoids the need for another command which introduces more ‘spooky’ behaviour to the player engine — ie. invisible note off events, hidden note delays, etc.

You’re definitely not wrong. And I appreciate a healthy fear of special-cases.

But I also believe a balance should be struck between correctness and usability, and sugar isn’t always bad.

On another day, and another topic, I might be in your camp.

However, in the case of single-column legato (which, ironically enough, you can do with sample instruments using (you guessed it) Special Commands), I’m in the usability camp.

Step Editors have had Tie Note buttons since the beginning for this reason.

And of course the pattern editor is already littered with invisible Note-Offs, as that’s how trackers work.

I mean, c’mon: legato basslines in a single column with a Tie Note command?!

You have to admit that’d be pretty sweet :)(with enormous historic precedent).

Single column legato would be great. One of the problems right now is when you want to edit/add notes to your legato line you either have to rearrange the notes so they are still alternating or add more columns. I don’t think having several columns always make sense in a tracker format. Being able to set “invisible note-offs” would also be handy for when you play chords with long attack time. Instead of adding a bunch of extra columns so you can end the current chord a bit into the new one, you could instead set the note-offs to be a few lines after a new note is triggered.

Single column legato would be great. One of the problems right now is when you want to edit/add notes to your legato line you either have to rearrange the notes so they are still alternating or add more columns. I don’t think having several columns always make sense in a tracker format. Being able to set “invisible note-offs” would also be handy for when you play chords with long attack time. Instead of adding a bunch of extra columns so you can end the current chord a bit into the new one, you could instead set the note-offs to be a few lines after a new note is triggered.

Both excellent points.

What about the NNA setting of instruments? There could be a special mode for easier legato handling of VSTi plugins. The NNA settings will be currently just used for the sample playback, right?

That’d actually be a great place for it: NNA options on VSTi’s.

  • “Note Off” - current behavior
  • “Tie” - Delay Note Off a tick into the next note (explicit Note Offs would be needed to “break the tie” as it were)
  • “Continue” - Sustain all notes until an explicit Note Off is encountered.
  • “FIFO” - like “Continue”, but explicit Note Offs are paired with the oldest active note (which would assist with DonStroganotti’s chord issue
  • “LIFO” - like “FIFO”, but explicit Note Offs are paired with the newest active note.
  • “Index” - use the Note Off’s instrument column to index the nth active note to turn off

And you’d already be entering explicit Note Offs when you want varying degrees of Staccato.

I think the problem is a lack of standardisation in the plugin. Not all plugins support legato, and those that do use different parameter numbers for it. It’s not as simple as having a NNA for plugins, because there isn’t a standard signal that is understood to be this or that NNA.

For example, the voice switch in Charlaton is on parameter 46 and is called Voice Mode. The legato toggle on ragnarok is parameter 3 and called Porta Lg.

http://electronicmusic.wikia.com/wiki/Continuous_controller

I think the problem is a lack of standardisation in the plugin. Not all plugins support legato, and those that do use different parameter numbers for it. It’s not as simple as having a NNA for plugins, because there isn’t a standard signal that is understood to be this or that NNA.

For example, the voice switch in Charlaton is on parameter 46 and is called Voice Mode. The legato toggle on ragnarok is parameter 3 and called Porta Lg.

http://electronicmusic.wikia.com/wiki/Continuous_controller

Hrm, I think you’re misunderstanding.

We’re talking strictly about Note Offs in Renoise, explicit and implicit, when they occur, and how they’re paired with Note Ons.

All Renoise-side. All plain old MIDI notes.

How specific synths deal with those notes after they leave Renoise is irrelevant to this discussion.


I think toimp’s NNA proposal, and my elaboration, has serious potential.

It would mean fewer columns and less column-juggling when coding overlapping notes.

And it would go a looong way toward lessening the “need” for a piano roll.


I’ll make an “Ideas and Suggestions” thread once this thread is tapped out.

Sorry, you are right. I misunderstood.

Sorry if I misunderstood, but I don’t see the problem with single-column legato as it is, with a plugin that supports legato. If you can set the plugin to work in legato mode then 1 column is all you need.

I think I see what you mean with the note-on/off stuff, but I don’t see how that would change the behaviour of the plugin.

Generally speaking, the problem is that if the notes don’t overlap, the synth’s Amp envelope will retrigger, glide or not, which is what we don’t want.

I think you’re thinking of just the glide part, and not the retriggering.

For posterity (and DonStroganotti and toimp):

I found a way to code legato sequences (or the voices of a polyphonic/chord sequence) for plugin instruments, that doesn’t require column surgery when you want to insert a note.

But it requires three columns per voice.


Say you’ve got a legato bass sequence. It occupies two columns, because you occasionally need to tie (overlap) notes to prevent the synth’s envelope(s) from retriggering:

|----+-------+-------|
| 00 | C-400 | OFF.. |
| 01 | ---.. | ---.. |
| 02 | ---.. | ---.. |
| 03 | ---.. | ---.. |
| 04 | ---.. | G-400 |
| 05 | OFF.. | ---.. |
| 06 | ---.. | ---.. |
| 07 | ---.. | ---.. |
|----+-------+-------|

Now you want to insert a new legato note between the two notes. How do you do it?

Either you insert the new note in the second note’s column, and manually swap the column of every following note.

Or you add a third column.

Now you think, “Three columns? Where does it end?! What am I doing with my life?”

Where it ends, actually, is at three.

With three columns, there’s always a spare: the two columns occupied by consecutive notes, and the unoccupied third.

If the two notes are on columns 1 and 2, then 3 is free; 1 and 3, then 2 is free; 2 and 3, then 1 is free:

|----+-------+-------+-------|
| 00 | C-400 | OFF.. | ---.. |
| 01 | ---.. | ---.. | ---.. |
| 02 | ---.. | ---.. | C-500 |
| 03 | ---.. | ---.. | ---.. |
| 04 | ---.. | G-400 | ---.. |
| 05 | OFF.. | ---.. | OFF.. |
| 06 | ---.. | ---.. | ---.. |
| 07 | ---.. | ---.. | ---.. |
|----+-------+-------+-------|

(It’s easier if you’re inserting a new note in the middle of a single note (splitting the note), as both other columns are free at that point.)

With three columns, you never need to move existing notes to another column when inserting (or deleting) notes in the sequence.

Three columns is the maximum necessary for easy editability of any single voice that occasionally needs overlapping notes.


This applies just as well polyphonically.

Like if you have a chord progression in which the chords need to overlap a bit (maybe due to long attack times).

If every voice in the chord gets three columns instead of one, you can insert and delete new chords anywhere, without having to meticulously column-juggle existing notes.


It is ugly? Yes.

Is it bulky? Yes.

Will left-to-right column order have any relation to the notes’ pitches? No. (Low notes can end up in the right column, and high notes in the left, etc.)

BUT: It always works, and never requires column-surgery.


For polyphonic sequences (chord progressions, etc.), I’ve taken to putting each voice in its own whole three-column track, then grouping the tracks.

So a whole group actually contains the sequence for a single instrument, with each sub-track (itself having up to three note columns) representing a voice.

This:

  1. Helps me keep things straight in my head,
  2. Allows for more than four simultaneous voices (3 columns * 4 voices = 12 – the max note columns per track, so one track can only hold up to four voices with this method),
  3. Makes things more collapsible,
  4. But bulks things up even more (lots more tracks).

But until (or if ever) we get intelligent VSTi NNA options, or something similar, this will at least work.

Yep that pretty much sums up the current workflow :wacko: