Global Velocity Modulators - and Arps.....
-
Is there any way to get a Global Velocity Modulator to ignore incoming note values if these are generated by an Arp?
-
@Lindon no but you can use script voice start modulator and then return 1 if it‘s an artificial event.
-
@Christoph-Hart said in Global Velocity Modulators - and Arps.....:
@Lindon no but you can use script voice start modulator and then return 1 if it‘s an artificial event.
Thanks - but Im not sure how that helps me , perhaps some explanation of my use case:
I have 3 Arps - each is transmitting notes on Channels 14, 15, and 16....
I have a set of "voices" (synthesiser groups) that include a "MIDI filter" for MIDI Channel numbers...
So now "voices" can be assigned(or not) to any arp, and if not assigned will ignore the arp generated notes....... BUT:
These "voices" have a filter, and a Global Voice Start modulator, which is connected to a Global Velocity modulator... so normally the Global Velocity modulator passes its values into the filter modulator and all is good..... BUT:
The Global Velocity Modulator is "listening" to the APR notes.... and passing its value into the Voices filter freq.
So the voice isnt playing the arp notes, but the Filter is listening to the Arp notes velocities, whihc is wrong...
-
@Lindon ok hang on Im on the way to it....
function onVoiceStart(voiceIndex) { if(!Message.isArtificial()) { Console.print("Send the actual note velocity"); Console.print(GlobalVeloMod1.getCurrentLevel()); } }
OK last bit -- (Ive never used this type of Global Modulator before), how do I "send" the value from here???
-
@Lindon Ok problems....
this is my code in my Global Script Voice Start Modulator
function onVoiceStart(voiceIndex) { if(!Message.isArtificial()) { Console.print("Send the actual note velocity"); Console.print(GlobalVeloMod1.getCurrentLevel()); return GlobalVeloMod1.getCurrentLevel(); } }
This generates the following in the Console:
Script Voice Start Modulator1: 0.4972764253616333 Script Voice Start Modulator1: Send the actual note velocity Script Voice Start Modulator1: 0.4972764253616333 Script Voice Start Modulator1: Send the actual note velocity Script Voice Start Modulator1: 0.5797507762908936 Script Voice Start Modulator1: Send the actual note velocity Script Voice Start Modulator1: 0.4972764253616333 Script Voice Start Modulator1: Send the actual note velocity Script Voice Start Modulator1: 0.5268775224685669
And I have a Global Voice Start Modulator in the Synthesiser Filter:
So this works for every note EXCEPT the first note - which is silent(as the freq is being set = 20HZ - so I assume 0 is being sent...)
What am I doing wrong?
-
@Lindon said in Global Velocity Modulators - and Arps.....:
function onVoiceStart(voiceIndex)
{
if(!Message.isArtificial())
{
Console.print("Send the actual note velocity");
Console.print(GlobalVeloMod1.getCurrentLevel());
return GlobalVeloMod1.getCurrentLevel();
}
}damn works fine in a simple project....without an Arp - but fails with anything with an arp in it...
-
- Use the script modulator as global modulator INSTEAD of the velocity modulator. You need to basically reimplement the velocity logic, but that shouldn't be more than two lines of code
- Always return a value. Your false branch doesn't return anything which will probably be converted to a zero, so silence.
return 1.0
is your friend as last statement.
-
@Christoph-Hart said in Global Velocity Modulators - and Arps.....:
- Use the script modulator as global modulator INSTEAD of the velocity modulator. You need to basically reimplement the velocity logic, but that shouldn't be more than two lines of code
- Always return a value. Your false branch doesn't return anything which will probably be converted to a zero, so silence.
return 1.0
is your friend as last statement.
problem with 1 is I want to retain the ability to have the user "draw" the curve they want.....
But point 2 is definitely t-shirt time for me... thanks..
I think my simplest solution may be to move the Arps AFTER the Global Modulators....as the retrigger functionality in the Global LFOs is getting screwed over too....
-
@Lindon said in Global Velocity Modulators - and Arps.....:
I want to retain the ability to have the user "draw" the curve they want.....
Add a table to your modulator
-
@d-healey to my ScriptVoice Start Modulator?
-
@Lindon Yeah, it's just like any other script, you can give it a gui and then read from the table to scale the velocity.
-
@d-healey this. That's why I said "two lines of code" and not "one line of code" :)
-
@d-healey said in Global Velocity Modulators - and Arps.....:
@Lindon Yeah, it's just like any other script, you can give it a gui and then read from the table to scale the velocity.
Nope not getting it... Script Voice Start modulators... can use ScriptNode, but I cant see where I build a GUI..or how I get that to show up in the plugins GUI...
-
@Lindon said in Global Velocity Modulators - and Arps.....:
can use ScriptNode
Oh right, this is one of those things. Because everyone uses script node for the node part and not the scripting the interface designer isn't shown...
I use a custom workspace so I can see both, you can also add the interface designer as a floating tile.
You should create the GUI through scripting for your modulator rather than adding controls in the interface designer with the mouse. That way when you reuse your modulator in another project the GUI will be there too.
@Lindon said in Global Velocity Modulators - and Arps.....:
show up in the plugins GUI...
Connect the table on your UI to your modulator via processor/parameter ID - just like any other module.
-
@d-healey right LOL - another thing in HISE that I should "just know about" even tho there's no clue in the default UI how or where to find it..
-
@Lindon yes in an ideal world the script voice start modulator should show the interface designer instead of the scriptnode workspace but that shouldn‘t keep you from slapping one lousy table on the modules interface by scripting.
That makes it three lines of code…