| AudioControlSGTL5000 audioShield; | AudioControlSGTL5000 audioShield; | ||||
| int t_ampx = 20000; | |||||
| float t_ampx = 0.8; | |||||
| int t_lox = 10; | int t_lox = 10; | ||||
| int t_hix = 22000; | int t_hix = 22000; | ||||
| // Length of time for the sweep in seconds | // Length of time for the sweep in seconds | ||||
| Serial.println("setup done"); | Serial.println("setup done"); | ||||
| if(!myEffect.begin(t_ampx,t_lox,t_hix,t_timex)) { | |||||
| if(!myEffect.play(t_ampx,t_lox,t_hix,t_timex)) { | |||||
| Serial.println("AudioSynthToneSweep - begin failed"); | Serial.println("AudioSynthToneSweep - begin failed"); | ||||
| while(1); | while(1); | ||||
| } | } | ||||
| // wait for the sweep to end | // wait for the sweep to end | ||||
| while(myEffect.busy()); | |||||
| while(myEffect.isPlaying()); | |||||
| // and now reverse the sweep | // and now reverse the sweep | ||||
| if(!myEffect.begin(t_ampx,t_hix,t_lox,t_timex)) { | |||||
| if(!myEffect.play(t_ampx,t_hix,t_lox,t_timex)) { | |||||
| Serial.println("AudioSynthToneSweep - begin failed"); | Serial.println("AudioSynthToneSweep - begin failed"); | ||||
| while(1); | while(1); | ||||
| } | } | ||||
| // wait for the sweep to end | // wait for the sweep to end | ||||
| while(myEffect.busy()); | |||||
| while(myEffect.isPlaying()); | |||||
| Serial.println("Done"); | Serial.println("Done"); | ||||
| } | } | ||||
| // Written by Pete (El Supremo) Feb 2014 | // Written by Pete (El Supremo) Feb 2014 | ||||
| boolean AudioSynthToneSweep::begin(short t_amp,int t_lo,int t_hi,float t_time) | |||||
| boolean AudioSynthToneSweep::play(float t_amp,int t_lo,int t_hi,float t_time) | |||||
| { | { | ||||
| double tone_tmp; | double tone_tmp; | ||||
| } | } | ||||
| tone_amp = 0; | tone_amp = 0; | ||||
| if(t_amp < 0)return false; | if(t_amp < 0)return false; | ||||
| if(t_amp > 1)return false; | |||||
| if(t_lo < 1)return false; | if(t_lo < 1)return false; | ||||
| if(t_hi < 1)return false; | if(t_hi < 1)return false; | ||||
| if(t_hi >= 44100/2)return false; | if(t_hi >= 44100/2)return false; | ||||
| tone_hi = t_hi; | tone_hi = t_hi; | ||||
| tone_phase = 0; | tone_phase = 0; | ||||
| tone_amp = t_amp; | |||||
| // Limit the output amplitude to prevent aliasing | |||||
| // until I can figure out why this "overtops" | |||||
| // above 29000. | |||||
| if(tone_amp > 29000)tone_amp = 29000; | |||||
| tone_amp = t_amp * 32767.0; | |||||
| tone_tmp = tone_hi - tone_lo; | tone_tmp = tone_hi - tone_lo; | ||||
| tone_sign = 1; | tone_sign = 1; | ||||
| tone_freq = tone_lo*0x100000000LL; | tone_freq = tone_lo*0x100000000LL; | ||||
| unsigned char AudioSynthToneSweep::busy(void) | |||||
| unsigned char AudioSynthToneSweep::isPlaying(void) | |||||
| { | { | ||||
| return(sweep_busy); | return(sweep_busy); | ||||
| } | } |
| AudioStream(0,NULL), sweep_busy(0) | AudioStream(0,NULL), sweep_busy(0) | ||||
| { } | { } | ||||
| boolean begin(short t_amp,int t_lo,int t_hi,float t_time); | |||||
| boolean play(float t_amp,int t_lo,int t_hi,float t_time); | |||||
| virtual void update(void); | virtual void update(void); | ||||
| unsigned char busy(void); | |||||
| unsigned char isPlaying(void); | |||||
| private: | private: | ||||
| short tone_amp; | short tone_amp; |