AUDIO
Source snapshot · 12 October 2026

Extended portable processing

Processor-to-controller note completion

EventData::NoteEnd { target } reports completion on the originating note input endpoint, independently of key release and choke. Optional channel/key/ID scope uses the usual checked portable ranges. Its carrier offset follows normal event buffer bounds/order but conveys delivery order rather than an exact voice termination time. Performance graph filters and complete worker queues retain it; receiver code owns identity reuse and lifetime tracking.

Exported MainBusBridge/MultiBusBridge::with_note_end_output_port(Some(index)) select an input endpoint below 256 independently of note output, MIDI/UMP and scoped parameter routes. Missing routes/native-too-wide IDs reject whole generated delivery before any host prefix while rendered audio/DSP remain progressed. Native note-end ignores timestamp/velocity, and the adapter retains the bounded carrier offset in its event header. Parameter flush rejects generated completions. Incoming native end notifications are filtered as unsupported processor input; general input count/order/offset validation still includes ignored events.

Hosted completion output uses a separate input-endpoint profile and canonical carrier ordering; see plug-in hosting. No exported voice allocator or public reference instrument behavior is inferred. Tests cover portable/graph/queue preservation, native f32/f64/main/multibus output, whole preflight, prefix refusal, flush and prepared heap policy. See decision 0140.