What's new

Logic Pro X Articulation Sets seem to no longer really need a third party switcher!

Ashermusic

Senior Member
As some of you know, I am a longtime endorser and user of the SkiSwitcher/ArtZ ID system for Logic Pro X. Peter has however decided for now not to sell it anymore as he is busy on some big projects that he can't talk about.

Although LP X has its method of creating articulation sets in the past, it was problematic. But I am using it now to test for others who will no longer be able to buy Peter's and it seems like the problems have all been resolved, as it seems it now works perfectly!

DISCLAIMER: It is possible though for more complex tasks than what I am doing it is still necessary.
 
As some of you know, I am a longtime endorser and user of the SkiSwitcher/ArtZ ID system for Logic Pro X. Peter has however decided for now not to sell it anymore as he is busy on some big projects that he can't talk about.

Although LP X has its method of creating articulation sets in the past, it was problematic. But I am using it now to test for others who will no longer be able to buy Peter's and it seems like the problems have all been resolved, as it seems it now works perfectly!

DISCLAIMER: It is possible though for more complex tasks than what I am doing it is still necessary.

It’s very good to hear that Peter has some new projects that are occupying his attention. I’d been wondering.

It’s even better to hear that you’re experiencing such positive results with the built-in LPX articulation feature now. I’ve been planning to do some test conversions of tracks in my template away from ArtZID and over to the internal LPX method this coming weekend, and you’re giving me confidence that I’ll meet with success when I try. I’m not necessarily expecting to stop using ArtZID on every track, but I would think that the built-in feature, where feasible, would have to be more efficient than any script-based solution could be.

Thanks for the info!
 
I think there are still some things that don't quite work right, but they keep fixing a few things each release, its getting closer and able to do quite a bit, I think for a lot of cases, it should suffice for many cases. I think it starts getting a little weird with channelizing, but they might have fixed that with this latest release!

For one thing, it does not propagate CC, PitchBend and aftertouch events across channels while channelizing the actual note events. That is a missing feature that really needs to be there. There are a few things, but it has slowly been evolving a bit with each LPX release, so I'm happy to see that and hopefully it will get to the point where truly no 3rd party products such as ArtzID or AG are needed or wanted for most articulation management needs in LPX.

There's a few other ways it could improve, but I doubt it will, for example, what Thanos does, could be done more generically and would be extremely useful. Also the ability to send key switches that are not meant to be in front of notes, but need to be sent and we don't want to have to put them on a track. (like use a CC event to cause keyswitches to be sent, etc). Or able to have parallel independent key switch groups, Etc, etc.. Articulation Set editor does not currently have any awareness about AU3 ports, so you are limited to channelizing within a single midi port and its not clear to me that keyswitches in an articulation set will be sent to the correct non-1 midi port of the track where the articulation set is active, but maybe. I haven't tried it.

They are slowly addressing the bugs that have been brought up though.
 
For one thing, it does not propagate CC, PitchBend and aftertouch events across channels while channelizing the actual note events. That is a missing feature that really needs to be there.

I was actually wondering about that, as I use that feature quite a bit. I am hopeful that using the existing ArtZID Kontakt multiscript for channelizing will work with Logic-fired articulations as well.
 
Non Apple plugins do not seem to be able to access the articulation id attribute of midi events. So no I don’t think kontakt can at this time see articulation Id

You can make a script with scripter pretty easily that could automatically convert articulation Id into leading cc event and then kontakt could use that to determine articulation id. I have one here somewhere I’ll share it later.
 
Non Apple plugins do not seem to be able to access the articulation id attribute of midi events. So no I don’t think kontakt can at this time see articulation Id

You can make a script with scripter pretty easily that could automatically convert articulation Id into leading cc event and then kontakt could use that to determine articulation id. I have one here somewhere I’ll share it later.


What about a universal one rather than specifically Kontakt?
 
I don't think the articulation ID is exposed to any third party AU plugins because of the AU Api itself. Well maybe it is and I don't know how or maybe there is some C++ hack to get it. But so far as I can see until now, articulationID is stored internally in LogicPro in some way that its not exposed to third party AU plugins through the normal callback interface they use to read midi events. If someone figures out a way to read articulation ID in third party plugins, that would be really cool, then maybe eventually kontakt and others might take that on, but I suspect that its not exposed at all first of all and even if it is, its probably in some very AU-specific way, which most third party developers would not want to mess with even if it is remotely possible.

So anyway, as of now, I don't know any third party plugin that can see articulation ID, including Kontakt and I suspect its not possible.
 
I don't think the articulation ID is exposed to any third party AU plugins because of the AU Api itself. Well maybe it is and I don't know how or maybe there is some C++ hack to get it. But so far as I can see until now, articulationID is stored internally in LogicPro in some way that its not exposed to third party AU plugins through the normal callback interface they use to read midi events. If someone figures out a way to read articulation ID in third party plugins, that would be really cool, then maybe eventually kontakt and others might take that on, but I suspect that its not exposed at all first of all and even if it is, its probably in some very AU-specific way, which most third party developers would not want to mess with even if it is remotely possible.

So anyway, as of now, I don't know any third party plugin that can see articulation ID, including Kontakt and I suspect its not possible.

Well third party guys like Peter and AG have found a script based method, so it can be done.

AG, is it possible to buy just a CC pass through script from you for this?
 
What about a universal one rather than specifically Kontakt?

when you say "universal" one, what were you meaning? If you're talking about a script to convert articulation ID to some kind of leading CC, I guess that would be universal, but basically plugins further down the chain have to know how to convert that leading CC back into some kind of articulationID. KSP could easily do that, but I can't think of any other plugins that would know what to do with it.
 
when you say "universal" one, what were you meaning? If you're talking about a script to convert articulation ID to some kind of leading CC, I guess that would be universal, but basically plugins further down the chain have to know how to convert that leading CC back into some kind of articulationID. KSP could easily do that, but I can't think of any other plugins that would know what to do with it.


By universal I mean it would work with Kontakt, EW Play, UVI, etc.
 
Scripter is not a third party plugin. So it is coded to see articulation ID. Actually most all of the Apple plugins seem to have an articulation ID control on the window...and they are able to see it. And that control seems linked back to the articulation Set editor in some way as well, so its outside the realm of the simple AU plugin callback method that 3rd party plugins use.
 
To answer that a little better in one response. A solution based on LPX Scripter, can see articulation ID., A solution that is based on a standalone plugin, including Kontakt, UVI or any other AU plugin from anyone, probably cannot see articulationID. Scripter is able to see it because its built into LogicPro and can work around any limitations in the AU plugin API
 
Scripter is not a third party plugin. So it is coded to see articulation ID. Actually most all of the Apple plugins seem to have an articulation ID control on the window...and they are able to see it. And that control seems linked back to the articulation Set editor in some way as well, so its outside the realm of the simple AU plugin callback method that 3rd party plugins use.


Well Peter has a Scripter for MIDI CC pass through to multiple channels as part of his and AG does as part of his AG Toolkit:
Control Change Channel Multiplier

So I guess what I want is to be able to buy just that Scripter script, not a whole shebang.
 
So back to what I was suggesting earlier, a simple Scripter script can be made, I have one here, but I need to update it since i'm not using VEP multi port macro anymore, and it basically just converts articulationID into a CC message in front of every note. Than in a third party plugin such as Kontakt, you can see those CC events and consider them like an articulationID. Kind of like how the CC99 multiport macro thing worked, but for articulationID instead of midi port.
 
So back to what I was suggesting earlier, a simple Scripter script can be made, I have one here, but I need to update it since i'm not using VEP multi port macro anymore, and it basically just converts articulationID into a CC message in front of every note. Than in a third party plugin such as Kontakt, you can see those CC events and consider them like an articulationID. Kind of like how the CC99 multiport macro thing worked, but for articulationID instead of midi port.

Well if it accomplishes that, along with Logic's ability to create Articulation Sets, it is all I would need personally and my guess is that will be true for a lot of others.
 
I already shared on here somewhere a Scripter script that can propogate CC messages when channelizing, but its a bit smarter then Peter's, it only propagates to channels with sustaining notes to avoid excessive CC midi traffic. AG also does that now, but of course you have to pay for it. I'll look later for the link to the one I shared for free. It could probably use some updating, I cranked it out really quick and have since moved on to other things, I wanted to make it also propagate PitchBend and Aftertouch.
 
I already shared on here somewhere a Scripter script that can propogate CC messages when channelizing, but its a bit smarter then Peter's, it only propagates to channels with sustaining notes to avoid excessive CC midi traffic. AG also does that now, but of course you have to pay for it. I'll look later for the link to the one I shared for free. It could probably use some updating, I cranked it out really quick and have since moved on to other things, I wanted to make it also propagate PitchBend and Aftertouch.

Well, Peter's allows you to filter in/out what it "clones."

But it would be great for Logic users to have a free one, so thanks in advance.
 
As I recall, the artzID cc cloner just lets you choose which channels to clone to and which CC #, but then it always clones everything. That does result in a lot of excessive traffic. For example, if you have a PLAY library with 10 articulations spread across ten midi channels, the reality is that at any one moment you probably only have midi notes sounding on one channel at a time. You don't really want to have CC11 and any other CC's being cloned 10 times to cover all 10 of those articulation channels. The script can more smartly propagate the CC's only to the channel where an articulation is actually sounding and making sound (or about to). Artzid CC Cloner definitely gets the job done, its just a bit heavier on the midi traffic with those kinds of multi-channel articulation setups.

But anyway, yea, mine is free! ;) I'll look for it later, running out the door...
 
In answer to the other question about obtaining articulationID in Kontakt, here is a simple LPX Scripter script that can convert articulationID into a leading CC message. Use this and then inside Kontakt KSP you have to make sense of it as you wish by looking for CC100 messages in front of every note to indicate an articulationID value...

Code:
function HandleMIDI(event) {
    if(event.articulationID == undefined) {
        sendCC(event.port, event.channel, 0);
    }
    else {
        sendCC(event.port, event.channel, event.articulationID);
    }
 
    event.send();
}

var cc = new ControlChange;
cc.number = 100;
cc.value = 0;

function sendCC(port, channel, artid) {

    if(artid > 127) {
        Trace("ERROR: ArticulationID must be 0-127");
        artid=0;     // force to zero for now
    }

    cc.value = artid;
    cc.port = port;
    cc.channel = channel;
 
    cc.send();
}
 
Last edited:
Top Bottom