Retour au classement

clangen/musikcube

C++musikcube.com

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

audio-playeraudio-enginemusic-playerterminalcursescoreaudiocross-platformwasapipulseaudiodirectsoundalsamusic-library
Croissance des étoiles
Étoiles
4.8k
Forks
318
Croissance hebdomadaire
Issues
167
2k4k
déc. 2016févr. 2020mai 2023juil. 2026
README

musikcube

a cross-platform, terminal-based audio engine, library, player and server written in c++.

musikcube compiles and runs easily on windows, macos and linux. it also runs well on a raspberry pi with raspbian, and can be setup as a streaming audio server.

check out the installation guide to get up and running.

be sure to also read through a the user guide, which describes app's navigation paradigm and lists all the default keyboard shortcuts.

if you want to build it from source, the instructions are here.

screenshots

it looks something like this on windows:

windows screenshot

and this on macos:

osx screenshot

and on linux:

linux screenshot

here's a demo (made with asciinema):

asciicast

while the main musikcube app runs in the console, you can also stream audio from (and even remote control) musikcube using the musikdroid android app, which can be downloaded in the releases section above. it looks like this:

android screenshot

installation

binaries are available in the releases page.

while macos binaries are provided, you can also install via homebrew as follows:

  • brew install musikcube

on freebsd musikcube can be installed as follows:

  • pkg install musikcube

on openbsd musikcube can be installed as follows:

  • pkg_add install musikcube

on windows, you can install via chocolatey:

  • choco install musikcube

then run using shell, Win+R dialog or by typing in Start Menu musikcube or mcube.

raspberry pi

musikcube runs well on a raspberry pi, connected to your home stereo. see here for detailed setup instructions.

compiling

if you'd like to compile the project yourself, you can check out the build instructions.

keyboard shortcuts

a list of all keyboard shortcuts can be found in the user guide

streaming server

musikcube ships with a streaming audio server enabled by default. it runs a websocket server on port 7905, used for metadata retrieval. an http server runs on port 7906, and is used to serve (optionally transcoded) audio data to clients.

it's important to understand that, out of the box, the server (and remote api) should NOT be considered safe for use outside of a local network. the websockets service only supports a simple password challenge, and the audio http server just handles Basic authorization. it does not provide ssl or tls. the server also stores the password in plain text in a settings file on the local machine.

you can fix some of this using a reverse proxy to provide ssl termination. details in the ssl-server-setup section. while this improves things, you should exercise caution exposing these services over the internet.

if you're interested in writing your own frontend, api documentation is available here.

sdk

the musikcube sdk is a set of small, pure-virtual c++ classes and a handful of enums and constants. they're still in the process of being slimmed down. you can see what they currently look like here: https://github.com/clangen/musikcube/tree/master/src/musikcore/sdk

dependencies

musikcube would not be possible without the following excellent free, open source, and (in the case of some macos and win32 APIs) non-free projects and libraries:

core decoders outputs metadata networking miscellaneous ui
sqlite ffmpeg alsa taglib websocketpp rxjava ncurses
utfcpp libopenmpt pulseaudio glide libmicrohttpd rxandroid pdcurses (win32a variant)
nlohmann json libgme core audio libcurl stetho recycler-fast-scroll
kissfft exoplayer wasapi openssl fabric
sigslot directsound nv-websocket-client AndroidVideoCache
wcwidth.c waveout okhttp
pipewire

license

Copyright (c) 2004-2023 musikcube team

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice,
   this list of conditions and the following disclaimer.

 * Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.

 * Neither the name of the author nor the names of other contributors may
   be used to endorse or promote products derived from this software
   without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Dépôts similaires
snapcast/snapcast

Synchronous multiroom audio player

C++GNU General Public License v3.0audio-playersonos
7.8k542
badaix/snapcast

Synchronous multiroom audio player

C++GNU General Public License v3.0audio-playersonos
6.5k465
namidaco/namida

A Beautiful and Feature-rich Music & Video Player with Youtube Support, Built in Flutter

DartOtherfluttermusic
6k326
AutoPiano/AutoPiano

🎹 自由钢琴 AutoPiano - Simple & Elegant Piano Online

JavaScriptnpmGNU General Public License v3.0pianomusic
autopiano.cn
6k992
mpvnet-player/mpv.net

🎞 mpv.net is a media player for Windows with a modern GUI.

C#GNU General Public License v2.0video-playeraudio-player
5.2k215
strawberrymusicplayer/strawberry

:strawberry: Strawberry Music Player

C++GNU General Public License v3.0strawberrystrawberry-music-player
strawberrymusicplayer.org
3.8k324
doublesymmetry/react-native-track-player

The best audio player for React Native. Built on the New Architecture — Android Auto, caching, preloading, background playback, and more.

TypeScriptnpmOtherreact-nativemusic-player
rntp.dev
3.7k1.2k
freeman-jiang/beatsync

🔊 High-precision web player for multi-device audio playback and spatial audio.

TypeScriptnpmMIT Licenseaudioaudio-player
beatsync.gg
3.1k284
analogcode/Swift-Radio-Pro

Professional Radio Station App for iOS!

SwiftMIT Licenseradio-stationswift
2.9k713
ravachol/kew

Music for the Shell. kew is an immersive and fast music player that allows you to listen to music with privacy.

CGNU General Public License v2.0linuxmusic
kewplayer.com
2.9k94
MusicPlayerDaemon/MPD

Music Player Daemon

C++GNU General Public License v2.0musicaudio
musicpd.org
2.7k417
muxinc/media-chrome

Custom elements (web components) for making audio and video player controls that look great in your website or app.

TypeScriptnpmMIT Licensevideoaudio
media-chrome.org
2.7k122