hw

Dependents:   wave_player_mp3 4180_lab2_part9 4180_Lab3_rtos_basic PianoTiles

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers wave_player.h Source File

wave_player.h

00001 #include <mbed.h>
00002 
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 int* getVolumeMod();
00037 /** Create a wave player using a pointer to the given AnalogOut object.
00038  *
00039  * @param _dac pointer to an AnalogOut object to which the samples are sent.
00040  */
00041 wave_player(AnalogOut *_dac);
00042 
00043 /** the player function.
00044  *
00045  * @param wavefile  A pointer to an opened wave file
00046  */
00047 void play(FILE *wavefile,bool *ptr);
00048 
00049 /** Set the printf verbosity of the wave player.  A nonzero verbosity level
00050  * will put wave_player in a mode where the complete contents of the wave
00051  * file are echoed to the screen, including header values, and including
00052  * all of the sample values placed into the DAC FIFO, and the sample values
00053  * removed from the DAC FIFO by the ISR.  The sample output frequency is
00054  * fixed at 2 Hz in this mode, so it's all very slow and the DAC output isn't
00055  * very useful, but it lets you see what's going on and may help for debugging
00056  * wave files that don't play correctly.
00057  *
00058  * @param v the verbosity level
00059  */
00060 void set_verbosity(int v);
00061 
00062 private:
00063 int  volumeMod;
00064 void dac_out(void);
00065 int verbosity;
00066 AnalogOut *wave_DAC;
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