Articulation maps vs. template balancing

WindcryMusic

Senior Member
In my new template (almost done!) I am heavily leveraging Logic Pro X 10.4’s new articulation maps feature, along with ARTzID v2, in order to have a (slightly) more concise template where parts aren’t spread across as many tracks, and also to make a far larger set of instruments and articulations available to me without needing to spend time looking for and loading up new tracks.

Overall I’m feeling very positive about the effect I think this will have on my workflow. But it seems to me there’s also a downside, which is the greater difficulty (and sometimes the apparent impossibility) of balancing the volume of individual articulations within each section, when they are all on a single track and using multi-articulation patches. For a few libraries, e.g. NI Symphony Series, there are volume adjusters for each articulation, which is great, and I only wish all libraries did the same thing. In other libraries, e.g. Spitfire, it is at least possible to use a setting where the mic mixes are remembered individually for each articulation, which helps somewhat (although I’m worried it will be easy to accidentally throw things back out of balance anytime I decide to tweak the mic settings). But for many libraries, e.g. Orchestral Tools, there seems to be no way to adjust the relative volumes of articulations.

For some smaller libraries I suppose one could get around this by only using single articulation patches and switching articulations via MIDI channels only, and then use Kontakt patch volumes to balance them. But my impression is that this is inefficient and wasteful of other resources like memory … not to mention that this limits a track (at least one running with Kontakt, which is uniformly the case for me) to 16 articulations, a number that is well short of what some of these libraries have available.

So, how do others attack this problem, whether in Logic, or in other DAW’s with similar articulation mapping abilities like Cubase? Perhaps there are Kontakt features that I don’t know about that allow adjusting individual articulation volumes of multi-articulation patches? Or perhaps, where the articulations can be specified on a per-slot basis (as in OT’s Capsule), one could at least partially mitigate the problem by putting all of the “loud” articulations on a specific patch, and then adjusting the Kontakt volume for that patch? Maybe there are other approaches to this that I haven’t even thought of?

Please share your tips and tricks for this issue, if you have any! Me and my template thank you in advance ...
 

tack

Damned Dirty Ape
Different DAW but the idea applies: some users of Reaticulate have been including CC7 or CC11 messages in the articulation output events in order to adjust the levels. So if e.g. you have a Spitfire patch set to UACC and you find spiccato a bit loud, triggering the articulation can send CC32 value 42 + CC11 value 90 (or whatever).

Maybe this is possible with Logic's articulation maps?

Of course it's only useful for simple static volume adjustment.
 
OP
W

WindcryMusic

Senior Member
Different DAW but the idea applies: some users of Reaticulate have been including CC7 or CC11 messages in the articulation output events in order to adjust the levels. So if e.g. you have a Spitfire patch set to UACC and you find spiccato a bit loud, triggering the articulation can send CC32 value 42 + CC11 value 90 (or whatever).

Maybe this is possible with Logic's articulation maps?

Of course it's only useful for simple static volume adjustment.
An interesting notion. Alas, I don’t think Logic’s articulation maps can do that, and I know ARTzID doesn’t support it. Also, I personally don’t like using CC 7 because of worries about how it might interact with Logic’s channel volumes when mixing time arrives, and I use CC 11 for dynamic expression within tracks (often in combination with CC 1) so that one is not available to me for balancing.

One other problem: if two articulations are sounding at the same time, this would seem likely to produce undesirable results.

If only I could just right-click on individual articulations in SF or OT libraries and get a volume knob ... (dreams of template nirvana ensue)
 

pmcrockett

Senior Member
I'm in the process of building templates in Reaper using a homebrew articulation management system and when I eventually encounter this problem, I'll probably approach it similarly to what tack mentioned by making the articulation selection also set a CC7 level on the track along with the keyswitch. Setting CC7 level seems like the best compromise to me as long you have a system that can do it and don't anticipate doing a lot of layering of unbalanced articulations within a single Kontakt instrument.

Regardless of Logic's or ARTzID's capabilities, CC7 leveling could be set up with a Kontakt multiscript if you know/are able to learn/know someone who knows a bit about Kontakt scripting. You'd set the script up so that it listens for the same keyswitches that the instrument expects, and when those keyswitches occur, the script injects the correct CC7 value into the MIDI data. It wouldn't even have any potential to affect the DAW mixer because it would all be internal to Kontakt.

Alternately, if you want to explore using multiple instrument instances with different input channels to isolate articulations, you could use Orange Tree Samples' Mind Control Kontakt multiscript to define your own keyswitch system that would let you address multiple channels within Kontakt by sending keyswitches from a single track/channel in Logic.
 

tack

Damned Dirty Ape
You'd set the script up so that it listens for the same keyswitches that the instrument expects, and when those keyswitches occur, the script injects the correct CC7 value into the MIDI data.
You could actually use FlexRouter for that. In this case the "keyswitch" is whatever triggers the articulation, and you'd configure two redirections: one cloning the original keyswitch, and another for CC7.

But as Windcry mentioned, this method does have the issue that two articulations playing at the same time (which is quite common even in the non-layering case, e.g. when the release tail of one articulation is playing while switching to the next articulation) and I agree this is a deal breaker for all but the most trivial of lines.
 

A.G

Senior Member
There is no problem for controlling CC7, CC11, CC2 (VSL X Fade) etc with the AG Logic Articulation Maps EDITOR and the Universal Logic ART 6 PRO Scripter. The Maps EDITOR supports all sorts of Multi Output Assignments (Two KS+Velocity+Latch; Program; Two CCs). There are a few "Dynamic" Factory Sets (CC1; CC11 and CC2 VSL) which offer very similar Dynamic control like the Cubase Maps.

AG Kontakt 64 system (which comes with ART Pro 6) is a special design for those of you who prefer to use Single Patches loaded into Kontakt Ports A,B,C,D (64 Channels switching) where you can balance the Volume, Pan, Dynamics etc. It is a single track switching system which is powered by special ART Editor template where you must only set the articulation names (custom ordering, groups and colors are possible as well).
 

Nick Batzdorf

Moderator
Moderator
One thing I appreciate about Peter Schwartz (Mr. ARTzID) is that he takes the high road. He doesn't have sharp elbows, he just goes about his business.
 
OP
W

WindcryMusic

Senior Member
One thing I appreciate about Peter Schwartz (Mr. ARTzID) is that he takes the high road. He doesn't have sharp elbows, he just goes about his business.
He goes above and beyond, actually. If I had to total up the number of hours Peter has spent corresponding with me and helping me out since I purchased his product, and pay him minimum wage for that time, I’d probably need to sell my house to cover the debt. I’ve never encountered a better.
 

tack

Damned Dirty Ape
Indeed, as was mentioned in the OP.

This would be much better implemented if you could still have a default mic mix and then choose to override per select articulation. As it is, if you want to adjust one individually, they all maintain independent mixes.
 
OP
W

WindcryMusic

Senior Member
Indeed, as was mentioned in the OP.

This would be much better implemented if you could still have a default mic mix and then choose to override per select articulation. As it is, if you want to adjust one individually, they all maintain independent mixes.
That would be a nice feature.

What I would like would be to have an overall attenuator per each individual articulation (what I referred to above as a "volume knob") that governs the overall output of the articulation, post mic mix sliders ... so that if I push the Tree slider all the way to 100% on the pizzicatos, I could still have the articulation in balance with the sustains with the same Tree slider also at 100%. (It seems to me to be a lot harder to adjust mic mixes for a particular cue if you have to constantly remain aware that a certain articulation must have those values scaled downward for the sake of balance.)
 

garyhiebner

Active Member
He goes above and beyond, actually. If I had to total up the number of hours Peter has spent corresponding with me and helping me out since I purchased his product, and pay him minimum wage for that time, I’d probably need to sell my house to cover the debt. I’ve never encountered a better.
+1 for Peter's service and support, and his amazing product. I dropped him a mail about a user issue I have having (entirely my own fault not the product) and within a matter of minutes he replied and and gave great service. I cannot say I have had service like this from anywhere before. Totally awesome!
 

Dewdman42

Senior Member
You can probably handle this with a script that sits in front of or behind peter’s script, that can balance out the articulation levels, and if you’re smart about it then you could still make these adjustments relative to an overall cc7 or cc11 you might be riding that applies to all of the articulations of a track in a more global way.

Just have a simple script that looks at Artid and then adds or subtracts an offset value to the current cc7 or cc11. That means you have to keep track of the currently running cc7 and cc11 values. The offset might not be linear.
 

Dewdman42

Senior Member
For example, here is a simple example that might work, I didn't really test it, just giving you a rough idea:

Code:
var runningCC = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var offset = [0,12,-5,0,0,6];
var cc = new ControlChange;
cc.number = 7;

function HandleMIDI(event) {

    if(event instanceof ControlChange &&
          event.number == 7) {
  
        runningCC[event.channel] = event.value;
        event.send();
        return;
    }
 
    cc.channel = event.channel;
    cc.value = runningCC[event.channel] + offset[event.articulationID];
    cc.send();

    event.send();
    event.trace();
}
In the above example, articulation ID's 1-5 are used, where articulation 1 has a CC7 bump of +12, art 2, has a drop of -5, etc..

There are different ways you could approach this in terms of scripting, but anyway just a rough idea to give you some ideas about how to solve your problem.
 
OP
W

WindcryMusic

Senior Member
You can probably handle this with a script that sits in front of or behind peter’s script, that can balance out the articulation levels, and if you’re smart about it then you could still make these adjustments relative to an overall cc7 or cc11 you might be riding that applies to all of the articulations of a track in a more global way.
It is probably true that a secondary script could accomplish what you are describing, although it would need to have complete knowledge of the articulations on each track, so it would be far from a trivial undertaking. But in any event, I don’t think automatically updating the overall volume level as each new articulation comes along is a solution that I will ever decide to pursue, because of the already-expressed concerns about the effect upon overlapping articulations (whether simultaneous or release tails, as @tack said), of which I expect to have a lot.

The best solution I know of thus far seems to be to avoid using multi-articulation patches, opting for individual patches instead that one can separate by MIDI channel in order to have the necessary granularity of volume control. But that’s not always possible, and often isn’t practical, IMO (even if it were possible to address 40+ individual MIDI channels on a track to handle that many individual articulations, I would think employing 4 multi-articulation patches is generally going to be more efficient on memory, at least).

The biggest offender here seems to be OT, who does claim to have their articulations already balanced I believe, so I might just have to hope that they’ve done so sufficiently well for my needs.
 

Dewdman42

Senior Member
Its an interesting challenge for sure. One of the reasons I bought VSL Cube is because its already balanced. I would not use a library that is not, at this point.

if the library is in kontakt, you might want to look into KSP or the above script that was mentioned. I don't know KSP so I can't offer any further thoughts than that, but it might be possible within the KSP script to balance out the levels somehow in a dynamic fashion.

If the library has different articulations on separate midi channels, then you can still use the Articulation ID features of LPX, to have the source track be on one track...routed by channel to the articulations. I guess you could still use a library that is supposed to work on the same channel by just having duplicate instances of the whole instrument, each one only handling one of the articulations, routed by midi channel. Lots of duplicate samples loaded in memory that way, but if its kontakt based, you can purge all the ram and load the samples on demand.
 

Alex Fraser

Senior Member
Difficult isn’t it? At some point you have to work out whether the time spent balancing the template is more then you would otherwise spend just adjusting levels on the fly.

There such a temptation to go deep on these things. I’m in a similar position and desperately trying to keep things as simple as possible.
 

Alex Fraser

Senior Member
It is probably true that a secondary script could accomplish what you are describing, although it would need to have complete knowledge of the articulations on each track, so it would be far from a trivial undertaking. But in any event, I don’t think automatically updating the overall volume level as each new articulation comes along is a solution that I will ever decide to pursue, because of the already-expressed concerns about the effect upon overlapping articulations (whether simultaneous or release tails, as @tack said), of which I expect to have a lot.

The best solution I know of thus far seems to be to avoid using multi-articulation patches, opting for individual patches instead that one can separate by MIDI channel in order to have the necessary granularity of volume control. But that’s not always possible, and often isn’t practical, IMO (even if it were possible to address 40+ individual MIDI channels on a track to handle that many individual articulations, I would think employing 4 multi-articulation patches is generally going to be more efficient on memory, at least).

The biggest offender here seems to be OT, who does claim to have their articulations already balanced I believe, so I might just have to hope that they’ve done so sufficiently well for my needs.
Perhaps a halfway house then?
For example, pop the shorts or worst offenders on a different midi channel and slot in Kontakt. As you know, you can use the logic artic maps to route via midi channel.
 

tack

Damned Dirty Ape
opting for individual patches instead that one can separate by MIDI channel in order to have the necessary granularity of volume control
At least in the case of Spitfire, you could set the patches to UACC and drop them all on the same MIDI channel.

even if it were possible to address 40+ individual MIDI channels on a track to handle that many individual articulations
It's actually possible with some interesting tricks as long of course as you don't need to address them all simultaneously. See this post for example.

I would think employing 4 multi-articulation patches is generally going to be more efficient on memory
Indeed. All 4 combination palettes of SCS V1, purged, works out to about 1.3G. With those same articulations all loaded in as separate patches, again purged, it's 2.0G.

Not quite your use-case, but as another data point, if you wanted to separate your longs and shorts out into separate combination patches (e.g. because you wanted to mix them differently), with the unneeded articulations disabled and also purged, this works out to 1.45GB
 
OP
W

WindcryMusic

Senior Member
Perhaps a halfway house then?
For example, pop the shorts or worst offenders on a different midi channel and slot in Kontakt. As you know, you can use the logic artic maps to route via midi channel.
I agree that is a good compromise ... the biggest problem with it being that ARTzID doesn’t provide any script that would allow one to use several multi-articulation patches (selected by key switch and MIDI channel) and several individual patches (selected by MIDI channel only) on a single track. I suppose one could send a “dummy keyswitch” value that is out of range of the individual articulations, although my sense of propriety rebels at the concept of sending wasted MIDI data.

At least in the case of Spitfire, you could set the patches to UACC and drop them all on the same MIDI channel.
Yes indeed. That much I know well, as I’ve been doing exactly that in my new template for the last several months (I mean with their multi-articulation patches, though). Works great for the newer Spitfire libraries, although the older ones keep playing the previously selected articulation if they receive a UACC value they don’t recognize, which requires a little trick to get around. (The newer libraries go silent upon receiving an unsupported UACC value, which I regard as the correct behavior.)

It's actually possible with some interesting tricks as long of course as you don't need to address them all simultaneously. See this post for example.
Interesting. I didn’t pay much attention to the FlexRouter discussions until now, but now I think I ought to take a closer look. Still, I think I might need to address them simultaneously, so that might not work for me.