A version of the mbed waveplayer, but setup for the mbed application board PWM speaker and audio out jack

Dependents:   AppBoard_Waveplayer mbed_blinky LED_effects_w_sound ECE4180Lab3_RTOS ... more

Fork of wave_player by Steve Ravet

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 /** 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);
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 
00061 private:
00062 void dac_out(void);
00063 int verbosity;
00064 AnalogOut *wave_DAC;
00065 PwmOut *wave_PWM;
00066 Ticker tick;
00067 unsigned short DAC_fifo[256];
00068 short DAC_wptr;
00069 volatile short DAC_rptr;
00070 short DAC_on;
00071 };
00072 
00073