Difference between revisions of "Foobar2000:Components/External Tags (foo external tags)"

From Hydrogenaudio Knowledgebase
Jump to: navigation, search
(minor grammar/brevity/clarity improvements)
Line 16: Line 16:
 
| license              = ISC (modified)
 
| license              = ISC (modified)
 
}}
 
}}
'''External Tags''' adds transparent [[tag]]ging 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.
+
'''External Tags''' adds transparent [[tag]]ging support to non-taggable file formats.
 +
 
 +
External tags can be stored in an SQLite database or written to files in the same directories as the target audio files. This differs from m-TAGS in that the latter creates playlist-like files 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 [[ReplayGain]]ing tracker modules.<ref>{{ha|https://hydrogenaud.io/index.php/topic,116045.msg958300.html#msg958300|External Tags origin story}}</ref>
 
The component was originally created to allow [[ReplayGain]]ing tracker modules.<ref>{{ha|https://hydrogenaud.io/index.php/topic,116045.msg958300.html#msg958300|External Tags origin story}}</ref>
Line 22: Line 24:
 
==Concept==
 
==Concept==
  
Some audio file types, like MIDI or game ROM rips, have no file-level support for tagging. foobar2000 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.
+
Some audio file types, like MIDI or game ROM rips, lack file-level tagging support. Vanilla foobar2000 fills this gap by storing tags added to such files in an internal database. These tags are kept in sync with their files across foobar2000's file operations and conversions, but cannot be accessed outside foobar2000 and are more prone to being lost 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 foobar2000's own solution), or in individual .tag files corresponding 1:1 to (and sitting next to) each audio file.
+
External Tags is a pseudo-codec component that claims support for storing tags of any audio file type, and defers actual codec operations to each audio format's preferred codec. It stores tags in either a central SQLite database (similar to foobar2000's own solution), or in individual .tag files corresponding 1:1 to each audio file.
  
==Prerequisites==
+
==Required configuration==
  
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.
+
In Preferences > Playback > Decoding, the "External Tags (reader)" decoder, if visible (i.e. in foobar2000 versions ''below'' v1.5 beta 8), must have higher priority than the format to be externally tagged. The "External Tags (writer)" decoder should have lowest priority so that external tags won't take priority over any format's native tags by default.
  
 
==Usage==
 
==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.
+
External Tags can be configured in Preferences > Advanced > Tagging > External Tags.
 +
 
 +
Note: several relevant but infrequently used context commands in the Tagging submenu are only visible in the ''extended'' context menu — when you shift-right-click on files — to avoid menu clutter.
 +
 
 +
Use the "Create External Tags" command on audio files to open the familiar Properties dialog, and then Save to externalize their tags. Any current internal tags will be copied and then left alone. If External Tags is configured to use 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.
  
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 operations are applied to its external tags only. File operations '''in foobar2000''' will transparently be applied to .tag files belonging to affected audio files so that they stay together.
  
Once a file has external tags, all tag read and write operations are applied to its external tags only. File operations in foobar2000 will transparently apply to any .tag files belonging to affected audio files.
+
Files may be reverted to default internal tag handling with the "Remove External Tags" command, which will delete any relevant .tag files and SQLite entries.
  
(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 foobar2000's tag cache. Note that manipulation (e.g. deletion) of external tags outside foobar2000 will not appear to affect tags displayed in foobar2000 immediately due to this cache. Use foobar2000'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.
+
Manipulation of external tags outside foobar2000 — such as deleting, editing, or restoring .tag files from a backup — will not be reflected in foobar2000 automatically due to foobar2000's tag cache. Use foobar2000's "Tagging > Reload info from file(s)" command to update 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==
 
==Advanced==

Revision as of 18:17, 1 October 2020

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 to non-taggable file formats.

External tags can be stored in an SQLite database or written to files in the same directories as the target audio files. This differs from m-TAGS in that the latter creates playlist-like files 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, lack file-level tagging support. Vanilla foobar2000 fills this gap by storing tags added to such files in an internal database. These tags are kept in sync with their files across foobar2000's file operations and conversions, but cannot be accessed outside foobar2000 and are more prone to being lost than file-stored tags.

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

Required configuration

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

Usage

External Tags can be configured in Preferences > Advanced > Tagging > External Tags.

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

Use the "Create External Tags" command on audio files to open the familiar Properties dialog, and then Save to externalize their tags. Any current internal tags will be copied and then left alone. If External Tags is configured to use 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 operations are applied to its external tags only. File operations in foobar2000 will transparently be applied to .tag files belonging to affected audio files so that they stay together.

Files may be reverted to default internal tag handling with the "Remove External Tags" command, which will delete any relevant .tag files and SQLite entries.

Manipulation of external tags outside foobar2000 — such as deleting, editing, or restoring .tag files from a backup — will not be reflected in foobar2000 automatically due to foobar2000's tag cache. Use foobar2000's "Tagging > Reload info from file(s)" command to update 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