Notifications
Clear all

Ensemble patch expression overlap fade support

4 Posts
2 Users
1 Reactions
284 Views
(@ibanez1)
Active Member
Joined: 2 years ago
Posts: 6
Topic starter  

I would like to create string, brass, and woodwinds ensemble patches in unify for sample libraries which only have individual instrument patches.

In order to do this, the layers in unify need to volume split the range overlap of instruments. So for instance as you go up in the range of the cello and that portion of the range overlaps with the viola, have the viola constitute a higher fraction of the expression of a given pitch and have the cello constitute a lower fraction.

I understand that unify already has velocity based fading but this really isn't sufficient since it's really the expression that needs to be faded over a range of pitches to create more seamless layer overlaps.

Can there be an option added to unify for the current velocity layer fade to be interpreted as a fractional multiplier to incoming expression midi instead?


   
Quote
(@getdunne)
Illustrious Member Admin
Joined: 5 years ago
Posts: 4487
 

@ibanez1

Interesting request, thank you. Unfortunately, this would not work the way you want it to (except with MPE; see below), because MIDI expression messages (CC#11) are not per-note like velocity, so it would only ever work correctly for monophonic (solo) lines.

The only way I could implement this would be to inject a CC#11 message before every note (with value computed according to split and fade parameters), but this would affect the sound of any notes already sounding in polyphonic passages.

Example: Consider only a single layer. Hold down a chord somewhere in the "full expression" part of the layer's range. The instrument plug-in would receive the note-on events, preceded by CC#11 messages with value 127. While holding the chord, play a single note somewhere in the layer's fade range. The instrument would receive a new CC#11 message with value, say, 50, and this would reduce the volume of the entire layer, including the chord notes already sounding. The effect would be the same as using a MIDI expression pedal, and suddenly pulling it back from all-the-way-down to half-way-down.

To make this work polyphonically, you would need to split out each note onto its own MIDI channel, to allow for polyphonic expression. This is exactly what happens in MPE ("MIDI Polyphonic Expression"). I suppose I could conceivably implement this for MPE-capable sampler instruments, but this is a really niche case; the number of users who would benefit would not justify the effort of development.


   
ReplyQuote
(@ibanez1)
Active Member
Joined: 2 years ago
Posts: 6
Topic starter  

@getdunne 

Thanks for the detailed response. It's time like this when I sometimes feel like they didn't think the midi protocol all the way through. Although cc messages are considered note independent, cc values for expression, modulation, and pitchbend really can be considered note dependent for certain use cases such as polyphony.

I feel like the midi protocol was bandwidth optimized with out this flexibility because as you add note properties beyond pitch and velocity, you need to enlarge the note packet and possibly include a note ID so that subsequent cc packets can be tagged with a specific note in mind.

I feel like this flexibility is worth the midi message size increase since I think most machines can now handle processing midi messages of very large size at a send rate of at most 128th notes at 200bpm :).

The MPE solution you described seems like a limited workaround version of having note level expression in a more tedious way.

And of course the problem is that most samplers have no support for this.

 

As a compromise that still brings tremendous value (maybe moreso for some people), have you considered a limited version of divisimate like behavior that can split chord voicings across different layers in unify?


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 5 years ago
Posts: 4487
 

Posted by: @ibanez1

...I sometimes feel like they didn't think the midi protocol all the way through.

I feel like the midi protocol was bandwidth optimized...

Just getting one manufacturer's synth to trigger another was a monumental achievement in 1983. Regarding bandwidth, I say again: 1983.

MIDI was thought through more than you might think. See this interview with Roger Linn, and search for "Mode 4".

As a compromise that still brings tremendous value ... for some people, have you considered a limited version of divisimate like behavior that can split chord voicings across different layers in unify?

I've considered it, but concluded that the possible return would not justify the effort required. If anyone wanted to implement this in the form of a MIDI-effect plug-in similar to our PolyBox, it would work just fine in Unify. As far as I can tell, no one ever has.

If you have Divisimate, you should be able to use it with Unify by setting it to "Logic Mode" as described here: https://www.soundonsound.com/reviews/nextmidi-divisimate. Just create as many layers as you need in Unify, and set them to listen on MIDI channels 1, 2, 3, ..., up to a maximum of 16.

 


   
Nico5 reacted
ReplyQuote
Share: