Crate gaborator_sys

Crate gaborator_sys 

Source
Expand description

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).

Limitations:

  • f32 only
  • 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.

Availble examples:

  • 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.

Re-exports§

pub extern crate cxx;

Structs§

Analyzer
Represents C++’s gaborator::analyzer<float>. Use new_analyzer function to create it.
Coef
Complex point, representing one coefficient. Magnitude is loudness at this point, argument is phase.
CoefMeta
Additional data for read_coefficients_with_meta or write_coefficients_with_meta
Coefs
Reprepresents C++’s gaborator::coefs<float>. Create it using create_coefs. Can be memory-hungry.
Params
Corresponds to gaborator::parameters.
ProcessOrFillCallback
Wrapper for your callback function for fill or process.

Functions§

analyze
Spectrum analyze the samples at signal and add the resulting coefficients to coefs. t1 parameter from Gaborator’s analyze method is caluclated based on supplied slice size.
band_ff
Return the center frequency of band number band, in units of the sampling frequency.
band_lowpass
Return the band number of the lowpass band.
band_ref
Return the band number corresponding to the reference frequency ff_ref. If ff_ref falls within the frequency range of the bandpass filter bank, this will be a valid bandpass band number, otherwise it will not.
bandpass_bands_begin
Return the smallest valid bandpass band number, corresponding to the highest-frequency bandpass filter.
bandpass_bands_end
Return the bandpass band number one past the highest valid bandpass band number, corresponding to one past the lowest-frequency bandpass filter.
create_coefs
Create Coefs - the holder of analyzed data.
fill
Write values to Coefs, creating non-existent entries as needed. Corresponds to fill function of Gaborator. from_band and to_band may be given INT_MIN / INT_MAX values, that would mean all bands. from_sample_time / to_sample_time should not be set to overtly large range, lest memory will be exhausted.
forget_before
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.
get_analysis_support_len
Returns the one-sided worst-case time domain support of any of the analysis filters. When calling analyze() with a sample at time t, only spectrogram coefficients within the time range t ± support will be significantly changed. Coefficients outside the range may change, but the changes will sufficiently small that they may be ignored without significantly reducing accuracy.
get_synthesis_support_len
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.
new_analyzer
Create new instance of Gaborator analyzer/synthesizer based on supplied parameters
process
Read or write values within Coefs, skipping over non-existent entries. Corresponds to process function of Gaborator. from_band and to_band may be given INT_MIN / INT_MAX values, that would mean all bands. from_sample_time and to_sample_time can also be given INT64_MIN / INT64_MAX value to mean all available data.
synthesize
Synthesize signal samples from the coefficients coef and store them at signal. t1 parameter from Gaborator’s synthesize method is caluclated based on supplied slice size.