Version 0.9

Added: Filter type "IIR", which allows to specify a user-defined IIR filter of arbitrary order with custom coefficients.
Improved: For playback devices, the APO is now installed both as GFX (post-mix) and LFX (pre-mix) APO. Normally the filtering happens in GFX, but the command "Stage" allows to select LFX to apply effects based on the number of input channels.
Added: Expression language. The commands "If", "ElseIf", "Else", "EndIf", "Eval" and inline expressions allow to change the filter behaviour based on runtime conditions.
Added: Command "Copy", which copies audio data between channels.
Added: Command "Delay", which delays the audio on the currently selected channels.
Improved: Configuration files are now locked exclusively for writing while reading them.
Improved: There is now a transition (10 ms) from old to new configuration after loading.
Improved: Substantial internal restructuring to improve extensibility and maintainability. Filtering commands now work exactly in the order they were specified.
Fixed: When the microphone input was in stereo but the application requested a mono stream, the audio was heavily distorted.
Fixed: The sine sweep generated by the Benchmark application had floating-point precision issues leading to severe artifacts when certain filters were applied.
This commit is contained in:
jthedering committed 2014-08-10 18:35:59 +00:00
1 parent 11e52f6210
commit 90ee2b0aa9
89 files changed
+6396 -1375

No files matched your search

@@ -0,0 +1,6 @@
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2
[InternetShortcut]
URL=http://sourceforge.net/p/equalizerapo/wiki/Configuration%20reference
IDList=
HotKey=0
+5
View File
@@ -118,6 +118,7 @@ Section "Install" SecInstall
File "${LIBPATH}\msvcr100.dll"
File "Configuration tutorial (online).url"
File "Configuration reference (online).url"
CreateDirectory "$INSTDIR\config"
@@ -126,6 +127,8 @@ Section "Install" SecInstall
File /oname=config\example.txt "config\example.txt"
File /oname=config\demo.txt "config\demo.txt"
File /oname=config\multichannel.txt "config\multichannel.txt"
File /oname=config\iir_lowpass.txt "config\iir_lowpass.txt"
File /oname=config\selective_delay.txt "config\selective_delay.txt"
SetOverwrite on
;Grant write access to the config directory for all users
@@ -141,6 +144,7 @@ Section "Install" SecInstall
;Create shortcuts
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Configuration tutorial (online).lnk" "$INSTDIR\Configuration tutorial (online).url"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Configuration reference (online).lnk" "$INSTDIR\Configuration reference (online).url"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Configurator.lnk" "$INSTDIR\Configurator.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Benchmark.lnk" "$INSTDIR\Benchmark.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
@@ -184,6 +188,7 @@ Section "-un.Uninstall"
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
RMDir /r "$SMPROGRAMS\$StartMenuFolder"
Delete "$INSTDIR\Configuration reference (online).url"
Delete "$INSTDIR\Configuration tutorial (online).url"
Delete /REBOOTOK "$INSTDIR\msvcr100.dll"
+18
View File
@@ -0,0 +1,18 @@
# This shows how to create a lowpass biquad filter using the IIR filter type
# The result should be equivalent to the command
# Filter: ON LP Fc 3000 Hz
Do: `freq = 3000`
Do: `Q = 1/sqrt(2)`
Do: `omega = 2 * pi * freq / sampleRate`
Do: `sn = sin(omega)`
Do: `cs = cos(omega)`
Do: `alpha = sin(omega) / (2 * Q)`
Do: `a0 = (1 - cs) / 2`
Do: `a1 = 1 - cs`
Do: `a2 = (1 - cs) / 2`
Do: `b0 = 1 + alpha`
Do: `b1 = -2 * cs`
Do: `b2 = 1 - alpha`
Filter: ON IIR Order 2 Coefficients `a0` `a1` `a2` `b0` `b1` `b2`
+11
View File
@@ -0,0 +1,11 @@
# Copy channels to virtual channels to filter them while keeping the originals
Copy: L2=L R2=R
# Select channels for filtering
Channel: L2 R2
# Limit frequency range for delay
Filter: ON HP Fc 200 Hz
Filter: ON LP Fc 2000 Hz
# Apply delay
Delay: 500 ms
# Add the delayed signal back to the original channels
Copy: L=0.5*L+0.5*L2 R=0.5*R+0.5*R2