Synthesizer based on the Unzen / Nucleo F746ZG

Dependencies:   amakusa mbed-dsp mbed shimabara ukifune unzen_nucleo_f746

Fork of skeleton_unzen_nucleo_f746 by seiichi horie

雲仙フレームワークのテストとして作っているプロジェクトです。中身はどんどん変っていきます。 説明はDSP空挺団の「シンセサイザー」カテゴリーを参照してください。初回は「ドッグフードを食べる」です。

vfo.cpp

Committer:
shorie
Date:
2017-01-30
Revision:
14:cec63d8da48c
Child:
15:de22b9d147e0

File content as of revision 14:cec63d8da48c:

#include "signal_processing.h"

        // Modify this constructor to initialize your audio algorithm.
VFO::VFO( void )
{
        // initial parameter setting.
    this->style = triangle;
    this->Fs = 48000;
    this->frequency = 440;
    this->duty_cycle = 0.5;
}   // End of constructor()
    
    
        // Modify this method to implement your audio algorithm.
void VFO::run(           
            float out_buffer[],         // vfo output buffer
            unsigned int block_size     // block size [sample]
           )
{
        // place the signal processing coce here
    for ( int i= 0; i< block_size; i++ )
    {
    }
}   // End of run()
    

void VFO::set_Fs( int Fs )
{
        // regulate the Fs.
    if ( Fs != 32000 && Fs != 44100 && Fs != 96000 && Fs != 48000 )
        Fs = 48000;
    this->Fs = Fs;
}

void VFO::set_frequency( int freq )
{
    if ( freq > this->Fs / 4 )
        freq = Fs/4;
    this->frequency = freq;
}

void VFO::set_duty_cycle( float duty )
{
    if ( duty > 0.5f )   // high limit
        duty = 0.5f;
    if ( duty < 0.01f )  // low limit
        duty = 0.01f;
    this->duty_cycle = duty;
}

void VFO::set_wave_style( wave_style style )
{
    this->style = style;
}