Skip to content

SoundFlow v1.3.0

Choose a tag to compare

@LSXPrime LSXPrime released this 21 Nov 18:32
· 1 commit to master since this release

Release Notes - SoundFlow v1.3.0

1480 Hours of Development - 1480 Hours of Goodbye.
That is the effort poured into this release. Version 1.3.0 is not just an update; it is a complete transformation of the library from a playback engine into a comprehensive creative audio framework.

This release introduces a pluggable codec architecture (FFmpeg), a complete MIDI sequencing and routing engine, a polyphonic synthesizer with SoundFont support, and a comprehensive metadata reading/writing API.


🌟 Key Highlights

  • FFmpeg Codecs: Native support for decoding and encoding major formats (MP3, AAC, OGG, Opus, FLAC, ALAC) via a new pluggable extension.
  • MIDI & Synthesis: A complete MIDI I/O backend, a built-in polyphonic Synthesizer, and SoundFont (.sf2) playback capability.
  • Advanced Metadata: Read and write metadata tags (ID3v2, Vorbis Comments, MP4 Atoms) across all supported formats.
  • MIDI Mapping: A reflection-based system to bind MIDI controllers to any audio parameter (Volume, Cutoff, etc.) in real-time.

📢 An Update, and a Very Long Goodbye

So, this update is finally out. It took 1480 hours of actual work to get here, a true labor of love (at the current moment, I am sure I am just a shut-in nerd). Hope you enjoy it, because... things are about to get interesting...

And now, for the main event: I have a mandatory engagement coming up. I’m heading off for a little vacation known as forced military service. This "vacation" lasts either 1 year (if the cosmos smiles upon me), or 3 years (which is, well, my actual suicide trigger).

The best part? No internet-enabled phone, no computer access. Total blackout.

So, this is almost certainly the last update you’ll see for a very long time. I might manage to squeeze one final push out before my mandatory long goodbye, but don't count on it.

I did the best I could with the time I had left. Enjoy it.

And to everyone who starred SoundFlow and actually used it - thank you. Seriously. Maybe someday I'll be that legendary unpaid open-source developer who finally breaks the entire modern infrastructure, too.

Oh, and Check out my other project, LSXPrime/ProseFlow. It's a system-wide, privacy-focused Copilot that's actually helpful, and I’m sure it will be a great assist to some of you.


🚀 New Features

🎧 Codecs & Formats (SoundFlow.Codecs.FFMpeg)

  • Pluggable Architecture: AudioEngine now supports ICodecFactory registration, allowing dynamic addition of format support.
  • New Extension: Introduced SoundFlow.Codecs.FFMpeg.
    • Decoders: MP3, AAC, OGG Vorbis, Opus, FLAC, ALAC, AC3, WAV, AIFF, and more.
    • Encoders: Write audio streams to MP3, AAC/M4A, FLAC, and WAV.
  • Automatic Format Detection: AssetDataProvider and StreamDataProvider now probe streams to determine the correct codec automatically based on file headers.

🎹 MIDI & Synthesis (SoundFlow.Midi & SoundFlow.Synthesis)

  • PortMidi Backend: Cross-platform MIDI I/O support via SoundFlow.Midi.PortMidi.
  • MidiManager: A central hub for routing MIDI messages between physical devices and internal components.
  • Synthesizer Component:
    • Multi-timbral, polyphonic synthesis engine.
    • Support for SoundFonts (.sf2) via SoundFontBank.
    • MPE (MIDI Polyphonic Expression) support for per-note pitch bend, pressure, and timbre.
    • Built-in ADSR envelopes, LFOs, and Filter modulation.
  • MIDI Modifiers: Real-time MIDI effects including:
    • ArpeggiatorModifier (Up, Down, Random patterns).
    • HarmonizerModifier (Chord generation).
    • RandomizerModifier (Velocity/Pitch randomization).
    • VelocityModifier (Curves and scaling).
    • TransposeModifier.

📝 Metadata API (SoundFlow.Metadata)

  • Unified Reader/Writer: Static SoundMetadataReader and SoundMetadataWriter classes.
  • Format Support:
    • MP3: ID3v1 and ID3v2.3/2.4 reading and writing.
    • FLAC/OGG: Vorbis Comments and embedded pictures.
    • MP4/M4A: iTunes-style metadata atoms (moov/udta/ilst).
    • WAV/AIFF: RIFF INFO chunks and ID3 chunks.
  • Cue Sheets: Support for parsing embedded Cue Sheets in FLAC and WAV.

🎛️ Core & Audio Processing

  • Composition Overhaul:
    • Split responsibilities into CompositionEditor, CompositionRecorder (MIDI recording), and CompositionRenderer.
    • Added MidiTrack and MidiSegment alongside existing Audio tracks.
    • Project serialization now saves MIDI data, mappings, and tempo maps.
  • ChannelMixer: New SIMD-accelerated (AVX/SSE) utility for efficient Mono/Stereo/Surround upmixing and downmixing.
  • ResamplerModifier: Real-time variable speed/pitch resampling effect.
  • MIDI Mapping: Use [ControllableParameter] attribute on properties to expose them to the new MidiMappingManager. Bind physical knobs to software parameters with Linear or Logarithmic scaling.

📚 Learning Resources & Samples

The documentation website has been fully updated to reflect the v1.3.0 API changes and new features.

We have also added three new sample projects to help you get started with the new capabilities:

  • SoundFlow.Samples.Midi.BasicSequencing: Demonstrates how to programmatically create MIDI tracks, notes, and playback via the Synthesizer.
  • SoundFlow.Samples.Midi.PropertyMapping: Shows how to map external MIDI controllers to software parameters (like Filter Cutoff) using the MidiMappingManager.
  • SoundFlow.Samples.Midi.SynthesisModifiers: Illustrates how to use the Arpeggiator and Harmonizer modifiers to generate complex performances from simple input.

🛠 Improvements

  • SIMD Math: Updated MathHelper and ChannelMixer to leverage hardware intrinsics for faster mixing and FFT operations.
  • Logging: Replaced Console.WriteLine calls with a centralized SoundFlow.Utils.Log class. Subscribe to Log.OnLog to redirect internal engine logs to your own logging framework.
  • Native Builds: Completely restructured the native C/C++ layer with dedicated CMake projects for miniaudio, portmidi, and ffmpeg-codec, including automated NuGet packaging via .targets.

📦 New & Updated NuGet Packages

All SoundFlow packages have been updated to version 1.3.0 and are available for download. This release introduces two major extensions required to unlock the new MIDI and Codec capabilities.

New Packages

Updated Packages


⚠️ Breaking Changes

Version 1.3.0 introduces significant structural changes. If you are migrating from v1.2.x, please check the detailed migration guide:

https://lsxprime.github.io/soundflow-docs/#/docs/1.3.0/migration-guide