Binding notes together

There are several ways one note can be linked to the next one and several names for that (legato, glide, portamento, glissando, slide, sweep, etc).
Modern DAW software sometimes tend to use different names or a single one for several of these concepts.
Since I'm not sure there are strong conventions about it I made this document to try to clarify it.

In classical music :

Portamento & glissando :

In classical music, a portamento is usually continuous slide between two notes.

A glissando is a slide too, but played note by note (on a violin, one would press fingers against the string one by one rather sans slide with only one finger).

Legato :

A legato is the act of playing a note right when the previous stops playing, rather than introducing a gap between them ; it does not imply a pitch slide.

Having a special sign for a note that keeps playing during its whole duration implies that the normal behaviour of a note would be to stop a short moment before the actual end of the written duration, which can be conter-intuitive.
The "opposite" of legato (an exceptionnaly short note and long gap) could be the staccato.

So to phrase this in synth terms, you could say portamento/glissando should be a "pitch" concern while legato/staccato should be an "envelope" concern.

Envelope :

Synths have envelopes applied on their overall gain and other parameters (filters, fm etc).
Not all synthesizers behave the exact same way when it comes to glide and legato. I'll use Ableton's built-in "Operator" synth as a basic example.

Operator is a classic FM synth which, among other parameters, allows you to specify how many simultaneous voices are going to be played, whether the glide (the pitch slide between notes) is enabled and its time is ms.

I'm going to ask it to play two overlapping notes.

Here is the result if I set the parameters to :
- 1 voice
- glide off

As expected, the first note stops when the second one gets played, the envelope gets retriggered and the pitch doesn't slide.

Here is the result if I set the parameters to :
- 1 voice
- glide on

Turning on the glide button has two consequences here : the pitch is sliding and there is now a single envelope for both notes that doesn't get retrigerred.

Here is the result if I set the parameters to :
- 2 voice2
- glide on

This time the pitch slide is still there but the envelope do get retrigerred and the first note doesn't stop when the second one starts.
That's an exemple of "glide" and "voices" parameters having an influence on the envelope as well, which may seem counter-intuitive.

Though most cases are covered by the way this synth works, it can make things tricky in some other cases :
- Wanting a non-retrigerred envelope but not wanting a glide at all (even with the shortest glide time (0.1 ms) there will still be 5 samples of glide between the botes at 44.1Khz .
- Wanting the glide only when notes overlap but wanting the envelope to retrigger at each note no matter if they overlap or not (the ugly way to do this is to set the synth to poly and cut the notes at the exact right time midiwise).
- Wanting polyphony but a non-retrigerred envelope (it might require to handle the volume through advance automations in this case)

This ambiguity has been partially fixed in other Live's built-in synths (simpler/sampler) where they use the terms "glide" and "portamento" to respectively refer to a "mono + pitch slide + single envelope" behaviour and a "poly + pitch slide + enveloppe retrigger" behaviour.
But then they also have a "number of voice" parameter that is bypassed if using "glide".

However portamento and glide can also bear other meanings : in csound it has to do with whether the slide is happening before or after a note.

Longer sequences of notes :

Using the same envelope over many consecutive notes can be heard as a longer-term modulation.

Here is an example using another environment : Adlib tracker ; it uses several possible envelope modes. In the way I'm using it here the envelopes only get stopped and restarted with a note cut (the "..." symbol).

That kind of effect can also be done with Operator :

While the notes feel bound together in a more consistant phrase, they now lack their individual envelope and some clicks can even be heard bewteen them.
That's why I sometimes wish there could be more convenient ways to specify a "note envelope" and a separate "phrase envelope".

But what if, in a single-envelope context, we trigger a note while the release isn't completely off yet ?

With Operator it appears to restart from zero but I've seen other synths that would start a note with its current level and just bring it to the next envelope stage.

When to pitch slide :

Many modern softwares will assume that you only want a portamento in the case of a legato (when you trigger a note before releasing the last one).

But some synths and older hardware will always perform a portamento even with gaps bewteen notes.
Here is an exemple with a Korg Ms-10 that will perform the glide regardless of the presence of a gap between the notes.

I don't know many software synths that behave that way, but an exemple is Daichi Laboratory's Synth1.

Other differences :

Other details that can differ from one synth on another, such as :
- Will the pitch glide return to the a first note once a second simultaneous note is released ?

In Operator the answer is yes. Sometimes synths will prefer to favor the last, highest, lowest note, or let you choose.

- Is the glide time between two notes fixed or proportional to the space between notes ?

- Is the interpolation between pitches linear or does the curve flatten as it approaches the second note ? The latter can happen in the cas of a "newPitch=oldPitch*2/3+targetPitch*1/3" type of algorithm.

- Additionally, does it take the logarithmic nature of frequencies into account ?

On Operator if a note is triggered before a portamento has reached its destination, the current pitch "becomes" the new start, so the interpolation time is still fixed from that point.

Samples :

Using samples brings light to another way to bind notes together.
For instance a sample can either retart from the start or keep its position and just update its pitch when a new note is playing.

Above are two exemples with non-sample-restarting and a sample-restarting setup.
To achieve this I hade to use either Ableton's sampler with "glide" in the first case and "portamento" with a 1 note limit on the second one.
In order to not reset a sample but preventing it to slide, it seems the best approach is still to use "glide" with the minimum possible glide time, which again sounds like a misleading use of the word "glide" to me.
Note that the polyphony limit is also used here for multi-layer sounds or zones overlap, so some complex configurations might make things difficult.

Some samplers that use key regions with specific samples will keep playing the same sample even if the legato led it to a region it's not supposed to belong.
Some modern sophisticated samplers can use a phase-based technique to handle the transition, some other use a spectral approach and I've even heard or some that use some kind of hidden network to do the job.

What if we want to glide from a note in a certain zone to a note in another zone?
In Ableton's sampler : in the case of "glide" the second note will play with the sample of the first zone, but in the case of "portamento" it will play with it's own zone.

Polyphony :

So how does a polyphonic pitch slide work ?

I believe this case above is the most common behaviour : the slide occurs from the last played not to the new one.
But it's possible to imagine other ways to do this :

The pitch could always be sliding from the same first/lowest/highest note.

The pitch could be sliding from the closest playing note.

In the context of a limited polyphony, the pitch could slide from the "oldest" playing note and steal its voice.
This was how my own polyphony on a not-poly evolver hack worked.

In the case of a chord change known in advance, the pitches could perform a Metastasis-like true polyphonic slide.