Jump to content

Splitting chord notes into separate tracks, an old VST makes it pretty easy, works in realtime.


Recommended Posts

I searched several threads on discuss.cakewalk seeking a means of splitting sequences of chords into separate tracks, but I didn't find a solution that didn't involve a lot of copy/paste/highlight/delete.  And I didn't find any mention of Midipolyphony vst, so started new thread.

I wanted to take a chord progression I liked and split it up to be sent to individual instruments, and get it done efficiently, and in real time if I was just noodling around.

I've now found a vst that will take a chord of up to 16 notes and split it to 16 midi channels. 

Midipolyphony.dll is a 64 bit vst created in 2011 and then eventually forgotten about.

You insert it as an instrument.  You route midi to it.  Midi that contains non overlapping chords.  

You insert multiple instruments or midi tracks.  You set the input of each to a specific Midipolyphony midi output channel.  You turn on their input echo.

Now select the Midipolyphony track and play chords into it.  The lowest chord note played will end up on channel 1, 2nd lowest on ch2, etc ...

Here's an important tweak.

My goal was to get Ch1 - bottom note, Ch2 - 2nd from bottom, ...

Within midiPolyphony set NotePriority to Low.

image.png.64868d1b9eaf685ca18f0bf2aba71f8e.png

Caveats: the notes in a chord must arrive simultaneously in Midipolyphony.  So playing on keyboard may not provide correct notes.  You would need to record and quantize before sending to Midipolyphony.  For my noodling around purposes I set up chord progressions in Scaler, bind chords to keyboard, so then when I press a key all notes are sent simultaneously.  Or I send quantized midi.  The processing seems immediate, I used notes 8 ticks long as source chord and they were processed.  Playing midi on Midipolyphony track and recording on a split out track, the MBT in the event list is identical, so no latency that I can detect.

Midipolyphony has other capabilities hinted at in discussion forums,  google "kvraudio insert piz".  You will need to do some digging to suss out the features.  The "Insert Piz" package has a number of different vsts, created when routing/tweaking midi was a much more hands on process.  Last active dates were a decade ago.

you can download it here,
its in the "pizjuce_x64_20120113.zip" ... top of the page:
https://code.google.com/archive/p/pizmidi/downloads

And because midipolyphony.vst is public domain I've attached it here as an unzipped file.

As Midipolyphony is poorly documented and unsupported YMMV.  But I'm getting a lot of good out of it in the manner I use it.  FWIW.

midiPolyphony.dll

Edited by Steve Harder
  • Like 1
Link to comment
Share on other sites

as an alternative, you can use the CAL script which splits the MIDI track into individual tracks based on notes (and some scripts do it on ranges like bottom 3 notes, top 3 notes, etc) and there also splits on velocity and i think one on CC value/range. so even for something old like CAL it's still has some neat functions.

Link to comment
Share on other sites

I really like the real-time capability.  I can rough out a piano sketch with chords on a single track.  Then I can send that track to Midipolyphony to split the chords and send to multiple brass or string instruments.  I can audition different instruments or easily switch the stack number of the chord note going to that instrument.  I also can tweak note timing.  And this is all without committing any midi to the individual tracks.  Eventually I do arm some or all of the instrument tracks and record the Midipolyphony output and then go on to really finetune timing, etc.  But a lot of the heavy work gets done in an environment that encourages experimentation before I commit to lots of individual midi tracks.

CAL doesn't give me that real-time capability.

Link to comment
Share on other sites

  • 2 weeks later...
4 hours ago, clovis said:

The built in MIDI fx plugins will give you real time results as well as utilizing alongside using the MIDI inspector window, it has great filtering parameters for realtime use also.

I agree that Midi fx can be very effective at what they do.  But they basically operate at the individual track level, so quite a bit of setup is required.

Midipolyphony simply does what I want it to do, split a chord of unknown number of notes into individual tracks in real time.  I primarily use it to test out chord progressions which I've first played on a piano track and then want to hear split across some individual instruments.  I have a template built with Midipolyphony routed to my test instruments.  It's just very easy to load it, noodle around and decide if the progression merits further development.

I've done a lot of searching vsts and Midipolyphony is the only EASILY  implemented real time solution I've found.

As an aside I keep a standalone instance of Scaler running between my midi keyboard and Cakewalk.  It can be totally silent and just pass midi thru to Cakewalk.  Or you can turn on Scaler's various functions and easily hear them on selected instrument within Cakewalk without doing any routing per track in Cakewalk.

As a further aside, when I'm doing productive work in the standalone Scaler and want to document the standalone's state in current project my habit is to place an instance of Scaler in the project and sync from the standalone.  I can then easily reestablish standalone by syncing the other direction when I next load project.

This isn't a workflow for everyone but works well for me.  Once set up it's quick and effective and doesn't create technical distractions when creating (or in my case, fumbling around until I accidentally stumble onto an idea.)

 

Link to comment
Share on other sites

  • 2 weeks later...

Here's a more detailed set of notes for setting up MidiPolyphony.

I now prefer NotePriority set to High.

Template 

Trumpet MidiPolyphony Ch1, Horn MP Ch 2, Bass Trombone Ch 3, Tuba Ch4.

As I test chords the Trumpet is always getting the high note no matter how many notes are in chord sent to MidiPolyphony.  I can mix triads with 7ths and 9ths and see what happens, Trumpet will always get a note, the lower brass may not.

##### MidiPolyphony Notes

#####
Assume NotePriority is LOW

image.png.8cb9eeb9e2e165af002e6c35a7a2aff3.png

 
Then assume Low Channel set to 1
then that causes lowest note to be sent to Midi Ch 1.
Lowest note Ch 1
2nd lowest note Ch2
Middle note Ch3
Next highest note Ch 4
Highest note Ch 5

##

Low Channel if  set to 3 then that causes lowest note to be sent to Midi Ch 3, 2nd lowest to Ch 4, etc.
image.png.d9071ac05776508a2b7349d7f8bd3e70.png

#####
Assume NotePriority is HIGH (My current preference).

image.png.d3c4fa579e492627c3f56548dad63afb.png

Then assume Low Channel set to 1
then that causes highest note to be sent to Midi Ch 1.

Highest chord note is Midi Ch1
2nd highest is Ch 2
Middle is Ch 3
2nd lowest is Ch 4
Lowest is Ch 5.

#####
Assume NotePriority is CENTERED

image.png.6347f74b0b7d5c99f8acf62af27d9960.png
 
Then assume Low Channel set to 1
then that causes middle note to be sent to Midi Ch 1.

If spacing between chord notes in semitones is identical then
Middle chord note is on Midi Ch1
Next above middle is on Ch2
Next below middle is on Ch3
Highest is on Ch 4
Lowest is on Ch 5.

If spacing of notes is note identical closest to middle is next, etc.
CENTERED can get complicated. 

I have not researched the other NotePriority options.  Just getting this far made my head hurt.

Edited by Steve Harder
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...