The value of Sound.enabled property will be automatically persisted in UserDefaults and restored on the next launch of your app.
Change sound categories. SwiftySound provides a simple way of changing sound category:
Sound.category = .ambient
This changes the category of the underlying shared AVAudioSession instance. The default value is SoundCategory.ambient. Due to AVAudioSession architecture, this property is not available on macOS.
Creating instances of Sound class
You can also create an instance of a Sound class and store it somewhere in your app.
let mySound = Sound(url: fileURL)
mySound.play()
Creating an instance has more benefits like the ability to adjust the volume and playback callbacks.
Change the volume
You can change the volume of each Sound instance.
mySound.volume = 0.5
The value of volume property should be between 0.0 and 1.0, where 1.0 is the maximum.
Callbacks
You can pass a callback to the play method. It will be played after the sound finished playing. For looped sounds, the callback will be called once after the last loop has been played.
mySound.play { completed in
print("completed: \(completed)")
}
Features
Playing single sounds
Loops
Infinite loops
Playing the same sound multiple times simultaneously
Stopping all sounds with a global static method
Ability to pause and resume
Adjusting sound volume
Callbacks
Global static variable to enable/disable all sounds
Requirements
Swift 5
Xcode 10.2 or later
iOS 8.0 or later
tvOS 9.0 or later
macOS 10.9 or later
For Xcode 8 and Swift 3 support, please use SwiftySound version 0.7.0.
For Xcode 9 and Swift 4 support, please use SwiftySound version 1.0.0.
Installation
Installation with CocoaPods
CocoaPods is a dependency manager which automates and simplifies the process of using third-party libraries in your projects. See the Get Started section for more details.
Podfile
platform :ios, '8.0'
use_frameworks!
pod 'SwiftySound'
Installation with Carthage
Carthage is a lightweight dependency manager for Swift and Objective-C. It leverages CocoaTouch modules and is less invasive than CocoaPods.
To install with carthage, follow the instruction on Carthage
Cartfile
github "adamcichy/SwiftySound"
Installation with Swift Package Manager
The Swift Package Manager is a tool for managing the distribution of Swift code. Just add the url of this repo to your Package.swift file as a dependency:
SwiftySound
Overview
SwiftySound is a simple library that lets you deal with Swift sounds easily.
Static methods
More advanced example:
The above will play the sound three times.
Specify a negative number of loops to play the sound continously in an infinite loop:
Stop currently playing sounds:
Enable/disable all sounds:
The value of
Sound.enabled
property will be automatically persisted inUserDefaults
and restored on the next launch of your app.Change sound categories. SwiftySound provides a simple way of changing sound category:
This changes the category of the underlying shared
AVAudioSession
instance. The default value isSoundCategory.ambient
. Due toAVAudioSession
architecture, this property is not available on macOS.Creating instances of Sound class
You can also create an instance of a Sound class and store it somewhere in your app.
Creating an instance has more benefits like the ability to adjust the volume and playback callbacks.
Change the volume
You can change the volume of each Sound instance.
The value of volume property should be between 0.0 and 1.0, where 1.0 is the maximum.
Callbacks
You can pass a callback to the
play
method. It will be played after the sound finished playing. For looped sounds, the callback will be called once after the last loop has been played.Features
Requirements
For Xcode 8 and Swift 3 support, please use SwiftySound version
0.7.0
. For Xcode 9 and Swift 4 support, please use SwiftySound version1.0.0
.Installation
Installation with CocoaPods
CocoaPods is a dependency manager which automates and simplifies the process of using third-party libraries in your projects. See the Get Started section for more details.
Podfile
Installation with Carthage
Carthage is a lightweight dependency manager for Swift and Objective-C. It leverages CocoaTouch modules and is less invasive than CocoaPods.
To install with carthage, follow the instruction on Carthage
Cartfile
Installation with Swift Package Manager
The Swift Package Manager is a tool for managing the distribution of Swift code. Just add the url of this repo to your
Package.swift
file as a dependency:Then run
swift build
and wait for SPM to install SwiftySound.Manual installation
Drop the
Sound.swift
file into your project, link againstAVFoundation.framework
and you are ready to go.Licenses
SwiftySound is licensed under the MIT License.