20dfbb5462
flagged before. Also getting Dagger 2 setup as a test. Will probably end up removing it, but let's see if it can help with a few things. |
||
---|---|---|
src | ||
.gitignore | ||
archive-macos.sh | ||
archive-win32.sh | ||
CHANGELOG.txt | ||
CMakeLists.txt | ||
CONTRIBUTORS.txt | ||
LICENSE.txt | ||
musikcube.sln | ||
README.md |
musikcube
a cross-platform audio engine, library, player and server 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.
keyboard shortcuts are listed here.
it looks something like this on windows:
and this on macos:
and on linux:
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:
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 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/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 | 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) 2007-2017 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.