amended wave player
Fork of wave_player_appbd by
Embed:
(wiki syntax)
Show/hide line numbers
wave_player.h
00001 #include <mbed.h> 00002 //Serial terminal(USBTX,USBRX); 00003 typedef struct uFMT_STRUCT { 00004 short comp_code; 00005 short num_channels; 00006 unsigned sample_rate; 00007 unsigned avg_Bps; 00008 short block_align; 00009 short sig_bps; 00010 } FMT_STRUCT; 00011 00012 00013 /** wave file player class. 00014 * 00015 * Example: 00016 * @code 00017 * #include <mbed.h> 00018 * #include <wave_player.h> 00019 * 00020 * AnalogOut DACout(p18); 00021 * wave_player waver(&DACout); 00022 * 00023 * int main() { 00024 * FILE *wave_file; 00025 * 00026 * printf("\n\n\nHello, wave world!\n"); 00027 * wave_file=fopen("/sd/44_8_st.wav","r"); 00028 * waver.play(wave_file); 00029 * fclose(wave_file); 00030 * } 00031 * @endcode 00032 */ 00033 class wave_player { 00034 00035 public: 00036 /** Create a wave player using a pointer to the given AnalogOut object. 00037 * 00038 * @param _dac pointer to an AnalogOut object to which the samples are sent. 00039 */ 00040 wave_player(AnalogOut *_dac, PwmOut *_pwm, unsigned short * waveArray); 00041 00042 /** the player function. 00043 * 00044 * @param wavefile A pointer to an opened wave file 00045 */ 00046 void play(FILE *wavefile); 00047 00048 /** Set the printf verbosity of the wave player. A nonzero verbosity level 00049 * will put wave_player in a mode where the complete contents of the wave 00050 * file are echoed to the screen, including header values, and including 00051 * all of the sample values placed into the DAC FIFO, and the sample values 00052 * removed from the DAC FIFO by the ISR. The sample output frequency is 00053 * fixed at 2 Hz in this mode, so it's all very slow and the DAC output isn't 00054 * very useful, but it lets you see what's going on and may help for debugging 00055 * wave files that don't play correctly. 00056 * 00057 * @param v the verbosity level 00058 */ 00059 void set_verbosity(int v); 00060 void getFIFO(unsigned short *); 00061 private: 00062 void dac_out(void); 00063 int verbosity; 00064 AnalogOut *wave_DAC; 00065 PwmOut *wave_PWM; 00066 unsigned short * wavebuf; 00067 Ticker tick; 00068 unsigned short DAC_fifo[256]; 00069 short DAC_wptr; 00070 volatile short DAC_rptr; 00071 short DAC_on; 00072 }; 00073 00074
Generated on Tue Jul 12 2022 14:29:05 by 1.7.2