Read The Bleepin’ Manual

The Big Red Button™ (You're Welcome)

ZOMG!!1! A MIDI Trigger Walkthrough

A MIDI trigger connects an incoming MIDI message — from a foot controller, expression pedal, or control surface — to an action in OnSong, so your hardware can drive the app hands-free. (Translation: your feet do the work, your hands stay in your pockets. You're welcome.) This screen sets up a single trigger. Your changes save as you make them, so just tap Done when you're finished & stop worryin' about it.

Which options appear depends on the kind of controller you're mappin', but every trigger starts with these two absolute game-changers:

The Incoming Bleep-Bloop (MIDI Event)

A MIDI Event is the incoming message that fires the trigger — a note, a control change (CC), & so on. Tap to choose the message & its channel; the row shows your choice, like "CC 4 on Channel 1." (Seriously, we had to explain this. You're welcome for that too.)

What OnSong Actually Does (Action)

The Action is what OnSong does when the trigger fires. Tap to pick from the action chooser; the row shows the assigned action, or "Unassigned" (AKA: you forgot to do this part, oops). For a variable control change like an expression pedal or knob that sends a smooth 0–127 sweep, you'll also see:

Response Curve (aka "How Your Pedal Talks to Our App")

The Response Curve shapes how the controller's travel maps to the action. Pick your poison:

  • Linear — the controller & the parameter move together, 1:1. Boring? Yes. Predictable? Also yes.
  • Logarithmic — most of the travel works at the quiet end; great for a natural volume feel. Your ears will thank you, probably.
  • Exponential — most of the travel is subtle, & the top of the range pushes hard. For when you wanna feel dramatic.
  • S-Curve — stable at the extremes & fast through the middle; good for crossfades. It's literally shaped like an S. We're not playin' around here.

Minimum & Maximum Value (aka "The Sweet Spot Zone")

These clamp the input event's useful range within 0–127. Anything outside the range is ignored, so you can dial in exactly the sweep you want without all that extra nonsense. The minimum always stays below the maximum. (Math! We're doin' it!)

For a momentary control, like a button or switch sendin' a CC, you'll see these instead & everything changes:

Behavior (aka "How Your Button Feels")

Behavior decides how presses map to the action. Tap the row to cycle through & watch your brain break:

  • Momentary — active once a value greater than 0 is received. Press the button, stuff happens. Release it, stuff stops. Simple.
  • Latch — fires the action on both edges, but with no on/off value. Press fires it once, release fires it again, each just a plain action. Use it when your controller sends a separate press & release message & you want the action to respond to both like some kinda double-agent pedal.
  • Toggle — treats the action as an on/off state. Crossin' the threshold on the way up sends the "On" action while droppin' back below sends the "Off" action. Use this for anything with a held state like a mute, a hold, a light. Your stage is gonna look so pro.

Threshold (aka "How Hard Do You Gotta Press?")

This is the value at or above which the controller counts as on. Values below it are ignored. It defaults to 1 for Momentary & 64 for Toggle. (Yeah, we made those numbers up & they work. You're welcome.)

Inverted (aka "Oops, My Pedal's Backwards")

This setting reverses the input value direction. 0 becomes 127 & vice versa. Handy when a pedal is mounted or wired backwards. We all been there, no judgment.

Active (aka "Is This Thing On?")

This turns the trigger on or off. Switch it off to suspend the trigger without deletin' the binding, so you can bring it back later when you figure out what you're doin'. We believe in you. Maybe.

OnSong 2026 — Last Refreshed September 2, 2026