Analyze and fix what ails your music files with MP3 Diags

By

Chances are you sometimes come across an MP3 file that won’t play properly or does something quirky in your favorite music player. You can try ripping or downloading the file again, or you can fix the problem yourself with MP3 Diags. This utility has two main goals: See what’s inside MP3 files and identify errors and potential issues, and change MP3 files to conform to standards and contain all the useful information they are supposed to contain.

Ever wonder why a picture or lyrics are shown when playing some files but not when playing others, or why the song duration is wrong, or why some files sound much louder than others? MP3 Diags can help. You can also employ it on collections of tens of thousands of file to discover up front what might be wrong with them. After an initial scan, which can take a long time, the program loads quickly with complete information about the MP3 files.

Romanian developer Marian Ciobanu began writing MP3 Diags in 2008 after he tried several utilities to solve the problems in his MP3 collection, and found they all came up short. After a year’s work, he says, “I had something that was almost good enough for me.” He decided to publish it as open source software not only to give something back to the open source community, but also “to show that well-supported and well-documented open source projects can be created.” He also wanted to see what people would think about his unusual approach to GUI design. And it didn’t hurt that the project gave him something to show people who asked about his software coding and project management experience.

MP3 Diags is unusually well-documented for an open source project – by design. Ciobanu says, “The thing about documentation is that it’s not ‘cool’ so nobody wants to do it, especially if they don’t get paid. Some projects need documentation more than others; MP3 Diags would be pretty hard to use effectively without it. Even so, judging by some questions and suggestions I’ve gotten, I’d say that most people don’t read much of the documentation, so in a way it feels like a waste of time, but I’m not sorry that I’ve done it, because the people who read it benefited from it. Complete, updated documentation makes a project look more professional, and can increase the number of users and improve their experience with the project. Another benefit is that as you’re trying to explain what you are doing and why, you may identify ways to improve your project. And after you’ve done several pages, it becomes easier to write the rest.”

The project is coded in C++ using Qt 4 for the user interface. “For serialization I used Boost, for its well-known quality and availability on many platforms. KDevelop 3.5 is the IDE – it seemed like ‘the way to create Qt 4 applications.’ It is pretty solid and still far better than KDevelop 4 for what I need.”

Ciobanu says enhancements in future releases will depend a lot on feedback from the user base, and the time he has available. “Now I have a job, so I don’t have that much time, but I could find some if there seems to be a need. However, this is a quite complete product (it does pretty much all I want), so maybe it shouldn’t be changed much. In the end it’s mostly about the users. If they make a good case that something should be added or done differently, it’s quite likely to happen. The plan is to keep 1.0.x as the stable release for probably the rest of this year, making new versions quickly after crash fixes, as often as needed. During this time 1.1 will be more of a playground, with users being encouraged to keep using 1.0 unless they really need something from 1.1. One thing that 1.1 might get is internationalization; I might switch to using a library that will allow this to be done.”

Ciobanu would welcome help in the testing area, to identify what makes the program crash or perform incorrectly. “I get reports of bugs that I can’t reproduce on my system. To make matters worse, 80% of those who report bugs don’t reply to any of my questions, and as a result many times the bug remains unfixed until somebody else reports it again and is more willing to provide details. Of course, if somebody wants to join the project and make significant improvements, they’d probably be welcome too.” The best ways to get in touch are through the project’s forums or bug/feature tracker.