MCPcopy Create free account
hub / github.com/aethersdr/AetherSDR / setValueDb

Method setValueDb

src/gui/ClientCompMeter.cpp:124–150  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

122}
123
124void ClientCompMeter::setValueDb(float db)
125{
126 // Peak-hold tracks the loudest recent reading (or largest GR) and
127 // decays after a 700 ms hold. Jumps instantly to any new extreme
128 // so transients don't get hidden. Bar fill is smoothed separately
129 // via MeterSmoother.
130 if (m_mode == Mode::Level) {
131 m_currentDb = db;
132 if (db > m_peakDb) {
133 m_peakDb = db;
134 m_peakHoldTimer.restart();
135 } else if (m_peakHoldTimer.elapsed() > kPeakHoldMs) {
136 m_peakDb -= kPeakDecayDbPer100Ms / 10.0f;
137 m_peakDb = std::max(m_peakDb, m_currentDb);
138 }
139 } else {
140 m_currentDb = db;
141 if (db < m_peakDb) {
142 m_peakDb = db;
143 m_peakHoldTimer.restart();
144 } else if (m_peakHoldTimer.elapsed() > kPeakHoldMs) {
145 m_peakDb += kPeakDecayDbPer100Ms / 10.0f;
146 m_peakDb = std::min(m_peakDb, m_currentDb);
147 }
148 }
149 recomputeTarget();
150}
151
152void ClientCompMeter::paintEvent(QPaintEvent*)
153{

Callers 2

tickMetersMethod · 0.80
tickMetersMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected