Giter Club home page Giter Club logo

shairport-view-rs's Introduction

Shairport View RS

shairport-view-rs produces a set of executables for displaying audio metadata generated by the shairport-sync project.

This project aims to create a simple and efficient display of streamed audio metadata that can run smoothly on low-power machines like Raspberry Pi boards.

Contains:

  • shairport_view_cli: Prints metadata to stdout
  • shairport_view_gui: Displays metadata in an FLTK window

Both tools will read metadata from a pipe if the pipe's path is specified as a command line argument. Otherwise, they will read from stdin.

How to use this code:

Compiling:

Install Rust, then use its cargo build --release or cargo run --release commands. By default, both executables will be built. You can use --bin to only compile/run one

On some systems, you may need to run the following command to get the FLTK crate to work (I had to on my Raspbian OS install):

sudo apt-get install libx11-dev libxext-dev libxft-dev libxinerama-dev libxcursor-dev libxrender-dev libxfixes-dev libpango1.0-dev libgl1-mesa-dev libglu1-mesa-dev

Running:

Use cargo run --release or run an executable previously built in target/release/

You will need to specify the source FIFO path as a command line argument. /tmp/shairport-sync-metadata is the default path used by shairport-sync when built and run with metadata features.

Development:

If you don't have access to a running install of shairport-sync, you can still try out shairport-view-rs with the included metadata_gen_demo Bash script. This script will create a FIFO and write some fake metadata to it. This is especially handy for development on Mac OS, where shairport-sync won't run due to Macs already having AirPlay features.

Future Improvements:

  • The GUI is primitive and could use sprucing up
    • Addition of Album metadata(?) and icons indicating track, album, and artist. Maybe make album metadata toggleable.
    • Replace grey background with most common album color, or gradient from top color to bottom color, or maybe a blown up and blurred version of the art
    • Make track and artist text y position change based on window size
    • Handle text overflow. Maybe reposition and wrap? Or crop / crop and scroll?
  • It looks like there is metadata from shairport-sync for song progress. I'm not sure how to decode it but it could possibly be used for a song progress bar.

shairport-view-rs's People

Contributors

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