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

Committer:
hayama
Date:
Tue Aug 12 01:20:44 2014 +0000
Revision:
0:f4cbe4a0f1be
voice changer, contains echo, change low voive and high voice.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hayama 0:f4cbe4a0f1be 1 /*
hayama 0:f4cbe4a0f1be 2 // normal voice
hayama 0:f4cbe4a0f1be 3 #include "mbed.h"
hayama 0:f4cbe4a0f1be 4 float micCB;
hayama 0:f4cbe4a0f1be 5 float y;
hayama 0:f4cbe4a0f1be 6
hayama 0:f4cbe4a0f1be 7 AnalogIn micC(p16);
hayama 0:f4cbe4a0f1be 8 AnalogOut spOut(p18);
hayama 0:f4cbe4a0f1be 9 BusOut leds( LED4, LED3, LED2, LED1 );
hayama 0:f4cbe4a0f1be 10
hayama 0:f4cbe4a0f1be 11 int main() {
hayama 0:f4cbe4a0f1be 12 wait(2);
hayama 0:f4cbe4a0f1be 13
hayama 0:f4cbe4a0f1be 14 micCB=0;
hayama 0:f4cbe4a0f1be 15 for(int i=0;i<1000;i++){
hayama 0:f4cbe4a0f1be 16 micCB+=micC;
hayama 0:f4cbe4a0f1be 17 }
hayama 0:f4cbe4a0f1be 18 micCB/=1000;
hayama 0:f4cbe4a0f1be 19
hayama 0:f4cbe4a0f1be 20 while(1) {
hayama 0:f4cbe4a0f1be 21 y=micC-micCB;
hayama 0:f4cbe4a0f1be 22 spOut=y*10+0.5;
hayama 0:f4cbe4a0f1be 23 leds=abs(y*1000);
hayama 0:f4cbe4a0f1be 24 wait_us(20);
hayama 0:f4cbe4a0f1be 25 }
hayama 0:f4cbe4a0f1be 26 }
hayama 0:f4cbe4a0f1be 27
hayama 0:f4cbe4a0f1be 28
hayama 0:f4cbe4a0f1be 29
hayama 0:f4cbe4a0f1be 30
hayama 0:f4cbe4a0f1be 31
hayama 0:f4cbe4a0f1be 32 // y wo 2 kai syuuki de 0
hayama 0:f4cbe4a0f1be 33 #include "mbed.h"
hayama 0:f4cbe4a0f1be 34 float micCB;
hayama 0:f4cbe4a0f1be 35 float y;
hayama 0:f4cbe4a0f1be 36 int j;
hayama 0:f4cbe4a0f1be 37
hayama 0:f4cbe4a0f1be 38 AnalogIn micC(p16);
hayama 0:f4cbe4a0f1be 39 AnalogOut spOut(p18);
hayama 0:f4cbe4a0f1be 40 BusOut leds( LED4, LED3, LED2, LED1 );
hayama 0:f4cbe4a0f1be 41
hayama 0:f4cbe4a0f1be 42 int main() {
hayama 0:f4cbe4a0f1be 43 wait(2);
hayama 0:f4cbe4a0f1be 44
hayama 0:f4cbe4a0f1be 45 micCB=0;
hayama 0:f4cbe4a0f1be 46 for(int i=0;i<1000;i++){
hayama 0:f4cbe4a0f1be 47 micCB+=micC;
hayama 0:f4cbe4a0f1be 48 }
hayama 0:f4cbe4a0f1be 49 micCB/=1000;
hayama 0:f4cbe4a0f1be 50
hayama 0:f4cbe4a0f1be 51 while(1) {
hayama 0:f4cbe4a0f1be 52 j++; if(j>1) j=0;
hayama 0:f4cbe4a0f1be 53 if(j==0) y=micC-micCB; else y=0;
hayama 0:f4cbe4a0f1be 54 if (abs(y)>0.005) spOut=y*10+0.5;
hayama 0:f4cbe4a0f1be 55 leds=abs(y*1000);
hayama 0:f4cbe4a0f1be 56 wait_us(20);
hayama 0:f4cbe4a0f1be 57 }
hayama 0:f4cbe4a0f1be 58 }
hayama 0:f4cbe4a0f1be 59
hayama 0:f4cbe4a0f1be 60
hayama 0:f4cbe4a0f1be 61
hayama 0:f4cbe4a0f1be 62
hayama 0:f4cbe4a0f1be 63 // idouheikin
hayama 0:f4cbe4a0f1be 64 #include "mbed.h"
hayama 0:f4cbe4a0f1be 65 float micCB;
hayama 0:f4cbe4a0f1be 66 float x1,x2,x3,x4;
hayama 0:f4cbe4a0f1be 67 float y;
hayama 0:f4cbe4a0f1be 68 int j;
hayama 0:f4cbe4a0f1be 69
hayama 0:f4cbe4a0f1be 70 AnalogIn micC(p16);
hayama 0:f4cbe4a0f1be 71 AnalogOut spOut(p18);
hayama 0:f4cbe4a0f1be 72 BusOut leds( LED4, LED3, LED2, LED1 );
hayama 0:f4cbe4a0f1be 73
hayama 0:f4cbe4a0f1be 74 int main() {
hayama 0:f4cbe4a0f1be 75 wait(2);
hayama 0:f4cbe4a0f1be 76
hayama 0:f4cbe4a0f1be 77 micCB=0;
hayama 0:f4cbe4a0f1be 78 for(int i=0;i<1000;i++){
hayama 0:f4cbe4a0f1be 79 micCB+=micC;
hayama 0:f4cbe4a0f1be 80 }
hayama 0:f4cbe4a0f1be 81 micCB/=1000;
hayama 0:f4cbe4a0f1be 82
hayama 0:f4cbe4a0f1be 83 while(1) {
hayama 0:f4cbe4a0f1be 84 y=x2+x1;
hayama 0:f4cbe4a0f1be 85 x2=x1;
hayama 0:f4cbe4a0f1be 86 x1=micC-micCB;
hayama 0:f4cbe4a0f1be 87 spOut=y*10+0.5;
hayama 0:f4cbe4a0f1be 88 leds=abs(y*1000);
hayama 0:f4cbe4a0f1be 89 wait_us(10);
hayama 0:f4cbe4a0f1be 90 }
hayama 0:f4cbe4a0f1be 91 }
hayama 0:f4cbe4a0f1be 92
hayama 0:f4cbe4a0f1be 93
hayama 0:f4cbe4a0f1be 94
hayama 0:f4cbe4a0f1be 95
hayama 0:f4cbe4a0f1be 96 // smoothing voice
hayama 0:f4cbe4a0f1be 97 #include "mbed.h"
hayama 0:f4cbe4a0f1be 98 float micCB;
hayama 0:f4cbe4a0f1be 99 float x1,x2,x3,x4;
hayama 0:f4cbe4a0f1be 100 float y;
hayama 0:f4cbe4a0f1be 101 int j;
hayama 0:f4cbe4a0f1be 102
hayama 0:f4cbe4a0f1be 103 AnalogIn micC(p16);
hayama 0:f4cbe4a0f1be 104 AnalogOut spOut(p18);
hayama 0:f4cbe4a0f1be 105 BusOut leds( LED4, LED3, LED2, LED1 );
hayama 0:f4cbe4a0f1be 106
hayama 0:f4cbe4a0f1be 107 float smooth(float a, float b, float factor){
hayama 0:f4cbe4a0f1be 108 return(a*factor+b*(1-factor));
hayama 0:f4cbe4a0f1be 109 }
hayama 0:f4cbe4a0f1be 110
hayama 0:f4cbe4a0f1be 111 int main() {
hayama 0:f4cbe4a0f1be 112 wait(2);
hayama 0:f4cbe4a0f1be 113
hayama 0:f4cbe4a0f1be 114 micCB=0;
hayama 0:f4cbe4a0f1be 115 for(int i=0;i<1000;i++){
hayama 0:f4cbe4a0f1be 116 micCB+=micC;
hayama 0:f4cbe4a0f1be 117 }
hayama 0:f4cbe4a0f1be 118 micCB/=1000;
hayama 0:f4cbe4a0f1be 119
hayama 0:f4cbe4a0f1be 120 while(1) {
hayama 0:f4cbe4a0f1be 121 //y=x2+x1;
hayama 0:f4cbe4a0f1be 122 //x2=x1;
hayama 0:f4cbe4a0f1be 123 y=smooth(micC-micCB,y,0.05);
hayama 0:f4cbe4a0f1be 124 spOut=y*10+0.5;
hayama 0:f4cbe4a0f1be 125 leds=abs(y*1000);
hayama 0:f4cbe4a0f1be 126 wait_us(10);
hayama 0:f4cbe4a0f1be 127 }
hayama 0:f4cbe4a0f1be 128 }
hayama 0:f4cbe4a0f1be 129
hayama 0:f4cbe4a0f1be 130
hayama 0:f4cbe4a0f1be 131
hayama 0:f4cbe4a0f1be 132
hayama 0:f4cbe4a0f1be 133 // voice changer (low voice)
hayama 0:f4cbe4a0f1be 134 #include "mbed.h"
hayama 0:f4cbe4a0f1be 135 #define ARRAY 2000
hayama 0:f4cbe4a0f1be 136 #define ARRAYM1 1999
hayama 0:f4cbe4a0f1be 137
hayama 0:f4cbe4a0f1be 138 float micCB;
hayama 0:f4cbe4a0f1be 139 float x[ARRAY];
hayama 0:f4cbe4a0f1be 140 float y;
hayama 0:f4cbe4a0f1be 141 int j=0,k=0,n=0;
hayama 0:f4cbe4a0f1be 142 AnalogIn micC(p16);
hayama 0:f4cbe4a0f1be 143 AnalogOut spOut(p18);
hayama 0:f4cbe4a0f1be 144 BusOut leds( LED4, LED3, LED2, LED1 );
hayama 0:f4cbe4a0f1be 145
hayama 0:f4cbe4a0f1be 146 int main() {
hayama 0:f4cbe4a0f1be 147 wait(2);
hayama 0:f4cbe4a0f1be 148 micCB=0;
hayama 0:f4cbe4a0f1be 149 for(int i=0;i<1000;i++){ micCB+=micC; }
hayama 0:f4cbe4a0f1be 150 micCB/=1000;
hayama 0:f4cbe4a0f1be 151
hayama 0:f4cbe4a0f1be 152 while(1) {
hayama 0:f4cbe4a0f1be 153 n++; if (n>1) n=0;
hayama 0:f4cbe4a0f1be 154 if (n==0){ k++; if (k>ARRAYM1) k=0; }
hayama 0:f4cbe4a0f1be 155 j++; if(j>ARRAYM1) j=0;
hayama 0:f4cbe4a0f1be 156 x[j]=micC-micCB;
hayama 0:f4cbe4a0f1be 157 y=x[k];
hayama 0:f4cbe4a0f1be 158 spOut=y*10+0.5;
hayama 0:f4cbe4a0f1be 159 leds=abs(y*1000);
hayama 0:f4cbe4a0f1be 160 wait_us(20);
hayama 0:f4cbe4a0f1be 161 }
hayama 0:f4cbe4a0f1be 162 }
hayama 0:f4cbe4a0f1be 163
hayama 0:f4cbe4a0f1be 164
hayama 0:f4cbe4a0f1be 165 // voice changer (high voice)
hayama 0:f4cbe4a0f1be 166 #include "mbed.h"
hayama 0:f4cbe4a0f1be 167 #define ARRAY 1000
hayama 0:f4cbe4a0f1be 168 #define ARRAYM1 999
hayama 0:f4cbe4a0f1be 169
hayama 0:f4cbe4a0f1be 170 float micCB;
hayama 0:f4cbe4a0f1be 171 float x[ARRAY];
hayama 0:f4cbe4a0f1be 172 float y;
hayama 0:f4cbe4a0f1be 173 int j=0,k=0,n=0;
hayama 0:f4cbe4a0f1be 174 AnalogIn micC(p16);
hayama 0:f4cbe4a0f1be 175 AnalogOut spOut(p18);
hayama 0:f4cbe4a0f1be 176 BusOut leds( LED4, LED3, LED2, LED1 );
hayama 0:f4cbe4a0f1be 177
hayama 0:f4cbe4a0f1be 178 int main() {
hayama 0:f4cbe4a0f1be 179 wait(2);
hayama 0:f4cbe4a0f1be 180 micCB=0;
hayama 0:f4cbe4a0f1be 181 for(int i=0;i<1000;i++){ micCB+=micC; }
hayama 0:f4cbe4a0f1be 182 micCB/=1000;
hayama 0:f4cbe4a0f1be 183
hayama 0:f4cbe4a0f1be 184 while(1) {
hayama 0:f4cbe4a0f1be 185 n++; if (n>1) n=0;
hayama 0:f4cbe4a0f1be 186 if (n==0){ k++; if (k>ARRAYM1) k=0; }
hayama 0:f4cbe4a0f1be 187 j++; if(j>ARRAYM1) j=0;
hayama 0:f4cbe4a0f1be 188 x[k]=micC-micCB;
hayama 0:f4cbe4a0f1be 189 y=x[j];
hayama 0:f4cbe4a0f1be 190 spOut=y*10+0.5;
hayama 0:f4cbe4a0f1be 191 leds=abs(y*1000);
hayama 0:f4cbe4a0f1be 192 wait_us(10);
hayama 0:f4cbe4a0f1be 193 }
hayama 0:f4cbe4a0f1be 194 }
hayama 0:f4cbe4a0f1be 195
hayama 0:f4cbe4a0f1be 196
hayama 0:f4cbe4a0f1be 197
hayama 0:f4cbe4a0f1be 198
hayama 0:f4cbe4a0f1be 199 // voice changer (ECHO)
hayama 0:f4cbe4a0f1be 200 #include "mbed.h"
hayama 0:f4cbe4a0f1be 201 #define ARRAY 4000
hayama 0:f4cbe4a0f1be 202 #define ARRAYM1 3999
hayama 0:f4cbe4a0f1be 203 #define DELAYTIME 2000
hayama 0:f4cbe4a0f1be 204 #define ECHOFACTOR 0.6
hayama 0:f4cbe4a0f1be 205
hayama 0:f4cbe4a0f1be 206 float micCB;
hayama 0:f4cbe4a0f1be 207 float x[ARRAY];
hayama 0:f4cbe4a0f1be 208 float y;
hayama 0:f4cbe4a0f1be 209 int j=0,k=0,n=0;
hayama 0:f4cbe4a0f1be 210 AnalogIn micC(p16);
hayama 0:f4cbe4a0f1be 211 AnalogOut spOut(p18);
hayama 0:f4cbe4a0f1be 212 BusOut leds( LED4, LED3, LED2, LED1 );
hayama 0:f4cbe4a0f1be 213
hayama 0:f4cbe4a0f1be 214 int main() {
hayama 0:f4cbe4a0f1be 215 wait(2);
hayama 0:f4cbe4a0f1be 216 micCB=0;
hayama 0:f4cbe4a0f1be 217 for(int i=0;i<1000;i++){ micCB+=micC; }
hayama 0:f4cbe4a0f1be 218 micCB/=1000;
hayama 0:f4cbe4a0f1be 219
hayama 0:f4cbe4a0f1be 220 k=DELAYTIME;
hayama 0:f4cbe4a0f1be 221 while(1) {
hayama 0:f4cbe4a0f1be 222 j++; if(j>ARRAYM1) j=0;
hayama 0:f4cbe4a0f1be 223 k++; if (k>ARRAYM1) k=0;
hayama 0:f4cbe4a0f1be 224 y=x[j]+=micC-micCB;
hayama 0:f4cbe4a0f1be 225 x[k]=x[j]*ECHOFACTOR;
hayama 0:f4cbe4a0f1be 226
hayama 0:f4cbe4a0f1be 227 spOut=y*10+0.5;
hayama 0:f4cbe4a0f1be 228 leds=abs(y*1000);
hayama 0:f4cbe4a0f1be 229 wait_us(50);
hayama 0:f4cbe4a0f1be 230 }
hayama 0:f4cbe4a0f1be 231 }
hayama 0:f4cbe4a0f1be 232
hayama 0:f4cbe4a0f1be 233 */