Mercurial > hg > svcore
comparison data/model/FFTModel.h @ 1780:6d6740b075c3
Support optional max frequency setting, useful when we want to store caches of very constrained frequency ranges (as in melodic-range spectrogram, potentially)
author | Chris Cannam |
---|---|
date | Thu, 12 Sep 2019 11:52:19 +0100 |
parents | b92bdcd4954b |
children | 4eac4bf35b45 |
comparison
equal
deleted
inserted
replaced
1779:85903b0e9b42 | 1780:6d6740b075c3 |
---|---|
91 WindowType getWindowType() const { return m_windowType; } | 91 WindowType getWindowType() const { return m_windowType; } |
92 int getWindowSize() const { return m_windowSize; } | 92 int getWindowSize() const { return m_windowSize; } |
93 int getWindowIncrement() const { return m_windowIncrement; } | 93 int getWindowIncrement() const { return m_windowIncrement; } |
94 int getFFTSize() const { return m_fftSize; } | 94 int getFFTSize() const { return m_fftSize; } |
95 | 95 |
96 void setMaximumFrequency(double freq); | |
97 double getMaximumFrequency() const { return m_maximumFrequency; } | |
98 | |
96 //!!! review which of these are ever actually called | 99 //!!! review which of these are ever actually called |
97 | 100 |
98 float getMagnitudeAt(int x, int y) const; | 101 float getMagnitudeAt(int x, int y) const; |
99 float getMaximumMagnitudeAt(int x) const; | 102 float getMaximumMagnitudeAt(int x) const; |
100 float getPhaseAt(int x, int y) const; | 103 float getPhaseAt(int x, int y) const; |
138 private: | 141 private: |
139 FFTModel(const FFTModel &) =delete; | 142 FFTModel(const FFTModel &) =delete; |
140 FFTModel &operator=(const FFTModel &) =delete; | 143 FFTModel &operator=(const FFTModel &) =delete; |
141 | 144 |
142 const ModelId m_model; // a DenseTimeValueModel | 145 const ModelId m_model; // a DenseTimeValueModel |
146 sv_samplerate_t m_sampleRate; | |
143 int m_channel; | 147 int m_channel; |
144 WindowType m_windowType; | 148 WindowType m_windowType; |
145 int m_windowSize; | 149 int m_windowSize; |
146 int m_windowIncrement; | 150 int m_windowIncrement; |
147 int m_fftSize; | 151 int m_fftSize; |
148 Window<float> m_windower; | 152 Window<float> m_windower; |
149 mutable breakfastquay::FFT m_fft; | 153 mutable breakfastquay::FFT m_fft; |
154 double m_maximumFrequency; | |
150 | 155 |
151 int getPeakPickWindowSize(PeakPickType type, sv_samplerate_t sampleRate, | 156 int getPeakPickWindowSize(PeakPickType type, sv_samplerate_t sampleRate, |
152 int bin, double &dist) const; | 157 int bin, double &dist) const; |
153 | 158 |
154 std::pair<sv_frame_t, sv_frame_t> getSourceSampleRange(int column) const { | 159 std::pair<sv_frame_t, sv_frame_t> getSourceSampleRange(int column) const { |
161 } | 166 } |
162 | 167 |
163 typedef std::vector<float, breakfastquay::StlAllocator<float>> fvec; | 168 typedef std::vector<float, breakfastquay::StlAllocator<float>> fvec; |
164 typedef std::vector<std::complex<float>, | 169 typedef std::vector<std::complex<float>, |
165 breakfastquay::StlAllocator<std::complex<float>>> cvec; | 170 breakfastquay::StlAllocator<std::complex<float>>> cvec; |
166 | 171 |
167 const cvec &getFFTColumn(int column) const; // returns ref for immediate use only | 172 cvec getFFTColumn(int column) const; |
168 fvec getSourceSamples(int column) const; | 173 fvec getSourceSamples(int column) const; |
169 fvec getSourceData(std::pair<sv_frame_t, sv_frame_t>) const; | 174 fvec getSourceData(std::pair<sv_frame_t, sv_frame_t>) const; |
170 fvec getSourceDataUncached(std::pair<sv_frame_t, sv_frame_t>) const; | 175 fvec getSourceDataUncached(std::pair<sv_frame_t, sv_frame_t>) const; |
171 | 176 |
172 struct SavedSourceData { | 177 struct SavedSourceData { |