Giter VIP home page Giter VIP logo

platune's Introduction

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.

platune's People

Contributors

aschey avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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.