MIDI

Praxis supports both sending and receiving MIDI. You can use it to control the app from a pedalboard, send song-based cues to other gear, and drive Helix Simple Pitch automatically.

Three MIDI Jobs

Most MIDI workflows in Praxis fall into one of these buckets:

  • Control Praxis from a pedal or controller.
  • Have Praxis send MIDI to other gear on song load, play, or stop.
  • Embed song-specific MIDI cues directly in lyrics tabs.

MIDI Receive

In Settings > MIDI > Receive MIDI, Praxis listens for Control Change messages only.

  • Note On/Off, Program Change, and Pitch Bend are ignored in the receive-mapping section.
  • You can choose a listen channel from Off or 1 through 16.
  • If your controller sends on a different channel, the mapping will not fire.

Receive Actions

Each action can be assigned one CC number or disabled.

  • Previous Track
  • Skip Backwards
  • Play / Pause
  • Skip Forward
  • Next Track
  • Increase Font Size
  • Decrease Font Size
  • Toggle Repeat
  • Volume Up
  • Set Volume
  • Reset Volume
  • Volume Down
  • Increase Tempo
  • Reset Tempo
  • Decrease Tempo
  • Increase Gain
  • Reset Gain
  • Decrease Gain

Praxis also supports learn mode so you can capture the CC message from your controller instead of typing numbers by hand.

Trigger Modes

Each receive mapping can trigger in one of two ways:

  • Any: triggers on any received CC value.
  • Value > 0: triggers only when the CC value is greater than zero.

Use Value > 0 if your footswitch sends a press value and a release value.

MIDI Send

Praxis can send MIDI to all available output ports.

Default Send Channel

Use the Default Send Channel in Settings > MIDI when you want a global fallback channel for send operations.

When a MIDI command does not name a channel, Praxis sends it on the Default Send Channel.

Use an explicit channel suffix when you want to target a specific channel for a single message, for example:

  • PC10@2 sends Program Change 10 on channel 2
  • CC69.0@16 sends Control Change 69 with value 0 on channel 16

The @ suffix always overrides the default channel for that message.

Default Song MIDI

Default Song MIDI lets you define messages for:

  • Load
  • Play
  • Stop

Each entry can be Program Change or Control Change with its own channel, number, and value.

Embedded MIDI In Lyrics

Embedded MIDI lives inside a lyrics tab and can fire on load, play, stop, or a specific timestamp.

Use [midi:send-default] only when the tab also contains embedded MIDI. That tag tells Praxis to send Default Song MIDI first and then the tab’s embedded MIDI.

If a tab has no embedded MIDI, Default Song MIDI is sent on its own.

Examples:

  • [midi:PC10,CC69.0]
  • [midi:send-default]
  • [midi@play:CC20.127]
  • [midi@stop:CC20.0]
  • [midi@1:23.45:CC69.0]

If a message does not include a channel suffix, Praxis uses the Default Send Channel. If you want a specific channel for one embedded MIDI message, add @channel to that message.

Helix Simple Pitch

Helix Simple Pitch is documented on its own page, but MIDI settings live here.

  • Enable or disable Helix Simple Pitch here.
  • Choose a send channel or use Default.
  • Set the Bypass, Interval, and Cents CC assignments.
  • Store the song’s tuned value in semitones.

Test MIDI

Use Test MIDI to send a single PC or CC message to available outputs. It is the fastest way to confirm port visibility before a rehearsal.

Recommended Setup Order

  1. Confirm Praxis can see your device ports.
  2. Set up receive mappings if you want hardware control.
  3. Configure Default Song MIDI if you want Praxis to drive other gear.
  4. Add embedded MIDI only after the basics are working.
  5. Set up Helix Simple Pitch if you need automatic per-song retuning.

Troubleshooting

  • Verify the listen channel matches your controller.
  • Verify the mapping is not disabled.
  • Use Learn to confirm Praxis sees the CC you expect.
  • Use Test MIDI to confirm output works.
  • Check the active lyrics tab if embedded MIDI is expected.

See Also