a cross-platform, terminal-based music player, audio engine, metadata indexer, and server in c++
Go to file
2017-06-30 19:27:24 -07:00
src Fixed a bug where seeking while paused would not update the internal 2017-06-29 23:13:51 -07:00
.gitignore Fixed .gitignore 2017-05-28 22:58:49 -07:00
archive-macos.sh Updated CHANGELOG for release, and tweaked the archive filenames. 2017-03-26 20:53:05 -07:00
archive-win32.sh Added update check functionality. Finally. 2017-06-28 00:51:56 -07:00
CHANGELOG.txt musikdroid version bump 2017-06-28 23:40:02 -07:00
CMakeLists.txt Integrated update check into SettingsLayout. 2017-06-28 02:24:21 -07:00
CONTRIBUTORS.txt dang 2017-03-27 00:50:52 -07:00
LICENSE.txt Updated LICENSE.txt 2016-06-11 18:22:59 -07:00
musikcube.sln Renamed "contrib" to "plugins". 2017-05-22 17:10:35 -07:00
README.md Update README.md 2017-06-30 19:27:24 -07:00

musikcube

a cross-platform audio engine and player written in c++.

musikbox

a curses frontend to musikcube.

musicbox 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.

it looks something like this on windows:

windows screenshot

and this on macos:

osx screenshot

and on linux:

linux screenshot

you can also stream audio from, or remote control musikbox 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/musikbox
  • brew install musikbox
  • musikbox

raspberry pi

musikbox runs well on a raspberry pi, connected to you 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

musikbox 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 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. the streaming server api uses a combination of websockets and vanilla http, and is included in every musikbox distribution.

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/core/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 recycler-fast-scroll
json.hpp faad2 wasapi libressl
kissfft exoplayer directsound nv-websocket-client
sigslot waveout okhttp
wcwidth.c