Skip to content

aschey/platune

Repository files navigation

Platune

license CI codecov GitHub repo size Lines of Code

NOTE: This project is still in its early stages and many of these features do not work yet

Overview

Platune is a cross-platform music player that uses a client-server architecture over gRPC. It is both a complete solution and a set of modular components to allow users to create their own custom players. At its core, Platune is a set of protobuf definitions that create the contract. Any gRPC client or server that implements these protobufs will be compatible with the rest of the ecosystem.

Platune is split up into two independent modules - an audio player and a library manager. These two modules can be ran together as a single server or independently as two separate servers. This allows for a variety of setups such as using the Platune management server with a different audio player or setting up your own music server where a local Platune audio server can play music streamed from a remote Platune management server.

Structure

  • libplatune - Set of libraries containing business logic. Can be used to create custom servers.
    • management - Library for managing an audio database
    • player - Library for audio playback
  • platuned
    • client - Generated client stubs for multiple languages
    • server - gRPC server frontend for libplatune
  • platunectl - Management interface for the platuned system service
  • platune-cli - Hybrid CLI/TUI designed for quick and easy usage
  • platune-gui (not yet implemented) - Feature-rich graphical client
  • platune-tray (not yet implemented) - Simple tray-based client
  • platune-mobile (not yet implemented) - mobile app

Feature Overview

  • Advanced searching capabilities
  • Flexible tag system to allow for complex data organization
  • Cross-platform support
  • Support multi-boot setups via configurable drive mappings
  • Sync data between mobile and desktop
  • Mobile app functions as both a standalone player and a remote control
  • Custom audio visualizations
  • Gapless audio playback
  • Automatic filesystem syncing
  • Push-based architecture - all running clients should be notified and kept in sync with the current state of the server
  • Playback of local files and streaming over HTTP

Project Goals

  • Be simple to use with minimal configuration. Don't try to support every possible use case.
  • Follow the Unix Philosophy - the core code should be simple and extendable, non-essential functionality should be implemented separately.
  • Strive for compatiblity with established tools and protocols where possible.
  • Focus on file-based media playback, not third-party streaming services (integration with streaming services may be added via plugins in the future).
  • The GUI and CLI will support all essential features. Extra functionality may only be available on the GUI.

Comparison with MPD

MPD is a similar music player app that has been around for a while. MPD is mainly focused on playing music while Platune aims to be a complete solution for managing your music library. We also aim to be accessible for less tech-savvy users, support most features without the need for complex customizations, and require less configuration. Platune maintains a set of official clients that take advantage of all available functionality while MPD mainly relies on third-party clients. However, MPD is a much more stable and robust product that supports a variety of complex audio setups which will probably never be supported by Platune.