All Projects → indragiek → Snrmusickit

indragiek / Snrmusickit

All-in-one framework for browsing and playing music from various sources on iOS and OS X

SNRMusicKit

SNRMusicKit is an open source project that will become the backbone for Sonora and other music applications that we may build for the Mac and iOS platforms. This framework will consist of the following components that will create an all-in-one solution for building content rich music applications:

  • Content Sources: Services and applications that will provide content.
  • Players: Different audio players sharing a common interface to handle a wide variety of content formats.
  • Other Services: Objective-C interfaces to other commonly used services like Last.fm.

All local databases will be Core Data SQL databases, in addition to other persistent caching of artwork, etc. All networking code will be built on top of AFNetworking, specifically subclasses of AFHTTPClient.

The code and API will be as modern as possible, making use of blocks, GCD, and new Objective-C syntax. The current goal is to target OS X 10.7+ and iOS 5.0+ but that may change.

Contributing

Once the project is under way, I'd love contributions via pull requests. If you intend on making large additions or changes to the code, you may want to consult with me before beginning to ensure that we both agree that it is suitable for this library.

Compiling

  • Clone the git repository, and download the submodules using the following commands:
cd <repository path>
git submodule init
git submodule update

Additional Instructions for Mac Framework only

  • SFBAudioEngine requires some additional frameworks and libraries to compile that are not included in the repository. Download this archive, extract it, and put the Frameworks folder inside the SFBAudioEngine folder.
  • mogenerator needs to be installed to successfully compile.

Progress

Content Sources

Name iOS Mac Implemented
iTunes
MPMediaLibrary
Spotify

Players

Name iOS Mac Implemented
AVQueuePlayer
MPMusicPlayerController
SFBAudioEngine
Spotify SDK

Roadmap

Short term

  • iOS MPMediaLibrary content source implementation
  • Queue controller for playing a queue of songs
  • Cross platform artwork cache
  • Search protocols & implementation for MPMediaLibrary and Spotify
  • Last.fm engine for scrobbling (basically a polished version of SNRLastFMEngine built on AFNetworking)

Long term

  • 8tracks content source implementation

License

This library is licensed under the BSD License. All third party libraries used in the project must be licensed under BSD or a similarly unrestrictive license (ie. MIT is acceptable, GPL or any of its variants are not). By making contributions to this project, you are licensing your own additions under the BSD license as well. Any contributions licensed under anything else will not be accepted into the master repository (but feel free to keep them in your own fork).

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].