Top Related Projects
a cross-platform, terminal-based music player, audio engine, metadata indexer, and server in c++
Featureful ncurses based MPD client inspired by ncmpc
DeaDBeeF Player
Cross-platform Audio Visualizer
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:
-
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, orsudo yum install cmus
on CentOS/RHEL. -
Open cmus in your terminal by running the
cmus
command. -
Navigate the music library using the following keys:
j
andk
: Move up and down the listl
: Enter a directory or play a songh
: Go back to the parent directory
-
Control playback using these keys:
space
: Play/Pausec
: Next trackx
: Previous trackv
: Volume upb
: Volume down
-
Customize cmus by editing the configuration file located at
~/.config/cmus/rc
. You can set options like the default music directory, keybindings, and more. -
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.
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.
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.
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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
cmus â C* Music Player
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
$ 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.
Top Related Projects
a cross-platform, terminal-based music player, audio engine, metadata indexer, and server in c++
Featureful ncurses based MPD client inspired by ncmpc
DeaDBeeF Player
Cross-platform Audio Visualizer
Streaming music player that finds free music for you
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot