I’m generally OK with that, but there are some issues that should be considered.
The Bass Boost effect is approximately twice as fast as the Tone Control plug-in. The Tone Control is reasonably quick for a Nyquist plug-in, but Nyquist plug-ins are inherently slower than other effects.
The Bass Boost has a “Preview”. This is not currently possible with Nyquist plug-ins (but would be a great addition and is currently listed in the Nyquist Wish List.
The “Normalize” feature in the Tone Control is potentially dangerous (as is the case with all Nyquist plug-ins that include a Normalize feature) because if used on long audio tracks it can eat up all available memory and cause Audacity to freeze or crash.
I’ve not seen any posts saying “oh oh oh, the Equalizer is so intimidating it scares me…”
but I get the impression from quite a lot of users that they have avoided trying to use the Equalizer because it looks too complicated.
I think the main benefit of a “reduced interface” for the Equalizer would be to make it more convenient for people that already use it. If it encourages some less technical users to have a go with it, then that’s a bonus, but because of the number of features (sliders/curves, filter length, preset manager, invert …) I think it will mostly continue to be seen as a “power user” tool. For this reason, I think a quick and easy “tone control” would be a significant benefit for many users.
It is not an uncommon question to see someone ask “I’ve found the bass boost effect, but how do I do the opposite and reduce the bass?”
This begs the question, how can they find the bass boost without finding the Equalization effect?
I think the answer to this is that they immediately understand “bass boost”, but “Equalization” sounds technical and scary so they skip over it.
If they saw “Tone Control”, then my guess is that they would recognise that also.
Yes - basically along the same lines as Bill, but that’s a different discussion.
Tone Control plug-in
I’ve revisited this bit of code and made a few changes.
As mentioned, there is a potential hazard with the Normalise feature, so I have set that to OFF as the default.
This is a shame as it is a particularly useful feature of the effect, but there is currently no way to apply normalisation in Nyquist plug-ins without running the risk of crashing. Even the great R.D. has only succeeded in producing memory safe normalisation by using a 2 pass effect (a highly complicated Nyquist script that needs to be applied once to measure the current amplitude and a second time to apply the amplification).
This is a serious limitation in Nyquist that applies to several currently available plug-ins. My number #1 feature request for Nyquist would be for the peak amplitude of the selection to be passed to Nyquist, either as a Global variable, or as a property of “s”.
If it is technically possible to do so, I would think that attaching the peak value of “s” as a property would be the better way to do it. The global variable “LEN” could probably be attached in the same way, and in the future possibly other properties, such as the track name (could be very useful for labels).
However, we currently do not have such a feature, so I’ve looked at alternatives.
I notice in my original code that I have used a very complicated method to calculate the peak amplitude. I did this to try and minimise the memory usage, but I think now that it is only of benefit to earlier versions of Audacity that were suffering from a bug that prevented memory from being released properly. This Audacity/Nyquist bug has now been fixed so there is no need for such a complicated method, so I have simplified this bit of the code.
To avoid the normalisation problem altogether, I have also produced a version (tonecontrol-2) that has an “Output Amplification” slider instead of Normalisation. I don’t think this is as convenient for users, but it is safer.
The Help screens have now been fixed.
I’m not sure about including the “technical details” in the “Tips” section - it may be useful for some users so they can see exactly what the effect does, but does it undermine the “simplicity” of the effect? What do you think?
I have also made a third version (tonecontrol-3) that resamples the wave before calculating the peak level - I’ve seen this used in some of the existing plug-ins, but as far as I can tell it makes no difference to the speed or memory usage.
Here are the three versions.
tone-control.zip (4.67 KB)