[SOLVED] Volume Commands with VSTs

Started by I-S3-O, October 14, 2018, 23:20:58

Previous topic - Next topic


I'm trying to figure out how I use the standard volume commands with a VST. Currently I'm using Crisalys, and it's been really tricky (or just weird) in how the volume commands tie into it.

By the way, by "volume commands" I don't just mean the "v00" you can do in the third cell. I also mean stuff like the Mxx (Channel Volume), Hxx (Vibrato), Dxx (Volume Slide), Note Cut, and Note Off.

My problems for each one:
It's weird when you try to use it as a velocity setting with the VST. For some reason "v64" doesn't read as the highest setting for the velocity. It instead reads as the last input you used, or something like that. So if you had v32 and then used v64, it will still play the VST at 32. It's not unless you use v63 that it uses the semi-appropriate level. However, that's not always the case. When I realized that v63 was the magic number, I tried to "fake" a note cut (since the real one wasn't working for me) with a quick low volume setting and then push the sound back to 63 right after. It didn't work; I put it to v00, and it stayed that way regardless of whatever setting I used afterwards: v64, v63, v54 -- it didn't matter. So then I unchecked the "use volume commands and velocity" checkbox, and everything worked okay then. Hmm...seems weird that I can't use velocity correctly, or maybe I'm misunderstanding its purpose?

Mxx / Hxx / Dxx:
They don't seem to work with a VST at all. Is there any way I can make them work, though? Like, via a parameter or something (i.e. SFx)?

Note Cut / Note Off:
They seem to work the exact same way, in that Note Cut doesn't cut off the note, but pushes the input to the VST's envelope I guess? Also, recognizing that it may just be the VST I'm using, it seems that, when turning the Release time on the VST, the Note Off is very touchy concerning the fade out of the note. Turning the Release knob on the VST only a few pips turns the fade out from too long to none at all. Does the fade out on the MPT Instrument panel have anything to do with the release time on the VST?

Thanks for the help in advance. I hope I didn't misuse this post by asking too many questions at once.


Mxx: I don't think this command is actually supposed to work with VST instruments, as their audio output is not affected by channel volume. From my understanding, it only works with sample-based instruments (the same as with the sliders on the Channel setup on General tab: https://wiki.openmpt.org/Manual:_General#Channel_Setup).

Hxy: Vibrato should work. I have an electric guitar VST instrument, and using Hxy commands seem to work with it, but it may depend on the plugin.

Saga Musix

The most important thing that must be understood is that the volume concept in trackers is inherently incompatible with that of MIDI, and VST is based on MIDI. The concept of tracker note volume where you can change the volume of a single note after it has been triggered does not exist in MIDI as a standardized concept; there are some ways to change the volume of a MIDI note after it was triggered, including channel volume (which affects all notes on that specific MIDI channel) and polyphonic aftertouch (few devices and plugins support this, and it can be used to modulate anything, not just volume).

What OpenMPT does by default is treat volume commands next to notes as MIDI velocity, i.e. the volume at which a note is triggered. By default volume commands that are not next to a note do not do anything, but they can be configured to change the MIDI channel volume (affecting all notes on that channel) or change the dry/wet ratio of the plugin (affecting all notes on that plugin). You can uncheck "volume commands with notes are velocities" to also apply this behavior to volume commands next to notes.
You can send the results of Mxx, Dxx and other volume commands to plugins as well, but since there is no standardized way to do so, you will have to do it yourself using Zxx macros. Macro letters u and v take these volume commands into account.

Hxx works as well. But again, pitch bends in trackers are inherently incompatible to those in the MIDI world, so OpenMPT needs to know the pitch bend range the plugin is internally configured to use. You need to configure it properly in the instrument settings or the pitch bends / vibrato will sound wrong.

Last but not least, guess what... the concept of Note Cut / Note Off / Note Fade also does not translate to the world of MIDI. There is only "note off", which is what == and ~~ map to. ^^ on the other hand sends a note-off for all playing notes, and in addition sends the "all notes off" and "all sound off" CCs in order to hopefully kill all sound instantly. Not every plugin handles these CCs very well though. How the plugin responds to a Note Off in particular is completely up to the plugin and nothing that OpenMPT can influence. OpenMPT's fade-out does not influence the plugin, unless you send MIDI macros including the "u" macro letter, as described above.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.


So essentially, they don't work because they're not supposed to. OK. At least I know now.

I guess I'll have to fiddle around with this plugin to get it to do what I want. It's a shame I don't a better granular control of the fade out, though. Like I said, it's very finicky. But at least I still have those Zxx macros to use.

Thanks for the insight on this. I appreciate it.