Skip to content
No description, website, or topics provided.
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.

bitrise CI platforms Swift Package Manager compatible


What is this repository for?

  • ConnectorProtocol is a generic protocol specification to control a network based music player for Swift. The protocol abstracts a player specific implementation from a client implementation, which allows to have a single client that supports multiple player types.
  • MPDConnector is a full implementation of this protocol for the MPD protocol:
  • These two frameworks are the foundation of the Rigelian MPD client, for more info see

What are the building blocks of this Protocol?

  • The protocol relies heavily on reactive constructs, using RxSwift.
  • ConnectorProtocol consist of five sub-protocols: * PlayerProtocol defines a basic player, access status, control and browse implementation, plus functions to maintain player-specific settings. * PlayerBrowserProtocol is a generic protocol to detect players on the network. * StatusProtocol is a protocol through which the connection status of a player, as well as the music-playing status can be monitored. * ControlProtocol is a protocol through which commands can be sent to a player, like play, pause, add a song etc. * BrowseProtocol is a protocol through which you can browse through the music on a player. It defines various ViewModels for artists, albums, genres etc.
  • A number of basic objects are defined:
    • Album
    • Artist
    • Song
    • Playlist
    • Folder
    • PlayerStatus
  • The protocol is meant to be independent of the target platform (iOS, MacOS, tvOS). However testing is only done on iOS.


  • Xcode 11
  • Swift 5.0


libmpdclient-swift is dependent on RxSwift.

Build and usage via swift package manager is supported:

Swift Package Manager

The easiest way to add the library is directly from within XCode (11). Alternatively you can create a Package.swift file.

// swift-tools-version:5.0

import PackageDescription

let package = Package(
  name: "MyProject",
  dependencies: [
  .package(url: "", from: "1.7.0")
  targets: [
    .target(name: "MyProject", dependencies: ["connectorprotocol"])


  • A very limited set of unit tests is included.

Who do I talk to?

  • In case of questions you can contact berrie at rigelian dot net
You can’t perform that action at this time.