{"id":13392991,"url":"https://github.com/clangen/musikcube","last_synced_at":"2025-05-14T12:08:21.878Z","repository":{"id":28957055,"uuid":"32483164","full_name":"clangen/musikcube","owner":"clangen","description":"a cross-platform, terminal-based music player, audio engine, metadata indexer, and server in c++","archived":false,"fork":false,"pushed_at":"2024-07-14T20:56:37.000Z","size":73078,"stargazers_count":4384,"open_issues_count":150,"forks_count":300,"subscribers_count":72,"default_branch":"master","last_synced_at":"2025-04-03T02:06:36.395Z","etag":null,"topics":["alsa","audio-engine","audio-player","coreaudio","cross-platform","curses","directsound","music-library","music-player","music-player-client","pulseaudio","terminal","wasapi"],"latest_commit_sha":null,"homepage":"https://musikcube.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clangen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.txt","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-03-18T20:41:57.000Z","updated_at":"2025-04-02T20:29:11.000Z","dependencies_parsed_at":"2023-12-03T21:23:40.677Z","dependency_job_id":"eb7f97fd-eb71-4a4c-8e65-27b464558e8f","html_url":"https://github.com/clangen/musikcube","commit_stats":null,"previous_names":[],"tags_count":114,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clangen%2Fmusikcube","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clangen%2Fmusikcube/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clangen%2Fmusikcube/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clangen%2Fmusikcube/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clangen","download_url":"https://codeload.github.com/clangen/musikcube/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248154987,"owners_count":21056542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alsa","audio-engine","audio-player","coreaudio","cross-platform","curses","directsound","music-library","music-player","music-player-client","pulseaudio","terminal","wasapi"],"created_at":"2024-07-30T17:00:40.656Z","updated_at":"2025-04-10T03:45:39.190Z","avatar_url":"https://github.com/clangen.png","language":"C++","funding_links":[],"categories":["TODO scan for Android support in followings","C++","Entertainment","Apps","Packages","\u003ca name=\"music\"\u003e\u003c/a\u003eSound and music","Applications","Repository app"],"sub_categories":["Music","MediaManagement","CLI Tools","开源项目","General"],"readme":"# musikcube\n\na cross-platform, terminal-based audio engine, library, player and server written in c++.\n\nmusikcube 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.\n\ncheck out the [installation guide](https://github.com/clangen/musikcube/wiki/installing) to get up and running.\n\nbe 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.\n\nif you want to build it from source, [the instructions are here](https://github.com/clangen/musikcube/wiki/building).\n\n# screenshots\n\nit looks something like this on windows:\n\n![windows screenshot](https://raw.githubusercontent.com/clangen/clangen-projects-static/master/musikcube/screenshots/windows.png)\n\nand this on macos:\n\n![osx screenshot](https://raw.githubusercontent.com/clangen/clangen-projects-static/master/musikcube/screenshots/osx.png)\n\nand on linux:\n\n![linux screenshot](https://raw.githubusercontent.com/clangen/clangen-projects-static/master/musikcube/screenshots/linux.png)\n\nhere's a demo (made with asciinema):\n\n[![asciicast](https://asciinema.org/a/129748.png)](https://asciinema.org/a/129748)\n\nwhile 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:\n\n![android screenshot](https://raw.githubusercontent.com/clangen/clangen-projects-static/master/musikcube/screenshots/android.png)\n\n# installation\n\nbinaries are available in the [releases](https://github.com/clangen/musikcube/releases) page.\n\nwhile macos binaries are provided, you can also install via homebrew as follows:\n\n- `brew install musikcube`\n\non freebsd musikcube can be installed as follows:\n\n- `pkg install musikcube`\n\non openbsd musikcube can be installed as follows:\n\n- `pkg_add install musikcube`\n\non windows, you can install via chocolatey:\n\n- `choco install musikcube`\n\nthen run using shell, Win+R dialog or by typing in Start Menu `musikcube` or `mcube`.\n\n# raspberry pi\n\nmusikcube 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).\n\n# compiling\n\nif you'd like to compile the project yourself, you can check out the [build instructions](https://github.com/clangen/musikcube/wiki/building).\n\n# keyboard shortcuts\n\na list of all keyboard shortcuts can be found in the [user guide](https://github.com/clangen/musikcube/wiki/user-guide)\n\n# streaming server\n\nmusikcube 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.\n\n**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.\n\nyou 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.\n\nif you're interested in writing your own frontend, [api documentation is available here](https://github.com/clangen/musikcube/wiki/remote-api-documentation).\n\n# sdk\n\nthe 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\n\n# dependencies\n\nmusikcube 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:\n\n| core                                                      | decoders                                                        | outputs                                                                                                                                        | metadata                                   | networking                                                                     | miscellaneous                                                      | ui                                                                        |\n|-----------------------------------------------------------|-----------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------|--------------------------------------------------------------------------------|--------------------------------------------------------------------|---------------------------------------------------------------------------|\n| [sqlite](https://www.sqlite.org/)                         | [ffmpeg](https://ffmpeg.org/)                                   | [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/)                          |\n| [utfcpp](https://github.com/nemtrif/utfcpp)               | [libopenmpt](https://lib.openmpt.org/libopenmpt/)               | [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)      |\n| [nlohmann json](https://github.com/nlohmann/json)         | [libgme](https://bitbucket.org/mpyne/game-music-emu/wiki/Home)  | [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) |\n| [kissfft](http://kissfft.sourceforge.net/)                | [exoplayer](https://github.com/google/ExoPlayer)                | [wasapi](https://msdn.microsoft.com/en-us/library/windows/desktop/dd371455(v=vs.85).aspx)                                                      |                                            | [openssl](https://www.openssl.org/  )                                          | [fabric](http://fabric.io)                                         |                                                                           |\n| [sigslot](http://sigslot.sourceforge.net/)                |                                                                 | [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) |                                                                           |\n| [wcwidth.c](http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c) |                                                                 | [waveout](https://msdn.microsoft.com/en-us/library/windows/desktop/dd743876(v=vs.85).aspx)                                                     |                                            | [okhttp](http://square.github.io/okhttp/)                                      |                                                                    |                                                                           |\n|                                                           |                                                                 | [pipewire](https://pipewire.org/)                                                                                                              |                                            |                                                                                |                                                                    |                                                                           |\n\n# license\n\n```\nCopyright (c) 2004-2023 musikcube team\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice,\n   this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n\n * Neither the name of the author nor the names of other contributors may\n   be used to endorse or promote products derived from this software\n   without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\nSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\nINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\nARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGE.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclangen%2Fmusikcube","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclangen%2Fmusikcube","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclangen%2Fmusikcube/lists"}