nx_transducer_characterizer.nx
buildroot/runtime/nx_transducer_characterizer.nx
about
nx_transducer_characterizer.nx -- meta-level instrument characterization.
module: nishi-core.perception.transducer_characterizer
depends: nishi-core.perception.profile + nishi-core.io.syscalls
disk_kb: 6
capability: PERCEPTION
wired_status: PARTIAL_WIRED
MISSING_CAPABILITIES:
- STIMULUS_GENERATION (log-swept-sine, MLS, calibrated reference;
queued, depends on nx_synthesis_engine landing)
- FFT_RESPONSE_COMPUTE (FFT + cross-spectrum / auto-spectrum for
time-domain transducers; queued, depends on nx_fft landing)
- SPATIAL_RESPONSE_COMPUTE (gamma curves, gamut measurement,
spatial-frequency response for visual transducers)
- CALIBRATION_REFERENCE_APPLY (load stored reference-transducer
calibration and apply offset before response computation)
- PROVENANCE_STORE_WRITE (persist measured curve to provenance
curve store)
license_tier: PUBLIC_NISHI_SUBSTRATE
genealogy_id: feedback-substrate-primitives-meta-not-one-off_2026 +
feedback-substrate-does-heavy-lifting-user-is-partner-not-gate_2026 +
feedback-multi-species-perceptual-substrate-not-anthropocentric_2026 +
farina_2000_swept_sine_room_acoustics_aes +
schroeder_1979_mls_measurement +
poynton_2003_digital_video_image_systems +
feedback-end-to-end-bit-traceability-architecture
Per cardinals [[feedback-substrate-primitives-meta-not-one-off]] and
[[feedback-substrate-does-heavy-lifting-user-is-partner-not-gate]]:
THIS primitive characterizes ANY transducer chain — audio output (DAC +
amp + speaker), audio input (mic + preamp + ADC), haptic motor, camera
sensor, accelerometer, display, thermocouple, gas/scent sensor, hydrophone,
even composite multi-stage chains. Originally scoped to a "rig" during
dog perceptual test bring-up, then promoted to meta-level when the user
surfaced reuse across products.
Reuse set served by this single primitive:
- Dog perceptual test rig (first use, audio output FRF)
dependencies 2 imports · 8 importers
imports: nx_syscalls.nxnx_perceptual_profile.nx
imported by: nx_assembly_guide.nxnx_calibration_drift_monitor.nxnx_chemical_dispenser.nxnx_haptic_render.nxnx_instrument_diagnostician.nxnx_realism_score.nxnx_signal_compensator.nxnx_synthesis_engine.nx
structs
| none |
consts
| 64 | const NX_TXR_KIND_AUDIO_OUTPUT: i64 = 1 // DAC + amp + speaker chain |
| 65 | const NX_TXR_KIND_AUDIO_INPUT: i64 = 2 // mic + preamp + ADC chain |
| 66 | const NX_TXR_KIND_VIBRATION_OUTPUT: i64 = 3 // haptic motor, LRA, ERM |
| 67 | const NX_TXR_KIND_VIBRATION_INPUT: i64 = 4 // accelerometer, geophone |
| 68 | const NX_TXR_KIND_VISUAL_OUTPUT: i64 = 5 // display, LED matrix, projector |
| 69 | const NX_TXR_KIND_VISUAL_INPUT: i64 = 6 // camera sensor, photodiode array |
| 70 | const NX_TXR_KIND_THERMAL_OUTPUT: i64 = 7 // Peltier, resistive heater |
| 71 | const NX_TXR_KIND_THERMAL_INPUT: i64 = 8 // thermocouple, IR sensor, RTD |
| 72 | const NX_TXR_KIND_PRESSURE_INPUT: i64 = 9 // pressure sensor, hydrophone |
| 73 | const NX_TXR_KIND_CHEMICAL_INPUT: i64 = 10 // gas / scent / volatile sensor |
| 74 | const NX_TXR_KIND_CHEMICAL_OUTPUT: i64 = 11 // scent cartridge dispense |
| 75 | const NX_TXR_KIND_ELECTRICAL_LOOPBACK: i64 = 12 // pure electrical, no air gap |
| 76 | const NX_TXR_KIND_ROOM_ACOUSTIC: i64 = 13 // room itself as transducer |
| 78 | const NX_TXR_KIND_COMPOSITE_CHAIN: i64 = 14 // multi-stage, user-defined |
| 103 | const NX_TXR_STIM_LOG_SWEPT_SINE: i64 = 1 // audio + vibration default |
| 104 | const NX_TXR_STIM_LIN_SWEPT_SINE: i64 = 2 |
| 105 | const NX_TXR_STIM_MLS: i64 = 3 // Schroeder 1979 |
| 106 | const NX_TXR_STIM_PINK_NOISE: i64 = 4 |
| 107 | const NX_TXR_STIM_WHITE_NOISE: i64 = 5 |
| 108 | const NX_TXR_STIM_TONE_BURST: i64 = 6 |
| 109 | const NX_TXR_STIM_KNOWN_REFERENCE: i64 = 7 // bit-identical reference signal |
| 110 | const NX_TXR_STIM_TEST_PATTERN: i64 = 8 // visual transducer: gradient, |
| 112 | const NX_TXR_STIM_STEP_RESPONSE: i64 = 9 // thermal default |
| 113 | const NX_TXR_STIM_GAS_BOLUS: i64 = 10 // chemical: known |
| 115 | const NX_TXR_STIM_PRESSURE_RAMP: i64 = 11 // pressure transducer |
| 134 | const NX_TXR_VERDICT_PASS: i64 = 0 |
| 135 | const NX_TXR_VERDICT_MARGINAL: i64 = 1 // measurable but compensable |
| 136 | const NX_TXR_VERDICT_FAIL_REPAIRABLE: i64 = 2 // diagnostic emitted a fix |
| 137 | const NX_TXR_VERDICT_FAIL_UNRECOVERABLE: i64 = 3 // transducer physically broken |
| 138 | const NX_TXR_VERDICT_REFERENCE_MISSING: i64 = 4 // no calibrated reference loaded |
| 139 | const NX_TXR_VERDICT_DEPENDENCY_MISSING: i64 = 5 // PARTIAL_WIRED default |
functions
| 80 | func nx_txr_kind_name(k: i64) -> *u8 |
| 117 | func nx_txr_stim_name(s: i64) -> *u8 |
| 141 | func nx_txr_verdict_name(v: i64) -> *u8 |
| 158 | func nx_transducer_characterize(name_ptr: *u8, name_len: i64, |
| 177 | func nx_transducer_apply_reference_calibration(ref_name_ptr: *u8, |
| 187 | func nx_transducer_get_last_verdict(name_ptr: *u8, name_len: i64) -> i64 |
| 196 | func nx_transducer_default_stimulus_for_kind(kind: i64) -> i64 |