f303k8 wav player
Dependencies: SDFileSystem mbed
wavPlayer.cpp@0:1561c4efda0e, 2016-07-31 (annotated)
- Committer:
- nameless129
- Date:
- Sun Jul 31 12:13:36 2016 +0000
- Revision:
- 0:1561c4efda0e
- Child:
- 1:7a3f34b2d18b
wabPlayer??????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nameless129 | 0:1561c4efda0e | 1 | #include "mbed.h" |
nameless129 | 0:1561c4efda0e | 2 | #include "wavChunks.h" |
nameless129 | 0:1561c4efda0e | 3 | #include "wavPlayer.h" |
nameless129 | 0:1561c4efda0e | 4 | #include <stdio.h> |
nameless129 | 0:1561c4efda0e | 5 | #include "SDFileSystem.h" |
nameless129 | 0:1561c4efda0e | 6 | |
nameless129 | 0:1561c4efda0e | 7 | |
nameless129 | 0:1561c4efda0e | 8 | wavPlayerOnDAC::wavPlayerOnDAC(PinName pinDAC) : |
nameless129 | 0:1561c4efda0e | 9 | DACout(pinDAC) |
nameless129 | 0:1561c4efda0e | 10 | { |
nameless129 | 0:1561c4efda0e | 11 | } |
nameless129 | 0:1561c4efda0e | 12 | |
nameless129 | 0:1561c4efda0e | 13 | void wavPlayerOnDAC::setFile(FIL* tgtFile) |
nameless129 | 0:1561c4efda0e | 14 | { |
nameless129 | 0:1561c4efda0e | 15 | uint16_t i; |
nameless129 | 0:1561c4efda0e | 16 | wavfil = *tgtFile; |
nameless129 | 0:1561c4efda0e | 17 | f_read(&wavfil,&wavReadData,sizeof(wavReadData),&wavReadByte); |
nameless129 | 0:1561c4efda0e | 18 | for(i=0;i<WAV_READ_SIZE;i++) |
nameless129 | 0:1561c4efda0e | 19 | { |
nameless129 | 0:1561c4efda0e | 20 | DACData[0][i] = wavReadData[i]+32768; |
nameless129 | 0:1561c4efda0e | 21 | } |
nameless129 | 0:1561c4efda0e | 22 | dac_flag[0] = 1; |
nameless129 | 0:1561c4efda0e | 23 | |
nameless129 | 0:1561c4efda0e | 24 | f_read(&wavfil,&wavReadData,sizeof(wavReadData),&wavReadByte); |
nameless129 | 0:1561c4efda0e | 25 | for(i=0;i<WAV_READ_SIZE;i++) |
nameless129 | 0:1561c4efda0e | 26 | { |
nameless129 | 0:1561c4efda0e | 27 | DACData[1][i] = wavReadData[i]+32768; |
nameless129 | 0:1561c4efda0e | 28 | } |
nameless129 | 0:1561c4efda0e | 29 | dac_flag[1] = 1; |
nameless129 | 0:1561c4efda0e | 30 | fWavPlaying = 1; |
nameless129 | 0:1561c4efda0e | 31 | dac_c = 0; |
nameless129 | 0:1561c4efda0e | 32 | } |
nameless129 | 0:1561c4efda0e | 33 | |
nameless129 | 0:1561c4efda0e | 34 | //return 0:playing 1:stop |
nameless129 | 0:1561c4efda0e | 35 | uint8_t wavPlayerOnDAC::readProc(void) |
nameless129 | 0:1561c4efda0e | 36 | { |
nameless129 | 0:1561c4efda0e | 37 | uint16_t i,j; |
nameless129 | 0:1561c4efda0e | 38 | |
nameless129 | 0:1561c4efda0e | 39 | if(f_eof(&wavfil) != 0) |
nameless129 | 0:1561c4efda0e | 40 | { |
nameless129 | 0:1561c4efda0e | 41 | fWavPlaying = 0; |
nameless129 | 0:1561c4efda0e | 42 | } |
nameless129 | 0:1561c4efda0e | 43 | |
nameless129 | 0:1561c4efda0e | 44 | if(fWavPlaying == 0) |
nameless129 | 0:1561c4efda0e | 45 | { |
nameless129 | 0:1561c4efda0e | 46 | dac_on = 0; |
nameless129 | 0:1561c4efda0e | 47 | return 1; |
nameless129 | 0:1561c4efda0e | 48 | } |
nameless129 | 0:1561c4efda0e | 49 | dac_on = 1; |
nameless129 | 0:1561c4efda0e | 50 | for(j=0;j<2;j++) |
nameless129 | 0:1561c4efda0e | 51 | { |
nameless129 | 0:1561c4efda0e | 52 | if(dac_flag[j] == 0) |
nameless129 | 0:1561c4efda0e | 53 | { |
nameless129 | 0:1561c4efda0e | 54 | |
nameless129 | 0:1561c4efda0e | 55 | f_read(&wavfil,&wavReadData,sizeof(wavReadData),&wavReadByte); |
nameless129 | 0:1561c4efda0e | 56 | for(i=0;i<WAV_READ_SIZE;i++) |
nameless129 | 0:1561c4efda0e | 57 | { |
nameless129 | 0:1561c4efda0e | 58 | DACData[j][i] = wavReadData[i]+32768; |
nameless129 | 0:1561c4efda0e | 59 | } |
nameless129 | 0:1561c4efda0e | 60 | dac_flag[j] = 1; |
nameless129 | 0:1561c4efda0e | 61 | } |
nameless129 | 0:1561c4efda0e | 62 | } |
nameless129 | 0:1561c4efda0e | 63 | return 0; |
nameless129 | 0:1561c4efda0e | 64 | } |
nameless129 | 0:1561c4efda0e | 65 | |
nameless129 | 0:1561c4efda0e | 66 | void wavPlayerOnDAC::rewind(void) |
nameless129 | 0:1561c4efda0e | 67 | { |
nameless129 | 0:1561c4efda0e | 68 | f_lseek(&wavfil,0); |
nameless129 | 0:1561c4efda0e | 69 | fWavPlaying = 1; |
nameless129 | 0:1561c4efda0e | 70 | } |
nameless129 | 0:1561c4efda0e | 71 | void wavPlayerOnDAC::stop(void) |
nameless129 | 0:1561c4efda0e | 72 | { |
nameless129 | 0:1561c4efda0e | 73 | fWavPlaying = 0; |
nameless129 | 0:1561c4efda0e | 74 | } |
nameless129 | 0:1561c4efda0e | 75 | |
nameless129 | 0:1561c4efda0e | 76 | void wavPlayerOnDAC::DACOutProc(void) |
nameless129 | 0:1561c4efda0e | 77 | { |
nameless129 | 0:1561c4efda0e | 78 | if(dac_on == 1) { |
nameless129 | 0:1561c4efda0e | 79 | if(dac_flag[dac_c] == 1) |
nameless129 | 0:1561c4efda0e | 80 | { |
nameless129 | 0:1561c4efda0e | 81 | DACout.write_u16(DACData[dac_c][rp]); |
nameless129 | 0:1561c4efda0e | 82 | if( rp == WAV_READ_SIZE-1) |
nameless129 | 0:1561c4efda0e | 83 | { |
nameless129 | 0:1561c4efda0e | 84 | dac_flag[dac_c] = 0; |
nameless129 | 0:1561c4efda0e | 85 | rp = 0; |
nameless129 | 0:1561c4efda0e | 86 | dac_c = (dac_c+1)%2; |
nameless129 | 0:1561c4efda0e | 87 | } |
nameless129 | 0:1561c4efda0e | 88 | else |
nameless129 | 0:1561c4efda0e | 89 | { |
nameless129 | 0:1561c4efda0e | 90 | rp++; |
nameless129 | 0:1561c4efda0e | 91 | } |
nameless129 | 0:1561c4efda0e | 92 | } |
nameless129 | 0:1561c4efda0e | 93 | } |
nameless129 | 0:1561c4efda0e | 94 | } |
nameless129 | 0:1561c4efda0e | 95 |