diff --git a/engine/MUNGA/AUDWTHR.h b/engine/MUNGA/AUDWTHR.h index abb6b49..bf7c63f 100644 --- a/engine/MUNGA/AUDWTHR.h +++ b/engine/MUNGA/AUDWTHR.h @@ -307,7 +307,7 @@ template triggerOn = False; if (getenv("BT_ATTRBIND_LOG")) { static int s_tc=0; if (s_tc++<80) - DEBUG_STREAM << "[trigcfg] attrPtr=" << (void*)attributePointer + DEBUG_STREAM << "[trigcfg] attrPtr=" << (void*)attributePointer << " comp=" << (void*)audioComponentSocket.GetCurrent() << " thresh=" << attributeValueThreshold << " inverse=" << (int)inverseTrigger << " onID=" << (int)controlIDOn << "/" << controlValueOn diff --git a/engine/MUNGA/WATCHER.cpp b/engine/MUNGA/WATCHER.cpp index 7acb2c0..fd0227d 100644 --- a/engine/MUNGA/WATCHER.cpp +++ b/engine/MUNGA/WATCHER.cpp @@ -118,10 +118,22 @@ AttributeWatcher::AttributeWatcher( if (attributePointer == NULL) { static char s_missingAttrPad[64] = {0}; + // TYPED pad: ConfigureActivePress is the held-configure-button INDEX whose + // authored idle is -1 (none) -- NINE audio triggers gate the configure-mode + // ticker on it with threshold -1 across the configurable subsystems. The + // zero pad read as "button 0 held" and started the ticker at load (the + // eternal 2.7/s chirp). Redirect this attribute to a -1 pad; others keep 0. + static int s_configureIdlePad = -1; + CString configure_name("ConfigureActivePress"); + if (attribute_name == configure_name) + attributePointer = &s_configureIdlePad; + else + attributePointer = s_missingAttrPad; if (getenv("BT_AUDIO_LOG")) DEBUG_STREAM << "[attrnull] " << subsystem_name << "." << attribute_name - << " not reconstructed -> inert pad\n" << std::flush; - attributePointer = s_missingAttrPad; + << " not reconstructed -> " + << (attributePointer == (void*)&s_configureIdlePad ? "-1 pad" : "inert pad") + << "\n" << std::flush; } Check_Pointer(attributePointer);