MIDI: a velocity curves editor (instead of bars) in MIDI sequences

Hello there !

I’m a little composer using large orchestral SoundBanks, controlled by MIDI signals, and so, recorded and edited in a MIDI sequencer.

Many banks need to have a fine velocity evolution during a same note.
I.E : a nice crescendo with a violin ensemble by Sonic Implants is a single MIDI note with a hundred velocity values (i.e. from 20 to 119) in only 3 seconds.

How to create this dynamic evolution in a MIDI sequencer for now ?
Draw a line which create 100 points that you will not able to modify in the future, especially when you add one or more notes in the same MIDI part to make chords with multiple MIDI channels.

Actually, there is NO program to solve this problem !
Neither on win, nor on mac and Linux.
All programs use these awful bars to control MIDI channel parameters.

I talked about this idea with some composers in my circle, and many are interested !

I’ve modified a rosegarden caption to draw an exemple of this idea :

The idea is to use curves to define the values of the main MIDI parameters, like velocity, pitch, volume, etc, a little bit like the automation concept, but inside each MIDI part, and for each MIDI channel.

In my fake caption, you could add a A2 at the measure 4 on the MIDI channel 2 to create a F chord (F and A notes in the same time, but on different MIDI channels).
And so, you trace another velocity curve next to the first, to control the dynamic evolution of the 2nd MIDI channel.
Now, the F note can be a fine crescendo and the A note a diminuendo and you can easily modify these velocity curves in only one mouse movement.

Sure, these curves create a multitude of “points” in the output MIDI signal, but the interface provides a handy dynamic MIDI editor.

Just a little problem:
If you export your part in a MIDI file, the curves will become points on import.
So for the guys using the curves instead of points, all projects must be saved in Ardour format.

I’m sorry for my English language which is not brilliant …
I hope my idea was clear …

I really than you in advance for you help !
I think this concept is a big lack in the music programs.

You cannot have multiple velocity values for a single note, because velocity is tied to note_ons (and note_offs for the seldomly implemented release velocity). This is because MIDI is very keyboard-centric. For things that change during notes, you need to use CC (Continuous Controler).

CC in Ardour will be handled like gain/pan/plugin automation. Maybe and hopefully later on also alternatively as bars (curves for smooth changes, bars for values that jump in steps).

For Velocity, we want to have a means to change/modify the values with curves or at least straight lines, too.

I’m sorry but it’s wrong !
In MIDI protocol, velocity value is sent when its value changes.

You can make an pianistic interpretation of this protocol, by saying: velocity is the value at the beginning of a note for the same channel, but that’s not the reality of the MIDI protocol.

In my example (for Sonic Implants strings banks), there’s a different interpretation :
When velocity changes during one note, the sampler changes the played layers (samples) during this note ! So you can make a dynamic evolution of a note by drawing many consecutive “points” on the MIDI velocity controller of the note channel.

Well, a concrete example:
Actually, when I use SoundBanks to make a crescendo on a chord of 3 notes (Cello, Viola and Violin), my MIDI part looks like that :
A 3s length note on the channel 1 for the Cello, and the same thing on channels 2 and 3 for viola and violin, at the same time.
And now, I have to create for each 3 channels, about a hundred of points (these so awful bars) for the Velocity MIDI controller.
What does it look like ?
At the bottom of my MIDI part window, you can see 300 velocity points for 3 different MIDI channels, one on the other…
That’s impossible to modify and really chaotic !

Thank you for your information about CC.
But it’s an “automation” concept, not a score concept.
That’s why I suppose these curves are only available in the main window of Ardour, and not in the MIDI parts ?
The concept and the aim of CC in Ardour is really different.

Lets clarify these two points of view. Thorwil is correct to say that velocity values are sent only with note on and note off MIDI messages - there is no such thing as a “velocity” message in the MIDI protocol.

There is, however, a “volume” controller message, and my guess is that your existing software is sending that message to try to map the curves you are using into changes in the audio.

As for why “something-related-to-MIDI is done a certain way in Ardour” … well, thats mostly because we’re only just starting out down the road of how to manage the user interface for MIDI editing and control.


I’m stupid ! and so confused…
You’re right ! I mistook velocity for volume …

(a moderator can change the topic title ?)

So, ok.
Now the problem is :
How to use it in a SCORE concept, not in automation concept ?
This curve also must be in the MIDI editor window.

Paul, I haven’t seen your message.
Thanks for your answer.

“my guess is that your existing software is sending that message to try to map the curves you are using into changes in the audio”

-> so, my soft send VOLUME values :wink: (like all softs) and the sequencer (LinuxSampler) doesn’t use the volume changes just to set the audio output volume, but to use different sample layers of the SoundBank.

For a same note, and during a same note, the samples played by the sampler depends on the actual MIDI volume (and the velocity), that’s why this curve edition must be really fine, precise.
If these curves are only available in the main window of Ardour, we must always use the maximum zoom… and we’ll always open and close the MIDI window: open to change the note, and close to edit the volume curve for the channel of this note.

Do you plan to insert curves inside the MIDI edition windows ?

Thanks in advance !

I’m not aware of plans to have CC curves right in the note area. But the notes could be shown in the background of automation tracks.

With MIDI editing, things are still in flux.

It is planned to introduce regions on automation tracks and you could say that makes it more in line with a “score concept”.

yes, ok :slight_smile:

“But the notes could be shown in the background of automation tracks.”
-> shown, but we’ll can edit the notes in this area ?

The problem I’m talking about now, is to always open the MIDI part to edit a note, and close it to edit its dynamic curve.

I recognize that this utilization is really particular, but that’s the “score concept” I’m talking about.

In fact, the main idea of my topic can be summarized to :

… to provide a note (channel) dynamic edition instead of a track dynamic edition, which is technically the same idea, but not the same concept in the interface.

Thanks :slight_smile:

No “opening”, midi editing happens in place, you just switch tools and then you can edit the notes you already see on the track.

Being able to control curves in any controller graph is very useful for all sorts of purposes unless you are happy to just manually move controls and record the move. I find I miss this in Ardour compared to other apps. When MIDI CC graphs are available in Ardour then this will become more desirable.

Hi, I think in somethig like curve editor in video composing tools, is a very common editing mode in animation an a time-loss approach. In windows exists midiCurve, but is for a midi incoming signal, not for midi edit. I’ am in the same way, I love Ardour/Mixbus but midi editing is in early stage yet.