CLI music player
Find a file
2024-07-26 09:15:53 -04:00
proto refactor(cli): move paths to subcommands 2024-07-18 13:26:27 -04:00
src chore: remove cargo warnings 2024-07-26 09:15:53 -04:00
.gitignore build(cargo): init cargo project 2023-12-23 17:39:18 -03:00
build.rs feat(refactor): update basic grpc method 2024-04-24 10:26:14 -04:00
Cargo.toml feat: implement basic music player and grpc server 2024-07-17 11:21:56 -04:00
LICENSE Initial commit 2023-12-23 02:34:13 +00:00
README.md feat: implement basic music player and grpc server 2024-07-17 11:21:56 -04:00

Juno

Introduction

This is a CLI music player, It can play local music or remote stream and it can output the sound to the local sound server or as an HTTP stream. This is a standalone project but it also has a Web Client with further features.

This project is currently in development, to see the progress towards the next release check the milestone.

Features

  • Play local files or remote streams (like youtube streams).
  • Local or remote (HTTP) audio output.
  • MPRIS support
  • Dynamic server-client design:
    • On start it attach to a socket, a local unix file socket (default) or a port to allow for remote connections (MPD like).
    • If a second instance is invoque on the same socket, it will act as a client to the process running on that socket, allowing to modify the playback and exiting immediately (MPC like).
    • By default the server process will end when the queue is empty unless it's ran in "daemon" mode. This allows to continue using the clients to add more music later.

FAQ

Why Rust?

A core requirement is to handle and administrate masive music queues, so the project needs an efficient language, I also wanted a compiled language for easier binary distribution and dependency management. By the quote I read somewhere of "un-optimized Rust code is faster than optimized Go code", I decided to use Rust.

Why the name?

TLDR

The name comes from Juno, the Persona of Fuuka Yamagishi in Persona 3. Fuka is also a complementary project for this music player.

Long Version

One of my first projects was a discord bot that acted as a frontend of MPD while also played the HTTP stream in the voice call.

I called the bot fuuka because you actually have to talk to the bot to ask for music like you do in the game. This is the 3rd iteration of the idea (and hopefully the definitive), so I decided to maintain the name in it's honor.

The project was split into 2 though:

  • Fuuka, the navi of SEES in Persona 3, you can ask her to change the musing in tartarus. It act as the frontend to interact with the player.
  • Juno, the persona of Fuuka that grants her the ability to communicate telepatically to her teamates. It act as the music player.

Contributing

Aside from rust and cargo, you need the following dependencies:

  • alsa-lib devel package
# fedora
dnf install -y alsa-lib-devel

  • Tonic protobuf dependencies
# fedora
dnf install -y protobuf-devel

Similar projects