fixed updateCoefs(..) for other than set 0 coefficientsdds
| @@ -48,6 +48,7 @@ | |||
| #include "analyze_fft256.h" | |||
| #include "analyze_print.h" | |||
| #include "analyze_tonedetect.h" | |||
| #include "analyze_peakdetect.h" | |||
| #include "control_sgtl5000.h" | |||
| #include "control_wm8731.h" | |||
| #include "effect_chorus.h" | |||
| @@ -0,0 +1,72 @@ | |||
| /* Audio Library for Teensy 3.X | |||
| * Copyright (c) 2014, Paul Stoffregen, paul@pjrc.com | |||
| * | |||
| * Development of this audio library was funded by PJRC.COM, LLC by sales of | |||
| * Teensy and Audio Adaptor boards. Please support PJRC's efforts to develop | |||
| * open source software by purchasing Teensy or other PJRC products. | |||
| * | |||
| * 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, development funding 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 "analyze_peakdetect.h" | |||
| // #define PEAKREPORTVERBS | |||
| void AudioPeak::update(void) | |||
| { | |||
| audio_block_t *block; | |||
| const int16_t *p, *end; | |||
| block = receiveReadOnly(); | |||
| if (!block) { | |||
| #ifdef PEAKREPORTVERBS | |||
| Serial.println("AudioPeak !block"); | |||
| #endif | |||
| return; | |||
| } | |||
| if (!m_enabled) { | |||
| release(block); | |||
| return; | |||
| } | |||
| p = block->data; | |||
| end = p + AUDIO_BLOCK_SAMPLES; | |||
| do { | |||
| int16_t d=*p++; | |||
| if(d<min) min=d; | |||
| if(d>max) max=d; | |||
| } while (p < end); | |||
| #ifdef PEAKREPORTVERBS | |||
| Serial.println("AudioPeak ran"); | |||
| #endif | |||
| release(block); | |||
| } | |||
| void AudioPeak::begin(bool noReset) | |||
| { | |||
| if(!noReset) | |||
| { | |||
| min=0; | |||
| max=0; | |||
| } | |||
| m_enabled=true; | |||
| } | |||
| uint16_t AudioPeak::Dpp(void) | |||
| { | |||
| return max-min; | |||
| } | |||
| @@ -0,0 +1,50 @@ | |||
| /* Audio Library for Teensy 3.X | |||
| * Copyright (c) 2014, Paul Stoffregen, paul@pjrc.com | |||
| * | |||
| * Development of this audio library was funded by PJRC.COM, LLC by sales of | |||
| * Teensy and Audio Adaptor boards. Please support PJRC's efforts to develop | |||
| * open source software by purchasing Teensy or other PJRC products. | |||
| * | |||
| * 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, development funding 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 analyze_peakdetect_h_ | |||
| #define analyze_peakdetect_h_ | |||
| #include "AudioStream.h" | |||
| class AudioPeak : public AudioStream | |||
| { | |||
| public: | |||
| AudioPeak(void) : AudioStream(1, inputQueueArray) { } | |||
| virtual void update(void); | |||
| void begin(bool noReset); | |||
| void begin(void) { begin(false); } | |||
| void stop(void) { m_enabled=false; } | |||
| uint16_t Dpp(void); | |||
| private: | |||
| audio_block_t *inputQueueArray[1]; | |||
| bool m_enabled; | |||
| int16_t max; | |||
| int16_t min; | |||
| }; | |||
| #endif | |||
| @@ -36,8 +36,7 @@ void AudioFilterBiquad::update(void) | |||
| int32_t *state; | |||
| block = receiveWritable(); | |||
| if (!block) return; | |||
| data = (uint32_t *)(block->data); | |||
| end = data + AUDIO_BLOCK_SAMPLES/2; | |||
| end = (uint32_t *)(block->data) + AUDIO_BLOCK_SAMPLES/2; | |||
| state = (int32_t *)definition; | |||
| do { | |||
| a0 = *state++; | |||
| @@ -48,6 +47,7 @@ void AudioFilterBiquad::update(void) | |||
| aprev = *state++; | |||
| bprev = *state++; | |||
| sum = *state & 0x3FFF; | |||
| data = end - AUDIO_BLOCK_SAMPLES/2; | |||
| do { | |||
| in2 = *data; | |||
| sum = signed_multiply_accumulate_32x16b(sum, a0, in2); | |||
| @@ -72,7 +72,6 @@ void AudioFilterBiquad::update(void) | |||
| *state++ = sum | flag; | |||
| *(state-2) = bprev; | |||
| *(state-3) = aprev; | |||
| data = (uint32_t *)(block->data); // needs to be reset, may as well be done here | |||
| } while (flag); | |||
| transmit(block); | |||
| release(block); | |||
| @@ -84,7 +83,7 @@ void AudioFilterBiquad::updateCoefs(uint8_t set,int *source, bool doReset) | |||
| while(set) | |||
| { | |||
| *dest+=7; | |||
| if(!(*dest&0x80000000)) return; | |||
| if(!(*dest)&0x80000000) return; | |||
| *dest++; | |||
| set--; | |||
| } | |||