psemek/libs/audio/source/wave/triangle.cpp

21 lines
421 B
C++

#include <psemek/audio/wave/triangle.hpp>
#include <psemek/audio/wave/generator.hpp>
#include <psemek/geom/math.hpp>
#include <psemek/util/to_shared.hpp>
#include <cmath>
namespace psemek::audio
{
stream_ptr triangle_wave(float frequency)
{
auto func = [frequency](float t){
t *= frequency;
return 4.f * std::abs(t - std::floor(t + 0.5f)) - 1.f;
};
return util::to_shared(generator_stream(func));
}
}