Completed Proposal Equalization

From Audacity Wiki
Jump to: navigation, search
Proposal pages help us get from feature requests into actual plans. This proposal page is about improving the Equalization effect.
Proposal pages are used on an ongoing basis by the Audacity development team and are open to edits from visitors to the wiki. They are a good way to get community feedback on a proposal.

  • Note: Proposals for Google Summer of Code projects are significantly different in structure, are submitted via Google's web app and may or may not have a corresponding proposal page.

Proposed Improvements

1) Break the Equalization into two effects: a) Graphic Equalizer and b) Draw Curves (or some other name)
2) Rationalize the naming, saving and loading of presets

Developer/QA Backing

  • Bill
  • Steve
  • Peter


Making Two Effects

Currently, EQ curves created in the "Draw" mode cannot be translated directly to the "Graphic" mode. For example, create a severe EQ curve in Draw mode, switch to Graphic mode then back to Draw mode. This is confusing for users.

Breaking the current effect into two distinct effects would remove this confusion. Users familiar and comfortable with the classic Graphic Equalizer interface can choose that. Those who want more control can use the Draw Curves effect.

Steve (talk) 08:52, 10 March 2019 (EDT): If we split Equaization into two effects (I shall refer to these as "Graphic Eq" and "FFT Filter"), then I think that the Graphic Eq should emulate a typical hardware Graphic Equalizer.

Graphic Eq design features:

  • Done.png Frequency range is always 0 Hz to 20 kHz.
  • ToDo.png The first and last sliders are shelf filters, the others are band filters.
  • ToDo.png Add a "Low cut" button. When enabled, it acts as a DC blocking filter.
  • ToDo.png Remove the interpolation option (This feature is currently broken). I think the "Cosine" option is the most intuitive to use as each slider produces the specified gain, irrespective of adjacent sliders. "B-Spline" is probably closer to the behavior of an analog hardware graphic. "Cubic" is somewhat counter-intuitive due to undershoot/overshoot.
  • ToDo.png Remove "Length of filter" and make it automatic according to the number of frequency bands.
  • Done.png Remove the graph. The sliders themselves should provide an adequate visualization of the frequency response.
  • Done.png Remove "Select Curve" (should be handled by presets).
  • Done.png Remove "Save / Manage Curves" (should be handled by presets).
  • ToDo.png Remove "Show grid lines" (unnecessary if graph is removed). Peter 26Aug19 I think optional grid-lines should be retained for EQ Curves.
  • ToDo.png Import and Export of curves
  • ToDo.png Real-time preview.

Graphic Eq - nice to have features:

  • ToDo.png An option for number of frequency bands. This would be difficult to implement if there are multiple "interpolation" options. Possibly easiest with Cosine interpolation.
    • Inexperienced users may find a 3 band Eq (low, mid, high) to be less intimidating, but still useful.
    • In many cases, a 7 or 10 band Equalizer is sufficient, and more convenient than having to set 31 sliders.
    • "Advanced" users may prefer a "classic" 31 band (1/3rd octave) Graphic Eq.
  • ToDo.png A "stereo" option (can apply different Eq to each channel).

Naming, saving and loading of presets

This is currently a massive kludge.

There are two parallel systems:

  • the legacy "Save/Manage Curves" dialog
  • the new (and consistent across all other effects) "Manage" button
They do not play well together and can result in confusion and unexpected results. It was proposed in November 2018 that the Manage button's menu items dealing with presets be disabled, but this does not appear to have been done.

What happens when saving named presets is far from transparent to the user, and sometimes results in non-sensical displays. For example:

  • In either mode, make a curve - it will be called "unnamed"
  • Click the Save/Manage Curves button
  • Click the Rename button
  • Give the curve a name, click OK then OK again
  • In the Equalization window, beside "Select Curve:", the dropdown menu remains "unnamed"

The above is perhaps moot since I am proposing that we do away with the Save/Manage Curves system and present a consistent interface across all effects.

The problem with EQ presets

The file EQCurves.xml stores the named presets along with the frequency/level pairs necessary to define the curve. This is the file that is referenced by the legacy Save/Manage Curves button and dialog.

The file pluginsettings.cfg is the one used by the new Manage button presets system. In the case of the Equalization effect, the information stored in this file refers to named curves created in the EQCurves.xml file. It is therefore possible to:

  • create a named preset using the Save/Manage Curves system
  • create a named preset using the Manage button (that references the named curve displayed in the Select Curve dropdown)
  • delete the named preset using the Save/Manage Curves system
  • attempt to load the preset using the Manage button
It is also very simple to create a preset using the Manage button that references the "unnamed" curve. Changing the unnamed curve (which apparently happens a lot in the background) will result in a completely different curve being loaded using the Manage button.

The proposal for EQ presets

  • Done.png Use the Manage button; do away with the legacy Save/Manage Curves button and dialog.
  • Done.png Do away with the "Select Curve" dropdown.
    • Done.png Use the Manage button load saved curves.
    • ToDo.png Import and Export of saved curves.

It seems that EQCurves.xml may still be needed to save the extensive information needed to specify a curve (at least for the FFT '"Draw"' filter). In that case the contents of EQCurves.xml should be managed by the preset saving and loading functions of the Manage button.

In the current 2-in-1 effect, the name of the selected curve is displayed in the GUI (though this is broken for the "Graphic" view). This is a useful feature that should be retained. Ideally this will be rolled out to other effects (made part of the base class), so that when a preset is selected, its name is displayed in the GUI (possibly in the Title Bar).

The "Import", "Export" and "Get More" buttons in the "Save / Manage Curves" dialog

The Get More button links to the wiki where the user can download other EQ curves. It seems particularly aimed at those transcribing old 78 rpm records.

The Export button facilitates creating xml EQ files to share, and the Import button allows the user in make use of shared xml EQ files. The Manage menu contains Import and Export menu items that should be able to duplicate the import and export functions of the legacy system.

So the question is, do we want to preserve the ability to get to the wiki page directly from within Audacity, and if so, how?