Просмотр исходного кода

Invert gain control for SDRplay gain reduction

master
Jan Svabenik 4 дней назад
Родитель
Сommit
d73c58d869
2 измененных файлов: 12 добавлений и 5 удалений
  1. +11
    -4
      web/app.js
  2. +1
    -1
      web/index.html

+ 11
- 4
web/app.js Просмотреть файл

@@ -41,6 +41,7 @@ let pendingConfigUpdate = null;
let pendingSettingsUpdate = null; let pendingSettingsUpdate = null;
let configTimer = null; let configTimer = null;
let settingsTimer = null; let settingsTimer = null;
const GAIN_MAX = 60;


const events = []; const events = [];
const eventsById = new Map(); const eventsById = new Map();
@@ -94,8 +95,9 @@ function applyConfigToUI(cfg) {
const spanMHz = toMHz(cfg.sample_rate / zoom); const spanMHz = toMHz(cfg.sample_rate / zoom);
spanInput.value = spanMHz.toFixed(3); spanInput.value = spanMHz.toFixed(3);
fftSelect.value = String(cfg.fft_size); fftSelect.value = String(cfg.fft_size);
gainRange.value = cfg.gain_db;
gainInput.value = cfg.gain_db;
const uiGain = Math.max(0, Math.min(GAIN_MAX, GAIN_MAX - cfg.gain_db));
gainRange.value = uiGain;
gainInput.value = uiGain;
thresholdRange.value = cfg.detector.threshold_db; thresholdRange.value = cfg.detector.threshold_db;
thresholdInput.value = cfg.detector.threshold_db; thresholdInput.value = cfg.detector.threshold_db;
agcToggle.checked = !!cfg.agc; agcToggle.checked = !!cfg.agc;
@@ -525,14 +527,19 @@ fftSelect.addEventListener('change', () => {


gainRange.addEventListener('input', () => { gainRange.addEventListener('input', () => {
gainInput.value = gainRange.value; gainInput.value = gainRange.value;
queueConfigUpdate({ gain_db: parseFloat(gainRange.value) });
const uiVal = parseFloat(gainRange.value);
if (Number.isFinite(uiVal)) {
const gr = Math.max(0, Math.min(GAIN_MAX, GAIN_MAX - uiVal));
queueConfigUpdate({ gain_db: gr });
}
}); });


gainInput.addEventListener('change', () => { gainInput.addEventListener('change', () => {
const v = parseFloat(gainInput.value); const v = parseFloat(gainInput.value);
if (Number.isFinite(v)) { if (Number.isFinite(v)) {
gainRange.value = v; gainRange.value = v;
queueConfigUpdate({ gain_db: v });
const gr = Math.max(0, Math.min(GAIN_MAX, GAIN_MAX - v));
queueConfigUpdate({ gain_db: gr });
} }
}); });




+ 1
- 1
web/index.html Просмотреть файл

@@ -60,7 +60,7 @@
</select> </select>
</div> </div>


<label class="control-label" for="gainRange">Gain (dB)</label>
<label class="control-label" for="gainRange">Gain (dB) (higher = more gain)</label>
<div class="control-row"> <div class="control-row">
<input id="gainRange" type="range" min="0" max="60" step="1" /> <input id="gainRange" type="range" min="0" max="60" step="1" />
<input id="gainInput" type="number" min="0" max="60" step="1" /> <input id="gainInput" type="number" min="0" max="60" step="1" />


Загрузка…
Отмена
Сохранить