It was suggested by a poster in another thread of mine, that I post my request here. The original thread is at: https://forum.audacityteam.org/t/find-maximum-and-other-suggestions/18837/5
I have pasted the important parts below:
A Find Maximum would be very useful. Here’s why, and below is a suggestion how it could operate. Often I want to manually decrease the dynamic range by reducing some of the peaks, so that the overall volume increases after I normalise. I’d rather not use automatic functions because I assume they would affect the entire sound file and I’d like to keep the sound as close to original as possible. In one situation, a friend asked me to improve a sound recording made in Cairo during WW2. Street vendors offered passing soldiers the opportunity to step into a sound booth, record 30 seconds of greetings to family, and then they were given a flexible record which could be mailed home. The one I was given was full of crackles, so I worked my way through several hundred pops, manually reducing the peak between the zero-crossing. Seemed to work pretty well, though very time consuming.
A more recent example was a recording of someone with Alzheimers who got distracted by the microphone in front of him and would start stroking and tapping it, introducing very loud, clipped noises. I have manually reduced the levels of some of the clipped peaks so that the dynamic range is reduced, thus allowing an overall higher volume (after normalising). But again, it was very time consuming.
This is how I suggest a Find Maximum would work:
- The user selects Find Maximum. Dialog Box 1 appears, asking for how many peaks to find, the amount of volume reduction required (dB), and whether the process is to be manual or automatic. For example, after the user enters the details, the dialog box might look like this:
Number of peaks: 20
Volume reduction (dB): 6
Audacity then scans the sound file for the highest 20 peaks, stores them in an array for quick access, takes the user (if “manual” was chosen) to the highest peak at the highest zoom, and highlights the waveform that will be reduced.
Dialog Box 2 appears, asking the user for confirmation to reduce the waveform.
After reducing the waveform, the user is automatically taken to the next highest peak.
An additional feature that may come in useful, particularly is there are a lot of peaks close to each other, is the ability of the user to set the “width” of the waveform to be reduced. The width of the reduction is measured in zero-crossings. If the user only wants one half-cycle waveform reduced (imagine a positive-going peak), they choose 2 as the width. Audacity looks for the closest zero-crossings on both sides of the peak and the sound between those crossings will be reduced. If the user selects 4 zero-crossings, they are asking for the positive peak to be reduced as well as the two negative half-cycles on either side. This feature could be added to Dialog Box 2, so that after the user is taken to a peak to be reduced, if they see that there are several that need reduction, they can enter the width in zero-crossings, the extra waveform is highlighted, and the user can give the go ahead.
If someone is able to write such a function, I am more than willing to help with testing, further suggestions, and documentation.