#stateful_audio_converter
The best tool to undertake the task at hand is the simpliest one that handles it
Screenshots
Below, you find the (real-size) screenshots corresponding to all the steps that may be necessary to undertake in order to fully use this program.
#stateful_audio_converter : You reach here when the program starts; here, you see the current configs. If those are ok, click start to proceed; otherwise, click either the configure button or the resume of one of the steps so that you can change them.
Confirmations step:
Tweet:
You reach here when the program starts; here, you see the current configs. If those are ok, click start to proceed; otherwise, click either the configure button or the resume of one of the steps so that you can change them.
Extra info:
Notice that if you have paused a batch job, then when you start the program once more you do not start the program at this step but at the results one; in all the other cases you start here.

By scrolling the window, you can see all the current configurations, becoming easier to verify if any of them has to be changed.

If that is the case, you can either click the configure button to start configuring from the first one or click the resume of the configuration to be changed to directly travel to the corresponding step.

At this step you can also click the donate button to donate (via paypal) some money to me. By doing it, the program will request the default browser to open a paypal page where you can see the target of the donation (me) and the amount to donate (which you have selected on the program, before clicking the donate button).

When you are satisfied with the current configurations, then you can click the start button to initiate the batch job (and be driven to the processing step).

When a batch job is initiated, the configuration used for it is saved, so that the next time you execute the program it is the one that is pre-configured.
#stateful_audio_converter : Here, you choose the type of files (.mp3, .wav, or .wave) the program searches for and, then, you click either done (to end configs) or next (to continue them).
Configuration step 1:
Tweet:
Here, you choose the type of files (.mp3, .wav, or .wave) the program searches for and, then, you click either done (to end configs) or next (to continue them).
Extra info:
Here, you can choose what type of files the program searches for.
#stateful_audio_converter : Here, you choose the source folder for the search and whether or not the search must include all the descendant folders of the given one and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 2:
Tweet:
Here, you choose the source folder for the search and whether or not the search must include all the descendant folders of the given one and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
Here, you can choose the type of folders you want to use: custom folders or default ones.

Default folders are folders automatically created by the program in order to facilitate its use: there is one, named source, where the program searches for the input files and one, named target, where the program saves the created ones.

Custom folders are folders managed by the user of the program; whenever one of these folders is not found, the program automatically switches to the use of the correspondent default one.

In addition, here, you also select whether or not the search is to be restricted to the contents directly inside the source folder.

Notice that guiding the program to search for the files inside the given source folder and all its descendant ones is practical, but it comes with a cost: it takes a bit more time for the search to reach the end. Nonetheless, it is the setting that I usually use.
#stateful_audio_converter : Here, you choose whether or not the source files are to be deleted if they are correctly used by the program and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 3:
Tweet:
Here, you choose whether or not the source files are to be deleted if they are correctly used by the program and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
When I created this option I imagined the following two cases: 1) the source files are important and will be used later on and 2) the source files are not important and will not be needed later on.

Taking this into account, I always forbid the deletion of the source files when those are important and I always allow their deletion otherwise.
#stateful_audio_converter : Here, you choose the type of files (.mp3, .wav, or .wave) to create and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 4:
Tweet:
Here, you choose the type of files (.mp3, .wav, or .wave) to create and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
The program supports the creation of two audio formats, mp3 and wave.

The process in which mp3 files are created (whether they are created from other mp3 files or from wave files) is lossy; meaning that there is a loss of quality in the process, which cannot be reverted.

The process in which wave files are created (from mp3 files) is lossless; meaning that there is not a loss (nor a gain) of quality in the process.

What this means is that after converting the audio corresponding to some file to an mp3 one, you cannot ever restore the original audio from the converted one, as the conversion is one-way, meaning that it cannot be reverted.

In this way, and taking into account that wave files take much more space in disk than mp3 ones, you should never convert mp3 files back to wave files (there is neither a gain nor a loss of quality in the process, but there is a loss of disk space, as wave files are much bigger than mp3 ones), unless the goal is listenning to them in some setup (like an old cd player) that cannot handle mp3 files.
#stateful_audio_converter : Here, you choose the way the output files are named and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 5:
Tweet:
Here, you choose the way the output files are named and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
The purpose of having several naming algorithms is allowing the user to choose the one that better fits its case, when considering the way he wants to deal with naming clashes, whether these happen because the target folder is not empty at the time the job starts or because the search included the subfolders of the given one, the paths of the files to be created are to be flattened, and there are at least two files with the same name on the source tree of folders.

The program, for now, supports naming the output files in the following three different ways: 1) the original name of the corresponding source file is used unchanged; 2) the original name of the corresponding source file is used unchanged, unless there is a name clash, in which case a numeric suffix is added to the original file name; and 3) the output files are named with the index corresponding to the order in which they are processed.

If you choose the algorithm 1) above, then you might find name clashes if either (or both) the target folder is not empty when the job starts or the source tree of folders contains at least two files with the same name and the folder path of the source folders is to be flattened; if you choose the algorithm 3) above, then you will only have problems with name clashes if the target folder is not empty at the time the job starts; and if you choose the algorithm 2) above you will be free of problems with name clashes, as this algorithm adapts the name of the file to create till a colision is not found.

In this way, the algorithm 2) referred above is the default choice.
#stateful_audio_converter : Here, you choose whether or not the program is allowed to overwrite the files in the target folder (if the need arises) and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 6:
Tweet:
Here, you choose whether or not the program is allowed to overwrite the files in the target folder (if the need arises) and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
The settings corresponding to this step are associated with the ones corresponding with the way the files to output are named. Specifically, the need to overwrite files on the target folder only arises if you have not choosen to add a suffix to the unchanged name of the corresponding source file, in case a name clash ocours.

In other words, a file can only be overwritten in the target folder if the process in which the name of the output files is choosen does not adapt the name of the file to be created when a name clash is found.
#stateful_audio_converter : Here, you decide if the audio files to create will include (non-audio) extra-information, if this info is available, and what is the size of such information and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 7:
Tweet:
Here, you decide if the audio files to create will include (non-audio) extra-information, if this info is available, and what is the size of such information and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
The program allows you to select whether or not you want to include non-audio extra-info (hereinafter denominated tags) in the created mp3 files.

These tags have been created with the aim of associating non-audio info like the audio's title, the audio's author, the audio's album, the audio's genre, etc with mp3 files, which is really useful, but has a cost associated with it.

Notice that, at the moment, there are three types of tags in use (which I nicknamed small, medium, and large), and they have been defined at different periods of time.

Owing to this, not all the mp3 players undertand all of the tag formats and the older ones might even not understand any of them.

Thus, if you have an old mp3 player, you may have to test it with the different kinds of tags, in order to verify which one of them it understands, if it understands any at all.

In my opinion, the most problematic tags are the larger ones, because they (usually) appear at the beginning of mp3 files and, as so, if the in use mp3 player does not understand them, then it will consider the mp3 files that have these tags as being corrupt (these tags, in this case, appear before the mp3 configuration data appears) and, as so, it won't play these mp3 files.

The other two types of tags are not as problematic, because, as they appear at the end of mp3 files, they appear after all (or almost all) the configuration info associated with the audio to play has been acquired and, thus, there is a chance that mp3 players do not flag the files containing them as being corrupt and just play the data associated with those tags as audio, which, in this case, corresponds to noise.

Taking into account both what has been described above and that the larger tags take something like 20x the space the other two types of tags take, I have decided not to implement them.

Owing to this, this program, in what regards the tags, just allows one to choose one of the following three options: no tags, small tags, or medium tags.
#stateful_audio_converter : Here, you decide what is the level of quality with which the mp3 files to output are encoded and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 8:
Tweet:
Here, you decide what is the level of quality with which the mp3 files to output are encoded and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
The creation of mp3 files is a lossy process, which means that some data of the original audio is lost in the creation of mp3 files.

Taking this into account, you may consider the level of quality as being indicative of the amount of data that is lost in the process.

Specifically, consider that both the accuracy of the audio and the corresponding file size increase with the increase of the quality level you select at this step.

This program sets the default quality level (for on the go audio) equal to 6, being the default for other programs the level 5.

In this way, if this setting is maintained, the files created by this program get both slightly bigger and slightly more accurate than the ones created by other programs.

If you are an audiophile and, as so, pretend to encode mp3 files for high-fidelity, then you might want to use the maximum quality (level 10) for the encoding process.
#stateful_audio_converter : Here, you choose what is the type of mp3 encoding to use and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 9:
Tweet:
Here, you choose what is the type of mp3 encoding to use and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
The settings associated with this step are very technical, so you may wish to skip their explanation; just take into account that if you are using old hardware/software you may have to choose cbr (constant bit-rate) as the encoding to use. In all the other cases, you are advised to use vbr (variable bit-rate) encoding.

The program supports 3 ways of encoding a mp3 file (cbr, abr (average bit-rate), and vbr) and for each one of these ways supports several amounts for the expected number of bits per second that are generally taken by the encoding.

For this last number, bigger represents both better quality and a bigger file size; the typical bits' rate you will find on the web for on the go listenning ranges between 128kbits/s and 192kbits/s and for high-fidelity listenning is equal to 320kbits/s.

Thus, in my opinion, a (default) choice of 160kbits/s for on the go listenning is a good tradeof between quality and file size.

The other choice made at this configuration step, the type of encoding, is more difficult to explain and, as so, I will explain it by way of an easier to grasp example.

In a simple way, imagine you have to do an essay where you have to describe 100 photos and the description must be put in paper in a new notebook which has 100 pages, where you can write 1000 characters per page.

Moreover, assume that your teacher gives you the choice of doing the essay with one of the following 3 additional rules:

1) each photo must be described in exactly 1000 characters; or

2) you must use all the characters at your disposition to describe the 100 photos, taking into account that each photo must be described with a minimum of 500 characters and a maximum of 1500 characters; or

3) you must use all the characters at your disposition to describe the 100 photos, taking into account that there is neither a minimum nor a maximum number of characters to describe each photo.

The above 3 rules may be said to describe, respectively, cbr, abr, and vbr.

In this way, cbr encoding may be described as the easiest encoding process, as each part of the audio to encode (in this case, 100 parts) can be encoded per se, without taking the other parts into account. This, however, wastes a lot of space and originates a poorer quality, because some parts of the music may not have a thing to describe (silence, for instance) and other parts of the music may have several instruments and notes to describe and, nonetheless, they both use the same amount of information to be described.

By the same token, vbr encoding may be described as the most difficult encoding process, as each part of the audio to encode (in this case, 100 parts) depends on all the other parts, as the amount of info taken to describe one part cannot be taken by the other ones, forbidding the encoding of each part per se.

This, however, uses space in the best possible way, because the parts of the music that do not need much information to be described can give away the space they do not use and the ones that need more space (than the corresponding to the 1000 characters) to be described, because they have more information to be described, can accept the space given away by the other parts.

This way of encoding the info regarding the 100 parts of the audio increases the final quality of the audio but makes the process in which it is created much more difficult to undertake. Moreover, it also makes the process in which audio is prepared to be played more difficult to implement.

In order to understand why this is so, lets get back to the essay example and imagine that each one of its 100 parts has to be read aloud in just one breath: the parts of it that are small are easy to read but the parts of it that take some thousands of characters won't be.

By the same token, the hardware/software used to play music encoded by use of vbr encoding has to be prepared to play each part of the music no matter how much space it takes, which implies that it must allocate bigger buffers and use them (capacity to read the essay while sustaining the breath) to play the music to be played, without any hiccup.

Finally, abr encoding may be described as something in between cbr and vbr encoding, in terms of quality of the final audio, the space used by each one of its parts, the easiness of implementing the hardware/software that encodes the source audio, and the easiness of implementing the hardware/software that plays the final audio.

Taking into account what has been said above, one is lead to the conclusion that if the target hardware/software is capable of playing audio encoded with vbr, then that should be your choice, as it is the one that originates audio with the best quality.

At this point of the description, there are just three more notes to be pointed out:

1) vbr and abr encodings are not obliged to use all the space provided by the notebook to describe the audio, which, if the audio to be encoded is not complex, leads to shorter audio files than the ones created by cbr encoding (but this, in my opinion, is not important, compared with the quality associated with the different encodings);

2) in an ideal implementation, for both abr and vbr, all the parts of a music are taken into account when the encoding of the mp3 file is undertaken, but in reality, however, just some parts of the music are taken into account, being the latter parts' amount dependent on the size of the buffers used by the program that encodes the mp3 files; and

3) the value mentioned above, as the bit's rate, may be considered as corresponding to the number of characters that can be written on each page of the notebook, when considering the essay example.
#stateful_audio_converter : Here, you choose what is the sampling-frequency to use for the audio files to create and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 10:
Tweet:
Here, you choose what is the sampling-frequency to use for the audio files to create and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
The sampling-frequency gives the frequency at which a sample of audio information is presented to the speakers and, thus, both reaches your ears and is processed by your brain.

Owing to this, the higher the frequency of the samples of audio, the smoothier the quality of the sound that is perceived by you.

Taking into account both what has been said above and that the most used (and compatible) sampling-frequency is the one corresponding to the used on audio cds, you are advised to use this sampling frequency (44100Hz) when creating mp3 files.

Notice that the resultant mp3 file size (all other settings maintained) is proportional to the chosen sampling-frequency: the higher the sampling frequency, the bigger the resultant mp3 file.
#stateful_audio_converter : Here, you choose what is the number of channels to use for the audio files to create and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 11:
Tweet:
Here, you choose what is the number of channels to use for the audio files to create and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
The program allows you to select the number of channels of audio to include in the files to be created; this number of channels can be either one (mono) or two (stereo).

The number of channels of the (original) source audio is directly related with the number of microphones used to capture sound at the time it is acquired. By the contrary, the number of channels on 'end-user' audio-files has more to do with the number of speakers that are used to play it.

Here, we are only taking into account the cases in which either 1 or 2 microphones are used to capture audio and the cases in which either 1 or 2 speakers are used to play it.

Thus, here, we take into account the following four cases:

1) the source audio has been acquired with just one microphone (mono) and the end-user audio file has been created to be played on just one speaker (mono);

2) the source audio has been acquired with just one microphone (mono) and the end-user audio file has been created to be played on two speakers (stereo);

3) the source audio has been acquired with two microphones (stereo) and the end-user audio file has been created to be played on one speaker (mono); and

4) the source audio has been acquired with two microphones (stereo) and the end-user audio file has been created to be played on two speakers (stereo).

For high-fidelity and no-tight space constraints, there is no doubt that the best choice is the one associated with the case 4) described above. Indeed, this is the setting used for music cds.

For low-fidelity and tight space constraints, there is no doubt that the best choice is the one associated with the case 1) described above. Indeed, this is the setting used by both old tech landline telephones and old audio books.

The other two cases, cases 2) and 3), however, are not so simple to grasp and their use depends on the capabilities of the hardware that will be used to play the audio.

The goal of case 2) above is leading stereo hardware to use both the speakers to play the audio, when the latter has just one channel (mono) associated with it.

In order to accomplish this, the audio-data corresponding to the original mono source is added twice to the created audio file (once for the left and once for the right channels), in order to simulate the acquisition of sound by two source microphones.

Doing this, however, is just a hack to enable the two speakers on stereo hardware to work; it does not enhance in any way the quality of the played audio, but it almost doubles the created file size.

Thus, to avoid wasting space, as there is not a gain in quality associated with the process, it is usual for stereo audio players created (perhaps) in the last two decades to automatically use the two speakers, with the same audio data, when they are asked to play an audio file with just one channel (mono) associated with it.

In such a case, in my opinion, it is better to maintain the audio file with just one channel, because the hardware will do the right thing and you will listen to the audio on both the speakers, without wasting disk space by (almost) doubling the file size.

The goal of case 3) above is leading mono hardware to play audio that originally had two channels (stereo) associated with it.

In order to accomplish this, the audio-data corresponding to the left and the right channels of the original stereo source is mixed and the result is added to the created audio file, in order to simulate the acquisition of sound by one source microphone.

If you are not an audiophile, you are going to play your music on hardware that plays sound in both the speakers when it is given a mono file to play, and you are going to play it on a constrained disk-space environment (on the go listenning), then you can convert stereo files to mono ones as a hack to underspend disk space, as this will almost halve the original file size.

Indeed, if you are like me, you will not notice any difference when listenning (in a blind test) to either the original stereo file or the result of converting it to mono, when these files are played on the latter type of hardware.

In conclusion, if you listen to music in different environments, you may wish to maintain two sets of files: the first one to be played in an environment where you want to listen to high-fidelity audio and you are not constrained by storage space (for instance, in your living-room) and the second one where you are not so worried with the high quality of audio but more with the constrained amount of storage-space you have available (for instance, when using an old car mp3 player that still uses cds as a medium or when doing jogging with and old mp3 player).

In this way, for your living room environment, you may wish to maintain a set of stereo mp3 (or wave) files and, for your jogging one you may be willing to maintain a set of mono mp3 files.
#stateful_audio_converter : Here, you choose whether or not the audio's volume is to be normalized and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 12:
Tweet:
Here, you choose whether or not the audio's volume is to be normalized and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
The program allows you to select whether or not the source audio is to be (peak) normalized; this is the configuration that is dearest to me.

By guiding the program to (peak) normalize audio (mp3 or wave) files, you are asking it to convert the audio in such a way that all the converted audio files will share the same maximum volume, so that you do not notice highs and lows when your audio player changes audio tracks.
#stateful_audio_converter : Here, you choose the target folder and, in case the search included descendant folders, if the path to the latter ones is to be flattened and, then, you click either done (to end configs) or either previous or next (to continue them).
Configuration step 13:
Tweet:
Here, you choose the target folder and, in case the search included descendant folders, if the path to the latter ones is to be flattened and, then, you click either done (to end configs) or either previous or next (to continue them).
Extra info:
At this step, you must remember two things: 1) you can only change the target folder if, at step 2, you have not defined that the default folders must be used; and 2) the need to flatten the paths on the target folder (corresponding to the original source folder tree) only arises if you have chosen to include the contents of descendant folders in the search (otherwise, the folder tree is already flattened, as it has only one level).
#stateful_audio_converter : Here, you are asked to accept that the author of the program cannot be considered liable for any problem that may arise due to the execution of the program and, then, you click either done (to end configs) or previous (to continue them).
Configuration step 14:
Tweet:
Here, you are asked to accept that the author of the program cannot be considered liable for any problem that may arise due to the execution of the program and, then, you click either done (to end configs) or previous (to continue them).
Extra info:
Notice that this program is in constant development and, as so, in spite of the best efforts of his author, there are, for sure, unspoted bugs, as in any other complex program.

In this way, in order for you to be capable of using this program, you must accept this risk.
#stateful_audio_converter : Here, unless you want to waste the (probably less than) 60 seconds you invested in configuring the program, you have nothing to do - just wait for the job to conclude. Otherwise, click pause or stop. You can also donate...
Processing step:
Tweet:
Here, unless you want to waste the (probably less than) 60 seconds you invested in configuring the program, you have nothing to do - just wait for the job to conclude. Otherwise, click pause or stop. You can also donate...
Extra info:
Notice that, when the processing job starts, during the first moments, it is possible that nothing appears on the grid view, even if all the configurations are ok and there are files to be found on the given path. This is so, because there may be so many files to search for that the program is trying to cope with all of them.

Nonetheless, in order for you to be sure that everything is ok, just pass the mouse cursor over the grid view and if you see a wait cursor there, then just have a bit of patience with the program, because it is working hard, trying to undertake the job given to it. If you do not see this cursor there, then, probably, the configs are wrong and the program did not find any file in accordance with your requirements.

If the job has started as required, then, at this step, you can see the results of the undergoing job process by giving a look at the info displayed by the grid view.

There is at least one interesting info there, in the status column:

1) the sign with a blue color means that the file corresponding to it has not yet been processed;

2) the sign with a gray color (only appears if you are continuing a paused job) means that the file corresponding to it has been already processed but at an earlier point in time;

3) the circle with a green color means that the file corresponding to it has been processed with success;

4) the dot with a green color means that the file corresponding to it has been avaliated with success but no need has been found to further process it; and

5) the sign with a red color means that there was some error while processing the file corresponding to it.
#stateful_audio_converter : If you are here, then you have tried to either stop or pause the undergoing job. At this step, there is nothing you can do, except for waiting and, possibly, donating...
Pausing step:
Tweet:
If you are here, then you have tried to either stop or pause the undergoing job. At this step, there is nothing you can do, except for waiting and, possibly, donating...
Extra info:
This step is necessary in order to be assured that the processing of the target files does not get corrupted.

This is so because, at this step, the program does not know if you still want to continue the job at hand at a later time and, as so, it must assume that that is the case.

Thus, it must keep the processing of the files that were already being processed, so that no corrupt files are left behind.
#stateful_audio_converter : Here, you see the results of processing the batch job till the point where it was before reaching here (remember that it either ended or was paused). Now, you can either reconfig it or re-start/continue it, depending on whether or not the job reached the end.
Results step:
Tweet:
Here, you see the results of processing the batch job till the point where it was before reaching here (remember that it either ended or was paused). Now, you can either reconfig it or re-start/continue it, depending on whether or not the job reached the end.
Extra info:
If you reached here and everything worked in accordance with your requirements, then, now, you can start viewing the result of your (probably less than) 60 seconds really heavy time investment and hard work configuring the batch job! :-)