Personally, I've always used sox (aka SOund eXchange, the "audio Swiss Army knife") for this kind of thing. It should be available in the repos for all distros. Unfortunately, it's a terminal based tool.
But - I've already created a bash function to normalise any mp3 files in the current working directory. So you
don't need to learn anything fancy to do this. Literally, all you need to do is copy/paste some code into a specific file and then you're good to go.
But first you will need to install sox using your package manager.
The quickest and simplest way to do this is via the terminal (sorry, but it is!).
As you're using Mint:
Code:
sudo apt install sox libsox-fmt-all
After sox and its dependencies have installed, use a text editor like nano to edit the file ~/.bashrc:
.bashrc stores your settings for bash and is read any time you open a new terminal.
Again, you don't have to use the terminal to do this, but seeing as we just installed sox using the terminal, we may as well edit the file there too, right?!
And you don't have to use nano - I merely suggested it because it's what most ordinary users would use. I'm more of a vim man myself!
Next, copy/paste the following function at the end of the file:
Bash:
function normalise()
{
tempdir="$(mktemp -d)"
for f in *.mp3 ; do
sox --norm "$f" "${tempdir}/sox.mp3"
mv -v "${tempdir}/sox.mp3" "$f"
done
rm -r "${tempdir}"
}
BTW - I'm English so I've used the English spelling of normalise. Feel free to swap the s for a z in the function name if you prefer it!
Anyway - save the file, quit the editor and then close the terminal.
And that's it! That's all the set-up that's required.
Now, whenever you want to normalise a batch of mp3's, you can simply open a new terminal window, use the cd command to navigate into a directory containing mp3's and then use the normalise function.
like this:
Code:
cd Music/SomeBand/SomeAlbum/
normalise
And that will normalise
all .mp3 files that are in the current directory using sox. Wait until it's finished doing it's thing and - Job done!
Also, if your file-manager has an "open terminal here" option anywhere - you could use your file-manager to browse into a directory containing mp3's. And then use the "open terminal here" functionality to open a terminal in the appropriate directory.
Once your file-manager has poppped up a terminal you simply use the command:
Without needing to use cd.
It might seem a little limiting only normalising one directory at a time, but because I've used mktemp - we can safely open multiple terminal windows to different directories and run multiple instances of normalise at the same time.
OR, what I do is to run normalise in the background by adding an & at the end of the line. That way, I can run multiple instances of it in a single terminal window. So I can navigate to one directory, start normalise in the background, then I can cd to another directory and run another instance of it in the background.
Like this:
Code:
cd /Music/SomeBand/SomeAlbum
normalise &
cd ../AnotherAlbum
normalise &
cd ../YetAnotherAlbum
normalise &
Above we navigate into three different directories and run 3 instances of the normalise function in the background.
Then we wait until no more messages are output by mv and verify that all of the processes have finished using the
jobs
command, before closing the terminal..
It's by no means a perfect solution, but it works for me.
I have been thinking of writing a script that can deal with a list of directories, and normalising them with sox. But I haven't quite got around to it yet.
I have also been thinking about the possibility of creating a desktop application that will allow me to graphically choose one or more directories to normalise and then normalise them all in one go using sox. I might just accelerate my plans for that!