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