mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.24k stars 1.24k forks source link

Wishlist: OpenSubSonic Integration #13251

Open ZenKyma opened 1 month ago

ZenKyma commented 1 month ago

Feature Description

Subsonic is an open-source media library with an extensive API (over HTTP as I understand). There are a ton of open-source music servers (Ampache, Funkwhale, Navidrome etc.) build around this API so that music players who support this API can get metadata and music from server libraries and manage the database on the server application. OpenSubsonic is an initiative that aims to improve the current Subsonic API, bringing a richer user experience when using a Subsonic client.

Mixxx already has features to import libraries from iTunes, Recordbox and Serato, at least partially. A useful extension to database management might be integrating with OpenSubSonic servers over the network, especially considering that proprietary DJ applications have already started to implement streaming features over commercial platforms recently.

I personally use Nextcloud+Navidrome to synchronise my music library across all my devices and manage playlists, favorites and ratings of my tracks. It would be immensely useful to have Mixxx act as an OpenSubSonic client and benefit from a server's well-established library.

Mixxx users could potentially benefit from the following features of the OpenSubSonic protocol:

Possibly desirable to implement in connection with #13129 or as an alternative solution to library management over network.

ZenKyma commented 1 month ago

My suggestions:

If tracks are found to already exist locally, it would be sensible to link the local track to the remote subsonic object, such that local files can retain their folder structure and still benefit from remote playlist management and rating. If tracks files are organized manually and moved from their original download location, Mixxx should keep their links with the serverside subsonic option.

As metadata is not always editable remotely, Mixxx would need a way to know when it is supposed to import metadata from remote and when it should keep the local metadata upon conflicting local and remote metadata (For instance if BPM/Key is already filled in, keep local data, if it is empty, fetch from remote). Existing metadata should only be updated optionally.

Also Mixxx should only create playlists server-side, if the playlist contains tracks with links to existing tracks on the subsonic server. Possibly it could filter out tracks that only exist locally and create and update playlists remotely with the subset of remotely available tracks. Or it could differentiate between local playlists and remote playlists entirely.

In case of both ratings/favorites and bookmarks-hotcues, there would need to be a way to resolve conflicts between local and remote data upon first sync.