A technical support community for Apple Logic Pro users.



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

Articulation Channelizer Script

Thu Jul 18, 2019 8:06 pm

Channelizer Script

Update
This new script completely supercedes the script called ChannelFollower.


Channelizer_2_062.pst.zip
(6.31 KiB) Downloaded 24 times


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


This script can be used to channelize midi events based on Articulation ID. In addition, CC, PitchBend 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 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 127 total midi channels over 8 ports. This is extremely helpful when working with VEP7, for example.

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 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 127 destination channels are supported across 8 ports. The script can accept articulationID's up to 127 and will automatically calculate the correct port/channel incrementally for 127 midi channels.

In addition, CC, PitchBend 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

channelizergui.jpg
channelizergui.jpg (81.51 KiB) Viewed 3005 times


  • Lowest Channelizer - This menu specifies the lowest channel 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.

  • 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 AfterTouch - Enable/Disable forwarding of AfterTouch 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 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.

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

  • 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 127 articulations in each Articulation Set. Number them as you wish between 1-127. 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 3005 times
artsetoutput.jpg
artsetoutput.jpg (104.32 KiB) Viewed 3005 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 3005 times


Please post all questions and suggestions about the script here on this forum thread.
Last edited by Dewdman42 on Wed Sep 11, 2019 3:28 pm, edited 6 times in total.
5,1 MacPro 3.46ghz x 12 128gb ram, OSX 10.14, Logic Pro 10, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
User avatar
Dewdman42
Topic Author
Posts: 1841
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, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list
 
User avatar
Dewdman42
Topic Author
Posts: 1841
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, Mainstage3, Cubase10, StudioOne, Reaper, DP9, VEP, VSL, too many plugins to list