The program of Musical Instrument in Microgravity ~ Combined All Experiment Video (85% Speed) ~
Project introduction slide) https://www.slideshare.net/secret/EFyMJ5f4U6oJbz
main.cpp
- Committer:
- AkiraK
- Date:
- 2021-03-12
- Revision:
- 0:90918a0a0969
File content as of revision 0:90918a0a0969:
#define mC 2610.626 #define mD 2930.665 #define mE 3290.628 #define mF 3490.228 #define mG 3910.995 #define mA 440.000 #define mB 493.883 // viollin: 391.995~4186.009 // viola: 261.626~2093.005 // cello: 130.813~1046.502 // contrabass: 82.407~391.995 // hape: 61.735~6271.927 #include "mbed.h" #include "math.h" Ticker timer; AnalogOut sp1(p18); AnalogIn magSensors[] = {p15,p16,p17,p19,p20}; float ms[180]; float m1,m2,m3,m4,m5; float freq[3] = {0,0,0}; void sound_out(void) { // static float j1=0; static float j2=0; static float j3=0; static float j4=0; static float j5=0; j1=j1+m1; j2=j2+m2; j3=j3+m3; j4=j4+m4; j5=j5+m5; if (j1>180)j1=j1-180; if (j2>180)j2=j2-180; if (j3>180)j3=j3-180; if (j4>180)j4=j4-180; if (j5>180)j5=j5-180; sp1.write((ms[(int)j1]+ms[(int)j2]+ms[(int)j3]+ms[(int)j4]+ms[(int)j5])/5.0); } int main() { int i; //setting sincurv for (i=0;i<180;i++) { ms[i]=sin(2*3.1415*(float)i/180.0)/2.0+0.5; } timer.attach_us(&sound_out,100); //10kHz while(true){ // printf("magSensors: %f, %f, %f\n", magSensors[0]*3.3 * 1054 + 20, magSensors[1]*3.3, magSensors[2]*3.3); // m1 = (magSensors[0]*3.3 * 1149.7 + 391.995) *2*180/10000; //606 violin // m2 = (magSensors[1]*3.3 * 554.96 + 261.626) *2*180/10000; //606 2000 viola // m3 = (magSensors[2]*3.3 * 227.48 + 130.813) *2*180/10000; // cello // m4 = (magSensors[3]*3.3 * 93.815 + 82.407) *2*180/10000; //606 2000 // m5 = (magSensors[4]*3.3 * 1881.876 + 61.735) *2*180/10000; // // m1 = (magSensors[0]*3.3 * 1881.876 + 61.735) *2*180/10000; // m2 = (magSensors[1]*3.3 * 1881.876 + 61.735) *2*180/10000; // m3 = (magSensors[2]*3.3 * 1881.876 + 61.735) *2*180/10000; // m4 = (magSensors[3]*3.3 * 1881.876 + 61.735) *2*180/10000; // m5 = (magSensors[4]*3.3 * 1881.876 + 61.735) *2*180/10000; // // m1 = (sqrt(magSensors[0]*3.3) * 3418.598 + 61.735) *2*180/10000; // // m2 = (sqrt(magSensors[1]*3.3) * 3418.598 + 61.735) *2*180/10000; // // m3 = (sqrt(magSensors[2]*3.3) * 3418.598 + 61.735) *2*180/10000; // // m4 = (sqrt(magSensors[3]*3.3) * 3418.598 + 61.735) *2*180/10000; // // m5 = (sqrt(magSensors[4]*3.3) * 3418.598 + 61.735) *2*180/10000; // // printf("%f,%f,%f,%f,%f\n",m1,m2,m3,m4,m5); // Error avoid //for(int i = 0; i < 3; i++) { // m[i] = magSensors[i]*3.3*6054+20; // } // wait(0.00001); } ////ceg // m1=mC*2*180/10000; // m2=mE*2*180/10000; // m3=mG*2*180/10000; // wait(1.0f); // //cfa // m1=mC*2*180/10000; // m2=mF*2*180/10000; // m3=mA*2*180/10000; // wait(1.0f); // //ceg // m1=mC*2*180/10000; // m2=mE*2*180/10000; // m3=mG*2*180/10000; // wait(1.0f); // //bdg // m1=mB*180/10000; // m2=mD*2*180/10000; // m3=mG*2*180/10000; // wait(1.0f); // //ceg // m1=mC*2*180/10000; // m2=mE*2*180/10000; // m3=mG*2*180/10000; // wait(1.0f); // timer.detach(); // sp1.write(0.0f); // while (1); } //Ticker timer; //AnalogOut sp1(p18); //define analog out pin // //float ms[180]; //float m1; //int counter = 0; // //void sound_out(void) { // static float j = 0; // j = j + m1; // if(j > 180) j = j - 180; // sp1.write(ms[(int)j]); // counter++; // if(counter > 500000) { // timer.detach(); // } //} // //int main() { // float mm[] = {mC,mD,mE,mF,mG,mA,mB}; //sound scale // //setting sinecurv // for(int i = 0; i < 180; i++) { // ms[i] = sin(2*3.1415*(float)i/180.0)/2.0+0.5; // } // // for(int i = 0; i < sizeof(mm); i++) { // m1 = mm[i]*180/100000; // timer.attach_us(&sound_out,10); // counter = 0; // wait(0.5f); // } // // sp1.write(0.0f); // while(true); //} // // //DigitalOut sp1(p5); //Ticker timer; //Initialize timer interrupt // //int oto = 0; // //void tick(void) //{ // sp1.write(oto); //Digital Out // oto=!oto; //switch flag of digital out //} // //int main() //{ // float mm [] = {mC,mD,mE,mF,mG,mA,mB}; //sound scale // for(int i = 0; i < sizeof(mm); i++) { // timer.attach(&tick,1.0/mm[i]/2.0); // wait(0.5f); // } // timer.detach(); // while(true); //}