Use log scale for visualizer (#397)

* Visualizer: use log scale

- log scale frequency and gain
- Hamming windowing
- improve reading from fifo

* Fix Visualizer memory leaks

* Visualizer: use Blackman window

* Visualizer: support DFT zero padding

* Visualizer: support fractional height bars, fix fifo read

* Revert "Fix Visualizer memory leaks"

This reverts commit 5c6509d2b8ed985a4928f681217dc8616d053ace.

* Visualizer: fix fifo read again

* Visualizer: add cubic interpolation option

* Visualizer: Expose more config options, add docs for config options

* Visualizer: Use reverse video text for stereo visualizer smooth look

* Visualizer: use FormattedColor to for reverse-video

* Visualizer: change some config options for spectrum

* Fix build fftw disabled

* Visualizer: use [0,5] interval for dft_size config option
This commit is contained in:
Evan Chang
2020-12-13 08:13:45 -05:00
committed by GitHub
parent 750e7ff59d
commit 47b3baf93c
6 changed files with 338 additions and 59 deletions

View File

@@ -71,19 +71,34 @@ private:
# ifdef HAVE_FFTW3_H
void DrawFrequencySpectrum(int16_t *, ssize_t, size_t, size_t);
void DrawFrequencySpectrumStereo(int16_t *, int16_t *, ssize_t, size_t);
void ApplyWindow(double *, int16_t *, ssize_t);
void GenLogspace();
double Bin2Hz(size_t);
double Interpolate(size_t, size_t);
# endif // HAVE_FFTW3_H
int m_output_id;
boost::posix_time::ptime m_timer;
int m_fifo;
size_t m_samples;
size_t m_read_samples;
std::vector<int16_t> m_sample_buffer;
std::vector<int16_t> m_temp_sample_buffer;
double m_auto_scale_multiplier;
# ifdef HAVE_FFTW3_H
size_t m_fftw_results;
double *m_fftw_input;
fftw_complex *m_fftw_output;
fftw_plan m_fftw_plan;
const uint32_t DFT_NONZERO_SIZE;
const uint32_t DFT_TOTAL_SIZE;
const double DYNAMIC_RANGE;
const double HZ_MIN;
const double HZ_MAX;
const double GAIN;
const std::wstring SMOOTH_CHARS;
std::vector<double> m_dft_logspace;
std::vector<std::pair<size_t, double>> m_bar_heights;
std::vector<double> m_freq_magnitudes;
# endif // HAVE_FFTW3_H