Native transport conversion¶
NativeTransportV1 and include/RavetNativeTransport.h provide a separate fixed
96-byte block-start snapshot on the validated macOS arm64 ABI. Presence bits keep
playing/samples/beats/tempo/details/signature/increment/loops/bar independently
available. Boolean flags distinguish explicit false from unknown playing, and
absent details from known all-false details. Values retain exact i64 sample
positions/bounds, f64 beat/tempo/increment/bar values, i32 bar numbers and nonzero
u16 signatures. No fixed-point quantization, extrapolation or reset occurs.
from_transport/to_transport check finite beats/bar starts, finite positive
tempo, finite increments with known tempo, bar metadata with known beats, and
active strictly increasing loop bounds with their matching known timeline.
Time signatures need nonzero numerator/denominator without a power-of-two
restriction. An active loop can have unavailable bounds. Unknown bits, nonzero
unused/reserved fields and inconsistent dependencies reject rather than being
normalized. Used signed-zero bits survive; unused doubles must be positive zero.
Conversion allocates nothing and mutates no processor/state.
Consumers decode a supplied native record before passing its typed snapshot to the adapter; failed conversion leaves DSP uninvoked when the caller follows that sequence. Foreign rejection/silence and native host mapping remain caller work. The adapter's direct typed-transport API retains exact pass-through behavior. This in-process record is not a wire/preset representation or evidence of any additional SDK/DAW transport support. Tests cover all 32768 availability/flag combinations, extreme precision/ranges, invalid dependencies/canonical fields, C11/C++17 layouts and 10000 prepared f32/f64 processing cycles per precision. See decision 0144.