[GSoC 2025 Antonio Giordano] Multi-Genre & Autocompletion Support Newspost#403
[GSoC 2025 Antonio Giordano] Multi-Genre & Autocompletion Support Newspost#403Swiftb0y merged 14 commits intomixxxdj:websitefrom
Conversation
|
Thank you for this PR, can you add the preview in your first post (when changes made in the Pr the previewlink must be adapted as it's bounded to the date) YouTube videos can be embedded like this (see readme) |
|
You keep on writing "Mixxx only supported a single genre per track", Searches on genre always searched "... like' %xxx%' ... ", so a search for tango or dance would return the example track. You didn't change this situation, tracks still can have different genres and they still can be formatted in different ways as there is no check. |
Please elaborate: |
Can you please elaborate:, how can a user manage the "dedicated database system" |
Can you please elaborate: |
Can you elaborate how and what happens exactly when a user wants to add/change/remove a genre to multiple tracks, can a user undo actions? What/where is data changed? |
What's the revolution?
|
Please elaborate: |
Smart Intersection Display Please elaborate: what happens if I add a genre / remove a genre/ want to change the genre for all selected tracks. Can I undo? |
Please elaborate: will the widget recognize all text in the genre field of the selected tracks as genres? What if I want to add a custom genre definition? |
What's the use of the genre_tracks table? |
|
What is the actual new genre-feature with which Mixxx now understands genres? |
If a users positions on a genre field of a track in the tracktable, presses F2 and enters the text "electronic', will Mixxx correct it? |
Not correct |
If a track contains genres with long (multilevel) names how will they be displayed in the widget: |
when I enter Hip hop as a genre, will Mixxx correct it to the previous defined Hip-Hop genre? |
That's true! I could modify the section Before the Project with: and then the section After This Project: I understand that mine implementation is a "parallel system" of the original one in the database with multi-genre support through tables and DAO but the metadata field of the file remain a text field and the user can still write mutiple genres manually also without this structure. |
Modified in this: |
Actually Genre management in the new system is only indirect:
Change with:
|
In the current context:
So: Autocompletion is currently available inside the redesigned genre editors within the Track Info dialogs (both single and multi-track). It is powered by the central genre database and suggests existing entries as you type. I can rewrite that bullet point with: "Provide context-aware autocompletion inside the genre editing dialogs, based on existing genres in the library" |
When the user selects multiple tracks in the library and opens the Track Info dialog, the new genre editor displays only the genres common to all selected tracks (using intersection logic).
If metadata writing is enabled in Mixxx settings, changes are also written to the track files when triggered manually or via auto-save. However, the actual "genre" tag written to the file remains a single text field with genres joined by a slash (/), to preserve compatibility with file tag formats. Example: After selecting all of them: So that section could became:
|
Can understand that the term "revolutionary" is maybe too much. Reformulated paragraph:
|
Yes, the tag-based genre editor supports drag & drop to reorder genres, and this order is preserved in the track’s database record. When the genres are written to the file tag (or shown in the genre column), they appear in the same order. that line could be: |
How Multi-Track Genre Editing Works:
|
That line could be: |
The genre_tracks table is part of the normalized schema and is designed to represent a many-to-many relationship between tracks and genres.
|
I noticed that manually entering I'd recommend to not claim that it works like this or that as long as none of those changes is neither fully functional let alone merged into Mixxx. It'd be better to clarify that this and that is the goal, but currently still WIP. -- didn't read your latest replies yet, so sorry if you already changed that -- |
That's good point on which I was reflecting in these days looking at the code: Currently, the fallback parser splits genres using a regular expression that matches:
If a user has entered genres using non-standard or uncommon separators; for example, "House//Techno" — then the parser will interpret this as one single genre, not two. In future versions, we could consider:
That line could be change in: |
Previously, Mixxx stored genres as a plain text field (e.g., "House/Techno") and treated the entire string as one value. There was no semantic parsing, indexing, or structure; genres were not stored or processed as individual entities. Specifically:
So that sentence could be: "Mixxx now understands genres as structured, queryable entities, not just text strings. This is powered by a new normalized database model, genre-aware editing tools, and a backend designed for intelligent handling of genre data." |
This is a limitation that still exists today.
So that line could became: |
What & great question! These multi-level names are displayed as individual tags inside the WGenreTagInput widget. Visually:
So while the system doesn’t currently support true hierarchical genre structures, it does handle long or structured names visually and functionally without issue. This setup allows users to define rich genre structures today, even if the app doesn’t yet interpret the hierarchy and provides a solid foundation for supporting hierarchical genres in the future. |
Right, the genre database does not automatically correct or normalize entries like "Hip hop" to "Hip-Hop".
|
You're totally right, thanks for pointing this out.
As a result, the Track Info dialog might appear empty or desynchronized after such edits. |
| @@ -0,0 +1,144 @@ | |||
| title: GSoC 2025 - Multi-Genre & Autocompletion Support Now in Mixxx! | |||
There was a problem hiding this comment.
Not in yet. Only the PR exists (which is fine for the GSoC submission, but not for the users wanting to use this feature).
There was a problem hiding this comment.
Totally right! Thanks for pointing this out
Co-authored-by: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com>
Co-authored-by: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com>
Co-authored-by: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com>
|
you still have loads of non-breaking spaces sprinkled all over the the file. Please sanitize those. They are primarily around your |
|
You'll probably have to look at your file with a hex editor to find these issues. |
|
Thank you @Swiftb0y for the help. That looks much nicer: logic, explication & description + what the genre-feature is all about, a lot of questions are solved. |
|
Thank you, this clearly explains all the work don, in the GSoC-Genre-Project. |
|
Umm, this still reads as if the genre features were available, eg. in some alpha version. |
|
yeah... I kinda see that. I already complained about that previously and antonio changed it, but if you feel like it hasn't been changed enough, feel free to add a more explicit disclaimer. |
Description
This pull request adds the final blog post for my Google Summer of Code 2025 project. It details the new multi-genre and autocompletion features developed for Mixxx.
Multi-Genre & Autocompletion Support Now in Mixxx!Antonio GiordanoPreview