MIDI Routing Reference
Note ownership
Section titled “Note ownership”Each generated attack owns a corresponding release. Overlapping attacks at the same pitch are counted separately so one owner cannot silence another owner early.
A panic or all-notes-off operation is recovery, not normal phrase timing. Normal performance should end through matching note-offs.
Channels and ports
Section titled “Channels and ports”A surface may expose input channel filtering, output ports, and per-voice destinations. Capability-gated controls are hidden when the adapter cannot honor them. Do not infer per-voice routing from a control that is absent on the browser surface.
Avoid duplicate paths
Section titled “Avoid duplicate paths”If both the DAW and Contrapunk send the original controller directly to the same instrument, you may hear doubled attacks. Disable one direct-monitor path or intentionally separate the dry and harmonized layers.
Virtual ports
Section titled “Virtual ports”On macOS, Contrapunk Guitar MIDI Out is the CoreMIDI source created by the Guitar Audio FX component. Route it to an instrument, never back to itself.
Windows: loopMIDI
Section titled “Windows: loopMIDI”- Install loopMIDI and create a port such as
Contrapunk Out. - Select that port as the Contrapunk desktop app’s MIDI output.
- Enable the same port as an input in FL Studio or another DAW, then monitor the destination instrument track.
Do not route the port back into Contrapunk; that creates a MIDI feedback loop.
Transport
Section titled “Transport”Host transport wins when available. Standalone and web surfaces use their own transport. Species II–IV, canons, delayed entries, and patterns depend on a stable beat phase.
Message scope
Section titled “Message scope”Contrapunk’s primary contract is owned note events and the musical state required by its engine. Do not assume every arbitrary CC, pitch-bend, or channel-pressure message is passed unchanged on every adapter unless the active surface documents that support.
Debugging with a monitor
Section titled “Debugging with a monitor”Capture input and output separately. For each played note, verify:
- Input note-on
- Generated note-on events
- Input note-off
- Matching generated note-off events
Then inspect sustain CC and the destination instrument if sound remains.