Using expression pedal to control rack gain.
-
- KVRer
- 17 posts since 6 May, 2010 from UK
Hi there,
I'm using my keyboard's expression pedal to control the output gain of a rack. It is directly mapped using the 'Assign MIDI controller' option on the slider itself.
The only problem with this seems to be that the behaviour of the pedal is linear (CC 11,0-127) and the behaviour of the slider is not, since it uses dB. This results in a jump in volume from silent to 'quite distinct' with the smallest amount of pedal at the bottom of the range, but then at the top of the range it takes quite a big movement to affect the volume even by a small amount.
I need a way of applying a controller map to MIDI data being sent to the slider to make its response more in line with what I would expect from a normal MIDI expression pedal.
Is there a way to do this?
In fact, even if there is a way to do this, is the sensitivity of the slider enough to create a smooth response at its lowest values? Would it be possible in a future release perhaps, to implement a choice between a mixer style fader in dB and a MIDI controller style linear response?
Alternatively, does anyone know of a MIDI expression pedal VST plugin which creates the same effect? Most of the fader plugins I've tried either don't work at all or have the wrong range etc.
BTW, I usually suppress volume and expression events at plugin level and do expression adjustments over the whole output because I usually want the volume pedal to affect everything and the response of individual plugins to volume and/or expression events is too unpredictable.
I'm using my keyboard's expression pedal to control the output gain of a rack. It is directly mapped using the 'Assign MIDI controller' option on the slider itself.
The only problem with this seems to be that the behaviour of the pedal is linear (CC 11,0-127) and the behaviour of the slider is not, since it uses dB. This results in a jump in volume from silent to 'quite distinct' with the smallest amount of pedal at the bottom of the range, but then at the top of the range it takes quite a big movement to affect the volume even by a small amount.
I need a way of applying a controller map to MIDI data being sent to the slider to make its response more in line with what I would expect from a normal MIDI expression pedal.
Is there a way to do this?
In fact, even if there is a way to do this, is the sensitivity of the slider enough to create a smooth response at its lowest values? Would it be possible in a future release perhaps, to implement a choice between a mixer style fader in dB and a MIDI controller style linear response?
Alternatively, does anyone know of a MIDI expression pedal VST plugin which creates the same effect? Most of the fader plugins I've tried either don't work at all or have the wrong range etc.
BTW, I usually suppress volume and expression events at plugin level and do expression adjustments over the whole output because I usually want the volume pedal to affect everything and the response of individual plugins to volume and/or expression events is too unpredictable.
-
- KVRer
- Topic Starter
- 17 posts since 6 May, 2010 from UK
I'd rather not use volume or expression on the actual plugins. This is because the response of the plugins tend vary from case to case and often channel to channel within the plugin. The reason I want to have this as a blanket over the whole output is for consistency across the whole lot - so it doesn't matter whether a sound is on Kontakt or Hypersonic etc.
-
- KVRAF
- 2310 posts since 13 Apr, 2008 from Germany
I agree that such nonlinear behavior can be annoying.
There are several options that come to my mind:
1. A non linear CC filter that works alike the velocity curve.
Problem: by scaling the midi CC vaules itself you lose steps and 127 steps are already not much.
2. 14-bit "CC's"
Problem: few midi sources can produce this.
3. Special response curves for Cantabile sliders
Problem: not known - but I have the feel Brad could not like it...
4. Maybe there is a VST that can be automated by the pedal in more convenient ways??
Discussion open - and other ideas?
There are several options that come to my mind:
1. A non linear CC filter that works alike the velocity curve.
Problem: by scaling the midi CC vaules itself you lose steps and 127 steps are already not much.
2. 14-bit "CC's"
Problem: few midi sources can produce this.
3. Special response curves for Cantabile sliders
Problem: not known - but I have the feel Brad could not like it...
4. Maybe there is a VST that can be automated by the pedal in more convenient ways??
Discussion open - and other ideas?
Best regards, TiUser
...and keep on jamming...
...and keep on jamming...
-
- KVRist
- 69 posts since 2 Sep, 2006
I can't think of anything simpler, for either 7 or 14 bit values.TiUser wrote: Problem: not known - but I have the feel Brad could not like it...![]()
All this is, basically, is a simple translation table. The default translation table is the current set of 0-127 values, *but* divert the response through a simple routine to use those custom values. Then have routines to select a set of predefined response curves or draw your own and then just copy those values into the table -- voila -- instant custom response curves for every single range.
Of course I don't have the source code to do this, but I think the way Brad's filters operate is at least 90% of the work already done.
-
- KVRAF
- 2310 posts since 13 Apr, 2008 from Germany
I am not about the "code" but the philosophy how to do it... The code to be put in is just a result of this consideration, not the source of decision (and wisdom or truth).dluther wrote:I can't think of anything simpler, for either 7 or 14 bit values.TiUser wrote:Problem: not known - but I have the feel Brad could not like it...
All this is, basically, is a simple translation table. The default translation table is the current set of 0-127 values, *but* divert the response through a simple routine to use those custom values. Then have routines to select a set of predefined response curves or draw your own and then just copy those values into the table -- voila -- instant custom response curves for every single range.
Of course I don't have the source code to do this, but I think the way Brad's filters operate is at least 90% of the work already done.
VST parameters use normalized real numbers in [0.0...1.0].
Midi values are usually natural numbers in [0..127] (unsigned).
As far as I know 14bit midi values are not supported in Cantabile at all but are basically [0..16384].
No clue what Cantabile uses for it's own volume sliders/knobs. But to get a linear volume feel you need some exponential behavior - which is already done somehow.
So we deal with at last 3 value number (and even more scaling) systems here.
The "problem" is not that you can convert anything to everything but the numerical consequences. Using table precalculation or life fomulas is mostly irrelevant for precision if done proper.
Once a strategic decision is made poorly (like midi pass through in the midi routing table) it can't be easily taken back because the data occurs in sessions then and has to be supported. On a change you have to support both to be compatible with legacy data... not a very great situation.
This is why I prefer to discuss options first - including their consequences before anything is coded.
Just my 2 ct so far - I know well that it often works different in software industry and developers pay the price of that madness... ever searched the ct inaccuracies in a payment system based on float numbers?... no chance, it's an inherent problem with conversion and binary based half exponential floats - and simply the wrong choice and design.
Best regards, TiUser
...and keep on jamming...
...and keep on jamming...
-
- KVRAF
- 1981 posts since 29 Feb, 2004
You may try the mGUI mgui-gain.

Just extract the contents of the RAR-file to your VstPlugins folder (keeping the folder-structure intact)
The "Volume" is set to CC-11 and uses the standard Voltage-dB curve ... the current range is set from -32dB to +6 dB, this can be changed in asData\inifiles\gain.ini >> [prms]:

Just extract the contents of the RAR-file to your VstPlugins folder (keeping the folder-structure intact)
The "Volume" is set to CC-11 and uses the standard Voltage-dB curve ... the current range is set from -32dB to +6 dB, this can be changed in asData\inifiles\gain.ini >> [prms]:
Code: Select all
p-8=-32,6,1,6,0,'Volume','dB',~2,z1013,vB0000B-
- KVRer
- Topic Starter
- 17 posts since 6 May, 2010 from UK
Many thanks for this. I'll give it a go and see how I get onasseca wrote:You may try the mGUI mgui-gain.
Just extract the contents of the RAR-file to your VstPlugins folder (keeping the folder-structure intact)
The "Volume" is set to CC-11 and uses the standard Voltage-dB curve ... the current range is set from -32dB to +6 dB, this can be changed in asData\inifiles\gain.ini >> [prms]:Code: Select all
p-8=-32,6,1,6,0,'Volume','dB',~2,z1013,vB0000B
-
- KVRAF
- 2310 posts since 13 Apr, 2008 from Germany
Thanks asseca for providing a solution to my suggestion #4... 
[Edit]
Nevertheless I think this is just a workaround and the basic issue should be addressed in Cantabile itself. Wasting CPU for helper VST's for things that should be done in the host is not the best thing one can imagine...
[Edit]
Nevertheless I think this is just a workaround and the basic issue should be addressed in Cantabile itself. Wasting CPU for helper VST's for things that should be done in the host is not the best thing one can imagine...
Best regards, TiUser
...and keep on jamming...
...and keep on jamming...
