rendered paste body#include "lstUnit.hpp"#include "lstCommon.hpp"#include <string>#include <vector>namespace lst { lst::SinSynthesizer::SinSynthesizer() { samples = new vector<float>(); frequency = 440.0; bitDepth = 16; sampleRate = 16; } lst::SinSynthesizer::SinSynthesizer( float n_frequency ) { samples = new vector<float>(); frequency = n_frequency; } lst::SinSynthesizer::SinSynthesizer( float n_frequency, int n_bitDepth, int n_sampleRate ) { samples = new vector<float>(); frequency = n_frequency; bitDepth = n_bitDepth; sampleRate = n_sampleRate; sampleFrequency = (float)lst::frequencyToSamples( frequency, sampleRate ); } lst::SinSynthesizer::renderSample( float sampleNumber ) { return resultingSample = sin( ((2*PI)/sampleFrequency) * sampleNumber ); } lst::SinSynthesizer::generateSamples( ) { for(int i = 0; i < sampleRate; i++) samples.push_back(renderSample((float)i)); } lst::SinSynthesizer::generateSamples( int sampleCount ) { for(int i = 0; i < sampleCount; i++)) samples.push_back(renderSample((float)i)); } lst::SinSynthesizer::getSamples() { float * returnSamples = malloc(samples.size() * sizeof(float)); for(int i = 0; i < samples.size(); returnSamples[i] = samples[i++]) ; } lst::SinSynthesizer::~SinSynthesizer() { delete samples; } class SinSynthesizer : lst::Unit { private: float frequency; float renderSample( float sampleNumber ); float sampleFrequency; public: SinSynthesizer(); SinSynthesizer( float n_frequency ); SinSynthesizer( float n_frequency, int n_bitDepth, int n_sampleRate ); ~SinSynthesizer(); void generateSamples(); void generateSamples( int sampleCount ); float getSamples(); }}