13 return freq > cutoff ? 1 : 0;
18 return freq < cutoff ? 1 : 0;
21 constexpr
auto low_pass(
double freq,
double gain,
double transition )
23 return ( gain * transition ) / ( freq + transition );
26 constexpr
auto high_pass(
double freq,
double gain,
double transition )
28 return low_pass( 1 / freq, gain, transition );
31 constexpr
auto low_shelf(
double freq,
double gain,
double transition )
33 return 1 +
low_pass( freq, gain, transition );
36 constexpr
auto high_shelf(
double freq,
double gain,
double transition )
38 return 1 +
high_pass( freq, gain, transition );
41 template <
class Container,
class TransferFunction >
42 void filter( Container& c, TransferFunction f,
double base_frequency )
47 std::for_each( begin( c ), end( c ),
48 [&](
auto& value ) { value *= f( ( counter++ ) * base_frequency ); } );
51 template <
class Container,
class TransferFunction1,
class TransferFunction2 >
52 void filter( Container& c, TransferFunction1 f, TransferFunction2 g,
double base_frequency )
58 std::for_each( begin( c ), end( c ), [&](
auto& value ) {
59 const auto freq = ( counter++ ) * base_frequency;
60 value *= f( freq ) * g( freq );
71 return 0.54 + 0.46 * std::cos( 2 * n * M_PI / N );
79 return 0.42 - 0.5 * std::cos( 2 * n * M_PI / N ) +
80 0.08 * std::cos( ( 4 * n * M_PI / N ) );
void filter(Container &c, TransferFunction f, double base_frequency)
Definition: transfer_function.hpp:42
double blackman(int n, int N)
Definition: transfer_function.hpp:74
#define SEQUENCER_ASSERT(cond)
Definition: assert.hpp:8
constexpr auto ideal_high_pass(double freq, double cutoff) noexcept
Definition: transfer_function.hpp:11
double hamming(int n, int N)
Definition: transfer_function.hpp:66
constexpr auto ideal_low_pass(double freq, double cutoff) noexcept
Definition: transfer_function.hpp:16
constexpr auto low_shelf(double freq, double gain, double transition)
Definition: transfer_function.hpp:31
constexpr auto high_pass(double freq, double gain, double transition)
Definition: transfer_function.hpp:26
constexpr auto high_shelf(double freq, double gain, double transition)
Definition: transfer_function.hpp:36
constexpr auto low_pass(double freq, double gain, double transition)
Definition: transfer_function.hpp:21