Skip to main content

A command-line music application for coders with daemon support, radio streaming, and AI-generated music

Project description

music-cli logo

music-cli

PyPI version Python 3.9+ License: MIT

music-cli AI demo

A command-line music player for coders. Background daemon with radio streaming, local MP3s, and AI-generated music.

music-cli play --mood focus    # Start focus music
music-cli pause                # Pause for meeting
music-cli resume               # Back to coding
music-cli status               # Check what's playing + inspirational quote

Installation

# Install from PyPI
pip install coder-music-cli

# Or with uv (faster)
uv pip install coder-music-cli

# Install FFmpeg (required)
brew install ffmpeg       # macOS
sudo apt install ffmpeg   # Ubuntu/Debian
choco install ffmpeg      # Windows (or: winget install ffmpeg)

Optional: AI Music Generation

pip install 'coder-music-cli[ai]'  # ~5GB (PyTorch + MusicGen via Transformers)

Features

  • Daemon-based - Persistent background playback
  • Multiple sources - Local files, radio streams, AI generation
  • Context-aware - Selects music based on time of day and mood
  • 35+ Radio Stations - Curated stations in English, French, Spanish, and Italian
  • AI Music Generation - Generate music with MusicGen (saved for replay)
  • Version-aware Updates - Automatic notification when new stations are available
  • Inspirational Quotes - Random music quotes with every status check
  • Simple config - Human-readable text files

Quick Start

# Play
music-cli play                    # Context-aware radio
music-cli play --mood focus       # Focus music
music-cli play -m local --auto    # Shuffle local library

# Control
music-cli pause | resume | stop | status

# Manage radio stations
music-cli radios                  # List all stations
music-cli radios play 5           # Play station #5
music-cli radios add              # Add new station

Commands

Command Description
play Start playing (radio/local/ai/history)
stop / pause / resume Playback control
status Current track, state, and inspirational quote
next Skip track (auto-play mode)
volume [0-100] Get/set volume
radios Manage radio stations (list/play/add/remove)
ai Manage AI-generated tracks (list/play/replay/remove)
history Playback log
moods Available mood tags
config Show configuration file locations
update-radios Update stations after version upgrade
daemon start|stop|status Daemon control

Radio Station Management

# List all stations with numbers
music-cli radios
music-cli radios list

# Play by station number
music-cli radios play 5

# Add a new station interactively
music-cli radios add

# Remove a station
music-cli radios remove 10

Pre-configured Stations

35 stations across 4 languages:

  • English: ChillHop, SomaFM (Groove Salad, Drone Zone, DEF CON, etc.), BBC Radio 3
  • French: FIP Radio, France Inter, France Musique, Mouv
  • Spanish: Salsa Radio, Tropical 100, Los 40 Principales, Cadena SER
  • Italian: Radio Italia, RTL 102.5, Radio 105, Virgin Radio Italy

Play Modes

# Radio (default)
music-cli play                     # Time-based selection
music-cli play -s "deep house"     # By station name
music-cli play --mood focus        # By mood

# Local
music-cli play -m local -s song.mp3
music-cli play -m local --auto     # Shuffle

# AI (requires [ai] extras)
music-cli play -m ai --mood happy -d 60

# History
music-cli play -m history -i 3     # Replay item #3

AI Music Generation

Generate unique music with Meta's MusicGen model:

# Install AI dependencies
pip install 'coder-music-cli[ai]'

# Generate and manage AI music
music-cli ai play                         # Context-aware generation
music-cli ai play -p "jazz piano"         # Custom prompt
music-cli ai play --mood focus -d 30      # 30-second focus track
music-cli ai list                         # List all generated tracks
music-cli ai replay 1                     # Replay track #1
music-cli ai remove 2                     # Delete track #2

AI Command Suite

Command Description
ai list Show all AI-generated tracks with prompts
ai play Generate music from current context
ai play -p "prompt" Generate with custom prompt
ai play --mood focus Generate with specific mood
ai play -d 30 Generate 30-second track (default: 5s)
ai replay <num> Replay track by number (regenerates if file missing)
ai remove <num> Delete track and audio file

Features:

  • Context-aware - Uses time of day, day of week, and session mood
  • Custom prompts - Generate exactly what you want with -p
  • Seamless looping - All tracks engineered for infinite playback
  • Track management - List, replay, and remove generated tracks
  • Regeneration - Missing files can be regenerated with original prompt
  • Animated feedback - "composing..." animation while generating
  • Persistent storage - Tracks saved to ~/.config/music-cli/ai_music/

Moods

focus happy sad excited relaxed energetic melancholic peaceful

Configuration

Configuration files location:

  • Linux/macOS: ~/.config/music-cli/
  • Windows: %LOCALAPPDATA%\music-cli\
File Purpose
config.toml Settings (volume, mood mappings, version)
radios.txt Station URLs (name|url format)
history.jsonl Play history
ai_tracks.json AI track metadata (prompts, durations)
ai_music/ AI-generated audio files

Version Updates

When you update music-cli, you'll be notified if new radio stations are available:

# Check and update stations
music-cli update-radios

# Options:
# [M] Merge   - Add new stations to your list (recommended)
# [O] Overwrite - Replace with new defaults (backs up old file)
# [K] Keep    - Keep your current stations unchanged

Add Custom Stations

# Interactive
music-cli radios add

# Or edit directly: ~/.config/music-cli/radios.txt
ChillHop|https://streams.example.com/chillhop.mp3
Jazz FM|https://streams.example.com/jazz.mp3

Status & Quotes

The status command shows playback info plus a random inspirational quote:

$ music-cli status
Status:  playing
Track: Groove Salad [radio]
Volume: 80%
Context: morning / weekday

"Music gives a soul to the universe, wings to the mind, flight to the imagination." - Plato

Version: 0.3.0
GitHub: https://github.com/luongnv89/music-cli

Documentation

Document Description
User Guide Complete usage instructions
Architecture System design and diagrams
Development Contributing guide

Requirements

  • Python 3.9+
  • FFmpeg
  • Supported Platforms: Linux, macOS, Windows 10+

Changelog

v0.4.1

  • Add Windows 10+ support
    • Platform abstraction layer for cross-platform compatibility
    • TCP localhost IPC on Windows (Unix sockets on Linux/macOS)
    • stdin-based pause/resume on Windows (signals on Linux/macOS)
    • Windows-specific config directory (%LOCALAPPDATA%\music-cli\)
  • Add Windows to CI test matrix

v0.4.0

  • Add music-cli ai command suite for AI track management
    • ai list - Display all AI tracks with prompts
    • ai play [-p "prompt"] - Generate with context or custom prompt
    • ai replay <num> - Replay track (regenerates if missing)
    • ai remove <num> - Delete track and audio file
  • Add seamless looping via prompt engineering
  • Add context-aware AI generation (time of day, day of week, mood)
  • Default AI duration reduced to 5s for faster generation

v0.3.0

  • Add radio station management (list/play/add/remove by number)
  • Add 35 curated radio stations (English, French, Spanish, Italian)
  • Add version-aware config with update-radios command
  • Add inspirational quotes to status command
  • Add "composing..." animation for AI generation
  • Save AI-generated music to persistent directory for replay
  • Show GitHub link in status output
  • Remove audiocraft dependency (use transformers only)

v0.2.0

  • Switch to HuggingFace Transformers for AI music generation
  • Auto-loop AI-generated tracks
  • Pin transformers<4.51 for MusicGen compatibility
  • CI/CD improvements

v0.1.0

  • Initial release
  • Daemon-based playback
  • Radio streaming, local files, AI generation
  • Context-aware music selection
  • Mood support

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

coder_music_cli-0.4.1.tar.gz (44.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

coder_music_cli-0.4.1-py3-none-any.whl (47.3 kB view details)

Uploaded Python 3

File details

Details for the file coder_music_cli-0.4.1.tar.gz.

File metadata

  • Download URL: coder_music_cli-0.4.1.tar.gz
  • Upload date:
  • Size: 44.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for coder_music_cli-0.4.1.tar.gz
Algorithm Hash digest
SHA256 2447fe9f702551f129c130c505e52e864811a03db56523e26ce127449c078933
MD5 d9532c5c9ead1121c78f645c652c1b7e
BLAKE2b-256 b47b587a42ffa078e6539c543d5fafe243e53506fd64ef1c7ebb35ee9e049b4d

See more details on using hashes here.

File details

Details for the file coder_music_cli-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for coder_music_cli-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 287051f416aa67451afff3ff978d17374f47e280ddd4f0d80ed3dfa77d8aba58
MD5 f3d7aad36795fe478af6f677a7a83443
BLAKE2b-256 df8d29a3fa78926a084dc7c44a1e342b4e5f951ded62cf4174f0c83b20e029e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page