fixed updateCoefs(..) for other than set 0 coefficientsdds
| #include "analyze_fft256.h" | #include "analyze_fft256.h" | ||||
| #include "analyze_print.h" | #include "analyze_print.h" | ||||
| #include "analyze_tonedetect.h" | #include "analyze_tonedetect.h" | ||||
| #include "analyze_peakdetect.h" | |||||
| #include "control_sgtl5000.h" | #include "control_sgtl5000.h" | ||||
| #include "control_wm8731.h" | #include "control_wm8731.h" | ||||
| #include "effect_chorus.h" | #include "effect_chorus.h" |
| /* 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; | |||||
| } | |||||
| /* 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 |
| int32_t *state; | int32_t *state; | ||||
| block = receiveWritable(); | block = receiveWritable(); | ||||
| if (!block) return; | 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; | state = (int32_t *)definition; | ||||
| do { | do { | ||||
| a0 = *state++; | a0 = *state++; | ||||
| aprev = *state++; | aprev = *state++; | ||||
| bprev = *state++; | bprev = *state++; | ||||
| sum = *state & 0x3FFF; | sum = *state & 0x3FFF; | ||||
| data = end - AUDIO_BLOCK_SAMPLES/2; | |||||
| do { | do { | ||||
| in2 = *data; | in2 = *data; | ||||
| sum = signed_multiply_accumulate_32x16b(sum, a0, in2); | sum = signed_multiply_accumulate_32x16b(sum, a0, in2); | ||||
| *state++ = sum | flag; | *state++ = sum | flag; | ||||
| *(state-2) = bprev; | *(state-2) = bprev; | ||||
| *(state-3) = aprev; | *(state-3) = aprev; | ||||
| data = (uint32_t *)(block->data); // needs to be reset, may as well be done here | |||||
| } while (flag); | } while (flag); | ||||
| transmit(block); | transmit(block); | ||||
| release(block); | release(block); | ||||
| while(set) | while(set) | ||||
| { | { | ||||
| *dest+=7; | *dest+=7; | ||||
| if(!(*dest&0x80000000)) return; | |||||
| if(!(*dest)&0x80000000) return; | |||||
| *dest++; | *dest++; | ||||
| set--; | set--; | ||||
| } | } |