![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
music main
Fork of AppBoard_Waveplayer by
main.cpp@10:6eefc37bfa23, 2015-04-09 (annotated)
- Committer:
- niv17
- Date:
- Thu Apr 09 20:24:22 2015 +0000
- Revision:
- 10:6eefc37bfa23
- Parent:
- 9:f1aebfbe7e78
- Child:
- 11:e48cb1e38995
music main;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
samux | 0:0d68fe822228 | 1 | #include "mbed.h" |
samux | 0:0d68fe822228 | 2 | #include "USBHostMSD.h" |
4180_1 | 9:f1aebfbe7e78 | 3 | #include "wave_player.h" |
niv17 | 10:6eefc37bfa23 | 4 | #include "MMA7660.h" |
niv17 | 10:6eefc37bfa23 | 5 | #include "rtos.h" |
niv17 | 10:6eefc37bfa23 | 6 | |
4180_1 | 9:f1aebfbe7e78 | 7 | //mbed Application board waveplayer demo |
4180_1 | 9:f1aebfbe7e78 | 8 | //Plays the wave file "sample.wav" on the USB flash drive |
4180_1 | 9:f1aebfbe7e78 | 9 | //Outputs to onboard speaker (but at very low volume) |
4180_1 | 9:f1aebfbe7e78 | 10 | //and the Audio Out jack for connection to a set of amplified PC speakers (at higher volume) |
4180_1 | 9:f1aebfbe7e78 | 11 | //Needs a USB flash drive inserted with the wav file on it to run |
samux | 0:0d68fe822228 | 12 | |
4180_1 | 9:f1aebfbe7e78 | 13 | //Analog Out Jack |
4180_1 | 9:f1aebfbe7e78 | 14 | AnalogOut DACout(p18); |
4180_1 | 9:f1aebfbe7e78 | 15 | //On Board Speaker |
4180_1 | 9:f1aebfbe7e78 | 16 | PwmOut PWMout(p26); |
niv17 | 10:6eefc37bfa23 | 17 | int music = 0; |
niv17 | 10:6eefc37bfa23 | 18 | void readbuf(); |
niv17 | 10:6eefc37bfa23 | 19 | Serial pc(USBTX,USBRX); |
niv17 | 10:6eefc37bfa23 | 20 | MMA7660 MMA(p28, p27); |
niv17 | 10:6eefc37bfa23 | 21 | AnalogIn sound(p17); |
niv17 | 10:6eefc37bfa23 | 22 | PwmOut r (p23); |
niv17 | 10:6eefc37bfa23 | 23 | PwmOut g (p24); |
niv17 | 10:6eefc37bfa23 | 24 | PwmOut b (p25); |
niv17 | 10:6eefc37bfa23 | 25 | FILE *wave_file; |
niv17 | 10:6eefc37bfa23 | 26 | void readbuf(void const *args); |
niv17 | 10:6eefc37bfa23 | 27 | unsigned short * waveArray; |
niv17 | 10:6eefc37bfa23 | 28 | DigitalIn fire(p14); |
niv17 | 10:6eefc37bfa23 | 29 | void changemusic(void const *args); |
niv17 | 10:6eefc37bfa23 | 30 | void changecolor(void const *args); |
niv17 | 10:6eefc37bfa23 | 31 | int randomval = 0; |
niv17 | 10:6eefc37bfa23 | 32 | int start = 0; |
niv17 | 10:6eefc37bfa23 | 33 | Ticker fillbuf; |
niv17 | 10:6eefc37bfa23 | 34 | unsigned short * buf; |
niv17 | 10:6eefc37bfa23 | 35 | wave_player waver(&DACout,&PWMout, &waveArray[0]); |
4180_1 | 9:f1aebfbe7e78 | 36 | int main() |
4180_1 | 9:f1aebfbe7e78 | 37 | { |
samux | 0:0d68fe822228 | 38 | USBHostMSD msd("usb"); |
niv17 | 10:6eefc37bfa23 | 39 | // for(int i = 0; i<256; i++) |
niv17 | 10:6eefc37bfa23 | 40 | // { |
niv17 | 10:6eefc37bfa23 | 41 | // waveArray[i] = 0; |
niv17 | 10:6eefc37bfa23 | 42 | // } |
niv17 | 10:6eefc37bfa23 | 43 | |
niv17 | 10:6eefc37bfa23 | 44 | r.period(0.001); |
4180_1 | 9:f1aebfbe7e78 | 45 | //setup PWM hardware for a Class D style audio output |
4180_1 | 9:f1aebfbe7e78 | 46 | PWMout.period(1.0/400000.0); |
niv17 | 10:6eefc37bfa23 | 47 | printf("\r\n\nHello, wave world!\n"); |
4180_1 | 9:f1aebfbe7e78 | 48 | // wait until connected to a USB device |
4180_1 | 9:f1aebfbe7e78 | 49 | while(!msd.connect()) { |
samux | 0:0d68fe822228 | 50 | Thread::wait(500); |
samux | 0:0d68fe822228 | 51 | } |
4180_1 | 9:f1aebfbe7e78 | 52 | //open wav file and play it |
niv17 | 10:6eefc37bfa23 | 53 | |
niv17 | 10:6eefc37bfa23 | 54 | |
niv17 | 10:6eefc37bfa23 | 55 | pc.printf("\r\nenter wavefile\n\n"); |
niv17 | 10:6eefc37bfa23 | 56 | wave_file = fopen("/usb/sample.wav","r"); |
niv17 | 10:6eefc37bfa23 | 57 | |
niv17 | 10:6eefc37bfa23 | 58 | // waver.set_verbosity(1); |
niv17 | 10:6eefc37bfa23 | 59 | Thread thread(readbuf); |
niv17 | 10:6eefc37bfa23 | 60 | waver.play(wave_file); |
niv17 | 10:6eefc37bfa23 | 61 | |
4180_1 | 9:f1aebfbe7e78 | 62 | fclose(wave_file); |
niv17 | 10:6eefc37bfa23 | 63 | |
niv17 | 10:6eefc37bfa23 | 64 | pc.printf("\r\n END OF FILE\n"); |
niv17 | 10:6eefc37bfa23 | 65 | pc.printf("\r\n\n BUFFER:::\n"); |
niv17 | 10:6eefc37bfa23 | 66 | |
niv17 | 10:6eefc37bfa23 | 67 | |
niv17 | 10:6eefc37bfa23 | 68 | |
niv17 | 10:6eefc37bfa23 | 69 | while(1); |
niv17 | 10:6eefc37bfa23 | 70 | |
niv17 | 10:6eefc37bfa23 | 71 | } |
niv17 | 10:6eefc37bfa23 | 72 | void readbuf(void const * args){ |
niv17 | 10:6eefc37bfa23 | 73 | |
niv17 | 10:6eefc37bfa23 | 74 | while(1){ |
niv17 | 10:6eefc37bfa23 | 75 | wait_ms(11.0); |
niv17 | 10:6eefc37bfa23 | 76 | |
niv17 | 10:6eefc37bfa23 | 77 | waver.getFIFO(buf); |
niv17 | 10:6eefc37bfa23 | 78 | |
niv17 | 10:6eefc37bfa23 | 79 | //for(int i = 0; i<256; i++) { |
niv17 | 10:6eefc37bfa23 | 80 | // printf("%hu\r\n",buf[i]); |
niv17 | 10:6eefc37bfa23 | 81 | // } |
niv17 | 10:6eefc37bfa23 | 82 | } |
niv17 | 10:6eefc37bfa23 | 83 | |
niv17 | 10:6eefc37bfa23 | 84 | } |