Amarok/Proposals/Support for multiple tags

Proposals/Support for multiple tags

State: Draft Target release: 2.4.3
Percent Completed: 2 Creator: Horrendus
Scope/Difficulty: 5 Driver: Horrendus
Priority: 4 Assignee: Horrendus


  • Add Support for Multiple Artist/Album/Genre/... Tags to Amarok

Extended information and rationale

  • ID3v2 and many other Tagging Systems allow Multiple Tags. Amarok ignores them. Users wish for mutliple Tags to be read & to be editable by Amarok.

Related bug reports and branches


Please discuss this proposal on its discussion page.


  • Try how TagLib Support looks - done, example file see tagtest.cpp Gist
  • Plan how to save multiple Tags in the XML File of the Collection Scanner - planning example:
  • Change Collection Scanner to scan all the Multiple Tags and put them in the XML File
  • Plan how to save them in the Database
  • Change MetaTrack to return lists for genre and others. So instead of a GenrePtr genre() const; we should have GenreList genres() const;
  • Change Database. We would have a standard normalized database table layout. e.g. since Tracks<->Genre is a n:m relation we need a relation table. (change DatabaseUpdater)
  • Change Classes (SqlMeta, SqlRegistry and SqlRegistryPrivate) to handle the changed database layout.
  • Change the ScanManager to use all the new stuff.
  • Plan how to display multiple Tags in the UI
  • Change UI (CollectionBrowser, CurrentTrack Applet, Meta Data editor, Playlist items)

Working Mode

  • Start after 2.4.2 release
  • Use independent changes. E.g. changing the collection scanner XML but for a first step not using the information. Or returning GenreLists but for a first try just using the first entry, disregarding further genre results. This working mode allows us to always have a running Amarok and no need for a big merge when everything is done.
  • Work on a separate branch when we need to put all the parts together.

This page was last edited on 8 December 2012, at 09:22. Content is available under Creative Commons License SA 4.0 unless otherwise noted.