fix: NoOpEngine engine_id → 'thru' to match sound_analysis_midi schema

Stream 3's NoOpEngine used engine_id()=='noop' but the schema for
sound_analysis_midi.json declares engine_id: 'thru' (matches firmware's
ThruAudioApp naming). The class name stays NoOpEngine — it accurately
describes what process() does — but the schema-facing identifier is now
'thru'. BreakOr/Elysiamorf compose NoOpEngine by type, not engine_id, so
they're unaffected.
This commit is contained in:
w1n5t0n 2026-04-29 16:12:12 +03:00
parent 8d0d47b992
commit 5cd5041b6a

View file

@ -2,10 +2,12 @@
// implementations.
//
// Includes:
// - NoOpEngine: a silent passthrough used by sequencer-only modes
// (BreakOr, Elysiamorf). Their actual behaviour (MIDI/I2C event emission)
// lives in the engine wrapper outside the audio path; `process()` returns
// zeros so the audio driver has something to consume.
// - NoOpEngine: silent passthrough. Two uses:
// (1) the standalone "thru" engine for the SoundAnalysisMIDI mode (audio
// is analysed but not synthesised), exposed via engine_id()=="thru";
// (2) composed inside sequencer-only engines (BreakOr, Elysiamorf) whose
// MIDI/I2C event emission lives outside the audio path. Internal
// composition uses the type directly, not the engine_id lookup.
// - Helper macros / static_asserts to verify each concrete engine satisfies
// `nisps::AudioEngine` at compile time.
@ -24,7 +26,7 @@ namespace nisps {
class NoOpEngine {
public:
static constexpr std::size_t param_count() noexcept { return 0u; }
static constexpr std::string_view engine_id() noexcept { return "noop"; }
static constexpr std::string_view engine_id() noexcept { return "thru"; }
void setup(float /*sample_rate*/) noexcept {}
void set_params(std::span<const float> /*params*/) noexcept {}