Files
XCEngine/MVS/Music fluctuations/source/audio3d/Reberation.h

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;
};