I am needing to accomplish being able to slope the MIDI volume of say, the bottom 5 or top 5 MIDI notes of the note range in a block from silence to its normal.
I am thinking in terms of a Kronos that allows a note range (which is analogous to a GP MIDI In block’s range) but the Kronos allows you to define a few notes for its slope. On a Kronos, that is the Keyboard Range setting. That changes the volume without changing the velocity timbre of the note.
Similarly, on a Kronos, it allows sloping for the Velocity Range.
How can I accomplish this behavior with GigPerformer? I would have thought this behavior would be on the MIDI In block itself where I could choose a few notes at the end of the range to have a volume slope or a velocity slope.
I’ve seen articles to suggest doing this with a widget, but I can’t see a way to have a MIDI note number to be related to the MIDI note volume. I guess with that technique, you could have define extra MIDI In blocks for the slope range but even then I couldn’t figure out how to get from 0% to 100% for MIDI note volume or MIDI note velocity.
Any comments much appreciated. I have spent quite some time reading articles, watching YouTube and exploring GP on my own, … any step-by-step sample would be great. Thank you!
Map the Note Follow parameter of a MIDI in block to a widget. Then link that widget with another widget that controls a mixer volume (say) and then use a scaling curve on the widget to control the desired amount of volume change needed.
I can think of some “inelegant” solutions that might work, even though I have little doubt you should follow DHJ’s suggestion (Main GP Developer vs. me (shlub, hah!)).
When you say “midi volume” I am not sure if you mean “velocity” (which is very often connected to volume, among other things, like higher harmonics, etc.) or audio volume.
For example, if velocity will accomplish what you want you could set up different 6 different midi in blocks, one for each note and adjust the max velocity in the velocity curve section of the midi in block.
Or if velocity does not do it for (you need adjust actual volume), you could set up 6 instances of the plugin and adjust the volume within each plugin.
Or you could connect each of the 6 plugins to a mixer channel and use that to adjust volume. (and, if you want, you could connect a widget to each mixer channel).
Range from c1 .. c3
The fade-out range should be from g2 .. c3
Notes played in this range fade out in volume
Notes played below g2 should not be affected.
How should all the mentioned solutions work?
Sure you could use multiple midi in blocks for each note between g2 and c3 and connect 5je sample plugin to each midi in block and use separate gain controls.
You use the Note Follow parameter to control the value of a widget. As you play higher (or lower) notes, then the widget value will change (to follow the number number)
You then link another widget to that widget and map it to the volume (gain) of a regular mixer plugin.
Then you adjust the scaling curve of that second widget because that scaling curve now represents the function “Note Number” —> “Volume”
Yes that will work perfectly when you play single notes.
But what happens when you play a chord and hold the keys down and then you play notes which
lower the volume?
The volume is for the whole range, right?
You can’t have it both ways - if you want the volume to reduce as you player lower notes, then you can have that — if you want to only depend on the first note you play and have the other notes in a chord play at the same volume of that first note, then you’d have to use scripting to keep track of what was the “first” note down
Understand, but I think @jcarlburg wants that the upper or lower split points provide a volume curve.
So each note has a different volume no matter what other notes are played and this is not possible with just controlling a main volume
Exactly.
The workaround which David mentioned could eventually mimic the desired behaviour, but only as it isn’t expected that notes which are played at the same time, but outside the “slope range”, will keep their original volume, which they would’nt do.
Regarding the velocity, this is something that can be done.
Maybe a little scriptlet was the right thing to do this job…
But as mentioned before, reducing velocity might cause a diffrent effect than just lowering the volume, if any effect at all (i.e. organs) - so it’s not sure that this would always be helpful.
Synthesizers (i.e. a Kronos) are able to control this, because it’s part of their tone generating modules. Gig Peformer doesn’t have any own tone generators to do such things.
Let’s forget about volume for a MIDI note. That’s actually not a MIDI spec value. (I had seen a slope in the Kronos that sloped volume for the keyboard range, as well as a slope for the MIDI velocity). Let’s deal with MIDI note velocity only.
So …
Define a MIDI In block, and for example purposes set its range from C2 to C4.
Attach a virtual instrument to that block and on to the audio out so we can hear it respond.
Define a button widget on the rackspace interface, and assign it to the MIDI In block, NoteFollow parameter 299. This will let us turn NoteFollow “on”.
Define a knob widget and assign it to the MIDI In block, NoteFollowValue parameter 300.
Test it at this stage. Turn the NoteFollow button “on” and playing within the range of C2 to C4 will change the NoteFollowValue from 0 to 127. (The MIDI In block key range is what defines the values of 0 to 127 for the NoteFollowValue.)
All is good at this point.
Now: How do we link this NoteFollowValue to the MIDI velocity value of the MIDI note? Assume we don’t take any steps to modify the velocity curve so that it is a line from 0 to 127. What we need to do is multiply that fraction of velocity to the actual velocity of the note.
For example, if the bottom note in the range is played, it would be the value of 0. So we would need to multiply 0/127 with the actual MIDI velocity of the note, using a velocity of 96 as an example, so 0*96=0 which is the MIDI velocity that needs to get passed from the MIDI In block to the virtual instrument.
Similar to that example, say the middle note in the MIDI In key range. That value would be 64. So we would need to multiply 64/127 with the actual MIDI note velocity using 96 as the example, so 64/127 * 96 = 48. How do we send a modified MIDI velocity value of 48 on to the virtual instrument?
It seems to me that this might need a GP Script to handle this. Something like taking the NoteFollowValue in the key range, modifying the MIDI velocity. and passing the modified MIDI velocity on to the virtual instrument. If anyone is a GP Script whiz, it would nice to get a code snippet.
I could sure envision have a slope on each end built right in to the keyboard range on MIDI In blocks.
I wrote a scriptlet to flexibly set a note range with a lower and upper splitpoint and a selectable number of notes for the velocity slope (up to 1 octave). The resulting velocity value for the played notes within the lower and upper slope areas will then be evenly adjusted over the corresponding key range.
That way the scriptlet could also be used to set up various splits for diffrent sounds, but with overlapping key ranges (velocity wise). Just put it between a MIDI-In block and a VST. You could also use multiple scriptlets being fed from one single MIDI-block…
The parameters of the scriptlet can then be mapped to widgets and/or midi controllers.
I think, this could be a helpful little tool for some occasions.
Note: There isn’t any checking for meaningful settings, so you theoretically could set the higher splitpoint lower then the lower splitpoint… i don’t know how “robust” GigPerformer is, regarding such unwanted eventualities… just be aware of that, and better don’t do it!
Thank you for your comments. I agree as of yesterday’s posts. The volume can’t be sloped because it is related to the tone generation engine - there is no such thing as MIDI Note Volume in the MIDI specifications. Only MIDI Note Velocity can be modified.
An example would be a split that would have trombones and baritones in the low to mid range, gradually bringing in trumpets in the mid range to the high range while the trombones/baritones slope away. I use that type of layer/split on Final Countdown by Europe and even layer in some pipe organ in the bottom end for the pipe organ’s sweet spot range. I even have a top trumpet layer that turns into trumpet fifth chords on the high end. Everything on that program layer/split is gradual.
Another example would be a saxophone layer split that uses a tenor sax in its sweet spot range that changes to an alto sax for its sweet spot range.
MIDI velocity could accomplish that velocity slope effect in most cases for virtual instruments that respond to volume/timbre via MIDI velocity.
I concede that MIDI Channel Volume CC#7 and MIDI Expression CC#11 pass through to a virtual instrument to change the volume of the entire virtual instrument and that there is no such thing as MIDI note volume.
Ok, so why can’t you do that with a cross fade in GP?
Take two mixer faders, attach them to widgets that are linked. Invert one of them and then link a third widget to the note follow value parameter
Set scaling curves to suit and as you move up or down the keyboard you will get cross fading