Skip to content

Commit 90959c4

Browse files
committed
fix: use standard ascii characters instead of unicode
1 parent e8e7c30 commit 90959c4

1 file changed

Lines changed: 56 additions & 57 deletions

File tree

content/news/XXXX-XX-XX-gsoc2025-report-AntonioGiordano.md

Lines changed: 56 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -5,50 +5,50 @@ tags: GSoC2025, features, library, metadata, genres, multitrack
55
comments: yes
66

77

8-
Hello everyone! I’m **Antonio Giordano**, and Im excited to share the results of my **Google Summer of Code 2025** work on Mixxx. Weve introduced **true multi-genre support** with smart autocompletion, a cleaner editing experience, and tools to migrate your existing librarywithout breaking your flow.
8+
Hello everyone! I'm **Antonio Giordano**, and I'm excited to share the results of my **Google Summer of Code 2025** work on Mixxx. We've introduced **true multi-genre support** with smart autocompletion, a cleaner editing experience, and tools to migrate your existing library without breaking your flow.
99

1010
### Project Vision & Evolution
1111

12-
Our goal was to give DJs flexible, reliable control over genresbeyond a single free-text field. In earlier versions, you could type multiple genres (e.g., `Dance/Electronic/House`), but Mixxx treated that as **plain text**. It couldnt understand or manage individual tags.
12+
Our goal was to give DJs flexible, reliable control over genres beyond a single free-text field. In earlier versions, you could type multiple genres (e.g., `Dance/Electronic/House`), but Mixxx treated that as **plain text**. It couldn't understand or manage individual tags.
1313

14-
To get this right, we started with a **solid multi-genre foundation** thats fast, consistent, and future-friendly. This foundation paves the way for richer features like hierarchical genres.
14+
To get this right, we started with a **solid multi-genre foundation** that's fast, consistent, and future-friendly. This foundation paves the way for richer features like hierarchical genres.
1515

16-
### Whats New
16+
### What's New
1717

18-
**1 Single-Track Genre Editing (Chip UI + Autocomplete)**
18+
#### Single-Track Genre Editing (Chip UI + Autocomplete)
1919

20-
The **Track Properties** dialog now shows genres as compact **chips** with a white **×** to remove, plus **autocomplete** to add existing genres quickly.
20+
The **Track Properties** dialog now shows genres as compact **chips** with a white **x** to remove, plus **autocomplete** to add existing genres quickly.
2121

22-
- **Clean look & feel:** compact chips, thin scrollbar, readable contrast.
23-
- **Autocomplete:** type a few letters and pick from existing genres.
24-
- **No more long strings:** add/remove individual genres directly.
25-
- **Always consistent:** the track table shows human-readable names everywhere.
22+
- **Clean look & feel:** compact chips, thin scrollbar, readable contrast.
23+
- **Autocomplete:** type a few letters and pick from existing genres.
24+
- **No more long strings:** add/remove individual genres directly.
25+
- **Always consistent:** the track table shows human-readable names everywhere.
2626

27-
**Note:** If you type a genre that doesnt exist yet, Mixxx keeps it as a literal. You can map it later using the Orphan Genres tool (see below).
27+
**Note:** If you type a genre that doesn't exist yet, Mixxx keeps it as a literal. You can map it later using the Orphan Genres tool (see below).
2828

29-
**2 Multi-Track Editing (Experimental)**
29+
#### Multi-Track Editing (Experimental)
3030

3131
You can now edit genres across multiple tracks in one go (experimental):
3232

33-
- **Common view:** shows the **intersection** of genres shared by all selected tracks.
34-
- **Batch operations:** add or remove genres for the whole selection.
35-
- **Safe by design:** unique per-track genres are preserved.
33+
- **Common view:** shows the **intersection** of genres shared by all selected tracks.
34+
- **Batch operations:** add or remove genres for the whole selection.
35+
- **Safe by design:** unique per-track genres are preserved.
3636

37-
**3 A Smarter Library: Tree, Counts, and Drag & Drop**
37+
#### A Smarter Library: Tree, Counts, and Drag & Drop
3838

39-
Genres now live in a **tree**. Each node shows **track count** and **total duration**. When you select a track, the genres it belongs to become **bold** in the treecrate-like ergonomics for quick navigation.
39+
Genres now live in a **tree**. Each node shows **track count** and **total duration**. When you select a track, the genres it belongs to become **bold** in the tree crate-like ergonomics for quick navigation.
4040

41-
- **Drag & drop:** drag tracks from the Tracklist onto a genre to assign it.
42-
- **Quick menu:** right-click a track then **Genres** to (de)select on the fly.
43-
- **Rename safely:** renaming a genre changes the **name**, not the ID, so tracks keep their associations.
41+
- **Drag & drop:** drag tracks from the Tracklist onto a genre to assign it.
42+
- **Quick menu:** right-click a track then **Genres** to (de)select on the fly.
43+
- **Rename safely:** renaming a genre changes the **name**, not the ID, so tracks keep their associations.
4444

45-
**4 Clean Migration: Orphan Genres**
45+
#### Clean Migration: "Orphan Genres"
4646

47-
If your library contains free-text genres, Mixxx detects **orphans** and helps you clean them up:
47+
If your library contains free-text genres, Mixxx detects **orphans** and helps you clean them up:
4848

49-
- Right-click the **root** of the genre tree then **Edit Orphan Genres**.
50-
- **Add** a new genre or **Link** a string to an existing one.
51-
- Multi-word strings appear as both a full string *and* individual tokens; add the full string first if you want to keep it as a single genre.
49+
- Right-click the **root** of the genre tree then **Edit Orphan Genres**.
50+
- **Add** a new genre or **Link** a string to an existing one.
51+
- Multi-word strings appear as both a full string *and* individual tokens; add the full string first if you want to keep it as a single genre.
5252

5353

5454
### Why This Matters for DJs
@@ -58,66 +58,65 @@ If your library contains free-text genres, Mixxx detects **orphans** and helps
5858
- One free-text field. No understanding of individual genres.
5959
- No autocomplete.
6060
- Editing meant retyping a whole string.
61-
- Inconsistent naming (Electronic vs electronic).
61+
- Inconsistent naming ("Electronic" vs "electronic").
6262
- No real bulk editing.
6363

6464
**Now:**
6565

66-
- **True multi-genre:** each tag is a first-class citizen.
67-
- **Autocomplete:** fast, consistent tagging.
68-
- **Visual editing:** add/remove with chips.
69-
- **Bulk-friendly:** multi-track editor (experimental) for common operations.
70-
- **Library-aware:** a genre tree with counts, duration, and drag & drop.
71-
- **Backwards-compatible:** your library keeps working; migrate at your pace.
66+
- **True multi-genre:** each tag is a first-class citizen.
67+
- **Autocomplete:** fast, consistent tagging.
68+
- **Visual editing:** add/remove with chips.
69+
- **Bulk-friendly:** multi-track editor (experimental) for common operations.
70+
- **Library-aware:** a genre tree with counts, duration, and drag & drop.
71+
- **Backwards-compatible:** your library keeps working; migrate at your pace.
7272

7373
### How to Use It
7474

75-
**Single Track**
75+
#### Single Track
7676

77-
1. Right-click a track, **Properties**.
78-
2. In **Genre**, start typing and pick from autocomplete.
79-
3. Click the **×** to remove a tag.
80-
4. **OK** or **Apply** to save.
77+
1. Right-click a track, **Properties**.
78+
2. In **Genre**, start typing and pick from autocomplete.
79+
3. Click the **x** to remove a tag.
80+
4. **OK** or **Apply** to save.
8181

82-
**Multi Track (Experimental)**
82+
#### Multi Track (Experimental)
8383

84-
1. Select multiple tracks then right-click then **Properties**.
85-
2. See the **common** genres across the selection.
84+
1. Select multiple tracks then right-click then **Properties**.
85+
2. See the **common** genres across the selection.
8686
3. Add or remove tags in bulk.
8787
4. Save: Mixxx preserves track-specific genres.
8888

89-
**Clean Up Old Text Tags**
89+
#### Clean Up Old Text Tags
9090

91-
1. In the genre tree, right-click the **root** then **Edit Orphan Genres**.
92-
2. **Add** new genres or **Link** strings to existing ones.
91+
1. In the genre tree, right-click the **root** then **Edit Orphan Genres**.
92+
2. **Add** new genres or **Link** strings to existing ones.
9393
3. Repeat as needed, your sets keep running.
9494

95-
**Under the Hood (Brief)**
95+
#### Under the Hood (Brief)
9696

97-
- **Stable IDs** for genres and a fast **join table** (`genre_tracks`) so filtering and counts are snappy.
98-
- A central **Genre DAO** (data access layer) that maps between IDs and names and normalizes raw data.
99-
- The UI always shows **human-friendly names**; the storage format stays robust behind the scenes.
97+
- **Stable IDs** for genres and a fast **join table** (`genre_tracks`) so filtering and counts are snappy.
98+
- A central **Genre DAO** (data access layer) that maps between IDs and names and normalizes raw data.
99+
- The UI always shows **human-friendly names**; the storage format stays robust behind the scenes.
100100

101101
### Demo video (quick tour)
102102

103103
@Video(https://www.youtube.com/watch?v=46gCxOuhvPg&t=1s)
104104
*This short video bundles all demos: single-track tag chips, multi-track bulk edit, the Genre Tree with drag-and-drop and **F2** rename, and the **Edit Orphan Genres** flow*
105105

106+
### What's Next
106107

107-
### What’s Next
108+
This foundation unlocks a lot of potential. Based on community input, we're exploring:
108109

109-
This foundation unlocks a lot of potential. Based on community input, we’re exploring:
110-
111-
-**full hierarchical** genre tree with multi-level editing.
112-
- **Fuzzy autocomplete** to handle typos gracefully.
113-
- **Search** that also matches genre names.
114-
- Smarter **import/export** of genre structures (share your taxonomy).
115-
- Better **metadata export** across formats for multi-genre fields.
116-
- Optional **auto-conversion** of known strings to stable IDs on import.
110+
- A **full hierarchical** genre tree with multi-level editing.
111+
- **Fuzzy autocomplete** to handle typos gracefully.
112+
- **Search** that also matches genre names.
113+
- Smarter **import/export** of genre structures (share your taxonomy).
114+
- Better **metadata export** across formats for multi-genre fields.
115+
- Optional **auto-conversion** of known strings to stable IDs on import.
117116

118117
### Thank You
119118

120-
Huge thanks to the Mixxx mentors and community for guidance, reviews, and real-world feedback. This is a big step forward, and well keep refining it together.
119+
Huge thanks to the Mixxx mentors and community for guidance, reviews, and real-world feedback. This is a big step forward, and we'll keep refining it together.
121120
Please try it and tell us what works for you.
122121

123122
### Learn More

0 commit comments

Comments
 (0)