Function for MIDI note splitter in sequence? for VSTi polyphonic. (Solved with ReaJS)

Official support for: mutools.com
Post Reply New Topic
RELATED
PRODUCTS

Post

Hi. I read Mux manaul but I didn't find MIDI note splitter in sequence function.

For example. I want to make a VSTi polyphonic that new note doesn't truncate previously triggered envelope. It would be good for real polyphonic long soundscape. For VSTi polyphonic, there should be 2 or 3 more same (VSTi + Effect + Envelope) parallel line which receive MIDI note from same source but in sequence.

So the suggested module just need to send incoming MIDI note to separate line like 1, 2, 3, again 1, 2, 3, again 1, 2, 3, ...

If it's possible, we can make a polyphonic synths which consist of VSTi synth + VST Effect + Mux Envelope. This structure may take up some amount of CPU power. But computing power is already powerful and grows incredibly.

And. The function would be easy to make. Not a complicated function. So simple function.
Last edited by JongHo on Thu Mar 20, 2014 3:58 am, edited 1 time in total.

Post

In the MUX deep modular editor, insert a "Note Key Splitter" module and create 12 instances of the VSTi you want to make polyphonic then connect all 12 audio outputs to the audio output of the MUX. Now each note of the octave will be played by its own VSTi. This way you could even make subtle or explicit changes in sound for each note. Hope this helps.

Post

Thank you for your solution. I will try it. Also that function would be a good addition, I hope.

Post

Try the following:
Setup your 3 instruments in parallel inside a MUX.
Have them all run at the same time from the same notes.
Now you setup the outputs of these instruments through amplifier modules that are controlled by e.g. pitchbend and/or modwheel.
If you have a Roland or Korg HW keyboard, you have a nice "stick" to blend in one or the other sounds.
To see how this can be done look inside the Effects/experimental units/live effects. Inside, at the bottom, is a Live Fiter, that uses exactly that method to control 2 filter. Replace the filters with amplifiers and you should be ready.

Post

I solved this problem by inserting ReaJS into Mux and made some codes. I am not a seasoned programmer, so I referenced ReaJS manual and examples. I don't understand MIDI message mechanism well. This code will transmit incoming MIDI notes to channel 1, 2, 3 again 1, 2, 3, .. (You can assign the number of channels up to 5) So connect MIDI input to this ReaJS and then connect ReaJS MIDI output to MIDI Channel Splitter. And connect output of MIDI Channel Splitter to each plugins that have same setup. MIDI note ON, OFF, pitch bend, .. will be trasmitted to each channel properply.

So this is good for plugin polyphonic. For example, combine Synapse Audio Dune BE(CE) and Mux Multi-Point Envelope. The sound of Dune is awesome but it provides just simple ASDR envelope. Without this polyphonic mechanism, we can only receive mixed stereo output from Dune made from several notes and new note will truncate the previously triggered Mux envelope. With this polyphonic mechanism, each note makes its own sound from the connected its own Dune. the sound from a note is not mixed with the sound from other note. And the sound is processed completely with its own Mux envelope and LFO during its entire amp envelope even if a new note comes. New note doesn't truncate the previously triggered envelope of the previous note. So every note makes its sound separately by its own plugin and its own envelope and LFO.

Code: Select all

desc:MIDI Note Splitter In Sequence BY JongHo

slider1:3<1,5,1>Number Of Channels // up to 5, default to 3

in_pin:none // No Audio Input
out_pin:none // No Audio Output

@init
ChannelCounter = 0;
PreMsg23 = 0;
NoteON = 9;
NoteOFF = 8;
GateOpen = 0;
PreChannel = 0;

@slider // When user changes the slider value
ChannelCounter = 0;
ChannelMaxN = Slider1;

@block // MIDI Processing
while
(
   midirecv(0, msg1, msg23);
   (msg23 != PreMsg23) ? ( // Process when a new event comes for CPU efficiency
      PreMsg23 = msg23;
      Gate = msg1 & 240;
      (Gate == NoteOn*16) ? ( // When Note ON
	 GateOpen = GateOpen + 1;
         PreChannel = ChannelCounter;
         (ChannelCounter == ChannelMaxN) ? (ChannelCounter = 0;);
	 ChannelCounter+=1;
         NewMessage = (msg1 & 240) + ChannelCounter - 1;
         midisend(0, NewMessage, msg23);
      ):( // When Not Note ON, => Note OFF, Pitch Bend, Mod Wheel, ..
         (GateOpen == 1) ? ( // One Note Open
            NewMessage = (msg1 & 240) + ChannelCounter - 1;
            midisend(0, NewMessage, msg23);
            (Gate == NoteOFF*16) ? (GateOpen = 0;);
         );
         (GateOpen == 2) ? ( // Two Notes Overlaps
            (Gate == NoteOFF*16) ? (
               GateOpen = 1;
               NewMessage = (msg1 & 240) + PreChannel - 1;
	    ):(
               NewMessage = (msg1 & 240) + ChannelCounter - 1;
	    );
            midisend(0, NewMessage, msg23);
	 ); // matched with (GateOpen == 2)
      ); //  matched with (Gate == NoteOn*16)
   ); //  matched with (msg23 != PreMsg23)
); // matched with While

Post

I've been thinking about this as well. How to make a polyphonic synth from monophonic elements. I'd love to play chords with something like an array of four times (monosynth+TheDrop).

With Blue Cat's Plug 'n Script you can script a module (they use Angelscript instead of ReaJS) to build a custom vst(i) doing the trick of directing different notes sequentially to different MIDI outputs. It can be used in the modular host of your liking.
The more I hang around at KVR the less music I make.

Post Reply

Return to “MuTools”