Submit your EQ Curves

I got the curves from

So it does. I was using an earlier nightly build that didn’t have the Curve Manager, and I just copied and pasted from the EQCurves.xml file.

I agree they are long, but I struggled to get all the information into a shorter name. If I was being picky, I could say that the longest name fits in the default Equaliser window, and there are scroll bars in the Curve Manager window, but I take your point. Feel free to re-name them.

They’re not the inverse of either curve. They are the sum of the relevant 78rpm EQ curve and the inverse RIAA curve. I’m combining the two steps of applying the inverse RIAA and the 78 EQ into one. I agree that strictly they’re not necesary, but I’m just making life easy for myself.


I don’t know if it’s supported by the Equalizer/Curve Manager, but in XML you can have “comments”.

<!-- This is a comment and should be ignored by the program -->

	this is
	a comment
	over multiple

I’m having a few problems with the Curve Manager at the moment, but if you have it working correctly on your machine, perhaps you could test if comments are correctly ignored. If they are, then a short name could be used, with a longer description before, or after the name as a comment.

That explains it :wink:

I think you had <point f=" 600.0" d="+3.0/> which gives an error on import because the last " is missing.

See the first message in this thread.


There is some additional information about 78 rpm playback curves on the Wiki that was started before the idea of importable/exportable presets took off. Depending on whatever is useful there perhaps a few extra curves could be produced and the remainder of that page linked to on Missing features - Audacity Support ?

Thanks, I tweaked one of my posts in this thread about that - importing curves without and was working fine for me, but that was because there was only one curve in the file. Import will fail if the file has > 1 curve.

Comments are ignored OK here on Windows XP.


i must have done that when i edited it

i need to double check the little stuff better

Thanks, Gale. I hadn’t realised that was there, and it’s given me an idea which could make all the curves on the page accessible.

I’ve put together an Excel spreadsheet (with apologies to Mac and Linux users!) which allows users to enter the Turnover Frequency and 10kHz Rolloff value (from the wiki page or whatever source they are using) for the curve they require. The spreadsheet then calculates the dB values for the frequencies corresponding to the sliders in Equaliser, normalised to 0dB at 1kHz.

I have included a LF shelving filter, which is not part of the EQ curve data, to flatten the response below about 50Hz. Otherwise the very low frequencies will be over-emphasised. I am guessing this should be set around 20Hz to 50Hz, but does anyone know for sure?

Next question; how easily could it be implemented in Equaliser?

Any comments or criticisms are welcome.

EQ Curve (9.85 KB)

Thanks for that idea. One thing I did notice (it may be lack of understanding) is that in many cases the 10 KHz gain in the result isn’t exactly what’s entered as Rolloff, and the Turnover frequency in the result doesn’t always have a gain of exactly 3 dB. Sometimes the LF shelving frequency changes the gain of the turnover frequency and sometimes it doesn’t.

I found a few instances of “Rollof” in there :slight_smile:

It would be great fun to generate curves by inputting data values in a dialogue for sure…


BTW - I am assuming that I won’t need to follow the normal workflow for this particular thread. I don’t think it requires transferring to the Wiki Feature Requests. But once it becomes “quiet” for the statutory month I will transfer it to the Audio Processing section of the forum.


Unless a consensus emerges about some new feature for the curve manager - such as an ability to generate a curve from entered data as posited above - I think that’s right.


I think that’s because the curve is calculated in three sections and the three parts summed. If the turnover frequency is lower, it will interact with the shelving frequency and if it is higher it affects the 10kHz rolloff (or Rollof - shades of the Muppets?). I think there may be a case for a bit of iteration in the programming there. I’ll have a look and see how I can fix it.


Here’s Version 2 of the EQ Curve generator, which now (with one exception) gives the correct gain values at the Turnover frequency and at 10kHz, at least for all the curves I tested. The exception is a curve which has a turnover frequency of 1kHz and a 10kHz rolloff of -24dB but, even at that, it is only 0.3dB out.

My next step is to do a crash course in Nyquist (i.e. read the manual and copy the important bits from Steve’s programs!), and see if I can implement it as a plug-in.

EQ Curve Generator (14.2 KB)

Maybe this should really go in the Nyquist section of the forum, but I thought it better to keep the thread together.
Anyway, here it is; the plug-in version of the EQ curve generator, with thanks to stevethefiddle, many of whose plug-ins were cannibalised in its creation.

Like the previous spreadsheet version, it calculates 78rpm EQ curves from the Bass Turnover and 10kHz Rolloff parameters, optionally normalised to 0dB at 1kHz.

The difference is that it writes the curve data to an xml file which can be imported into the Equaliser effect in version 1.3.13.

It appears as “78rpm EQ Curve” in the Generate menu, and includes a help file to explain the background and method of operation.

Again, comments and criticism are welcome.

PO’L (3.01 KB)

A good idea to keep it here, but how about another post in the Nyquist section, perhaps with a bit more explanation about the code and how it works?

Done, here.


Hi Irish

Martyn has commented on Bugzilla:

The idea of “78EQCurveGen.ny” sounds excellent but the implementation may not
be. The spreadsheet at
(from > ) is
almost certainly flawed (it doesn’t match my spreadsheet or any other curves
I’ve seen on the web.
Internet, TV en Bellen | > looks like
a good source for reference, or the usual wikipedia.

I think we will still want one (or a few) “generic” electrical 78 rpm curves for the default curves included in Audacity. This is currently the default curve that “78EQCurveGen.ny” produces (normalization to 1000 Hz= “on”):

<curve name="Generic electrical 78">
<point f="20.0" d="19.711498"/>
<point f="25.0" d="19.390201"/>
<point f="31.5" d="18.912903"/>
<point f="40.0" d="18.224799"/>
<point f="50.0" d="17.375757"/>
<point f="63.0" d="16.277917"/>
<point f="80.0" d="14.926615"/>
<point f="100.0" d="13.501542"/>
<point f="125.0" d="11.964888"/>
<point f="160.0" d="10.193469"/>
<point f="200.0" d="8.580567"/>
<point f="250.0" d="7.005806"/>
<point f="315.0" d="5.463814"/>
<point f="400.0" d="4.012324"/>
<point f="500.0" d="2.817063"/>
<point f="630.0" d="1.748690"/>
<point f="800.0" d="0.798759"/>
<point f="1000.0" d="0.000000"/>
<point f="1250.0" d="-0.781918"/>
<point f="1600.0" d="-1.713087"/>
<point f="2000.0" d="-2.680988"/>
<point f="2500.0" d="-3.809318"/>
<point f="3150.0" d="-5.159826"/>
<point f="4000.0" d="-6.736534"/>
<point f="5000.0" d="-8.347118"/>
<point f="6300.0" d="-10.122190"/>
<point f="8000.0" d="-12.039001"/>
<point f="10000.0" d="-13.881058"/>
<point f="12500.0" d="-15.756427"/>
<point f="16000.0" d="-17.856488"/>
<point f="20000.0" d="-19.769572"/>

In fact it may be that 78 rpm curves could be shoehorned into three broad groups.

  1. like your default generator curve, Victor (1938-47), MGM, Columbia US (1938) in the “78’s” section here

  2. flat in middle frequencies - “EMI 78” and “Decca FFRR 78” in the curves issued with 1.3.12, plus Capitol, early Decca, Columbia (US 1925 onward), FFRR in the same graphs)

  3. flat in lower frequencies - Columbia (English), Brunswick, Parlophone in the same graphs)

Would this be reasonable, instead of the larger number of 78 rpm curves we have now? Maybe it would be better to describe the curve characteristics than try and give manufacturer’s names/dates to these curves, given how much variance there was?

Other points:

  • We can’t prevent 78EQCurveGen.ny creating an empty track, I take it, after writing the curve?

  • Until 78EQCurveGen can append to the xml file, I think it would be more useful if the file name it wrote to was the same as the EQ Curve Name. Then you can write multiple curves at (more or less) the same time instead of one-at-a-time




I have tried this ny plugin and like it very much as a concept. However there are a couple of problems and suggestions that I’d like to make:

1 I don’t believe that you need the ‘second stage’ (lines 106 - 119) to re-adjust the gains. looks like a good source for reference here, or other texts on filter design. Your gains don’t quite match what I get from my calculations following that ref. This type of filters tends to be specified by ‘break frequencies’ (or, equivalently, time constants) and the effect of one break on the others is ignored.

2 Your gain a 1kHz is not 0dB, even if requested to be so. If I put your numbers (without lines 106-119) back into my spreadsheet, and correct for the offset @ 1kHz, they agree to within 0.04dB, which I reckon would be enough!

3 It would be good to add a point at f=25000 and one at f=48000 so that we don’t get a shelf at high frequencies when we have a sampling rate of, say, 96kHz. (We need to sort this out for other curves as well.)

4 It would be good to be able to choose the output file name as well as it’s location, and browse for a location. I don’t know if that is possible as I have never dabbled in nyquist.

5 Line wraps don’t look correct in the ‘help’ page, here at least.

I think that if items 1 - 3 were addressed then (technically) this would be well good enough to put on our page (which needs a little work before release), along with a link to (which again needs a little polish).

I think that QA may have something to say about items 4 & 5, possibly the UI as well.

Thanks for your efforts here Paraic!


Apologies, I just saw Gale’s post after I had written mine, with the correct gain @ 1kHz, rechecked, and 78EQCurveGen.ny is OK (with those lines removed).

I think my point (4) is the same as Gale’s last point.

I don’t think that we should really have too many 78 curves in the EQ defaults, since it would ‘probably’ be better implementing such curves as an IIR filter (the EQ uses FIR) and getting a more accurate phase response. I ‘think’ there are already some like this (like highpass.ny), but that’s a whole different story…


Up your ‘Filter length’ and see what happens.


The idea here is that you post them on Missing features - Audacity Support. Feel free to add a new section like Missing features - Audacity Support.


Gale, Martyn,

Thanks for the feedback.

Martyn, I think from the line numbers you quoted that you got an earlier version of the plug-in. There is a later version here, which has an improved UI and help, but the same basic code. It also has a combined “78EQ plus RIAA cancellation” feature which I threw in on a whim. I’m not sure whether or not it is useful, especially as many people will be recording 78s at 45rpm, and it would result in incorrect equalisation in that case.

Do I understand correctly that, while the bass boost and treble cut curves have the characteristics defined by the Bass Turnover and 10kHz Rolloff parameters, they are simply combined to form one curve which, (due to the interactions between the two component curves) may not necessarily have the exact characteristics defined by the two parameters?
That being the case, it should be mentioned in the Help text.

Will do.

At the moment the default value for the file path is C:/, because there is no other path that is common to all platforms, and we are depending on the user to enter a path.
I could either add a control to request a file name, change the “file path” control to also request a file name or, as Gale suggested, make the file name the same as the curve name. However, AFAIK opening a window to browse for a file location is beyond the capability of Nyquist.
When the file path is chosen, do we need an error-checking routine to make sure the file location exists and is writeable? At the moment, if the path can’t be written to, the plug-in exits with the error “Nyquist returned the value 50.000000”

I don’t know enough about Nyquist to say for certain, but I’m guessing not. I assume this is because it is written as a “Generate” plug-in. If it were an “Analyze” plug-in, i think it wouldn’t create the track, but “Analyze” seemed to me to be the wrong menu to put it in.

I’ll work on the changes and upload a new version shortly.