Commit bbf89d81 authored by Dean Camera's avatar Dean Camera
Browse files

Make both LowLevel and ClassDriver AudioOutput demos always output to board...

Make both LowLevel and ClassDriver AudioOutput demos always output to board LEDs, regardless of output mode (removed AUDIO_OUT_LEDS compile time option from the demo). This allows for positive feedback to the user of audio activity regardless of output mode.
parent c5eeedd5
......@@ -103,10 +103,11 @@ void ProcessNextSample(void)
int8_t LeftSample_8Bit = (LeftSample_16Bit >> 8);
int8_t RightSample_8Bit = (RightSample_16Bit >> 8);
#if !defined(AUDIO_OUT_STEREO)
/* Mix the two channels together to produce a mono, 8-bit sample */
int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1);
#endif
/* Get absolute value of mixed sample value */
uint8_t MixedSample_8Bit_Abs = abs(MixedSample_8Bit);
#if defined(AUDIO_OUT_MONO)
/* Load the sample into the PWM timer channel */
......@@ -118,26 +119,23 @@ void ProcessNextSample(void)
#elif defined(AUDIO_OUT_PORTC)
/* Load the 8-bit mixed sample into PORTC */
PORTC = MixedSample_8Bit;
#else
uint8_t LEDMask = LEDS_NO_LEDS;
#endif
/* Make mixed sample value positive (absolute) */
MixedSample_8Bit = abs(MixedSample_8Bit);
uint8_t LEDMask = LEDS_NO_LEDS;
if (MixedSample_8Bit > 2)
if (MixedSample_8Bit_Abs > 2)
LEDMask |= LEDS_LED1;
if (MixedSample_8Bit > 4)
if (MixedSample_8Bit_Abs > 4)
LEDMask |= LEDS_LED2;
if (MixedSample_8Bit > 8)
if (MixedSample_8Bit_Abs > 8)
LEDMask |= LEDS_LED3;
if (MixedSample_8Bit > 16)
if (MixedSample_8Bit_Abs > 16)
LEDMask |= LEDS_LED4;
LEDs_SetAllLEDs(LEDMask);
#endif
}
}
......
......@@ -53,11 +53,11 @@
* required).
*
* On start-up the system will automatically enumerate and function
* as a USB speaker. Incoming audio will output in 8-bit PWM onto
* the timer output (timer 3 for the AT90USBXXX6/7 USB AVRs, timer 1 for
* the AT90USBXXX2 controller AVRs) compare channel A for AUDIO_OUT_MONO
* mode, on channels A and B for AUDIO_OUT_STEREO and on the board LEDs
* for AUDIO_OUT_LEDS mode. Decouple audio outputs with a capacitor and
* as a USB speaker. Outgoing audio will output in 8-bit PWM onto
* the timer 3 output compare channel A for AUDIO_OUT_MONO mode, on
* timer 3 channels A and B for AUDIO_OUT_STEREO and on PORTC as a signed
* mono sample for AUDIO_OUT_PORTC. Audio output will also be indicated on
* the board LEDs in all modes. Decouple audio outputs with a capacitor and
* attach to a speaker to hear the audio.
*
* Under Windows, if a driver request dialogue pops up, select the option
......@@ -84,11 +84,6 @@
* <td>When defined, this outputs the audio samples in mono to the timer output pin of the microcontroller.</td>
* </tr>
* <tr>
* <td>AUDIO_OUT_LEDS</td>
* <td>Makefile CDEFS</td>
* <td>When defined, this outputs the audio samples in stereo to the board LEDs.</td>
* </tr>
* <tr>
* <td>AUDIO_OUT_PORTC</td>
* <td>Makefile CDEFS</td>
* <td>When defined, this outputs the audio samples in mono to port C of the microcontroller, for connection to an
......
......@@ -210,10 +210,11 @@ void USB_Audio_Task(void)
int8_t LeftSample_8Bit = (LeftSample_16Bit >> 8);
int8_t RightSample_8Bit = (RightSample_16Bit >> 8);
#if !defined(AUDIO_OUT_STEREO)
/* Mix the two channels together to produce a mono, 8-bit sample */
int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1);
#endif
/* Get absolute value of mixed sample value */
uint8_t MixedSample_8Bit_Abs = abs(MixedSample_8Bit);
#if defined(AUDIO_OUT_MONO)
/* Load the sample into the PWM timer channel */
......@@ -225,25 +226,22 @@ void USB_Audio_Task(void)
#elif defined(AUDIO_OUT_PORTC)
/* Load the 8-bit mixed sample into PORTC */
PORTC = MixedSample_8Bit;
#else
uint8_t LEDMask = LEDS_NO_LEDS;
#endif
/* Make mixed sample value positive (absolute) */
MixedSample_8Bit = abs(MixedSample_8Bit);
uint8_t LEDMask = LEDS_NO_LEDS;
if (MixedSample_8Bit > 2)
if (MixedSample_8Bit_Abs > 2)
LEDMask |= LEDS_LED1;
if (MixedSample_8Bit > 4)
if (MixedSample_8Bit_Abs > 4)
LEDMask |= LEDS_LED2;
if (MixedSample_8Bit > 8)
if (MixedSample_8Bit_Abs > 8)
LEDMask |= LEDS_LED3;
if (MixedSample_8Bit > 16)
if (MixedSample_8Bit_Abs > 16)
LEDMask |= LEDS_LED4;
LEDs_SetAllLEDs(LEDMask);
#endif
}
}
......@@ -53,11 +53,11 @@
* required).
*
* On start-up the system will automatically enumerate and function
* as a USB speaker. Incoming audio will output in 8-bit PWM onto
* the timer output (timer 3 for the AT90USBXXX6/7 USB AVRs, timer 1 for
* the AT90USBXXX2 controller AVRs) compare channel A for AUDIO_OUT_MONO
* mode, on channels A and B for AUDIO_OUT_STEREO and on the board LEDs
* for AUDIO_OUT_LEDS mode. Decouple audio outputs with a capacitor and
* as a USB speaker. Outgoing audio will output in 8-bit PWM onto
* the timer 3 output compare channel A for AUDIO_OUT_MONO mode, on
* timer 3 channels A and B for AUDIO_OUT_STEREO and on PORTC as a signed
* mono sample for AUDIO_OUT_PORTC. Audio output will also be indicated on
* the board LEDs in all modes. Decouple audio outputs with a capacitor and
* attach to a speaker to hear the audio.
*
* Under Windows, if a driver request dialogue pops up, select the option
......@@ -84,11 +84,6 @@
* <td>When defined, this outputs the audio samples in mono to the timer output pin of the microcontroller.</td>
* </tr>
* <tr>
* <td>AUDIO_OUT_LEDS</td>
* <td>Makefile CDEFS</td>
* <td>When defined, this outputs the audio samples in stereo to the board LEDs.</td>
* </tr>
* <tr>
* <td>AUDIO_OUT_PORTC</td>
* <td>Makefile CDEFS</td>
* <td>When defined, this outputs the audio samples in mono to port C of the microcontroller, for connection to an
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment