audio_waveforms
A Flutter package that allow you to generate waveform while recording audio or from audio file.
2.0.2
55K downloads/mo
#1420 most downloaded on pub.dev
SimformSolutionsPvtLtd/audio_waveforms
What this package is like to depend on
Last release 7 months ago
09 Jan 2026
Release timing varies
gaps range from 2 weeks to 11 months
Nearly every release is documented
notes for 23 of 23 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
23 releases · first in 2022
3 releases in the last 12 months
see the full history below
Release timeline
23 releases · Mar 2022 to Jan 2026Releases
latest 23-
2.0.209 Jan 2026Release notes
Open source →What's Changed
- chore: Update compileSdk and targetSdk to run example app by @vasu-nageshri in #460
- chore: Update analysis options and related files by @vasu-nageshri in #461
- fix: 🔨 Fixed labels not displaying properly during recording by @vasu-nageshri in #464
- feat: ✨ Add noOfSamplesPerSecond parameter to preparePlayer for easier waveform configuration by @vasu-nageshri in #465
- docs: 📚 Add Code of Conduct, Contribution Guidelines, and PR Template by @vasu-nageshri in #466
- fix: 🐛Incorrect waveform UI when setting
Duration.zerofor AudioFileWaveforms by @ujas-m-simformsolutions in #458 - fix: 🐛Waveform extraction is not cancel when PlayerController is disposed by @ujas-m-simformsolutions in #459
- fix:🐛Recorded duration is not same as controller duration by @ujas-m-simformsolutions in #467
- feat: ✨ Add support for right to left waveform rendering by @ujas-m-simformsolutions in #462
- fix: 🐛 Use hardware format when streaming bytes by @ujas-m-simformsolutions in #469
- chore: ⬆️ bump version and update documentation by @ujas-m-simformsolutions in #471
New Contributors
- @vasu-nageshri made their first contribution in #460
Full Changelog: 2.0.1...2.0.2
Release notes
Open source →- Chore #460 - Update compileSdk and targetSdk to run example app
- Chore #461 - Update analysis options and related files
- Fixed #464 - Fixed labels not displaying properly during recording
- Feature #398 - Add noOfSamplesPerSecond parameter to preparePlayer for easier waveform configuration
- Fixed #441 - Incorrect waveform UI when setting
Duration.zerofor AudioFileWaveforms - Fixed #439 - Waveform extraction is not cancel when PlayController is disposed
- Fixed #236 - Recorded duration is not same as controller duration
- Feature #250 - Add support for right to left waveform rendering
- Fixed #463 - iOS crash while streaming audio bytes due to hardware format mismatch
-
2.0.104 Dec 2025Release notes
Open source →What's Changed
- fix: 🐛 OnAmplitude continues to add data points when recording is paused on iOS by @ujas-m-simformsolutions in #454
- fix: 🐛Recording with wav format never returns result by @ujas-m-simformsolutions in #456
- It should be true. by @yuanhoujun in #455
- fix: 🐛extractWaveformData doesn't return result on iOS by @ujas-m-simformsolutions in #457
New Contributors
- @yuanhoujun made their first contribution in #455
Full Changelog: 2.0.0...2.0.1
Release notes
Open source →- Fixed #452 - OnAmplitude continues to add data points when recording is paused on iOS
- Fixed #453 - Recording with wav format never returns result
- Fixed #433 -
extractWaveformDatadoesn't return result on iOS - Fixed #455 - On android resuming audio recording returns false instead of true - thanks @yuanhoujun
-
2.0.019 Nov 2025Release notes
Open source →What's Changed
- chore: 🚀️ Add new awesome contributors by @ujas-m-simformsolutions in #406
- fix: 🐛 Fix left most visible wave is clipped in half when recording by @priyanshu-simformsolutions in #410
- fix: 🐛 Fix calling preparePlayer again does not cancel old waveform extraction by @priyanshu-simformsolutions in #414
- chore: ✨Add stop extraction method and asynchronous working for waveform extraction in ios by @priyanshu-simformsolutions in #415
- feat: ✨Add waveform extraction controller by @priyanshu-simformsolutions in #416
- feat: ✨Add RecordSettings model for all the recording settings by @priyanshu-simformsolutions in #417
- Upgrade gradle version and Remove unnecessary library by @priyanshu-simformsolutions in #411
- fix: 🐛️ call result in setFinishMode to resolve Flutter Future by @n-kulic in #420
- fix: 🐛️ Waveform extraction stuck at 99% by @ujas-m-simformsolutions in #408
- feat: ✨️️ Added onTapDown gesture by @ujas-m-simformsolutions in #413
- chore: ⚡️ Preemptively add try catch for AVAudioFile initialization by @ujas-m-simformsolutions in #405
- chore: ⚡️️ Preemptively account for invalid input buffer and 🐛 don't send error if already sent by @ujas-m-simformsolutions in #409
- Fix URL Audio Playback by Preserving Full URLs by @KTBsomen in #438
- fix: 🐛 Android crash codec is released already by @ujas-m-simformsolutions in #431
- feat: ✨ Add support bytes stream for ios by @ujas-m-simformsolutions in #422
- feat: ✨ Change audio recorder class for android to support bytes stream and better support for encoders by @ujas-m-simformsolutions in #421
- fix: 🐛 Audio recording waveform not displaying on iOS by @dhyash-simform in #444
- fix: 🐛 Fix an issue where recording audio caused an exception when running in a loop by @dhyash-simform in #446
- chore: ♻️ Update example app by @ujas-m-simformsolutions in #450
- docs: 📚 Add comprehensive documentation for Audio Waveforms package by @ujas-m-simformsolutions in #449
- chore: 📝 Update readme and changelog by @ujas-m-simformsolutions in #447
- fix: 🐛 Update demo preview image to version 2.0.0 by @ujas-m-simformsolutions in #451
New Contributors
- @priyanshu-simformsolutions made their first contribution in #410
- @n-kulic made their first contribution in #420
- @KTBsomen made their first contribution in #438
- @dhyash-simform made their first contribution in #444
Full Changelog: 1.3.0...2.0.0
Release notes
Open source →- Fixed #350 - Left most visible wave is clipped in half when recording.
- Fixed #397 - iOS crashes at
extractWaveforminstead provide error log - Fixed #390 - Setting continuousWaveform to false not working
- Feature #415 - Add stop extraction method and asynchronous extraction of waveform in ios
- Feature #204 - Move play head position with waveform gesture
onTapDown. - Chore #375 - Don't send error if already sent
- Chore #376 - Preemptively account for invalid input buffer
- BREAKING: Fixed #412 - Calling preparePlayer again does not cancel old waveform extraction.
- BREAKING: Feature #416 - Add waveform extraction controller.
- BREAKING: Rename
tapUpUpdateDetailstoonTapUp. - BREAKING:
- Remove duplicate parameters from RecorderController.
- Add
RecorderSettingsmodel for all the recording settings.
-
1.3.006 Mar 2025Release notes
Open source →What's Changed
- fix: 🩹 On permission denied isRecording flag changed by @jay-simformsolutions in #386
- feat:✨ Provide a callback of drag,tap,start and end details on user gesture by @jay-simformsolutions in #387
- fix: 🐛 Getting error on dispose(Cannot add new events after calling c… by @himanshuGandhiSimform in #379
- fix: 🐛 Added support for Ios Linear PCM Codec by @manoj-simform in #389
- fix: 🐛 Update codec issue while recording audio on android by @manoj-simform in #391
- feat: ✨ Add a method to pause all players at once by @himanshuGandhiSimform in #372
- chore: 📝 Fix readme typo by @ujas-m-simformsolutions in #403
- fix: 🐛 live wave gradient not getting applied by @ujas-m-simformsolutions in #404
New Contributors
- @manoj-simform made their first contribution in #389
Full Changelog: 1.2.0...1.3.0
Release notes
Open source →- Fixed #386 - On permission denied isRecording flag changed
- Feat #384 - Provide a callback of drag,tap,start and end details on user gesture
- Feat #309 - Added support for Liner PCM codec in iOS
- Fixed #291 - Codec issue while recording audio on android
- Fixed #391 - Wrong codec selection on the platform side on Android
- Fixed #389 - Wrong codec selection on the platform side on iOS
- Feat #325 - Added feature to pause all player controller at once.
- Fixed #373 - Getting error on dispose
- Fixed #395 - Live wave gradient not getting applied
-
1.2.002 Dec 2024Release notes
Open source →What's Changed
- 🩹 bugfix - 350 - Waveform clipping at starting position by @jay-simformsolutions in #351
- chore: Better explain feature of the plugin by @ujas-m-simformsolutions in #345
- fix: 🩹 iOS audio plays without sound (#349) by @jay-simformsolutions in #357
- fix: ✏️ remove extra quote by @ujas-m-simformsolutions in #361
- Revert "fix: ✏️ remove extra quote (#361)" by @ujas-m-simformsolutions in #362
- Update SwiftAudioWaveformsPlugin.swift by @talhakhan1297 in #359
- update return type of result when user stop the audio player by @himanshuGandhiSimform in #283
- fix: 🐛 seekTo position issue where onDrag of waveform first-wave outside the seekLine by @jay-simformsolutions in #364
- fix: 🐛 Cannot catch error of preparePlayer (#301) by @jay-simformsolutions in #368
- bugfix - 228 - add setReleaseMode method for manage player state by @himanshuGandhiSimform in #269
- memo: 📝 Update CHANGELOG.md by @jay-simformsolutions in #369
- Change and up package version in CHANGELOG.md by @jay-simformsolutions in #370
- memo: 📝 Update CHANGELOG.md by @jay-simformsolutions in #371
New Contributors
- @talhakhan1297 made their first contribution in #359
Full Changelog: 1.1.1...1.2.0
Release notes
Open source →- Fixed #350 - Waveform clipping at starting position
- Chore #304 - Improved Documentation.
- Fixed #349 - iOS audio plays without sound
- Fixed #364 - seekTo position issue where onDrag of waveform at initial position first wave outside the seekLine.
- Fixed #301 - Cannot catch error of preparePlayer
- Fixes #228 - Added feature to setReleaseMode for player controller.
-
1.1.123 Oct 2024Release notes
Open source →What's Changed
- Fix return type for stopAllPlayers on PlayerController by @mattbajorek in #331
- Send current duration when seeked, paused, or stopped by @mattbajorek in #320
- fix: 🐛 Enable seek gesture in paused mode by @himanshuGandhiSimform in #272
- 🩹 Downgrade flutter_lint version by @jay-simformsolutions in #348
Full Changelog: 1.1.0...1.1.1
-
1.1.011 Oct 2024Release notes
Open source →What's Changed
- Upgrade the flutter version by @himanshuGandhiSimform in #278
- feat: ✨ Add a flag to control overridden AVAudioSession Config for ios by @Ujas-Majithiya in #289
- Use the
shortHashof the key instead oftoString()by @AlexV525 in #310 - Fix incorrect import for shortHash by @mattbajorek in #312
- Auto start permission on iOS by waiting for response after user confirms or denies by @mattbajorek in #313
- Only dispose of instance if all playerKeys are removed by @mattbajorek in #317
- ⬇️ Downgrade flutter version to save from breaking changes by @jay-simformsolutions in #329
- Update flutter and dart version by @himanshuGandhiSimform in #343
- Upgrade package version by @himanshuGandhiSimform in #344
New Contributors
- @AlexV525 made their first contribution in #310
- @mattbajorek made their first contribution in #312
- @jay-simformsolutions made their first contribution in #329
Full Changelog: 1.0.5...1.1.0
Release notes
Open source →- Update flutter and dart version
- Fixed #256 - Default audio session config causing expected behavior for IOS.
- Fixed #303 - All player has same instances - thanks @AlexV525
- Fixed incorrect import for shortHash - thanks @mattbajorek
- Fixed Auto start permission on iOS by waiting for response after user confirms or denies - thanks @mattbajorek
- Fixed Dispose of instance if all playerKeys are removed - thanks @mattbajorek
-
1.0.505 Mar 2024Release notes
Open source →What's Changed
- AppCenter update by @ujas-m-simformsolutions in #216
- ⏪ Revert "AppCenter update" by @Ujas-Majithiya in #218
- ✨ Upgrade Gradle by @Kashifalaliwala in #241
- 🐛 Fixed last wave flickering and minor docs update by @ujas-m-simformsolutions in #197
- bugFix - Android recording doesn't work the first time after granting… by @himanshuGandhiSimform in #265
- bugfix - 230/Stop player should not be freed the resources by @himanshuGandhiSimform in #268
- fix: 🐛 IOS Recorder without path not working by @ujas-m-simformsolutions in #242
- fix: 🐛 unnecessary rendering by @ujas-m-simformsolutions in #243
- Fixed waveform for audios under 1 second not being extractable on Android by @mschudt in #259
- Stopping a recording immediately after starting it throws multiple exceptions on Android by @mschudt in #260
- Implement audio speed by @Zubii12 in #196
- Update change log and update package version by @himanshuGandhiSimform in #274
- fix: 🚨 Update linter and fixed pana warnings by @ujas-m-simformsolutions in #275
- chore: ♻️ Format code by @ujas-m-simformsolutions in #276
New Contributors
- @Kashifalaliwala made their first contribution in #241
- @himanshuGandhiSimform made their first contribution in #265
- @mschudt made their first contribution in #259
- @Zubii12 made their first contribution in #196
Full Changelog: 1.0.4...1.0.5
Release notes
Open source →- Updated gradle file
- Fixed #232 - Last wave flickering
- Fixed #252 - Android recording doesn't work the first time after granting permissions
- Fixed #230 - Stop player should not be freed the resources
- Fixed #165 - IOS recorder without path not working
- Fixed #232 - Unnecessary rendering
- Added ability to change audio speed - thanks @Zubii12
- Fixed stopping a recording immediately after starting it throws multiple exceptions on Android - thanks @mschudt
- Fixed waveform for audios under 1 second not being extractable on Android - thanks @mschudt
- Minor update to docs
-
1.0.414 Apr 2023Release notes
Open source →What's Changed
- 🐛 Do not call
notifyListeners()when disposed by @ujas-m-simformsolutions in #172 - ✨ Allow users to update reported duration for smoothening wave progress animation by @ujas-m-simformsolutions in #178
- 🗑️ Depreciated
normalizationFactorby @ujas-m-simformsolutions in #207
Full Changelog: 1.0.3...1.0.4
- 🐛 Do not call
-
1.0.306 Mar 2023Release notes
Open source →What's Changed
- fix:Failed to stop recording #163 by @linchen00 in #167
- 📝 Update changelog for latest release by @ujas-m-simformsolutions in #169
- 📝 Update version by @ujas-m-simformsolutions in #170
New Contributors
- @linchen00 made their first contribution in #167
Full Changelog: 1.0.2...1.0.3
-
1.0.220 Feb 2023Release notes
Open source →- Now, calling
stopAllPlayersis not mandatory for disposing streams and it will also not dispose controller. With last remaining player they will be disposed (Streams can be re-initialised by creating a new PlayerController). - Added legacy normalization with this fixed #144.
- Added
onRecorderStateChangedstream to monitor Recorder state changes. - Added
onCurrentDurationstream to get latest recorded audio duration. - Added
onRecordingEndedstream to get recorded audio file duration. Fixes #157.
- Now, calling
-
1.0.112 Jan 2023 -
1.0.020 Dec 2022Release notes
Open source →- Reworked waveforms from audio file
- Breaking: removed
readingCompletePlayerState andvisualizerHeight. With this, addedextractWaveformsfunction to extract waveforms. - Added
WaveformTypeenum for selecting longer or shorter type of waveform. - Added
onCurrentExtractedWaveformDataandonExtractionProgressto monitor progress and currently extracted waveform data. - improved drawing of waveforms.
- Added function to calculate no of waveform bars which will fit in provided width and spacing.
- Added
scrollScaleparameter to scale waves when waves are scrolled
- Breaking: removed
- Fixed #101 - Fixed setting volume for android throws error
- Fixed zero duration would cause waveforms not to expand
- Fixed
postFrameCallbackerror for flutter version below 3.0.0 - BREAKING: Replaced
normalizationFactorwithscaleFactorand with this fixed #43 - Updated default values for bitRate and sampleRate
- Encoders, sample rate and bit rate can now Directly be set from
recordfunction. - Bitrate is now nullable and default audio extension is now
m4a. - Updated example app
- Reworked waveforms from audio file
-
0.1.509 Sep 2022Release notes
Open source →- Added bitRate feature for Android & IOS (Default to 64kbps) - thanks @abhay-s-rawat.
- Fixed #86 - thanks @rlee1990
- Updated docs and fixed docs,variable name,function names typos
-
0.1.5+112 Sep 2022 -
0.1.401 Aug 2022 -
0.1.328 Jul 2022Release notes
Open source →- Fixed #41 & #49 - Upgrade Package with flutter 3.0.
- Fixed #50 & #57 & #65 - android build error fixed
- Fixed ios resume recording issue
- Fixed player state not getting update when playing is finished by providing PlayerState stream.
- Added current duration stream for PlayerController.
- BREAKING: Replaced
seekToStartparameter fromstartPlayer()withFinishModeenum for better controls when audio is finished - BREAKING: Renamed
disposeFunc()to simplerdispose()for both controllers - Internal native restructure.
- Minor documentation update.
-
0.1.103 May 2022 -
0.0.322 Mar 2022 -
0.0.3+122 Mar 2022 -
0.0.3+223 Mar 2022 -
0.0.222 Mar 2022 -
0.0.122 Mar 2022