DeaDBeeF – A modular audio player for Unix-like systems
deadbeef.sourceforge.io
deadbeef.sourceforge.io
Closest thing I found on Linux is ncmpcpp and it's still a far cry from everything I can do in foobar2000.
It's Linux only and it's amazing. It does not automatically re-scan the folder for music but it's instant, may be in future it can do that.
I'm yet to find a music player that is so simple, uncluttered and powerful.
The media library features are almost as good, if not for a nasty bug where using the filter in the library "tree view" can lock the app for many seconds for no reason. The normal search window/panel is not affected and is always instantaneous tough.
I've tested dozens of media players on linux, most choke on my huge library, but clementine is perfectly capable. It also has the same feature of adding new files automatically via inotify, along every other functionality you specified in your post!
It also seems to be lacking maintainers.. it has been on the same run of rc releases for years now! That means that bugs have creeped up unfortunately, but honestly, nothing better for people who really cares for their oversized music library.
But speaking of Clementine: I'm amazed that development seems to have picked up again, commits are happening on Github ( https://github.com/clementine-player/Clementine) Last time I checked the repo it was silent.
It also had a pretty silly bug that went unfixed the entire time I used it where it would (rarely, triggered while moving around the playlist) say it's playing song X but in reality it's playing song Y.
If you can replicate this on a new release (4.4.0 was out recently), please file a bug! [1]
https://docs.microsoft.com/en-us/windows/win32/fileio/obtain... ; the Linux equivalent is "inotify".
> I press 'o' on a track and it opens a file explorer in the location where the track is located and it also selects it
https://stackoverflow.com/questions/13680415/how-to-open-exp...
On Linux, you'd have to do some kind of GNOME integration I am not familiar with. The Windows shell integration is a very handy API, although you have to do the usual digging for explanations and examples.
I too have a large library and foobar just picks it up immediately.
What I've been looking for, but so far haven't been able to find, is a system that creates playlists from queries to my music database, based on tags I assign to individual songs. Even better if I can use a logic programming / query language like Datalog to help simplify tagging! For instance, if I have songs with the following tags:
(Song 1) japan 1971 japanese jazz funk fusion female
(Song 2) japan 2004 instrumental math-rock
(Song 3) japan 1983 japanese enka female
(Song 4) korea 1983 japanese rock male
(Song 5) brazil 1973 spanish jazz instrumental
(Song 6) mali 1979 blues rock folk tuareg
(Song 7) algeria 1974 french folk
I should be able to define logic rules that make tagging easier. Ideally, the tagging system should automatically write any deduced tags as metadata for the original files (for compatibility with other music players), with some way to keep track of which tags were added automatically vs manually, in case the deduction rules change. asia(x) :- japan(x) OR korea(x) or ...
africa(x) :- algeria(x) OR egypt(X) OR ...
latin(x) :- mexico(x) OR brazil(x) or ...
rock(x) :- math-rock(x)
etc
I should be able to create playlists from the following queries that automatically update themselves when I add new music: (playlist 1) ?- language(x,"french") AND region(x, "africa") AND (1960 < year < 1970)
(playlist 2) ?- region(x,"asia") AND genre(x,"rock")
Apologies for the inconsistent syntax, but hopefully you get the rough idea. Does anything like this exist? The built-in Rhythmbox music player for linux has decent support for saving playlists based on tags, but there's no built-in system for logic programming based on tags.https://beets.readthedocs.io/en/stable/plugins/smartplaylist...
Granted, you need to start using beets to manage your library and I don't think there's any free tagging options in beets. It does have properties like "year", "language" and "genre" for songs though and you can always write your own plugins for it. It's in Python, so writing plugins is pretty easy. I for example wrote a plugin that adds music to my MPD's main playlist after it's been added to the library: https://github.com/Hamuko/beets-mpdqueue. Plugins can also add arbitrary data to the database and lastimport (https://beets.readthedocs.io/en/v1.4.5/plugins/lastimport.ht...) for example adds a play_count field.
Filter all rock (anything with rock in genre tag) music from 80s-
:filter date>=1980&genre="*rock*"
:filter ~y1980-~grock
... which can be found here:* https://linux.die.net/man/1/cmus
Text interface ... but then most good things are...
artist = /The \w+/ AND album = "Greatest Hits" ORDER BY DATE LIMIT 100 MB
Tinariwen - Sastanàqqàm (https://www.youtube.com/watch?v=vACZA9dGvV4)
Mdou Moctar - Tarhatazed (https://www.youtube.com/watch?v=GZvPoE0EH1o)
椎名林檎 – 人生は夢だらけ (https://www.youtube.com/watch?v=GDnLHd2Ei3Y)
Tatsuro Yamashita - LOVE SPACE (https://www.youtube.com/watch?v=HNQic9N2I7c)
Mazouni - Écoute-moi camarade (https://www.youtube.com/watch?v=mnsa9dazW04)
Stromae - Papaoutai (https://www.youtube.com/watch?v=oiKj0Z_Xnjc)
Spitz - Yasashii Ano Ko (https://www.youtube.com/watch?v=RkIOd78C82I)
Trio Nordestino - Forro Pesado (https://www.youtube.com/watch?v=NwbqMR8k8gg)
Given - Marutsuke (https://www.youtube.com/watch?v=AI_fCegBxZw)
I usually find music through radiooooo and random YouTube playlists/channels, such as below: Radiooooo https://radiooooo.com/
Habibi Funk (https://www.youtube.com/channel/UCSzlOYn5Ae0KO94AWy7XeVw)
japanese math rock to listen while strolling around in the cherry blossoms (https://www.youtube.com/watch?v=q-YDhSU4OwI&t=1661s)
japanese enka when gracefully ending an everlasting war (https://www.youtube.com/watch?v=spcoJ8Xcqy8&t=1055s)
japanese indie rock songs (https://www.youtube.com/watch?v=sRiruE1FaIQ)
My Analog Journal -
(https://www.youtube.com/user/zagorofficial)Some wishes from me, from memory:
- You can't use more than one scrobbling service simultaneously.
- You can't tweak parameters of burnt-in converter settings
- You can't easily switch the language of the interface (It just drives me nuts when software and internet pages assume the language)
Well, I have the perfect solution for you. :) It's not a deadbeef plugin, but a user daemon that can load the track information from any player and can submit to Last.fm, Libre.fm and ListenBrainz.
The project is on github[1] and I believe it's packaged for Archlinux, Fedora, openSUSE.
I make a few tweaks (it's open source, so you can!), but it is very pleasant to use and lets me treat my music as just a collection of playlists rather than railroading me into a big complicated media library tracking system.
Additionally, the main developer is pretty active and it is getting a lot of love in bugfixes and updates for newer macOS, and pull requests and issues get actively looked at as well.
edit: oh, and the codebase was quite nice and easy for me to dig into as well :)
One advantage of DB is how simple and elegant its plugin API is. I remember fb2k's being the worst of the early-2000s high corporate C++ style (with a thicket of templated factory classes that were completely opaque to debuggers and IDEs); in comparison, DB's is a straightforward plain C interface with nary an unnecessary moving part.
I miss Oink/What.CD.
Yeah, you get the version they choose. Admittedly, this is not something I run into often, but for example: the stereo remasters of the early Beatles albums sound terrible to me with headphones because everything is hard-panned (e.g. vocals are only in the right channel). These albums were originally mixed in mono and sound way better that way. It's impossible to listen to these albums in mono on Spotify even though digital versions do exist.
Messing with the few options offered by the spotify client didn't help either. I'm mostly looking for a solution to use my music libary with a streaming service as drop-in for missing tracks.
Anecdotally though Spotify's "Very High" quality works well for me and honestly in 99% of cases it is indistinguishable. My setup sure isn't the greatest, but I have a dedicated DAC, a headphone amp, and speaker amp with some reputable headphones and bookshelf speakers. I keep CD sourced FLAC files on a local disk but I never really play them anymore.
Maybe if I had large floorstanding speakers in the 1000$+ category there'd be a lot more cases where Spotify falls short - where the HiFi offering or local FLAC would have a strong case - but I certainly recognize it is a niche case.
[1]: https://newsroom.spotify.com/2021-02-22/five-things-to-know-...
torrents of such material are non-existent, dead or unreliable at best, and almost never lossless
the point being to avoid being constantly let down by audio streaming providers
but safe to say the point was missed on this occasion
So you still have to do that. It's not an option so we don't get the point you're making.
it’s usually downloading, fixing the tags (if needed), moving it to its subdir in the music directory. that’s all
What makes it worth it for you?
The long version: I know it's a lot of money, and I'm not looking to die on this hill, but here's the bullet point list of why it really works for me:
- I have a large (400gb) lossless local library, and I really wanted an intelligent way to just put it on "random", if that makes sense. So the truly killer feature for me is being able to play an album/song -- and then have that mood continue afterwards without my interaction. My own local Spotify is worth quite a bit to me, as it turns out.
- related to the above -- I'm aware lifetime license means just the company, and I've been bitten before. But the people behind it have specifically stated that, in the event of a buyout or closing of shop, they would release a final "untethered" version of their product. They also apparently have a history of supporting products in similar ways, since I believe their previous, defunct companies servers are still operational.
- The metadata/connections are pretty fabulous. They have coverage for a significant amount of niche artists, and plenty of backup photos/notes. They do a great job of connecting musicians in the same "scenes" too, so I've had fun exploring my own library wiki-style and learning influences and collaborations I would never know otherwise.
- the wide cross-compatibility with other audio hardware. Not something I've explored much, but very reassuring since I can make it play out of pretty much anything I want.
- I realize Tidal is somewhat opposed to the local-Spotify goal I listed up top, but Tidal also had a deal at the same time, so I figured why not.
- What ends up happening is that I listen to an album or two I own, get busy in something -- then realize it's switched to Tidal and it's something I've never heard/like. I then go on Bandcamp and buy the album, thus adding it to my local library.
So it's given me this nice loop of discovery, to collection, to adding it to the main queue for when I switch to library-only mode.
()I was also fortunate enough to have a job during this pandemic, so I figured I could use the stimulus for something I would not otherwise purchase -- the lifetime license.)
CONS:
- Lossless music isn't a dealbreaker in a streaming service for me, so I do wish they integrated with something a little cheaper like Apple Music or even Spotify. But I get that's against their Audiophiliac Code of Conduct, and I can live with it.
- No good way to use it remotely, like in the car. Hopefully that'll be a part of 2.0.
I've been using Flacon, MusicBrainz and a combination of shntools but Foobar experience was miles ahead.
Will give this one a try.
In the late 90s I was a happy Winamp user, because back then it was just a player and not much else. Deadbeef is exactly that, it works perfectly under linux (KDE), it is very unobtrusive, can be controlled by the media keyboard buttons if needed, in general, it just gets out of the way and does one thing and one thing well (play music, that is, preferably in the background).
Once I came to know about deadbeef and found these features were present, I switched to it.
> 0xDEADBEEF or 3735928559 is frequently used to indicate a software crash or deadlock in embedded systems. 0xDEADBEEF was originally used to mark newly allocated areas of memory that had not yet been initialized—when scanning a memory dump, it is easy to see the 0xDEADBEEF. It is used by IBM RS/6000 systems, Mac OS on 32-bit PowerPC processors and the Commodore Amiga as a magic debug value. On Sun Microsystems' Solaris, it marks freed kernel memory. The DEC Alpha SRM console has a background process that traps memory errors, identified by PS as "BeefEater waiting on 0xdeadbeef".[1]
But these days I prefer the simplicity of mpv even for audio. It supports most audio formats, M3U playlists and HTTP, since I don't keep music locally anymore, and shows metadata and album art just fine, with a consistent UI across platforms and very lightweight on resources. Turns out I don't need much more than that.
It's even extensible with Lua, so scrobbling is also supported: https://github.com/l29ah/w3crapcli/blob/master/last.fm/mpv-l... .
If DeaDBeeF has no library, how can I search for tracks that have mood tag "uplifting" and instrument tag "piano"? How do I create smart playlists based on some combination of rating, last played, moods, genres and instruments? My guess is, it can't. Or if it can, it's via adding all of my tracks to a playlist, waiting for the metadata to load up, and then search. Have I got that right?
The reasons are pretty simple: those kind of plugins would break and cause crashes when the internals of the player were changed.
I always found things to nitpick about music players, at least with deadbeef you fight with the layout editor then you have noone to nitpick but yourself