[Pipe Request] Chord Split

Hi all.

I hope I’m doing the right thing by repeating in this section a suggestion I did in the general section.

I’d really like to see a pipe that can split a chord notes to different channels, for instance lowest note to CH1, middle note to CH2, highest note to CH3.

That’s particularly useful for playing a string or brass section live, where you match for example CH1 to cello, CH2 to viola and CH3 to violin.

Hey, thank you for the suggestion! One complexity of functionality like this is handling the cases when there’s 3 destination channels, but a different number of notes played at a time, like what would happen if only 2 notes are pressed at a time? Also what would happen if it’s 5 notes at the time? What would happen if the individual ‘voices’ move to other notes, or their melodic ‘paths’ cross each other, while the originally held down ones move or stay at the same note?

Do you have any ideas how this could be handled? :slight_smile:

I’ve been using the MidiDings library for this, in particular the VoiceFilter functionallity, so maybe that could be an example.

http://dsacre.github.io/mididings/doc/extra-units.html

Basically, you have a “fallback” parameter that defines which “side” of the chord is leading (highest or lowest note).

If fallback=highest and you play less notes than the defined channels, the highest note will be doubled (or tripled, etc.) and routed to the corresponding channels.

If fallback=highest and you play more notes than the defined channels, excess notes are discarded, starting from the lowest.

The “direction” is reversed if fallback=lowest.

In the end, if you define 4 channels, you will always hear 4 notes, one per channel, in extreme cases (you only play 1 note) all at unison.

1 Like

P.S. regarding the other (interesting) questions you ask, well, the idea of this kind of pipe is to allow to more or less reproduce the feel of a brass section or similar style of accompaniment.

I ton’t think there’s a way to simulate a more melodic kind of music such as a quartetto. if you have parts that move a lot and/or even cross each other, then I fear you must play with two hands on a split keyboard.

1 Like

You could break this down into a simpler Poly to Mono pipe. This pipe would work a lot like a arpeggiator. All the notes on that don’t have a note off yet are put into a buffer and sorted. You can then control which of the notes are transmitted to the output.

Parameters:

  • Direction: Low or Hi indicates if we are counting from the lowest note or the highest note
  • Note Order: First, Second, Third, …
  • Fallback: if you want the 4th note, and the input is a triad, either output nothing, or clamp to the closest existing note ( in this case the 3rd )
  • Invert: instead of extracting a single note and muting others, remove that note from the stack

This way, if you wanted to send a chord progression to 3 brass instruments, you could use 3 version of that pipe, filtering the 1st, 2nd, and 3rd separately

2 Likes

I didn’t understand if this kind of pipe already exists or is a suggestion.

It’s a suggestion. sorry not to be explicit, I assumed that Blokas would know the difference anyway. :sunglasses:

1 Like