Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of penkich_test_percussion by
main.cpp
- Committer:
- penkich
- Date:
- 2015-08-23
- Revision:
- 1:3252e4fbccab
- Parent:
- 0:e363f64b5744
- Child:
- 2:269fadd5d1f2
File content as of revision 1:3252e4fbccab:
#include "mbed.h"
DigitalIn sw(D7);
Ticker timer;
PwmOut speaker(D5);
Ticker envelope;
PwmOut env(D3);
static int tms_per10=0;
void env_out(void){
float attack_ms =10;
float decay_ms = 10;
float sustain_ms = 20;
float sustain = 0.2;
float release_ms = 5000;
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.0f/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);
}
}
