4 ms·
How is the tagging system in DeaDBeef? My music library has grown exponentially in the past year or so, due to boredom during covid, and I've come to the concl
by benrbray 6y ago
How is the tagging system in DeaDBeef? My music library has grown exponentially in the past year or so, due to boredom during covid, and I've come to the conclusion that playlists (as in, static lists of music files that you need to update manually) are functionally useless for large libraries.
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.
- brnt 6y agoI use Quodlibet and it allows you to construct such queries.
- butz 6y agoI vaguely remember one music player having support for SQL queries for playlist building, seemed novel at the time, but now I cannot find the name of it.
- declnz 6y agoI added a PoC for this as an alternative query language for Quod Libet [1] but never got enough time to develop fully. Even supported things like: artist = /The \w+/ AND album = "Greatest Hits" ORDER BY DATE LIMIT 100 MB [1] https://github.com/quodlibet/quodlibet/issues/821 https://github.com/quodlibet/quodlibet/issues/821
- mikeyjk 6y agoYour music taste sounds appealing to me, out of curiosity would you have some bands/artists you'd recommend off the cuff?
- benrbray 6y agoSure, I only very recently started expanding my music horizons, but here are some I picked randomly from my library. Lately I'm into desert blues / enka / math rock / city pop. 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 https://www.youtube.com/user/zagorofficial)
- marcodiego 6y agoClassic forró and "japanese math rock" that is what I'd call eclecticism.
- marcodiego 6y agoGeographically speaking, these styles are almost perfect antipodes.
- egypturnash 6y agoiTunes does this. It calls them “smart playlists” and they are one of the reasons I don’t use other players. My copy spends most of its time wandering through a smart playlist designed to not play anything played or skipped within the last couple of weeks.
- Hamuko 6y agoBeets has a smartplaylist plugin that generates playlists based on the queries you give it. https://beets.readthedocs.io/en/stable/plugins/smartplaylist.html 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 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.html https://beets.readthedocs.io/en/v1.4.5/plugins/lastimport.ht...) for example adds a play_count field.
- upofadown 6y agoCMUS has a fairly sophisticated filter language. Example from the man page: 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 https://linux.die.net/man/1/cmus Text interface ... but then most good things are...