voice changer, contains echo, change low voice and high voice.

Dependencies:   mbed

condenser microphone connect to p16, audio amplifier and speaker connect to p18, and pull-upped switch connect to p5 for chage voice of low voice, high voice and ecoed voice.

test video-> http://youtu.be/z-7Hj0u6OlA

/media/uploads/hayama/2014-08-11_20.21.54.jpg

Revision:
0:f4cbe4a0f1be
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/temp.cpp	Tue Aug 12 01:20:44 2014 +0000
@@ -0,0 +1,233 @@
+/*
+// normal voice
+#include "mbed.h"
+float micCB;
+float y;
+
+AnalogIn micC(p16);         
+AnalogOut spOut(p18);
+BusOut   leds( LED4, LED3, LED2, LED1 ); 
+
+int main() {
+    wait(2);
+    
+    micCB=0;
+    for(int i=0;i<1000;i++){
+        micCB+=micC;
+    }
+    micCB/=1000;   
+    
+    while(1) { 
+        y=micC-micCB; 
+        spOut=y*10+0.5;
+        leds=abs(y*1000);
+        wait_us(20);
+    }
+}
+
+
+
+
+
+// y wo 2 kai syuuki de 0
+#include "mbed.h"
+float micCB;
+float y;
+int j;
+
+AnalogIn micC(p16);         
+AnalogOut spOut(p18);
+BusOut   leds( LED4, LED3, LED2, LED1 ); 
+
+int main() {
+    wait(2);
+    
+    micCB=0;
+    for(int i=0;i<1000;i++){
+        micCB+=micC;
+    }
+    micCB/=1000;   
+    
+    while(1) { 
+        j++; if(j>1) j=0;
+        if(j==0) y=micC-micCB;  else y=0;
+        if (abs(y)>0.005) spOut=y*10+0.5;
+        leds=abs(y*1000);
+        wait_us(20);
+    }
+}
+
+
+
+
+// idouheikin 
+#include "mbed.h"
+float micCB;
+float x1,x2,x3,x4;
+float y;
+int j;
+
+AnalogIn micC(p16);         
+AnalogOut spOut(p18);
+BusOut   leds( LED4, LED3, LED2, LED1 ); 
+  
+int main() {
+    wait(2);
+    
+    micCB=0;
+    for(int i=0;i<1000;i++){
+        micCB+=micC;
+    }
+    micCB/=1000;   
+    
+    while(1) { 
+        y=x2+x1;
+        x2=x1;
+        x1=micC-micCB; 
+        spOut=y*10+0.5;
+        leds=abs(y*1000);
+        wait_us(10);
+    }
+}
+
+
+
+
+// smoothing voice
+#include "mbed.h"
+float micCB;
+float x1,x2,x3,x4;
+float y;
+int j;
+
+AnalogIn micC(p16);         
+AnalogOut spOut(p18);
+BusOut   leds( LED4, LED3, LED2, LED1 ); 
+
+float smooth(float a, float b, float factor){
+    return(a*factor+b*(1-factor));
+}
+    
+int main() {
+    wait(2);
+    
+    micCB=0;
+    for(int i=0;i<1000;i++){
+        micCB+=micC;
+    }
+    micCB/=1000;   
+    
+    while(1) { 
+        //y=x2+x1;
+        //x2=x1;
+        y=smooth(micC-micCB,y,0.05); 
+        spOut=y*10+0.5;
+        leds=abs(y*1000);
+        wait_us(10);
+    }
+}
+
+
+
+
+// voice changer (low voice)
+#include "mbed.h"
+#define ARRAY 2000
+#define ARRAYM1 1999
+
+float micCB;
+float x[ARRAY];
+float y;
+int j=0,k=0,n=0;
+AnalogIn micC(p16);         
+AnalogOut spOut(p18);
+BusOut   leds( LED4, LED3, LED2, LED1 ); 
+
+int main() {
+    wait(2);
+    micCB=0;
+    for(int i=0;i<1000;i++){ micCB+=micC; } 
+    micCB/=1000;   
+    
+    while(1) { 
+        n++; if (n>1) n=0;
+        if (n==0){ k++; if (k>ARRAYM1) k=0; }
+        j++; if(j>ARRAYM1) j=0;
+        x[j]=micC-micCB; 
+        y=x[k];
+        spOut=y*10+0.5;
+        leds=abs(y*1000);
+        wait_us(20);
+    }
+}
+
+
+// voice changer (high voice)
+#include "mbed.h"
+#define ARRAY 1000
+#define ARRAYM1 999
+
+float micCB;
+float x[ARRAY];
+float y;
+int j=0,k=0,n=0;
+AnalogIn micC(p16);         
+AnalogOut spOut(p18);
+BusOut   leds( LED4, LED3, LED2, LED1 ); 
+
+int main() {
+    wait(2);
+    micCB=0;
+    for(int i=0;i<1000;i++){ micCB+=micC; } 
+    micCB/=1000;   
+    
+    while(1) { 
+        n++; if (n>1) n=0;
+        if (n==0){ k++; if (k>ARRAYM1) k=0; }
+        j++; if(j>ARRAYM1) j=0;
+        x[k]=micC-micCB; 
+        y=x[j];
+        spOut=y*10+0.5;
+        leds=abs(y*1000);
+        wait_us(10);
+    }
+}
+
+
+
+
+// voice changer (ECHO)
+#include "mbed.h"
+#define ARRAY 4000
+#define ARRAYM1 3999
+#define DELAYTIME 2000
+#define ECHOFACTOR 0.6
+
+float micCB;
+float x[ARRAY];
+float y;
+int j=0,k=0,n=0;
+AnalogIn micC(p16);         
+AnalogOut spOut(p18);
+BusOut   leds( LED4, LED3, LED2, LED1 ); 
+
+int main() {
+    wait(2);
+    micCB=0;
+    for(int i=0;i<1000;i++){ micCB+=micC; } 
+    micCB/=1000;   
+    
+    k=DELAYTIME;    
+    while(1) { 
+        j++; if(j>ARRAYM1) j=0;
+        k++; if (k>ARRAYM1) k=0;
+        y=x[j]+=micC-micCB;      
+        x[k]=x[j]*ECHOFACTOR;       
+        
+        spOut=y*10+0.5;
+        leds=abs(y*1000);
+        wait_us(50);
+    }
+}
+
+*/
\ No newline at end of file