Skip to content

Releases: dmrschmidt/DSWaveformImage

14.5.0

16 May 21:28

Choose a tag to compare

14.5.0

Added

  • Multi-channel rendering, including a dedicated stereo mode. Renderers can now interpret audio as .merged (default, unchanged), .specific(N) for a single channel, or .stereo for a split L/R image. Use via LinearWaveformRenderer(channelSelection:) or the new LinearWaveformRenderer.stereo factory; pass channelSelection: to WaveformAnalyzer.samples(...) if you're consuming raw samples. See Multi-Channel (Stereo) Support in the README. #111

Fixed

  • Multi-hour audio files no longer crash with OOM (#93). The end-of-loop backfill in WaveformAnalyzer previously padded the input sample buffer with up to gigabytes of zeros when the read produced fewer samples than the target (most commonly when the reader was interrupted by backgrounding). It now pads the output array with silence-equivalent floats — allocation is O(target), independent of audio duration. Per-chunk reads are wrapped in autoreleasepool to keep CMSampleBuffer references from pinning memory during long reads.
  • CircularWaveformRenderer(kind: .ring(_)) now renders a true annulus for .filled, .gradient, .outlined, and .gradientOutlined (previously only .striped looked right; the others filled the inner disk).

Changed

  • WaveformAnalyzer.AnalyzeError gained .invalidChannelIndex(requested:available:) for the new .specific(N) selector. Source-breaking for exhaustive switches without @unknown default:.

Full Changelog: 14.4.0...14.5.0

14.4.0

14 May 08:28

Choose a tag to compare

Full Changelog: 14.3.0...14.4.0

14.3.0 - Allow passing AVAsset to waveform analyzer

22 Jan 06:48
a7a96cf

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 14.2.2...14.3.0

14.2.2 - striped rendering fix

16 Jan 02:08

Choose a tag to compare

Fixes an issue w/ striped rendering always drawing the last stripe as a line instead of a proper bar.

14.2.1 - fix an issue with macOS API

03 Nov 12:05

Choose a tag to compare

14.2.0

30 Oct 08:02

Choose a tag to compare

Re-add ability to position waveform when using the image APIs.

14.1.2

24 Oct 07:24

Choose a tag to compare

Bring back support for visionOS from 14.1.0.

14.1.1

21 Oct 18:39

Choose a tag to compare

  • remove vision OS support for now again as it was causing troubles with Xcode 14

14.1.0

20 Oct 05:23

Choose a tag to compare

  • add the possibility to handle "loading" state in WaveformView - courtesy of @alfogrillo in #82
  • add support for visionOS - courtesy of @tapsandswipes in #81

14.0.0

08 Oct 13:59

Choose a tag to compare

  • Minimum iOS Deployment target is 15.0, macOS is 12.0 to remove internal usage of deprecated APIs
  • WaveformAnalyzer and WaveformImageDrawer now return Result<[Float] | DSImage, Error> when used with completionHandler for better error handling
  • WaveformAnalyzer is now stateless and requires the URL in .samples(fromAudioAt:count:qos:) instead of its constructor
  • SwiftUI's WaveformView has a new constructor that provides optional access to the underlying WaveformShape, which is now used for rendering, see #78