Show HN: Musikcube, a terminal-based music player, library, and streaming server
musikcube.com
musikcube.com
EDIT: oh, same developer, so all links are "legitimately" taken over for the new version, and the old version homepage is https://musikcube.com/old/
For each cool app like this or terminal based chat apps or terminal slack that's another 2.4mb just for overhead! I'm looking at my process monitor right now and I have 250, 250mb, allocated to terminal apps. It's insane!
And when you're done with the ssh session, detach and log out, and everything stays running.
Yes, I know. Thats probably not the devs bad, but Spotify makeing it impossible to write a legal integration. Happy new DRM world.
You can live in the future...TODAY!
I think there were a couple reasons we (myself and the original developers) didn't go with ffmpeg initially: (1) we really wanted to learn how to build a medium-sized C++ app from scratch. Passing everything through to ffmpeg sounded boring. (2) it was difficult to build ffmpeg on Windows in 2007, when we started work on the audio engine. (3) ffmpeg is LGPL/GPL licensed. We originally planned on statically linking everything into a single executable, and were worried the LGPL license would require us to change our license to LGPL. We really wanted BSD.
I don't think any of these are concerns anymore. To be honest, I've sat down a couple times to write an ffmpeg decoder plugin, but always get distracted by missing features and end up working on those instead.
All of that said, I think we should consider looking into ffmpeg again sometime soon, for exactly the reasons you've listed.
http://universalplaylist.stavros.io/
I tried to write a beets implementation, I got rather far but it was cumbersome because beets is more of a library manager than a playlist manager. That meant it lacked playlist functionality, which meant I'd have to write my own playlist manager, which was quite a bit more work than just the import/export plugin :/
I installed it and the UI is absolutely amazing. Would love to make this my main music player.
I am having some issues though, the audio quality of the playback is suspect. I'm playing back an mp3 file and comparing it to cmus and iTunes play it fine, however musikcube has some weird audio artefacts (especially during heavy bass sections). I'm guessing(hoping?) it's some weird config, but this makes it unusable for me. I'm not an audiophile and I'm not being overly sensitive, there's some weird distortion that does not happen in cmus or iTunes.
MacBook Pro 13" 2015.
This is absolutely amazing— much more polished than the alternatives—it feels like christmas.
Now I can't wait to contribute a pull request :) Thank you so much!
In a nutshell: musikcube probably has fewer features than these alternatives, but packages everything together with a clean, straight forward user interface.
Does it work that way?
You can however, in most contexts, switch to the "category filter" view by pressing "f" without explicitly engaging command mode. This will switch the view, then focus the search field. So you can type "fcan" and get artist, album, and genre search results for "can". Not ideal, but does work and is still pretty quick.
I have to ask though, when streaming protocols are fragmented already, why create a new one, and not use one of the existing / well supported ones, such as Subsonic?
Nice UI and UX, lightweight and straightforward, will try it out for a bit!
## Install build dependencies
sudo apt-get install build-essential cmake libboost-all-dev ncurses-dev libncursesw5-dev libcurl4-openssl-dev libfaad-dev libmad0-dev libav-tools libvorbis-dev libflac-dev libmicrohttpd-dev libmp3lame-dev libasound2-dev libpulse-dev;
## Building
mkdir ~/Applications
cd ~/Applications
git clone https://github.com/clangen/musikcube.git
cd musikcube
cmake .
make
# Running
./bin/musikcube
(edits: clarity)
Not sure what the general consensus is regarding connecting recent discussions but several lightweight players were recommended; most were platform-specific.
- Permissively licensed: https://github.com/clangen/musikcube/blob/master/LICENSE.txt
- CMake: https://github.com/clangen/musikcube/blob/master/CMakeLists....
- Lean n' mean plug-in system to support audio codecs and sound systems? Check, https://github.com/clangen/musikcube/tree/master/src/plugins
- CURSES (TUI) C++ abstraction layer: https://github.com/clangen/musikcube/tree/master/src/musikcu.... Based off https://github.com/clangen/cursespp.
- Indexes (a la mpd?): https://github.com/clangen/musikcube/tree/master/src/core/li...
- Cross-platform audio abstraction interfaces? https://github.com/clangen/musikcube/tree/master/src/core/au...
This could stand a chance of uprooting the mpd + ncmpcpp combo that's been pretty standard for many terminal lovers.
That's not even to mention this app also has an android client (https://raw.githubusercontent.com/clangen/clangen-projects-s...), and something looks like it's being cooked up for windows, too: https://github.com/clangen/musikcube/tree/master/src/musikwi...
Amazing skills. Just 2 main contributors: https://github.com/clangen/musikcube/graphs/contributors. If the git history is pristine (information could have been lost/altered during a cross VCS import), the project was also around since at least 2008: https://github.com/clangen/musikcube/tree/b272bf6
And before you ask, I'm actually not only preparing the issue details, I'm looking to fix it myself.
https://github.com/clangen/musikcube/issues/120
That section of code should be refactored though.
[1] https://github.com/clangen/musikcube/tree/master/src/musikdr...
[2] https://github.com/clangen/musikcube/wiki/remote-api-documen...
Then a web frontend could be served served audio over HTTP and play that back on the remote client.
Pulseaudio is system based audio, whereas here we are just talking about local audio to the musickube app.
Interesting idea to add pulseaudio compatability though..
Anyone knows of a cli app that can play local files as well as youtube?
I would have hoped there's a program that can do both.
Using it as a consumer is pointless, you cant hear those frequencies at all. Adults typically cant even hear up to nyqust at 44.1k. If youre a big music fan youve probably ruined your ears so good luck hearing anything above like 15k tbh.
16 bit was a compromise to do with wanting to keep CDs from being the size of dinner plates, 24 bit is legitimately better, but you're not going to notice with typical music.
For editing and production, more bits per sample and more samples per second make it possible to mix sources without reducing quality of the final output.
There is no advantage to that final output being 24/192, or 20/88.
There is no ear strain that comes from higher sample rates, though.
However! Xiph.org has a video demonstration using oscilloscopes, showing that high-frequencies at 20kHz still are perfectly represented even with just 44.1kHz recording. It's here if anyone is interested, switch the Chapter Selection on the video to the Stairsteps chapter:
SSL support through a different app. Okay! Will have to finally begin using Nginx then. Good opportunity to learn something new.
Is there a way to navigate the collections by folders on disk, not by artist/album/genre? I keep my music nicely sorted on disk and I really got used to it.
it shows that packages "asound", "pulse" and "libmp3lame" are not available.
What do I do?
1. "asound" refers to ALSA. 2. "pulse" is PulseAudio 3. "libmp3lame" is LAME
A quick google search looks like these may be the packages you need:
1. alsa-lib-devel 2. pulseaudio and pulseaudio-libs-devel 3. liblame-devel, maybe?
Looks like I'll need to spend some time here soon installing a few more popular distros and figuring out the exact package names.
I've been using Swinsian, and am really, really happy with it. I also want to try this out, but for something similar to iTunes without all the terrible, Swinsian is A+++++.
I used mpd and cmus for years but the main problem I had with them is that when I changed the directory structure of my music files it would corrupt my playlists. There are a lot of different work arounds but eventually I decided that to build a playlist I wanted to copy the file into a playlist directory instead of just reference the file location in a text file.
Right now I use Ranger (a CLI file manager) as the "front end" to mpv. I run mpv on a unix socket so it can be controlled remotely and I can request things like artist, title, etc.. and use that info in desktop notifications and widgets (if I want). Most of the time I never even look at my music player so this works out really well, and I already have mpv installed for video so I'm finding another way to utilize a program I already have installed instead of using another one.
Uses `youtube-dl` backend.
I look forward to using it, and thanks for making it free/open source.