Volume Vs Velocity

When tracking a VSTi, the volume volumn affects the velocity of the notes you play, right? not the volume of the instrument output as such.

But for internal instruments, this doesn’t seem to be true? … like, if I’m playing a sutained internal instrument with a longer release, every time I put volume data in the volume column, this seems to affect not only the volume of the new note being played, but the volume of previous notes that are still ringing out as well.

I find that rather confusing…

So my problem is: how to trigger new notes with different velocities, without affecting the volume of already playing notes??


by adding another note column and using the new one to put another note.

so there is no way to gain individual notes???

not when using a single track for all notes of an instrument.

Tracks are there to group notes.
If you need different effect chains or track commands for each note, place the notes on different tracks, not on different track columns.

there is also another drwaback when using VSTi, as each instance can’t be played in more than one track at the same time, but they can be played in the same track on different track columns.

If you use two notes on two note columns, you will have a different volume column for each note column, so you can do this:

C-4 30 … E-4 20 … ----

note C-4 will be played at volume 30
note E-4 will be played at volume 20

C-4 30 … E-4 20 … ----
— 20 … — 30 ----

note C-4 will be played at volume 30, then 20
note E-4 will be played at volume 20, then 30

to add a note column, use the arrows on the top of the track.

suppose I want to create a piano solo then, just as an example - I’ll need a track column for EVERY velocity level I want to use? there is no way to use individual volume levels (e.g. “velocity”) on each individual note in the same track??

… am I the only one who thinks that this totally blows donkey’s kidneys?

No, now you got it a bit wrong… look at the above example It-alien posted again:

Here volumes 30 AND 20 are used at the first column and volumes 20 AND 30 are used at the second column. Each column row can have it’s own volume.

When using samples volume can be placed anywhere, when using VSTi:s or MIDI volume equals velocity and can only be placed beside a note.

Problem is that a new note with different volume on same column will also change the release volume of the previous note.
So if you record instruments with long releases (piano/strings whatever) it will be all f***** up. You have to manually move them to individual (empty) columns. Playing abit fast and you dont have enough columns.
If you dont know what I mean then try this:
Make an instrument (with samples) that has a long release. Now play very softly a short C-4 with your midi keyboard. You will now hear the note fade out. Then hit hard on C-5.
You will get my point.

This kinda sux yes… but also has it advantages. Baybe this should be an option in the instrument to decide how the volumecolumn vs release should be on NNA?

hello pysj, long time no see - remember me from the old days on #trax? ;)

but yes, you’ve nailed the problem exactly as I was trying to describe it. And while, as you say, it does have it’s advantages, like for gating some chords for example, that’s not really what it’s for … on VSTi’s, it controls the velocity, which is basically what it ought to do here as well - it would make more sense if it worked the same for VSTi and internal instruments.

plus, you already have a specialized command to adjust the track volume, and if you were playing chords and wanted to gate them, that would actually be easier to use, since you’d only have to adjust the volume once, instead of three times for every note …

a “column volume” command would resolve this problem, assuming that old songs would be automatically converterted - and then the volume column could work as you’d logically expect it to…


hmm, in music when talking in terms of velocity(speed) you actually mean Volume Velocity so, ofcourse the volume column will affect the volume(velocity) of the notes you play on your VSTinstrument.

you don’t have to be a smart-ass-physician to figure this one out :D
It kind of stands to reason that if you add something to what you already have you inevitably get more of it…
(I just love doing this with money) ;)
in this case it is sound… you will not only percieve the sound as wider and fuller but louder as well… it’s all about perception, see.

all in all, using velocity-sensitive VSTi’s and using samples(or internal instruments as you call them) in Renoise differs slightly.
A VSTi is like a Velocity-sensitive Synth whereas Renoise(when using samples) isn’t…
I guess if you would compare two hardware synths where one was velocity-sensitive and on wasn’t you would find simillar problems like the ones you experience…

that’s the problem, yes.

but what kind of ancient synthesizer, VSTi or hardware or otherwise, doesn’t even have velocity? it’s such an obvious simple feature … in fact, Renoise already performs per-voice activities, e.g. filtering and volume envelopes, per note - there is absolutely no reason why a per-note volume setting couldn’t be made possible in Renoise’s internal instruments just as it is in every other modern instrument.

The absence of this possibility is a design flaw, that’s all there is to it.

The official standpoint of the Renoise team can’t possibly be “velocity is useless”? if so, you’ll have to excuse me while I go and laugh really hard for the next two and a half hours ;)

hmm… there’s quite a few, really ;) but modern ones, I guess, is easily counted.

I can’t see what you’re getting at… Renoise HAS a per-note volume-setting!
(volume row00-40 or 0Cxx=set track volume) It just isn’t velocity-sensitive… here’s how I see it:

Velocity(sensitivity) is e.g a keyboard which can respond to the speed at which a key is depressed; this corresponds to the dynamics with which the player plays the keyboard. Velocity is as such an important function as it helps translate the performer’s expression to the music.
BUT! for this to work every note needs more than one sound(sample) and preferably as many samples as there are volume-units… in Renoise this would mean 64 samples per note12 notes per octave the number of octaves… if you use 4 octaves this will add up to 3072 different samples!! If not using samples for every volume-unit, I guess, you have to use some clever algorithm… these has to be pre-made/calculated since every sound has different characteristics…
The problem is that a VST-instrument is just that… an instrument which is pre-made…
whereas Renoise is a Tracker/Sequencer (tape-recorder if you like)… simply put it’s main purpose is to trigger samples or MIDI-commands using samples, VSTi’s or hardware… there are some commands in Renoise which can be used to give the illusion of velocity-sensitivity, though… 04xy, 9xx, for example…

I’m quite certain that they don’t think it’s useless but how on earth are they supposed to know what sample I load up, what characteristics it has and what settings it needs to make it sound right?

Enlighten me if I’m wrong, anyone?

This topic has nothing to do with multisampling (layering of samples) and how ‘realistic’ they will sound.
There is a simple problem with the current volume/velocity system in renoise, even if you only use a singel sample in your instrument:

This is a string that fades out after you release the key (off), NNA set to ‘note off’:

C-4 09

D-4 30 <-- here the release from the C-4 note raise from 09 to 30, causing an ugly and most unwanted jump in the sound for the c-4 note.
The c-4 note should always have volume(velocity) 09… and not be affected at all by the D-4 note.

@Mindplay… Hi there! Long time no see yes :) Who will ever forget you?
You still into some dsp stuff? Maybe you could help with some dsp for the native fx? :rolleyes:

I have a bit of a problem to understand as well… If I understand it correctly this last discussion is not related to the volume/gating discussion above, right? It’s about Renoise’s sample engine beeing velocity sensitive or not. Right now Renoise bases the sample volume on the velocity but afaik no other parameters can be controlled by velocity. And the volume sensitivity cannot be modified either. So if this is what you’re asking for lay out the details a bit more. It’s easy to say it doesn’t work but to find a good solution is harder…

?? I don’t get it really…

why don’t you provide an exmaple when you can’t be understood with words?

look at this one:
BugOrFeature.rns (hehe :rolleyes:)

what mindplay is saying is that when you set the volume to 03 on row 1C, both C-5 and E-5 get their volume set to 03, insted of only C-5, as one would probably expect.

This occurs because NNA is set to continue for instrument 00.

an easy workaround is explained after: you add a note column and separe the two notes.

but then mindplay says “what if I already have 10 notes columns playing?”

well, you add another track, why shouldn’t you?.

anyway, this ReNoise behaviour is quite misleading indeed, and we only have to decide if it is bug or a feature.


Renoise does not have a per-not volume setting (e.g. velocity) except for VSTi’s, where the volume column (as you’d expect) sets the velocity.

it has a per-column volume setting (the volume column), and it has a per-track volume setting (the C command). Note that I use the term “velocity” only to describe what would, in it’s simplest implementation, be “per-note volume” in Renoise, although there’s no reason why it couldn’t also be used for filter envelope control if it were implemented properly…

they’re not supposed to know anything. solution:

  1. change the volume column to work the same for internal instruments as it does for VSTi’s … so that it works like velocity, e.g. per-note volume. (You could even do other interesting stuff with velocity then, for example a velocity-to-filter-envelope-amount control in the instruments envelope panel, would be extremely useful) … also, the input from a MIDI keyboard would then work properly!

  2. add a new effect command to set “column volume”.

  3. the program checks the version number, and if prior to v1.3 (or whatever it be), it simple changes the old volume column into “column volume” effect commands.

this would work fine.

another possible solution, would be to simply add a new velocity column. in fact, this is probably the best solution, since it wouldn’t change the way you work with the sequencer, and the program wouldn’t need to change anything when loading older songs.

also, this would eliminate the ambiguity of the so-called “volume column”, which currently serves two different functions, depending on whether the information goes to the internal sample player or a VSTi. mapping the same data to control two different function depending on context is simply not good user-interface practice.

for those who still don’t uderstand why this is necessary:

that’s the best verbal explanation I’ve heard so far. If you still don’t get it, grab the song posted by It-Alien. Or just play a sustained string (on the internal sample player) with a long release, on your MIDI keyboard - press a key hard, then release and immidiately press a key soft, and hear for yoruself how the sustained note gets choked. This can’t by any right be called a “feature” :huh: … this is most definitely a good old fashioned “bug” :blink: … or a “design flaw”, as I would call it, since I’m sure this is how they intended to make it work, but they just never gave proper consideration to the consequences <_<

@pysj: I already offered to port mpReverb from MadTracker to Renoise, but they didn’t seem too interested, so I guess I’ll wait until the plugin SDK is released…

Mindplay :
well, most of the stuff you say is simply true :) Yes, we havnt designed the program from the beginning. You maybe know that we continued Noisetracker, so we never started from the scratch wich leads us to the problems and desgnflaws we have now. But this is of course no reason to keep everything as it is now. We just have to find a good solution that is also downwards compatible. And being downwards compatible is the biggest problem.

Thats impossible. How do you want to specify an extra command for a column right now ? If you use 10 notecolumns, you cannot specify the notecolumn volume with only 4 effectcolumns.

This might be an alternative. But I`m not sure if this “feels” intuitive.

Point for you :)

I didnt knew that you offered this. We would be stupid if we would not be interested, so could you contact me per mail if you still would like to port it to Renoise ? Would be great to have another native Reverb effect.

oh yeah, I didn’t think of that … well, you could enhance the pattern format to allow up to 5 effect columns, but that’s maybe going a bit far. the other solution would be a lot more elegant under any circumstances.

just switch off the volume column display by default, and keep the velocity column displayed by default instead - it’ll feel exactly the same as before, and for those few people who actually need to play with the column volume, they can just switch it on. I don’t see what’s not intuitive about it- it’s more intuitive if it works as expected, isn’t it?

the extra two-digit column will take up very little additional space. Plus it gives you the opportunity, as said, to add a velocity amount for the filter envelope on the internal sample player - then it starts to work like a real sampler! :)

great, I’ll be sending you an email! :)

Methinks this sounds messy. The only thing that needs to be done, really, is not letting the volume column affect notes after their noteoff or another noteon. This would better be fixed by having a compatibility toggle option, or perhaps an option for each instrument (sometimes this “bug” might be considered useful?).

90% agree with martinal, but forget about the option: no way the present behaviour could be considered useful

I really have to agree with both Martinal and mindplay here… :) First of all what Martinal says above would be a good fix to the first problem. But that doesn’t solve the velocity/volume issue.

To introduce one more column would be a bit confusing I guess. Especially if velocity column is defaulted to set the volume (on internal samples). By default you will then have two columns setting volume (even if one of them is hidden). I thought of an alternative solution to just have 2 columns like now and rename the “volume column” to “velocity column” and handle internal samples exactly the same way as VSTi/MIDI are handled. I.e. you set velocity for internal samples and by default this will change the volume, but you can also set up velocity to control filter, a combination of both and/or maybe other parameters. After thinking on this for a while I realized that changing VSTi/MIDI volume for single notes is a very common request (or rather question) so it would be stupid to apply this limitation to internal samples as well.

So the best way imho is to go with mindplay’s suggestion and create 3 rows. The third volume column could of course then not be used by VSTi/MIDI notes so this needs to be pointed out in some way (in manual and/or status bar).

But the problem as I see it is not whether a third column should exist or not, but rather how Renoise knows which parameters the velocity column affects. For a start volume needs to be controlled. This should then be located in the sample properties section as it only affects internal samples (VSTi/MIDI have their own settings). Looking at a patch editor here it seems a reasonable setting would be a slider going from -100% to 100% where 100% is how it’s working now, i.e. 100% sensitivity, 0% means full volume all the time and -100% would be reversed (high velocity = low volume). Ok, it seems kind of confusing but it’s the way many synths work afaik. Filter is also commonly controlled by velocity so a similar slider in the filter effect would do the trick (btw, this was here in previous versions of Renoise’s filter, right?). Now the question is whether more parameters should have velocity or not. Is there even a need for a general solution to control any parameter with velocity? This could really mess up the interface though. To allow for this something like the remote mapper could be used for velocity as well, but I don’t like the idea too much.

To complicate it all even more the synth I was looking at have 7 different velocity curves and min/max velocity range. And what about aftertouch/pressure? Ok, all a bit overkill but I thought I’d mention it at least.