microSDカードからWaveファイルを再生するサンプルです。

Dependencies:   mbed FATFileSystem

Fork of JBB_WavePlayer_test by Jksoft Blue mbed Board Developer

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, DigitalOut *_amp_enable);
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 void set_s_stop(void);
00062 
00063 private:
00064 void dac_out(void);
00065 int verbosity;
00066 AnalogOut *wave_DAC;
00067 DigitalOut *Amp_Enable;
00068 Ticker tick;
00069 unsigned short DAC_fifo[256];
00070 short DAC_wptr;
00071 volatile short DAC_rptr;
00072 short DAC_on;
00073 int sound_stop;
00074 int play_count;
00075 };
00076 
00077