foobar2000:Components/External Tags (foo_external_tags)

From Hydrogenaudio Knowledgebase
Jump to: navigation, search
External Tags

foo_external_tags
Developer(s) Janne Hyvärinen (Case)
Repository
Release information
Initial release June 14, 2018
Stable release 1.5.8 (October 21, 2019)
Preview release
foobar2000 compatibility
Architecture {{{foobar2000_architecture}}}
Minimum version 1.4 alpha
Maximum version
UI module(s) N/A
Additional information
Use Tagging
License ISC (modified)
Discussion thread {{{discussion_thread}}}
View all components

External Tags adds transparent tagging support for non-taggable file formats. The tags can be stored in SQLite database or written as external files to the same directory as the target audio files. This differs from m-TAGS in that the latter creates a playlist-like file that must be loaded in place of the actual audio files, while External Tags behave just like regular internal tags.

The component was originally created to allow ReplayGaining tracker modules.[1]

Concept

Some audio file types, like MIDI or game ROM rips, have no file-level support for tagging. Foobar solves this by keeping an internal tag database when the user tags a file of which the codec reports not being able to store tags. These tags are then kept in sync with the file during file operations and conversions, but cannot be accessed by external programs and are prone to being lost more easily than file-stored tags.

External Tags is a pseudo-codec component that claims support for reading and writing tags of any audio file type, and defers actual codec operations to each audio format's preferred codec. It stores tags in either an SQLite database (similar to foobar's own solution), or in individual .tag files corresponding 1:1 to (and sitting next to) each audio file.

Prerequisites

In Preferences > Playback > Decoding, the "External Tags (reader)" decoder, if visible (i.e. below Foobar2000 v1.5 beta 8+), must have higher priority than the format to be tagged. The "External Tags (writer)" decoder should have lowest priority so external tags won't take priority over native tags of any format.

Usage

Note: several relevant but infrequently used context commands are only visible under Tagging in the extended context menu — i.e. when you shift-right-click on files — to avoid menu clutter.

Use the "Create External Tags" command on a file or set of files to open the Properties dialog, and then Save to externalize their tags. Any current internal tags will be copied and then left alone. If configured for tag files rather than SQLite, each audio file will now have a corresponding .tag file with the same name (e.g. test.mp3.tag next to test.mp3).

Once a file has external tags, all tag read and write operations are applied to its external tags only. File operations in foobar will transparently apply to any .tag files belonging to affected audio files.

(A) file(s) may be reverted to default internal tag handling with the "Remove External Tags" command, which will delete any relevant .tag file(s) and SQLite entries, and update foobar's tag cache. Note that manipulation (e.g. deletion) of external tags outside foobar will not appear to affect tags displayed in foobar immediately due to this cache. Use foobar's own "Tagging > Reload info from file(s)" command to synchronize displayed tags with values currently in SQLite and .tag files. Similarly, "Rewrite file tags" will flush any currently displayed values to external tag storage.

Advanced

.tag file in a text editor

.tag files are essentially binary dumped APE tags and can be viewed or edited with an advanced text editor if necessary.

TODO: explain remaining context menu commands like Wrap and Commit

See also

References

  1. External Tags origin story on hydrogenaudio

External links