# Actions

An Action defines *what* happens when a Cue fires. Each Cue has exactly one Action in beta, and each Action has two parts: **Behaviour** (how the value is represented) and **Output** (where the value is sent).

<figure><img src="/files/w63BFobRoKuD0gT9KYH7" alt=""><figcaption></figcaption></figure>

### Behaviour - Buttons

<div align="left"><figure><img src="/files/6cjwNFV0bqkaXAPW3Vn0" alt="" width="196"><figcaption></figcaption></figure> <figure><img src="/files/6IwvWuyk0aAnVJ2wbD1g" alt="" width="158"><figcaption></figcaption></figure></div>

#### **For the Hold Cue State:**

**Match:** Passes the input value through as-is.

**Invert:** Reverses the value.

**Strobe:** Toggles the output on (usually 127) and off (0) at a configurable rate for as long as the cue conditions hold. Release the control or advance past the cue, and strobing stops.\
This is just for a bit of fun, it may or may not stay...

<div align="left"><figure><img src="/files/BwgalrDeNmv2TsbDwhzi" alt="" width="186"><figcaption></figcaption></figure></div>

#### For the Press and Release Cue States:

**Pulse On:** Sends 127 then 0 when the input is pressed, or released\
\
**Pulse Off:** Sends 0 then 127 when the input is pressed, or released<br>

### Behaviour - Continuous

<div align="left"><figure><img src="/files/p8UbnzdfM8XidC23UwLe" alt="" width="126"><figcaption></figcaption></figure> <figure><img src="/files/Y3AzXsmRRd7eSXSHYctO" alt="" width="158"><figcaption></figcaption></figure> <figure><img src="/files/qi1VeUDQCIVJGuIHJb1v" alt="" width="226"><figcaption></figcaption></figure></div>

**For the Range State: Match** or **Invert** copies or inverts the values.\
\
**For the Threshold Cue State:** Uses **Pulse On** or **Pulse Off** same definitions as above.\
\
**For the Velocity Cue State:** Uses either **Pulses** or **Sustain,** which only outputs a new value of 127 or 0 whenever the condition is true or is false, rather than a trigger.

### Output

<div align="left"><figure><img src="/files/whhfmNrkxfeIAR4o2FI7" alt="" width="381"><figcaption></figcaption></figure></div>

**Match Input:** Output goes to the same address as the input. The behaviour may modify the value (Match, Invert, Strobe), but the channel and CC are unchanged.

**+Next Virtual CC:** One click to auto-assign the next available Virtual CC address. The address is displayed inline (e.g. "VCC CH14 CC22"). See [Virtual CC Registry](/midi-mimic/virtual-addressing.md) for how virtual addresses work.

**+Next Virtual Note:** As above, for Notes.

**Custom MIDI:** Manually specify your output address. Opens the Custom MIDI popup where you can choose between Note and CC and your address,&#x20;

{% hint style="success" %}
*In future this will include fixed values for buttons which can be fun with Cycle Cues, why not scoll forwards through your 5 favourite layer blending modes in a button?*
{% endhint %}

#### Ghost

<div align="left"><figure><img src="/files/EesimZthouyhu4cedA12" alt="" width="243"><figcaption></figcaption></figure></div>

Activate an existing Ghost Parent - used to link through to other Macros more dynamically than the standard Parent/Child setup. Opens a popup to select from available Ghosts. See [Parents & Children](/midi-mimic/parents-and-children.md#ghost-parents) for Ghost Parent setup.\
\
Ghost outputs can also Gate their input if needed.

#### The <mark style="color:$success;">SEND</mark> Button

<div align="left"><figure><img src="/files/WFEH1dLMvi6m02oiiCJX" alt=""><figcaption></figcaption></figure></div>

When an action's output is set to anything but Ghost, a **SEND** button appears:

* In the Macro Editor (action panel)
* On the Macro tile in Session View

Click SEND to output value 127 on that address. This is especially useful if you need to map Child macros but the Parent is a momentary button, as interacting with the Parent will confuse your downstream software.

### Output Model

When a cue fires, its action **replaces** the original signal. The original signal only passes through when no other cue conditions are met. Because of this, it's possible to create Cue's that permanently block the original as their conditions are always met, you can add more Cues if needed.\
\
Note: Standard Parents have the shortcut to permanently Gate their output, as they do not have editable Cues and Actions.

{% hint style="warning" %}
*Example: you want your fader to send a different address when a parent is active, no need to create a Cue to cover the default behaviour, only the additional result. If your cues block the input at all times (for example within the full range incrementally across 3 cues) just add one more cue at it's default settings to simultaneously output the original data.*
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://midi-mimic.gitbook.io/midi-mimic/actions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
