|
-
-
- #include <Arduino.h>
- #include "effect_midside.h"
-
- void AudioEffectMidSide::update(void)
- {
- audio_block_t *blocka, *blockb;
-
- uint32_t *pa, *pb, *end;
- uint32_t a12, a34;
- uint32_t b12, b34;
-
- blocka = receiveWritable(0);
- blockb = receiveWritable(1);
- if (!blocka || !blockb) {
- if (blocka) release(blocka);
- if (blockb) release(blockb);
- return;
- }
- #if defined(__ARM_ARCH_7EM__)
- pa = (uint32_t *)(blocka->data);
- pb = (uint32_t *)(blockb->data);
- end = pa + AUDIO_BLOCK_SAMPLES/2;
-
- if (encoding) {
- while (pa < end) {
-
-
-
-
- a12 = signed_halving_add_16_and_16(*pa, *pb);
- a34 = signed_halving_add_16_and_16(*(pa+1), *(pb+1));
- b12 = signed_halving_subtract_16_and_16(*pa, *pb);
- b34 = signed_halving_subtract_16_and_16(*(pa+1), *(pb+1));
- *pa++ = a12;
- *pa++ = a34;
- *pb++ = b12;
- *pb++ = b34;
- }
- } else {
- while (pa < end) {
-
-
-
-
-
-
-
-
-
-
-
-
- a12 = signed_add_16_and_16(*pa, *pb);
- a34 = signed_add_16_and_16(*(pa+1), *(pb+1));
- b12 = signed_subtract_16_and_16(*pa, *pb);
- b34 = signed_subtract_16_and_16(*(pa+1), *(pb+1));
- *pa++ = a12;
- *pa++ = a34;
- *pb++ = b12;
- *pb++ = b34;
- }
- }
- transmit(blocka, 0);
- transmit(blockb, 1);
- #endif
- release(blocka);
- release(blockb);
- }
|