Copyright © 2010 Urs Fleisch
Kid3 is an application to edit the ID3v1 and ID3v2 tags in MP3 files in an efficient way. Also tags in Ogg/Vorbis, FLAC, MPC, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV and AIFF files are supported. It is easy to set tags of multiple files to the same values (e.g. album, artist, year and genre in all files of the same album) and generate the tags from the file name or vice versa.
Kid3 is an application to edit the ID3v1 and ID3v2 tags in MP3 files in an efficient way. These tags can be edited by most MP3 players, but not in a very comfortable and efficient way. Moreover the tags in Ogg/Vorbis, FLAC, MPC, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV and AIFF files are supported too.
Kid3 does not grab, encode nor play MP3 files, but it is targeted to edit the ID3 tags of all files of an album in an efficient way, i.e. with as few mouse clicks and key strokes as possible. Where most other programs can edit either ID3v1 or ID3v2 tags, Kid3 has full control over both versions, can convert tags between the two formats and has access to all ID3v2 tags. Tags of multiple files can be set to the same value, e.g. the artist, album, year and genre of all files of an album typically have the same values and can be set together. If the information for the tags is contained in the file name, the tags can be automatically set from the file name. It is also possible to set the file name according to the tags found in the file in arbitrary formats.
The editing task is further supported by automatic replacement of characters or substrings, for instance to remove illegal characters from filenames. Automatic control of upper and lower case characters makes it easy to use a consistent naming scheme in all tags.
The tag information for full albums can be taken from gnudb.org, TrackType.org, MusicBrainz, Discogs, Amazon or other sources of track lists. The import format is freely configurable by regular expressions.
Please report any problems or feature requests to the author.
Edit ID3v1.1 tags
Edit all ID3v2.3 and ID3v2.4 frames
Edit tags of multiple files
Convert between ID3v1 and ID3v2 tags
Edit MP3, Ogg/Vorbis, FLAC, MPC, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV and AIFF tags
Generate tags from filename
Generate filename from tags
Generate and change directory names from tags
Generate playlist file
Automatic case conversion and string translation
Import from gnudb.org, TrackType.org, MusicBrainz, Discogs, Amazon and other data sources
Export as CSV, HTML, playlist, Kover XML and other formats. Exported CSV files can be imported again.
This section describes a typical session with Kid3. Let's assume we have a directory containing MP3 files with the tracks from the album "Let's Tag" from the band "One Hit Wonder". The directory is named in the "artist - album" format, in our case One Hit Wonder - Let's Tag. The directory contains the tracks in the "track title.mp3" format, which I think is useful because the filenames are short (important when using mobile MP3 players with small displays) and in the correct order when sorted alphabetically (important when using hardware MP3 players which play the tracks in alphabetical order or in the order in which they are burnt on CD and that order is alphabetical when using mkisofs). Besides this, the artist and album information is already in the directory name and does not have to be repeated in the filename. But back to our example, the directory listing looks like this:
01 Intro.mp3
02 We Only Got This One.mp3
03 Outro.mp3
These files have no tags yet and we want to generate them using Kid3. We use ( menu or toolbar) and select one of the files in this directory. All files will be displayed in the file listbox. Lazy as we are, we want to use the information in the directory and file names to generate tags. Therefore we select all files, then click the button in the Tag 1 section. This will set the title, artist, album and track values in all files. To set the year and genre values of all files, we keep all files selected and type in "2002" for the Year and select "Pop" from the Genre combobox. To set only these two values, we check their checkboxes and leave all other checkboxes unchecked. Now we change the selection by only selecting the first file and we see that all tags contain the correct values. The tags of the other files can be verified too by selecting them one by one. When we are satisfied with the tags, we use ( menu or toolbar). Selecting from the menu will generate a file One Hit Wonder - Let's Tag.m3u in the directory.
The Kid3 GUI is separated in five sections: At the left are the file and directory listboxes, the right side contains the Filename, Tag 1 and Tag 2 sections.
The file list contains the names of all the files in the opened directory which match the selected file name filter (typically *.mp3 *.ogg *.flac *.mpc *.aac *.m4a *.m4b *.m4p *.mp4 *.mp2 *.spx *.tta *.wv *.wma *.wav *.aiff). A single or multiple files can be selected. To select no file, click into the empty area after the listbox entries. The selection determines the files which are affected by the operations which are available by using the buttons described below.
At the left of the names an icon can be displayed: a disc to show that the file has been modified or information about which tags are present (V1, V2, V1V2 or NO TAG, no icon is displayed if the file has not been read in yet).
Directories are displayed with a folder icon. If a directory is opened, its files are displayed in a hierarchical tree. By selecting files from subdirectories, operations can be executed on files in different directories, which is useful if the music collection is organized with a folder for each artist containing folders for albums of this artist.
The directory list contains the names of the directories in the opened directory, as well as the current (.) and the parent (..) directory. It allows to quickly change the directory without using the
command or drag and drop.The Name line edit contains the name of the file (if only a single file is selected). If this name is changed, the file will be renamed when the Save command is used.
The Format combo box and line edit contains the format to be used when the filename is generated from first or the second tag. The filename can contain arbitrary characters, even a directory part separated by a slash from the file name, but that directory must already exist for the renaming to succeed. The following special codes are used to insert tag values into the filename:
%s %{title} Title (Song)
%a %{artist} Artist
%l %{album} Album
%c %{comment} Comment
%y %{year} Year
%t %{track} Track (e.g. 01)
%t %{track.n} Track with field width n (e.g. 001 for %{track.3})
%T %{tracknumber} Track (without leading zeroes, e.g. 1)
%g %{genre} Genre
A second Format combo box (with arrow down) is used to generate the tags from the filename. If the format of the filename does not match this pattern, a few other commonly used formats are tried.
Some commonly used filename formats are already available in the combo box, but it is also possible to type in some special format into the line edit.
: Sets the filename using the selected format and the first tag.
: Sets the filename using the selected format and the second tag.
: Shows information about the encoding (MP3, Ogg, FLAC, MPC, MP2, MP4, AAC, Speex, TrueAudio, WavPack, WMA, WAV, AIFF), bitrate, sample rate, channels and the length of the file.
The line edit widgets for Title, Artist, Album, Comment, Year, Track and Genre are used to edit the corresponding value in the first tag of the selected files. The value will be changed when the file selection is altered or before operations like and and when the corresponding check box at the left of the field name is checked. This is useful to change only some values and leave the other values unchanged.
If a single file is selected, all check boxes are checked and the line edit widgets contain the values found in the tags of this file. If a tag is not found in the file, the corresponding empty value is displayed, which is an empty string for the Title, Artist, Album and Comment line edits, 0 for the numerical Year and Track edits and an empty selected value for the Genre combo box. The values can be changed and if the corresponding check box is checked, they will be set for the selected file after the selection is changed. The file is then marked as modified by a disk symbol in the file listbox but remains unchanged until the command is used.
If multiple files are selected, only the values which are identical in all selected files are displayed. In all other controls, the empty values as described above are displayed. All check boxes are unchecked to avoid unwanted changes. If a value has to be set for all selected files, it can be edited and the checkbox has to be set. The values will be set for all selected files when the selection is changed and can be saved using the
command.The check boxes also control the operation of most commands affecting the tags, such as copy, paste and transfer between V1 and V2 tags. To make it easier to use with multiple files where all check boxes are unchecked, these commands behave in the same way when all check boxes are checked and when all check boxes are unchecked.
Format is used. If the existing filename does not match this format, the following formats are tried:
: The tags are set from the filename. First, the format specified inArtist - Album/Track Song
Album/Track - Artist - Song
/Artist - Album - Track - Song
Album/Artist - Track - Song
Album/Artist - Song
Artist/Album/Track Song
: The tag 1 fields are set from the corresponding values in tag 2. If a single file is selected, the GUI controls are filled with the values from tag 2. If multiple files are selected, the tags of the files are directly set.
: The copy buffer is filled with the Tag 1 values. Only values with checked checkbox will be used in subsequent Paste commands.
: Pastes the values from the copy buffer into the GUI controls.
: This will set all GUI controls to their empty values which results in removing all values. The saved file will then contain no tag 1.
The GUI controls function in the same way as described for the Tag 1 section, but the size of the strings is not limited.
For the tag 2 Genre you can also use your own names besides the genres listed in the combo box, just type the name into the line edit.
The tag 2 can not only contain the same values as the tag 1, the format is built in a flexible way from several frames which are themselves composed of several fields. The tag 2 table shows all the frames which are available in the selected file.
: This will open a window which allows to edit all fields of the selected frame. If multiple files are selected, the edited fields are applied to all selected files which contain such a frame.
: A requester to select the frame type will appear and a frame of the selected type can be edited and added to the file. This works also to add a frame to multiple selected files.
: Deletes the selected frame in the selected files.
Opens a directory. All files matching the selected file name filter will be displayed in the file listbox and the chosen file is selected.
Opens a recently opened directory.
Opens a directory. All files matching the selected file name filter will be displayed in the file listbox.
Saves all changed files in the directory. The changed files are marked with a disk symbol in the file listbox. If any file names have been changed, those files will be renamed.
Reverts the changes of one or multiple files. If no files are selected in the file listbox, the changes of all files will be reverted, else only the changes of the selected files are reverted.
The Import dialog can be used to import data directly from a freedb.org server, from the Web-interface of freedb.org, from a MusicBrainz server, from Discogs, Amazon or other sources of album track lists in textual format.
Import from a freedb.org server is possible using a dialog which appears when www.gnudb.org are received. Importing the track data for an album is done by selecting the album in the list. The freedb.org server to import from can be selected as well as the CGI path. The imported data is displayed in the preview table of the import dialog. To work in that dialog again, the gnudb.org dialog has to be closed - it can be reopened later by clicking again and its contents will be restored. When satisfied with the displayed tracks, they can be imported by terminating the import dialog with .
or is selected. The artist and album name to search for can be entered in the two topmost fields, the albums which match the query will be displayed when is clicked and the results fromA search on the Discogs server can be performed using Additional Tags is marked, more information is imported if available, e.g. performers, arrangers, or the publisher. If Cover Art is marked, cover art will be downloaded if available.
. As in the dialog, you can enter artist and album and then choose from a list of releases. IfA search on Amazon can be performed using Additional Tags is marked, more information is imported if available, e.g. performers, arrangers, or the publisher. If Cover Art is marked, cover art will be downloaded if available.
. As in the dialog, you can enter artist and album and then choose from a list of releases. IfYou can search in the same way in the release database of MusicBrainz using
. The workflow is the same as described for .Import from a MusicBrainz server is possible using the dialog which appears when
is selected. The Server can be selected as in the freedb import dialog. Below is a table displaying the imported track data. The right column shows the state of the MusicBrainz query, which starts with "Pending" when the dialog is opened. Then the fingerprint is looked up and if it does not yield a result, another lookup using the tags in the file is tried. Thus it can be helpful for a successful MusicBrainz query to store known information (e.g. artist and album) in the tags before the import. If a result was found, the search ends in the state "Recognized", otherwise nothing was found or multiple ambiguous results and one of them has to be selected by the user. and use the imported data, closes the dialog. The closing can take a while since the whole MusicBrainz machinery has to be shut down.For the import of textual data, several preconfigured import formats are available. The first two, "CSV unquoted" and "CSV quoted" can be used to import data which was exported by the Export dialog. The CSV data can be edited with a spreadsheet, and shall be written using tabs as delimiters. Import should then be possible using "CSV quoted", which is more flexible than "CSV unquoted". However, its fields cannot contain any double quotes. If you only export from Kid3 and import later, "CSV unquoted" can be used as a simple format for this purpose.
The next format, "freedb HTML text", can be used to copy information from an HTML page of freedb.org. Search an album in freedb and if the desired information is displayed in the web browser, copy the contents to the clipboard. Then click the button and the imported tracks will be displayed in the preview table at the top of the dialog. If you are satisfied with the imported data, terminate the dialog with , which will insert the data into the tags of the current directory. The destination (ID3v1 or ID3v2) can be selected with a combo box. The files in the current directory should be in the correct track order to get their tags assigned. This is the case if they are numbered.
The next preconfigured import format, "freedb HTML source", can be used, if the data is available as an HTML document. Import is possible using the
button, which opens a file selector, or copying its contents from an editor and then importing from clipboard. This format can be useful for offline import, although the HTML document could also be opened in a browser and then be imported in the first format via the clipboard.More preconfigured formats, e.g. "Track Title Time", are available. A custom format is left empty to be set by the user. Two lines below the format name can be set with a regular expression to capture the fields from the import text. The first regular expression will be parsed once per document to gather per-album data such as artist, album, year and genre. The second line is tried to match from the start of the document to the end to get track data, usually number and title. The regular expressions include all the features offered by Qt, which is most of the what Perl offers. Bracketing constructs "(..)" create capture buffers for the fields to import and are preceded by Kid3 specific codes to specify which field to capture. The codes are the same as used for the filename format:
%s %{title} Title (Song)
%a %{artist} Artist
%l %{album} Album
%c %{comment} Comment
%y %{year} Year
%t %{track} Track
%g %{genre} Genre
%d %{duration} Duration
For example, a track regular expression (second line) to import from an .m3u playlist could be "%{track}(\d+)\s+%{title}(\S[^\r\n]*)\.mp3[\r\n]". All formats can be changed by editing the regular expressions and the name and then clicking
. They will be stored in the kid3rc file in the configuration directory. This file can be directly edited to have more import formats or it can be deleted to revert to the default formats.To check whether the imported tracks match the current set of files, the duration of the imported tracks can be compared with the duration of the files. This option can be enabled with the checkbox
and the maximum tolerated difference in time can be set in seconds. If a mismatch in a length is detected, the length is displayed with a red background in the preview table.It the files are ordered differently than the imported tracks, their assigned tracks have to be changed. This task can be facilitated using the Match with buttons , , and , which will reorder the tracks according to the corresponding field. To correct the assignments manually, a track can be dragged with the left mouse button and the Ctrl key hold down, and then dropped at the new location.
Almost all dialogs feature a
button, which can be used to store the dialog specific settings and the window size persistently.Import from a freedb.org server using gnudb.org album search. This menu item opens the same import dialog as , but opens directly the dialog.
Import from the TrackType.org server. This menu item opens the same import dialog as , but opens directly the dialog.
Import from the Discogs server. This menu item opens the same import dialog as , but opens directly the dialog.
Import from Amazon. This menu item opens the same import dialog as , but opens directly the dialog.
Import from the MusicBrainz release database. This menu item opens the same import dialog as , but opens directly the dialog.
Import from a MusicBrainz server. This menu item opens the same import dialog as , but opens directly the dialog.
The Browse Cover Art dialog helps to find album cover art. Artist/Album is filled from the tags if possible. Source offers a variety of websites with album cover art. The URL with artist and album as parameters can be found beneath the name. URL-encoded values for artist and album can be inserted using %u{artist} and %u{album}, other values from the tags are possible too, as described in Configure Kid3, User Actions. More sources can be entered after the entry "Custom Source" by replacing "Custom Source" with the source's name, pressing Enter, then inserting the URL and finally pressing . The resulting browser command is displayed at the top of the dialog and can be started by clicking . The browser, which can be configured in the settings, is started with the selected source. A cover image can then be dragged from the browser into the Kid3 window and will be set in the picture frame of the selected files.
Because not all browsers support drag'n'drop of images and the pictures on websites often have a URL, in such cases Kid3 will receive the URL and not the picture. If the URL points to a picture, it will be downloaded. However, if the URL refers to some other web resource, it has to be translated to the corresponding picture. Such mappings are defined in the table URL extraction. The left column Match contains a regular expression which is compared with the URL. If it matches, the captured expressions in parentheses are inserted into the pattern of the right Picture URL column (at the positions marked with \1 etc.). The replaced regular expression contains the URL of the picture. By this means cover art can be imported from Amazon, Google Images, etc. using drag'n'drop. It is also possible to define your own mappings.
The Export Dialog is used to store data from the tags in a file or the clipboard. The editor at the top shows a preview of the data to export. The data can be edited before exporting, as it is exactly the contents of the editor which will be stored. The data will be generated from the tags in the current directory according to the configured format.
The format settings are similar as in the Import dialog: The topmost field contains the title (e.g. "CSV unquoted"), followed by the header, which will be generated at the begin of the file. The track data follows; it is used for every track. Finally, the trailer can be used to generate some finishing text.
The format fields do not contain regular expressions as in the Import dialog, but only output format expressions with special %-expressions, which will be replaced by values from the tags. The whole thing works like the file name format, and the same codes are used plus some additional codes.
%s %{title} Title (Song)
%a %{artist} Artist
%l %{album} Album
%c %{comment} Comment
%y %{year} Year
%t %{track} Track (e.g. 01)
%t %{track.n} Track with field width n (e.g. 001 for %{track.3})
%T %{tracknumber} Track (without leading zeroes, e.g. 1)
%g %{genre} Genre
%f %{file} File name
%p %{filepath} Path
%u %{url} URL
%d %{duration} Duration in minutes:seconds
%D %{seconds} Duration in seconds
%n %{tracks} Number of tracks of the album
%e %{extension} File extension
%O %{tag1} The format of tag 1 (ID3v1.1 or empty if not existing)
%o %{tag2} The format of tag 2 (ID3v2.3.0, ID3v2.4.0, ID3v2.2.0, ID3v2.2.1, Vorbis, APE, MP4, ASF, or empty if not existing)
%b %{bitrate} Bitrate in kbit/s
%v %{vbr} VBR or empty (only for ID3v2.3 with id3lib)
%r %{samplerate} Samplerate in Hz
%m %{mode} Channel mode (Stereo or Joint Stereo)
%h %{channels} Number of channels (1 or 2)
%k %{codec} Codec (e.g. MPEG 1 Layer 3, MP4, Ogg Vorbis, FLAC, MPC, ASF, AIFF, WAV)
A few formats are predefined. "CSV unquoted" separates the fields by tabs. Data in this format can be imported again into Kid3 using the import format with the same name. "CSV quoted" additionally encloses the fields by double quotes, which eases the import into spreadsheet applications. However, the fields shall not contain any double quotes when this format is used. "Extended M3U" and "Extended PLS" generate playlists with extended attributes and absolute path names. "HTML" can be used to generate an HTML page with hyperlinks to the tracks. "Kover XML" creates a file which can be imported by the cover printing program Kover. "Technical Details" provides information about bitrate, samplerate, channels, etc. Finally, "Custom Format" is left empty for definition of a custom format. You can define more formats of your own by adding lines in the file kid3rc in the configuration directory. The other formats can be adapted to your needs.
The source of the tags to generate the export data (ID3v1 or ID3v2) can be selected with a combo box. Pushing or stores the data in a file or on the clipboard. and close the dialog, whereas accepts the current dialog settings.
Creates a playlist. The format and contents of the playlist can be set by various options.
The name of the playlist can be the Export. The extension depends on the playlist format.
or use a with values from the tags, e.g. "%{artist} - %{album}" to have the artist and album name in the playlist file name. The format codes are the same as forThe location of the generated playlist is determined by the selection of the Create in combo box.
The playlist is created in the current directory and contains only files of the current directory.
A playlist is created in every directory which contains listed files, and each playlist contains the files of that directory.
Only one playlist is created in the top-level directory (i.e. the directory of the file list) and it contains the listed files of the top-level directory and all of its sub-directories.
The Format of the playlist can be M3U, PLS or XSPF.
If
is checked, only the selected files will be included in the playlist. If a directory is selected, all of its files are selected. If this check box is not activated, all audio files are included in the playlist.selects the usual case where the files are ordered by file name. With , it is possible to sort by a format string with values from tag fields. For instance, "%{track.3}" can be used to sort by track number (the ".3" is used to get three digits with leading zeros because strings are used for sorting). It is also possible to use multiple fields, e.g. "%{genre}%{year}" to sort using a string composed of genre and year.
The playlist entries will have relative or absolute file paths depending on whether
or is set.When
is set, the playlist will only contain the paths to the files. To generate an extended playlist with additional information, a format string can be set using the control.Quits the application.
Selects all files.
Deselects all files.
Selects the previous file.
Selects the next file.
When Format while editing is switched off for the filename format in the configuration dialog, this menu item can be used to apply the configured format to the names of the selected files. This can also be used to check whether the file names conform with the configured format by applying the format to all saved files and then checking if any files were changed (and therefore marked with a disk symbol in the file listbox).
When Format while editing is switched off for the ID3 format in the configuration dialog, this menu item can be used to apply the configured format to the tags of the selected files. This can also be used to check whether the tags conform with the configured format by applying the format to all saved files and then checking if any files were changed (and therefore marked with a disk symbol in the file listbox).
This dialog offers the possibility to automatically rename the currently open directory according to the tags in the files. Several formats are preconfigured to include information about artist, album and year in the directory name. It is also possible to set a custom format, the following special codes are used to insert tag values into the directory name:
%s %{title} Title (Song)
%a %{artist} Artist
%l %{album} Album
%c %{comment} Comment
%y %{year} Year
%t %{track} Track (e.g. 01)
%t %{track.n} Track with field width n (e.g. 001 for %{track.3})
%T %{tracknumber} Track (without leading zeroes, e.g. 1)
%g %{genre} Genre
If a directory separator "/" is found in the format, multiple directories are created. If you want to create a new directory instead of renaming the current directory, select Create Directory instead of Rename Directory. The source of the tag information can be chosen between From ID3v1 and From ID3v2. A preview for the rename operation performed on the first file can be seen in the From and To sections of the dialog.
If the track numbers in the tags are not set or have the wrong values, this function can number the tracks automatically in ascending order. The start number can be set in the dialog. If only part of the tracks have to be numbered, they must be selected.
The filter can be used to display only those files which match certain criteria. This is helpful if you want to organize a large collection and only edit those files which are not in the desired scheme. The expression defining which files to display uses the same format codes which are used in the file name format, import and export.
%s %{title} Title (Song)
%a %{artist} Artist
%l %{album} Album
%c %{comment} Comment
%y %{year} Year
%t %{track} Track (e.g. 01)
%t %{track.n} Track with field width n (e.g. 001 for %{track.3})
%T %{tracknumber} Track (without leading zeroes, e.g. 1)
%g %{genre} Genre
%f %{file} File name
%p %{filepath} Absolute path to file
%e %{extension} File extension
%O %{tag1} The format of tag 1 (ID3v1.1 or empty if not existing)
%o %{tag2} The format of tag 2 (ID3v2.3.0, ID3v2.4.0, ID3v2.2.0, ID3v2.2.1, Vorbis, APE, MP4, ASF, or empty if not existing)
%b %{bitrate} Bitrate in kbit/s
%v %{vbr} VBR or empty (only for ID3v2.3 with id3lib)
%r %{samplerate} Samplerate in Hz
%m %{mode} Channel mode (Stereo or Joint Stereo)
%h %{channels} Number of channels (1 or 2)
%k %{codec} Codec (e.g. MPEG 1 Layer 3, MP4, Ogg Vorbis, FLAC, MPC, ASF, AIFF, WAV)
%1a %1{artist}, ... Use the prefix 1 to get values of tag 1
%2a %2{artist}, ... Use the prefix 2 to get values of tag 2
These codes are replaced with the values for the file, and the resulting strings can be compared with the following operations:
s1 equals s2: true if s1 and s2 are equal.
s1 contains s2: true if s1 contains s2, i.e. s2 is a substring of s1.
s matches re: true if s matches the regular expression re.
True expressions are replaced by 1, false by 0. True values are represented by 1, true, on and yes, false values by 0, false, off and no. Boolean operations are not, and, or (in this order of precedence) and can be grouped by parentheses.
Some filter rules are predefined and can serve as examples for your own expressions:
When the file list is filtered - this is shown by "[filtered]" in the window title - and all files shall be displayed again, the filtering can be reverted using this filter. It uses an empty expression, but a true value would have the same effect.
not (%{filepath} contains "%{artist} - %{album}/%{track} %{title}")
Tests if the file path conforms with the file name format. This rule is automatically adapted if the file name format changes.
%{tag1} equals ""
Displays only files which do not have a tag 1.
%{tag2} equals ""
Displays only files which do not have a tag 2.
%{tag2} equals "ID3v2.3.0"
Displays only files which have an ID3v2.3.0 tag.
%{tag2} equals "ID3v2.4.0"
Displays only files which have an ID3v2.4.0 tag.
not (%1{title} equals %2{title} and %1{album} equals %2{album} and %1{artist} equals %2{artist} and %1{comment} equals %2{comment} and %1{year} equals %2{year} and %1{track} equals %2{track} and %1{genre} equals %2{genre})
Displays files with differences between tag 1 and tag2.
%1{title} equals %2{title} and %1{album} equals %2{album} and %1{artist} equals %2{artist} and %1{comment} equals %2{comment} and %1{year} equals %2{year} and %1{track} equals %2{track} and %1{genre} equals %2{genre}
Displays files with identical tag 1 and tag 2.
%{picture} equals ""
Displays only files which do not have a picture.
To add your own filter, select this entry. For instance, if you want to have a filter for artists starting with "The", replace "Custom Filter" with the name "The Bands" and press Enter. Then insert the following expression into the line edit:
%{artist} matches "The.*"
Then click
. Click to filter the files. All files processed are displayed in the text view, with a "+" for those who match the filter and a "-" for the others. When finished, only the files with an artist starting with "The" are displayed, and the window title is marked with "[filtered]".If there are any ID3v2.3 tags in the selected files, they will be converted to ID3v2.4 tags. Frames which are not supported by TagLib will be discarded. Only files without unsaved changes will be converted.
If there are any ID3v2.4 tags in the selected files, they will be converted to ID3v2.3 tags. Only files without unsaved changes will be converted.
Toggles displaying of the Tag 1 section.
Toggles displaying of the Tag 2 section.
Toggles displaying of the album cover art preview picture.
Toggles displaying of the toolbar, which contains icons to open and save a directory.
Toggles displaying of the statusbar, which displays longer actions such as opening or saving a directory.
Opens the configuration dialog, which consists of pages for tags, files, user actions, and network settings.
Tag specific options can be found on the Tags page.
If Mark truncated fields is checked, truncated ID3v1.1 fields will be marked red. The text fields of ID3v1.1 tags can only have 30 characters, the comment only 28 characters. Also the genre and track numbers are restricted, so that fields can be truncated when imported or transfered from ID3v2. Truncated fields and the file will be marked red, and the mark will be removed after the field has been edited.
With Text encoding for ID3v1 it is possible to set the character set used in ID3v1 tags. This encoding is supposed to be ISO-8859-1, so it is recommended to keep this default value. However, there are tags around with different encoding, so it can be set here and the ID3v1 tags can then be copied to ID3v2 which supports Unicode.
The check box Use track/total number of tracks format controls whether the track number field of ID3v2 tags contains simply the track number or additionally the total number of tracks in the directory.
When Genre as text instead of numeric string is checked, all ID3v2 genres will be stored as a text string even if there is a corresponding code for ID3v1 genres. If this option is not set, genres for which an ID3v1 code exists are stored as the number of the genre code (in parentheses for ID3v2.3). Thus the genre Metal is stored as "Metal" or "(9)" depending on this option. Genres which are not in the list of ID3v1 genres are always stored as a text string. The purpose of this option is improved compatibility with devices which do not correctly interpret genre codes.
Text encoding defines the default encoding used for ID3v2 frames and can be set to ISO-8859-1, UTF16, or UTF8. UTF8 is not valid for ID3v2.3.0 frames; if it is set, UTF16 will be used instead. For ID3v2.4.0 frames, all three encodings are possible.
Version used for new tags determines whether new ID3v2 tags are created as version 2.3.0 or 2.4.0. In the first case, id3lib is used as it was in earlier versions of Kid3 and TagLib is only applied when an ID3v2.4.0 tag is encountered. In the second case, ID3v2.4.0 (TagLib), TagLib is generally used for MP3 files; changed or newly created tags will then be saved in version 2.4.0.
The combo box Comment field name is only relevant for Ogg/Vorbis and FLAC files and sets the name of the field used for comments. Different applications seem to use different names, "COMMENT" for instance is used by xmms, whereas amaroK uses "DESCRIPTION".
The format of pictures in Ogg/Vorbis files is determined by Picture field name, which can be METADATA_BLOCK_PICTURE or COVERART. The first is the official standard and uses the same format as pictures in FLAC tags. COVERART is an earlier unofficial way to include pictures in Vorbis comments. It can be used for compatibility with legacy players.
Custom Genres can be used to define genres which are not available in the standard genre list, e.g. "Gothic Metal". Such custom genres will appear in the Genre combo box of Tag 2. For ID3v1.1 tags, only the predefined genres can be used.
The list of custom genres can also be used to reduce the number of genres available in the Genre combo box to those typically used. If your collection mostly contains music in the genres Metal, Gothic Metal, Ancient and Hard Rock, you can enter those genres and mark Show only custom genres. The Tag 2 Genre combo box will then only contain those four genres and you will not have to search through the complete genres list for them. In this example, only Metal and Hard Rock will be listed in the tag 1 genres list, because those two custom genres entries are standard genres. If Show only custom genres is not active, the custom genres can be found at the end of the genres list.
Tag Format contains options for the format of the tags. When Format while editing is checked, the format configuration is automatically used while editing text in the line edits. The Case conversion can be set to No changes, All lowercase, All uppercase, First letter uppercase or All first letters uppercase. The string replacement list can be set to arbitrary string mappings. To add a new mapping, select the From cell of a row and insert the text to replace, then go to the To column and enter the replacement text. To remove a mapping set the From cell to an empty value (e.g. by first typing space and then backspace). Inserting and deleting rows is also possible using a context menu which appears when the right mouse button is clicked. Replacement is only active, if the String replacement checkbox is checked.
On the page Files the check box Preserve file timestamp can be marked to preserve the file modification time stamp.
If Mark changes is active, changed fields are marked with a light gray label background.
Filename Format contains options for the format of the filenames. The same options as in Tag Format are available.
The User Actions page contains a table with the commands which are available in the context menu of the file list. For critical operations such as deleting files, it is advisable to mark Confirm to pop up a confirmation dialog before executing the command. Output can be marked to see the output written by console commands (standard output and standard error). Name is the name displayed in the context menu. Command is the command line to be executed. Arguments can be passed using the following codes:
%F %{files} File paths (a list if multiple files selected)
%f %{file} File path to single file
%uF %{urls} URLs (a list if multiple files selected)
%uf %{url} URL to single file
%d %{directory} Directory
%s %{title} Title (Song)
%a %{artist} Artist
%l %{album} Album
%c %{comment} Comment
%y %{year} Year
%t %{track} Track (e.g. 01)
%t %{track.n} Track with field width n (e.g. 001 for %{track.3})
%T %{tracknumber} Track (without leading zeroes, e.g. 1)
%g %{genre} Genre
%b %{browser} Command to start the web browser
The command which will be inserted with %{browser} can be defined in the Web browser line edit above. Commands starting with %{browser} can be used to fetch information about the audio files from the web, for instance
%{browser} http://lyricwiki.org/%u{artist}:%u{title}will query the lyrics for the current song in LyricWiki. The "u" in %u{artist} and %u{title} is used to URL-encode the artist %{artist} and song %{title} information. It is easy to define your own queries in the same way, e.g. an image search with Google:
%{browser} http://images.google.com/images?q=%u{artist}%20%u{album}
To add album cover art to tag 2, you can search for images with Google or Amazon using the commands described above. The picture can be added to the tag with drag and drop if the browser supports dragging of images. Otherwise, the image can be saved to disk, and the image file can be dropped into the Kid3 window. You can also add an image with , then select the Picture frame and import an image file or paste from the clipboard. Picture frames are supported for ID3v2, MP4 and FLAC tags.
To add and delete entries in the table, a context menu can be used.
The Network page contains only a field to insert the proxy address and optionally the port, separated by a colon. The proxy will be used when importing from an internet server when the checkbox is checked.
Opens a dialog to assign keyboard shortcuts for most of the program functions. There are even functions without corresponding menu or button available, e.g. next file, previous file, select all.
Kid3
Program written by Urs Fleisch <ufleisch at users.sourceforge.net>
Kid3 can be found at http://kid3.sourceforge.net.
Kid3 needs Qt. KDE is recommended but not necessary, as Kid3 can also be compiled as a Qt application. Kid3 can be compiled for systems where these libraries are available, e.g. for GNU/Linux and Windows. To tag Ogg/Vorbis files, libogg, libvorbis and libvorbisfile are required, for FLAC files libFLAC++ and libFLAC. id3lib is used for MP3 files. These three formats are also supported by TagLib, which can also handle MPC, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF and MP4 files. mp4v2 is required for MP4 files. For MusicBrainz support, libtunepimp is used. As there does not exist a tunepimp SDK for Windows at the moment, the Windows version is compiled without MusicBrainz import.
Kid3 is available for most Linux distributions, Windows and Mac OS X. Links can be found on http://kid3.sourceforge.net.
You can compile Kid3 with or without KDE. Without KDE, Kid3 is a simple Qt application and lacks some configuration and session features.
Go into the top directory and type
% ./configure % make % make install
If the sources are downloaded from Subversion, the configure script can be built with
% make -f Makefile.cvs
To compile for different versions of Qt or KDE, set the corresponding configure options.
To speed up compilation, Kid3 can use precompiled headers with GCC 3.4 and above. Start configure with the option --enable-gcc-pch (and setting CC and CXX to gcc and g++ of GCC 3.4 if it is not the default compiler). Then create a precompiled system include file with make pch.
If not all libraries are present, Kid3 is built with reduced functionality. So you should take care to have all desired development packages installed. On the other side, configure-options control which libraries are compiled in. The default is --with-kde --with-id3lib --with-vorbis --with-flac --with-taglib --with-musicbrainz. These options can be disabled using --without-.
Generation of RPM-Packages is supported by the file kid3.spec, for Debian-Packages, the script build-deb.shis available.
To build Kid3 with KDE 4, use cmake . and make.
To build Kid3 as a Qt application without KDE, use configure and make from the kid3-qt directory. The configure script can be generated with autoconf.
The Qt application can also be compiled for Windows. buildkid3.bat can be used to configure and build.
With KDE, the file name filter and format, the import formats, the filename and ID3 formats, the toolbar and statusbar settings as well as the window size will be be saved in the standard location in file kid3rc. As a Qt application, this file is in the .qt directory, with Qt 4 in .config/kid3.sourceforge.net/Kid3.conf, with older releases of Qt, a file kid3.cfg is created. On Windows, the configuration is stored in the registry.
The Qt 4 and KDE 4 versions on Linux offer a D-Bus-Interface to control Kid3 by scripts. Scripts can be written in any language with D-Bus-bindings (e.g. in Python) and can be added to the User Actions to extend the functionality of Kid3.
The artist in tag 2 of the current file can be set to the value "One Hit Wonder" with the following code:
dbus-send --dest=net.sourceforge.kid3 --print-reply=literal /Kid3 net.sourceforge.Kid3.setFrame int32:2 string:'Artist' string:'One Hit Wonder'
or easier with Qt's qdbus (qdbusviewer can be used to explore the interface in a GUI):
qdbus net.sourceforge.kid3 /Kid3 setFrame 2 Artist 'One Hit Wonder'
import dbus kid3 = dbus.SessionBus().get_object('net.sourceforge.kid3', '/Kid3') kid3.setFrame(2, 'Artist', 'One Hit Wonder')
use Net::DBus; $kid3 = Net::DBus->session->get_service("net.sourceforge.kid3")->get_object("/Kid3", "net.sourceforge.Kid3"); $kid3->setFrame(2, "Artist", "One Hit Wonder");
The D-Bus API is specified in net.sourceforge.Kid3.xml. The Kid3 interface has the following methods:
boolean importFromFile
(int32 tagMask tag bit (1 for tag 1, 2 for tag 2), string path path of file, int32 fmtIdx index of format);
Returns true if ok.
boolean exportToFile
(int32 tagMask tag bit (1 for tag 1, 2 for tag 2), string path path of file, int32 fmtIdx index of format);
Returns true if ok.
A file list item is a directory if getFileName() returns a name with '/' as the last character.
Returns true if current file item is a directory.
boolean setDirNameFromTag
(int32 tagMask tag mask (bit 0 for tag 1, bit 1 for tag 2), string format directory name format, boolean create true to create, false to rename);
Returns true if ok, else the error message is available using getErrorMessage().
Returns true absolute file name, ends with "/" if it is a directory.
string getFrame
(int32 tagMask tag bit (1 for tag 1, 2 for tag 2), string name name of frame (e.g. "artist"));
To get binary data like a picture, the name of a file to write can be
added after the name
, e.g. "Picture:/path/to/file".
Returns value of frame.
boolean setFrame
(int32 tagMask tag bit (1 for tag 1, 2 for tag 2), string name name of frame (e.g. "artist"), string value value of frame);
For tag 2 (tagMask
2), if no frame with name
exists, a new frame
is added, if value
is empty, the frame is deleted.
To add binary data like a picture, a file can be added after the
name
, e.g. "Picture:/path/to/file".
Returns true if ok.
Properties are Format, Bitrate, Samplerate, Channels, Duration, Channel Mode, VBR, Tag 1, Tag 2. Properties which are not available are omitted.
Returns list with alternating property names and values.
Automated configuration changes are possible by modifying the configuration file and then reparsing the configuration.