Suggestion for minor UI tweaks
Hi JKS,
While I could likely use GitHub for this, I would like to suggest some minor UI tweaks for the KiwiSDR - these, based on my experience coding for the mcHF transceiver - and posting it here may be instructive to others who are using similar code - and to explain the "why" of the following aspects of the KiwiSDR UI.
Volume control.
It seems that the current implementation of the volume control on the UI is linear whereas we (humans) are not. This means that almost all of the useful volume range occurs in the first several steps while the majority of the adjustment range does nothing. - I suggest logarithmic scaling of the amplitude multiplier value, as in this pseudocode example:
// Volume slider input range 0-20
if(volume == 0) audio_mult = 0;
else
{
audio_mult = Math.pow(10, (volume-20) / 10); // "audio_mult" ranges from 0.012589 to 1 corresponding to 38dB to 0dB attenuation
// "audio_mult" is the value that is used to scale the amplitude of the audio stream via multiplication.
}
* * *
Similarly, several of the LMS parameters are particularly ill-suited for straight-line linear adjustment making it impossible to produce generally-usable filters - specifically, the beta and decay parameters:
beta: The useful range is likely from about 0.00001 to 0.2
decay: The useful range is probably about 0.9-0.999999
- Pseudocode example for the LMS beta value using a slider that has a range of 0-100:
beta_val = Math.pow(10, (beta_slider/23.25))/100000; // Resulting range is approx. 0.00001 to 0.2
- Pseudocode example for the LMS decay value, using a slider that has a range of 0-100:
decay_val = 1 - Math.pow(10, ((-1) - (decay_slider/20))); // Resulting range is 0.9-0.999999
* * *
Thanks for everything that you do.
73,
Clint
KA7OEI
While I could likely use GitHub for this, I would like to suggest some minor UI tweaks for the KiwiSDR - these, based on my experience coding for the mcHF transceiver - and posting it here may be instructive to others who are using similar code - and to explain the "why" of the following aspects of the KiwiSDR UI.
Volume control.
It seems that the current implementation of the volume control on the UI is linear whereas we (humans) are not. This means that almost all of the useful volume range occurs in the first several steps while the majority of the adjustment range does nothing. - I suggest logarithmic scaling of the amplitude multiplier value, as in this pseudocode example:
// Volume slider input range 0-20
if(volume == 0) audio_mult = 0;
else
{
audio_mult = Math.pow(10, (volume-20) / 10); // "audio_mult" ranges from 0.012589 to 1 corresponding to 38dB to 0dB attenuation
// "audio_mult" is the value that is used to scale the amplitude of the audio stream via multiplication.
}
* * *
Similarly, several of the LMS parameters are particularly ill-suited for straight-line linear adjustment making it impossible to produce generally-usable filters - specifically, the beta and decay parameters:
beta: The useful range is likely from about 0.00001 to 0.2
decay: The useful range is probably about 0.9-0.999999
- Pseudocode example for the LMS beta value using a slider that has a range of 0-100:
beta_val = Math.pow(10, (beta_slider/23.25))/100000; // Resulting range is approx. 0.00001 to 0.2
- Pseudocode example for the LMS decay value, using a slider that has a range of 0-100:
decay_val = 1 - Math.pow(10, ((-1) - (decay_slider/20))); // Resulting range is 0.9-0.999999
* * *
Thanks for everything that you do.
73,
Clint
KA7OEI
Comments