{{newin|[[11.0]]|110|type=function}}
Sets a low-pass, high-pass, or band-pass filter to apply when playing the Source.

== Function ==
=== Synopsis ===
<source lang="lua">
success = Source:setFilter( settings )
</source>
=== Arguments ===
{{param|table|settings|The filter settings to use for this Source, with the following fields:}}
{{subparam|FilterType|type|The type of filter to use.}}
{{subparam|number|volume|The overall volume of the audio. Must be between 0 and 1.}}
{{subparam|number|highgain|Volume of high-frequency audio. Only applies to low-pass and band-pass filters. Must be between 0 and 1.}}
{{subparam|number|lowgain|Volume of low-frequency audio. Only applies to high-pass and band-pass filters. Must be between 0 and 1.}}

=== Returns ===
{{param|boolean|success|Whether the filter was successfully applied to the Source.}}

== Function ==
Disables filtering on this Source.
=== Synopsis ===
<source lang="lua">
Source:setFilter( )
</source>
=== Arguments ===
None.
=== Returns ===
Nothing.

== Examples ==
=== Playing music at half volume with a low pass filter applied ===
<source lang="lua">
function love.load()
    local source = love.audio.newSource('music.ogg', 'stream')
    source:setFilter {
        type = 'lowpass',
        volume = .5,
        highgain = .4,
    }
    source:play()
end
</source>

== Notes ==
Audio filter functionality is not supported on iOS.

While the cutoff frequency cannot be set directly, changing high/lowgain has the effect of altering the cutoff. See it explained in [https://github.com/kcat/openal-soft/issues/164 this thread].

== See Also ==
* [[parent::Source]]
* [[Source:getFilter]]
* [[Source:setEffect]]
[[Category:Functions]]
{{#set:Description=Sets a low-pass, high-pass, or band-pass filter to apply when playing the Source.}}
== Other Languages ==
{{i18n|Source:setFilter}}