mixxxdj / mixxx

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

Abstract over library exporters #12126

Open fwcd opened 11 months ago

fwcd commented 11 months ago

Feature Description

Would be nice to have an abstraction for Mixxx library exporters that unifies the already implemented Engine Prime export with a few common formats, e.g.:

On the code level, it would be nice to have an interface that can easily be implemented for new formats and on the UI level, perhaps replacing the current Library > Export Library to Engine Prime with Library > Export Library... would make sense (or a submenu listing the different formats).

Since a lot of the UI around library exports isn't format-specific, we might be able to reuse/generalize the dialog for selecting crates, picking an output path etc.

ghost commented 11 months ago

Maybe also library importers too then? Rekordbox, iTunes, ... Or maybe this is not possible?

fwcd commented 11 months ago

Depends on what you mean by library import, Mixxx can already read a number of these formats (Rekordbox, Serato, Traktor, iTunes) and you can import individual playlists/crates from them.

ghost commented 11 months ago

Why is Traktor not in the list? I use 2.4 Beta on Windows 10.

afbeelding

fwcd commented 11 months ago

Is it checked in your settings?

Screenshot 2023-10-16 at 23 32 49

If so, then Mixxx likely can't find your Traktor library. IIRC some of these library integrations only search for a handful of standard locations, e.g. for Traktor it searches for $HOME/Documents/Native Instruments.

ghost commented 11 months ago

If so, then Mixxx likely can't find your Traktor library. IIRC some of these library integrations only search for a handful of standard locations, e.g. for Traktor it searches for $HOME/Documents/Native Instruments.

I understand. Everything is checked there. But I only used Rekordbox and Serato and NEVER iTunes (also never Traktor), but iTunes is in the list. A bug?

fwcd commented 11 months ago

For iTunes libraries Mixxx supports reading an XML library file from an arbitrary location, e.g. an external drive. You can try that out by clicking the iTunes icon, which should present you with a file picker. So that's intentional (if you don't need iTunes or some other integration, you can always hide it by unchecking it in the settings).

Admittedly, the library support isn't super consistent, it all depends a bit on which ones people are interested in maintaining.

Holzhaus commented 11 months ago

Actually I think the library export would be much nicer UX-wise if it was integrated with the import feature.

Something I have in mind is adding an Engine Prime entry to the sidebar, with a context menu "Create External Library" where you pick a drive/directory to create a subnode in the sidebar tree. Then you could drag an drop tracks, crates or playlists onto that to add it to the export. Of course, that would only make sense if it was also possible to read the engine prime from that location.

That system would also work for Serato and Rekordbox if we added export functionality at some point. You could just drag tracks to existing libraries.

fwcd commented 11 months ago

That's an interesting idea, though I still think an entry in the Library menu would make sense for the export. A lot of other programs place their export feature into one of the "main" menus (usually File, but in this case Library should be pretty clear), so I would assume that many users would intuitively look there too.

I'd actually argue that the menu bar is a bit underused in Mixxx, though I also do find menu bar entries to be a lot more discoverable than context menu entries. They often follow standard conventions to certain degree and are neatly organized by feature. I admit that this perspective might be a bit macOS-centric though, since you can search for menu bar entries there, not sure if there are any desktop environments on Linux that implement something similar (menu popping with alt is a thing though, right?).

a subnode in the sidebar tree

I could see that being a useful feature in general/for all library integrations, e.g. having several iTunes libraries open at once. Unfortunately, that would probably require some larger, backwards-incompatible schema changes, so that would probably require careful consideration first.