• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.circleci/H19-Apr-2021-159157

.cmake/H19-Apr-2021-119106

script/H19-Apr-2021-432340

src/H19-Apr-2021-813,952515,935

.gitignoreH A D19-Apr-2021666 4544

.gitmodulesH A D19-Apr-2021104 43

README.mdH A D19-Apr-202110.7 KiB12878

musikcube.slnH A D19-Apr-202144.8 KiB585584

musikcube.specH A D19-Apr-20211.4 KiB4033

README.md

1# musikcube
2
3a cross-platform, terminal-based audio engine, library, player and server written in c++.
4
5musikcube 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.
6
7check out the [installation guide](https://github.com/clangen/musikcube/wiki/installing) to get up and running.
8
9be sure to also read through a [the user guide](https://github.com/clangen/musikcube/wiki/user-guide), which describes app's navigation paradigm and lists all the default keyboard shortcuts.
10
11if you want to build it from source, [the instructions are here](https://github.com/clangen/musikcube/wiki/building).
12
13# screenshots
14
15it looks something like this on windows:
16
17![windows screenshot](https://raw.githubusercontent.com/clangen/clangen-projects-static/master/musikcube/screenshots/windows.png)
18
19and this on macos:
20
21![osx screenshot](https://raw.githubusercontent.com/clangen/clangen-projects-static/master/musikcube/screenshots/osx.png)
22
23and on linux:
24
25![linux screenshot](https://raw.githubusercontent.com/clangen/clangen-projects-static/master/musikcube/screenshots/linux.png)
26
27here's a demo (made with asciinema):
28
29[![asciicast](https://asciinema.org/a/129748.png)](https://asciinema.org/a/129748)
30
31while 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:
32
33![android screenshot](https://raw.githubusercontent.com/clangen/clangen-projects-static/master/musikcube/screenshots/android.png)
34
35# installation
36
37binaries are available in the [releases](https://github.com/clangen/musikcube/releases) page.
38
39while macos binaries are provided, you can also install via homebrew as follows:
40
41- `brew tap clangen/musikcube`
42- `brew install musikcube`
43- `musikcube`
44
45on freebsd musikcube can be installed as follows:
46
47- `pkg install musikcube`
48
49on windows, you can install via chocolatey:
50
51- `choco install musikcube`
52
53then run using shell, Win+R dialog or by typing in Start Menu `musikcube` or `mcube`.
54
55# raspberry pi
56
57musikcube runs well on a raspberry pi, connected to your home stereo. [see here for detailed setup instructions](https://github.com/clangen/musikcube/wiki/raspberry-pi).
58
59# compiling
60
61if you'd like to compile the project yourself, you can check out the [build instructions](https://github.com/clangen/musikcube/wiki/building).
62
63# keyboard shortcuts
64
65a list of all keyboard shortcuts can be found in the [user guide](https://github.com/clangen/musikcube/wiki/user-guide)
66
67# streaming server
68
69musikcube 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.
70
71**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.
72
73you can fix some of this using a reverse proxy to provide ssl termination. details in the [ssl-server-setup section](https://github.com/clangen/musikcube/wiki/ssl-server-setup). while this improves things, you should exercise caution exposing these services over the internet.
74
75if you're interested in writing your own frontend, [api documentation is available here](https://github.com/clangen/musikcube/wiki/remote-api-documentation).
76
77# sdk
78
79the 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
80
81# dependencies
82
83musikcube 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:
84
85| core                                                      | decoders                                                                                            | outputs                                                                                                                                        | metadata                                   | networking                                                                     | miscellaneous                                                      | ui                                                                        |
86|-----------------------------------------------------------|-----------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------|--------------------------------------------------------------------------------|--------------------------------------------------------------------|---------------------------------------------------------------------------|
87| [boost](http://www.boost.org/)                            | [flac](https://xiph.org/flac/)                                                                      | [alsa](https://www.alsa-project.org)                                                                                                           | [taglib](http://taglib.org/)               | [websocketpp](https://github.com/zaphoyd/websocketpp)                          | [rxjava](https://github.com/ReactiveX/RxJava)                      | [ncurses](https://www.gnu.org/software/ncurses/)                          |
88| [sqlite](https://www.sqlite.org/)                         | [ogg/vorbis](http://www.vorbis.com/)                                                                | [pulseaudio](https://www.freedesktop.org/wiki/Software/PulseAudio/)                                                                            | [glide](https://github.com/bumptech/glide) | [libmicrohttpd](https://www.gnu.org/software/libmicrohttpd/)                   | [rxandroid](https://github.com/ReactiveX/RxAndroid)                | [pdcurses (win32a variant)](https://www.projectpluto.com/win32a.htm)      |
89| [utfcpp](https://github.com/nemtrif/utfcpp)               | [mad](http://www.underbit.com/products/mad/) + [nomad](https://github.com/cmus/cmus/tree/master/ip) | [core audio](https://developer.apple.com/library/content/documentation/MusicAudio/Conceptual/CoreAudioOverview/Introduction/Introduction.html) |                                            | [libcurl](https://curl.haxx.se/libcurl/)                                       | [stetho](http://facebook.github.io/stetho/)                        | [recycler-fast-scroll](https://github.com/plusCubed/recycler-fast-scroll) |
90| [nlohmann json](https://github.com/nlohmann/json)         | [faad2](http://www.audiocoding.com/faad2.html)                                                      | [wasapi](https://msdn.microsoft.com/en-us/library/windows/desktop/dd371455(v=vs.85).aspx)                                                      |                                            | [libressl](https://www.libressl.org/)                                          | [fabric](http://fabric.io)                                         |                                                                           |
91| [kissfft](http://kissfft.sourceforge.net/)                | [exoplayer](https://github.com/google/ExoPlayer)                                                    | [directsound](https://msdn.microsoft.com/en-us/library/windows/desktop/ee416960(v=vs.85).aspx)                                                 |                                            | [nv-websocket-client](https://github.com/TakahikoKawasaki/nv-websocket-client) | [AndroidVideoCache](https://github.com/danikula/AndroidVideoCache) |                                                                           |
92| [sigslot](http://sigslot.sourceforge.net/)                |                                                                                                     | [waveout](https://msdn.microsoft.com/en-us/library/windows/desktop/dd743876(v=vs.85).aspx)                                                     |                                            | [okhttp](http://square.github.io/okhttp/)                                      |                                                                    |                                                                           |
93| [wcwidth.c](http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c) |                                                                                                     |                                                                                                                                                |                                            |                                                                                |                                                                    |                                                                           |
94
95# license
96
97```
98Copyright (c) 2004-2021 musikcube team
99
100All rights reserved.
101
102Redistribution and use in source and binary forms, with or without
103modification, are permitted provided that the following conditions are met:
104
105 * Redistributions of source code must retain the above copyright notice,
106   this list of conditions and the following disclaimer.
107
108 * Redistributions in binary form must reproduce the above copyright
109   notice, this list of conditions and the following disclaimer in the
110   documentation and/or other materials provided with the distribution.
111
112 * Neither the name of the author nor the names of other contributors may
113   be used to endorse or promote products derived from this software
114   without specific prior written permission.
115
116THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
117AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
118IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
119ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
120LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
121CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
122SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
123INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
124CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
125ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
126POSSIBILITY OF SUCH DAMAGE.
127```
128