hey, i have seen this great addFxToBus wrapper Parametric Equalizer - #2 by jamshark70 and was wondering if somebody has created something similiar for NodeProxies. After doing a lot of community work lately, i was hoping that somebody did that already before investigating all the helpfiles. Thanks alot ![]()
At some point i was trying to come up with a ProtoDef for that, but was not really sure how to figure out the params of each VST, which one might want to use, to then be able to modulate these via LFOs.
(
ProtoDef(\makeVST) { |inputProxy, plugin, params = #[]|
~initDef = { |self|
VSTPlugin.search;
};
~init = { |self|
self.makeNodeProxy;
self.makeController;
};
~makeNodeProxy = { |self|
self.nodeProxy.clear;
self.nodeProxy ?? {
self.nodeProxy = NodeProxy.audio(s, 2);
};
self.nodeProxy[0] = \vst -> {
var numChannels = 2;
VSTPlugin.ar(
input: NamedControl.ar(\in, 0 ! numChannels),
numOut: numChannels,
params: [],//self.params,
info: self.plugin
);
};
self.nodeProxy.set(\in, self.inputProxy);
};
~makeController = { |self|
self.controller = VSTPluginNodeProxyController(self.nodeProxy).open;
};
};
)
(
~vst = Prototype(\makeVST) {
~inputProxy = topEnvironment[\pulsarMLP][\synth].nodeProxy;
~plugin = "kHs Filter Table.vst3";
~params = [
0, \pos.kr(0.5),
1, \cutoff.kr(0.5),
2, \res.kr(0.25),
3, \mix.kr(1)
];
};
)
After a VSTPlugin.search, you can first find the plugin by name:
// operating on symbols
k = VSTPlugin.pluginKeys.detect { |key| key.asString.containsi("decentsampler") };
-> DecentSampler.vst3
Then this points to a VSTPluginDesc:
VSTPlugin.plugins[k].dump
Instance of VSTPluginDesc { (0x7fd1a1a24ab8, gc=18, fmt=00, flg=00, set=05)
instance variables [24]
key : Symbol 'DecentSampler.vst3'
path : "/home/xxx/.vst3/DecentSampler.vst3"
name : "DecentSampler"
vendor : "Decidedly"
category : "Instrument|Synth"
version : "1.13.0"
sdkVersion : "VST 3.7.12"
id : "ABCDEF019182FAEB446C647944736D70"
inputs : instance of Array (0x7fd1a0297a68, size=0, set=0)
outputs : instance of Array (0x7fd1a1a23d98, size=17, set=5)
parameters : instance of Array (0x62dad6c3a178, size=34, set=6)
programs : instance of Array (0x62dad6ab60b8, size=1, set=2)
presets : instance of Array (0x7fd1a004c398, size=0, set=0)
editor : true
editorResizable : true
synth : true
singlePrecision : true
doublePrecision : false
midiInput : true
midiOutput : true
sysexInput : false
sysexOutput : false
bridged : false
prParamIndexMap : instance of IdentityDictionary (0x7fd1a1597db8, size=5, set=3)
}
Then .parameters is an array of Events, containing some metadata about parameters:
VSTPlugin.plugins[k].parameters.do { |parm| parm.postln }; ""
('name': Main Volume, 'label': dB, 'automatable': true)
('name': Main Tuning, 'label': semitones, 'automatable': true)
('name': , 'label': , 'automatable': true)
('name': , 'label': , 'automatable': true)
('name': , 'label': , 'automatable': true)
... and a lot more of those
If you have the parameter name, you can also get its index by .findParamIndex.
hjh
thank you very much. I will have a look into these ![]()