MP3 singles utility (v5.3 June 2020)
5.3: Added checkbox to check1. Made all listboxes selectable. On ENTER selected text is copied to clipboard. This can be copied to text editor for further analysis.
5.2: Adds support for subdirectories and multi range rating playlists.
Contents
Why I started creating this utility.
- My mp3 singles collection started to grow over the years, now over 6.000 titles. I use an mp3 tag editor such as (mp3tag v3.01) to clean up the song information. In itself a very good tool, but like all the other mp3 tag editors I tried, it supports a limited set of ID3 tags. Tags it does not support it will also not show/see. This is how all of these mp3 editors seem to work.
- I give my mp3 files a name like <artist> - <title>. I found myself making typo's in the file name for the artist and/or song, leading to similar songs in my collection with slightly different file name. For instance, for artists starting with 'The' I could have an mp3 for the same song/artist with and without 'The'. Checking all these typos manually was a lot of work and I wanted something to do this for me.
- I wanted to delete all unwanted/unused ID3 frames from an mp3, including those that mp3tag did not support.
- One thing I could not find elsewhere on the internet was a utility to list all the ID3 frames present in an mp3 file. So I added this to my utility.
- Finally, I generate playlists of my collection based on rating, year etc. I added a function to the utility to do this automatically.
My utility is written in visual basic using Visual Studio 2019. It uses .NET framework 3.5 SP1. The user settings in the program are stored in a config settings file. This is a file named "user.config" and should be located in the %appdata% folder. On my computer this was stored in "C:\Users\ron\AppData\Local\Ron_Jut\SinglesUtil.exe_Url_a1n5ti3peojnxd0awmqcpwsqldyqqtkf\5.2.0.0". On another installation this might be different.
Here is a download link to version 5.3.0.0., if you want to use the utility yourself at your own risk. Make a backup of your files first before using the utility! The utility has never messed up my mp3 files but it is better to be safe then sorry. The exe file is the result of the release built, it would need .NET framework 3.5 SP1 installed on the computer you run it on. A modern Windows 10 installation should already have this.
Alternatively you can download the published version. This is a .zip file that includes 3 more files:
Download the zip and unpack. Click on "publish.htm" to install.
The mp3 collection.
The utility has a tabbed interface with a separate tab for each check or function. The first tab is used for the selection of the mp3 folder.
If the input folder does not exist the box will show a text asking you to select a folder and the list remains empty. To include subfolders in the list check the box. Files with another extension than .mp3 are ignored. The gridview shows the files and paths that are read. The list can be sorted by clicking on the headers.
Explanation of check1.
This checks if the words in the artist and title are in so-called Titlecase, i.e. each word starts with a capital. Some exceptions are allowed like vs and ft. With the checkbox you can surpress the 'ignore' messages. When the check finds something that does not seem right then it will list it in the textbox. The file itself is not actually changed. You have to do this yourself. Once you made changes you need to run the utility again.
Explanation of check2.
This checks if an artist and title combination exists both with and without a 'The'. If one is found then this is listed in the box. You have to make corrections yourself, e.g. delete one of the 2 files.
Explanation of check3.
This checks if artists exist with almost the same spelling. This could indicate a typing error. Found entries are listed in the text box. Again, you have to make changes to the file names yourself.
Explanation of ListTags function.
This function generates a text file with the found ID3v2.3 frames in the mp3. The function does not actually check if a found frame name is part of the ID3v2.3 definition, nor does it check if the payload of the frame is correct. So this function also lists all 'invalid' ID3v2.3 frames.
The text box shows all lines that are written to the file.
Below is an example of a entry in the output file:
Ava Max - So Am I.mp3;Info:ID3v2.3 length (bytes)=95581, Info: Padding bytes=4329;;TALB;9;0;TPE1;9;0;TIT1;8;0;TCON;5;0;TLAN;9;0;POPM;23;0;TIT2;9;0;TRCK;3;0;USLT;2036;0;TYER;6;0;APIC;89024;0
The length is the total size of the ID3v2.3 tag, till the start of the mp3 audio. The padding is the number of bytes between the end of the last frame and start op mp3 audio. Then a list of found frame names followed by the length of the frame in bytes and the flag byte. The actual pay load of the frame is not shown. The flag byte is typically 0. An explanation of the frame names can be found at the ID3 web site.
The name of the output file name can be changed in the user.config file. The folder is always the same as the playlist folder. So make sure you select this first before running this function. This "user.config" file can be found in the %AppData% folder. Something like: "C:\Users\ron\AppData\Local\Ron_Jut\SinglesUtil.exe_Url_a1n5ti3peojnxd0awmqcpwsqldyqqtkf\5.2.0.0". The file is in xml format and can be edited with a plain text editor.
Explanation of the LyricsLanguage function.
This function can change the language code of the embedded lyrics in the mp3. These language code are often simply set to 'xxx' or 'eng' even if language of the lyrics is another one. Before you run this function you want to copy a set of mp3 with a specific language to a separate folder. This function simply changes all the lyrics codes in all mp3, regardless of the TLAN frame that may be present in the mp3. This function does not alter the TLAN tag, this can be done with editing tools like Mp3tag. No check is done whether the entered language code is actually a valid href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO639-2 definition. For instrumental tracks ISO639-2 has defined the code 'zxx'.
Explanation of the delete frame function.
The function can remove all unwanted frames from the mp3 files. The function does not actually check if a frame name is part of the ID3v2.3 definition, nor does it check if the payload of the frame is correct. So this function will also remove 'invalid' ID3v2.3 frames and its payload. Space that becomes available when frames are removed are padded with zeroes. So the file size does not change. This is a valid and common technique used in ID3v2.3.
Explanation of the Playlist tool.
This function generates playlist files depending on the contents of the ID3v2.3 frames. The grayed out option I have not supported yet. The generated files have a .m3u extension but the contents is a simple list of mp3 files, e.g.:
New\Dermot Kennedy - Power Over Me.mp3
New\Billie Eilish - Bad Guy.mp3
New\Danny Vera - Roller Coaster.mp3
New\Ava Max - So Am I.mp3
So this does not follow the M3U definition but the players do not have a problem with this. Winamp plays these playlists without problems. The text format of the playlist files is UTF8. This means it also handles special characters such as ö or ü correctly.
Make sure to select the location for the playlists correctly. This is used to calculate the relative path from the playlist folder to the mp3 folder. If the playlist is moved later to another folder then the playlist will no longer work because the relative path is no longer correct. Because the paths used in the playlists are relative you can move the mp3 files together with the playlists to another location as long as the relative path remains intact. Note that this function APPENDS to existing files if they already exist. So you may want to delete files already present in the playlist folder.
Starting in version 5.2 I added an option to generate a playlist for a range of ratings. This means that a song with e.g. rating 2 is not only copied to e.g. 'PlaylistRating2star.m3u' but also to 'PlaylistRating1-5star.m3u' and also to 'PlaylistRating2-5star.m3u'. The song is copied to the lower rating lists. This way you can have 5 additional playlist where the rating of the song is a minimum value. So 'PlaylistRating3-5star.m3u' will contain songs with a rating of 3 and higher, 'PlaylistRating4-5star.m3u' will contain songs with a rating of 4 and 5 only.
For my 6000+ collection and all options checked this function takes a few minutes to execute. Sometimes, during execution, the progress bar and listbox freeze but the cursor remains spinning. In this case the utility is still running but for some reason the screen is no longer updated. This also happens sometimes with the other checks but usually only with larger collections.