Skip to content

KSCR Daemon 1.9.1

Choose a tag to compare

@Enigmahack Enigmahack released this 09 Jul 22:42
· 40 commits to main since this release

Core Changes

Rename: midi_inject to midi_bridge.
Mechanism: Replaced the invasive inline trampoline hook with a non-invasive multi-queue reader.
Implementation: Claims spare slots in OA's transmit queues via atomic increments; drains them from its own cursors without patching .text.

Data Stream & Performance

Generic Tap: Produces one destination-agnostic stream (Shared performance + all per-port data).
Efficiency: Captures everything the Kronos transmits once; excludes q0 (active-sensing/realtime).
Best-Effort: Reader skips forward if lagging, ensuring a slow TCP client never throttles OA's hardware output.
Throughput: 64 KB drain ring served directly to userspace (no bounce buffer) for multi-MB dumps.

Technical Improvements

Reduced Overhead: Removes JMP patches, relocated trampolines, x86 length decoders, and producer-side spinlock hazards.
Context: Runs in midi_tcp process context on /proc/.midi_ring read (no timers or shared workqueues).
Robustness: Dynamic address resolution with safe fallback for uncatalogued builds; hardware-validated on Kronos 2.

Updates & Maintenance

SysEx Fix: kscr_client.recv_sysex now skips real-time bytes ($\ge$0xF8) to prevent clock/sensing interference during reassembly.
Documentation: Updated api.md (Section 8.2) to reflect the single generic feed and removed old de-duplication logic requirements.
Version Bump: Suite version 1.8.1 to 1.9.0/1.9.1; renamed throughout all build files, source, and docs.