Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adamcichy/swiftysound
SwiftySound is a simple library that lets you play sounds with a single line of code.
https://github.com/adamcichy/swiftysound
audio carthage cocoapods ios loop macos play-sounds player sound spm swift swifty-sound tvos xcode
Last synced: 2 days ago
JSON representation
SwiftySound is a simple library that lets you play sounds with a single line of code.
- Host: GitHub
- URL: https://github.com/adamcichy/swiftysound
- Owner: adamcichy
- License: mit
- Created: 2017-02-21T16:17:06.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-03-09T23:38:28.000Z (10 months ago)
- Last Synced: 2024-12-21T01:05:27.681Z (2 days ago)
- Topics: audio, carthage, cocoapods, ios, loop, macos, play-sounds, player, sound, spm, swift, swifty-sound, tvos, xcode
- Language: Swift
- Homepage:
- Size: 7.53 MB
- Stars: 1,249
- Watchers: 24
- Forks: 100
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
## SwiftySound
[![CocoaPods License](https://img.shields.io/cocoapods/l/SwiftySound.svg)](https://raw.githubusercontent.com/adamcichy/SwiftySound/master/LICENSE)
[![CocoaPods](https://img.shields.io/cocoapods/v/SwiftySound.svg)](https://cocoapods.org/pods/SwiftySound)
[![CocoaPods Platforms](https://img.shields.io/cocoapods/p/SwiftySound.svg)](https://cocoapods.org/pods/SwiftySound)
[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg)](https://github.com/Carthage/Carthage)
[![SPM ready](https://img.shields.io/badge/SPM-ready-orange.svg)](https://swift.org/package-manager/)
[![codebeat](https://codebeat.co/badges/b51bedad-3c13-4ef2-a632-5c4e3d4fa759)](https://codebeat.co/projects/github-com-adamcichy-swiftysound-master)## Overview
SwiftySound is a simple library that lets you deal with Swift sounds easily.##### Static methods
```swift
Sound.play(file: "dog.wav")
``````swift
Sound.play(url: fileURL)
```More advanced example:
```swift
Sound.play(file: "dog", fileExtension: "wav", numberOfLoops: 2)
```
The above will play the sound three times.Specify a negative number of loops to play the sound continously in an infinite loop:
```swift
Sound.play(file: "dog", fileExtension: "wav", numberOfLoops: -1)
```Stop currently playing sounds:
```swift
Sound.stopAll()
```Enable/disable all sounds:
```swift
Sound.enabled = true
Sound.enabled = false
```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:
```swift
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.
```swift
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.
```swift
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.
```swift
mySound.play { completed in
print("completed: \(completed)")
}
```The callback is not called if the sound was stopped, interrupted or in case of a playback error.
## Features
- [x] Playing single sounds
- [x] Loops
- [x] Infinite loops
- [x] Playing the same sound multiple times simultaneously
- [x] Stopping all sounds with a global static method
- [x] Ability to pause and resume
- [x] Adjusting sound volume
- [x] Callbacks
- [x] Global static variable to enable/disable all sounds## Requirements
- Swift 5
- Xcode 15 or later
- iOS 12.0 or later
- tvOS 12.0 or later
- macOS 10.13 or laterFor 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`.
For Xcode 10 and iOS 9 support, please use SwiftySound version `1.2.0`.## Installation
### Installation with CocoaPods[CocoaPods](http://cocoapods.org/) is a dependency manager which automates and simplifies the process of using third-party libraries in your projects. See the [Get Started](http://cocoapods.org/#get_started) section for more details.
#### Podfile
```ruby
platform :ios, '12.0'
use_frameworks!
pod 'SwiftySound'
```
### Installation with Carthage
[Carthage](https://github.com/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](https://github.com/Carthage/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:
```swift
import PackageDescriptionlet package = Package(
name: "YourPackage",
dependencies: [
.Package(url: "https://github.com/adamcichy/SwiftySound.git",
majorVersion: 0)
]
)
```Then run `swift build` and wait for SPM to install SwiftySound.
### Manual installation
Drop the `Sound.swift` file into your project, link against `AVFoundation.framework` and you are ready to go.## Licenses
SwiftySound is licensed under the [MIT License](https://raw.githubusercontent.com/adamcichy/SwiftySound/master/LICENSE).