Gaborator is a C++ library for converting audio samples to a special spectral representation that uses different FTT sizes based on whether it is bass or treble (oversimplifying here). The transformation is reversible. See the website for more info.
This crate is a cxx-based wrapper of this library, allowing Rust code to use Gaborator (although with reduced efficiency).
- Not performance-minded
- Some overridable or low-level details not exposed
- No visualisation
- Crate soundness may be iffy - I was just followed the path of least resistance.
- Arithmentic overflows in buffer length calculations are not checked.
- Not really tested, apart from included examples. For example, streaming should be supported, but I haven't tried it myself.
Currently based on Gaborator version 1.6. Source code of the Gaborator is included into the crate.
- Phase information randomizer, creating sort-of-reverberation audio effect.
- Converts the analyzed sound to (sample,band,magnitude,phase) CSV file and back.
License of Gaborator is Affero GPL 3.0.
Glue code (sans doccomments copied from Gaborator) in this crate may be considered to be licensed as either MIT or AGPL-3.0, at your option.
Complex point, representing one coefficient. Magnitude is loudness at this point, argument is phase.
Additional data for
Wrapper for your callback function for
Spectrum analyze the samples at
Return the center frequency of band number
Return the band number of the lowpass band.
Return the band number corresponding to the reference frequency
Return the smallest valid bandpass band number, corresponding to the highest-frequency bandpass filter.
Return the bandpass band number one past the highest valid bandpass band number, corresponding to one past the lowest-frequency bandpass filter.
Write values to
Allow the coefficients for points in time before limit (a time in units of samples) to be forgotten. Streaming applications can use this to free memory used by coefficients that are no longer needed. Coefficients that have been forgotten will read as zero. This does not guarantee that all coefficients before limit are forgotten, only that ones for limit or later are not, and that the amount of memory consumed by any remaining coefficients before limit is bounded.
Returns the one-sided worst-case time domain support of any of the analysis filters.
Returns the one-sided worst-case time domain support of any of the reconstruction filters. When calling synthesize() to synthesize a sample at time t, the sample will only be significantly affected by spectrogram coefficients in the time range t ± support. Coefficients outside the range may be used in the synthesis, but substituting zeroes for the actual coefficient values will not significantly reduce accuracy.
Create new instance of Gaborator analyzer/synthesizer based on supplied parameters
Read or write values within
Synthesize signal samples from the coefficients