1 unstable release

0.0.0 Mar 23, 2023

#2 in #festival


Used in festival-gui

MIT license

3MB
3K SLoC

Festival

Music player for Windows/macOS/Linux.

Build

Tests

crates.io

docs.rs



Comparison

For context on these graphs (there are always trade-offs), see cmp/.

Input data:

  • 135 Artists
  • 500 Albums
  • 7000 Songs
  • 170GB total disk space

Frontends

Frontend Released Description
festival-gui 🔴 egui GUI
festival-web 🔴 WASM version of egui GUI
festivald 🔴 Daemon (mpd-like)
festival-cli 🔴 CLI client that connects to festivald

Documentation

For a broad overview of Festival's internals, see src/.

Documentation is also available on docs.rs.

The crate festival is being squatted, so instead, Festival's original name, shukusai, is the name used to represent Festival internals.

祝祭/shukusai translated means: Festival.

In documentation:

  • shukusai specifically means Festival's internals
  • Festival means a frontend OR the project as a whole

Build

General Info

You need cargo.

Building in this repo currently means building festival-gui. The produced binary is named festival.

There are 30 unit tests, you may want to run:

cargo test

before attempting a full build.


Linux

The pre-compiled Linux binaries are built on Debian 11, you'll need these packages to build:

sudo apt install build-essential cmake libgtk-3-dev

After that, run:

cargo build --release

macOS

On macOS, if you want the binary to have an icon, you must install cargo-bundle.

After that, run:

cargo bundle --release

This bundles Festival into Festival.app, the way it comes in the pre-built tars for macOS.


Windows

cargo build --release

There is a build.rs file in the repo solely for Windows-specific things:

  1. It sets the icon in File Explorer
  2. It statically links VCRUNTIME140.dll (the binary will not be portable without this)

License

All of Festival is licensed under the MIT License.

All of the fonts Festival uses:

Font License
Adobe Source Code Pro OFL-1.1
Adobe Source Han Sans OFL-1.1
JuliaMono OFL-1.1
Emoji Icon Font MIT
Noto-Emoji OFL-1.1
Hack MIT
Ubuntu Ubuntu Font License

All of the libraries Festival (directly) uses:

Library Purpose License
anyhow Error handling MIT & Apache-2.0
chrono Time formatting MIT & Apache-2.0
crossbeam_channel Thread message passing MIT & Apache-2.0
disk Saving to disk MIT
egui GUI MIT & Apache-2.0
egui_extras GUI MIT & Apache-2.0
eframe GUI MIT & Apache-2.0
egui-notify GUI MIT
env_logger Logging MIT & Apache-2.0
fast_image_resize Image processing MIT & Apache-2.0
image Image processing MIT
infer File MIME detection MIT
lazy_static Lazy static macro MIT & Apache-2.0
lofty Audio metadata parsing MIT & Apache-2.0
log Logging MIT & Apache-2.0
notify Filesystem watching Artistic License 2.0 & CC Zero 1.0
mime_guess File MIME detection MIT
rand RNG MIT & Apache-2.0
rfd Native file dialog MIT
serde (De)serialization MIT & Apache-2.0
serde_bytes (De)serialization MIT & Apache-2.0
souvlaki Native media controls MIT
strsim String similarity MIT
Symphonia Audio demuxing, decoding MPL-2.0
readable Human readable data MIT
rolock Read only lock MIT
walkdir Recursive PATH walking MIT & Unlicense

Dependencies

~27–71MB
~1M SLoC