You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.6 KiB
59 lines
1.6 KiB
3 years ago
|
/* AudioTestPeakRMS.ino Bob Larkin 2 May 2020
|
||
|
*
|
||
|
* Generates sine wave and measures RMS, Peak and Peak
|
||
|
* to Peak values.
|
||
|
* NOTE: This is for the floating point _F32 versions of
|
||
|
* AnalyzePeak and AnalyzeRMS *NOT* the Teensy Audio Library
|
||
|
* versions with 16-bit Fixed point data blocks.
|
||
|
*/
|
||
|
|
||
|
#include "Audio.h"
|
||
|
#include <OpenAudio_ArduinoLibrary.h>
|
||
|
#include "analyze_peak_f32.h"
|
||
|
#include "analyze_rms_f32.h"
|
||
|
|
||
|
AudioInputI2S i2s1;
|
||
|
AudioSynthWaveformSine_F32 sine1;
|
||
|
AudioAnalyzeRMS_F32 rms1;
|
||
|
AudioAnalyzePeak_F32 peak1;
|
||
|
AudioConnection_F32 patchCord1(sine1, 0, rms1, 0);
|
||
|
AudioConnection_F32 patchCord2(sine1, 0, peak1, 0);
|
||
|
|
||
|
uint16_t n = 0;
|
||
|
|
||
|
void setup(void) {
|
||
|
AudioMemory(5); //allocate Int16 audio data blocks
|
||
|
AudioMemory_F32(5); //allocate Float32 audio data blocks
|
||
|
Serial.begin(300); delay(1000);
|
||
|
|
||
|
// Default amlitude +/- 1.0
|
||
|
sine1.frequency(1000.0);
|
||
|
|
||
|
// Set next to 0 to suppress print errors in update()
|
||
|
rms1.showError(1);
|
||
|
peak1.showError(1);
|
||
|
}
|
||
|
|
||
|
void loop(void) {
|
||
|
if (n & 1) {
|
||
|
while(!rms1.available() ) ; //Wait
|
||
|
Serial.print("RMS value = ");
|
||
|
Serial.println(rms1.read(), 7 );
|
||
|
while(!peak1.available() ) ; //Wait
|
||
|
Serial.print("Peak value = ");
|
||
|
Serial.println(peak1.read(), 7 );
|
||
|
}
|
||
|
else {
|
||
|
while(!rms1.available() ) ; //Wait
|
||
|
Serial.print("RMS value = ");
|
||
|
Serial.println(rms1.read(), 7 );
|
||
|
while(!peak1.available() ) ; //Wait
|
||
|
Serial.print("Peak to peak value = ");
|
||
|
Serial.println(peak1.readPeakToPeak(), 7 );
|
||
|
}
|
||
|
n++;
|
||
|
// The RMS and Peak data collection runs during
|
||
|
// delay() because of hardware interrupts
|
||
|
delay(1000);
|
||
|
}
|