# logic midi note duplication and mapping between tracks in logic pro x

I'm working with Logic Pro X and I'm processing an EXS24 track with a midi controlled effects au (Sugar Bytes Effectrix) using its pattern keys and midi triggering functions. The way these work is you have 12 keys (C3-G3) that each trigger a step-sequence of effects (for example, stretching for half a bar, then distortion/delay) processing that apply to whatever audio signal you've piped to it. The step sequencer begins once the key is held down & stops/resets when released. In my EXS24 Instrument I have many chunks of vocals on different keys that I'd like to pipe to different effect sequences in Effectrix with a single keystroke.

Ideally, for example, what I'd like to happen is when I trigger any sample in the EXS24 instrument track, it would duplicate the midi note message to the track that had Effectrix in it, which would then only interpret that note as C3 for example, thus triggering a specific sequence in Effectrix at the same time as the sample is played in the sampler. Is this at all possible using some midi routing/processing magic in Logic Pro X or using some plugin?

Thanks! Andres

If I am understanding you correctly, you can put a Scripter MIDI plugin on your Effectrix channel and accomplish what you want.

The script would be something like this:

/* Modify any note to C3 */

function HandleMIDI(event) { // listen for MIDI events
if (event instanceof Note) { // if the event is a note
event.pitch = 60; // change the pitch of the note to C3
event.send(); // send the note through to the sound generator
}
}


Then whatever notes you feed into the Effectrix channel, they will always play a C3.

You can expand this script in all kinds of ways. For example, if the notes were C3 or below you could trigger C3, and if they were above C3 you could trigger C4.

/* Modify any note to C3 or C4 based on a split at C3 */

function HandleMIDI(event) { // listen for MIDI events
if (event instanceof Note) { // if the event is a note
if (event.pitch <= 60) { // if the note is less than or equal to C3
event.pitch = 60; // change the pitch to C3
} else {  // if the note is above C3
event.pitch = 72; // change the pitch to C4
}
event.send();  // send the note through to the sound generator
}
}


There is documentation in the manual and also many factory scripts are included within Scripter that provide a lot of example code. And also the factory scripts are quite useful in and of themselves.

You don’t necessarily have to know JavaScript to be dangerous with Scripter, but if you want to be a Scripter expert, the good news is you likely only have to learn about 1% of JavaScript because the Scripter context is fairly simple. But it is very powerful because the scripts you write can make decisions and generate randomness and even present user interface.

Try MidiPipe: http://www.subtlesoft.square7.net/MidiPipe.html it should be easier to do what you want with this external application than using Logic's internal MIDI filters.