<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "macOS: -",
    "tvOS: -",
    "visionOS: -",
    "watchOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreMIDI",
  "identifier" : "/documentation/CoreMIDI/MIDIControlTransform",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Core MIDI"
    ],
    "preciseIdentifier" : "c:@S@MIDIControlTransform"
  },
  "title" : "MIDIControlTransform"
}
-->

# MIDIControlTransform

A structure that describes the transformation of MIDI control change events.

```
struct MIDIControlTransform
```

## Overview

A single parameters object may describe any number of transformations to control events. It’s important to order multiple transformations correctly: filter out, remap, and then alter values.

The system performs all transformations internally using 14-bit values, so when you perform an add, min, or max transform on a 7-bit control value, the parameter must be a 14-bit value. For example, to add 10 to a control value, the parameter must be (10 << 7) = 1280.

Based on the MIDI specification, the system interprets several controls specially:

|Control|Function                                   |
|-------|-------------------------------------------|
|32-63  |The least signifcant bit of 0-31.          |
|6/38   |Data entry.                                |
|96, 97 |Data increment and decrement, respectively.|
|98-101 |NRPN/RPN                                   |

## Topics

### Configuring a Control Transform

[`controlType`](/documentation/CoreMIDI/MIDIControlTransform/controlType)

The type of control specified by the control number.

[`remappedControlType`](/documentation/CoreMIDI/MIDIControlTransform/remappedControlType)

The remapped control type.

[`controlNumber`](/documentation/CoreMIDI/MIDIControlTransform/controlNumber)

The control number to affect.

[`transform`](/documentation/CoreMIDI/MIDIControlTransform/transform)

The type of transformation to apply to the event values.

[`param`](/documentation/CoreMIDI/MIDIControlTransform/param)

An argument to the transformation method.

### Initializers

[`init()`](/documentation/CoreMIDI/MIDIControlTransform/init())

[`init(controlType:remappedControlType:controlNumber:transform:param:)`](/documentation/CoreMIDI/MIDIControlTransform/init(controlType:remappedControlType:controlNumber:transform:param:))

## Relationships

### Conforms To

[`Sendable`](/documentation/Swift/Sendable)

[`BitwiseCopyable`](/documentation/Swift/BitwiseCopyable)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)