42 lines
1.1 KiB
C++
42 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "utils/workers/plugin.hpp"
|
|
#include "utils/workers/result.hpp"
|
|
|
|
// Генерирует простую синусоиду и др. полезности см. workers/signal_type.hpp
|
|
namespace hr::plugins
|
|
{
|
|
// Формула синусоиды
|
|
// f(t) = A_m sin(2 PI t 1/T + a)
|
|
// где
|
|
// a - начальная фаза
|
|
// t - время замера
|
|
// 1/T - частота
|
|
// T - время полного цикла одного периуда колебаний
|
|
class signal_generator : public plugin
|
|
{
|
|
public:
|
|
signal_generator(const setup& st);
|
|
virtual ~signal_generator() = default;
|
|
|
|
public:
|
|
void process(fvec_t& base, real_time timestamp) override;
|
|
void process(cvec_t& fft, fvec_t& base, real_time timestamp) override;
|
|
result get_result() override;
|
|
|
|
private:
|
|
result m_result;
|
|
|
|
private:
|
|
std::vector<float> sin();
|
|
std::vector<float> square();
|
|
std::vector<float> triangle();
|
|
std::vector<float> saw();
|
|
std::vector<float> noise_only();
|
|
std::vector<float> speech_like();
|
|
std::vector<float> three_sines();
|
|
|
|
private:
|
|
};
|
|
}
|