Convert Figma logo to code with AI

DeaDBeeF-Player logodeadbeef

DeaDBeeF Player

1,634
177
1,634
365

Top Related Projects

:tangerine: Clementine Music Player

Music player and music library manager for Linux, Windows, and macOS

Tomahawk, the multi-source music player

2,169

Music Player Daemon

Quick Overview

DeaDBeeF is an open-source, cross-platform audio player for Linux, BSD, OpenSolaris, macOS, and other UNIX-like systems. It supports a wide range of audio formats and offers a highly customizable user interface with plugins and themes.

Pros

  • Supports a vast array of audio formats, including lossy and lossless codecs
  • Highly customizable with plugins and themes
  • Lightweight and efficient, suitable for older hardware
  • Offers advanced playback features like gapless playback and ReplayGain

Cons

  • Limited availability on Windows platforms
  • Steeper learning curve compared to some mainstream audio players
  • Some users may find the interface less intuitive than more popular alternatives
  • Documentation can be sparse for advanced features and customizations

Getting Started

To get started with DeaDBeeF on a Linux system:

  1. Download the latest release from the official website or use your distribution's package manager.
  2. Install the package using your system's package management tool.
  3. Launch DeaDBeeF from your application menu or terminal.
  4. Add music to your library by dragging and dropping files or folders into the main window.
  5. Explore the settings and plugins to customize your experience.

For building from source:

git clone https://github.com/DeaDBeeF-Player/deadbeef.git
cd deadbeef
./autogen.sh
./configure
make
sudo make install

Note that building from source may require additional dependencies, which can be found in the project's documentation.

Competitor Comparisons

:tangerine: Clementine Music Player

Pros of Clementine

  • Cross-platform support (Windows, macOS, Linux)
  • More feature-rich with advanced functionality like internet radio, podcasts, and cloud services integration
  • Active development with frequent updates and new features

Cons of Clementine

  • Heavier resource usage due to its extensive feature set
  • More complex user interface, which may be overwhelming for users seeking a simple audio player
  • Longer startup time compared to lightweight alternatives

Code Comparison

Clementine (C++):

void MainWindow::AddToPlaylist(const QMimeData* data) {
  if (MimeData::HasUrls(data)) {
    const QList<QUrl> urls = data->urls();
    MimeData* mime_data = new MimeData;
    mime_data->setUrls(urls);
    AddToPlaylist(mime_data);
  }
}

DeaDBeeF (C):

int deadbeef_add_to_playlist(ddb_playlist_t *plt, const char *uri) {
    DB_playItem_t *it = deadbeef->plt_insert_file(plt, NULL, uri, -1, 0);
    if (it) {
        deadbeef->pl_item_unref(it);
        return 0;
    }
    return -1;
}

The code snippets show different approaches to adding items to a playlist, with Clementine using Qt's drag-and-drop functionality and DeaDBeeF utilizing a simpler C-style function.

Music player and music library manager for Linux, Windows, and macOS

Pros of Quod Libet

  • More extensive library management features
  • Better support for large music collections
  • More active development and frequent updates

Cons of Quod Libet

  • Heavier resource usage
  • Steeper learning curve for new users
  • Less customizable interface compared to DeaDBeeF

Code Comparison

DeaDBeeF:

void playback_loop(void) {
    while (!terminate) {
        if (play_state == PLAY_STATE_PLAYING) {
            // Playback logic
        }
    }
}

Quod Libet:

def __play(self, source, next_source=None):
    self._source = source
    if source is not None:
        self._play_source(source, next_source)
    else:
        self.paused = True

Both projects handle playback differently due to their underlying architectures. DeaDBeeF uses a C-based loop for playback control, while Quod Libet employs Python's object-oriented approach with method calls. DeaDBeeF's implementation may offer lower-level control and potentially better performance, while Quod Libet's Python code could be more maintainable and easier to extend.

Tomahawk, the multi-source music player

Pros of Tomahawk

  • Cross-platform support (Windows, macOS, Linux)
  • Social features and playlist sharing
  • Integration with multiple streaming services

Cons of Tomahawk

  • More complex setup and configuration
  • Heavier resource usage
  • Less frequent updates and maintenance

Code Comparison

Tomahawk (C++):

void AudioEngine::setVolume( float volume )
{
    m_volume = volume;
    emit volumeChanged( volume );
}

DeaDBeeF (C):

static int
deadbeef_set_volume (float volume) {
    conf_set_float ("volume", volume);
    return 0;
}

Tomahawk uses a more object-oriented approach with C++, while DeaDBeeF opts for a simpler C implementation. Tomahawk's code includes signal emission for UI updates, whereas DeaDBeeF directly modifies configuration settings.

Both projects are audio players, but Tomahawk focuses on social features and streaming integration, while DeaDBeeF prioritizes simplicity and lightweight performance. Tomahawk offers a more feature-rich experience at the cost of complexity, while DeaDBeeF provides a straightforward, efficient audio player for users who prefer a minimalist approach.

2,169

Music Player Daemon

Pros of MPD

  • Client-server architecture allows for multiple clients and remote control
  • Supports a wide range of audio formats and protocols
  • Highly customizable and extensible through plugins

Cons of MPD

  • Requires separate client software for user interaction
  • Setup and configuration can be more complex for beginners
  • Limited built-in GUI options

Code Comparison

MPD (C++):

bool
playlist::AddSong(PlayerControl &pc, DetachedSong &&song, Error &error)
{
	const auto &song_ref = pc.AppendToQueue(std::move(song), error);
	if (!song_ref.IsDefined())
		return false;

DeaDBeeF (C):

int
deadbeef_add_track (ddb_playlist_t *plt, const char *fname, int *pabort, int (*callback)(void *user_data, const char *fname), void *user_data)
{
    char *uri = NULL;
    DB_playItem_t *it = NULL;

Both projects are open-source music players, but MPD focuses on a client-server model while DeaDBeeF is a standalone player. MPD offers more flexibility for remote control and multiple clients, while DeaDBeeF provides a simpler, all-in-one solution. The code snippets show different approaches to adding tracks, reflecting their architectural differences.

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

About

DeaDBeeF is a multiple-platform music player for desktop operating systems.

The Official Website.

If you wish to chat with developers, join us on Discord.

Download official releases (only GNU/Linux and Windows)

Downloads Page

Download nightly (development) builds

NOTE: The macOS version has not been officially released, and has many unresolved issues and unimplemented features

Linux Build Status Windows Build Status macOS Build Status

Nightly GNU/Linux Builds

Nightly Windows Builds

Nightly macOS Builds

Building DeaDBeeF from source

Linux, BSD and similar (GTK/*NIX version)

The overall process is simple, but it's hard to figure out the dependencies.

Please consult the README file in the same folder for more details, or visit the wiki page

If you have the dependencies - follow these simple steps:

  • Install Git, Clang toolchain
  • Remember to get submodules: git submodule update --init
  • Install dependencies
  • Run ./autogen.sh to bootstrap
  • Run CC=clang CXX=clang++ ./configure, followed with make and sudo make install.
  • For more information about the build process, read the generated INSTALL file and the output of ./configure --help.

macOS

  • Install Xcode. The latest one is the best, but older versions will usually keep working for a year or two.
  • Run sudo xcode-select --install - This will configure git and command line build tools
  • Clone the deadbeef git repository
  • Remember to get submodules: git submodule update --init

Command line

  • Run xcodebuild -project osx/deadbeef.xcodeproj -target DeaDBeeF -configuration Release
  • The output will be located here: osx/build/Release/DeaDBeeF.app

Xcode UI

  • Open the osx/deadbeef.xcodeproj in Xcode, and build/run from there

Windows

Prerequisites

  • MSYS2: Install the 64-bit version of msys2 and ensure to run pacman -Syu
  • Premake5: v5.0.0-beta1
  • Toolchain
pacman -S mingw-w64-x86_64-libzip mingw-w64-x86_64-pkg-config mingw-w64-x86_64-dlfcn mingw-w64-x86_64-clang mingw-w64-x86_64-libblocksruntime git make tar xz
  • Dependencies:
pacman -S mingw-w64-x86_64-jansson mingw-w64-x86_64-gtk3 mingw-w64-x86_64-gtk2 mingw-w64-x86_64-mpg123 mingw-w64-x86_64-flac mingw-w64-x86_64-portaudio

Compiling

  • Ensure that you are in mingw64 shell (run mingw64.exe) and clone this git repository
  • From deadbeef main directory run premake5 --standard gmake2 using your corresponding path to premake5.exe
  • Compile with make config=debug_windows (debug build) or make config=release_windows (stripped/release build)
  • Find the resulting binaries in bin/debug or bin/release

Other notes

  • GTK3 uses Windows-10 theme and Windows-10-Icons by default. If they are not in msys2 tree, then they must be manually placed in the share/icons and share/themes. A different theme can be specified by editing the etc/gtk-3.0/settings.ini file.

Supporting this project

Please visit the support page