dexed icon indicating copy to clipboard operation
dexed copied to clipboard

MPE - how to have several pitch bends on several channels?

Open gexahedron opened this issue 2 years ago • 1 comments

Hi, I'm trying to used dexed within Supercollider, as a VSTPluginController, in a MPE mode, for microtonal purposes. I can't figure out, how pitch bend should work. My expectation was, that if you send 2 different pitch bend values to 2 different channels, they will be independent from each other. This kind of approach works on Surge XT, and with chipsynths from Plogue. However, this doesn't work with Dexed - pitch bend seems to be global. Example code, how i use Dexed in Supercollider:

// 1. define synthdef
(
SynthDef(\vst_plugin, {|out, gate = 1|
	var sig = VSTPlugin.ar(numOut: 2);
	Out.ar(out, sig);
}).add;
)

// 2. init synth
a = Synth(\vst_plugin);

// 3. init vst plugin controller
c.open("Dexed.vst3");

// 4. play notes
(
p = Pbind(
	\type, \vst_midi,
	\vst, c,
	\midinote, Pseq([60]),
	\chan, 3,
	\dur, Pseq([1]),
	\amp, 1.0
);

q = Pbind(
	\type, \vst_midi,
	\vst, c,
	\midicmd, \bend,
	\val, Pseq([8192]), // def 8192, min 0, max 16383
	\chan, 3,
	\dur, Pseq([1]),
);

t = Pbind(
	\type, \vst_midi,
	\vst, c,
	\midinote, Pseq([64]),
	\chan, 4,
	\dur, Pseq([1]),
	\amp, 1.0
);

v = Pbind(
	\type, \vst_midi,
	\vst, c,
	\midicmd, \bend,
	\val, Pseq([4192]), // def 8192, min 0, max 16383
	\chan, 4,
	\dur, Pseq([1]),
);

r = Ppar([p, q, t, v]).play;
)

So, [p, q] are commands for one note on channel 3, [t, v] are commands for the other note on channel 4.

Should I do it differently somehow?

gexahedron avatar Dec 01 '22 13:12 gexahedron

Okay, as an alternative, what works for me right now - monophonic mode, without MPE, and playing only a single note in a single VST plugin instance

gexahedron avatar Dec 11 '22 12:12 gexahedron