Music Visualizer
Dependencies: mbed SDFileSystem NeoStrip PinDetect
Diff: wave_player/wave_player.h
- Revision:
- 0:adce77867281
diff -r 000000000000 -r adce77867281 wave_player/wave_player.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wave_player/wave_player.h Thu Apr 30 01:45:25 2020 +0000 @@ -0,0 +1,86 @@ +#include <mbed.h> + +typedef struct uFMT_STRUCT { + short comp_code; + short num_channels; + unsigned sample_rate; + unsigned avg_Bps; + short block_align; + short sig_bps; +} FMT_STRUCT; + + +/** wave file player class. + * + * Example: + * @code + * #include <mbed.h> + * #include <wave_player.h> + * + * AnalogOut DACout(p18); + * wave_player waver(&DACout); + * + * int main() { + * FILE *wave_file; + * + * printf("\n\n\nHello, wave world!\n"); + * wave_file=fopen("/sd/44_8_st.wav","r"); + * waver.play(wave_file); + * fclose(wave_file); + * } + * @endcode + */ +class wave_player { + +public: +/** Create a wave player using a pointer to the given AnalogOut object. + * + * @param _dac pointer to an AnalogOut object to which the samples are sent. + */ +wave_player(AnalogOut *_dac); + +/** the player function. + * + * @param wavefile A pointer to an opened wave file + */ +void play(FILE *wavefile); + +/** Set the printf verbosity of the wave player. A nonzero verbosity level + * will put wave_player in a mode where the complete contents of the wave + * file are echoed to the screen, including header values, and including + * all of the sample values placed into the DAC FIFO, and the sample values + * removed from the DAC FIFO by the ISR. The sample output frequency is + * fixed at 2 Hz in this mode, so it's all very slow and the DAC output isn't + * very useful, but it lets you see what's going on and may help for debugging + * wave files that don't play correctly. + * + * @param v the verbosity level + */ +void set_verbosity(int v); + +/** + * Changes the playing state of the wave player + * 0 = stop playiny (ends wave player) + * 1 = continues playing the song + * 2 = pauses the song + */ +void set_play_state(int p); +int get_play_state(); + +public: +void dac_out(void); +int verbosity; +AnalogOut *wave_DAC; +Ticker tick; +unsigned short DAC_fifo[256]; +unsigned short DAC_fifo2[256]; +short DAC_wptr; +volatile short DAC_rptr; +short DAC_on; +int play_state; + +short unsigned dac_data; +}; + + +