
Guitar Effector using "mbed application board".
Guitar Effector using "mbed application board".
main.cpp
- Committer:
- vaifreak
- Date:
- 2015-09-01
- Revision:
- 1:bfbfd6fede05
- Parent:
- 0:6b260c0931c5
- Child:
- 2:25adc1277b3e
File content as of revision 1:bfbfd6fede05:
//============================================================================= // @author vaifreak // @brief Guitar Effector //============================================================================= #include "mbed.h" #include "C12832.h" #include "Filter.h" #include "Drive.h" #include "Delay.h" C12832 lcd(p5, p7, p6, p8, p11); AnalogOut a_out(p18); AnalogIn a_in(p17); AnalogIn pot1(p19); AnalogIn pot2(p20); DigitalIn stick_U(p15); DigitalIn stick_D(p12); DigitalIn stick_L(p13); DigitalIn stick_R(p16); DigitalIn stick_C(p14); Ticker display_ticker; Ticker process_ticker; Ticker control_ticker; Filter *lpf; Drive *drive; Delay *delay; float pot1_val; float pot2_val; float g_outval; //--------------------------------------------- // //--------------------------------------------- void update_display() { float val; val = (a_in - 0.5f) * 2.0f; lcd.locate(0,21); lcd.printf("in:%0.2f out:%0.2f", val, g_outval); } //--------------------------------------------- // //--------------------------------------------- void process() { float val = (a_in * 2.0f) - 1.0f; //convert [0.0 ~ 1.0] to [-1.0 ~ 1.0] //---- effect process ---- { //val = lpf->process( val ); //val = drive->process( val ); val = delay->process( val ); } val = (val + 1.0f) * 0.5f; //convert [-1.0 ~ 1.0] to [0.0 ~ 1.0] //clipping. just to be safe. if(val > 1.0f) val = 1.0f; else if(val < 0.0f) val =0.0f; a_out = val; g_outval = val; } //--------------------------------------------- // //--------------------------------------------- void control() { const float threshold = 0.01f; if( fabsf(pot1 - pot1_val) > threshold ) { pot1_val = pot1; } if( fabsf(pot2 - pot2_val) > threshold ) { pot2_val = pot2; } } //--------------------------------------------- // //--------------------------------------------- int main() { lcd.cls(); lcd.locate(0,3); lcd.printf("MBED Effector."); process_ticker.attach(&process, 1.0/22050.0); control_ticker.attach(&control, 0.1); display_ticker.attach(&update_display, 1.0); lpf = new Filter(); lpf->LPF(); drive = new Drive(); delay = new Delay(); if( lpf == NULL || drive == NULL || delay == NULL ) { // malloc failed, maybe. lcd.locate(0,12); lcd.printf("Init fail..."); } }