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:
- Receives its FFT data (magnitude + phase)
- Exchanges data with left/right neighbors via K2K
- Computes coherence metrics
- 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.