30 lines
966 B
C++
30 lines
966 B
C++
#pragma once
|
|
#include<vector>
|
|
#include"FFTFilter.h"
|
|
|
|
class Reberation
|
|
{
|
|
public:
|
|
Reberation(int p_block_size, int p_sampling_rate, float p_reberation_time);
|
|
~Reberation();
|
|
float GetQuietPeriod() const;
|
|
void AddReberation(const std::vector<float>& p_input, std::vector<float>* p_output_left, std::vector<float>* p_output_right);
|
|
const std::vector<float>& GetImpulseResponseLeft() const;
|
|
const std::vector<float>& GetImpulseResponseRight() const;
|
|
|
|
private:
|
|
void RenderImpulseResponse(int p_block_size, int p_sampling_rate, float p_reberation_time);
|
|
static float FloatRand();
|
|
int m_block_size;
|
|
std::vector<float> m_impulse_response_left;
|
|
std::vector<float> m_impulse_response_right;
|
|
float m_quiet_period_sec;
|
|
|
|
FFTFilter* m_left_reberation_filter;
|
|
FFTFilter* m_right_reberation_filter;
|
|
std::vector<float> m_reberation_input;
|
|
std::vector<float> m_reberation_output_left;
|
|
std::vector<float> m_reberation_output_right;
|
|
int m_reberation_output_read_pos;
|
|
|
|
}; |