diff --git a/README.md b/README.md index c4e3316..a1fb653 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ Both standalone Liquidsoap operation and integrated playout systems like AzuraCa - [Tags and metadata reference](#tags-and-metadata-reference) - [Categories](#categories) - [Tags and metadata used by Autocue](#tags-and-metadata-used-by-autocue) + - [Tags and metadata format rules](#tags-and-metadata-format-rules) - [Examples](#examples) - [Hidden track](#hidden-track) - [Long tail handling](#long-tail-handling) @@ -346,6 +347,20 @@ For easier lookup, this table will be kept in _alphabetical order_. If in doubt, |replaygain_track_range|R,I|float|string|LU|7.90 LU| |songtype[^4]|C|char|string|—|S| +### Tags and metadata format rules  + +If pre-tagging files manually, or modifying values in Liquidsoap, you _must_ adhere to some rules: + +- _Float_ values typcially have a 2 decimals precision, peak values have 6 decimals. +- Do _not_ use _only a trailing period_ to indicate a _float_ (like `0.`, as is often done in Liquidsoap). +- The _decimal point_ is always a _period_, _never_ a _decimal comma_ as in some languages like German. +- _Integer_ values like `R128_TRACK_GAIN` must not be specified with a dot or any decimals. +- _Boolean_ values _must_ be either `true` or `false`, in all lowercase. We have no concept of "truthy" or "falsy" like some programming languages, so `True`, `TRUE`, `yes`, `1` or `1.00` for example _will not work_ as `true`. +- _Units_ should be written exactly as shown in above reference table, in the "Example" column. So _do_ use a blank between value and unit, and use the exact name and casing shown, like `dB`, not `db` or `DB`. This is not so much a requirement for Autocue and `cue_file`, but more for other software, especially for the ReplayGain metadata. +- _Do not_ save `R128_TRACK_GAIN` to non-Opus files, and _do not_ save `replaygain_*` tags to Opus files. `cue_file` will take care of the necessary conversions, but you could have accidentally provided these in a tagging program, JSON or Liquidsoap. +- _Never_ save `duration` as a tag. The file duration is determined by other means (calculated or taken from the header info in various file types). Again _cue_file_ takes care of it for its own calculations, but you could have set it elsewhere (tagging software, JSON). + + ## Examples  ### Hidden track