A MP3 music player built with egui and Rust, featuring a nostalgic 2000s-inspired interface. Bird Player is originally forked from music-player by notryanb and try to make it a serious daily-used music player. If you miss the golden era of desktop music players, this might be for you!
Warning
This project is still under active development and some features are not yet available. You may need to rebuild your playlist and library after the upgrade.
- 🎨 Retro-inspired UI built with egui, reminiscent of classic 2000s music players
- 📁 Local music library and playlist management with familiar browsing experience
- 🏷️ ID3 tag management and editing support for music metadata
- 📱 Cross-platform support
- Improve the resource usage and make it small and fast
- Add support for more audio formats
- Add support for batch tag editing
- Add support for lyrics searching and displaying
- Add support for speed control
- Implement a skin system
- Rust 1.70 or higher
- Cargo package manager
- Audio system libraries (see Audio Backends below)
- Clone the repository:
git clone https://github.com/yourusername/bird-player.git
cd bird-player
- Build the project:
# With PulseAudio support (recommended for Linux)
cargo build --release --features pulseaudio
# Without PulseAudio (using CPAL directly)
cargo build --release
The compiled binary will be available in target/release/bird-player
.
Bird Player supports different audio backends depending on your platform:
- Linux: PulseAudio (recommended) or CPAL with ALSA
- macOS: CoreAudio via CPAL
- Windows: Windows Audio Session API via CPAL
For detailed dependency requirements and troubleshooting, see AUDIO_BACKENDS.md.
- Launch Bird Player:
cargo run --release
- Use the file dialog to add your music directory
- Browse and play your music collection
- Enjoy your music with high-quality audio playback
Bird Player automatically saves your configuration and library state between sessions. The configuration file is stored in the standard system configuration directory using YAML format.
src/main.rs
: Application entry point and main logicsrc/output.rs
: Audio output handlingsrc/resampler.rs
: Audio resampling functionalitysrc/app/
: UI components and application state management
eframe
: GUI frameworkcpal
: Audio playbacksymphonia
: Audio decodingid3
: Music metadata handlingserde
: Configuration serialization- Other utilities for file management and audio processing
Contributions are welcome! Please feel free to submit a Pull Request.
The project is originally forked from music-player by notryanb. Thanks to all the Rust crate authors whose work made this project possible.