MIDI
Configure incoming control, outgoing cues, timed events, defaults, and MIDI troubleshooting.
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@2sends Program Change 10 on channel 2CC69.0@16sends 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.
Load messages fire when a song becomes the selected Player song. Play messages fire when playback actually begins, and Stop messages fire when playback stops. Praxis completes the selected song's load sequence before its Play sequence, including when you select a song and start immediately. Transient output failures are retried so a momentarily unavailable destination does not silently drop the sequence.
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.
MIDI In PDF Scores
PDF score tabs store the same load, play, stop, and timed MIDI behavior as structured data attached to the PDF tab. In the Player, turn on PDF editing and choose MIDI in the sidebar. You can:
- Add Program Change and Control Change messages for On Load, On Play, or On Stop. New messages start as Program Change and can be changed to Control Change.
- Choose Send Defaults to send matching Default Song MIDI followed by custom messages, or Custom Only to send only custom messages.
- Choose Default or channels 1–16, and choose parameter and value numbers from 0–127.
- Choose Add Timed MIDI to create an event at the current playback position, then use Add Message inside that event for additional messages at the same timestamp.
- Test an individual group—including defaults when selected—or use Apply to send the current load behavior immediately.
- Open Import from: to import all MIDI from one of the song's text lyrics tabs. Existing PDF MIDI is replaced only after confirmation.
PDF MIDI timing is independent from PDF scroll timestamps. Editing or remastering a PDF does not change its MIDI plan, and .prax exports include the plan. Export Lyrics as PDF... embeds both the PDF tab's MIDI plan and scroll timestamps in the exported document; importing that PDF into Praxis restores them automatically.
Event Order On Song Selection
For the selected tab, Praxis sends load-time automation in this order:
- The active tab's embedded or PDF Load messages, when they replace the default.
- Default Song MIDI when the tab has no override.
- Default Song MIDI followed by tab Load messages when the tab requests both.
- Helix Simple Pitch last.
The next Play event waits for this load sequence. Rapid song changes cancel stale work so messages for an old selection do not arrive after the new song's messages.
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
tunedvalue 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
- Confirm Praxis can see your device ports.
- Set up receive mappings if you want hardware control.
- Configure Default Song MIDI if you want Praxis to drive other gear.
- Add embedded MIDI only after the basics are working.
- 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.
- For a PDF, open its MIDI editor and confirm the expected group is enabled.
- Remember that importing from lyrics creates a copy; import again after changing the source lyrics MIDI.