- dependency updates
- MSRV bump but only for the tests and examples, not library users
- Added FFT buffer size of 32768
- Optimized implementation, resulting in less unnecessary copying of data
- Removed excessive stack usage for large input data
- fixed the build by updating the dependencies
- apart from that, no changes happened
- BREAKING MSRV is now
1.63.0
- internal code improvements
- dropped all optional FFT features (
microfft-complex
,microfft-real
,rustfft-complex
) and mademicrofft::real
the default FFT implementation. This is breaking but only for a small percentage of users. There was no benefit from that feature andmicrofft::real
, the default, was already the fastest for no_std as well as std targets. - dependency updates
- MSRV is now
1.63.0
FrequencySpectrum::apply_scaling_fn
now requires a reference to&mut self
: This is breaking but only for a small percentage of users. Performance is slightly improved as less heap allocations are required.FrequencySpectrum
is nowSend
and interior mutability is dropped: You can wrap the struct in aMutex
or similar types now!FrequencySpectrum::to_map
doesn't has thescaling_fn
parameter anymore. This is breaking but only for a small percentage of users.FrequencySpectrum::to_mel_map
added for getting the spectrum in the mel scale.- small internal code quality and performance improvements
- fixed wrong scaling in
scaling::divide_by_N_sqrt
(#41)
- dependency update
- number of sample can now also be 8192 and 16384 (when the feature
microfft
is used)
- added scaling fn
divide_by_N_sqrt
which is the recommended normalization function by therustfft
documentation (but generally applicable)
- typos and small fixes
- removed
FrequencySpectrum::to_log_spectrum
(was useless; my understanding was wrong) - added example
live-visualization
that shows how you could visualize a spectrum in real-time
- removed example
live-spectrum-visualization
(was really bad)
- MSRV is now 1.56.1
- Rust edition 2021
- example
live-spectrum-visualization
requires Rust stable1.55.0
because theringbuffer
-dependency requires it - the rest of the crate should still build with the current MSRV
1.52.1
- if you run tests, you need
1.55.0
!
- bugfix of a bug since v1.0.0
- added
scaling::combined
which helps you to combine several scaling functions - added
FrequencySpectrum::to_log_spectrum
which gives you a more usable spectrum when you analyze music for example.- this is not optimal yet :(
- Needs code contributions.. doesn't look as nice and convenient as other implementations. I don't really know what to do here.
- The library returns now a result and will no longer panic under certain circumstances.
- removed
per_element_scaling_fn
in favor ofcomplex_scaling_fn
, which is now just calledscaling_fn
- the old behaviour was more confusing than beneficial - renamed
ComplexSpectrumScalingFunction
toSpectrumScalingFunction
and moved it into thescaling
-module - MSRV is now
1.52.1
stable
- many internal improvements
- rust-toolchain.toml for build stability and reproducibility
- really minor performance improvements (~5 %)
- added example
live-spectrum-visualization.rs
(still not perfect, but works) - added example
bench.rs
- Feature "rustfft-complex" uses "rustfft"-crate at version 6 which is faster/more optimized (~25%).
- improved CI
- README update
This crate now uses microfft::real
as default FFT implementation. It is by far the fastest implementation
and there are no disadvantages, despite (with microfft
version 0.4.0) the maximum FFT size is 4096. If you
need bigger FFT sizes, use feature rustfft-complex
.
This crate now works in no_std
-environments by default.
Added MIT to file headers where it was missing.
Fixed wrong usage of microfft::real
+ bumped version of microfft
to 0.4.0
.
Currently it seems like with this implementation you only can get
the frequencies zero to sampling_rate/4
, i.e. half of Nyquist frequency!
I found out so by plotting the values. Wait until
https://gitlab.com/ra_kete/microfft-rs/-/issues/9 gets resolved.
README fix.
Typo in README.md code example.
Typo in README.md.
- MSRV is now Rust 1.51 (sorry but that's the only way I can make it
no_std
-compatible) - This crate is now really
no_std
- you can choose between three FFT implementations at compile time via Cargo features.
The new default feature is
rustfft-complex
(which is stillstd
) but there are also the two newno_std
-compatible targetsmicrofft-complex
(more accurate, like rustfft) andmicrofft-real
(faster, less accurate) - several small improvements and fixes, see: https://github.com/phip1611/spectrum-analyzer/milestone/3?closed=1
FrequencySpectrum::min()
andFrequencySpectrum::max()
now return tuples/pairs (issue #6)FrequencySpectrum
now has convenient methods to get the value of a desired frequency from the underlying vector of FFT results (issue #8)FrequencySpectrum
now has a field + getter forfrequency_resolution
(issue #5)
For all issues see: https://github.com/phip1611/spectrum-analyzer/milestone/2