pixlwave/waveform
A SwiftUI Package to display an interactive waveform of an audio file.
Installation
To include it in your Xcode project click File | Swift Packages | Add Package Dependency… and enter the following url:
https://github.com/pixlwave/WaveformFor now, you'll need to select Branch and ensure it's set to main until v0.1.0 is released.
Usage
[Waveform Selection]
To use Waveform create a WaveformGenerator object with your audio file:
let audioFile = try! AVAudioFile(forReading: URL))!
let generator = WaveformGenerator(audioFile: audioFile) // this generator object is observableAnd then pass this to a Waveform along with a selection range if you need this:
var body: some View {
Waveform(generator: generator, selectedSamples: $selection, selectionEnabled: .constant(true))
}The colour scheme can be customised via the standard colour modifiers:
Waveform(generator: generator, selectedSamples: $selection, selectionEnabled: .constant(true))
.foregroundColor(waveformColor)
.background(backgroundColor)
.accentColor(selectionColor)Caveats
- More work is required on optimisation for acceptable performance on older devices.
- Any audio file you use is loaded into memory in the
WaveformGenerator. For now it would be worth watching your app's memory usage until this is addressed.
Package Metadata
Repository: pixlwave/waveform
Default branch: main
README: README.md