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空挺団の「シンセサイザー」カテゴリーを参照してください。初回は「ドッグフードを食べる」です。

monophonic.cpp

Committer:
shorie
Date:
2017-02-05
Revision:
22:dc2cbe8db9d9
Parent:
20:53021b2c424d
Child:
26:e99f71165e19

File content as of revision 22:dc2cbe8db9d9:

#include "signal_processing.h"


    // constructor. 
Monophonic::Monophonic( unsigned int  block_size )
{
        // initializing the subm-odules.
    this->vfo = new VFO();      // allocate VFO
    this->dc_blocker = new DCBlocker( block_size );
    this->sv_filter = new SVFilter( block_size );
    
    work_buf_a = new float32_t[block_size];
    work_buf_b = new float32_t[block_size];
}   // End of constructor()

Monophonic::~Monophonic( void )
{
        // initializing the subm-odules.
    delete this->vfo;
    delete this->dc_blocker;
    delete this->sv_filter;
    
    delete[] work_buf_a;
    delete[] work_buf_b;
}   // End of constructor()


    
        // Run all signal processing.
void Monophonic::run(           
        float out_buffer[],    // place to write the right output samples
        unsigned int block_size     // block size [sample]
        )
{
        // place the signal processing coce here
    this->vfo->run( work_buf_a, block_size );
    
        // blocking DC.
    this->dc_blocker->run( work_buf_a, work_buf_b );

        // applying filter.
    this->sv_filter->run( work_buf_b, out_buffer );
    
}   // End of run()
    

    // Sampling Frequency
void Monophonic::set_Fs( int Fs )
{
    this->vfo->set_Fs( Fs );
    this->sv_filter->set_Fs( Fs );
}

    // Oscillation Frequency
void Monophonic::set_vfo_frequency( int freq )
{
    this->vfo->set_frequency( freq );
    this->sv_filter->set_fc( freq );
}

    // Duty Cycle of VFO
void Monophonic::set_vfo_duty_cycle( float duty )
{
    this->vfo->set_duty_cycle( duty );
}

    // VFO wave form
void Monophonic::set_vfo_wave_form( wave_form form )
{
    this->vfo->set_wave_form( form );
}

    // SVF filter mode.
void Monophonic::set_filter_mode( svf_mode mode )
{
    this->sv_filter->set_mode( mode );
}

    // SVF Q factor
void Monophonic::set_filter_Q( float Q )
{
    this->sv_filter->set_Q( Q );
}

        // Set the f_factor value. 
void Monophonic::set_filter_f_factor( float f_factor )
{
    this->sv_filter->set_f_factor( f_factor );
}