TAISAKU NISHIJIMA
/
penkich_percussion_2_NUCLEO
penkich_percussion_2_NUCLEO
Fork of penkich_test_percussion by
main.cpp
- Committer:
- penkich
- Date:
- 2015-08-18
- Revision:
- 0:e363f64b5744
- Child:
- 1:b102b9476594
File content as of revision 0:e363f64b5744:
#include "mbed.h" DigitalIn sw(dp9); Ticker timer; PwmOut speaker(dp18); Ticker envelope; PwmOut env(dp24); static int tms_per10=0; void env_out(void){ float attack_ms =10; float decay_ms = 10; float sustain_ms = 200; float sustain = 0.5; float release_ms = 400; float out_level; tms_per10++; if (tms_per10 > (attack_ms + decay_ms + sustain_ms + release_ms) * 10){ env.write(0.0f); }else if(tms_per10 > (attack_ms + decay_ms + sustain_ms) * 10){ out_level = sustain/(tms_per10 - (attack_ms + decay_ms + sustain_ms)) * release_ms; env.write(out_level); }else if(tms_per10 > (attack_ms + decay_ms) * 10){ env.write(sustain); }else if(tms_per10 > attack_ms * 10){ env.write(1.0f); }else{ out_level = 1.0/attack_ms * tms_per10; env.write(out_level); } } void sound_out(void){ speaker.write(((float)rand()/RAND_MAX)); } int main() { while(1){ if (sw ==0){ tms_per10=0; speaker.period_us(10); env.period_us(10); timer.attach_us(&sound_out,100); //10kHz envelope.attach_us(&env_out,100); //10kHz } wait(0.01f); } }