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



## Ashermusic (Jul 11, 2019)

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.


----------



## WindcryMusic (Jul 11, 2019)

Ashermusic said:


> 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!


----------



## Dewdman42 (Jul 11, 2019)

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.


----------



## WindcryMusic (Jul 11, 2019)

Dewdman42 said:


> 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.


----------



## Dewdman42 (Jul 12, 2019)

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.


----------



## Ashermusic (Jul 12, 2019)

Dewdman42 said:


> 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?


----------



## Dewdman42 (Jul 12, 2019)

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.


----------



## Ashermusic (Jul 12, 2019)

Dewdman42 said:


> 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?


----------



## Dewdman42 (Jul 12, 2019)

Ashermusic said:


> 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.


----------



## Ashermusic (Jul 12, 2019)

Dewdman42 said:


> 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.


----------



## Dewdman42 (Jul 12, 2019)

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.


----------



## Dewdman42 (Jul 12, 2019)

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


----------



## Ashermusic (Jul 12, 2019)

Dewdman42 said:


> 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.


----------



## Dewdman42 (Jul 12, 2019)

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.


----------



## Ashermusic (Jul 12, 2019)

Dewdman42 said:


> 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.


----------



## Dewdman42 (Jul 12, 2019)

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.


----------



## Ashermusic (Jul 12, 2019)

Dewdman42 said:


> 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.


----------



## Dewdman42 (Jul 12, 2019)

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...


----------



## Dewdman42 (Jul 12, 2019)

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...


```
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();
}
```


----------



## Dewdman42 (Jul 12, 2019)

For AsherMusic and others..here is the ChannelizerCloner script I wrote and shared last year:

https://www.logicprohelp.com/forum/viewtopic.php?f=45&t=136801

I want to improve it to support propagation also of PitchBend and Aftertouch. If any further needs are not addressed, please request over on that other thread and I'll do my best if its not too complicated.


----------



## Dewdman42 (Jul 12, 2019)

ps - I just noticed that script is VEP multi port macro stuff in it. It should work fine anyway without that, for up to 16 channels, but I will update it later today to get rid of anything related to the multiport macro, as that is now superseded by AU3.


----------



## Ashermusic (Jul 12, 2019)

Dewdman42 said:


> For AsherMusic and others..here is the ChannelizerCloner script I wrote and shared last year:
> 
> https://www.logicprohelp.com/forum/viewtopic.php?f=45&t=136801
> 
> I want to improve it to support propagation also of PitchBend and Aftertouch. If any further needs are not addressed, please request over on that other thread and I'll do my best if its not too complicated.




Thanks looking forward to trying it out.


----------



## Ashermusic (Jul 12, 2019)

Thanks looking forward to trying it out.

For ArtZ ID owners though I have confirmation from Peter that both his cloners, Logic and Kontakt (full version), will work without his other scripts.


----------



## Peter Schwartz (Jul 12, 2019)

Hi Jay, just to be clear... I have temporarily suspended the sale of my system, not discontinued it permanently.

Also, FWIW, both the Logic and Kontakt versions of my cloners provide on/off and filtering options for each channel so the number and type of CC's being cloned can be reduced/restricted.

@Dewdman42, I've experimented with creating a cloner that only provides CC cloning on active notes ("technically active" in terms of Note On and Off) and discovered a downside which I don't really like... Say you've got a passage that switches between different flavors of sustain and/or legato on different channels, and you're using CC1 to create a descrescendo across the entire part. Now, typically there will be some degree of overlap or release tail connecting all of those notes. But when CC1 is cloned in such a way as to only affect the "technically active" notes, the ends of overlapping notes can be left hanging with a brighter sound than desired.

Best,

Peter


----------



## Dewdman42 (Jul 12, 2019)

Not the way I did it. The CC1 will be cloned to ANY channels where there are sustaining notes, or about to be and it chases. Try the script I made and let me know what you think. Wait a minute though, I'm modifying it to get rid of VEP multiport crap


----------



## Dewdman42 (Jul 12, 2019)

Peter Schwartz said:


> @Dewdman42, I've experimented with creating a cloner that only provides CC cloning on active notes ("technically active" in terms of Note On and Off) and discovered a downside which I don't really like... Say you've got a passage that switches between different flavors of sustain and/or legato on different channels, and you're using CC1 to create a descrescendo across the entire part. Now, typically there will be some degree of overlap or release tail connecting all of those notes. But when CC1 is cloned in such a way as to only affect the "technically active" notes, the ends of overlapping notes can be left hanging with a brighter sound than desired.



Actually on this point there is one aspect which you bring up a good point, which is that if the subsequent notes have slow releases where there is still sound after the NoteOff event, and CC's are supposed to be effecting them, but as you pointed out...aren't anymore. I think this could still be solved by simply having a reasonable amount of time after the NoteOff where CC's should still be propagated to a channel. Let's call it "propagation release" for now. The script I linked to above does NOT do that yet, but I already had a note to myself to do something about that in my script code, so maybe I will soon. It wouldn't be that hard to add. Could provide a slider to tweak the propagation release time easily enough too. 

I reckon the above should not be an issue for PitchBend and Aftertouch propagation though right?


----------



## Dewdman42 (Jul 12, 2019)

So I'm going to spend a few days working on my ChannelizerClone script to make it better and will let you guys know when its ready...have a busy weekend, so it might not happen until next week. Too swamped to deal with it today. The one that is there on that link will work anyway right now, just leave the VEP slider set to OFF. It will both channelize and clone CC's, so you need to not channelize anything in the articulation Set. Just set the articulation ID and let this script both channelize and clone the CC's. I'd appreciate feedback from anyone on that one before I get too far with improving it for general use in case I can make my free script the most useable for folks, especially those that are trying to use the factory ArticulationSet feature and just need this.

Some ideas for improvement:

Absolutely no mention about VEP multiport macros.
Able to channelize more than 16 articulations and channelize across AU3 ports while doing so when AU3 is in use.
PitchBend and Aftertouch propagation
Propagation release time, to catch the issue mentioned by Peter above. Or maybe a different as yet un-engineered solution.
An alternative version might make some sense, which doesn't do the channelizing, but rather just propagates CC, PB and AT messages to any channels that have notes sounding across any channels. Then you'd still use the Articulation Set editor to configure the channelizing and just rely on this script for the propagations.
A further alternative would be to write something that basically does what Peter's CC cloner does so that people have an option when its not for sale. That's actually easier to do, in fact I may have already done it, but I didn't want to float it out there without some kind of value-add as long as Peter is trying to sell his.


----------



## A.G (Jul 12, 2019)

Ashermusic said:


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



I do not agree with you Jay. There are quite a lot reasons for a good 3rd party Art System like AG one:

• A perfect Software Art Maps EDITOR (like AG EDITOR) with tons of batch editing and multi selection functions, key commands, iOS teleport etc.etc.etc. Logic X Art Sets Editor is just a poor table.

• Region based automation Text points which are shown in the timeline - similar to Cubase "Direction" type. AG supports Text points + Art IDs (equivalent of Cubase Direction + Attribute types).

• Intelligent CC cloning during Channel switching (CPU saving). It is well shown in the AG official Video.

• More than three articulation "Output Mappings". AG offers up to 11 Output Mapping assignments which are ideal for Instruments such as VSL Synchron series.

• Ignoring the 16 Channel DAW limitation for Kontakt Instruments. AG system offers a Kontakt 64 system (ABCD Ports single track direct access) and a brand new VEP MULTI Instance system which can address up to 49152 Kontakt MIDI Channels per a single VEP Instance.

• Dynamic KS Switching. The Logic Art Sets system does not work with Software Instruments which require dynamic KS switching where the articulation must be changed during the Note sustaining (Sample Modeling for example). The AG system supports dynamic KS switching via Text points mode.

• X-DAW Articulation Maps EDITOR & Convertor (Coming in August).
- The X-DAW EDITOR will offer 100% of the current AG Art EDITOR batch functions. 
- You will be able to open any Logic Art Set (Plist file) in the AG Editor, edit it, and store as a Cubase Expression Map preset, teleport to iPad or export to Logic AG Scripter (Text Points + IDs).
- You will be able to open any Cubase Expression Map in AG Editor, edit it, and store as a Logic Art Set, teleport to iPad or AG Scripter.

As you see Jay, there are tons of needs required by the modern Articulation Instruments offered every day.
Do not worry - AG is here...


----------



## Ashermusic (Jul 13, 2019)

Absolutely good reasons AG, no doubt. And yours is excellent so I certainly am not trying to discourage people from buying a more complete solution. 

But in the past a third party solution was _essential_ and now for more basic needs, like mine, it seems not to be.


----------



## A.G (Jul 13, 2019)

Ashermusic said:


> Absolutely good reasons AG, no doubt. And yours is excellent so I certainly am not trying to discourage people from buying a more complete solution.
> 
> But in the past a third party solution was _essential_ and now for more basic needs, like mine, it seems not to be.



Thanks for your kind feedback Jay!

I agree that in the past a third party solution was _essential_ (as you remember AG started as the very first 3rd party Logic Articulation developer back in 2014). Now a third party solution is more _essential_ than in the pass, because there are a lot of modern Instruments and systems which are updated every day, and only a 3rd party development is able to follow the new tendencies.

On the other side, the 3rd party developers are "Hands Free". I do not believe that Steinberg will implement Expression Maps conversion for Apple Logic and vice versa. AG is working on such X-DAW ART system, and I do believe it will become the most essential tool for every composer in our days.
We plan to release X-DAW ART next month if everything goes well. Stay tuned.


----------



## Ashermusic (Jul 13, 2019)

A.G said:


> Thanks for your kind feedback Jay!
> 
> I agree that in the past a third party solution was _essential_ (as you remember AG started as the very first 3rd party Logic Articulation developer back in 2014). Now a third party solution is more _essential_ than in the pass, because there are a lot of modern Instruments and systems which are updated every day, and only a 3rd party development is able to follow the new tendencies.
> 
> ...



I get it your point but it really depends on the libraries you choose and how you complexly you want/need to work. If you are going to use Orchestral Tools capsule or some of the more complicated Spitfire stuff UACC , yes, a third party solution like yours _is_ pretty much essential. It you want a ton of articulations in a single instance of an engine like Kontakt, yes, again, pretty much essential.

I am not that guy. With my keyswitched libraries, I am finding I can do it efficiently with just Logic's Articulation Sets. When I use a multi-timbral instrument, e.g Hollywood Strings Violin 1 with 16 articulations (and that is 99% of the time fine for the work I am getting) I can also do it fine as long as I have some kind of cc cloner.

Again, in no way am I trying to discourage anyone from buying a third party solution like yours. I was just excited at the progress in Logic's native implementation. For instance, if one of my beginning MIDI orchestration clients or students buys the Amadeus Symphony Orchestra for $149, a great starter set IMHO, I can now give them my Logic template with my Articulation Sets for each instrument and now they can key switch to their hearts' content and know that they will _always_ hear the correct articulation at any starting point in the project with no Scripts involved and frankly, not understand what is going on "behind the curtain" all that deeply. That will be _huge_ for them.

That said, the idea of a non-DAW specific solution really sounds like a winner for people who use more than one, so good luck with that.


----------



## A.G (Jul 13, 2019)

Ashermusic said:


> That said, the idea of a non-DAW specific solution really sounds like a winner for people who use more than one, so good luck with that.


Yep, I missed to mention that we have prepared tons of brand new features for the X-DAW ART release which are 100% related to Logic Pro X. If you follow my ideas, the X-DAW will be updated according to each DAW Articulation specifics. In fact, X-DAW ART will be next AG Toolkit 7. 

I do believe that many AG Logic users will be happy with the brand new AG Logic ART features implemented in that release (it does not matter that some of the users do not use Cubase).


----------



## Dewdman42 (Jul 16, 2019)

Asher and others...

Here is a quick fix for you to try for free CC Cloner replacement.

The following link has a freely available script called CloneEvents. It is highly configurable, though there is no GUI. The following features are supported

clone CC, PitchBend and Aftertouch


configure which events, including specify CC#'s, to clone and which channels to clone them too.


Possible to have different sets of events cloned to different sets of channels independently.


Possible to handle multi-timbral instruments from multiple source tracks, such as to VEP AU3


Handles AU3 multi-port.

https://www.logicprohelp.com/forum/viewtopic.php?f=45&t=143299

(Note, this is not the auto-propagation thing I am also working on, I still need to work out some bugs in it, its a much larger and more complicated script and I might be running into Scripter bugs again, I'm not sure yet. Anyway, that will come later if I get it working).


----------



## bvaughn0402 (Jul 16, 2019)

What is the general difference in all the different stuff out there for this:


AG Toolkit
http://www.skiswitcher.com/ (ARTz•ID V2)
ArtConductor
Are they all pretty much the same type of application?


----------



## Ashermusic (Jul 16, 2019)

Unless things have changed, unlike the other two ArtConductor doesn’t let you do it in real time as you play, you draw it in In automation.


----------



## Ashermusic (Jul 16, 2019)

Dewdman42 said:


> Asher and others...
> 
> Here is a quick fix for you to try for CC Cloner replacement.
> 
> ...



While I truly appreciate what you are doing, since yours lacks a user friendly GUI and since I already own it, I will stick with the one I have.


----------



## Dewdman42 (Jul 16, 2019)

Scripter's GUI capabilities are simply too limited to provide the flexibility that I am providing in this script. I have gone down the Scripter GUI road numerous times and it always ends up either being a very convoluted Scripter GUI or the functionality of the script itself gets compromised in some ways in order to provide some sliders and dials in a sane fashion. If enough people ask for it, I will try to slide in some GUI support later, but honestly its not that hard to tweak a couple lines at the top of the script and the engine I am using provides a lot of flexibility that would be hard to present in a Scripter GUI.

Eventually I may rewrite it in C++ as a MidiFX plugin, then the GUI would be much better. (_but if I do it probably will not be free_)

I will point out a couple advantages of this CloneEvent script:

It's free


It can clone PitchBend and ChannelPressure in addition to CC's


You can setup a few different source midi channels with separate channelizing, to support multi-timbral instruments or VEP AU3. 


Supports AU3 multi-port


You can get very granular if you want...you can choose which CC#'s get cloned to which midi channels


It's free.


----------



## Dewdman42 (Jul 16, 2019)

note - I updated the script to do some error checking and now handles AU3 multiport. I am also going to have the homepage for the script be on the logic help forum script section. Moved there now

https://www.logicprohelp.com/forum/viewtopic.php?f=45&t=143299


----------



## Dewdman42 (Jul 16, 2019)

and I will still eventually release the automatic propagation script that I spoke of earlier.


----------



## babylonwaves (Jul 17, 2019)

Ashermusic said:


> Unless things have changed, unlike the other two ArtConductor doesn’t let you do it in real time as you play, you draw it in In automation.



no, not really. you were always able to control the articulations in realtime. but I don't think what you say really answered the question because these days Art Conductor is a collection of Articulation Sets. what you're referring to was more or less discontinued when Logic 10.4 was released on January 2018.

in a nutshell, with Art Conductor for Logic, you get around 3600 Articulations Sets which support most of the libraries on the market. you just load them up and you're set. the sets use what you can do with Logic's articulation management. if that's good enough for you, the collection might be a great time saver. especially because we've done some things including universal key switches for the most common articulations. and for those, you can drag regions in between instruments of different libraries and those articulations stay intact.

in my personal opinion, for 90% of the users, there is no need to use a third party swither anymore. because 90% of the libraries available simply don't need special treatment. apple has ironed out the bugs and added the missing features and now articulation maps work just fine. unless you have special/custom/exotic requirements. and if you have those, my recommendation is to try out peter's scripts. they're are an excellent choice and indifference to other solutions on the market, they're straight forward and easy to understand.


----------



## A.G (Jul 17, 2019)

bvaughn0402 said:


> What is the general difference in all the different stuff out there for this:
> 
> 
> AG Toolkit
> ...



At least AG is not the same. It comes with a real software Articulation Editor which has an unique power allowing you to create Articulation Maps for seconds and store them as Logic Art Sets or export to the AG Scripter which allows you to use region automation text control points (not possible in the other systems above), or with a combination of text points and Art IDs. The other unique feature is that AG Editor can teleport the Articulations to a special AG iPad remote workstation.
The other new is that AG Editor will support Cubase Maps and will work as a mega X-DAW Art Maps converter. For example, you will be able to load a real Logic Art Set into AG Editor and save it as a Cubase Expression Map in a second, or load a Cubase Expression Map into AG Editor and store it as a Logic Art Set. We hope to release this update in August.


----------



## Dewdman42 (Jul 18, 2019)

here is another alternative Scripter script for handling the clone of CC, PitchBend and Aftertouch events from a source track to all channelized channels, when channelizing is used to handle articulations. This script automatically makes sure to only forward CC, PitchBend and AfterTouch events while notes are sustaining on destination channels. It also enables a continuation period so that when a NoteOff causes a destination channel to not be "sustaining" any more, there can be a short period of time where the CC, PB and AT events will continue to be forwarded. The continuation period is configurable via Scripter GUI (just for you Asher!).









SCRIPT: Channelizer


Channelizer Script Channelizer has been moved to the following gitlab repo and is now opensource https://gitlab.com/dewdman42/Channelizer/-/wikis/home Questions, comments and bug reports can continue to be discussed here, or you can submit bug reports as Issues on Gitlab if you prefer.




www.logicprohelp.com


----------



## Garlu (Jul 18, 2019)

Dewdman42 said:


> here is another alternative Scripter script for handling the clone of CC, PitchBend and Aftertouch events from a source track to all channelized channels, when channelizing is used to handle articulations. This script automatically makes sure to only forward CC, PitchBend and AfterTouch events while notes are sustaining on destination channels. It also enables a continuation period so that when a NoteOff causes a destination channel to not be "sustaining" any more, there can be a short period of time where the CC, PB and AT events will continue to be forwarded. The continuation period is configurable via Scripter GUI (just for you Asher!).
> 
> 
> 
> ...



This is great! Many thanks, @Dewdman42!!!


----------



## Ashermusic (Jul 19, 2019)

Dewdman42 said:


> here is another alternative Scripter script for handling the clone of CC, PitchBend and Aftertouch events from a source track to all channelized channels, when channelizing is used to handle articulations. This script automatically makes sure to only forward CC, PitchBend and AfterTouch events while notes are sustaining on destination channels. It also enables a continuation period so that when a NoteOff causes a destination channel to not be "sustaining" any more, there can be a short period of time where the CC, PB and AT events will continue to be forwarded. The continuation period is configurable via Scripter GUI (just for you Asher!).
> 
> 
> 
> ...



Well personally, I don't need it as I already have Peter's, which works flawlessly, but if this also works having a free option for my students and clients is terrific, so thanks and kudos to you for taking it on.


----------



## Dewdman42 (Jul 21, 2019)

I want to point out that LPX 10.4.6 ArticulationSet functionality is still a bit broken with regards to channelizing by articulationID. It only channelizes by ID if the track in question has midi channel set to ALL in track properties. if you're using a multi with specific midi channel assigned to the track, then the track assignment overrides whatever the ArticulationSet may or may not be trying to do.

The ArticulationSet channelizing feature, as is, works fine if you don't use any multis. If you start getting into multis or want to send many tracks to a single VEP instance(through a multi), for example; then ArticulationSet channelizing is only semi functional. 

I say "semi" because you can certainly create numerous multi-timbral tracks and change the midi channel to ALL on all of them, and just let the ArticulationSet itself control the midi channel of the notes.. So that will work so far, but then when you want to deal with CC's, PitchBends and Aftertouch you'll start running into problems. Near as I can tell, if you have a track set to midi channel ALL, then when you insert CC events on that track, they will all have midi channel 1 assigned to them in the event list, which of course you are free to tweak in the event list, but what a PITA. Having them all set to channel 1 means its going to be hard to clone them to other channels using a CC Cloner script....if you have more than one source track feeding the multi-instrument. 

At the end of the day, it still does not work well, particularly when you are dealing with multi-instruments. I think it can work fine if you are limiting each instrument channel in LogicPro to a single "instrument", which might be made up of multiple articulations listening on different midi channels, but overall representing one instrument and one source track feeding it. If you constrain to that, then ArticulationSet channelizing will work fine. If you want to work with more then one instrument in a VEP instance, for example, then it breaks down quickly.


----------



## A.G (Jul 22, 2019)

Dewdman42 said:


> I want to point out that LPX 10.4.6 ArticulationSet functionality is still a bit broken with regards to channelizing by articulationID.


That's correct. Using 3rd party ART Systems is highly recommended for now. It is good if the 3rd party system is optimized to switch the single lane CC# (and other similar data) of only the live Note events MIDI channels. This technology saves a lot of CPU and MIDI Bandwidth, clicks, spikes etc.
AG Scripter is powered by such system and works well with Logic Art Sets ID switching.
The other AG rock alternative is the new "VEP MULTI Instance" system which is not dependent from the Logic Scripter. All is done by the AG Kontakt MIDI plugin tool.

*AG CC Cloning tools are 100% automatic (invisible) and do not require any Script Settings!*


----------



## Dewdman42 (Jul 22, 2019)

Free channelizing solution here: https://www.logicprohelp.com/forum/viewtopic.php?f=45&t=143299


----------



## WindcryMusic (Jul 27, 2019)

Has anyone found a quicker way to update fields in the Output tab of Logic's Articulation Set editor, as opposed to doing so one grid cell at a time? It baffles me that setting a whole set of cells via multiselect (shift-click) works in the other two tabs of that dialog, but not in the Output tab. (While you can visually select multiple grid rows in the Output tab as well, a click to actually set any value still only affects the clicked-upon cell.)

The one and only keyboard shortcut I have found for the Output tab is that, if I hit the Tab key once or sometimes twice, a box will appear around the "Value" column element on the current row, that at least allows me to directly type in a value number rather than needing to drag up or down with the mouse to try to reach the intended value. That helped a little, but I still spend the vast majority of my articulation set editing time in the Output tab. repeatedly clicking to set the same type, channel and selector values on dozens of rows. It takes forever, gets maddening, and risks carpal tunnel syndrome.


----------



## Alex Fraser (Jul 27, 2019)

WindcryMusic said:


> Has anyone found a quicker way to update fields in the Output tab of Logic's Articulation Set editor, as opposed to doing so one grid cell at a time? It baffles me that setting a whole set of cells via multiselect (shift-click) works in the other two tabs of that dialog, but not in the Output tab. (While you can visually select multiple grid rows in the Output tab as well, a click to actually set any value still only affects the clicked-upon cell.)
> 
> The one and only keyboard shortcut I have found for the Output tab is that, if I hit the Tab key once or sometimes twice, a box will appear around the "Value" column element on the current row, that at least allows me to directly type in a value number rather than needing to drag up or down with the mouse to try to reach the intended value. That helped a little, but I still spend the vast majority of my articulation set editing time in the Output tab. repeatedly clicking to set the same type, channel and selector values on dozens of rows. It takes forever, gets maddening, and risks carpal tunnel syndrome.


I think the text files can be edited directly. I think @babylonwaves might know more.


----------



## WindcryMusic (Jul 27, 2019)

Alex Fraser said:


> I think the text files can be edited directly. I think @babylonwaves might know more.



Yeah, I took a look at the XML thereof, and I am actually quite comfortable with editing XML in general. But those files are very verbose, not to mention undocumented, so I didn't actually think it would be any faster to learn to edit those files than to just continue creating them with the editor.


----------



## A.G (Jul 27, 2019)

WindcryMusic said:


> so I didn't actually think it would be any faster to learn to edit those files than to just continue creating them with the editor.


By the way the AG ART Pro EDITOR update will come with a new feature "Open Logic Art Sets".
You can open any Logic Art Set "Plist" preset in the AG EDITOR and edit, manage groups, colors, import another set etc just for seconds using the powerful multi selection batch editing functions. After that you can store your work as a Logic Art Set and teleport the Arts to iPad AG Workstation. The other new is that you will be able to store your Logic Art Set as a Cubase Expression Map if you use Cubase Pro.


----------



## Dewdman42 (Jul 27, 2019)

There is a command line tool in OSX called PlistBuddy that may be useful for some people to make direct changes to their articulation set files without having to actually open them in a text editor. I had a script once that removes the OUTPUT section from any art plist.


----------



## WindcryMusic (Jul 27, 2019)

Dewdman42 said:


> There is a command line tool in OSX called PlistBuddy that may be useful for some people to make direct changes to their articulation set files without having to actually open them in a text editor. I had a script once that removes the OUTPUT section from any art plist.



Nice! I’d not heard of this utility before … any such editing I’ve just done manually with VS Code or TextWrangler until now. This tool looks pretty straightforward, and potentially very useful ... if I can also puzzle out the format of these articulations files. (E.g., I have all of my articulation inputs set to “Permanent”, but that setting doesn’t appear in the saved plist file at all. Maybe it’s a default value … but the lack of that sort of information is a bit daunting. I suppose I may just have to get courageous and experiment.)


----------



## hdsmile (Sep 23, 2019)

Dewdman42 said:


> here is another alternative Scripter script for handling the clone of CC, PitchBend and Aftertouch events from a source track to all channelized channels, when channelizing is used to handle articulations. This script automatically makes sure to only forward CC, PitchBend and AfterTouch events while notes are sustaining on destination channels. It also enables a continuation period so that when a NoteOff causes a destination channel to not be "sustaining" any more, there can be a short period of time where the CC, PB and AT events will continue to be forwarded. The continuation period is configurable via Scripter GUI (just for you Asher!).
> 
> 
> 
> ...



great script, thank you Dewdman42,
I also try to stop using ArtZ ID*2 system and completely switch to the internal Logic. I just tested your script with HOW diamond library (PLAY 6) through VEPro and it works excellent. I'm also trying to get this script working with some Kontakt -libraries *via keyswitch*, but unfortunately these efforts were unsuccessful.


----------



## Dewdman42 (Sep 23, 2019)

Event chaser only works for channelized articulations. You shouldn’t need it for keyswitched articulations


----------



## hdsmile (Sep 23, 2019)

yeah I got it thank you


----------



## jbuhler (Dec 6, 2021)

@Dewdman42 I'm trying to get your Channelizer script to work to propogate CCs across midi channels in a Sine instance. It seems to work fine with data that I play in with the actual modwheel or other controller where points are recorded in the midi, but it doesn't seem to respond correctly to drawn automation data. Is this expected behavior? Am I doing something wrong or is there a way to get it to respond to automation data that is drawn?


----------



## Dewdman42 (Dec 6, 2021)

channelizer only channelizes midi data...not plugin automation data. That includes drawn CC automation, but not typical plugin automation. Plugin automation is not on a channel, its directed straight to the plugin.

Maybe I'm not understanding your question... but anyway channelizer should c channelize all the CC automation regardless of whether its CC events in the event list, drawn as CC midi automation or live CC events, etc.. its all the same by the time it gets to scripter its just midi and will be channelized.

PM me if you like and we can try to work through what you're trying to do. Glad to hear someone is finding good use for it.


----------



## jbuhler (Dec 6, 2021)

Dewdman42 said:


> channelizer only channelizes midi data...not plugin automation data. That includes drawn CC automation, but not typical plugin automation. Plugin automation is not on a channel, its directed straight to the plugin.
> 
> Maybe I'm not understanding your question... but anyway channelizer should c channelize all the CC automation regardless of whether its CC events in the event list, drawn as CC midi automation or live CC events, etc.. its all the same by the time it gets to scripter its just midi and will be channelized.
> 
> PM me if you like and we can try to work through what you're trying to do. Glad to hear someone is finding good use for it.



Thanks for responding. The problem: Sine, like Kontakt, Play, etc allows you to load articulations on different midi channels, and use keyswitches and articulation sets to change articulations. So longs and shorts on channel 1, ornaments on channel 2, etc.

If I load it this way, I can use the articulation set to select the correct articulation. It responds as expected to any movement on modwheel or CC slider and I can record it. It will record to channel 1 of that parameter, and it will play back on whatever articulation is selected. All well and good. But if I draw the modulation in, it won't respond—it doesn't matter which channel I do the automation on. So I thought the issue was that the drawn automation data is not being sent to the correct channel. But now I'm really confused because I don't understand why recorded automation and drawn automation would be understood by Logic differently.

In any case, the result I'm looking for is a track loaded with a Sine instance that is using several midi channels, so one track will hold the midi for all the Berlin Strings Violin 1. And I want to be able to add automation—CC1 and CC11 at least—so that whatever the active articulation is will respond to it if appropriate. So all longs that are playing, for instance, will respond to the current value of CC1, regardless of what midi channel they are on. Does that make sense? And if so do you have any ideas about how to get drawn CC1 and CC11 automation so that all channels respond to it?


----------



## Dewdman42 (Dec 6, 2021)

jbuhler said:


> Thanks for responding. The problem: Sine, like Kontakt, Play, etc allows you to load articulations on different midi channels, and use keyswitches and articulation sets to change articulations. So longs and shorts on channel 1, ornaments on channel 2, etc.



Yep. *Channelizer* (or *EventChaser*) are perfect for this situation



jbuhler said:


> If I load it this way, I can use the articulation set to select the correct articulation. It responds as expected to any movement on modwheel or CC slider and I can record it. It will record to channel 1 of that parameter, and it will play back on whatever articulation is selected. All well and good. But if I draw the modulation in, it won't respond—it doesn't matter which channel I do the automation on. So I thought the issue was that the drawn automation data is not being sent to the correct channel. But now I'm really confused because I don't understand why recorded automation and drawn automation would be understood by Logic differently.



Sorry, I may not have understood you, but anyway in LogicPro there are two kinds of drawn automation...there is midi automation and plugin automation. If you were talking about midi automation then ignore my previous comment.

But like I said... all the midi from your regions and tracks...and all the midi coming directly from your controller... whether its recorded as seperate events in the event list, or drawn as CC midi automation curves......by the time it hits *Scripter*, its all the same...*Scripter* just sees those midi events in the order they come, exactly the same as what would be going to Sine.

So no...there is nothing about the drawn version of CC automation that should preclude it from working. There is something else Amiss... I have an idea about that, in a sec...




jbuhler said:


> In any case, the result I'm looking for is a track loaded with a Sine instance that is using several midi channels, so one track will hold the midi for all the Berlin Strings Violin 1. And I want to be able to add automation—CC1 and CC11 at least—so that whatever the active articulation is will respond to it if appropriate. So all longs that are playing, for instance, will respond to the current value of CC1, regardless of what midi channel they are on. Does that make sense? And if so do you have any ideas about how to get drawn CC1 and CC11 automation so that all channels respond to it?



I understand completely, which is why I made the script.

So first, there are two scripts I made. One is called *Channelizer* and one is called *EventChaser*. The up to date version of each one is best found here: 

https://gitlab.com/dewdman42/Channelizer

You can find some docs on using them here:

https://gitlab.com/dewdman42/Channelizer/-/wikis/home

I think you probably want to use *EventChaser* in this case. But let me explain the difference between them.

*Channelizer*

Channelizer is designed to be used mostly WITHOUT using an articulation set output section. You can only use the articulation set IF YOU ALSO CLEAR OUT ANY AND ALL OUTPUT SWITCHES AND CHANNELIZING ACTION. 

WHY: _LogicPro has a design flaw where if the articulation set sends any output switches or channelizing actions, etc.. then it also clears the articulationID from the event. Channelizer depends on articulationID_. 

But *Channelizer* is designed to do the actual channelizing, (DO NOT USE articulation set to assign to channels). Just use the articulation set for the purpose of having useful names attached to the articulationID's, nothing else, then let Channelizer do all the channelizing and everything else. 

There are advantages to the Channelizer approach handling the channelizing duties, including the fact you can have more then 16 articulations for an instrument spread across AU3 midi ports if you're using VePro, for example.

*EventChaser*

EventChaser is a more simple approach, this assumes you have already channelized your articulations in the articulation set and it does not need to see articulationID either. it simply takes whatever CC's are coming in (or Aftertouch, Pitchbend) and propagates them to other midi channels when notes are sustaining. This is probably the one you should use if you already setup your articulation sets to channelize.

It basically means that it is assuming your instrument is using all of the 16 midi channels of the current midi port, it does not have access to other AU3 midi ports.

Note that if and when you are using multi-port VePro..with numerous instruments in each VePro instance, then this script may not be that helpful, Channelizer is better in that case.


----------



## jbuhler (Dec 6, 2021)

Dewdman42 said:


> Yep. *Channelizer* (or *EventChaser*) are perfect for this situation
> 
> 
> 
> ...


I've now had a chance to install and test the Event Chaser, and it is indeed doing the trick. Thanks!


----------



## KeithRamsey (Mar 6, 2022)

Does channelizer work with the AU2 version of VE Pro in Logic? I understand the CC99 mode in channelizer is for accomodating VEP6, but for channelizer to work at all, is it necessary to use the AU3 version of VEP in Logic? Thanks!


----------



## Dewdman42 (Mar 6, 2022)

Channelizer will work with AU2 or AU3 and does NOT use the VePro CC99 trick. But with AU2 it will be limited to only port #1

I actually don't know if it would work with the CC99 trick or not....


----------

