Polyphonic Midi Split Patch
Hi there, me again ...
I start getting closer and closer to understanding Max MSP, however, there is still a lot to learn for years to come ;-)
I am still sticking with changing incoming midi an OSC data and building cool patches for composing and sequencing this way. My newest idea is to make a polyphonic voice splitter. By that I mean a patch, that e.g. is recieving a c-major chord and splits the three notes to channel 1, 2 and three and the note offs accordingly. i already discovered some very neat objects, like borax and poly, but the whole thing has more difficulties than meets the eye.
So before I torture my brains: Someone must have tried something like that! Using the forum search most entries are concerning muilding a polyphonic synth. As I said, I do not want to get into msp yet, as max itselp is complicated enough for me right now ...
So, does anybody happen to know of meaningful patches for splitting polyphonic notes per channel? There are some complicated logical problems to solve.
- legato playing
- sorting held notes in the order of pitch
...
[cycle] or [bucket] might help you assign incoming MIDI notes to different channels. [borax] should be able to do everything you need, though, but it will take some fiddling and probably some triggers...
such tasks are easier when you invent your own synthax for note events instead of working with the output of [midiin].
for example you could use the [thresh] object to build "chords" such as "60 64 67" or "60 127 64 127 67 127".
this kind of data can now be analyzed and modified much easier than "60 127, 64 127, 67 127".
(eventually do not start with that "legato" stuff. modifying the delta time of the note off event is probably the most complicated part of all.)
I'm actually trying to build the exact same thing.
But I don't know how to either.
If I find something useful I'll post it.
But in the meanwhile I'm hoping someone else can help us out.
Very interested in this too!
This patch splits chords with a given number of voices into notes on different channels, ordered by pitch.
Fascinating! I also came to the coll object an "sort". I work on a version with more features right now. E.g. switching the number of voices in realtime, play legato with the CC64 sustain pedal down, etc. Will post it, when I am done. Thanks, guys!
Dynamic chord size can be handled by collecting note events that arrive within a specified time interval.
But legato/overlapping chords are a real challenge. Good luck!
I know, it's gotten messy already, but I am almost there! This is what I really appreciate about max: I started using it less then two months ago and can already do such complicated stuff ...
maybe a bit late.
this work not that bad. the js code is liked in the patch
I understood the whole patch, One thing still i did not get is how did you output all of the 3 voices when the coll object only outputs the 3rd index, when the number of voices is 3.So basically according to the above explanation, you should get only an output of the 3rd voice number and not all of the 3 voices.