aboutsummaryrefslogtreecommitdiffstats
path: root/Demos/Device/LowLevel/AudioOutput
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2009-07-28 10:49:33 +0000
committerDean Camera <dean@fourwalledcubicle.com>2009-07-28 10:49:33 +0000
commit23c1653efe58d436504c01438133c1ef7b3f8fbc (patch)
treef80080a51fc10e1f6b480c48d22856270245633d /Demos/Device/LowLevel/AudioOutput
parent61ff4824a904d156e719ab2967b613cf095e908e (diff)
downloadlufa-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/LowLevel/AudioOutput')
-rw-r--r--Demos/Device/LowLevel/AudioOutput/AudioOutput.c35
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