V1.1.0 #51
LSXPrime
announced in
Announcements
V1.1.0
#51
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
SoundFlow v1.1.0 Release Notes
This is a landmark release for SoundFlow, introducing a powerful Non-Destructive Audio Editing and Persistence Engine. This update provides developers with a complete framework for building sophisticated audio editing applications, from simple clip arrangement to complex multi-track projects with effects, time-stretching, and project saving/loading capabilities.
✨ Major New Features
1. The
SoundFlow.EditingModule: A Full-Featured Audio Editing EngineWe are thrilled to introduce a comprehensive, non-destructive editing module. This suite of tools allows you to build complex audio timelines programmatically.
Compositionclass acts as your main project container, holding multipleTrackobjects.Tracks simultaneously. Each track has its own settings for volume, pan, mute, and solo.AudioSegmentis the core building block. Place segments on a track's timeline, specifying a start time and duration from any audio source.AudioSegmentSettingsobject, allowing for:IsReversed = trueflag.LoopSettings.FadeInandFadeOuteffects withLinear,Logarithmic, andS-Curveshapes.2. Pitch-Preserved Time Stretching & Advanced Speed Control
Manipulating the timing of audio is now more powerful than ever.
TimeStretchFactorproperty onAudioSegmentallows you to change the duration of an audio clip without altering its pitch. This is perfect for fitting dialogue or music to a specific time slot. Internally, this is powered by a new, high-qualityWsolaTimeStretchercomponent.TargetStretchDurationon a segment, and SoundFlow will automatically calculate the required stretch factor to make it fit perfectly.SpeedFactorproperty remains, allowing for classic varispeed effects that adjust both tempo and pitch (like a tape machine).3. Project Persistence: Save and Load Your Compositions
A complete
SoundFlow.Editing.Persistencesystem has been added, allowing you to save and load entire compositions to and from a file (.sfproj).CompositionProjectManager.SaveProjectAsyncandLoadProjectAsyncto manage your projects.Assetsfolder within your project directory, making your projects portable and self-contained.RelinkMissingMediaAsyncfunction to point the project to the file's new location.4. New Sample Project:
SoundFlow.Samples.EditingMixerTo showcase these powerful new features, a comprehensive new sample project has been added. Run it to see interactive examples of:
🚀 Enhancements & Improvements
RecorderandISoundEncoderinterfaces now operate onStreamobjects instead of file paths. This is a major flexibility improvement, allowing you to record or encode directly to aMemoryStream,NetworkStream, or any other stream type.SoundPlayerBasehas been significantly refactored to support the new time-stretching and advanced playback capabilities, resulting in more robust and flexible audio playback.RawDataProvider: This provider is now significantly more versatile, with new constructors that can acceptfloat[],int[],short[], andbyte[]arrays directly, in addition to streams.Mixercomponent is nowIDisposableand uses aConcurrentDictionaryfor its components, improving thread safety and ensuring proper cleanup of audio resources.SoundModifierandAudioAnalyzerclasses now have anEnabledproperty, allowing you to non-destructively toggle effects on and off at any level (segment, track, or master).This release includes several API changes to improve flexibility and consistency.
Encoder API Uses
Stream:AudioEngine.CreateEncoderand theMiniAudioEncoderconstructor now require aStreaminstead of astring filePath.new MiniAudioEncoder("output.wav", ...)new MiniAudioEncoder(new FileStream("output.wav", ...), ...)Recorder API Uses
Stream:Recorderconstructor now takes aStreaminstead of astring filePath.new Recorder("recording.wav", ...)new Recorder(new FileStream("recording.wav", ...), ...)ISoundDataProvider.SampleRateProperty:SampleRateproperty onISoundDataProvideris now a non-nullable, get-onlyint(public int SampleRate { get; }). It was previously a settableint?.Provider Constructor Signatures:
ChunkedDataProvider,NetworkDataProvider, andAssetDataProviderno longer accept asampleRateparameter.🌐 New Platform Support
freebsd-x64andfreebsd-arm64).What's Changed
New Contributors
Full Changelog: V1.0.4...V1.1.0
This discussion was created from the release V1.1.0.
Beta Was this translation helpful? Give feedback.
All reactions