All Projects → fulldecent → Fdwaveformview

fulldecent / Fdwaveformview

Licence: mit
Reads an audio file and displays the waveform

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Fdwaveformview

Audiowave Progressbar
Lightweight audiowave progressbar for Android
Stars: ✭ 380 (-61.89%)
Mutual labels:  audio, waveform
Ffmpeg
Mirror of https://git.ffmpeg.org/ffmpeg.git
Stars: ✭ 27,382 (+2646.44%)
Mutual labels:  audio, multimedia
Mystiq
Qt5/C++ FFmpeg Media Converter
Stars: ✭ 393 (-60.58%)
Mutual labels:  audio, multimedia
Python Mpv
Python interface to the awesome mpv media player
Stars: ✭ 245 (-75.43%)
Mutual labels:  audio, multimedia
Waveform Playlist
Multitrack Web Audio editor and player with canvas waveform preview. Set cues, fades and shift multiple tracks in time. Record audio tracks or provide audio annotations. Export your mix to AudioBuffer or WAV! Project inspired by Audacity.
Stars: ✭ 919 (-7.82%)
Mutual labels:  audio, waveform
Vue Audio Visual
VueJS audio visualization components
Stars: ✭ 355 (-64.39%)
Mutual labels:  audio, waveform
Wavesurfer.js
Navigable waveform built on Web Audio and Canvas
Stars: ✭ 5,905 (+492.28%)
Mutual labels:  audio, waveform
Vudio.js
音频可视化展示模块
Stars: ✭ 194 (-80.54%)
Mutual labels:  audio, waveform
Mlt
MLT Multimedia Framework
Stars: ✭ 836 (-16.15%)
Mutual labels:  audio, multimedia
Sfml
Simple and Fast Multimedia Library
Stars: ✭ 7,316 (+633.8%)
Mutual labels:  audio, multimedia
Swiftffmpeg
A Swift wrapper for the FFmpeg API
Stars: ✭ 243 (-75.63%)
Mutual labels:  audio, multimedia
Blipkit
C library for creating the beautiful sound of old sound chips
Stars: ✭ 23 (-97.69%)
Mutual labels:  audio, waveform
Mpv
🎥 Command line video player
Stars: ✭ 17,018 (+1606.92%)
Mutual labels:  audio, multimedia
Sfml.net
Official binding of SFML for .Net languages
Stars: ✭ 354 (-64.49%)
Mutual labels:  audio, multimedia
Csfml
Official binding of SFML for C
Stars: ✭ 211 (-78.84%)
Mutual labels:  audio, multimedia
Rust Av
Multimedia Toolkit written in pure rust.
Stars: ✭ 411 (-58.78%)
Mutual labels:  audio, multimedia
Torch Audiomentations
Fast audio data augmentation in PyTorch. Inspired by audiomentations. Useful for deep learning.
Stars: ✭ 164 (-83.55%)
Mutual labels:  audio, waveform
Waveform analysis
Functions and scripts for analyzing waveforms, primarily audio. This is currently somewhat disorganized and unfinished.
Stars: ✭ 193 (-80.64%)
Mutual labels:  audio, waveform
Sincnet
SincNet is a neural architecture for efficiently processing raw audio samples.
Stars: ✭ 764 (-23.37%)
Mutual labels:  audio, waveform
Pipewire
Mirror of the PipeWire repository (see https://gitlab.freedesktop.org/pipewire/pipewire/)
Stars: ✭ 922 (-7.52%)
Mutual labels:  audio, multimedia

FDWaveformView

Build Status Version License Platform Carthage compatible

FDWaveformView is an easy way to display an audio waveform in your app. It is a nice visualization to show a playing audio file or to select a position in a file.

🐣 Virtual tip jar: https://amazon.com/hz/wishlist/ls/EE78A23EEGQB

Usage

To use it, add an FDWaveformView using Interface Builder or programmatically and then just load your audio as per this example. Note: if your audio file does not have file extension, see this SO question.

let thisBundle = Bundle(for: type(of: self))
let url = thisBundle.url(forResource: "Submarine", withExtension: "aiff")
self.waveform.audioURL = url

Features

Set play progress to highlight part of the waveform:

self.waveform.progressSamples = self.waveform.totalSamples / 2

Zoom in to show only part of the waveform, of course, zooming in will smoothly re-render to show progressively more detail:

self.waveform.zoomStartSamples = 0
self.waveform.zoomEndSamples = self.waveform.totalSamples / 4

Enable gestures for zooming in, panning around or scrubbing:

self.waveform.doesAllowScrubbing = true
self.waveform.doesAllowStretch = true
self.waveform.doesAllowScroll = true

Supports animation for changing properties:

UIView.animate(withDuration: 0.3) {
    let randomNumber = arc4random() % self.waveform.totalSamples
    self.waveform.progressSamples = randomNumber
}

Creates antialiased waveforms by drawing more pixels than are seen on screen. Also, if you resize me (autolayout) I will render more detail if necessary to avoid pixelation.

Supports iOS8+ and Swift 3.

Includes unit tests which run successfully using Travis CI.

Installation

Add this to your project using Swift Package Manager. In Xcode that is simply: File > Swift Packages > Add Package Dependency... and you're done. Alternative installations options are shown below for legacy projects.

Contributing

This project's layout is based on https://github.com/fulldecent/swift4-module-template If you would like to change the layout, please change that project FIRST. Also you may appreciate that project has "recipes" -- you don't just change code, you also explain why you are doing things. As a maintainer this makes my job MUCH simpler. In a similar respect, if you are introducing non-minor changes, it will be VERY helpful if you could please reference to another project (like AlamoFire) that has seen and discussed the types of design challenges you are touching.) Thanks again and we all really do appreciate your contributions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].