diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2009-07-28 10:49:33 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2009-07-28 10:49:33 +0000 |
commit | 23c1653efe58d436504c01438133c1ef7b3f8fbc (patch) | |
tree | f80080a51fc10e1f6b480c48d22856270245633d /Demos/Device | |
parent | 61ff4824a904d156e719ab2967b613cf095e908e (diff) | |
download | lufa-23c1653efe58d436504c01438133c1ef7b3f8fbc.tar.gz lufa-23c1653efe58d436504c01438133c1ef7b3f8fbc.tar.bz2 lufa-23c1653efe58d436504c01438133c1ef7b3f8fbc.zip |
Make LowLevel AudioOutput demo work in the same way as the ClassDriver AudioOutput demo for LEDs output.
Diffstat (limited to 'Demos/Device')
-rw-r--r-- | Demos/Device/LowLevel/AudioOutput/AudioOutput.c | 35 |
1 files changed, 12 insertions, 23 deletions
diff --git a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c index 9b2bb3991..2b2cdcbbf 100644 --- a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c +++ b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c @@ -210,10 +210,10 @@ void USB_Audio_Task(void) int8_t LeftSample_8Bit = (LeftSample_16Bit >> 8);
int8_t RightSample_8Bit = (RightSample_16Bit >> 8);
-#if defined(AUDIO_OUT_MONO)
/* 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);
+#if defined(AUDIO_OUT_MONO)
/* Load the sample into the PWM timer channel */
OCR3A = ((uint8_t)MixedSample_8Bit ^ (1 << 7));
#elif defined(AUDIO_OUT_STEREO)
@@ -221,36 +221,25 @@ void USB_Audio_Task(void) OCR3A = ((uint8_t)LeftSample_8Bit ^ (1 << 7));
OCR3B = ((uint8_t)RightSample_8Bit ^ (1 << 7));
#elif defined(AUDIO_OUT_PORTC)
- /* 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);
-
+ /* Load the 8-bit mixed sample into PORTC */
PORTC = MixedSample_8Bit;
#else
uint8_t LEDMask = LEDS_NO_LEDS;
- /* Make left channel positive (absolute) */
- if (LeftSample_8Bit < 0)
- LeftSample_8Bit = -LeftSample_8Bit;
-
- /* Make right channel positive (absolute) */
- if (RightSample_8Bit < 0)
- RightSample_8Bit = -RightSample_8Bit;
+ /* Make mixed sample value positive (absolute) */
+ MixedSample_8Bit = abs(MixedSample_8Bit);
- /* Set first LED based on sample value */
- if (LeftSample_8Bit < ((128 / 8) * 1))
- LEDMask |= LEDS_LED2;
- else if (LeftSample_8Bit < ((128 / 8) * 3))
- LEDMask |= (LEDS_LED1 | LEDS_LED2);
- else
+ if (MixedSample_8Bit > ((128 / 8) * 1))
LEDMask |= LEDS_LED1;
+
+ if (MixedSample_8Bit > ((128 / 8) * 2))
+ LEDMask |= LEDS_LED2;
+
+ if (MixedSample_8Bit > ((128 / 8) * 3))
+ LEDMask |= LEDS_LED3;
- /* Set second LED based on sample value */
- if (RightSample_8Bit < ((128 / 8) * 1))
+ if (MixedSample_8Bit > ((128 / 8) * 4))
LEDMask |= LEDS_LED4;
- else if (RightSample_8Bit < ((128 / 8) * 3))
- LEDMask |= (LEDS_LED3 | LEDS_LED4);
- else
- LEDMask |= LEDS_LED3;
LEDs_SetAllLEDs(LEDMask);
#endif
|