A feature for Graphic EQ and Filter Curve

Would it be possible to import/export (the quickest possible, the better) settings between these two plug-ins in a future update? I understand why the old EQ plugin was split in two, but I really went back and forth between the two, and it becomes tedious making the same settings over and over again when using trial and error to find the perfect EQ. Please consider this in a future update, or modified versions of the current .ny files.
Also is there any way to monitor eq, or listen to your settings during playback? This would save so much time

It is already “possible”, but there’s no automatic way of doing it. You have to do it manually, and there’s a reason for that.

Take, for example, the “Low roll-off for speech” curve in the Filter Curve EQ effect. The very low frequencies are attenuated all the way down to -120 dB. That is not possible with the Graphic EQ as each band only goes down to -20 dB.

As another example, going from Graphic to Filter Curve.


The above setting in the Graphic EQ is easy to edit in the Graphic EQ effect - you just twiddle the sliders, but the actual filter parameters are these:

GraphicEq:f0="20"
f1="20.798237"
f10="29.579803"
f100="1001.5735"
f101="1041.5482"
f102="1083.1183"
f103="1126.3476"
f104="1171.3022"
f105="1218.051"
f106="1266.6657"
f107="1317.2207"
f108="1369.7934"
f109="1424.4644"
f11="30.760388"
f110="1481.3174"
f111="1540.4395"
f112="1601.9213"
f113="1665.857"
f114="1732.3444"
f115="1801.4855"
f116="1873.3861"
f117="1948.1564"
f118="2025.911"
f119="2106.7688"
f12="31.988092"
f120="2190.8539"
f121="2278.2949"
f122="2369.2259"
f123="2463.7861"
f124="2562.1204"
f125="2664.3793"
f126="2770.7196"
f127="2881.3042"
f128="2996.3024"
f129="3115.8904"
f13="33.264796"
f130="3240.2513"
f131="3369.5758"
f132="3504.0618"
f133="3643.9154"
f134="3789.3508"
f135="3940.5908"
f136="4097.8671"
f137="4261.4206"
f138="4431.5018"
f139="4608.3712"
f14="34.592456"
f140="4792.2998"
f141="4983.5694"
f142="5182.4729"
f143="5389.315"
f144="5604.4126"
f145="5828.095"
f146="6060.7051"
f147="6302.5991"
f148="6554.1475"
f149="6815.7357"
f15="35.973105"
f150="7087.7643"
f151="7370.6501"
f152="7664.8264"
f153="7970.7439"
f154="8288.871"
f155="8619.6952"
f156="8963.7232"
f157="9321.482"
f158="9693.5197"
f159="10080.406"
f16="37.408858"
f160="10482.734"
f161="10901.119"
f162="11336.203"
f163="11788.652"
f164="12259.159"
f165="12748.444"
f166="13257.258"
f167="13786.38"
f168="14336.62"
f169="14908.821"
f17="38.901915"
f170="15503.86"
f171="16122.648"
f172="16766.133"
f173="17435.3"
f174="18131.175"
f175="18854.824"
f176="19607.355"
f177="20389.921"
f178="21203.72"
f179="22050"
f18="40.454562"
f19="42.069179"
f2="21.628333"
f20="43.748238"
f21="45.494311"
f22="47.310073"
f23="49.198306"
f24="51.161902"
f25="53.203868"
f26="55.327333"
f27="57.535549"
f28="59.8319"
f29="62.219902"
f3="22.49156"
f30="64.703213"
f31="67.285639"
f32="69.971133"
f33="72.763811"
f34="75.667949"
f35="78.687997"
f36="81.828581"
f37="85.094511"
f38="88.490791"
f39="92.022623"
f4="23.38924"
f40="95.695416"
f41="99.514797"
f42="103.48662"
f43="107.61696"
f44="111.91215"
f45="116.37877"
f46="121.02367"
f47="125.85395"
f48="130.87701"
f49="136.10055"
f5="24.322748"
f50="141.53258"
f51="147.18141"
f52="153.05569"
f53="159.16443"
f54="165.51697"
f55="172.12306"
f56="178.99281"
f57="186.13675"
f58="193.56581"
f59="201.29138"
f6="25.293514"
f60="209.32529"
f61="217.67985"
f62="226.36786"
f63="235.40262"
f64="244.79797"
f65="254.56831"
f66="264.72861"
f67="275.29442"
f68="286.28193"
f69="297.70797"
f7="26.303025"
f70="309.59005"
f71="321.94636"
f72="334.79583"
f73="348.15816"
f74="362.05379"
f75="376.50403"
f76="391.53101"
f77="407.15773"
f78="423.40815"
f79="440.30716"
f8="27.352827"
f80="457.88063"
f81="476.1555"
f82="495.15975"
f83="514.92249"
f84="535.474"
f85="556.84576"
f86="579.07051"
f87="602.18228"
f88="626.21649"
f89="651.20995"
f9="28.444529"
f90="677.20095"
f91="704.2293"
f92="732.33639"
f93="761.56529"
f94="791.96078"
f95="823.5694"
f96="856.43958"
f97="890.62167"
f98="926.16803"
f99="963.13312"
FilterLength="8191"
InterpolateLin="0"
InterpolationMethod="B-spline"
v0="0"
v1="0"
v10="0"
v100="-2.4300349"
v101="-1.0085019"
v102="-0.20216444"
v103="0"
v104="0"
v105="0"
v106="0"
v107="0"
v108="0"
v109="0"
v11="0"
v110="0"
v111="0"
v112="0"
v113="0"
v114="0"
v115="0"
v116="0"
v117="0"
v118="0"
v119="0"
v12="0"
v120="0"
v121="0"
v122="0"
v123="0"
v124="0"
v125="0"
v126="0"
v127="0"
v128="0"
v129="0"
v13="0"
v130="0"
v131="0"
v132="0"
v133="0"
v134="0"
v135="0"
v136="0"
v137="0"
v138="0"
v139="0"
v14="0"
v140="0"
v141="0"
v142="0"
v143="0"
v144="0"
v145="0"
v146="0"
v147="0"
v148="0"
v149="0"
v15="0"
v150="0"
v151="0"
v152="0"
v153="0"
v154="0"
v155="0"
v156="0"
v157="0"
v158="0"
v159="0"
v16="0"
v160="0"
v161="0"
v162="0"
v163="0"
v164="0"
v165="0"
v166="0"
v167="0"
v168="0"
v169="0"
v17="0"
v170="0"
v171="0"
v172="0"
v173="0"
v174="0"
v175="0"
v176="0"
v177="0"
v178="0"
v179="0"
v18="0"
v19="0"
v2="0"
v20="0"
v21="0"
v22="0"
v23="0"
v24="0"
v25="0"
v26="0"
v27="0"
v28="0"
v29="0"
v3="0"
v30="0"
v31="0"
v32="0"
v33="0"
v34="0"
v35="0"
v36="0"
v37="0"
v38="0"
v39="0"
v4="0"
v40="0"
v41="0"
v42="0"
v43="0"
v44="0"
v45="0"
v46="0"
v47="0"
v48="0"
v49="0"
v5="0"
v50="0"
v51="0"
v52="0"
v53="0"
v54="0"
v55="0"
v56="0"
v57="0"
v58="0"
v59="0"
v6="0"
v60="0"
v61="0"
v62="0"
v63="0"
v64="0"
v65="0"
v66="0"
v67="0"
v68="0"
v69="0"
v7="0"
v70="0"
v71="0"
v72="0"
v73="0"
v74="0"
v75="0"
v76="0"
v77="0"
v78="0"
v79="0"
v8="0"
v80="0"
v81="0"
v82="0"
v83="0"
v84="0"
v85="0"
v86="-0.18295398"
v87="-0.9278012"
v88="-2.2461543"
v89="-4.0781992"
v9="0"
v90="-6.4389494"
v91="-9.3364582"
v92="-12.26313"
v93="-14.150449"
v94="-14.964251"
v95="-14.66136"
v96="-13.133302"
v97="-10.374853"
v98="-7.1186872"
v99="-4.4667633"

Which looks like this when imported into the Filter Curve EQ:


Notice that there are a lot of control points, because of which editing the curve in the Filter Curve EQ effect would be a pain.

I’ll start a new post for how to convert GraphicEQ settings into Filter Curve EQ settings (and vice versa), but note that the “incompatibilities” described here are inherent to the effects. Converting from one to another can only produce an approximation (which was also the case with the old “Equalization” effect).

Converting between Graphic EQ and Filter Curve EQ settings:

  1. Export the desired curve from one of the two effects.
  2. Open the exported .txt file in a plain text editor (for Windows I’d recommend NotePad++. For MacOS, perhaps TextEdit, Atom, or Sublime)
  3. Change the first word in the file as described below, and save the file.
  4. Import the modified preset file in the other EQ effect.

In Filter Curve EQ presets, the beginning of the exported file is like this:

FilterCurve:f0="4000" f1="5000" ....

In Graphic EQ presets, the beginning of the exported file is like this:

GraphicEq:f0="20" f1="20.798237"....

To convert from one to the other, simply change FilterCurve: to GraphicEq:, or vice versa.


In short, the answer to your question, the reason that a conversion feature is not provided, is because the two effects are not completely compatible. You may get a usable approximation in some cases, but in other cases the approximation is very different (such as trying to reproduce the “Low roll-off for speech” in the Graphic EQ effect - it’s just not possible to do that filter in the Graphic EQ effect, never has been and never will be.)

Currently these effects only have the “Preview” button, so you have to adjust, preview, adjust a bit more, preview,… etc until you get the required setting.
The preview length (for all effects) can be set in Preferences: Playback Preferences - Audacity Manual

For “Real Time Preview” (where you can adjust while listening), there’s the “Bass and Treble” effect: Bass and Treble - Audacity Manual

I expect that the Equalization effects will be converted to real-time in due course, as I know that the developers are keen to add a lot more “real time” ability to Audacity.

Thank you, and yes I have noticed that with the old one, the exact points I drag to are often changed since it is approximate. I can do this text editing method, but maybe I could find a way to make a conversion tool similar to the way we have the xml to txt tool

Sure.
This Nyquist code will do it (below) and may be run in the Nyquist Prompt effect (Nyquist Prompt - Audacity Manual):

;version 4
;type tool

;control filename "EQ TXT file" file "" "*default*/preset.txt" "Text file|*.txt;*.TXT|All files|*.*;*" "open,exists"


;;; Change "GraphicEq:" to "FilterCurve:" or vice versa
;;; or throw (return NIL)
(defun convert (txt)
  (cond ((< (length txt) 70)
         (throw 'err))
        ((string= (subseq txt 0 10) "GraphicEq:")
          (setf txt (subseq txt 10))
          (format nil "FilterCurve:~a" txt))
        ((string= (subseq txt 0 12) "FilterCurve:")
          (setf txt (subseq txt 12))
          (format nil "GraphicEq:~a" txt))
        (t (throw 'err))))


;;; Write text to file.
;;; Return confirmation message.
(defun write (txt)
  (let ((fp (open filename :direction :output)))
    (format fp "~a" txt)
    (close fp)
    "File converted."))


;; Try reading file
(let ((fp (open filename :direction :input))
      err curve-txt)
  ;; If file opens, read it (one line only), else error.
  (cond (fp (setf curve-txt (read-line fp))
            (close fp))
        (t  (setf err (format nil "Error.\n~a~%cannot be read." filename))))
  (setf curve-txt (catch 'err (convert curve-txt)))
  (cond (err err)
        (curve-txt (write curve-txt))
        (t (format nil "~a~%is not a recognised EQ file." filename))))

To turn it into an installable plug-in you just need to add the other “required headers” (see: https://wiki.audacityteam.org/wiki/Nyquist_Plug-ins_Reference)

Awesome, I got it to work! Thank you!

If you do that, perhaps you could post the plug-in here so that others can download and use it.