V1.2.0
SoundFlow v1.2.0 Release Notes: The Multi-Device Evolution
We are thrilled to announce SoundFlow v1.2.0, a landmark release that introduces a major architectural refactoring designed to fundamentally enhance how you interact with audio devices. This version moves away from a singleton-based model to a device-centric, instance-based architecture, enabling true multi-device input and output. You can now manage and switch between multiple playback and capture devices simultaneously and independently, opening up a world of new possibilities for complex audio applications.
This release not only revolutionizes device management but also integrates several new features, performance improvements, and critical bug fixes, building on the stable foundation of recent patches.
🚀 Key Highlights of v1.2.0
- True Multi-Device Architecture: Manage multiple independent audio playback, capture, and full-duplex devices simultaneously.
- Enhanced Control & Flexibility: Explicit control over audio contexts and seamless device switching APIs.
- New
VoiceIsolationEffect: An experimental audio modifier for isolating human speech frequencies. - Integrated Critical Fixes: Includes the significant memory reduction and recording bug fixes first introduced in v1.1.2.
- 🚨 BREAKING CHANGE: This is a fundamental architectural shift that requires adapting your existing SoundFlow API calls.
✨ New Features & Architectural Changes
- Multi-Device Architecture Revolution:
- The global
AudioEngine.InstanceandMixer.Masterhave been removed. The new design introduces explicitAudioPlaybackDevice,AudioCaptureDevice, andFullDuplexDeviceabstractions. - Each device now manages its own independent audio graph and
MasterMixer, allowing for isolated control and parallel operations. - This enables true multi-channel and multi-device applications, e.g., capturing from one device while playing back to another, or even operating multiple playback devices concurrently.
- The global
- Granular Native Device Configuration:
- The native device configuration layer now utilizes a comprehensive Data Transfer Object (DTO), enabling more granular control over backend-specific settings (e.g., WASAPI, ALSA, etc.), improving low-level compatibility and tuning.
- Explicit Context & Dependency Injection:
- Core components (such as
SoundComponent,ISoundDataProvider,SoundModifier, andAudioAnalyzerderivatives) now receiveAudioEngineandAudioFormatcontext directly via their constructors. - This change removes implicit dependencies on global state, leading to a cleaner, more testable, and more robust codebase.
- Core components (such as
- Robust Device Switching API:
- A new, powerful
Engine.SwitchDevice()API allows for seamless hot-swapping of active audio devices without losing state. Components, event subscribers, and other configurations are preserved during the switch.
- A new, powerful
- New
VoiceIsolationEffect(Experimental):- Introduced an experimental audio modifier that acts as a band-pass filter. This effect is designed to help isolate and enhance human speech frequencies within an audio stream, useful for applications like voice chat or transcription.
- New
MultiEnginesSample Project:- A new sample project has been added to the codebase specifically to demonstrate and test the new multi-device capabilities, serving as an excellent starting point for developers.
🔧 Improvements & Bug Fixes (Integrated from v1.1.2 and more)
This release incorporates and builds upon the critical fixes and optimizations previously introduced in SoundFlow v1.1.2, ensuring that v1.2.0 provides the most stable and performant experience.
- Massive Memory Reduction for Network Data Provider:
- The
NetworkDataProviderhas been refactored to use a chunked streaming and decoding model. This resolves excessive memory usage, drastically reducing memory consumption for long audio files (e.g., from ~1GB down to ~20MB for a 15-minute audio file).
- The
- Critical Audio Recording Bug Fixed:
- Corrects a severe audio format conversion bug that previously produced garbled or corrupted audio when recording to formats other than F32. Recording to all supported PCM formats (U8, S16, S24, S32) is now reliable and accurate.
- Improved FFT Consistency & Accuracy:
- Unified the FFT implementations in
MathHelperfor Scalar, SSE, and AVX paths to ensure consistent behavior across different CPU architectures. SIMD paths are now toggleable via static properties for easier debugging.
- Unified the FFT implementations in
🚨 Breaking Changes: Action Required!
This release introduces a fundamental architectural change that affects the entire public API of SoundFlow. Please review the following changes carefully:
AudioEngine.InstanceRemoved: The global singletonAudioEngine.Instancehas been removed. You must now explicitly instantiate anAudioEngine(e.g.,new MiniAudioEngine()).- Audio Playback Model Shift: Audio is no longer played by adding components to
Mixer.Master. You must now first initialize a device (e.g.,engine.InitializePlaybackDevice(...)) and then add components to that specific device'sMasterMixer. - Constructor Changes for Core Components: The constructors for nearly all
SoundComponent,ISoundDataProvider,SoundModifier, andAudioAnalyzerderivatives have changed. They now require anAudioEngineand/orAudioFormatinstance to be passed in. AudioEngine.OnAudioProcessedEvent Removed: The globalAudioEngine.OnAudioProcessedevent is no longer available. Events for processed audio are now tied to specific devices (e.g.,AudioCaptureDevice.OnAudioProcessed).SwitchDeviceAPI Overhaul: The previousSwitchDeviceAPI is replaced with new, more explicit methods on theAudioEngineinstance that return a new device object.
We highly recommend reviewing the fully updated documentation website, which now reflects all v1.2.0 changes: https://lsxprime.github.io/soundflow-docs/, and exploring the new MultiEngines sample project to adapt your existing code to the new architecture.
This release marks a significant milestone for SoundFlow, providing unprecedented flexibility, robustness, and scalability for your audio applications. We are excited to see what you build with these new capabilities!
As always, we welcome your feedback and contributions. Thank you for being a part of the SoundFlow community.