A technical support community for Apple Logic Pro users.

 
User avatar
Dewdman42
Topic Author
Posts: 2078
Joined: Tue Sep 09, 2014 3:01 pm
Location: Park City, UT

Articulation Channelizer Script

Thu Jul 18, 2019 8:06 pm

Channelizer Script

Channelizer3_2g.pst.zip
(5.19 KiB) Downloaded 9 times


This script can be used to channelize midi events based on Articulation ID. In addition, CC, PitchBend, ProgramChange and AfterTouch events can be forwarded from the source channel(s) to the corresponding channels where notes are being channelized. It does this in an intelligent way whereby CC, PB, PC and AT events are only forwarded when there are actual sustaining notes on those channels. This can drastically reduce midi traffic compared to some other approaches. This script is also AU3 multi-port aware and can handle channelizing of multiple source channels independently of each other through the same script as well as channelizing across ports for up to 768 total destination channels on up to 48 ports. This is extremely helpful when working with VEP7, for example.

Note - LogicPro is currently limited to 127 midi tracks per multi-timbral instrument. So there can only be up to 127 unique source midi tracks, but the actual midi port and channel for each one of those can be any port/channel within the 768 channels embodied by 48 ports. Do not exceed 127 source channels, as LogicPro will throw a fit when you try and destroy your project.

If you're using VePro7, this script works REALLY WELL in combination with the following VePro AU3 template: viewtopic.php?f=9&t=143416



Installation

In order to install the script, unzip the following PST file and save it to ~/Music/Audio Music Apps/Plug-In Settings/Scripter/. The script will then appear in Scripter's preset list under the name of Channelizer.


Behavior

channelizer.jpg
channelizer.jpg (76.73 KiB) Viewed 4367 times



Channelizer will detect channels that have articulationID assigned to events. Those channels will be regarded as source channels. Source channels will be re-channelized according to their articulationID. The destination midi port/channel will be calculated relative to the source channel. For example, if the source channel=1 and an event with articulationID=5 comes through, it will be channelized to channel 5. If another event on source channel 2 had articulationID=5, that event would be re-channelized to channel 6. Just one simple example. This makes it possible to create LogicPro Articulation Sets that all are numbered starting at id=1 and reuse on different tracks. Up to 768 destination channels are supported across 48 ports. The script can accept articulationID's up to 254 and will automatically calculate the correct port/channel incrementally for 254 midi channels, automatically spreading across ports as needed if there are more than 16 articulations.

In addition, CC, PitchBend, ProgramChange and AfterTouch messages will also be forwarded to channels receiving articulated events, as long as there are any sustaining notes on the dest channels. It is up to the user to configure their LogicPro ArticulationSet so that the range of re-channelizing for each source channel will not overlap or conflict with other source channels. The script does provide some debug logging and protection to help detect and avoid this (see below).


GUI

3.2g-gui.jpg
3.2g-gui.jpg (92.21 KiB) Viewed 373 times


  • Lowest Channelizer Port - This menu specifies the lowest port that will be automatically channelized by articulationID. All midi channels lower then this setting will be passed through the script untouched. This provides a way to mix channelizing tracks with non-channelizing-keyswitched tracks. Assign lower midi port/channels to the non-channelized tracks and configure this setting above that.

    NOTE - you should NOT intermingle channelizing channels with non-channelizing-keyswitched channels. In order for the script to work correctly put all the non-channelizing channels on lower midi channels and set this menu item for a higher channel to handle all channelizing channels.

  • Channel Range Conflict - This menu determines how to handle channel range conflicts if and when they occur. Channel range conflicts occur when one source channel sends an event with articulationID is that large enough to re-channelize the notes into the range of another source channel that has been detected. This is generally not desirable. The default behavior is to MUTE the offending notes when encountered, but it can also be configured to send them to the original source channel or to allow them thru.

  • Forward CC - Enable/Disable forwarding of CC events from each source channel to the destination channels where re-channelized notes are being sent.

  • Forward PitchBend - Enable/Disable forwarding of PitchBend events from each source channel to the destination channels where re-channelized notes are being sent.

  • Forward ChannelPressure - Enable/Disable forwarding of AfterTouch events from each source channel to the destination channels where re-channelized notes are being sent.

  • Forward ProgramChange - Enable/Disable forwarding of ProgramChange events from each source channel to the destination channels where re-channelized notes are being sent.

  • Continuation - This slider adjusts how much time (in beats) to continue forwarding CC, PitchBend, ProgramChange and AfterTouch events to the destination channels after notes are no longer sustaining. This ensures that these messages will continue to effect the destination channels while instruments complete their release phases. This value is adjustable from 0-10 beats.

  • Reset - The reset button will reset the various event chasing counters that are keeping track of source channels and accumulated CC values on each channel. It should not generally be necessary to use this button, but its there in case you need it. Every time you hit PLAY on the transport this reset occurs automatically.

LogicPro Articulation Sets

The best way to use this is to create an Articulation Set for each channelized track in LogicPro. The Articulation Set must NOT have anything assigned in the OUTPUT section. This is necessary in order to pass articulationID out to the script. Do not channelize anything in the Articulation Set and do not assign any key switches.

Create up to 254 articulations in each Articulation Set. Number them as you wish between 1-254. Name them as you wish and configure the input switch section as you wish. Here is a simple example:

artset.jpg
artset.jpg (91.21 KiB) Viewed 4887 times

artsetoutput.jpg
artsetoutput.jpg (104.32 KiB) Viewed 4887 times


Troubleshooting

It is possible to create Articulation Sets with many articulationID's and sometimes could have a situation where one source channels is re-channelizing events high enough to overlap into another source channel's range, and this can be problematic. This script produces WARNING and ERROR messages in the bottom of the Script Editor window when such conflicts occur during playback. It's a good idea to play your project with the Script Editor open at some point to make sure there are no channelizing conflicts happening:

warnings.jpg
warnings.jpg (144.44 KiB) Viewed 4887 times


Please post all questions and suggestions about the script here on this forum thread.
Last edited by Dewdman42 on Wed Feb 19, 2020 8:31 am, edited 14 times in total.
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10.4.8, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
User avatar
Dewdman42
Topic Author
Posts: 2078
Joined: Tue Sep 09, 2014 3:01 pm
Location: Park City, UT

Re: Channelizer Script

Tue Jul 30, 2019 9:37 pm

Update, Channelizer 2.061 (new Script name)

Includes automatic operation, ability to handle multi-timbral and more.
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10.4.8, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
User avatar
Dewdman42
Topic Author
Posts: 2078
Joined: Tue Sep 09, 2014 3:01 pm
Location: Park City, UT

Re: Articulation Channelizer Script

Wed Sep 11, 2019 3:14 pm

Update, Channelizer 2.062

Includes improved GUI control handling which properly remembers settings between sessions.
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10.4.8, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
User avatar
daveyboy
Posts: 228
Joined: Thu Oct 16, 2008 12:05 am
Location: Los Angeles
Contact:

Re: Articulation Channelizer Script

Wed Jan 15, 2020 6:59 pm

This works great! Thanks so much. I’m making some custom keyswitchable multis using Play and it’s awesome.
 
User avatar
Dewdman42
Topic Author
Posts: 2078
Joined: Tue Sep 09, 2014 3:01 pm
Location: Park City, UT

Re: Articulation Channelizer Script

Thu Jan 16, 2020 9:09 am

Glad to hear it!
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10.4.8, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
User avatar
Dewdman42
Topic Author
Posts: 2078
Joined: Tue Sep 09, 2014 3:01 pm
Location: Park City, UT

Re: Articulation Channelizer Script

Mon Feb 03, 2020 3:29 pm

Channelizer updated to version 3.03b, which includes support for up to 48 midi destination ports and other improvements.
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10.4.8, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
User avatar
Ashermusic
Posts: 3204
Joined: Sat Oct 22, 2005 11:51 am
Location: Lake Balboa, CA
Contact:

Re: Articulation Channelizer Script

Wed Feb 05, 2020 8:01 am

Thanks. With the discontinuation of the SkiSwitcher/ArtZ ID, this is very helpful.
iMac 3.5 Quad Core i7 w/ OSX 10.14

Composer, Logic Pro X Certified Trainer
Author of "Going Pro with Logic Pro 9" & "Scoring with Logic Pro"
http://www.jayasher.com
 
User avatar
Dewdman42
Topic Author
Posts: 2078
Joined: Tue Sep 09, 2014 3:01 pm
Location: Park City, UT

Re: Articulation Channelizer Script

Wed Feb 05, 2020 9:57 am

:D
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10.4.8, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
User avatar
Dewdman42
Topic Author
Posts: 2078
Joined: Tue Sep 09, 2014 3:01 pm
Location: Park City, UT

Re: Articulation Channelizer Script

Fri Feb 07, 2020 7:38 pm

update to version 3.2e. No new features here, but the code has been completely restructured and improved for the future. I will leave the previous version available online just in case, but I need people to use the new one to make sure its working completely. Passes my tests, but never know.
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10.4.8, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
User avatar
Dewdman42
Topic Author
Posts: 2078
Joined: Tue Sep 09, 2014 3:01 pm
Location: Park City, UT

Re: Articulation Channelizer Script

Mon Feb 10, 2020 10:07 pm

Update to version 3.2f with some critical bug fixes found in 3.2e.
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10.4.8, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
User avatar
Dewdman42
Topic Author
Posts: 2078
Joined: Tue Sep 09, 2014 3:01 pm
Location: Park City, UT

Re: Articulation Channelizer Script

Wed Feb 19, 2020 8:32 am

Update to version 3.2g, small performance improvement.
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10.4.8, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
bigdavidtapt
Posts: 2
Joined: Fri Feb 21, 2020 3:31 am

Re: Articulation Channelizer Script

Fri Feb 21, 2020 3:38 am

Hello, I'm new to this site and Logic and I just wanted to know how to create the articulations if we are NOT to assign anything in the OUTPUT section? Forgive me for being a "Noob". lol...
 
User avatar
Dewdman42
Topic Author
Posts: 2078
Joined: Tue Sep 09, 2014 3:01 pm
Location: Park City, UT

Re: Articulation Channelizer Script

Fri Feb 21, 2020 8:04 am

This script works by Channelizing each articulation INSTEAD OF sending keyswitches. You will need to setup your instruments with each articulation listening on a different Midi channel and no need to receive a keyswitch.

Unfortunately logicpro strips the articulation id from events if you configure anything in the output section of the articulation set, so you cannot use this script to channelize in combination with also sending keyswitches from the articulation set, but generally they should not be necessary when using the channelizing approach.
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10.4.8, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
bigdavidtapt
Posts: 2
Joined: Fri Feb 21, 2020 3:31 am

Re: Articulation Channelizer Script

Fri Feb 21, 2020 12:13 pm

So pretty much, it's like sending an articulation id to a midi channel?
 
User avatar
Dewdman42
Topic Author
Posts: 2078
Joined: Tue Sep 09, 2014 3:01 pm
Location: Park City, UT

Re: Articulation Channelizer Script

Fri Feb 21, 2020 12:17 pm

no.

The midi events will be channelized, (ie, sent on a midi channel) that corresponds to the articulationID assigned to it (presuming the articulationID has not been stripped off by the articulationSet output section).

Some sample libraries do not actually provide key switching at all, and so the method has previously been to put each articulation on its own track, with a different midi channel assigned to each track. With this script, you can use one source track for an instrument and assign articulationID's to each note...and then as it plays back it will automatically channelize each note to the right midi channel (and thus played by the right instrument with the right articulation sample)...no keyswitches needed and still just one source track for the entire instrument.

There are some other advantages of using this approach instead of keyswitches. For example, you can easily adjust the volume level of each articulation relative to each other when each articulation is basically a separate instrument with separate level adjustment.
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10.4.8, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
HELP SUPPORT OUR FORUM: