# The Multi Field Editor

The Multi Field Editor provides a convenient means of doing various text manipulations on one or more fields. The Multi Field Editor always works with the current file selection.

The top of the window displays a list of all the field types supported by Yate. This is where you select which fields you want to edit. Note that not all fields are valid for every function in the editor. When a field which is not valid for a particular function is selected, it is ignored. The count in the banner of the leftmost column, is the number of fields which are selected. You can easily check or uncheck all items in the list by right clicking in the list and selecting the appropriate menu item. You can also save the current set from the context menu. You can load a saved tag set, created in the application preferences, from the context menu.

Unless otherwise specified, all supplied strings in the multi field editor may contain any of the escape sequences described in Escape Sequences. Each field's context menu has menu items to ease the insertion of the sequences. Note that not all escape sequences are meaningful. (eg. the file property of File Index).

The following functions are supported:

> Case
>   The Case function is used to change the alphabetic case of text in the fields selected in the field list. See Alphabetic Case Transformations for more information.
> Clear
>   The Clear function will completely erase the contents of the selected fields. Whenever a field type has more than one item, all of the items will be erased.
> Copy
>   The Copy function is used to copy the contents of a selected field or property to the chosen destination fields. You can elect to copy only if the source data is not empty and/or if a destination field is empty.
> Find & Remove
>   The Find & Remove function is used to look for an occurrence of a pattern in a field and to remove all text either before or after the matched pattern. The text representing the pattern may optionally be removed. The ignore alphabetic case checkbox, when selected, specifies that alphabetic case should be ignored when searching. The from end option specifies that the last occurrence of the pattern should be matched as opposed to the first.
>   The following lines describe the effects of the Remove, before and after checkboxes when the pattern is My and the searched field's value is 01-MyAlbum-02.

>   > Remove, before
>   >   Album-02
>   > Remove, after
>   >   01-
>   > before
>   >   MyAlbum-02
>   > after
>   >   01-My

> Re-encode
>   The ID3 specification uses ISO-Latin-1 as its 8 bit text encoding. In the past before UTF8 was supported, many people specified their mp3 fields in a variety of languages which contained characters not supported in ISO Latin-1. When these files are read by Yate, fields which specify an encoding of ISO Latin-1 may not display the correct characters if in fact they were not ISO Latin-1 characters.
>   This function allows you to specify the original encoding and a list of fields to be modified. Modifications will be made wherever possible. Note that if the field currently contains characters which cannot be represented in ISO Latin-1, no modifications will occur.
>   The algorithm essentially re-encodes the Mac's internal representation of a string back to ISO Latin-1 and then encodes the raw data using your specified encoding.
>   The type of re-encoding described above applies to the Cyrillic, Greek, ISO Latin-2, Turkish, WinLatin-1 and WinLatin-2 menu items. The renaming items do other types of re-encoding:
>   - Re-encoding to Unicode UNFC performs a different type of string modification. Unicode supports the representation of most accented characters as precomposed single characters or decomposed sequences. For compatibility reasons most strings are represented as precomposed. É, precomposed has a string length of 1. When decomposed it has a string length of 2. To make matters more confusing, the string displays correctly regardless of the encoding. When Unicode UNFC is selected, the associated fields are converted to their precomposed encoding. UNFC stands for Unicode Normalization Form C. Note that this transformation should rarely be required.
>   - Re-encoding via Force ISO Latin-1 attempts to ensure that every character in the result can be represented as an ISO Latin-1 character. It does so by changing various characters to their similar ISO Latin-1 equivalents, removing accents if necessary and as a last resort by changing characters which can not be represented as ISO Latin-1 to underscore characters.
>   - Remove Accents re-encodes all accented characters to their baseline unaccented characters, wherever possible.
>   - Fold Characters changes various characters to their similar Latin-1 equivalents. Currently this includes single and double quote equivalents as well as dash/hyphen equivalents.
> Remove & Insert
>   The Remove & Insert function will remove a counted number of characters at a specified index from the beginning or end of a field. It will optionally then insert a string at a specified index from the beginning or end of the modified field. If you do not wish to remove characters before inserting, set the number of remove characters to 0. If you do not wish to insert anything, leave the then insert field blank. Please note that the indicies start from 0 not 1. When from the end is specified, the last character is at index 0, the next to last character is at index 1, etc. When inserting from the beginning, characters get inserted at the specified index. When inserting from the end, characters get inserted after the specified index. Note that only the insertion text field will process escape sequences.

>   > If you want to remove the first five characters, specify:
>   >   Remove 5 characters at index 0 from the beginning
>   > If you want to remove the two characters before the last character, specify:
>   >   Remove 2 characters at index 2 from the end
>   > If you want to insert after the first character
>   >   Insert text at index 1 from the beginning
>   > If you want to append text
>   >   Insert text at index 0 from the end
>   > If you want to insert text immediately before the last character
>   >   Insert text at index 1 from the end

> Replace
>   The Replace Text function replaces matched text in the selected fields with new, possibly empty, text.
>   There are three modes of replacing:

>   > Match String
>   >   In this mode you are looking for occurrences of the from pattern string.
>   > Match Words
>   >   In this mode you match whole words only. For the purposes of this function a match whole word test fails if:

>   >   > the first character in the from pattern is alphanumeric and the character preceding the match is alphanumeric.
>   >   > or if:
>   >   > the last character in the from pattern is alphanumeric and the character following the match is alphanumeric.

>   > Match Characters
>   >   In this case you are looking for individual characters in the from pattern. If found they are replaced with the replace pattern. eg: If the Title field contains a1b2c3
>   >   Replace "0123456789", match characters in the Title field with "#"
>   >   will change the Title to a#b#c#

>   You control what and how much text gets replaced by choosing one of:

>   > All
>   >   Replace all occurrences of the matched pattern.
>   > First
>   >   Replace only the first occurrence of the matched pattern.
>   > At Start
>   >   Replace only one occurrence of the matched pattern and only if it is at the very start of a field.
>   > At End
>   >   Replace only one occurrence of the matched pattern and only if it is at the very end of a field.
>   > Last
>   >   Replace only the last occurrence of the matched pattern. Note this option is not supported when matching words.
>   > Leading
>   >   Replace all occurrences of the matched pattern at the very start of a field with one occurrence of the replacement text. Note this option is not supported when matching words.
>   > Trailing
>   >   Replace all occurrences of the matched pattern at the very end of a field with one occurrence of the replacement text. Note this option is not supported when matching words.
>   > Compress
>   >   This option is only valid when matching characters. Any sequence of characters in the from pattern is replaced with a single occurrence of the replacement text.

>   You can select Ignore case and make the function case insensitive when matching the Replace text. When matching characters the function is always case sensitive.
>   When replacing via contains, starts with or ends with you can specify Match words. In this mode you match whole words only. For the purposes of this function a match whole word test fails if:

>   > the first character in the from pattern is alphanumeric and the character preceding the match is alphanumeric.
>   > or if:
>   > the last character in the from pattern is alphanumeric and the character following the match is alphanumeric.

>   You can specify that you want to match and replace one of a number of supplied strings by specifying the Or matching option and separating the strings with | characters. Note that the Oring component separation occurs before any escape sequences are applied. Replacements will be successively attempted with each string in the supplied list. If one of the strings is matched, the Or matching will terminate immediately after the replacements are applied.
> Sort Form
>   The Sort Form function is used to set or remove sort formatting from one or more fields.
>   This function utilizes the Rename Exception Natural Sort Set. The set contains a list of words to be moved from the front of a field. Typically the words are The, A and An.
>   The function will always treat the Multi Value Delimiter as a field separator. If you have more than one value in a field, they will be processed correctly.
>   Optionally, you can also specify an additional sub-field separator. For example ' & '.
>   Example: Set for sorting using delimiter ' & ':

>   > Bob Dylan & The Band --> Bob Dylan & Band, The

>   Example: Set for non sorting using delimiter ' & ':

>   > Bob Dylan & Band, The --> Bob Dylan & The Band

> Trim
>   The Trim function is used to remove characters in certain classes from one or more fields. You select which sets of characters can be excluded when performing the function.

>   > All non alphabetic characters
>   >   Any character which is not an alphabetic character or a digit. Includes the other four exclude options.
>   > Whitespace
>   >   Spaces and tab characters
>   > Newline
>   >   Line termination characters. LF (0x10), VT (0x1B), FF (0x1C), CR (0x0D) and unicode NEL (0x85). Note that other Unicode newline characters may be included in this set.
>   > Punctuation
>   >   Commas, periods, etc.
>   > Control
>   >   Characters in the ranges: U+0000 to U+0019, U+001B to U+001F and U+007F to U+009F. Note that while the newline character U+000A (linefeed) and tab U+0009 character are control characters they will not be removed by this set. If you want linefeed characters removed you must also specify the Newline set. If you want tab characters changed to spaces you can specify the Whitespace set and use the Change to option.

>   You can optionally remove all characters at the start of the field (leading), at the end of the field (trailing) or all characters in the excluded set. You can also replace all remaining sequences of characters in the excluded set with one space or newline character by enabling the Change to option.
>   You can also use this function to normalize all newline sequences to the Mac standard of U+000A (linefeed). Carriage Return (U+000D) characters are removed. Any remaining newline characters are converted to linefeeds (U+000A).
>   When trimming the Comments, Lyrics, Terms of Use, Commercial Information Webpage or Official Artist/Performer Webpage fields only the default items are modified. If you would like the trim operation to modify all of items for any of these field types, select the deep option. The option has no effect on other field types. Note that User Defined Text Info and User Defined URL items will only be trimmed if the deep option is specified.