Music Visualizer

Dependencies:   mbed SDFileSystem NeoStrip PinDetect

Revision:
0:adce77867281
--- /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;
+};
+
+
+