first attempt at an automatically calibrating waterfall
This commit is contained in:
parent
9f9a5ceaa3
commit
b9e6ffe03d
@ -11,6 +11,11 @@ html, body
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.openwebrx-button.highlighted .sprite {
|
||||||
|
background-image: linear-gradient(rgba(255,127,0,0.5), rgba(255,127,0,0.5)), url(../gfx/openwebrx-sprites.png);
|
||||||
|
background-blend-mode: overlay;
|
||||||
|
}
|
||||||
|
|
||||||
@media only screen and (-webkit-min-device-pixel-ratio: 2),
|
@media only screen and (-webkit-min-device-pixel-ratio: 2),
|
||||||
only screen and (min-device-pixel-ratio: 2) {
|
only screen and (min-device-pixel-ratio: 2) {
|
||||||
.sprite {
|
.sprite {
|
||||||
|
@ -435,7 +435,7 @@ input[type=range]:disabled {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.openwebrx-button:hover, .openwebrx-demodulator-button.highlighted
|
.openwebrx-button:hover, .openwebrx-demodulator-button.highlighted, .openwebrx-button.highlighted
|
||||||
{
|
{
|
||||||
/*background:-webkit-gradient( linear, left top, left bottom, color-stop(0.0 , #3F3F3F), color-stop(1, #777777) );
|
/*background:-webkit-gradient( linear, left top, left bottom, color-stop(0.0 , #3F3F3F), color-stop(1, #777777) );
|
||||||
background:-moz-linear-gradient( center top, #373737 5%, #4F4F4F 100% );*/
|
background:-moz-linear-gradient( center top, #373737 5%, #4F4F4F 100% );*/
|
||||||
|
@ -164,7 +164,7 @@
|
|||||||
<div class="openwebrx-panel-line">
|
<div class="openwebrx-panel-line">
|
||||||
<div title="Mute on/off" id="openwebrx-mute-off" class="openwebrx-button" onclick="toggleMute();"><span class="sprite sprite-speaker openwebrx-sliderbtn-img"></span></div>
|
<div title="Mute on/off" id="openwebrx-mute-off" class="openwebrx-button" onclick="toggleMute();"><span class="sprite sprite-speaker openwebrx-sliderbtn-img"></span></div>
|
||||||
<input title="Volume" id="openwebrx-panel-volume" class="openwebrx-panel-slider" type="range" min="0" max="150" value="50" step="1" onchange="updateVolume()" oninput="updateVolume()">
|
<input title="Volume" id="openwebrx-panel-volume" class="openwebrx-panel-slider" type="range" min="0" max="150" value="50" step="1" onchange="updateVolume()" oninput="updateVolume()">
|
||||||
<div title="Auto-adjust waterfall colors" id="openwebrx-waterfall-colors-auto" class="openwebrx-button" onclick="waterfall_measure_minmax_now=true;"><span class="sprite sprite-waterfall-auto openwebrx-sliderbtn-img"></span></div>
|
<div title="Auto-adjust waterfall colors (right-click for continuous)" id="openwebrx-waterfall-colors-auto" class="openwebrx-button"><span class="sprite sprite-waterfall-auto openwebrx-sliderbtn-img"></span></div>
|
||||||
<input title="Waterfall minimum level" id="openwebrx-waterfall-color-min" class="openwebrx-panel-slider" type="range" min="-200" max="100" value="50" step="1" onchange="updateWaterfallColors(0);" oninput="updateVolume()">
|
<input title="Waterfall minimum level" id="openwebrx-waterfall-color-min" class="openwebrx-panel-slider" type="range" min="-200" max="100" value="50" step="1" onchange="updateWaterfallColors(0);" oninput="updateVolume()">
|
||||||
</div>
|
</div>
|
||||||
<div class="openwebrx-panel-line">
|
<div class="openwebrx-panel-line">
|
||||||
|
@ -101,6 +101,7 @@ function waterfallColorsDefault() {
|
|||||||
waterfall_max_level = waterfall_max_level_default;
|
waterfall_max_level = waterfall_max_level_default;
|
||||||
$("#openwebrx-waterfall-color-min").val(waterfall_min_level);
|
$("#openwebrx-waterfall-color-min").val(waterfall_min_level);
|
||||||
$("#openwebrx-waterfall-color-max").val(waterfall_max_level);
|
$("#openwebrx-waterfall-color-max").val(waterfall_max_level);
|
||||||
|
waterfallColorsContinuousReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
function waterfallColorsAuto(levels) {
|
function waterfallColorsAuto(levels) {
|
||||||
@ -109,7 +110,32 @@ function waterfallColorsAuto(levels) {
|
|||||||
var max_level = levels.max + waterfall_auto_level_margin.max;
|
var max_level = levels.max + waterfall_auto_level_margin.max;
|
||||||
max_level = Math.max(min_level + (waterfall_auto_level_margin.min_range || 0), max_level);
|
max_level = Math.max(min_level + (waterfall_auto_level_margin.min_range || 0), max_level);
|
||||||
$("#openwebrx-waterfall-color-max").val(max_level);
|
$("#openwebrx-waterfall-color-max").val(max_level);
|
||||||
updateWaterfallColors(0);
|
waterfall_min_level = min_level;
|
||||||
|
waterfall_max_level = max_level;
|
||||||
|
}
|
||||||
|
|
||||||
|
var waterfall_continuous = {
|
||||||
|
min: -150,
|
||||||
|
max: 0
|
||||||
|
};
|
||||||
|
|
||||||
|
function waterfallColorsContinuousReset() {
|
||||||
|
waterfall_continuous.min = waterfall_min_level;
|
||||||
|
waterfall_continuous.max = waterfall_max_level;
|
||||||
|
}
|
||||||
|
|
||||||
|
function waterfallColorsContinuous(levels) {
|
||||||
|
if (levels.max > waterfall_continuous.max + 1) {
|
||||||
|
waterfall_continuous.max += 1;
|
||||||
|
} else if (levels.max < waterfall_continuous.max - 1) {
|
||||||
|
waterfall_continuous.max -= .1;
|
||||||
|
}
|
||||||
|
if (levels.min < waterfall_continuous.min - 1) {
|
||||||
|
waterfall_continuous.min -= 1;
|
||||||
|
} else if (levels.min > waterfall_continuous.min + 1) {
|
||||||
|
waterfall_continuous.min += .1;
|
||||||
|
}
|
||||||
|
waterfallColorsAuto(waterfall_continuous);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setSmeterRelativeValue(value) {
|
function setSmeterRelativeValue(value) {
|
||||||
@ -1050,6 +1076,7 @@ function clear_metadata() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var waterfall_measure_minmax_now = false;
|
var waterfall_measure_minmax_now = false;
|
||||||
|
var waterfall_measure_minmax_continuous = false;
|
||||||
|
|
||||||
function waterfall_measure_minmax_do(what) {
|
function waterfall_measure_minmax_do(what) {
|
||||||
// this is based on an oversampling factor of about 1,25
|
// this is based on an oversampling factor of about 1,25
|
||||||
@ -1267,6 +1294,12 @@ function waterfall_add(data) {
|
|||||||
var levels = waterfall_measure_minmax_do(data);
|
var levels = waterfall_measure_minmax_do(data);
|
||||||
waterfall_measure_minmax_now = false;
|
waterfall_measure_minmax_now = false;
|
||||||
waterfallColorsAuto(levels);
|
waterfallColorsAuto(levels);
|
||||||
|
waterfallColorsContinuousReset();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (waterfall_measure_minmax_continuous) {
|
||||||
|
var level = waterfall_measure_minmax_do(data);
|
||||||
|
waterfallColorsContinuous(level);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Add line to waterfall image
|
//Add line to waterfall image
|
||||||
@ -1358,6 +1391,16 @@ function initSliders() {
|
|||||||
$slider.val(val + step);
|
$slider.val(val + step);
|
||||||
$slider.trigger('change');
|
$slider.trigger('change');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var waterfallAutoButton = $('#openwebrx-waterfall-colors-auto');
|
||||||
|
waterfallAutoButton.on('click', function(ev) {
|
||||||
|
waterfall_measure_minmax_now=true;
|
||||||
|
}).on('contextmenu', function(){
|
||||||
|
waterfall_measure_minmax_continuous = !waterfall_measure_minmax_continuous;
|
||||||
|
waterfallColorsContinuousReset();
|
||||||
|
waterfallAutoButton[(waterfall_measure_minmax_continuous ? 'add' : 'remove') + 'Class']('highlighted')
|
||||||
|
return false;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function digimodes_init() {
|
function digimodes_init() {
|
||||||
|
Loading…
Reference in New Issue
Block a user