Convert Figma logo to code with AI

cmus logocmus

Small, fast and powerful console music player for Unix-like operating systems.

5,533
468
5,533
175

Top Related Projects

a cross-platform, terminal-based music player, audio engine, metadata indexer, and server in c++

2,091

Featureful ncurses based MPD client inspired by ncmpc

DeaDBeeF Player

4,126

Cross-platform Audio Visualizer

12,080

Streaming music player that finds free music for you

Quick Overview

cmus is a small, fast and powerful console music player for Unix-like operating systems. It supports a wide range of audio formats and provides a feature-rich interface for managing and playing music collections.

Pros

  • Lightweight and Efficient: cmus is designed to be lightweight and efficient, making it suitable for use on older or less powerful systems.
  • Extensive Format Support: cmus supports a wide range of audio formats, including MP3, FLAC, Ogg Vorbis, and more.
  • Powerful Keybindings and Commands: cmus provides a comprehensive set of keybindings and commands for navigating and controlling the music player.
  • Customizable Interface: The user interface of cmus can be customized to suit individual preferences.

Cons

  • Command-Line Interface: cmus is a command-line-based music player, which may not be as intuitive for users who are more familiar with graphical music players.
  • Limited Metadata Editing: cmus does not provide a built-in way to edit metadata (e.g., song titles, artists, album art) for music files.
  • No Graphical User Interface: cmus is a console-based application and does not have a graphical user interface, which may be a drawback for some users.
  • Limited Playlist Management: While cmus supports playlists, the playlist management features are relatively basic compared to some other music players.

Getting Started

To get started with cmus, follow these steps:

  1. Install cmus on your system. On most Unix-like distributions, you can install it using your package manager, e.g., sudo apt-get install cmus on Ubuntu/Debian, or sudo yum install cmus on CentOS/RHEL.

  2. Open cmus in your terminal by running the cmus command.

  3. Navigate the music library using the following keys:

    • j and k: Move up and down the list
    • l: Enter a directory or play a song
    • h: Go back to the parent directory
  4. Control playback using these keys:

    • space: Play/Pause
    • c: Next track
    • x: Previous track
    • v: Volume up
    • b: Volume down
  5. Customize cmus by editing the configuration file located at ~/.config/cmus/rc. You can set options like the default music directory, keybindings, and more.

  6. Explore the extensive list of commands and keybindings available in cmus by pressing ? while in the application.

Competitor Comparisons

a cross-platform, terminal-based music player, audio engine, metadata indexer, and server in c++

Pros of musikcube

  • Cross-platform support (Windows, macOS, Linux)
  • Modern, customizable TUI with mouse support
  • Built-in audio streaming capabilities

Cons of musikcube

  • Larger codebase and more complex architecture
  • Higher system resource usage
  • Steeper learning curve for configuration

Code comparison

musikcube (C++):

void Player::Play(size_t index, ITrack* track) {
    this->Stop();
    this->QueueTrack(track);
    this->Play();
}

cmus (C):

int player_play_track(struct track_info *ti)
{
    if (!ti)
        return -1;
    player_set_file(ti->filename);
    return player_play();
}

Summary

musikcube offers a more feature-rich and visually appealing experience with cross-platform support, while cmus provides a lightweight and efficient solution for Unix-like systems. musikcube's modern C++ codebase allows for more complex features, but may be harder to contribute to compared to cmus's simpler C implementation. Both projects have active communities and regular updates, making them viable options for terminal-based music players.

2,091

Featureful ncurses based MPD client inspired by ncmpc

Pros of ncmpcpp

  • More feature-rich with advanced functionality like tag editing and lyrics fetching
  • Highly customizable interface with various layout options
  • Better support for visualizations and album art display

Cons of ncmpcpp

  • Steeper learning curve due to more complex configuration
  • Requires MPD (Music Player Daemon) to be set up and running
  • Can be resource-intensive with all features enabled

Code Comparison

ncmpcpp configuration example:

mpd_host = "localhost"
mpd_port = "6600"
mpd_music_dir = "~/Music"
visualizer_type = "spectrum"
playlist_display_mode = "columns"

cmus configuration example:

set output_plugin=alsa
set dsp.alsa.device=default
set mixer.alsa.device=default
set mixer.alsa.channel=Master

ncmpcpp focuses on MPD integration and offers more visual customization options, while cmus has a simpler configuration focused on audio output settings. ncmpcpp provides a more feature-rich experience at the cost of complexity, whereas cmus offers a more straightforward and lightweight approach to music playback. The choice between the two depends on user preferences for features, customization, and system resources.

DeaDBeeF Player

Pros of DeaDBeeF

  • Graphical user interface, making it more user-friendly for some users
  • Support for a wider range of audio formats, including lossless formats
  • More extensive plugin system, allowing for greater customization

Cons of DeaDBeeF

  • Higher resource usage compared to cmus
  • Less suitable for terminal-only environments or systems with limited resources
  • Steeper learning curve for users accustomed to command-line interfaces

Code Comparison

cmus:

static int cmus_remote_init(void)
{
    char *sock;

    sock = xdg_get_runtime_dir();
    if (sock == NULL)
        return -1;
    socket_path = xstrjoin(sock, "/cmus-socket");
    free(sock);
    return 0;
}

DeaDBeeF:

int
plug_connect_message (ddb_playlist_t *plt, const char *message, int p1, void *p2)
{
    if (!strcmp (message, DB_EV_PLAYLISTCHANGED)) {
        deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0, 0, 0);
    }
    return 0;
}

Both projects use C for their core functionality, but DeaDBeeF's codebase includes additional languages like C++ for its GUI components. cmus focuses on efficient, low-level operations, while DeaDBeeF's code reflects its more feature-rich nature and plugin system.

4,126

Cross-platform Audio Visualizer

Pros of CAVA

  • Provides a visually appealing audio visualizer for terminal environments
  • Lightweight and customizable with various color schemes and visualization modes
  • Can work with multiple audio sources, including PulseAudio, ALSA, and fifo

Cons of CAVA

  • Limited to audio visualization, lacks music playback functionality
  • May require additional setup for certain audio sources
  • Less comprehensive music management features compared to CMUS

Code Comparison

CAVA (config file example):

[general]
framerate = 60
sensitivity = 100

[input]
method = pulse
source = auto

[color]
background = default
foreground = blue

CMUS (example keybinding configuration):

bind -f common q quit
bind -f common p player-pause
bind -f common l seek +5
bind -f common h seek -5

Summary

CAVA is a dedicated audio visualizer that enhances the visual experience of music playback in terminal environments. It offers customizable visualizations but lacks music playback and management features. CMUS, on the other hand, is a full-featured music player and library manager for the terminal, providing comprehensive audio playback control and organization capabilities. While CAVA excels in visual representation, CMUS offers a more complete music management solution for terminal users.

12,080

Streaming music player that finds free music for you

Pros of Nuclear

  • Modern, cross-platform desktop application with a graphical user interface
  • Supports streaming from multiple sources including YouTube and SoundCloud
  • Offers a more feature-rich experience with playlist management and visualizations

Cons of Nuclear

  • Larger resource footprint due to being built on Electron
  • May have a steeper learning curve for users accustomed to terminal-based applications
  • Requires more dependencies and has a larger codebase to maintain

Code Comparison

Nuclear (JavaScript):

const { app, BrowserWindow } = require('electron');
const path = require('path');
const url = require('url');

let win;

function createWindow() {
  win = new BrowserWindow({ width: 800, height: 600 });
  // ... more code ...
}

cmus (C):

#include <stdlib.h>
#include <stdio.h>
#include "ui_curses.h"
#include "player.h"

int main(int argc, char *argv[])
{
    // ... more code ...
}

Nuclear uses JavaScript and Electron for its GUI, while cmus is written in C and uses ncurses for its terminal interface. This difference in technology stack reflects their distinct approaches to music player design and functionality.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

cmus — C* Music Player

https://cmus.github.io/

Build Status

Copyright © 2004-2008 Timo Hirvonen tihirvon@gmail.com

Copyright © 2008-2017 Various Authors

Configuration

List available optional features

$ ./configure --help

Auto-detect everything

$ ./configure

To disable some feature, arts for example, and install to $HOME run

$ ./configure prefix=$HOME CONFIG_ARTS=n

After running configure you can see from the generated config.mk file what features have been configured in (see the CONFIG_* options).

Note: For some distributions you need to install development versions of the dependencies. For example if you want to use 'mad' input plugin (mp3) you need to install libmad0-dev (Debian) or libmad-devel (RPM) package. After installing dependencies you need to run ./configure again, of course.

If you want to use the Tremor library as alternative for decoding Ogg/Vorbis files you have to pass CONFIG_TREMOR=y to the configure script:

$ ./configure CONFIG_VORBIS=y CONFIG_TREMOR=y

The Tremor library is supposed to be used on hardware that has no FPU.

Building

$ make

Or on some BSD systems you need to explicitly use GNU make:

$ gmake

Installation

$ make install

Or to install to a temporary directory:

$ make install DESTDIR=~/tmp/cmus

This is useful when creating binary packages.

Remember to replace make with gmake if needed.

Manuals

$ man cmus-tutorial

And

$ man cmus

Mailing List

To subscribe to cmus-devel@lists.sourceforge.net or view the archive visit http://lists.sourceforge.net/lists/listinfo/cmus-devel.

The mailing list now serves as an archive for old releases and issues. Please use the GitHub issues page for any problems, suggestions, or bug reports.

IRC Channel

Feel free to join IRC channel #cmus on Libera.chat and share you experience, problems and issues. Note: This is an unofficial channel and all people hanging around there are for the love of cmus.

Reporting Bugs

Bugs should be reported using the GitHub issue tracker. When creating a new issue, a template will be shown containing instructions on how to collect the necessary information.

Additional debug information can be found in ~/cmus-debug.txt if you configured cmus with maximum debug level (./configure DEBUG=2). In case of a crash the last lines may be helpful.

Git Repository

https://github.com/cmus/cmus

$ git clone https://github.com/cmus/cmus.git

Hacking

cmus uses the Linux kernel coding style. Use hard tabs. Tabs are always 8 characters wide. Keep the style consistent with rest of the code.

Bug fixes and implementations of new features should be suggested as a pull request directly on GitHub.