Skip to content

Multi-genre tagging

Music rarely fits in a single box. A track might be Rock and Electronic and Ambient all at once. BitDek reads all three, from FLAC, MP3, and M4A alike. What changes between formats is how your tagger writes them, and one common setting loses genres on the way in.

Whatever the format, BitDek splits the genre field on four separators. Commas are the usual choice.

Example:

GENRE=Rock, Electronic, Ambient

This track appears when you browse Rock, Electronic, or Ambient. Three genres, one track. The same string in an MP3 or an M4A gives the same result.

FLAC has one extra capability. Vorbis comments let you store genres as genuinely separate GENRE tags rather than one delimited string, and BitDek reads every one of them. That’s the most robust way to tag multiple genres, because nothing depends on a separator surviving your tagging tool.

BitDek recognizes four separators in genre fields, in every format:

Comma (preferred): Rock, Alternative, Grunge

Semicolon: Rock;Alternative;Grunge

Forward slash: Electronic/Ambient/Downtempo

Backslash: Electronic\Ambient\Downtempo

All work. Commas are the most readable and match BitDek’s edit fields. Pick one separator and be consistent across your collection.

Spaces around separators are trimmed:

  • Rock , Alternative → “Rock” and “Alternative”
  • Rock,Alternative → “Rock” and “Alternative”

When multiple genres exist, the first one listed is the primary genre. This affects:

  • Default sort order in some views
  • Any future features that need a single “main” genre

Order your genres from most to least descriptive:

GENRE=Jazz, Fusion, Instrumental

“Jazz” is the primary. “Fusion” and “Instrumental” provide additional categorization.

ID3v2.4 offers taggers a second way to store multiple values: as a list inside a single frame, with the values separated by null bytes rather than visible characters. BitDek reads MP3 metadata through iOS AVFoundation, and AVFoundation stops reading that frame at the first null byte. Everything after the first genre is lost before BitDek ever sees it.

This matters because it’s the default in a popular tool. MusicBrainz Picard has written ID3v2.4 by default since version 2.9, and it uses the null-separated form for multiple values.

What you’ll see:

  • MP3 tagged Rock, Electronic in one field → both genres import
  • MP3 tagged by Picard with Rock and Electronic as separate values → only “Rock” imports

The limitation is in the iOS metadata API, not in BitDek, and it affects every iOS app that reads tags this way.

In Picard, open Options and set the ID3v2 version to 2.3. Picard joins multiple values with a separator when it writes v2.3, which is exactly the form BitDek reads. This is the smallest change with the biggest effect.

In Mp3tag or Kid3, enter your genres as one string: Rock, Electronic, Ambient. A single delimited value always survives the trip.

Import a couple of files and look at the Genres screen. If a track shows one genre where you tagged three, your tagger is writing the null-separated form. Switch to v2.3 and re-save those files.

Genres are not the only way to group music. A “Chill Electronic” playlist can hold tracks tagged Electronic, Ambient, or Downtempo, whatever their genre fields say. See Smart Rules for playlists that fill themselves.

  1. Load your files
  2. Select a track
  3. Find the Genre field in the tag editor
  4. Enter multiple genres separated by commas: Rock, Alternative
  5. Save

Picard can fetch multiple genres from MusicBrainz automatically if you configure it to. For MP3s, set the ID3v2 version to 2.3 in Options first, or Picard writes the null-separated form BitDek can’t read.

  1. Load your files
  2. Select tracks to edit
  3. In the Tag Panel, edit the GENRE field
  4. Enter multiple genres: Electronic, Ambient, Downtempo
  5. Save
  1. Load your files
  2. Select tracks
  3. Find Genre in the tag list
  4. Enter your genres as one delimited string rather than separate values, unless the files are FLAC

Use high-level genres: Rock, Electronic, Jazz, Classical, Hip-Hop

Pros: Simple, easy to maintain, good for quick browsing Cons: Loses nuance, large genre buckets

Use specific genres: Progressive Rock, Ambient Techno, Bebop, Baroque, Boom Bap

Pros: Precise categorization, better for focused listening Cons: Many small categories, harder to maintain consistency

Tag with both broad and specific:

GENRE=Rock, Progressive Rock

The track appears in “Rock” for quick browsing and “Progressive Rock” for specific mood.

Add mood tags as genres:

GENRE=Electronic, Ambient, Relaxing, Late Night

This blurs the line between genre and mood but can be useful for discovery.

“Rock” vs “ROCK” vs “rock” - BitDek treats these as the same genre (case-insensitive matching).

But “Hip-Hop” vs “Hip Hop” vs “HipHop” creates three separate genres. Pick one spelling and stick with it.

Every track tagged with 10 genres defeats the purpose. Aim for 1-3 genres per track. More than that usually means at least one doesn’t really apply.

If your first genre is empty or whitespace, you get unexpected results:

GENRE=;Rock;Alternative ← Empty first genre

Always start with an actual genre name.

This works but looks messy:

GENRE=Rock,Alternative;Grunge ← Multiple separators

Pick one separator (commas recommended) and use it consistently.

When you select a genre in BitDek, you see all tracks tagged with that genre. For multi-genre tracks, this means:

  • Select “Rock” → Shows tracks tagged Rock (including multi-genre)
  • Select “Electronic” → Shows tracks tagged Electronic (including multi-genre)

A track tagged Rock, Electronic appears in both lists.

The Genres view shows all genres present in your library, with track counts. Multi-genre tracks are counted in each genre they belong to.

Every genre value BitDek reads goes through the same splitter, whatever the format: commas, semicolons, forward slashes, and backslashes all divide one string into several genres.

FLAC gets a second pass. Vorbis comments allow repeated GENRE tags, so BitDek collects every one and splits each in turn. A file with three GENRE tags, one of which is Rock, Alternative, yields four genres.

Each resulting segment is trimmed of whitespace and stored as a separate genre entity. The track maintains relationships to all of them.

Genre names are deduplicated during import. “Rock” entered on multiple tracks creates one SDGenre entity with multiple track relationships.

Case-insensitive matching prevents “Rock” and “rock” from creating duplicate entries. The display preserves the case from the first occurrence.

iOS AVFoundation exposes tag data through AVMetadataItem, which hands back text frames as a single String. The ID3v2.4 specification allows a text frame to hold several strings in a null-separated list, and the string BitDek receives is truncated at the first null byte. The remaining values are not exposed by any part of the API, so no iOS app reading tags this way can recover them.

Delimited values are unaffected, because a comma or a slash is ordinary text inside a single string. That’s why the fix is a tagger setting rather than a code change.