91 {
93
96
99 }
100
102
103 #ifdef KNOCK_SPECTROGRAM
105
106
107
108
109
110
111
112
113
115
116 int freqStartConst = START_SPECTRORGAM_FREQUENCY;
117 int minFreqDiff = freqStartConst;
118 int freqStart = 0;
119 float freqStep = 0;
120
121 for (size_t i = 0; i < FFT_SIZE/2; i++)
122 {
123 float freq =
float(i * KNOCK_SAMPLE_RATE) / FFT_SIZE;
124 int min = abs(freq - freqStartConst);
125
126
128 freqStep = abs(freq - freqStart);
129 }
130
131 if(min < minFreqDiff) {
132 minFreqDiff = min;
134 freqStart = freq;
135 }
136 }
137
140 }
141 #endif
142
143
144 efiSetPadMode(
"knock ch1", KNOCK_PIN_CH1, PAL_MODE_INPUT_ANALOG);
145#if KNOCK_HAS_CH2
146 efiSetPadMode(
"knock ch2", KNOCK_PIN_CH2, PAL_MODE_INPUT_ANALOG);
147#endif
149 }
150}
void efiSetPadMode(const char *msg, brain_pin_e brainPin, iomode_t mode)
void configureBandpass(float samplingFrequency, float centerFrequency, float Q)
constexpr auto & module()
static EngineAccessor engine
static constexpr engine_configuration_s * engineConfiguration
void blackmanharris(float *w, unsigned n, bool sflag)
m_knockFrequencyStep("Knock: Step Freq", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1096, 1.0, 0.0, 0.0, "Hz")
m_knockFrequencyStart("Knock: Start Freq", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 1094, 1.0, 0.0, 0.0, "Hz")
static SpectrogramData * spectrogramData
static size_t spectrogramStartIndex
static Biquad knockFilter
bool enableKnockSpectrogram
bool knockDetectionUseDoubleFrequency