Crate insta_fun

Crate insta_fun 

Source
Expand description

§insta-fun

SVG snapshot testing for FunDSP audio units.

Generate visual snapshots of audio processing units to catch regressions and verify signal behavior.

Example

Note: Snapshot assertion uses insta::assert_binary_snapshot which is currently experimental.

§Usage

use insta_fun::prelude::*;
use fundsp::prelude::*;

#[test]
fn example_test() {
    // Simple snapshot
    let unit = sine_hz::<f32>(440.0);
    let svg = snapshot_audio_unit(unit);

    // With input signal
    let filter = lowpass_hz(1000.0, 1.0);
    let svg = snapshot_audio_unit_with_input(filter, InputSource::impulse());

    // Custom configuration
    let config = SnapshotConfigBuilder::default().num_samples(100).build().unwrap();
    let svg = snapshot_audio_unit_with_options(sine_hz::<f32>(440.0), config);

    // With a macro
    let unit = sine_hz::<f32>(440.0);
    assert_audio_unit_snapshot!(unit);
}

§Features

  • Visualizes audio unit inputs and outputs as SVG waveforms
  • Supports multi-channel audio with color-coded traces
  • Configurable sample count, SVG dimensions, and processing modes
  • Built-in input generators (impulse, sine, custom)
  • Batch or tick-by-tick processing
  • Assertion macro

§Processing Modes

  • Tick: Process one sample at a time (default)
  • Batch: Process up to 64 samples at once for efficiency

§The Unlicense

See LICENSE file for details.

Modules§

config
input
macros
prelude
snapshot

Macros§

assert_audio_unit_snapshot
Macro for audio unit snapshot testing