Jump to content

DJTags - BPM, key & energy level plugin


Recommended Posts

Posted

DJ Tags (BPM / Key / Energy) for Emby  [beta]

DJ Tags is an unofficial plugin for Emby Server that reads DJ-oriented metadata from your audio files and exposes it inside Emby so you can sort, filter and browse by BPM, musical key and energy level.

This is a beta version – behaviour and configuration options may change, and not all edge cases have been tested yet.

--------------------
Features
--------------------

- Reads DJ tags directly from audio files using TagLibSharp (embedded in the plugin):
  * BPM from the standard ID3 tag: TBPM
  * Key (Camelot / musical key) from: INITIALKEY
  * Energy from custom ID3 TXXX frames such as:
    - TXXX:EnergyLevel, TXXX:ENERGYLEVEL, TXXX:Energy, etc.

- Writes this information into Emby metadata:
  * Tags:
      BPM 126
      Key 4A
      Energy 7
  * Tagline (optional):
      126 BPM, Key 4A, Energy 7
  * SortName (optional):
      126 • 4A • Track Title

- Allows configuration from the Emby web UI (using Emby’s GenericEdit / Simple UI model).
- Does NOT modify audio files – only Emby’s internal metadata.

Supported file extensions (by simple extension check):
  .mp3, .flac, .m4a, .aac, .wav

--------------------
Requirements
--------------------

- Emby Server 4.9.1.90 (plugin was built and tested against this version).
- Standard Emby runtime (.NET) as provided by the Emby Server installation.
- No external TagLibSharp installation is required – a compatible TagLibSharp.dll is embedded and loaded by the plugin.

--------------------
Installation – Linux
--------------------

1. Copy the plugin DLL to Emby’s plugin directory, for example:

   sudo cp Emby.DjTags.dll /var/lib/emby/plugins/Emby.DjTags.dll

2. Fix permissions if necessary:

   sudo chown emby:emby /var/lib/emby/plugins/Emby.DjTags.dll
   sudo chmod 644 /var/lib/emby/plugins/Emby.DjTags.dll

3. Restart Emby Server:

   sudo systemctl restart emby-server

4. Open the Emby web UI → Dashboard → Plugins.
   You should see: “DJ Tags (BPM / Key / Energy)” with the green DJ Tags logo.

--------------------
Installation – Windows
--------------------

Typical plugin folders (depending on installation):

  C:\Users\<YourUser>\AppData\Roaming\Emby-Server\plugins
  C:\ProgramData\Emby-Server\plugins

1. Copy Emby.DjTags.dll into the plugins folder.
2. Restart Emby Server (from Services or via the Emby tray / GUI).
3. Open Dashboard → Plugins and confirm that “DJ Tags (BPM / Key / Energy)” appears in the list.

--------------------
Configuration
--------------------

After installation:

1. Open Dashboard → Plugins in Emby.
2. Click on “DJ Tags (BPM / Key / Energy)” to open the configuration page.
3. Available options:

- Clean existing DJ tags in Emby
  When enabled, before writing new values the plugin will remove from Emby’s Tags any entries starting with:
    BPM 
    Key 
    Energy 
  This does not modify audio files – only Emby’s stored tags are cleaned and rebuilt.

- Write BPM / Key into sort name
  When enabled, Emby’s SortName field for the audio item will be prefixed like:
    126 • 4A • Track Title
  This allows you to sort by name and effectively get ordering by BPM (and key).

- Write summary into tagline
  When enabled, the Tagline field is set to a short summary, e.g.:
    126 BPM, Key 4A, Energy 7

4. Save the configuration.
5. Run Refresh metadata on selected items / folders to apply these rules to your library.

--------------------
Technical overview
--------------------

- The plugin uses an embedded TagLibSharp.dll and a reflection-based helper (TagLibShim) to read:
  * Tag.BeatsPerMinute  -> BPM
  * Tag.InitialKey      -> Key
  * ID3v2 TXXX frames   -> Energy (integer)

- Tag values are normalised and mapped to Emby’s Audio item:
  * BPM becomes “BPM <n>”
  * Key becomes “Key <key>”
  * Energy becomes “Energy <n>”
  * Optional summary goes to Tagline.
  * Optional BPM/Key prefix goes into SortName.
 

Emby.DjTags.dll

Posted

DJ Tags (BPM / Key / Energy) – Emby Plugin
Version: v2 (beta)

1. Overview
-------------
DJ Tags is an Emby server plugin that reads DJ‑oriented metadata from your audio files
and writes it into Emby, so you can filter, sort and search your library more easily.

The plugin focuses on:
- BPM
- Musical key (Camelot / INITIALKEY)
- Energy level
- Standard Genre and Label/Publisher
- Custom DJ tags stored in TXXX frames

All logic runs on the server side during library scans / metadata refresh, so your
Emby clients do not need any modifications.


2. Currently implemented features (v2)
---------------------------------------

2.1. Core behaviour
- Reads BPM from the standard BPM tag (e.g. TBPM in ID3).
- Reads musical key from INITIALKEY (Camelot style is preserved, e.g. “4A”).
- Reads energy from common TXXX user text frames, for example:
  - TXXX:EnergyLevel
  - TXXX:ENERGYLEVEL
  - TXXX:Energy
  (The plugin parses values like “7 - Armada Music” and extracts the numeric part.)
- Writes these values into Emby Tags as:
  - "BPM 126"
  - "Key 4A"
  - "Energy 7"

2.2. Standard MP3 tags → Emby Tags
- Optional import of standard MP3 fields into Emby Tags:
  - Genre → Emby Tags
  - Label/Publisher → Emby Tags
- Imported values are passed through the same normalisation logic as other tags
  (split by separators, ignore tokens, etc.).

2.3. Tag cleanup and normalisation
- Option: “Clean existing DJ tags in Emby”
  - Removes existing Emby Tags that start with:
    - BPM
    - Key
    - Energy
  - Plus any extra prefixes the user provides.
  - This is useful when you are migrating from an older script or plugin, or if
    you change your tagging scheme.

- Option: “Extra Emby tag prefixes to clean (semicolon-separated)”
  - Example: “Phase;Mood;Crate”
  - Before writing any new tags, the plugin removes any Emby Tag whose value
    starts with one of the configured prefixes.

- Option: “Split tags by separators (characters)”
  - Example: “|;/”
  - A tag like “House | DJPromo” is split into separate values:
    - “House”
    - “DJPromo”

- Option: “Tag values to ignore (semicolon-separated)”
  - Example: “Promo;DJPromo;Web”
  - After splitting tags, any value that exactly matches one of these tokens
    (case-insensitive) is discarded.
  - So “House | DJPromo” becomes just “House” in Emby Tags.

2.4. Custom TXXX user text frames
- Option: “Custom TXXX user text frames to read (semicolon-separated)”
  - Example: “Mood;MyTag1;MyTag2”
- For each configured TXXX description, the plugin reads all text values from
  that frame and adds them to Emby Tags, going through the same:
  - split by separators
  - ignore tokens
  - de-duplication (no duplicate tags in Emby)

2.5. Tagline and sort name
- Option: “Write summary into tagline”
  - Writes a short summary like:
    - “126 BPM, Key 4A, Energy 7”
  - into the item’s Tagline field, which is often visible in list views.

- Option: “Write BPM / Key into sort name”
  - Prefixes the item’s SortName with BPM and key:
    - “126 • 4A • Track Title”
  - This allows sorting your library by BPM inside Emby.

2.6. Master switch
- Option: “Enable plugin processing”
  - If unchecked, the plugin does not modify any metadata.
  - This makes it easy to temporarily disable all DJ Tags behaviour without
    uninstalling the plugin.


3. Planned / upcoming features (roadmap)
----------------------------------------
The following features are planned for future versions of the plugin and are
already reflected in some of the configuration options:

3.1. Source profiles and priorities
- Separate “profiles” / parsers for different DJ ecosystems, for example:
  - Mix In Key
  - Rekordbox
  - Traktor
- Each source will have:
  - an enable/disable checkbox,
  - a numeric priority (lower number = higher priority).
- The plugin will decide which tags to trust first based on these priorities
  (for example, prefer Mix In Key energy over a generic TXXX if both exist).

3.2. Additional DJ fields
- Support for more DJ-specific fields, such as:
  - Mood
  - Phase / Set role (e.g. Warmup / Peak / Closing)
  - Custom rating or intensity scales
- Mapping these fields to either Emby Tags or other metadata fields, depending
  on user preference.

3.3. Advanced genre / tag cleaning
- More flexible rules for cleaning noisy tags, for example:
  - Remove tags that contain certain substrings (not only exact matches).
  - Normalize common variations (e.g. “House”, “House Music”, “House ”).

3.4. Profiles per library or per path (long-term idea)
- Ability to apply different rules to different libraries or folder trees,
  for example:
    - one profile for “Streaming downloads”,
    - another for “Club promos”,
    - another for “Old CD rips”.

3.5. Export / import of settings
- Simple export / import of plugin configuration to a JSON file, so you can:
  - back up your settings,
  - copy them between servers,
  - share presets.


4. Requirements
----------------
- Emby Server 4.9.x (tested with 4.9.1.90).
- .NET 8 runtime (used by the Emby server build).
- Supported audio containers (for DJ tags):
  - MP3 (ID3v2)
  - FLAC
  - M4A / AAC
  - WAV (where tagging is supported).


5. Installation
----------------
1. Build the plugin:
   - Open a terminal in the Emby.DjTags project folder.
   - Run:
     - dotnet restore
     - dotnet build -c Release
   - The compiled plugin file will be located in:
     - bin/Release/net8.0/Emby.DjTags.dll

2. Deploy to the Emby server:
   - Copy Emby.DjTags.dll to the Emby plugins directory, for example:
     - /var/lib/emby/plugins/Emby.DjTags.dll  (Linux)
     - C:\Users\[User]\AppData\Roaming\Emby-Server\plugins\Emby.DjTags.dll (Windows)
   - Ensure the file is readable by the Emby service user (e.g. chown emby:emby on Linux).

3. Restart Emby server:
   - On Linux (systemd):
     - sudo systemctl restart emby-server
   - Or restart the service via your system’s service manager.

4. Verify in the web UI:
   - Go to: Dashboard → Plugins.
   - You should see: “DJ Tags (BPM / Key / Energy)” with the configured version.


6. Configuration
-----------------
Once the plugin is installed and Emby has been restarted:

1. Open the Emby web interface.
2. Go to: Dashboard → Plugins → DJ Tags (BPM / Key / Energy).
3. Adjust options as desired:
   - Enable plugin processing.
   - Decide if you want to clean existing DJ tags in Emby.
   - Configure extra prefixes to clean (for old or custom tag schemes).
   - Set tag split separators (e.g. “|”).
   - Configure tag values to ignore (e.g. “DJPromo;PromoOnly;Web”).
   - Enable import of standard Genre and Label into Emby Tags if desired.
   - Configure any custom TXXX frames you want to import (e.g. “Mood;MyTag1”).
   - Decide whether to write BPM/Key into SortName and the summary into Tagline.

4. After changing options:
   - It is recommended to restart Emby once so the plugin runs with a clean state.
   - Then run a library scan or “Refresh metadata” on the desired library or folder.


7. Notes and recommendations
-----------------------------
- The plugin is currently marked as a **beta** build (v2):
  - Use it first on a test library or a smaller subset of your music to make sure
    the behaviour matches your expectations.
  - Once you are satisfied with the results, you can refresh your full library.

- If you previously used other scripts or plugins that wrote DJ-related tags into
  Emby Tags (e.g. old BPM/Key/Energy formats), use:
  - “Clean existing DJ tags in Emby”
  - plus your own extra cleanup prefixes
  before doing a full library refresh.

- The plugin does not modify the underlying audio files – it only reads tags
  from the files and writes metadata into Emby’s internal library.

- If something looks wrong on a specific track:
  - Check the raw tags in your tag editor (ID3/FLAC/M4A fields and TXXX frames).
  - Verify your plugin settings (split characters, ignore tokens, cleanup prefixes).
  - Refresh metadata just for that track and watch the Emby server log for
    “DJ Tags” messages.


8. Changelog (high level)
--------------------------
v2 (this version, beta)
- Added configuration UI with:
  - master on/off switch for processing,
  - DJ tag cleanup options and custom prefixes,
  - tag splitting and ignore lists,
  - TXXX custom tag reading,
  - optional import of standard Genre and Label/Publisher into Emby Tags,
  - tagline summary writer,
  - BPM/Key-based SortName.
- Improved stability and better logging when TagLibSharp cannot be loaded
  or certain tags are missing.

Future versions (planned)
- Source profiles and priorities (Mix In Key / rekordbox / Traktor).
- More DJ fields (mood, phase / role, etc.).
- Smarter tag cleaning and normalisation rules.
- Optional per-library / per-path profiles.
- Export / import of plugin settings.
 

Emby.DjTags.dll

Posted

Emby.DjTags.dll

DJ Tags (BPM / Key / Energy) – Emby Plugin
=========================================

Version: 2.3.0.0 (beta)

Overview
--------
DJ Tags is an Emby plugin designed for DJs and advanced music collectors.
It reads BPM, musical key, energy level and other useful metadata directly
from audio file tags (MP3/ID3, etc.) and mirrors them into Emby fields:

- Emby Tags (e.g. "BPM 126", "Key 8A", "Energy 7", "Rating 4★")
- SortName (for BPM/key-based sorting)
- Tagline (short summary in list views)

The goal is to make Emby much more usable as a DJ music library browser,
without changing your existing tagging workflow in Mix In Key, Rekordbox,
Traktor, Serato, VirtualDJ or other tools that write standard audio tags.


Key Features
------------
- Read BPM (TBPM) from audio file tags and expose as:
  - Emby tag: "BPM xxx"
  - Optional prefix in SortName: "126 • 4A • Track Title"

- Read musical key:
  - From standard InitialKey tag (TKEY), e.g. "8A", "1B", "Am"
  - Optional fallback: detect Camelot-style key from the beginning
    of the Comment field if InitialKey is empty (Traktor/Serato/VDJ
    compatibility).
  - Exposed as Emby tag "Key xx" and used in the SortName prefix.

- Read energy level:
  - From custom TXXX frames like "EnergyLevel", "ENERGYLEVEL", "Energy", etc.
  - Handles values such as "7 - Label" by taking the leading number.
  - Exposed as Emby tag "Energy x" and optionally in tagline.

- Optional import of Rating as "Rating N★":
  - Reads POPM (Popularimeter) rating from audio files (e.g. ratings set
    in Windows Explorer / WMP or other taggers that use POPM).
  - Maps common rating scales (0–5, 0–10, 0–100, 0–255) into 1–5 stars.
  - Exposed as Emby tag "Rating N★" (N = 1–5).

- Optional mirroring of standard Genre and Label/Publisher into Emby Tags:
  - Genre → "Genre: Pop", "Genre: House" etc.
  - Label / Publisher → "Label: Warner Music", etc.
  - Uses the same splitting and ignore rules as other tags.

- Support for custom TXXX user text tags:
  - You can specify up to ~10 user text frames (TXXX descriptions),
    e.g. "Mood;SubGenre;Phase;MyTag1", and they will be imported as
    normal Emby Tags (with split/ignore rules applied).

- Powerful tag cleanup and normalization:
  - Optional full wipe of all existing Emby Tags before plugin writes
    anything (for clean, plugin-controlled tag sets).
  - Or selective cleanup only for DJ-related tags (BPM/Key/Energy/Rating)
    and any additional prefixes you configure.
  - Tag splitting by characters (e.g. '|;/' to split "House | DJPromo").
  - Ignore list for tag values (e.g. "Promo;DJPromo;Web") so unwanted
    tokens are removed from Emby Tags.


Installation
------------
1. Build the plugin project to obtain `Emby.DjTags.dll`.
   Target framework is .NET compatible with your Emby Server
   (this version is designed for Emby 4.9.x / .NET 8 runtime).

2. Copy `Emby.DjTags.dll` into your Emby plugins folder, e.g.:

   - Linux (typical):
     `/var/lib/emby/plugins`

   - Windows (typical):
     `%AppData%\Emby-Server\programdata\plugins`

   Make sure file owner and permissions allow the Emby service user to
   read the DLL (on Linux: usually `emby:emby`).

3. Restart Emby Server.

4. Go to:

     Dashboard → Advanced → Plugins

   You should see an entry similar to:

     "DJ Tags (BPM / Key / Energy)"


Configuration
-------------
Open the plugin configuration via the Emby web UI:

  Dashboard → Advanced → Plugins → DJ Tags → Configure

Available options (2.3.0.0):

Master switch
~~~~~~~~~~~~~
- **Enable plugin processing**
  - If unchecked, the plugin will not modify any metadata.
  - Emby restart is recommended after changing this option.


Cleaning behaviour
~~~~~~~~~~~~~~~~~~
- **Clean existing DJ tags in Emby**
  - Removes Emby Tags that start with:
    - "BPM", "Key", "Energy", "Rating", and any custom prefixes you add.
  - Useful when you change your tagging scheme and want Emby to reflect
    new BPM/Key/Energy/Rating values.
  - Ignored if "Clean ALL existing Emby Tags before writing" is enabled.

- **Clean ALL existing Emby Tags before writing**
  - If enabled, all existing Emby Tags for the item are removed before
    the plugin writes anything.
  - Use when you want Emby Tags to be fully controlled by this plugin
    (BPM/Key/Energy/Rating/Genre/Label/custom TXXX), and you don't care
    about previously manually-added tags.


Basic output options
~~~~~~~~~~~~~~~~~~~~
- **Write BPM / Key into sort name**
  - Prefixes `item.SortName` with BPM and key, e.g.:
    `126 • 4A • Track Title`
  - Allows you to sort tracks by BPM in Emby interfaces.

- **Write summary into tagline**
  - Writes a condensed summary into the `Tagline` field, e.g.:
    `126 BPM, Key 4A, Energy 7`
  - This is purely cosmetic, making list views more informative.


Tag cleanup & normalization
~~~~~~~~~~~~~~~~~~~~~~~~~~~
- **Extra Emby tag prefixes to clean (semicolon-separated)**
  - Additional tag prefixes to remove when "Clean existing DJ tags"
    is enabled.
  - Example: `Phase;Mood;Crate`

- **Split tags by separators (characters)**
  - Characters used to split multi-value tags.
  - Example: `|;/` will split `"House | DJPromo"` into `"House"` and `"DJPromo"`.

- **Tag values to ignore (semicolon-separated)**
  - Tag values to skip after splitting.
  - Example: `Promo;DJPromo;Web` will remove these values.

- **Custom TXXX user text frames to read (semicolon-separated)**
  - Names of user text frames (ID3 TXXX descriptions) to import as tags.
  - Example: `Mood;SubGenre;MyTag1`.


Import from standard fields
~~~~~~~~~~~~~~~~~~~~~~~~~~~
- **Import standard Genre into Emby Tags**
  - When enabled, the standard audio Genre field is mirrored into Emby Tags.
  - The same split and ignore logic is applied.

- **Prefix imported Genre with 'Genre:'**
  - If enabled, imported genres become tags like `Genre: Pop` instead of `Pop`.

- **Import standard Label/Publisher into Emby Tags**
  - Mirrors the standard label/publisher field into Emby Tags.

- **Prefix imported Label with 'Label:'**
  - If enabled, imported labels become tags like `Label: Warner Music`.

- **Import Rating into Emby Tags**
  - Reads POPM rating from the file (e.g. ratings set via Windows Explorer).
  - Maps internal rating scales (0–5, 0–10, 0–100, 0–255) into 1–5 stars.
  - Adds an Emby Tag: `Rating N★` (for N from 1 to 5).


Special behaviour
~~~~~~~~~~~~~~~~~
- **Detect key from Comment when InitialKey is empty**
  - If the standard InitialKey tag is missing/empty, the plugin will try
    to detect a Camelot-style key from the beginning of the Comment field,
    e.g. `"8A Some text"` → key `8A`.
  - This is mainly for compatibility with workflows where Traktor/Serato/
    VirtualDJ store key in Comment instead of InitialKey.
  - The Comment itself is NOT imported as a tag.


Usage notes
-----------
- After changing plugin options, you should:
  - Restart Emby (recommended for consistent behaviour), and
  - Run a library scan or refresh metadata for affected items.

- Rating:
  - To test rating, set a star rating on an MP3 file in Windows Explorer
    (Properties → Details → Rating), then refresh metadata in Emby.
    If "Import Rating into Emby Tags" is enabled, you should see
    `Rating N★` in the Tags section of that track.

- Energy:
  - Energy is read from custom TXXX frames typically written by tools like
    Mix In Key (e.g. `TXXX:EnergyLevel = "7 - Label"`). If your files do
    not contain such frames, Energy will simply be absent.


Known limitations
-----------------
- The plugin only sees what is physically stored in the audio file tags.
  It cannot read internal databases of DJ software (Rekordbox/Traktor/
  Serato/VirtualDJ) unless those programs write data back into tags.

- Key from Comment:
  - Only the first token of the Comment is inspected, and only for simple
    Camelot codes like `8A` / `10B`. Other key notations in Comment are
    ignored unless also present in InitialKey.

- Rating:
  - Only POPM-based ratings are supported. If your application stores
    rating in a private field or its own database, the plugin will not
    see it.


Version / Changelog (short)
---------------------------
- 2.3.0.0 (beta)
  - Added Rating import as "Rating N★" with smart mapping from POPM/
    common rating scales.
  - Added optional detection of key from Comment when InitialKey is empty.
  - Added option to clean ALL existing Emby Tags before writing.
  - Added "Genre:" and "Label:" prefixes for imported Genre/Label tags.
  - Extended tag cleanup to also remove "Rating" tags when cleaning.
  - Various internal improvements and cleanup.

- 2.0.x (beta)
  - Configuration UI, Genre/Label import, custom TXXX support, tagline
    and BPM/Key-based SortName prefix, embedded TagLibSharp loader,
    Energy detection.

- 1.0.x (initial beta)
  - Initial public version with BPM/Key/Energy tags in Emby.
 

Posted

Now it would be nice to have a playlist builder that uses tags to build playlists according to the principles of Harmonic Mixing (MIX IN KEY), or that selects the next track that best fits (various configurations of genre, danceability, energy, BPM, KEY).

It would be great to have Auto DJ in Emby.

Posted

I have Emby on Ubuntu.

To install it, I copied the DLL to a folder on the server and then used Putty:

sudo systemctl stop emby-server
sudo cp /data/_Plugin/Emby.DjTags.dll /var/lib/emby/plugins/Emby.DjTags.dll
sudo chown emby:emby /var/lib/emby/plugins/Emby.DjTags.dll
sudo chmod 644 /var/lib/emby/plugins/Emby.DjTags.dll
sudo systemctl start emby-server
  • 3 weeks later...
Posted (edited)

DJ Tags (BPM / Key / Energy) – Emby Plugin
CHANGELOG
=============================

Version 2.3.1.0  (2025-12-13)
-----------------------------
- New: Improved handling of custom TXXX user text tags
  - Custom tags defined in the plugin configuration (e.g. "Danceability;Mood")
    now include the tag name as a prefix in Emby Tags.
  - Output format: "<Label>: <Value>", with automatic label normalization.
    Examples:
      - TXXX:DANCEABILITY_LEVEL = "3"
        → Emby Tag: "Danceability Level: 3"
      - TXXX:Mood = "Happy | Deep"
        → Emby Tags: "Mood: Happy", "Mood: Deep"
  - Label normalization rules:
      - Underscores "_" and hyphens "-" are converted to spaces.
      - The label is converted to Title Case using invariant culture, so
        "DANCEABILITY_LEVEL" → "Danceability Level".
  - The tag splitting and ignore rules still apply:
      - `TagSplitSeparators` are used to split multi-value fields.
      - `TagExcludeTokens` are applied to each value after splitting.
  - Backwards compatibility:
      - If a custom tag is encountered in the older format (where only the
        value was passed through), the plugin falls back to the previous
        behaviour and imports it as a plain value tag.

- Internal:
  - Refactored custom TXXX handling to carry both the description and the
    raw value via an internal separator and format them in the provider.


Version 2.3.0.0
-----------------------------
- New: Optional import of Rating into Emby Tags as human-friendly stars:
  - Tag format: "Rating N★" (N = 1–5).
  - Automatically maps a variety of common raw rating scales
    (0–5, 0–10, 0–100, 0–255 / POPM) into 1–5 stars.
  - Controlled via the "Import Rating into Emby Tags" option.

- New: Optional key detection from Comment when InitialKey is missing
  - If InitialKey is empty and this feature is enabled, the plugin will try
    to detect a Camelot-style key (e.g. "8A") from the beginning of the
    Comment field.
  - This improves compatibility with some Traktor / Serato / VirtualDJ
    workflows that store key in the Comment field instead of the standard
    InitialKey tag.
  - The Comment itself is NOT imported as an Emby Tag; only the detected
    key is used.

- New: Option to clean ALL existing Emby Tags before writing
  - "Clean ALL existing Emby Tags before writing" removes all existing
    Emby Tags for an item before the plugin adds new ones.
  - This overrides the more conservative "Clean existing DJ tags in Emby"
  behaviour and is useful when you want DJ Tags to fully control the
  tag list (BPM/Key/Energy/Rating/Genre/Label/custom TXXX).

- New: "Genre:" and "Label:" prefixes for imported standard fields
  - Imported Genre values can now be prefixed with "Genre:", resulting in
    tags such as "Genre: Pop" instead of a bare "Pop".
  - Imported label/publisher values can be prefixed with "Label:", e.g.
    "Label: Warner Music".
  - Both features are controlled by "Prefix imported Genre with 'Genre:'"
    and "Prefix imported Label with 'Label:'" options.

- Change: DJ tag cleanup now also removes "Rating" tags
  - When "Clean existing DJ tags in Emby" is enabled, the plugin will
    remove Emby Tags that start with "Rating" in addition to BPM/Key/Energy
    and any user-defined prefixes.

- Internal: POPM-based rating detection from ID3v2
  - Rating is now read directly from ID3v2 POPM (Popularimeter) frames via
    TagLibSharp reflection, including common POPM "user" identifiers such
    as those used by Windows Media Player / Windows Explorer.


Previous versions (high level)
------------------------------

Version 2.1.x (beta)
- Added configuration UI (Emby GenericEdit) with:
  - Master on/off switch for plugin processing.
  - DJ tag cleanup options with custom prefixes.
  - Tag splitting and ignore token lists.
  - Optional import of standard Genre and Label/Publisher into Emby Tags.
  - Custom TXXX user text tag reading (e.g. "Mood;SubGenre;MyTag1").
  - Optional tagline summary (e.g. "126 BPM, Key 4A, Energy 7").
  - BPM/Key-based SortName prefix (e.g. "126 • 4A • Track Title").
- Embedded TagLibSharp loader (with fallback to external TagLibSharp.dll)
  to avoid hard dependency issues on Emby installations.
- Energy detection from TXXX frames such as "EnergyLevel" / "ENERGYLEVEL"
  / "Energy" with smart parsing of values like "7 - Label".

Version 2.0.x (initial public beta)
- First public beta of DJ Tags plugin for Emby:
  - Read BPM, Key, Energy from audio file tags.
  - Write them into Emby Tags as "BPM xxx", "Key xx", "Energy x".
  - Basic tag cleanup and simple configuration options.
 

Emby.DjTags.dll

Edited by BRTPB
Posted

After scanning, the tags appear as below:

image.png.6a6250d294c46950bc07e39f5c290aaf.png

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...