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--; | ||||
} | } |