Synthesizer based on the Unzen / Nucleo F746ZG
Dependencies: amakusa mbed-dsp mbed shimabara ukifune unzen_nucleo_f746
Fork of skeleton_unzen_nucleo_f746 by
雲仙フレームワークのテストとして作っているプロジェクトです。中身はどんどん変っていきます。 説明はDSP空挺団の「シンセサイザー」カテゴリーを参照してください。初回は「ドッグフードを食べる」です。
signal_processing.h
- Committer:
- shorie
- Date:
- 2017-01-30
- Revision:
- 14:cec63d8da48c
- Parent:
- 13:b33cb5925113
- Child:
- 15:de22b9d147e0
File content as of revision 14:cec63d8da48c:
#ifndef _SIGNAL_PROCESSING_H_ #define _SIGNAL_PROCESSING_H_ #include "amakusa.h" enum wave_style { triangle, square }; // User Signal processing Class class VFO { public: // essential members. Do not touch VFO( void ); void run( float out_buffer[], // place to write the right output samples unsigned int block_size // block size [sample] ); // parameter settings void set_frequency( int freq ); // unit is Hz. void set_Fs( int Fs ); // unit is Hz. void set_duty_cycle( float duty ); // 0 ... 0.5 void set_wave_style( wave_style style ); private: // internal variables.. int frequency; // VFO frequency [Hz] int Fs; // sampling Frequency [Hz] float duty_cycle; // VFO duty cycle. 0 ... 0.5 wave_style style; // style of the wave form. int current_phase; // internal variable of VFO. }; // User Signal processing Class class SignalProcessing { public: // essential members. Do not touch SignalProcessing( unsigned int block_size ); void run( float rx_left_buffer[], // array of the left input samples float rx_right_buffer[], // array of the right input samples float tx_left_buffer[], // place to write the left output samples float tx_right_buffer[], // place to write the right output samples unsigned int block_size // block size [sample] ); // project depenedent members. void set_volume( float vol ); void set_frequency( int freq ); // unit is Hz. void set_Fs( int Fs ); // unit is Hz. void set_duty_cycle( float duty ); // 0 ... 0.5 void set_wave_style( wave_style style ); private: // essential members. Do not touch. void enter_critical_section(void); void leave_critical_section(void); // project dependent members. float volume_level; // 0 ... 1.0 VFO *vfo; }; #endif