Logic Pro Scripter: Practical MIDI FX Without Starting From Code

Start with supplied MIDI processors, make a useful controller assignment and keep Scripter output as editable MIDI without writing a script from scratch.

7 min read
Logic Pro Scripter MIDI FX with supplied settings and editable MIDI capture
Use supplied Scripter processors, assign a controller and record processed MIDI.

Scripter can look like the wrong place to start if you want a musical result rather than a JavaScript lesson. Open it and there is a script editor waiting. But you do not have to write a script to use the processors and tutorials supplied with Logic Pro.

Start by loading a supplied setting in Scripter’s header menu, then use the controls that setting exposes. For a useful first job, Apple’s Control Plug-ins tutorial can assign your modulation wheel to a parameter on the same channel strip. If you want to keep the output of a note-processing script as editable MIDI, the recording route depends on whether you are playing live or processing an existing region.

I would start with those two jobs: make one controller assignment work, then learn where the processed MIDI goes. A custom script is worth considering once you can name what the supplied tools cannot do.

Where Scripter belongs in a Logic Pro project

Scripter processes or generates MIDI. Put it in a MIDI FX slot on a software instrument channel strip, above the instrument. It can change the events reaching that instrument; the instrument still produces the sound. Loading Scripter in this chain does not turn it into an audio effect for recorded vocals or a finished mix.

That distinction is useful when troubleshooting. If the instrument cannot produce sound from an ordinary MIDI part, solve that first. Our MIDI recording guide covers the basic track setup, while the MIDI keyboard troubleshooting guide deals with a controller that is not reaching Logic.

The plug-in window also depends on the loaded script. A blank-looking panel is not evidence that Scripter is broken: the script defines its own sliders and menus. Apart from the global Open Script in Editor button, the controls depend on the loaded script.

Start with a supplied setting

  1. Check Logic Pro → Settings → Advanced → Enable Complete Features, then select a software instrument track with an instrument loaded.
  2. Insert Scripter in its MIDI FX section.
  3. Open the Settings menu in the plug-in header and choose a supplied processor or tutorial.
  4. Read the controls it exposes before changing them. For a timing-based processor, check whether it expects the transport to run.

Apple documents supplied Scripter processors that work without writing code. Menu organization and supplied settings can change; follow the names and comments in your installed version instead of assuming every tutorial shows the same folders.

Scripter setting menu, Open Script in Editor button and Run Script in Logic Pro
Load a supplied setting from the header. Open Script in Editor is the separate route for inspecting or pasting code; the short example shown only passes incoming events through.

A practical first assignment: modwheel to a plug-in parameter

Use Apple’s supplied Tutorial15: Control Plug-ins example for this. It exposes a Modwheel Target control and remaps modulation-wheel messages to the chosen destination. Other incoming events pass through in this example.

  1. Load the Control Plug-ins tutorial in Scripter. If the setting uses a slightly different name, identify the supplied example by its Modwheel Target control.
  2. Open the instrument or effect whose parameter you want to control. It must be after Scripter on the same channel strip.
  3. In Modwheel Target, choose Learn Plug-in Parameter, then click the desired parameter in that plug-in.
  4. Move the modulation wheel to check the assignment. If nothing moves, first establish that your controller is sending modulation-wheel data, rather than a different knob’s MIDI message.
  5. Save the setting under a useful name, such as “Modwheel — instrument cutoff,” and save the project.

The destination is stored with the plug-in setting. I would choose a parameter with an obvious musical purpose, such as the instrument’s filter cutoff, before building a more involved mapping. That gives you one relationship to understand: this wheel controls this parameter.

The tutorial specifically listens for CC1, the modulation-wheel controller number. Loading it will not automatically map every fader on a keyboard. For the broader controller setup, use our guide to MIDI controllers in Logic Pro.

This example is a parameter-control task. Do not expect it to create a new melody or a Piano Roll full of extra notes. A learned plug-in destination also should not be assumed to become an ordinary MIDI CC lane merely because you record MIDI.

Use an existing script when you need a different processor

You can paste an existing script without developing one yourself, but that is a different route from selecting a factory setting. Read its purpose and requirements first. A script written for articulation switching, for example, is not a general fix for every MIDI instrument.

Apple’s Script Editor workflow is: open Scripter, click Open Script in Editor, paste the JavaScript into the Code Editor, then click Run Script. Evaluation errors and output appear in the Interactive Console. Saving pasted text is not a substitute for applying it with Run Script.

Keep an unchanged copy of the original script and begin in a duplicate project or track. Check what it says about note channels, controller numbers, timing and required instruments before deciding it is incompatible. Transport-aware scripts can use tempo and beat-position information, so stopped playback may matter for one processor while another works as soon as you play a note.

For supplied tutorials, Apple gives priority to the latest comments inside the tutorial scripts when they differ from the documentation. The editor’s JavaScript version also depends on the system’s JavaScriptCore framework. Record the script source and your Logic/macOS versions when investigating an error; do not assume code from an old forum post is current.

Record the processed MIDI, not just the notes you played

Before recording, decide what you want to keep. An audio bounce preserves sound. A MIDI recording preserves events you can edit. For a note-generating or note-modifying Scripter setting, choose the capture method that matches the source of those events.

Capture a live performance after Scripter

Logic’s Record MIDI to Track Here command captures real-time MIDI FX output. It is useful when you want the notes or controller data produced during your performance to become a MIDI region.

  1. Arrange the MIDI FX chain on the software instrument track.
  2. Click the arrows near the right edge of the last MIDI effect you want included.
  3. Choose Record MIDI to Track Here.
  4. Confirm the two small yellow triangles appear immediately below that plug-in, then record the performance.

The marker defines the capture point. MIDI effects below it are excluded from the recorded output. If you want a processor after Scripter included too, put the marker below that processor rather than below Scripter alone.

Record MIDI to Track Here marker with two yellow triangles below Scripter and above Sampler
The yellow triangles mark the MIDI recording point. Place them below the last MIDI effect whose output you want to keep.

Apple also supports recording this live output onto another software instrument track: on the receiver, choose the marked source from Internal MIDI In → MIDI to Track. That gives you a separate destination when preserving the processing track matters.

For playback of an existing MIDI region, use the separate workflow in Apple’s internal MIDI routing instructions. The receiving track takes its source from Instrument Input: the sending track’s MIDI signal after all MIDI effects, immediately before its instrument.

  1. Keep the source region and its Scripter setup on the sending track. Create a separate software instrument track for the printed MIDI.
  2. Move the playhead before the source region and select the receiving track.
  3. In its Track inspector, choose Internal MIDI In → Instrument Input → your sending track.
  4. In the receiver’s Record menu, choose only Internal MIDI In if you want to exclude your keyboard input.
  5. Leave the source track’s Record Enable off, enable recording on the receiver, and record through the region.
Printed MIDI receiving track selecting Scripter Source through Internal MIDI In and Instrument Input
For an existing source region, select Instrument Input on the receiving track and record there. The original region stays on its own track.

Use the receiver without a second copy of the processing script when you want to hear the printed events without applying that processing again. Then inspect the result in the Piano Roll before editing it.

Instrument Output is a different source. It refers to an instrument plug-in that can send MIDI events. It is not the option for capturing Scripter’s output before a normal instrument. Keep that distinction clear when choosing the source menu.

Save the processor so you can return to it

Save Setting As in the plug-in header creates a named reusable setting; Logic also recalls plug-in settings with the project. Name the setting for its musical job and destination, not just “Scripter new.”

I would keep the processing track while arranging and print to a separate MIDI track once the part needs detailed editing. It leaves the original input and settings available if the arrangement changes. When a setting depends on a particular downstream instrument or effect, keep that channel-strip context too; a remembered destination is not a reason to discard the plug-in it controls.

When Scripter is the wrong tool for the job

Choose the simpler processor when it already handles the task. Use Arpeggiator for a regular arpeggiated pattern, Note Repeat for played rhythmic repeats, or the Piano Roll for a small manual edit. Scripter earns its place when a supplied script gives you a specific transformation or controller behavior those routes do not cover.

Why does Scripter load but do nothing?

Separate a script error from a script that receives the wrong input. Check the loaded setting, its expected event type and controller number, the channel-strip position, and any transport requirement. For pasted code, read the Interactive Console after Run Script. The pass-through code shown earlier intentionally changes nothing.

Why are only my original notes in the region?

Check the recording route. For live playing, look for the yellow capture marker below the required MIDI effects. For playback of an existing region, check Instrument Input on the receiver. Hearing processed sound does not by itself establish that you recorded the processed events.

Start with one processor and one clear output. Once the mapping or MIDI capture behaves as you expect, bring it into the wider arrangement; our Logic Pro music creation hub connects the related instrument, MIDI and arrangement guides.