mirror of
https://github.com/alexkay/spek.git
synced 2025-06-13 22:02:27 +03:00
Adjustable dynamic range
This commit is contained in:
parent
c6dc7afcea
commit
1e5e936824
@ -44,7 +44,10 @@ END_EVENT_TABLE()
|
|||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
THRESHOLD = -92,
|
MAX_RANGE = 0,
|
||||||
|
MIN_RANGE = -140,
|
||||||
|
URANGE = -20,
|
||||||
|
LRANGE = -100,
|
||||||
NFFT = 2048,
|
NFFT = 2048,
|
||||||
BANDS = NFFT / 2 + 1,
|
BANDS = NFFT / 2 + 1,
|
||||||
LPAD = 60,
|
LPAD = 60,
|
||||||
@ -68,7 +71,9 @@ SpekSpectrogram::SpekSpectrogram(wxFrame *parent) :
|
|||||||
sample_rate(0),
|
sample_rate(0),
|
||||||
palette(RULER, BANDS),
|
palette(RULER, BANDS),
|
||||||
image(1, 1),
|
image(1, 1),
|
||||||
prev_width(-1)
|
prev_width(-1),
|
||||||
|
urange(URANGE),
|
||||||
|
lrange(LRANGE)
|
||||||
{
|
{
|
||||||
SetBackgroundStyle(wxBG_STYLE_CUSTOM);
|
SetBackgroundStyle(wxBG_STYLE_CUSTOM);
|
||||||
SetFocus();
|
SetFocus();
|
||||||
@ -155,10 +160,10 @@ void SpekSpectrogram::on_have_sample(SpekHaveSampleEvent& event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: check image size, quit if wrong.
|
// TODO: check image size, quit if wrong.
|
||||||
double range = log(1.0 - THRESHOLD);
|
double range = log(1.0 + this->urange - this->lrange);
|
||||||
for (int y = 0; y < bands; y++) {
|
for (int y = 0; y < bands; y++) {
|
||||||
double value = MAX(THRESHOLD, values[y]);
|
double value = MIN(this->urange, MAX(this->lrange, values[y]));
|
||||||
double level = log(1.0 - THRESHOLD + value) / range;
|
double level = log(1.0 + value - this->lrange) / range;
|
||||||
uint32_t color = spek_palette_spectrum(level);
|
uint32_t color = spek_palette_spectrum(level);
|
||||||
this->image.SetRGB(
|
this->image.SetRGB(
|
||||||
sample,
|
sample,
|
||||||
@ -323,9 +328,9 @@ void SpekSpectrogram::render(wxDC& dc)
|
|||||||
// TRANSLATORS: keep "-00" unchanged, it's used to calc the text width
|
// TRANSLATORS: keep "-00" unchanged, it's used to calc the text width
|
||||||
_("-00 dB"),
|
_("-00 dB"),
|
||||||
density_factors,
|
density_factors,
|
||||||
-THRESHOLD,
|
this->urange - this->lrange,
|
||||||
3.0,
|
3.0,
|
||||||
(h - TPAD - BPAD) / (double)THRESHOLD,
|
(h - TPAD - BPAD) / (double)(this->lrange - this->urange),
|
||||||
h - TPAD - BPAD,
|
h - TPAD - BPAD,
|
||||||
density_formatter
|
density_formatter
|
||||||
);
|
);
|
||||||
|
@ -52,6 +52,8 @@ private:
|
|||||||
wxImage palette;
|
wxImage palette;
|
||||||
wxImage image;
|
wxImage image;
|
||||||
int prev_width;
|
int prev_width;
|
||||||
|
int urange;
|
||||||
|
int lrange;
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user