IIR Filter: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(Created page with "Category:Block Docs Category:Stub Docs This is the template for the "Page-per-block Docs". This first section should describe what the block...")
 
m (→‎Action Screenshots: superfluous ])
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Block Docs]]
[[Category:Block Docs]]
[[Category:Stub Docs]]
Construct an IIR with the given taps.
This is the template for the [[:Category:Block_Docs|"Page-per-block Docs"]].  This first section should describe what the block does and how to use it, using however many paragraphs necessary.  Note that the title of the wiki page should match the block's name in GRC, i.e. the one defined in the block's .grc file.  Look at the [[FFT]] Block for a good example.
 
As this is a basic template, it's also in the [[:Category:Stub_Docs|"Stub Docs category"]]. Please improve it.


== Parameters ==
== Parameters ==
(''R''): <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls ''Run-time adjustable'']</span>
(''R''): <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls ''Run-time adjustable'']</span>


; Param 1 (''R'')
; Feed-Forward taps (''R'')
: Description of parameter, provide any tips or recommended values.  Note that the name of the parameter above should match the param's label that shows up in grc (e.g. Sample Rate).
:  


; Param 2
; Feedback taps (''R'')
: blah blah blah
:  
 
; Old style of taps : The old style of the IIR filter uses feedback taps that are negative of what most definitions use (scipy and Matlab among them). This parameter keeps using the old GNU Radio style and is set to TRUE by default. When taps generated from scipy, Matlab, or gr_filter_design, use the new style by setting this to FALSE.


== Example Flowgraph ==
== Example Flowgraph ==


Insert description of flowgraph here, then show a screenshot of the flowgraph and the output if there is an interesting GUI.  Currently we have no standard method of uploading the actual flowgraph to the wiki or git repo, unfortunately. The plan is to have an example flowgraph showing how the block might be used, for every block, and the flowgraphs will live in the git repo.
=== 8-Band IIR Biquad Equalizer ===
 
==== Flow Graph File ====
 
Can be found [https://gist.github.com/marcusmueller/dadb6a18cddd3a2df8158f33936a74c2#file-test_iir-grc here], alongside with an example of an [https://gist.github.com/marcusmueller/dadb6a18cddd3a2df8158f33936a74c2/raw/edbf0f1cd3aeaa5ca6e1e453ae348c978e63f562/foxtale1.opus audio file] that can be used (mono, 48 kHz, libsndfile supported coded (Opus), "Fox Tale Waltz Part 1" Kevin MacLeod (incompetech.com) Licensed under [http://creativecommons.org/licenses/by/4.0/ Creative Commons: By Attribution 4.0 License]).
 
==== Description ====
 
In this very complex flowgraph, we use coefficients as calculated in Robert Bristow-Johnson [https://webaudio.github.io/Audio-EQ-Cookbook/Audio-EQ-Cookbook.txt Cookbook formulae for audio EQ biquad filter coefficients] in a "peakingEQ" configuration.
 
We choose 8 logarithmically distributed frequencies, and make the (linear!) gain for each of these frequencies adjustable. (The frequencies are also adjustable.)
 
By disabling the [[Wav File Source]] and enabling the Noise source, you can see the frequency response of these filters; you'll want to disable the [[Audio Sink]], to save your speakers from white noise. Enable the [[Audio Source]] instead to get a passthrough equalizer.
 
==== Flowgraph Picture ====
 
[[File:test_iir.png]]
 
 
==== Action Screenshots ====
 
This is operating on white noise instead of the audio file.
 
===== Default (flat) Setting =====
 
[[File:Eq_flat.png]]
 
 
===== Second Bandpass Amplified =====
 
[[File:Eq_peak.png]]


== Source Files ==
== Source Files ==


; C++ files
; C++ files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/master/gr-filter/lib/iir_filter.cc Main file]
 
; Header files
: [https://github.com/gnuradio/gnuradio TODO]


; Public header files
; Public header files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/master/gr-filter/include/gnuradio/filter/iir_filter.h Main file ]


; Block definition
; Block definition
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/master/gr-filter/grc/filter_iir_filter_xxx.block.yml]

Latest revision as of 18:49, 15 August 2023

Construct an IIR with the given taps.

Parameters

(R): Run-time adjustable

Feed-Forward taps (R)
Feedback taps (R)
Old style of taps
The old style of the IIR filter uses feedback taps that are negative of what most definitions use (scipy and Matlab among them). This parameter keeps using the old GNU Radio style and is set to TRUE by default. When taps generated from scipy, Matlab, or gr_filter_design, use the new style by setting this to FALSE.

Example Flowgraph

8-Band IIR Biquad Equalizer

Flow Graph File

Can be found here, alongside with an example of an audio file that can be used (mono, 48 kHz, libsndfile supported coded (Opus), "Fox Tale Waltz Part 1" Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 4.0 License).

Description

In this very complex flowgraph, we use coefficients as calculated in Robert Bristow-Johnson Cookbook formulae for audio EQ biquad filter coefficients in a "peakingEQ" configuration.

We choose 8 logarithmically distributed frequencies, and make the (linear!) gain for each of these frequencies adjustable. (The frequencies are also adjustable.)

By disabling the Wav File Source and enabling the Noise source, you can see the frequency response of these filters; you'll want to disable the Audio Sink, to save your speakers from white noise. Enable the Audio Source instead to get a passthrough equalizer.

Flowgraph Picture

Test iir.png


Action Screenshots

This is operating on white noise instead of the audio file.

Default (flat) Setting

Eq flat.png


Second Bandpass Amplified

Eq peak.png

Source Files

C++ files
Main file
Public header files
Main file
Block definition
[1]