kopia lustrzana https://gitlab.com/eliggett/wfview
Added tic marks, removed audio RMS calculation for now at least.
rodzic
9623226b0c
commit
0f226fdca5
|
@ -158,7 +158,12 @@ bool audioConverter::convert(audioPacket audio)
|
||||||
|
|
||||||
{
|
{
|
||||||
audio.amplitudePeak = samplesF.array().abs().maxCoeff();
|
audio.amplitudePeak = samplesF.array().abs().maxCoeff();
|
||||||
audio.amplitudeRMS = samplesF.array().abs().mean();
|
//audio.amplitudeRMS = samplesF.array().abs().mean(); // zero for tx audio
|
||||||
|
//audio.amplitudeRMS = samplesF.norm() / sqrt(samplesF.size()); // too high values. Zero for tx audio.
|
||||||
|
//audio.amplitudeRMS = samplesF.squaredNorm(); // tx not zero. Values higher than peak sometimes
|
||||||
|
//audio.amplitudeRMS = samplesF.norm(); // too small values. also too small on TX
|
||||||
|
//audio.amplitudeRMS = samplesF.blueNorm(); // scale same as norm, too small.
|
||||||
|
|
||||||
|
|
||||||
// Set the volume
|
// Set the volume
|
||||||
samplesF *= audio.volume;
|
samplesF *= audio.volume;
|
||||||
|
|
17
meter.cpp
17
meter.cpp
|
@ -378,12 +378,25 @@ void meter::drawScale_dBFs(QPainter *qp)
|
||||||
//qp->setFont(QFont("Arial", fontSize));
|
//qp->setFont(QFont("Arial", fontSize));
|
||||||
peakRedLevel = 193;
|
peakRedLevel = 193;
|
||||||
|
|
||||||
qp->drawText(20+mXstart,scaleTextYstart, QString("-15"));
|
qp->drawText(20+mXstart-5,scaleTextYstart, QString("-15"));
|
||||||
qp->drawText(38+mXstart,scaleTextYstart, QString("-12"));
|
qp->drawText(38+mXstart,scaleTextYstart, QString("-12"));
|
||||||
qp->drawText(71+mXstart,scaleTextYstart, QString("-9"));
|
qp->drawText(71+mXstart,scaleTextYstart, QString("-9"));
|
||||||
qp->drawText(124+mXstart,scaleTextYstart, QString("-6"));
|
qp->drawText(124+mXstart,scaleTextYstart, QString("-6"));
|
||||||
qp->drawText(193+mXstart,scaleTextYstart, QString("-3"));
|
qp->drawText(193+mXstart,scaleTextYstart, QString("-3"));
|
||||||
qp->drawText(255+mXstart,scaleTextYstart, QString("0dB"));
|
qp->drawText(255+mXstart,scaleTextYstart, QString("0"));
|
||||||
|
|
||||||
|
// Low ticks:
|
||||||
|
qp->setPen(lowLineColor);
|
||||||
|
qp->drawLine(20+mXstart,scaleTextYstart, 20+mXstart, scaleTextYstart+5);
|
||||||
|
qp->drawLine(38+mXstart,scaleTextYstart, 38+mXstart, scaleTextYstart+5);
|
||||||
|
qp->drawLine(71+mXstart,scaleTextYstart, 71+mXstart, scaleTextYstart+5);
|
||||||
|
qp->drawLine(124+mXstart,scaleTextYstart, 124+mXstart, scaleTextYstart+5);
|
||||||
|
|
||||||
|
|
||||||
|
// High ticks:
|
||||||
|
qp->setPen(highLineColor);
|
||||||
|
qp->drawLine(193+mXstart,scaleTextYstart, 193+mXstart, scaleTextYstart+5);
|
||||||
|
qp->drawLine(255+mXstart,scaleTextYstart, 255+mXstart, scaleTextYstart+5);
|
||||||
|
|
||||||
// Now the lines:
|
// Now the lines:
|
||||||
qp->setPen(lowLineColor);
|
qp->setPen(lowLineColor);
|
||||||
|
|
|
@ -152,7 +152,7 @@ void udpHandler::getRxLevels(quint16 amplitudePeak, quint16 amplitudeRMS,quint16
|
||||||
audioLevelsRxPeak[(audioLevelsRxPosition)%audioLevelBufferSize] = amplitudePeak;
|
audioLevelsRxPeak[(audioLevelsRxPosition)%audioLevelBufferSize] = amplitudePeak;
|
||||||
audioLevelsRxRMS[(audioLevelsRxPosition)%audioLevelBufferSize] = amplitudeRMS;
|
audioLevelsRxRMS[(audioLevelsRxPosition)%audioLevelBufferSize] = amplitudeRMS;
|
||||||
|
|
||||||
if((audioLevelsRxPosition)%3 == 0)
|
if((audioLevelsRxPosition)%4 == 0)
|
||||||
{
|
{
|
||||||
// calculate mean and emit signal
|
// calculate mean and emit signal
|
||||||
unsigned char meanPeak = findMax(audioLevelsRxPeak);
|
unsigned char meanPeak = findMax(audioLevelsRxPeak);
|
||||||
|
@ -175,7 +175,7 @@ void udpHandler::getTxLevels(quint16 amplitudePeak, quint16 amplitudeRMS ,quint1
|
||||||
audioLevelsTxPeak[(audioLevelsTxPosition)%audioLevelBufferSize] = amplitudePeak;
|
audioLevelsTxPeak[(audioLevelsTxPosition)%audioLevelBufferSize] = amplitudePeak;
|
||||||
audioLevelsTxRMS[(audioLevelsTxPosition)%audioLevelBufferSize] = amplitudeRMS;
|
audioLevelsTxRMS[(audioLevelsTxPosition)%audioLevelBufferSize] = amplitudeRMS;
|
||||||
|
|
||||||
if((audioLevelsTxPosition)%3 == 0)
|
if((audioLevelsTxPosition)%4 == 0)
|
||||||
{
|
{
|
||||||
// calculate mean and emit signal
|
// calculate mean and emit signal
|
||||||
unsigned char meanPeak = findMax(audioLevelsTxPeak);
|
unsigned char meanPeak = findMax(audioLevelsTxPeak);
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#include "udpcivdata.h"
|
#include "udpcivdata.h"
|
||||||
#include "udpaudio.h"
|
#include "udpaudio.h"
|
||||||
|
|
||||||
#define audioLevelBufferSize (3)
|
#define audioLevelBufferSize (4)
|
||||||
|
|
||||||
// Class to handle the connection/disconnection of the radio.
|
// Class to handle the connection/disconnection of the radio.
|
||||||
class udpHandler: public udpBase
|
class udpHandler: public udpBase
|
||||||
|
|
11
wfmain.cpp
11
wfmain.cpp
|
@ -623,7 +623,9 @@ void wfmain::receiveStatusUpdate(networkStatus status)
|
||||||
|
|
||||||
void wfmain::receiveNetworkAudioLevels(networkAudioLevels l)
|
void wfmain::receiveNetworkAudioLevels(networkAudioLevels l)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
meterKind m2mtr = ui->meter2Widget->getMeterType();
|
meterKind m2mtr = ui->meter2Widget->getMeterType();
|
||||||
|
|
||||||
if(m2mtr == meterAudio)
|
if(m2mtr == meterAudio)
|
||||||
{
|
{
|
||||||
if(amTransmitting)
|
if(amTransmitting)
|
||||||
|
@ -641,20 +643,21 @@ void wfmain::receiveNetworkAudioLevels(networkAudioLevels l)
|
||||||
if(l.haveRxLevels)
|
if(l.haveRxLevels)
|
||||||
ui->meter2Widget->setLevels(l.rxAudioRMS, l.rxAudioPeak);
|
ui->meter2Widget->setLevels(l.rxAudioRMS, l.rxAudioPeak);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
meterKind m = meterNone;
|
meterKind m = meterNone;
|
||||||
if(l.haveRxLevels)
|
if(l.haveRxLevels)
|
||||||
{
|
{
|
||||||
m = meterRxAudio;
|
m = meterRxAudio;
|
||||||
receiveMeter(m, l.rxAudioRMS);
|
receiveMeter(m, l.rxAudioPeak);
|
||||||
}
|
}
|
||||||
if(l.haveTxLevels)
|
if(l.haveTxLevels)
|
||||||
{
|
{
|
||||||
m = meterTxMod;
|
m = meterTxMod;
|
||||||
receiveMeter(m, l.txAudioRMS);
|
receiveMeter(m, l.txAudioPeak);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wfmain::setupPlots()
|
void wfmain::setupPlots()
|
||||||
|
|
Ładowanie…
Reference in New Issue