Skip to content

Music Caster is a modern music player with the ability to cast audio files, system audio, and URLs to Google Chromecasts, Google Home/Nest Minis, etc.

License

Notifications You must be signed in to change notification settings

elibroftw/music-caster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

70e6676 · Mar 10, 2025
Apr 18, 2024
Nov 9, 2024
Oct 7, 2024
Oct 8, 2024
Mar 10, 2025
Mar 3, 2025
Mar 3, 2025
Mar 10, 2025
Mar 3, 2025
Apr 26, 2021
Mar 9, 2025
Nov 12, 2023
Mar 9, 2025
Apr 2, 2024
Nov 12, 2023
Mar 3, 2025
Nov 12, 2023
Apr 2, 2024
Jun 26, 2024
Mar 9, 2025

Repository files navigation

GitHub Releases Source Forge

Music Caster is a modern music player with the ability to cast audio files, system audio, and URLs to Google Chromecasts, Google Home/Nest Minis, etc.

Display languages: English, German, Spanish, French, Italian, Dutch, Russian*, and Ukrainian*

Unique users as of April 23rd 2023: 3,800

Screenshots

Donate or Translate

  • monero:84PR6SkYd5zaFLKDjAFrQfbaAg2c7SV3q3XDZ15QCpEZUggrN4YzY7n8m9XC3deXjo41yWHTm1LrsUpPTYGnRQbD9Cwp8En
  • PayPal
  • Translate Music Caster to other languages

Install

  • IMPORTANT INFORMATION: The tray icon will be in the tray, so you will need to move it to your taskbar
  • Command line installation: winget install "Music Caster"
  • VirusTotal scan
    • If Music Caster is auto-removed, open "Virus & threat protection", then "protection history," and restore all files related to Music Caster

Linux

Not maintained, but I did get it to work on Ubuntu once. Music Caster is not straight forward to package, so you can invoke a sudo-free install script.

mkdir -p ~/bin && git clone --depth 1 https://github.com/elibroftw/music-caster.git ~/bin/music-caster
cd ~/bin/music-caster
./linux_install.sh # use sudo for non-interactive install in case a dependency needs to be installed

Demo

Music Caster Video Demo Thumbnail

Limitations

  • Chromecasts only support the AAC version of WMA files
  • Emojis might not work well. There's always settings.json + WEB GUI though
  • Road Map

Power User Features

Here are Music Caster specific keyboard shortcuts aside from the global media hot-keys.

Shortcut Window Behaviour
Ctrl + Shift + Alt + M Global Activate Main Window
Ctrl + (Shift) + } Main Toggle mini-mode
Esc Main Close Window
Ctrl + Shift + Q Main Exit Program
Scroll Main Volume and Progress Bar
⬆ / A Main Decrease Volume by 5%
⬇ / D Main Increase Volume by 5%
# Main Set Volume to # * 10%
K Main Pause / Resume / Start Playing
Shift + N Main Next Track
Shift + P / Shift + B Main Previous Track
J Main Rewind 5 seconds
L Main Fast-forward 5 seconds
Ctrl + R Main Cycle Repeat
Ctrl + M Main Mute
Ctrl + 1 Main Go to Tab 1 (Queue)
Ctrl + 2 Main Go to Tab 2 (URL)
Ctrl + 3 Main Go to Tab 3 (Library)
Ctrl + 4 Main Go to Tab 4 (Playlists)
Ctrl + 5 Main Go to Tab 5 (Timer)
Ctrl + 6 Main Go to Tab 6 (Metadata)
Ctrl + 7 Main Go to Tab 7 (Settings)

Editing settings.json

  • I do not recommend editing unless you know what you are doing
  • Music Caster will detect changes within 10 seconds of editing settings.json
  • Some settings values are hidden from the GUI for good reason

Data Collection / Privacy Policy

Below is the reasonable data that is collected when errors are encountered. I'm sure other programs collect way more than necessary.

# in handle_exception,
payload = {'VERSION': VERSION, 'FATAL': restart_program, 'EXCEPTION TYPE': exc_type.__name__,
           'LINE': exc_tb.tb_lineno, 'TRACEBACK': trace_back_msg, 'LOG': log_lines,
           'MQ[0]': playing_uri, 'PLAYING_STATUS': str(playing_status), 'DEVICE': device,
           'CWD': os.getcwd(), 'PORTABLE': not os.path.exists(UNINSTALLER),
           'MAC': hashlib.md5(get_mac().encode()).hexdigest(), 'OS': platform.platform(), 'TIME': current_time}

In addition, I collect MD5 hashed MAC addresses and IP addresses in a Google Excel Sheet. Only I have access to this data, I will NEVER give it to anyone else. Will stop collecting analytics once I stop caring about the number of users.

  • Hashed MAC so that I know how many users without knowing the actual MAC addresses
  • IP because I can map out the IPs to a visual map to see where my users are located

Developer Guide

Linux Build Guide

  • Define correct PY variable (requires rebuilding the image)
  • Obtain the mc-builder Image
    • Option A: docker pull elibroftw/mc-builder
    • Option B: docker build . -t elibroftw/mc-builder
      • Remember to have Docker desktop/daemon running already
  • Build source code using: docker run --rm --volume .:/var/music-caster elibroftw/mc-builder

Virtualenv

python3.12 -m venv .venv
.venv\Scripts\activate     # Windows
source .venv/bin/activate  # Non-Windows

Resources