Add Glissando playback style portamento

• Oct 5, 2016 - 16:09
P2 - Medium
S5 - Suggestion

Some instruments (such as vocals) are able to perform a glissando as if it were a long pitchbend/slide between two notes.

Current workaround for playback purposes (using a hidden bend) only works for intervals of up to 3 tones and doesn't play well with tied notes ending with a glissando.


I was just about to suggest this exact feature again; I'm glad I came across this thread first. I like Jojo's idea of calling it "continuous" or Jeetee's "smooth," and I definitely can't wait for when (if) this gets implemented. The closest I've been able to get to a continuous glissando over a large range with multiple instruments (even trombones) is having them all leap by different intervals, forcing them to change notes at different times, creating a "mush" of changing notes. It sounds more or less continuous, but it also sounds like a mess.

I'd like to add my support for this feature - as a fretless bass player this would be useful for making transcriptions sound more faithful.

It needs to match the other options though. Which are "Chromatic", "White Keys", "Black Keys" and "Diatonic". So indeed maybe "Portamento" is a better fit than "Continuous", but maybe it needs a tooltp? (Internally the PR calls it portameto in many but not all places)
See further up, Continuous, smooth, slide were the terms discussed for this earlier.

Workaround Yes No

I have seen people requesting the three usual types of glissando: pitch bend, chromatic, natural notes (or white keys)

Can I request for another type of glissando here? I feel that there should be an option for key-awared glissando.

For example: on a A major piece, you can play a F# to A downward glissando like this: F#, E, D, C#, B, A. They are basically the notes of the key.

Some wind musicians do that a lot, and I surprised that I don't see people mentioning about that.

Workaround No Yes

I believe diatonic glissando is available already
This issue here though is about portamento or continuous glissando

There's an issue with the implementation: using an upwards portamento, if the highest pitch of such a portamento doesn't have a sound in the soundfont anymore (like C#7 or higher for Voice, Choir Aahs Expr.), the entire portamento doesn't sound. An 'normal' glissando though work in that case up to the highest available pitch (of course it drops those that are higher).
Not an issue for the same portamento downwards though, so it is just an issue with upwards and it's highest note

So if this is where i can find out how to add a portamento style glissando, Can someone explain what i must do?

Edit: Nevermind, i found out it doesn’t yet

There could be the option to choose the portamento interpolation curve, as for SND. I.e.: linear, ease-in, ease-out, exponential, logarithmic.
According to James Thistlewood, there are built-in functions in ChangeMap that could be used.

> if the highest pitch of such a portamento doesn't have a sound in the soundfont anymore (like C#7 or higher for Voice, Choir Aahs Expr.), the entire portamento doesn't sound.

This has to do with how the portamento is calculated, I found it easier to use the second note and modify its pitch rather than using the first note. If there is no second note then I guess there's nothing to modify!

Workaround Yes No

can anything be integrated soon? i need this
EDIT: i didnt mean that the workaround doesn't work just that i don't use forked builds; can anyone rewind this?

Workaround Yes No

FOR small ranges, only, for upwards bends, only. It has to be for the general case, though. No way this can be called a workaround in this scope. If I could even compile MS, I could try solving the issues with the current implementation of portamento.

In term of UI/UX. I thought of something like the following:

The ease-in and ease-out should be applicable whatever actual underlying glissando or portamento. The example shows a portamento on a fretted instrument where each fret holds the pitch for a very short while.

I wanted to mention that I would like to implement this parameterable ease-in, ease-out Bezier-based function once Michael Froelich PR is merged.

Fix version