All Projects β†’ clangen β†’ Musikcube

clangen / Musikcube

Licence: bsd-3-clause
a cross-platform, terminal-based music player, audio engine, metadata indexer, and server in c++

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
kotlin
9241 projects
CMake
9771 projects
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to Musikcube

Strawberry
πŸ“ Strawberry Music Player
Stars: ✭ 972 (-63.5%)
Mutual labels:  music-player, audio-player, alsa
Pulsemixer
CLI and curses mixer for PulseAudio
Stars: ✭ 441 (-83.44%)
Mutual labels:  terminal, curses, pulseaudio
Mitype
Typing speed test in terminal
Stars: ✭ 241 (-90.95%)
Mutual labels:  terminal, curses, cross-platform
Audio player flutter
🎧 Apple Music / Tidal Audio Player for Flutter
Stars: ✭ 52 (-98.05%)
Mutual labels:  music-player, audio-player, cross-platform
Nicemusic
A Nice MusicPlayer Powered by StarrySky
Stars: ✭ 107 (-95.98%)
Mutual labels:  music-player, music-library
Saldl
A lightweight well-featured CLI downloader optimized for speed and early preview.
Stars: ✭ 203 (-92.38%)
Mutual labels:  terminal, cross-platform
Tizonia Openmax Il
Command-line cloud music player for Linux with support for Spotify, Google Play Music, YouTube, SoundCloud, TuneIn, iHeartRadio, Plex servers and Chromecast devices.
Stars: ✭ 1,556 (-41.57%)
Mutual labels:  terminal, music-player
Bottom
Yet another cross-platform graphical process/system monitor.
Stars: ✭ 3,182 (+19.49%)
Mutual labels:  terminal, cross-platform
React Cassette Player
Simple ReactJS HTML5 audio player component built with SVG icons from The Noun Project.
Stars: ✭ 93 (-96.51%)
Mutual labels:  music-player, audio-player
Rompr
Web client for Mopidy and MPD
Stars: ✭ 115 (-95.68%)
Mutual labels:  music-player, music-library
React Native Track Player
A fully fledged audio module created for music apps. Provides audio playback, external media controls, chromecast support, background mode and more!
Stars: ✭ 2,175 (-18.33%)
Mutual labels:  music-player, music-library
Dte
A small, configurable console text editor (moved to https://gitlab.com/craigbarnes/dte)
Stars: ✭ 98 (-96.32%)
Mutual labels:  terminal, curses
Musicott
JavaFX application that manages and plays music files.
Stars: ✭ 97 (-96.36%)
Mutual labels:  music-player, music-library
Sbplayerclient
ζ”―ζŒε…¨ζ ΌεΌηš„macη‰ˆθ§†ι’‘ζ’­ζ”Ύε™¨
Stars: ✭ 110 (-95.87%)
Mutual labels:  music-player, audio-player
Zui
β¬’ Zsh User Interface library – CGI+DHTML-like rapid application development with Zsh
Stars: ✭ 95 (-96.43%)
Mutual labels:  terminal, curses
Vifm
Vifm is a file manager with curses interface, which provides Vim-like environment for managing objects within file systems, extended with some useful ideas from mutt.
Stars: ✭ 1,822 (-31.58%)
Mutual labels:  curses, cross-platform
Tuicss
Text-based user interface CSS library
Stars: ✭ 167 (-93.73%)
Mutual labels:  terminal, curses
Html Midi Player
🎹 Play and display MIDI files on the web
Stars: ✭ 158 (-94.07%)
Mutual labels:  music-player, audio-player
Audiomotion.js
High-resolution real-time spectrum analyzer and music player using Web Audio and Canvas APIs.
Stars: ✭ 177 (-93.35%)
Mutual labels:  music-player, audio-player
Multi Room Audio Centralized Audio For Home
🎡 This Github Repository provides details on setting up a centralized audio system for your home using nothing but Raspberry Pi's and Old Speakers.
Stars: ✭ 189 (-92.9%)
Mutual labels:  music-player, pulseaudio

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 tap clangen/musikcube
  • brew install musikcube
  • musikcube

on freebsd musikcube can be installed as follows:

  • pkg 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
boost flac alsa taglib websocketpp rxjava ncurses
sqlite ogg/vorbis pulseaudio glide libmicrohttpd rxandroid pdcurses (win32a variant)
utfcpp mad + nomad core audio libcurl stetho recycler-fast-scroll
nlohmann json faad2 wasapi libressl fabric
kissfft exoplayer directsound nv-websocket-client AndroidVideoCache
sigslot waveout okhttp
wcwidth.c

license

Copyright (c) 2004-2021 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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].