Yasushi TAUCHI
/
Sound_Waon
音だし(DAC出力) 和音
main.cpp@0:2309ea52d6c9, 2011-12-26 (annotated)
- Committer:
- yueee_yt
- Date:
- Mon Dec 26 13:13:15 2011 +0000
- Revision:
- 0:2309ea52d6c9
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yueee_yt | 0:2309ea52d6c9 | 1 | #define mC 261.626 |
yueee_yt | 0:2309ea52d6c9 | 2 | #define mD 293.665 |
yueee_yt | 0:2309ea52d6c9 | 3 | #define mE 329.628 |
yueee_yt | 0:2309ea52d6c9 | 4 | #define mF 349.228 |
yueee_yt | 0:2309ea52d6c9 | 5 | #define mG 391.995 |
yueee_yt | 0:2309ea52d6c9 | 6 | #define mA 440.000 |
yueee_yt | 0:2309ea52d6c9 | 7 | #define mB 493.883 |
yueee_yt | 0:2309ea52d6c9 | 8 | |
yueee_yt | 0:2309ea52d6c9 | 9 | #include "mbed.h" |
yueee_yt | 0:2309ea52d6c9 | 10 | |
yueee_yt | 0:2309ea52d6c9 | 11 | Ticker timer; |
yueee_yt | 0:2309ea52d6c9 | 12 | AnalogOut sp1(p18); |
yueee_yt | 0:2309ea52d6c9 | 13 | float ms[180]; |
yueee_yt | 0:2309ea52d6c9 | 14 | float m1,m2,m3; |
yueee_yt | 0:2309ea52d6c9 | 15 | |
yueee_yt | 0:2309ea52d6c9 | 16 | void sound_out(void) { |
yueee_yt | 0:2309ea52d6c9 | 17 | static float j1=0; |
yueee_yt | 0:2309ea52d6c9 | 18 | static float j2=0; |
yueee_yt | 0:2309ea52d6c9 | 19 | static float j3=0; |
yueee_yt | 0:2309ea52d6c9 | 20 | j1=j1+m1; |
yueee_yt | 0:2309ea52d6c9 | 21 | j2=j2+m2; |
yueee_yt | 0:2309ea52d6c9 | 22 | j3=j3+m3; |
yueee_yt | 0:2309ea52d6c9 | 23 | if (j1>180)j1=j1-180; |
yueee_yt | 0:2309ea52d6c9 | 24 | if (j2>180)j2=j2-180; |
yueee_yt | 0:2309ea52d6c9 | 25 | if (j3>180)j3=j3-180; |
yueee_yt | 0:2309ea52d6c9 | 26 | sp1.write((ms[(int)j1]+ms[(int)j2]+ms[(int)j3])/3.0); |
yueee_yt | 0:2309ea52d6c9 | 27 | } |
yueee_yt | 0:2309ea52d6c9 | 28 | |
yueee_yt | 0:2309ea52d6c9 | 29 | int main() { |
yueee_yt | 0:2309ea52d6c9 | 30 | int i; |
yueee_yt | 0:2309ea52d6c9 | 31 | //setting sincurv |
yueee_yt | 0:2309ea52d6c9 | 32 | for (i=0;i<180;i++) { |
yueee_yt | 0:2309ea52d6c9 | 33 | ms[i]=sin(2*3.1415*(float)i/180.0)/2.0+0.5; |
yueee_yt | 0:2309ea52d6c9 | 34 | } |
yueee_yt | 0:2309ea52d6c9 | 35 | timer.attach_us(&sound_out,10); //10kHz |
yueee_yt | 0:2309ea52d6c9 | 36 | //ceg |
yueee_yt | 0:2309ea52d6c9 | 37 | m1=mC*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 38 | m2=mE*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 39 | m3=mG*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 40 | wait(1.0f); |
yueee_yt | 0:2309ea52d6c9 | 41 | //cfa |
yueee_yt | 0:2309ea52d6c9 | 42 | m1=mC*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 43 | m2=mF*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 44 | m3=mA*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 45 | wait(1.0f); |
yueee_yt | 0:2309ea52d6c9 | 46 | //ceg |
yueee_yt | 0:2309ea52d6c9 | 47 | m1=mC*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 48 | m2=mE*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 49 | m3=mG*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 50 | wait(1.0f); |
yueee_yt | 0:2309ea52d6c9 | 51 | //bdg |
yueee_yt | 0:2309ea52d6c9 | 52 | m1=mB*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 53 | m2=mD*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 54 | m3=mG*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 55 | wait(1.0f); |
yueee_yt | 0:2309ea52d6c9 | 56 | //ceg |
yueee_yt | 0:2309ea52d6c9 | 57 | m1=mC*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 58 | m2=mE*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 59 | m3=mG*2*180/100000; |
yueee_yt | 0:2309ea52d6c9 | 60 | wait(1.0f); |
yueee_yt | 0:2309ea52d6c9 | 61 | timer.detach(); |
yueee_yt | 0:2309ea52d6c9 | 62 | sp1.write(0.0f); |
yueee_yt | 0:2309ea52d6c9 | 63 | while (1); |
yueee_yt | 0:2309ea52d6c9 | 64 | } |