#pragma once

#include <psemek/audio/stream.hpp>
#include <psemek/util/array.hpp>

namespace psemek::audio
{

	// Turns x[n] into y[n] = b0*x[n] + b1*x[n-1] + ... - a1*y[n-1] - a2*y[n-2] - ...
	// NB: a[0] is implicitly 1 and is omitted
	stream_ptr linear_filter(stream_ptr stream, util::array<float> a, util::array<float> b);

	stream_ptr low_pass_filter(stream_ptr stream);
	stream_ptr high_pass_filter(stream_ptr stream);

}
