Transformer Objects

You can use a transformer object to select, filter, and alter MIDI events in real time.

Transformers can also process meta events, as long as they are not the meta events that affect transformers. These particular meta events change the transformer, rather than being processed by it. For more information, see Using Meta Events to Control Condition and Operation Values.

To create a new transformer object
  • Choose New > Transformer (or use the New Transformer key command).

Figure. Transformer object and its parameter box.

How the Transformer Object Works

A transformer object checks whether or not an incoming event matches certain conditions. If it does, then certain operations are carried out.

Events that do not meet the conditions may pass unchanged to the output, or may be discarded.

The transformer can also make copies of matching events before altering them, and can split the selected (matching) events from the unselected ones, via its two top cables.

You must place the transformer in the MIDI signal path in order to use it.

To alter the output of an instrument
  1. Cable the instrument output into the transformer (removing the instrument’s internal port assignment in the process).

  2. Choose New > Instrument to create a new instrument, and assign it to the appropriate MIDI output port.

  3. Cable the output of the transformer object into this newly created instrument (which, in essence, is simply acting as a MIDI output port.

Figure. Instrument-transformer-instrument chain.

Configuring a Transformer Object

Double-clicking a transformer icon opens the Transformer window, where you can set the conditions and operations.

Figure. Transformer window.

Setting the Operation Mode

Use the pop-up menu at the top of the Transformer window to define how a transformer handles MIDI events. You can choose between the operation modes outlined below.

Apply Operation and Let Non-Matching Events Pass Thru

MIDI events that match the condition are processed. MIDI events that don’t conform to the condition are passed through.

Apply Operation and Filter Non-Matching Events

MIDI events that conform to the condition are processed. MIDI events that do not conform to the condition are not passed through.

Filter Matching Events

All MIDI events that match the condition are filtered out. MIDI events that don’t conform to the condition are passed through.

Copy Matching Events and Apply Operation

All MIDI events that conform to the condition are copied, and the copy is processed. The original and transformed copy (plus any MIDI events that don’t conform to the condition) are passed through. The unchanged original is parsed (processed) before the transformed copy.

Copy Matching Events and Apply Operation (Reverse Order)

This is the same as above, except the original is parsed after the processed copy. You might want to use this when converting note events to pan controllers, for example. This causes the pan message to be sent before the note. (Many synths don’t alter the pan position of notes that are currently playing.)

Condition Splitter (True → Top Cable)

Events that match the conditions are altered by the operations, and sent to a transformer’s top output. Events that don’t match the conditions are sent, unaltered, to a transformer’s second output. Do not use the other outputs as nothing ever appears there.

Alternating Split

Events entering the transformer are alternated between the top two outlets. No conditions or operations apply.

SysEx Mapper (Data Byte 1 → Position, Data Byte 2 → Value)

This transformer mode is used to create and edit SysEx messages. The Transformer window operations are replaced by value fields that allow you to enter the structure of the SysEX message including its length, whether or not a checksum is required, and the values of bytes you don’t want to change in real time.

Figure. SysEx mapper in the Transformer window.

In the Conditions area, you select the type of MIDI event that will affect the data bytes in the SysEx message. (Typically, you’ll use MIDI controller events.) Incoming MIDI events will then change the SysEx message data bytes, according to the following rules:

  • The data byte 1 value sets the position of the data byte.

  • The data byte 2 value sets the value of the data byte.

  • The channel controls the action to be taken:

    • Channel 1: The changed SysEx message is sent.
    • Channel 2: The changed SysEx message is not sent.
    • Channel 3: The unchanged SysEx message is sent.
    • Channels 4 to 16: No meaning (reserved for future use).

The “Filter non-matching” checkbox prevents incoming MIDI events (that don’t control the SysEx message) from being passed through. Typically, you’ll want this feature turned on, to prevent interloping controller data from invading the SysEx data stream.

Track Automation Splitter (True → to Cable)

If the condition matches, incoming events are sent to the track automation of the object connected to the top cable of the transformer, after passing through the Operation field. With the appropriate Operation field settings, incoming MIDI data is transformed into Fader event data, allowing the automation of any possible parameter of the connected mixer object. Exception:  Channel volume and channel pan uses Control events.

Defining Conditions and Operations

The conditions and operations are the same as those found in the Transform window. For more information, see Editing MIDI Events in the Transform Window. The only differences arise from the fact that a transformer object works in real time and therefore position and note length have no useful meaning.

Editing Pitch Bend Events

A transformer object can process 14-bit pitch bend events, which contain two discrete data bytes:  if byte 1 is changed (by addition or scaling with the -1- operation), the change also affects the second byte.

Set the Data Byte 2 operation to Thru to ensure that 14-bit pitch bend data is processed properly.

Using Meta Events to Control Condition and Operation Values

You can control the values of any transformer conditions or operations by using meta events. Meta events are internal Logic Pro messages—their form is similar to MIDI controller events, but they have no MIDI meaning, they never leave Logic Pro, and they control internal Logic Pro parameters.

Like MIDI controller events, meta events have two data values:  the first one indicates the type of meta event (49 to 127, but not all are used), and the second one is the event value (0 to 127).

Meta events 122 to 127 affect transformer parameters.

  • Meta event #127 sets the first (top) operation value.

  • Meta event #126 sets the second (bottom) operation value (if available).

  • Meta event #125 sets the first (top) condition value.

  • Meta event #124 sets the second (bottom) condition value (if available).

Note: Transformers can also process meta events, as long as they are not the meta events listed above.

Note that all numerical condition and operation parameters used (conditions not set to All and operations not set to Thru) will be affected by the same meta event. The status condition and operation are not affected by meta events.

If you want to set numerical parameters individually, or leave some fixed, use separate transformers in series.

  • Meta event #123 sets the transformer map position.

  • Meta event #122 sets the transformer map value for the current map position. (Use meta event #123 to set the position first.)

Note: You can use a transformer’s Map Set operation to create these two meta events simultaneously. When the operation status is set to Map Set, the Data Byte 1 parameter specifies the map position, and the Data Byte 2 parameter specifies the map value at that position. (A meta event #122 is sent with the Data Byte 1 value, followed by a meta event #123 with the Data Byte 2 value.)

You can create meta events with a fader object, you can transform MIDI events into meta events with a transformer, and you can add meta events to a MIDI region from the Event List. When you use a fader, set the Output definition to meta, then set the Data Byte 1 value to the meta event number.

You can remotely control any fader by changing its Input definition, allowing you to use faders (as well as other transformers) to convert MIDI events to meta events for the remote control of transformers.