I prepared few GUIs for your excellent EqAPO utility. A 31-band (stereo) Graphics Equalizer and 31-band 2-channel Graphics Equalizer are already out (both v.0.20) and a 10 band parametric EQ (v.0.10) is about ready (still need to learn how to implement the curve display using VS2010C++ Form tools ...).
EQ31 / EQ31-2 GUIs looks about this ATM (done using VS2010 C++/Forms tools):
Not sure if ever gonna bring this onto SF but if yes then maybe redo the GUI using JUCE library.
NOTES:
ATM, these EQ software does not use directly EqAPO functions but just writes the config.txt file for EqAPO software. As I'm not that good in english to fully understand the GNU General Public License version 2.0 (GPLv2) document text I ask if releasing these free software (w/o licensing) breaks the GNU General Public License version 2.0 (GPLv2) rules.
Juha
Last edit: Juha 2013-10-10
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
your application looks quite nice, but for me the more interesting part is how you implement the graphic equalizer using E-APO's filters. Do you use regularly spaced peaking (PEQ) filters?
About your licensing question (this is not legal advice):
As you do not use E-APO's code but you just write the configuration file, how you license your software is not affected by the GPL, as far as I know. If you started using E-APO's code or link to it as a library and you distribute your software, you would be required to make your source code available. I see no need for you to use E-APO's code however, if you want to use it as a system-wide equalizer, because then E-APO is run inside a service and your application just provides the configuration for it. If the performance is acceptable, I suggest that you just continue writing the configuration file.
Last edit: Jonas Dahlinger 2013-10-10
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
In this implementaion, both, EQ31/EQ31-2 does not use EqAPO code nor linked modules... just writing the config.txt. Today I looked closer the EqAPO sourcecode and it looks like it could be possible with not much coding to use EqAPO methods for sending the EQ data w/o need to use the config.txt (but that would mean need for taking the EqAPO source into my source...). Performance is otherwise enough good but fast chances produces some audible issues.
These graphics EQ's uses the PK filter type with constant Q = 4.318 (So far is the value of Q (1/3 oct) a quess because of I have not checked if the result is OK :) ). Parameter EQ uses PEQ type. Implementation itself is just transfering the slider values (gain and constant frequencies) + constant Q's + master gain (preamp) into config.txt (which comes read by EqAPO automatically because of "chancenotice").
Juha
Exqmple config.txt:
EQ31-2
Pre-config.txt
Ch1
Channel: 1
Preamp: 0 dB
Filter 1: OFF PK Fc 20 Hz Gain 7,6 dB Q 4,318
Filter 2: OFF PK Fc 25 Hz Gain 2,6 dB Q 4,318
Filter 3: OFF PK Fc 31,5 Hz Gain 0,0 dB Q 4,318
Filter 4: OFF PK Fc 40 Hz Gain 0,0 dB Q 4,318
Filter 5: OFF PK Fc 50 Hz Gain 0,7 dB Q 4,318
Filter 6: OFF PK Fc 63 Hz Gain 1,6 dB Q 4,318
Filter 7: OFF PK Fc 80 Hz Gain 2,4 dB Q 4,318
Filter 8: OFF PK Fc 100 Hz Gain 2,6 dB Q 4,318
Filter 9: OFF PK Fc 125 Hz Gain 1,2 dB Q 4,318
Filter 10: OFF PK Fc 160 Hz Gain 0,0 dB Q 4,318
Filter 11: OFF PK Fc 200 Hz Gain 0,0 dB Q 4,318
Filter 12: OFF PK Fc 250 Hz Gain 0,0 dB Q 4,318
Filter 13: OFF PK Fc 315 Hz Gain 0,0 dB Q 4,318
Filter 14: OFF PK Fc 400 Hz Gain 1,4 dB Q 4,318
Filter 15: OFF PK Fc 500 Hz Gain 2,8 dB Q 4,318
Filter 16: OFF PK Fc 630 Hz Gain 3,7 dB Q 4,318
Filter 17: OFF PK Fc 800 Hz Gain 1,7 dB Q 4,318
Filter 18: OFF PK Fc 1000 Hz Gain 0,6 dB Q 4,318
Filter 19: OFF PK Fc 1250 Hz Gain 1,8 dB Q 4,318
Filter 20: OFF PK Fc 1600 Hz Gain 1,8 dB Q 4,318
Filter 21: OFF PK Fc 2000 Hz Gain 1,0 dB Q 4,318
Filter 22: OFF PK Fc 2500 Hz Gain 0,0 dB Q 4,318
Filter 23: OFF PK Fc 3150 Hz Gain 0,0 dB Q 4,318
Filter 24: OFF PK Fc 4000 Hz Gain 0,0 dB Q 4,318
Filter 25: OFF PK Fc 5000 Hz Gain 0,0 dB Q 4,318
Filter 26: OFF PK Fc 6300 Hz Gain 1,7 dB Q 4,318
Filter 27: OFF PK Fc 8000 Hz Gain 3,4 dB Q 4,318
Filter 28: OFF PK Fc 10000 Hz Gain 1,9 dB Q 4,318
Filter 29: OFF PK Fc 12500 Hz Gain 3,4 dB Q 4,318
Filter 30: OFF PK Fc 16000 Hz Gain 4,3 dB Q 4,318
Filter 31: OFF PK Fc 20000 Hz Gain 11,5 dB Q 4,318
Ch2
Channel: 2
Preamp: 0 dB
Filter 32: OFF PK Fc 20 Hz Gain 7,6 dB Q 4,318
Filter 33: OFF PK Fc 25 Hz Gain 2,6 dB Q 4,318
Filter 34: OFF PK Fc 31,5 Hz Gain 0,0 dB Q 4,318
Filter 35: OFF PK Fc 40 Hz Gain 0,0 dB Q 4,318
Filter 36: OFF PK Fc 50 Hz Gain 0,7 dB Q 4,318
Filter 37: OFF PK Fc 63 Hz Gain 1,6 dB Q 4,318
Filter 38: OFF PK Fc 80 Hz Gain 2,4 dB Q 4,318
Filter 39: OFF PK Fc 100 Hz Gain 2,6 dB Q 4,318
Filter 40: OFF PK Fc 125 Hz Gain 1,2 dB Q 4,318
Filter 41: OFF PK Fc 160 Hz Gain 0,0 dB Q 4,318
Filter 42: OFF PK Fc 200 Hz Gain 0,0 dB Q 4,318
Filter 43: OFF PK Fc 250 Hz Gain 0,0 dB Q 4,318
Filter 44: OFF PK Fc 315 Hz Gain -0,5 dB Q 4,318
Filter 45: OFF PK Fc 400 Hz Gain -2,3 dB Q 4,318
Filter 46: OFF PK Fc 500 Hz Gain -1,0 dB Q 4,318
Filter 47: OFF PK Fc 630 Hz Gain 0,3 dB Q 4,318
Filter 48: OFF PK Fc 800 Hz Gain 0,8 dB Q 4,318
Filter 49: OFF PK Fc 1000 Hz Gain 0,6 dB Q 4,318
Filter 50: OFF PK Fc 1250 Hz Gain 1,8 dB Q 4,318
Filter 51: OFF PK Fc 1600 Hz Gain 1,8 dB Q 4,318
Filter 52: OFF PK Fc 2000 Hz Gain 1,0 dB Q 4,318
Filter 53: OFF PK Fc 2500 Hz Gain 0,0 dB Q 4,318
Filter 54: OFF PK Fc 3150 Hz Gain 0,0 dB Q 4,318
Filter 55: OFF PK Fc 4000 Hz Gain 0,0 dB Q 4,318
Filter 56: OFF PK Fc 5000 Hz Gain 0,0 dB Q 4,318
Filter 57: OFF PK Fc 6300 Hz Gain 1,7 dB Q 4,318
Filter 58: OFF PK Fc 8000 Hz Gain 3,4 dB Q 4,318
Filter 59: OFF PK Fc 10000 Hz Gain 1,9 dB Q 4,318
Filter 60: OFF PK Fc 12500 Hz Gain 3,4 dB Q 4,318
Filter 61: OFF PK Fc 16000 Hz Gain 4,3 dB Q 4,318
Filter 62: OFF PK Fc 20000 Hz Gain 11,5 dB Q 4,318
Post-config.txt
Last edit: Juha 2013-10-10
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I just tried your program. It's working nicely but unfortunately, the resulting frequency response is not what is expected. It has the defined gain at the points where the PK filters have their center frequency, but in between there is no "interpolation" between the gains of the adjacent filters, instead you see ripples. This seems to be a common problem in graphic equalizers implemented as IIR filters (which is what E-APO uses) as I read in this discussion, so I can't blame you for that. I don't know how you could fix the problem, it seems to be inherent.
Last edit: Jonas Dahlinger 2013-10-29
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm aware that there are issues in FR but, I don't know how much as I have not found software for to analyze the output accurately --> trying to find a way to optimizatie is hard to do. Do you have any analyzing method/software suggestions (maybe Benchmark + ???)?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm just using Audacity to look at the output of Benchmark.exe . The sine sweep that is produced by Benchmark.exe is made exactly for that: It's a linear sweep, so the time is proportional to the frequency. For example, 1000 Hz is at 10 seconds while 16000 Hz is at 160 seconds. Of course, it's hard to use for the lower frequencies, but you can set the frequency range and length via command line options.
Another possibility I used is the measurement function of Room EQ Wizard with a loopback cable from your sound card's output to its input. After you have configured Equalizer APO, you can just make a measurement in REW and you will see how the frequency response is altered. I actually used this to make sure that my implementation of the filter types is equal to REW's filters.
There's also a tool to convert filter files back to a format that can be imported into REW. I didn't try it however.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi!
I prepared few GUIs for your excellent EqAPO utility. A 31-band (stereo) Graphics Equalizer and 31-band 2-channel Graphics Equalizer are already out (both v.0.20) and a 10 band parametric EQ (v.0.10) is about ready (still need to learn how to implement the curve display using VS2010C++ Form tools ...).
EQ31 / EQ31-2 GUIs looks about this ATM (done using VS2010 C++/Forms tools):
Not sure if ever gonna bring this onto SF but if yes then maybe redo the GUI using JUCE library.
NOTES:
ATM, these EQ software does not use directly EqAPO functions but just writes the config.txt file for EqAPO software. As I'm not that good in english to fully understand the GNU General Public License version 2.0 (GPLv2) document text I ask if releasing these free software (w/o licensing) breaks the GNU General Public License version 2.0 (GPLv2) rules.
Juha
Last edit: Juha 2013-10-10
Hello,
your application looks quite nice, but for me the more interesting part is how you implement the graphic equalizer using E-APO's filters. Do you use regularly spaced peaking (PEQ) filters?
About your licensing question (this is not legal advice):
As you do not use E-APO's code but you just write the configuration file, how you license your software is not affected by the GPL, as far as I know. If you started using E-APO's code or link to it as a library and you distribute your software, you would be required to make your source code available. I see no need for you to use E-APO's code however, if you want to use it as a system-wide equalizer, because then E-APO is run inside a service and your application just provides the configuration for it. If the performance is acceptable, I suggest that you just continue writing the configuration file.
Last edit: Jonas Dahlinger 2013-10-10
Hi!
In this implementaion, both, EQ31/EQ31-2 does not use EqAPO code nor linked modules... just writing the config.txt. Today I looked closer the EqAPO sourcecode and it looks like it could be possible with not much coding to use EqAPO methods for sending the EQ data w/o need to use the config.txt (but that would mean need for taking the EqAPO source into my source...). Performance is otherwise enough good but fast chances produces some audible issues.
These graphics EQ's uses the PK filter type with constant Q = 4.318 (So far is the value of Q (1/3 oct) a quess because of I have not checked if the result is OK :) ). Parameter EQ uses PEQ type. Implementation itself is just transfering the slider values (gain and constant frequencies) + constant Q's + master gain (preamp) into config.txt (which comes read by EqAPO automatically because of "chancenotice").
Juha
Exqmple config.txt:
EQ31-2
Pre-config.txt
Ch1
Channel: 1
Preamp: 0 dB
Filter 1: OFF PK Fc 20 Hz Gain 7,6 dB Q 4,318
Filter 2: OFF PK Fc 25 Hz Gain 2,6 dB Q 4,318
Filter 3: OFF PK Fc 31,5 Hz Gain 0,0 dB Q 4,318
Filter 4: OFF PK Fc 40 Hz Gain 0,0 dB Q 4,318
Filter 5: OFF PK Fc 50 Hz Gain 0,7 dB Q 4,318
Filter 6: OFF PK Fc 63 Hz Gain 1,6 dB Q 4,318
Filter 7: OFF PK Fc 80 Hz Gain 2,4 dB Q 4,318
Filter 8: OFF PK Fc 100 Hz Gain 2,6 dB Q 4,318
Filter 9: OFF PK Fc 125 Hz Gain 1,2 dB Q 4,318
Filter 10: OFF PK Fc 160 Hz Gain 0,0 dB Q 4,318
Filter 11: OFF PK Fc 200 Hz Gain 0,0 dB Q 4,318
Filter 12: OFF PK Fc 250 Hz Gain 0,0 dB Q 4,318
Filter 13: OFF PK Fc 315 Hz Gain 0,0 dB Q 4,318
Filter 14: OFF PK Fc 400 Hz Gain 1,4 dB Q 4,318
Filter 15: OFF PK Fc 500 Hz Gain 2,8 dB Q 4,318
Filter 16: OFF PK Fc 630 Hz Gain 3,7 dB Q 4,318
Filter 17: OFF PK Fc 800 Hz Gain 1,7 dB Q 4,318
Filter 18: OFF PK Fc 1000 Hz Gain 0,6 dB Q 4,318
Filter 19: OFF PK Fc 1250 Hz Gain 1,8 dB Q 4,318
Filter 20: OFF PK Fc 1600 Hz Gain 1,8 dB Q 4,318
Filter 21: OFF PK Fc 2000 Hz Gain 1,0 dB Q 4,318
Filter 22: OFF PK Fc 2500 Hz Gain 0,0 dB Q 4,318
Filter 23: OFF PK Fc 3150 Hz Gain 0,0 dB Q 4,318
Filter 24: OFF PK Fc 4000 Hz Gain 0,0 dB Q 4,318
Filter 25: OFF PK Fc 5000 Hz Gain 0,0 dB Q 4,318
Filter 26: OFF PK Fc 6300 Hz Gain 1,7 dB Q 4,318
Filter 27: OFF PK Fc 8000 Hz Gain 3,4 dB Q 4,318
Filter 28: OFF PK Fc 10000 Hz Gain 1,9 dB Q 4,318
Filter 29: OFF PK Fc 12500 Hz Gain 3,4 dB Q 4,318
Filter 30: OFF PK Fc 16000 Hz Gain 4,3 dB Q 4,318
Filter 31: OFF PK Fc 20000 Hz Gain 11,5 dB Q 4,318
Ch2
Channel: 2
Preamp: 0 dB
Filter 32: OFF PK Fc 20 Hz Gain 7,6 dB Q 4,318
Filter 33: OFF PK Fc 25 Hz Gain 2,6 dB Q 4,318
Filter 34: OFF PK Fc 31,5 Hz Gain 0,0 dB Q 4,318
Filter 35: OFF PK Fc 40 Hz Gain 0,0 dB Q 4,318
Filter 36: OFF PK Fc 50 Hz Gain 0,7 dB Q 4,318
Filter 37: OFF PK Fc 63 Hz Gain 1,6 dB Q 4,318
Filter 38: OFF PK Fc 80 Hz Gain 2,4 dB Q 4,318
Filter 39: OFF PK Fc 100 Hz Gain 2,6 dB Q 4,318
Filter 40: OFF PK Fc 125 Hz Gain 1,2 dB Q 4,318
Filter 41: OFF PK Fc 160 Hz Gain 0,0 dB Q 4,318
Filter 42: OFF PK Fc 200 Hz Gain 0,0 dB Q 4,318
Filter 43: OFF PK Fc 250 Hz Gain 0,0 dB Q 4,318
Filter 44: OFF PK Fc 315 Hz Gain -0,5 dB Q 4,318
Filter 45: OFF PK Fc 400 Hz Gain -2,3 dB Q 4,318
Filter 46: OFF PK Fc 500 Hz Gain -1,0 dB Q 4,318
Filter 47: OFF PK Fc 630 Hz Gain 0,3 dB Q 4,318
Filter 48: OFF PK Fc 800 Hz Gain 0,8 dB Q 4,318
Filter 49: OFF PK Fc 1000 Hz Gain 0,6 dB Q 4,318
Filter 50: OFF PK Fc 1250 Hz Gain 1,8 dB Q 4,318
Filter 51: OFF PK Fc 1600 Hz Gain 1,8 dB Q 4,318
Filter 52: OFF PK Fc 2000 Hz Gain 1,0 dB Q 4,318
Filter 53: OFF PK Fc 2500 Hz Gain 0,0 dB Q 4,318
Filter 54: OFF PK Fc 3150 Hz Gain 0,0 dB Q 4,318
Filter 55: OFF PK Fc 4000 Hz Gain 0,0 dB Q 4,318
Filter 56: OFF PK Fc 5000 Hz Gain 0,0 dB Q 4,318
Filter 57: OFF PK Fc 6300 Hz Gain 1,7 dB Q 4,318
Filter 58: OFF PK Fc 8000 Hz Gain 3,4 dB Q 4,318
Filter 59: OFF PK Fc 10000 Hz Gain 1,9 dB Q 4,318
Filter 60: OFF PK Fc 12500 Hz Gain 3,4 dB Q 4,318
Filter 61: OFF PK Fc 16000 Hz Gain 4,3 dB Q 4,318
Filter 62: OFF PK Fc 20000 Hz Gain 11,5 dB Q 4,318
Post-config.txt
Last edit: Juha 2013-10-10
Project can now be downloaded from my pages at http://jiiteepee.tripod.com/home.html
Few users have confirmed that the EQ31GUI-2 works on Vista, 7 and 8 (32-bit/64-bit).
Juha
Last edit: Juha 2013-10-21
I just tried your program. It's working nicely but unfortunately, the resulting frequency response is not what is expected. It has the defined gain at the points where the PK filters have their center frequency, but in between there is no "interpolation" between the gains of the adjacent filters, instead you see ripples. This seems to be a common problem in graphic equalizers implemented as IIR filters (which is what E-APO uses) as I read in this discussion, so I can't blame you for that. I don't know how you could fix the problem, it seems to be inherent.
Last edit: Jonas Dahlinger 2013-10-29
I'm aware that there are issues in FR but, I don't know how much as I have not found software for to analyze the output accurately --> trying to find a way to optimizatie is hard to do. Do you have any analyzing method/software suggestions (maybe Benchmark + ???)?
I'm just using Audacity to look at the output of Benchmark.exe . The sine sweep that is produced by Benchmark.exe is made exactly for that: It's a linear sweep, so the time is proportional to the frequency. For example, 1000 Hz is at 10 seconds while 16000 Hz is at 160 seconds. Of course, it's hard to use for the lower frequencies, but you can set the frequency range and length via command line options.
Another possibility I used is the measurement function of Room EQ Wizard with a loopback cable from your sound card's output to its input. After you have configured Equalizer APO, you can just make a measurement in REW and you will see how the frequency response is altered. I actually used this to make sure that my implementation of the filter types is equal to REW's filters.
There's also a tool to convert filter files back to a format that can be imported into REW. I didn't try it however.
Updated version for Windows 7/8/10. Moved the project to VS2013.3/4. Native 64-bit version available (excl. Vista).
v. 0.70 coming out soon ...
( full size image - http://oi57.tinypic.com/2hqa1bd.jpg )