Skip to content

V1.2.0

Choose a tag to compare

@LSXPrime LSXPrime released this 21 Jul 18:15
· 7 commits to master since this release
faac823

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.Instance and Mixer.Master have been removed. The new design introduces explicit AudioPlaybackDevice, AudioCaptureDevice, and FullDuplexDevice abstractions.
    • 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.
  • 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, and AudioAnalyzer derivatives) now receive AudioEngine and AudioFormat context directly via their constructors.
    • This change removes implicit dependencies on global state, leading to a cleaner, more testable, and more robust codebase.
  • 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.
  • 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 MultiEngines Sample 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 NetworkDataProvider has 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).
  • 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 MathHelper for Scalar, SSE, and AVX paths to ensure consistent behavior across different CPU architectures. SIMD paths are now toggleable via static properties for easier debugging.

🚨 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.Instance Removed: The global singleton AudioEngine.Instance has been removed. You must now explicitly instantiate an AudioEngine (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's MasterMixer.
  • Constructor Changes for Core Components: The constructors for nearly all SoundComponent, ISoundDataProvider, SoundModifier, and AudioAnalyzer derivatives have changed. They now require an AudioEngine and/or AudioFormat instance to be passed in.
  • AudioEngine.OnAudioProcessed Event Removed: The global AudioEngine.OnAudioProcessed event is no longer available. Events for processed audio are now tied to specific devices (e.g., AudioCaptureDevice.OnAudioProcessed).
  • SwitchDevice API Overhaul: The previous SwitchDevice API is replaced with new, more explicit methods on the AudioEngine instance 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.