Added average metering.

monitor
Elliott Liggett 2022-08-24 16:06:41 -07:00
rodzic fbf1c4bce9
commit 9623226b0c
4 zmienionych plików z 39 dodań i 1 usunięć

Wyświetl plik

@ -158,7 +158,7 @@ bool audioConverter::convert(audioPacket audio)
{
audio.amplitudePeak = samplesF.array().abs().maxCoeff();
audio.amplitudeRMS = samplesF.squaredNorm();
audio.amplitudeRMS = samplesF.array().abs().mean();
// Set the volume
samplesF *= audio.volume;

Wyświetl plik

@ -320,6 +320,22 @@ void meter::setLevel(int current)
this->update();
}
void meter::setLevels(int current, int peak)
{
this->current = current;
this->peak = peak;
avgLevels[(avgPosition++)%averageBalisticLength] = current;
int sum=0;
for(unsigned int i=0; i < (unsigned int)std::min(avgPosition, (int)avgLevels.size()); i++)
{
sum += avgLevels.at(i);
}
this->average = sum / std::min(avgPosition, (int)avgLevels.size());
this->update();
}
void meter::setLevels(int current, int peak, int average)
{
this->current = current;

Wyświetl plik

@ -24,6 +24,7 @@ public slots:
void updateDrawing(int num);
void setLevels(int current, int peak, int average);
void setLevels(int current, int peak); // calculate avg
void setLevel(int current);
void clearMeterOnPTTtoggle();
void clearMeter();

Wyświetl plik

@ -623,6 +623,26 @@ void wfmain::receiveStatusUpdate(networkStatus status)
void wfmain::receiveNetworkAudioLevels(networkAudioLevels l)
{
meterKind m2mtr = ui->meter2Widget->getMeterType();
if(m2mtr == meterAudio)
{
if(amTransmitting)
{
if(l.haveTxLevels)
ui->meter2Widget->setLevels(l.txAudioRMS, l.txAudioPeak);
} else {
if(l.haveRxLevels)
ui->meter2Widget->setLevels(l.rxAudioRMS, l.rxAudioPeak);
}
} else if (m2mtr == meterTxMod) {
if(l.haveTxLevels)
ui->meter2Widget->setLevels(l.txAudioRMS, l.txAudioPeak);
} else if (m2mtr == meterRxAudio) {
if(l.haveRxLevels)
ui->meter2Widget->setLevels(l.rxAudioRMS, l.rxAudioPeak);
}
/*
meterKind m = meterNone;
if(l.haveRxLevels)
{
@ -634,6 +654,7 @@ void wfmain::receiveNetworkAudioLevels(networkAudioLevels l)
m = meterTxMod;
receiveMeter(m, l.txAudioRMS);
}
*/
}
void wfmain::setupPlots()