Skip to main content

RhythmSync

  ___ _        _   _          ___              
 | _ \ |_ _  _| |_| |_  _ __ / __|_  _ _ _  __ 
 |   / ' \ || |  _| ' \| '  \\__ \ || | ' \/ _|
 |_|_\_||_\_, |\__|_||_|_|_|_|___/\_, |_||_\__|
          |__/                    |__/         

CLI audio player that plays music while displaying synchronized lyrics (LRC).


Features

  • Play audio files in various modes (single file, directory, playlist)
  • Display synchronized lyrics during playback
  • Show song metadata tags
  • Styled terminal music player UI
  • Convert audio files to other formats using FFmpeg
  • Embed .lrc files into audio files
  • Create, load, repair, and delete .mpl playlists
  • Player controls:
    • SPACE – Pause/Resume
    • RIGHT Arrow – Next track
    • LEFT Arrow – Previous track
    • I – Toggle main display between lyrics and info
    • R – Toggle repeat modes (off, single, all)
    • S – Toggle shuffle

Requirements

  • Python 3.8+
  • FFmpeg (optional, required for conversion feature)

Compatibility

RhythmSync is currently intended for UNIX-based systems (Linux/macOS). Non-UNIX systems support is not currently available.


Installation and Usage

PyPI page: Click here

  1. Install the CLI application:

    pip install rhythmsync
    
  2. Launch the CLI application:

    rhythmsync
    

Supported Audio Formats

  • MP3 (.mp3)
  • FLAC (.flac)
  • WAV (.wav)
  • OGG (.ogg)

Lyrics Sync

RhythmSync reads embedded lyric metadata from audio files.

Supported LRC Tags

  • SYLT, SYLT::eng
  • LYRICS, LYRICS:eng
  • LYRICS-ENG, LYRICS_EN
  • LYRICS_SYNCED, SYNCEDLYRICS

LRC Format

[00:12.34] First line
[00:15.67] Second line
[00:18.90] Third line
  • Format: [mm:ss.xx] Line
  • Timestamps are in minutes, seconds, and hundredths of a second.

Notes:

  • If no lyrics are found, a placeholder message is shown.
  • For files with external .lrc files, use the embed command to embed the lyrics into the metadata.

Commands

Global Options

Option Description
--version, -v Show the version and exit
--help Show help message and exit

logo

Display the Rhythmsync logo.

rhythmsync logo [OPTIONS]

Options:

Option Description
-s Display the small logo
-l Display the large logo

Note: Options -s and -l are mutually exclusive. Choose only one.

Examples:

rhythmsync logo          # Show logo (automatic based on terminal size)
rhythmsync logo -s       # Show small logo
rhythmsync logo -l       # Show large logo

play

Play audio files, directories, or playlists.

rhythmsync play [OPTIONS] PATH

Arguments:

Argument Description
PATH Audio file, folder, or .mpl playlist

Options:

Option Description
-d Play all audio files in directory (non‑recursive)
-r Play all audio files in directory (recursive)
-p Play .mpl playlist

Note: Options -d, -r, and -p are mutually exclusive. Choose only one.

Examples:

rhythmsync play song.mp3                 # Play a single file
rhythmsync play -d ~/Music/              # Play all audio files in directory
rhythmsync play -r ~/Music/              # Play all audio files in directory recursively
rhythmsync play -p playlist.mpl          # Play a playlist

info

Display metadata from an audio file.

rhythmsync info [OPTIONS] FILE [TAGS]...

Arguments:

Argument Description
FILE Audio file to inspect
TAGS (Optional) Specific tags to display

Examples:

rhythmsync info song.mp3                 # Display all metadata
rhythmsync info song.mp3 artist title    # Display only artist and title

convert

Convert an audio file to another format.

rhythmsync convert INPUT OUTPUT

Arguments:

Argument Description
INPUT Input file path
OUTPUT Output file path

Example:

rhythmsync convert input.flac output.ogg

embed

Embed .lrc (lyrics) files into audio files.

rhythmsync embed [OPTIONS] PATH

Arguments:

Argument Description
PATH Audio file or directory

Options:

Option Description
-d Embed LRC into all audio files in directory

Examples:

rhythmsync embed song.mp3                 # Embed LRC for single file
rhythmsync embed -d ~/Music/              # Embed LRC for all files in directory

playlist

Manage .mpl playlists.

playlist create

Create a new playlist from audio files.

rhythmsync playlist create OUTPUT_PATH FILES... [OPTIONS]

Arguments:

Argument Description
OUTPUT_PATH Output .mpl file path
FILES Audio files to include (can specify multiple)

Options:

Option Description
--name, -n Playlist name (default: filename stem)

Example:

rhythmsync playlist create my_playlist.mpl song1.mp3 song2.flac -n "My Playlist"

playlist load

Load and display the tracks from a playlist.

rhythmsync playlist load PATH

Arguments:

Argument Description
PATH .mpl file to load

Example:

rhythmsync playlist load my_playlist.mpl

playlist repair

Repair missing or moved tracks in a playlist.

rhythmsync playlist repair PATH SEARCH_DIRS...

Arguments:

Argument Description
PATH .mpl file to repair
SEARCH_DIRS Directories to search for missing files (can specify multiple)

Example:

rhythmsync playlist repair my_playlist.mpl ~/Music/ ~/Downloads/

playlist delete

Delete a playlist.

rhythmsync playlist delete [OPTIONS] PATH

Arguments:

Argument Description
PATH .mpl file to delete

Options:

Option Description
--force, -f Skip confirmation prompt

Examples:

rhythmsync playlist delete my_playlist.mpl      # Prompts for confirmation
rhythmsync playlist delete -f my_playlist.mpl   # Deletes without confirmation

Notes

  • Paths with spaces: Must be wrapped in quotes or escaped with backslashes:

    rhythmsync play "My Music/song.mp3"
    rhythmsync play My\ Music/song.mp3
    
  • FFmpeg dependency: The convert command uses FFmpeg and may alter or corrupt metadata.

  • Stopping playback: Use Ctrl+C to stop playback.

Download files

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

Source Distribution

rhythmsync-1.2.0.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

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

rhythmsync-1.2.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file rhythmsync-1.2.0.tar.gz.

File metadata

  • Download URL: rhythmsync-1.2.0.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for rhythmsync-1.2.0.tar.gz
Algorithm Hash digest
SHA256 1d6f59ba22ce448b3a0dedfaa7a9f7fba6394813f50d57a1550e3b7da6005a64
MD5 84c9a32775e5217e31bd7e3afeb0085c
BLAKE2b-256 f6c77404fccd55326eac89a369311b35e377409ad04416fa675c92457ec08265

See more details on using hashes here.

File details

Details for the file rhythmsync-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: rhythmsync-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for rhythmsync-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0d511ff23f19ca30356e2ee23a0767d35728513047693c897d06ae1b947fc646
MD5 f63a3c5758b6c12c3151efdc1e560766
BLAKE2b-256 5151cdd1fb0123d9e7b3fd53b62556af64291310d302ba73cab67bd0b0a55782

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 files

1.1.1

2 files

1.1.0

2 files

1.0.0

2 files

Supported by

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