Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of wave_player by
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
Generated on Fri Jul 15 2022 02:10:25 by
