mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-25 09:18:54 -05:00
WDSP receiver: implemented RIT and fixed audio binaural
This commit is contained in:
parent
531e96de00
commit
fb08489f5a
@ -162,6 +162,7 @@ void WDSPRxGUI::on_audioBinaural_toggled(bool binaural)
|
|||||||
{
|
{
|
||||||
m_audioBinaural = binaural;
|
m_audioBinaural = binaural;
|
||||||
m_settings.m_audioBinaural = binaural;
|
m_settings.m_audioBinaural = binaural;
|
||||||
|
m_settings.m_profiles[m_settings.m_profileIndex].m_audioBinaural = m_settings.m_audioBinaural;
|
||||||
applySettings();
|
applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,6 +170,7 @@ void WDSPRxGUI::on_audioFlipChannels_toggled(bool flip)
|
|||||||
{
|
{
|
||||||
m_audioFlipChannels = flip;
|
m_audioFlipChannels = flip;
|
||||||
m_settings.m_audioFlipChannels = flip;
|
m_settings.m_audioFlipChannels = flip;
|
||||||
|
m_settings.m_profiles[m_settings.m_profileIndex].m_audioFlipChannels = m_settings.m_audioFlipChannels;
|
||||||
applySettings();
|
applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,6 +267,20 @@ void WDSPRxGUI::on_equalizer_toggled(bool checked)
|
|||||||
applySettings();
|
applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WDSPRxGUI::on_rit_toggled(bool checked)
|
||||||
|
{
|
||||||
|
m_settings.m_rit = checked;
|
||||||
|
m_settings.m_profiles[m_settings.m_profileIndex].m_rit = m_settings.m_rit;
|
||||||
|
applySettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
void WDSPRxGUI::on_ritFrequency_valueChanged(int value)
|
||||||
|
{
|
||||||
|
m_settings.m_ritFrequency = value;
|
||||||
|
ui->ritFrequencyText->setText(tr("%1").arg(value));
|
||||||
|
applySettings();
|
||||||
|
}
|
||||||
|
|
||||||
void WDSPRxGUI::on_audioMute_toggled(bool checked)
|
void WDSPRxGUI::on_audioMute_toggled(bool checked)
|
||||||
{
|
{
|
||||||
m_audioMute = checked;
|
m_audioMute = checked;
|
||||||
@ -312,6 +328,9 @@ void WDSPRxGUI::on_profileIndex_valueChanged(int value)
|
|||||||
ui->lowCut->setMaximum(480);
|
ui->lowCut->setMaximum(480);
|
||||||
ui->lowCut->setMinimum(-480);
|
ui->lowCut->setMinimum(-480);
|
||||||
m_settings.m_demod = m_settings.m_profiles[m_settings.m_profileIndex].m_demod;
|
m_settings.m_demod = m_settings.m_profiles[m_settings.m_profileIndex].m_demod;
|
||||||
|
m_settings.m_audioBinaural = m_settings.m_profiles[m_settings.m_profileIndex].m_audioBinaural;
|
||||||
|
m_settings.m_audioFlipChannels = m_settings.m_profiles[m_settings.m_profileIndex].m_audioFlipChannels;
|
||||||
|
m_settings.m_dsb = m_settings.m_profiles[m_settings.m_profileIndex].m_dsb;
|
||||||
// AGC setup
|
// AGC setup
|
||||||
m_settings.m_agc = m_settings.m_profiles[m_settings.m_profileIndex].m_agc;
|
m_settings.m_agc = m_settings.m_profiles[m_settings.m_profileIndex].m_agc;
|
||||||
m_settings.m_agcGain = m_settings.m_profiles[m_settings.m_profileIndex].m_agcGain;
|
m_settings.m_agcGain = m_settings.m_profiles[m_settings.m_profileIndex].m_agcGain;
|
||||||
@ -358,6 +377,9 @@ void WDSPRxGUI::on_profileIndex_valueChanged(int value)
|
|||||||
m_settings.m_equalizer = m_settings.m_profiles[m_settings.m_profileIndex].m_equalizer;
|
m_settings.m_equalizer = m_settings.m_profiles[m_settings.m_profileIndex].m_equalizer;
|
||||||
m_settings.m_eqF = m_settings.m_profiles[m_settings.m_profileIndex].m_eqF;
|
m_settings.m_eqF = m_settings.m_profiles[m_settings.m_profileIndex].m_eqF;
|
||||||
m_settings.m_eqG = m_settings.m_profiles[m_settings.m_profileIndex].m_eqG;
|
m_settings.m_eqG = m_settings.m_profiles[m_settings.m_profileIndex].m_eqG;
|
||||||
|
// RIT
|
||||||
|
m_settings.m_rit = m_settings.m_profiles[m_settings.m_profileIndex].m_rit;
|
||||||
|
m_settings.m_ritFrequency = m_settings.m_profiles[m_settings.m_profileIndex].m_ritFrequency;
|
||||||
displaySettings();
|
displaySettings();
|
||||||
applyBandwidths(m_settings.m_profiles[m_settings.m_profileIndex].m_spanLog2, true); // does applySettings(true)
|
applyBandwidths(m_settings.m_profiles[m_settings.m_profileIndex].m_spanLog2, true); // does applySettings(true)
|
||||||
}
|
}
|
||||||
@ -709,6 +731,7 @@ void WDSPRxGUI::applyBandwidths(unsigned int spanLog2, bool force)
|
|||||||
ui->channelPowerMeter->setRange(WDSPRxSettings::m_minPowerThresholdDB, 0);
|
ui->channelPowerMeter->setRange(WDSPRxSettings::m_minPowerThresholdDB, 0);
|
||||||
|
|
||||||
m_settings.m_dsb = dsb;
|
m_settings.m_dsb = dsb;
|
||||||
|
m_settings.m_profiles[m_settings.m_profileIndex].m_dsb = dsb;
|
||||||
m_settings.m_profiles[m_settings.m_profileIndex].m_spanLog2 = spanLog2;
|
m_settings.m_profiles[m_settings.m_profileIndex].m_spanLog2 = spanLog2;
|
||||||
m_settings.m_profiles[m_settings.m_profileIndex].m_highCutoff = bw * 100;
|
m_settings.m_profiles[m_settings.m_profileIndex].m_highCutoff = bw * 100;
|
||||||
m_settings.m_profiles[m_settings.m_profileIndex].m_lowCutoff = lw * 100;
|
m_settings.m_profiles[m_settings.m_profileIndex].m_lowCutoff = lw * 100;
|
||||||
@ -780,6 +803,9 @@ void WDSPRxGUI::displaySettings()
|
|||||||
ui->squelchThreshold->setValue(m_settings.m_squelchThreshold);
|
ui->squelchThreshold->setValue(m_settings.m_squelchThreshold);
|
||||||
ui->squelchThresholdText->setText(tr("%1").arg(m_settings.m_squelchThreshold));
|
ui->squelchThresholdText->setText(tr("%1").arg(m_settings.m_squelchThreshold));
|
||||||
ui->equalizer->setChecked(m_settings.m_equalizer);
|
ui->equalizer->setChecked(m_settings.m_equalizer);
|
||||||
|
ui->rit->setChecked(m_settings.m_rit);
|
||||||
|
ui->ritFrequency->setValue((int) m_settings.m_ritFrequency);
|
||||||
|
ui->ritFrequencyText->setText(tr("%1").arg((int) m_settings.m_ritFrequency));
|
||||||
ui->audioBinaural->setChecked(m_settings.m_audioBinaural);
|
ui->audioBinaural->setChecked(m_settings.m_audioBinaural);
|
||||||
ui->audioFlipChannels->setChecked(m_settings.m_audioFlipChannels);
|
ui->audioFlipChannels->setChecked(m_settings.m_audioFlipChannels);
|
||||||
ui->audioMute->setChecked(m_settings.m_audioMute);
|
ui->audioMute->setChecked(m_settings.m_audioMute);
|
||||||
@ -1326,6 +1352,8 @@ void WDSPRxGUI::makeUIConnections()
|
|||||||
QObject::connect(ui->squelch, &ButtonSwitch::toggled, this, &WDSPRxGUI::on_squelch_toggled);
|
QObject::connect(ui->squelch, &ButtonSwitch::toggled, this, &WDSPRxGUI::on_squelch_toggled);
|
||||||
QObject::connect(ui->squelchThreshold, &QDial::valueChanged, this, &WDSPRxGUI::on_squelchThreshold_valueChanged);
|
QObject::connect(ui->squelchThreshold, &QDial::valueChanged, this, &WDSPRxGUI::on_squelchThreshold_valueChanged);
|
||||||
QObject::connect(ui->equalizer, &ButtonSwitch::toggled, this, &WDSPRxGUI::on_equalizer_toggled);
|
QObject::connect(ui->equalizer, &ButtonSwitch::toggled, this, &WDSPRxGUI::on_equalizer_toggled);
|
||||||
|
QObject::connect(ui->rit, &ButtonSwitch::toggled, this, &WDSPRxGUI::on_rit_toggled);
|
||||||
|
QObject::connect(ui->ritFrequency, &QDial::valueChanged, this, &WDSPRxGUI::on_ritFrequency_valueChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WDSPRxGUI::updateAbsoluteCenterFrequency()
|
void WDSPRxGUI::updateAbsoluteCenterFrequency()
|
||||||
|
@ -147,6 +147,8 @@ private slots:
|
|||||||
void on_squelch_toggled(bool checked);
|
void on_squelch_toggled(bool checked);
|
||||||
void on_squelchThreshold_valueChanged(int value);
|
void on_squelchThreshold_valueChanged(int value);
|
||||||
void on_equalizer_toggled(bool checked);
|
void on_equalizer_toggled(bool checked);
|
||||||
|
void on_rit_toggled(bool checked);
|
||||||
|
void on_ritFrequency_valueChanged(int value);
|
||||||
void onWidgetRolled(QWidget* widget, bool rollDown);
|
void onWidgetRolled(QWidget* widget, bool rollDown);
|
||||||
void onMenuDialogCalled(const QPoint& p);
|
void onMenuDialogCalled(const QPoint& p);
|
||||||
void handleInputMessages();
|
void handleInputMessages();
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>514</width>
|
<width>542</width>
|
||||||
<height>179</height>
|
<height>179</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -18,7 +18,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>452</width>
|
<width>542</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
@ -36,13 +36,13 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>501</width>
|
<width>540</width>
|
||||||
<height>181</height>
|
<height>181</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>450</width>
|
<width>540</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
@ -277,6 +277,53 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDial" name="filterIndex">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Select profile in profile bank</string>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="pageStep">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="filterIndexText">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>10</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="acceptDrops">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Filter index in filter bank</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>0</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
@ -392,16 +439,10 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>70</width>
|
<width>50</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>60</width>
|
|
||||||
<height>16777215</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>FFT filter window function</string>
|
<string>FFT filter window function</string>
|
||||||
</property>
|
</property>
|
||||||
@ -421,7 +462,20 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDial" name="filterIndex">
|
<widget class="ButtonSwitch" name="rit">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Toggle RIT</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>RIT</string>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDial" name="ritFrequency">
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>24</width>
|
<width>24</width>
|
||||||
@ -429,13 +483,13 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Select profile in profile bank</string>
|
<string>RIT frequency (Hz)</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>0</number>
|
<number>-1000</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>9</number>
|
<number>1000</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="pageStep">
|
<property name="pageStep">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
@ -446,21 +500,18 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="filterIndexText">
|
<widget class="QLabel" name="ritFrequencyText">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>10</width>
|
<width>32</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="acceptDrops">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Filter index in filter bank</string>
|
<string>RIT frequency (Hz)</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>0</string>
|
<string>-0000</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
@ -486,7 +537,7 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Low cut</string>
|
<string>Near cut</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -568,7 +619,7 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Hi cut</string>
|
<string>Far cut</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -822,11 +873,17 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="volumeText">
|
<widget class="QLabel" name="volumeText">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Audio volume in dB</string>
|
<string>Audio volume in dB</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>10</string>
|
<string>-10</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
@ -94,6 +94,9 @@ void WDSPRxSettings::resetToDefaults()
|
|||||||
m_equalizer = false;
|
m_equalizer = false;
|
||||||
m_eqF = {0.0, 32.0, 63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0, 16000.0};
|
m_eqF = {0.0, 32.0, 63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0, 16000.0};
|
||||||
m_eqG = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
|
m_eqG = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
|
||||||
|
// RIT
|
||||||
|
m_rit = false;
|
||||||
|
m_ritFrequency = 0.0;
|
||||||
//
|
//
|
||||||
m_volume = 1.0;
|
m_volume = 1.0;
|
||||||
m_inputFrequencyOffset = 0;
|
m_inputFrequencyOffset = 0;
|
||||||
@ -212,10 +215,15 @@ QByteArray WDSPRxSettings::serialize() const
|
|||||||
s.writeBlob( 80, m_geometryBytes);
|
s.writeBlob( 80, m_geometryBytes);
|
||||||
s.writeBool( 81, m_hidden);
|
s.writeBool( 81, m_hidden);
|
||||||
s.writeU32( 82, m_profileIndex);
|
s.writeU32( 82, m_profileIndex);
|
||||||
|
s.writeBool( 83, m_rit);
|
||||||
|
s.writeDouble(84, m_ritFrequency);
|
||||||
|
|
||||||
for (unsigned int i = 0; i < 10; i++)
|
for (unsigned int i = 0; i < 10; i++)
|
||||||
{
|
{
|
||||||
s.writeS32 (104 + 100*i, (int) m_profiles[i].m_demod);
|
s.writeS32 (104 + 100*i, (int) m_profiles[i].m_demod);
|
||||||
|
s.writeBool (105 + 100*i, (int) m_profiles[i].m_audioBinaural);
|
||||||
|
s.writeBool (106 + 100*i, (int) m_profiles[i].m_audioFlipChannels);
|
||||||
|
s.writeBool (107 + 100*i, (int) m_profiles[i].m_dsb);
|
||||||
// Filter
|
// Filter
|
||||||
s.writeS32 (100 + 100*i, m_profiles[i].m_spanLog2);
|
s.writeS32 (100 + 100*i, m_profiles[i].m_spanLog2);
|
||||||
s.writeS32 (101 + 100*i, m_profiles[i].m_highCutoff / 100.0);
|
s.writeS32 (101 + 100*i, m_profiles[i].m_highCutoff / 100.0);
|
||||||
@ -409,6 +417,8 @@ bool WDSPRxSettings::deserialize(const QByteArray& data)
|
|||||||
d.readBool( 81, &m_hidden, false);
|
d.readBool( 81, &m_hidden, false);
|
||||||
d.readU32( 82, &utmp, 0);
|
d.readU32( 82, &utmp, 0);
|
||||||
m_profileIndex = utmp < 10 ? utmp : 0;
|
m_profileIndex = utmp < 10 ? utmp : 0;
|
||||||
|
d.readBool( 83, &m_rit, false);
|
||||||
|
d.readDouble( 84, &m_ritFrequency, 0);
|
||||||
|
|
||||||
d.readBool( 90, &m_equalizer, false);
|
d.readBool( 90, &m_equalizer, false);
|
||||||
d.readFloat(4000, &m_eqF[0], 0.0);
|
d.readFloat(4000, &m_eqF[0], 0.0);
|
||||||
@ -438,6 +448,9 @@ bool WDSPRxSettings::deserialize(const QByteArray& data)
|
|||||||
{
|
{
|
||||||
d.readS32 (104 + 100*i, &tmp, 9);
|
d.readS32 (104 + 100*i, &tmp, 9);
|
||||||
m_profiles[i].m_demod = (WDSPRxProfile::WDSPRxDemod) tmp;
|
m_profiles[i].m_demod = (WDSPRxProfile::WDSPRxDemod) tmp;
|
||||||
|
d.readBool( 105 + 100*i, &m_profiles[i].m_audioBinaural, false);
|
||||||
|
d.readBool( 106 + 100*i, &m_profiles[i].m_audioFlipChannels, false);
|
||||||
|
d.readBool( 107 + 100*i, &m_profiles[i].m_dsb, false);
|
||||||
// Filter
|
// Filter
|
||||||
d.readS32 (100 + 100*i, &m_profiles[i].m_spanLog2, 3);
|
d.readS32 (100 + 100*i, &m_profiles[i].m_spanLog2, 3);
|
||||||
d.readS32 (101 + 100*i, &tmp, 30);
|
d.readS32 (101 + 100*i, &tmp, 30);
|
||||||
@ -497,6 +510,9 @@ bool WDSPRxSettings::deserialize(const QByteArray& data)
|
|||||||
d.readDouble(163 + 100*i, &m_profiles[i].m_ssqlTauMute, 0.1);
|
d.readDouble(163 + 100*i, &m_profiles[i].m_ssqlTauMute, 0.1);
|
||||||
d.readDouble(164 + 100*i, &m_profiles[i].m_ssqlTauUnmute, 0.1);
|
d.readDouble(164 + 100*i, &m_profiles[i].m_ssqlTauUnmute, 0.1);
|
||||||
d.readDouble(165 + 100*i, &m_profiles[i].m_amsqMaxTail, 1.5);
|
d.readDouble(165 + 100*i, &m_profiles[i].m_amsqMaxTail, 1.5);
|
||||||
|
// RIT
|
||||||
|
d.readBool( 183 + 100*i, &m_profiles[i].m_rit, false);
|
||||||
|
d.readDouble(184 + 100*i, &m_profiles[i].m_ritFrequency, 0.0);
|
||||||
// Equalizer
|
// Equalizer
|
||||||
d.readBool( 190 + 100*i, &m_profiles[i].m_equalizer, false);
|
d.readBool( 190 + 100*i, &m_profiles[i].m_equalizer, false);
|
||||||
d.readFloat(4100 + 100*i, &m_profiles[i].m_eqF[0], 0.0);
|
d.readFloat(4100 + 100*i, &m_profiles[i].m_eqF[0], 0.0);
|
||||||
|
@ -86,6 +86,9 @@ struct WDSPRxProfile
|
|||||||
};
|
};
|
||||||
|
|
||||||
WDSPRxDemod m_demod;
|
WDSPRxDemod m_demod;
|
||||||
|
bool m_audioBinaural;
|
||||||
|
bool m_audioFlipChannels;
|
||||||
|
bool m_dsb;
|
||||||
// Filter
|
// Filter
|
||||||
int m_spanLog2;
|
int m_spanLog2;
|
||||||
Real m_highCutoff;
|
Real m_highCutoff;
|
||||||
@ -139,9 +142,15 @@ struct WDSPRxProfile
|
|||||||
bool m_equalizer;
|
bool m_equalizer;
|
||||||
std::array<float, 11> m_eqF; //!< Frequencies vector. Index 0 is always 0 as this is the preamp position
|
std::array<float, 11> m_eqF; //!< Frequencies vector. Index 0 is always 0 as this is the preamp position
|
||||||
std::array<float, 11> m_eqG; //!< Gains vector (dB). Index 0 is the preamp (common) gain
|
std::array<float, 11> m_eqG; //!< Gains vector (dB). Index 0 is the preamp (common) gain
|
||||||
|
// RIT
|
||||||
|
bool m_rit;
|
||||||
|
double m_ritFrequency;
|
||||||
|
|
||||||
WDSPRxProfile() :
|
WDSPRxProfile() :
|
||||||
m_demod(DemodSSB),
|
m_demod(DemodSSB),
|
||||||
|
m_audioBinaural(false),
|
||||||
|
m_audioFlipChannels(false),
|
||||||
|
m_dsb(false),
|
||||||
m_spanLog2(3),
|
m_spanLog2(3),
|
||||||
m_highCutoff(3000),
|
m_highCutoff(3000),
|
||||||
m_lowCutoff(300),
|
m_lowCutoff(300),
|
||||||
@ -187,7 +196,9 @@ struct WDSPRxProfile
|
|||||||
m_amsqMaxTail(1.5),
|
m_amsqMaxTail(1.5),
|
||||||
m_equalizer(false),
|
m_equalizer(false),
|
||||||
m_eqF{0.0, 32.0, 63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0, 16000.0},
|
m_eqF{0.0, 32.0, 63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0, 16000.0},
|
||||||
m_eqG{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
|
m_eqG{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
||||||
|
m_rit(false),
|
||||||
|
m_ritFrequency(0)
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -251,6 +262,9 @@ struct WDSPRxSettings
|
|||||||
bool m_equalizer;
|
bool m_equalizer;
|
||||||
std::array<float, 11> m_eqF = {0.0, 32.0, 63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0, 16000.0}; //!< Frequencies vector. Index 0 is always 0 as this is the preamp position
|
std::array<float, 11> m_eqF = {0.0, 32.0, 63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0, 16000.0}; //!< Frequencies vector. Index 0 is always 0 as this is the preamp position
|
||||||
std::array<float, 11> m_eqG = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; //!< Gains vector (dB). Index 0 is the preamp (common) gain
|
std::array<float, 11> m_eqG = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; //!< Gains vector (dB). Index 0 is the preamp (common) gain
|
||||||
|
// RIT
|
||||||
|
bool m_rit;
|
||||||
|
double m_ritFrequency;
|
||||||
|
|
||||||
quint32 m_rgbColor;
|
quint32 m_rgbColor;
|
||||||
QString m_title;
|
QString m_title;
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
#include "amsq.hpp"
|
#include "amsq.hpp"
|
||||||
#include "fmsq.hpp"
|
#include "fmsq.hpp"
|
||||||
#include "eq.hpp"
|
#include "eq.hpp"
|
||||||
|
#include "shift.hpp"
|
||||||
|
|
||||||
#include "wdsprxsink.h"
|
#include "wdsprxsink.h"
|
||||||
|
|
||||||
@ -357,6 +358,8 @@ void WDSPRxSink::applySettings(const WDSPRxSettings& settings, bool force)
|
|||||||
<< " m_nr2Gain: " << settings.m_nr2Gain
|
<< " m_nr2Gain: " << settings.m_nr2Gain
|
||||||
<< " m_nr2NPE: " << settings.m_nr2NPE
|
<< " m_nr2NPE: " << settings.m_nr2NPE
|
||||||
<< " m_nr2ArtifactReduction: " << settings.m_nr2ArtifactReduction
|
<< " m_nr2ArtifactReduction: " << settings.m_nr2ArtifactReduction
|
||||||
|
<< " m_rit: " << settings.m_rit
|
||||||
|
<< " m_ritFrequency: " << settings.m_ritFrequency
|
||||||
<< " m_streamIndex: " << settings.m_streamIndex
|
<< " m_streamIndex: " << settings.m_streamIndex
|
||||||
<< " m_useReverseAPI: " << settings.m_useReverseAPI
|
<< " m_useReverseAPI: " << settings.m_useReverseAPI
|
||||||
<< " m_reverseAPIAddress: " << settings.m_reverseAPIAddress
|
<< " m_reverseAPIAddress: " << settings.m_reverseAPIAddress
|
||||||
@ -365,6 +368,15 @@ void WDSPRxSink::applySettings(const WDSPRxSettings& settings, bool force)
|
|||||||
<< " m_reverseAPIChannelIndex: " << settings.m_reverseAPIChannelIndex
|
<< " m_reverseAPIChannelIndex: " << settings.m_reverseAPIChannelIndex
|
||||||
<< " force: " << force;
|
<< " force: " << force;
|
||||||
|
|
||||||
|
|
||||||
|
// RIT
|
||||||
|
|
||||||
|
if ((m_settings.m_rit != settings.m_rit) || (m_settings.m_ritFrequency != settings.m_ritFrequency) || force)
|
||||||
|
{
|
||||||
|
WDSP::SHIFT::SetShiftFreq(*m_rxa, settings.m_ritFrequency);
|
||||||
|
WDSP::SHIFT::SetShiftRun(*m_rxa, settings.m_rit ? 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
// Filter and mode
|
// Filter and mode
|
||||||
|
|
||||||
if((m_settings.m_profiles[m_settings.m_profileIndex].m_highCutoff != settings.m_profiles[settings.m_profileIndex].m_highCutoff) ||
|
if((m_settings.m_profiles[m_settings.m_profileIndex].m_highCutoff != settings.m_profiles[settings.m_profileIndex].m_highCutoff) ||
|
||||||
@ -735,12 +747,14 @@ void WDSPRxSink::applySettings(const WDSPRxSettings& settings, bool force)
|
|||||||
WDSP::PANEL::SetPanelGain1(*m_rxa, settings.m_volume);
|
WDSP::PANEL::SetPanelGain1(*m_rxa, settings.m_volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m_settings.m_audioBinaural != settings.m_audioBinaural) || force) {
|
if ((m_settings.m_audioBinaural != settings.m_audioBinaural)
|
||||||
WDSP::PANEL::SetPanelBinaural(*m_rxa, settings.m_audioBinaural ? 1 : 0);
|
|| (m_settings.m_audioFlipChannels != settings.m_audioFlipChannels) || force)
|
||||||
}
|
{
|
||||||
|
if (settings.m_audioBinaural) {
|
||||||
if ((m_settings.m_audioFlipChannels != settings.m_audioFlipChannels) || force) {
|
WDSP::PANEL::SetPanelCopy(*m_rxa, settings.m_audioFlipChannels ? 3 : 0);
|
||||||
WDSP::PANEL::SetPanelCopy(*m_rxa, settings.m_audioFlipChannels ? 3 : 0);
|
} else {
|
||||||
|
WDSP::PANEL::SetPanelCopy(*m_rxa, settings.m_audioFlipChannels ? 2 : 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// AGC
|
// AGC
|
||||||
|
Loading…
Reference in New Issue
Block a user