Giter VIP home page Giter VIP logo

jsqsystemsoundplayer's Introduction

JSQSystemSoundPlayer

Build Status Version Status license MIT codecov.io Platform Carthage compatible

A fancy Obj-C wrapper for Cocoa System Sound Services, for iOS and OS X.

About

This library is a light-weight component to play sound effects in your app. To determine your audio needs, see Best Practices for iOS Audio.

tl;dr

When your sole audio need is to play alerts and user-interface sound effects, use Core Audio’s System Sound Services.

Your sound files must be:

  • No longer than 30 seconds in duration
  • In linear PCM or IMA4 (IMA/ADPCM) format
  • Packaged in a .caf, .aif, or .wav file

If this does not fit your needs, then this library is not for you! See AVAudioPlayer, instead.

screenshot ios     screenshot osx

Features

  • Play sound effects and alert sounds with a single line of code
  • "Play" vibration (if available on device)
  • Block-based completion handlers
  • Integration with NSUserDefaults to globally toggle sound effects in your app
  • Efficient memory management
  • Caches sounds (SystemSoundID instances) and purges on memory warning
  • Works with Swift!

Requirements

  • iOS 6.0+
  • OS X 10.7+
  • tvOS 9.0+
  • ARC

Installation

CocoaPods (recommended)

pod 'JSQSystemSoundPlayer'
github "jessesquires/JSQSystemSoundPlayer"

Getting Started

@import JSQSystemSoundPlayer;

Playing sounds

[[JSQSystemSoundPlayer sharedPlayer] playSoundWithFilename:@"mySoundFile"
                                             fileExtension:kJSQSystemSoundTypeAIF
                                                completion:^{
                                                   // completion block code
                                                }];

String constants for file extensions provided for you:

  • kJSQSystemSoundTypeCAF
  • kJSQSystemSoundTypeAIF
  • kJSQSystemSoundTypeAIFF
  • kJSQSystemSoundTypeWAV

Toggle sounds effects settings on/off

Need a setting in your app's preferences to toggle sound effects on/off? JSQSystemSoundPlayer can do that, too! There's no need to ever check the saved settings ([JSQSystemSoundPlayer sharedPlayer].on) before you play a sound effect. Just play a sound like in the example above. JSQSystemSoundPlayer respects whatever setting has been previously saved.

[[JSQSystemSoundPlayer sharedPlayer] toggleSoundPlayerOn:YES];

Specifying a bundle

Need to load your audio resources from a specific bundle? JSQSystemSoundPlayer uses the main bundle by default, but you can specify another.

NOTE: for each sound that is played JSQSystemSoundPlayer will always search the last specified bundle. If you are playing sound effects from multiple bundles, you will need to specify the bundle before playing each sound.

[JSQSystemSoundPlayer sharedPlayer].bundle = [NSBundle mainBundle];

Demo project

The included example app, Example.xcodeproj, exercises all functionality of this framework. There are applications for iOS as well as OS X.

Documentation

Read the docs. Generated with jazzy. Hosted by GitHub Pages. More information on the gh-pages branch.

Contribute

Please follow these sweet contribution guidelines.

Credits

Created and maintained by @jesse_squires.

License

JSQSystemSoundPlayer is released under an MIT License. See LICENSE for details.

Copyright © 2013-present Jesse Squires.

Please provide attribution, it is greatly appreciated.

jsqsystemsoundplayer's People

Contributors

jessesquires avatar rodionovd avatar bitdeli-chef avatar

Watchers

James Cloos avatar 时点软件冯成林 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.