Skip to main content

Crate ringkernel_audio_fft

Crate ringkernel_audio_fft 

Source
Expand description

§RingKernel Audio FFT

GPU-accelerated audio FFT processing with direct/ambience signal separation using the RingKernel persistent actor model.

§Architecture

This crate implements a novel approach to audio processing where each FFT frequency bin is represented as an independent GPU actor. These actors communicate with their neighbors via K2K (kernel-to-kernel) messaging to perform coherence analysis and separate direct sound from room ambience.

Audio Input -> FFT -> [Bin Actors with K2K] -> Separation -> Mixer -> IFFT -> Output
                           |   |   |
                         neighbor links

§Signal Separation Algorithm

The separation is based on inter-bin coherence analysis:

  • Direct signal: High phase coherence between neighboring bins (transient, localized)
  • Ambience: Low phase coherence, diffuse energy distribution

Each bin actor:

  1. Receives its FFT data (magnitude + phase)
  2. Exchanges data with left/right neighbors via K2K
  3. Computes coherence metrics
  4. Separates into direct and ambient components

§Example

use ringkernel_audio_fft::prelude::*;

#[tokio::main]
async fn main() -> Result<()> {
    // Create the audio FFT processor
    let processor = AudioFftProcessor::builder()
        .fft_size(2048)
        .hop_size(512)
        .sample_rate(44100)
        .build()
        .await?;

    // Load audio file
    let input = AudioInput::from_file("input.wav")?;

    // Process with dry/wet control
    let output = processor
        .process(input)
        .dry_wet(0.5)       // 50% wet (ambience)
        .gain_boost(1.2)    // 20% gain boost
        .run()
        .await?;

    // Write output
    output.direct.write_to_file("direct.wav")?;
    output.ambience.write_to_file("ambience.wav")?;

    Ok(())
}

Re-exports§

pub use error::AudioFftError;
pub use error::Result;
pub use processor::AudioFftProcessor;
pub use processor::AudioFftProcessorBuilder;
pub use processor::ProcessingOutput;

Modules§

audio_input
Audio input handling for files and device streams.
bin_actor
FFT bin actors with K2K neighbor messaging.
error
Error types for audio FFT processing.
fft
FFT and IFFT processing utilities.
messages
Message types for audio FFT processing and K2K communication.
mixer
Dry/wet mixer with gain control.
prelude
Prelude module for convenient imports.
processor
Main audio FFT processor orchestrating the full pipeline.
separation
Direct/ambience signal separation algorithm.