MusiKraken
MusiKraken
Experimental MIDI Controller Construction Kit

Chord Splitter

This module splits incoming chords into separate notes and sends each note to a separate channel. This is very useful if you want to control multiple virtual instruments simultaneously, with one control. Especially if the instruments are legato / mono instruments that can only play one note at one time.

If you for example combine this with a Channel Switcher, you can send the first note to a Violin VST assigned to channel 1 in your DAW, send the second one to a Viola VST on channel 2 and transpose it one octave down using the MIDI Transposer module, and do the same, but transposed two octaves down, with a cello VST on channel 3. Now you can play any three-note chord on the Keyboard or the Chord pad and all three instruments should play, with legato in between transitions! And you can record each voice to separate tracks in your DAW.

Ports:

MIDIIn:

Handles each MIDI Note-On and Note-Off event and routes MIDI Aftertouch events to the correct channel. All other events are sent to all connected output ports.

MIDIOut:

This sends all MIDI events for all channels.

1-16:

These ports send the MIDI events that are targeted to this specific channel.

Settings:

Start channel: When distributing the notes to separate channels, the module will start with this channel.

Start with highest note: If checked, the highest note will be sent to channel 1 (or whatever is set as start channel), the second highest note to channel 2 and so on. If unchecked, the lowest note will be on channel 1, the second lowest on channel 2 and so on.

Detect chords: If checked, the module will try to detect complete chords before distributing the notes to different channels. Usually, if you use an input device like a keyboard, not all notes of a chord will be played exactly at the same time. So in order to distribute the notes to the correct channel, there needs to be some delay (see settings below). You can uncheck this if you use the Chords Pad as the input device, because all notes of the chords are generated simultaneously there.

Chord detection delay: This is the delay that this module waits after a note-on is received until it "detects" a chord and distributes the notes to the channel.

Minimal detection delay: Because I often use this to play chords with the same number of notes, I added an optimization: If the Chord Splitter detects during the delay that after some Note-On and Note-Offs the same number of notes as in the last detected chord are active, it "detects" the next chord earlier. This still needs a delay, especially if you change two or more notes at the same time when getting to the next chord. But it can be smaller than the above one, making this much more playable. So basically, if the number of notes in the chord stay the same, this delay is used, and otherwise the other one. Works for my playing style at least, if it doesn't work for you, just set it to the same duration as the other delay...