diff --git a/effect_modulated_delay.cpp b/effect_modulated_delay.cpp index afb3697..94195a4 100644 --- a/effect_modulated_delay.cpp +++ b/effect_modulated_delay.cpp @@ -1,4 +1,4 @@ -/* Audio Library for Teensy 3.X +/* Copyright (c) 2014, Pete (El Supremo) Copyright (c) 2019, Holger Wirtz diff --git a/effect_modulated_delay.h b/effect_modulated_delay.h index 85ed2a8..00eda8b 100644 --- a/effect_modulated_delay.h +++ b/effect_modulated_delay.h @@ -1,4 +1,4 @@ -/* Audio Library for Teensy 3.X +/* Copyright (c) 2014, Pete (El Supremo) Copyright (c) 2019, Holger Wirtz diff --git a/effect_stereo_mono.cpp b/effect_stereo_mono.cpp index 8eb9067..119142e 100644 --- a/effect_stereo_mono.cpp +++ b/effect_stereo_mono.cpp @@ -1,4 +1,4 @@ -/* Audio Library for Teensy 3.X +/* Copyright (c) 2019, Holger Wirtz Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/effect_stereo_mono.h b/effect_stereo_mono.h index f9b39f9..059e59e 100644 --- a/effect_stereo_mono.h +++ b/effect_stereo_mono.h @@ -1,4 +1,4 @@ -/* Audio Library for Teensy 3.X +/* Copyright (c) 2019, Holger Wirtz Permission is hereby granted, free of charge, to any person obtaining a copy @@ -27,7 +27,7 @@ #include "AudioStream.h" /*************************************************************************/ -// A u d i o E f f e c t M o d u l a t e d D e l a y +// A u d i o E f f e c t S t e r e o M o n o // Written by Holger Wirtz // 20191023 - inital version diff --git a/mono2stereo.cpp b/mono2stereo.cpp new file mode 100644 index 0000000..41b18e9 --- /dev/null +++ b/mono2stereo.cpp @@ -0,0 +1,69 @@ +/* + Copyright (c) 2019, Holger Wirtz + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#include +#include +#include "mono2stereo.h" + +/*************************************************************************/ +// A u d i o E f f e c t M o n o 2 S t e r e o +// Written by Holger Wirtz +// 20191122 - inital version + +void Mono2Stereo::update(void) +{ + audio_block_t *in; + audio_block_t *out[2]; + + in = receiveReadOnly(0); + out[0] = allocate(); + out[1] = allocate(); + + if (in && out[0] && out[1]) + { + int16_t *ip = in->data; + int16_t *op[2] = { out[0]->data, out[1]->data }; + float f_l = _pseudo_log * sinf(_pan * PI / 2); // _Pan [L0.0 ... M0.5 ... 1.0R] + float f_r = _pseudo_log * cosf(_pan * PI / 2); + + for (uint16_t i = 0; i < AUDIO_BLOCK_SAMPLES; i++) + { + *op[0] = int16_t(f_l * (*ip)); + *op[1] = int16_t(f_r * (*ip++)); + op[0]++; + op[1]++; + } + + if (in) + { + release(in); + } + for (uint8_t i = 0; i < 2; i++) + { + if (out[i]) + { + transmit(out[i], i); + release(out[i]); + } + } + } +} diff --git a/mono2stereo.h b/mono2stereo.h new file mode 100644 index 0000000..fd2ba97 --- /dev/null +++ b/mono2stereo.h @@ -0,0 +1,52 @@ +/* + Copyright (c) 2019, Holger Wirtz + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#ifndef mono2stereo_h_ +#define mono2stereo_h_ + +#include "Arduino.h" +#include "AudioStream.h" + +/*************************************************************************/ +// A u d i o E f f e c t M o n o 2 S t e r e o +// Written by Holger Wirtz +// 20191122 - inital version + +class Mono2Stereo : public AudioStream +{ + public: + Mono2Stereo(void): + AudioStream(1, inputQueueArray) + { + _pan = 0.5; + } + + virtual void update(void); + + private: + audio_block_t *inputQueueArray[4]; + audio_block_t *out[2]; + const float _pseudo_log = 1048575 / (float)(1 << 20); + float _pan; +}; + +#endif