[Suggestion] Add a 'Save (minimal)' entry to the File menu

Currently, pressing Ctrl+S saves the tag entered in the Tag Panel to all selected files, regardless of whether they require changes or not.
 
My suggestion is to add a additional Save (minimal) entry in 'File' menu. (with keyboard shortcut, e.g. Ctrl+Shift+S).

When pressed, it would save the tag only to the affected files, skipping those that do not require modification. This would speed up the process if there are such files in the selection.

In such a case, the status bar at the bottom of the main window would display:
Saved tag in 5 of 11 files (6 required no change)
instead of:
Saved tag in 11 of 11 files
2024-03-30_204743~~

What I have in mind is this feature of the Bulk Rename Utility:

(screenshot):

Screenshot 2024-03-30 225616

Thank you

The question is whether comparing the previous contents with the modified data is faster than simply and brutally writing all the currently set data to the files.

I think this would be very useful when you have a lot of files selected (e.g. an artist's entire discography), but only want to change the values of a few, e.g. properly capitalize Album, Genre, or apply Auto-numbering to only some albums.


Another approach, more preferable to me, would be to have an additional option in Files | Options | General to Skip saving tags if they require no changes, and an additional entry in the File menu to Save (force) tag, which would force-save all tags regardless of whether they require changes.

Wouldn't then a filter be the tool of choice?
This would reduce the treated files to just those that need treatment.

No, because creating filters would make it more complicated for me rather than easier.
I mostly use Mp3tag for artists' entire discographies. So after selecting the files for an entire discography in Mp3tag, I would have to create a filter for Album, make my changes, then create another filter for Genre (or try to combine the two), make my changes, etc. Then I'd have to disable the filter(s) to apply Auto-numbering, etc. All this would be a tedious process.
In such cases, the Skip saving tags if they require no changes option would save me from having to create filters: I'd just visually scan the File List and make the necessary changes, one by one, until all the tags are normalized the way I want them.

That is slow and tedious and unnecessary in Mp3tag. I suggest that you explore the capitalization options available via Mp3tag actions.

You could create action groups containing capitalization scripts for your tag types of interest. Such actions and scripts have been discussed and posted here by me and by many others over the years. Search this site on "capitalize" or "Grammartron" to see them.

Your action groups would only need to be created once. If necessary, you could modify the posted scripts to suit your purposes but the stock versions might be adequate.

IMHO the visual scan plus the one-by-one changes are the bottleneck here but not that MP3tag saves too many files.If you modify file by file then the changes would be saved as soon as you go to the next file.
I am not really sure that I understand the workflow in which allegedly too many files are handled.

Yes, I'm referring to visual scan.
And, yes, the problem for me is that Mp3tag saves too many files, i.e. all files selected, incl. those that require no change.
And, when saying "one-by-one", I didn't mean to modify file by file, that would be too cumbersome. I meant to make a change to a tag value of all files selected, then press Save. Then make next change, press Save, etc.
e.g. change Genre value, press Save. Then change Album Artist, press Save, etc.

Here is a typical example workflow example:
an artist's entire discography, 10 albums, 10*10 = 100 files total. I select these 100 files in Mp3tag. I notice that:

  • album 1 (10 tracks) has wrong Genre value (I want all 10 albums to have the same genre)
  • album 2 has wrong Album Artist value (it's a split, therefore it should be V/A)
  • album 3 has wrong capitalization in its Album title value,
  • albums 5+7 have a Disc value (1) which I want to be blank
  • album 8 has a "0" padding in their numbering (or some tracks don't have numbering at all)
I attach a few example screenshots for reference:



So, having all 100 files selected, if I do the above 5 changes one by one, there will be:

  • wrong Genre --> 100 writes, i.e. all 100 files will be modified.
  • wrong Album Artist --> another 100 writes
  • wrong capitalization in Album ---> 100 writes
  • unnecessary Disc value ---> 100 writes
  • "0" padding in numbering (run Auto-numbering wizard) --> 100 writes

i.e. there will be 500 tag writing operations (all 100 files will be modified 5 times each).

Even if I make the first 4 changes at once, there will be 100 writes + 5th change will be another 100, i.e. 200 in total.

 
With my suggested option, there will only be 50 tag writing operations (5 * 10), i.e. only 50 files (5 albums) will be modified. This will occur even if I make the first 4 changes at once. The rest 50 files will not be modified at all.

This is where the filter makes life much easier. In this case you have only filtered for the AlbumArtist to get these 10x10 albums/tracks.
In the filter box you could bring this down on each step you desire by using these five filters

  1. %albumartist% IS xxx AND NOT %genre% IS "expected genre"
  2. %albumartist% IS xxx AND %album% IS yyy
  3. Highlight the 10 files for album 3 and use the Action to correct capitalization of the Album field
  4. Hightlight the 20 files for albums 5 + 7 and use the Tag Panel to clear the %disc% value
  5. Highlight the 10 files for album 8 and use the Numbering wizard to correct how you want the tracks to look, with or without leading zeros and total discs as well

Each of the steps would only save the files that actually have changes. Exactly 60 files to save (your 4th example edits 20 files, not 10). And the same amount of effort to filter them accurately in each case.

At least the steps

Could be dealt with in a single action which would require only 1 run.

I am still not sure whether simply writing the set tag data to a file is quicker than reading the file again, comparing it with new data and then write it or not.
See also this dicussion

where apparently MP3tag speeds up the process if nothing is to do.
To me it looks like the user would not have to think about how many files really get written. Still, as the files are touched, the modification date will probably be updated.

I'm aware of the filter functionality, but I use filters for more special cases/specific matching.
I prefer visual scan as a much more straightforward/convenient approach.
 

Yes, I've read that discussion. It's great news of course, but unrelated to my request.

When opening folders in Mp3tag (in my case a discography/several albums) all tag values have been read and displayed as a table in the Tag Panel. Therefore with my proposed option, there's no need for Mp3tag to read the file again -instead, just compare the new value with the existing one, and if they are the same, then skip saving the tags for that file.

The amount of files being written is an additional thing that worries me: I have a very large collection of music files, and usually have to deal with entire discographies (several albums), so the less writing activity is done on my hard drive, the less I worry about its health.

I have the "Preserve timestamps of modified files" option enabled in File | General, so the modification date is preserved for me.

If you don't allow the modification date to change, how does your media manager or player know to update the tag details?

How is this possible when updating 100's or 1000's of files?

I would say that it is very much related to your request as to me it suggests that MP3tag very well checks which file has to be modified (in the other thread's case: remove a field) or not. So it would not be the user who has to take care.
But I have said that already.

So far I have not seen any hard evidence that the function is really necessary.
I just loaded 59 files from a 3-CD-collection.
I selected 22 of these and set ALBUMARTIST from "Various Artists" to "Various Artist".
Then I selected all of them and set ALBUMARTIST to "Various Artists" (again).
I saved the modification with Ctrl-S and the progressbar went about half the distance and then the process was over.
Just to check, I ALBUMARTIST to "Various Artist" and saved it to all the files and this time the progress bar went all the way.

So it looks like the function is already there.
Still, the application of actions to correct the

could be handled by an action group which would save 300 manipulations.
I doubt that

is a good approach as I know a lot of artists that issue their work in many different styles and genres. E.g. I would never assign the same genre to Sting's "If You Love Somebody Set Them Free" and "Moon Over Bourbon Street", both on the same album. So I would assume that to get it right, every track has to be selected and modified individually.

It unrelated in the sense that, as mentioned in the other topic, the files are only skipped when using the actions feature and no changes result in applying the actions. I think you misunderstood that part.

Saving by other means (Tag Panel, Extended Tags, Converters) always saves the files. This is by design.

The suggested feature of only saving files if changes are actually needed would require a major rewrite of the relevant parts in Mp3tag. It would also involve inspecting the different tag formats and versions (ID3v1, APEv2, ID3v2.2, ID3v2.3, ID3v2.4 with ISO-8859-1, UTF-16, or UTF-8) available in the files, compare their contents to what's about to be written, all taking the current configuration settings into account.

I currently prefer the solution of always writing a fresh tag using the current settings, so this feature is not planned in the immediate future.

I use MusicBee. It detects tag changes fine. It also has its own option in: Edit Preferences | Tags (1) / Tag Storage | "don't update file modification time when saving tags".

I also have Foobar2000. It also has its own option in: File | Preferences | Advanced | Tagging (General) | "Preserve file creation/access/modification time when retagging".

 

Thank you for your response.