|
PortAudio
2.0
|
#include "biquad_filter.h"Go to the source code of this file.
Data Structures | |
| struct | PaQaSineGenerator_s |
| struct | PaQaRecording_s |
| struct | PaQaTestTone_s |
| struct | PaQaAnalysisResult_s |
Macros | |
| #define | MATH_PI (3.141592653589793238462643) |
| #define | MATH_TWO_PI (2.0 * MATH_PI) |
Typedefs | |
| typedef struct PaQaSineGenerator_s | PaQaSineGenerator |
| typedef struct PaQaRecording_s | PaQaRecording |
| typedef struct PaQaTestTone_s | PaQaTestTone |
| typedef struct PaQaAnalysisResult_s | PaQaAnalysisResult |
Functions | |
| double | PaQa_GetNthFrequency (double baseFrequency, int index) |
| void | PaQa_EraseBuffer (float *buffer, int numFrames, int samplesPerFrame) |
| void | PaQa_MixSine (PaQaSineGenerator *generator, float *buffer, int numSamples, int stride) |
| void | PaQa_WriteSine (float *buffer, int numSamples, int stride, double frequency, double amplitude) |
| void | PaQa_GenerateCrack (float *buffer, int numSamples, int stride) |
| double | PaQa_ComputePhaseDifference (double phase1, double phase2) |
| double | PaQa_MeasureArea (float *buffer, int numFrames, int stride) |
| double | PaQa_MeasureCrossingSlope (float *buffer, int numFrames) |
| void | PaQa_SetupSineGenerator (PaQaSineGenerator *generator, double frequency, double amplitude, double frameRate) |
| int | PaQa_InitializeRecording (PaQaRecording *recording, int maxSamples, int sampleRate) |
| void | PaQa_TerminateRecording (PaQaRecording *recording) |
| void | PaQa_FilterRecording (PaQaRecording *input, PaQaRecording *output, BiquadFilter *filter) |
| int | PaQa_SaveRecordingToWaveFile (PaQaRecording *recording, const char *filename) |
| int | PaQa_WriteRecording (PaQaRecording *recording, float *buffer, int numSamples, int stride) |
| int | PaQa_WriteSilence (PaQaRecording *recording, int numSamples) |
| int | PaQa_RecordFreeze (PaQaRecording *recording, int numSamples) |
| double | PaQa_CorrelateSine (PaQaRecording *recording, double frequency, double frameRate, int startFrame, int numSamples, double *phasePtr) |
| double | PaQa_FindFirstMatch (PaQaRecording *recording, float *buffer, int numSamples, double tolerance) |
| double | PaQa_MeasureSineAmplitudeBySlope (PaQaRecording *recording, double frequency, double frameRate, int startFrame, int numFrames) |
| double | PaQa_MeasureRootMeanSquare (float *buffer, int numFrames) |
| double | PaQa_CompareAmplitudes (PaQaRecording *recording, int startAt, float *buffer, int numSamples) |
| int | PaQa_AnalyseRecording (PaQaRecording *recording, PaQaTestTone *testTone, PaQaAnalysisResult *analysisResult) |
| #define MATH_PI (3.141592653589793238462643) |
Referenced by PaQa_ComputePhaseDifference(), PaQa_CorrelateSine(), PaQa_FadeInRecording(), and PaQa_SetupSineGenerator().
| #define MATH_TWO_PI (2.0 * MATH_PI) |
| typedef struct PaQaAnalysisResult_s PaQaAnalysisResult |
| typedef struct PaQaRecording_s PaQaRecording |
Container for a monophonic audio sample in memory.
| typedef struct PaQaSineGenerator_s PaQaSineGenerator |
| typedef struct PaQaTestTone_s PaQaTestTone |
| int PaQa_AnalyseRecording | ( | PaQaRecording * | recording, |
| PaQaTestTone * | testTone, | ||
| PaQaAnalysisResult * | analysisResult | ||
| ) |
Analyse a recording of a sine wave. Measure latency and look for dropped frames, etc.
References PaQaAnalysisResult_s::amplitudeRatio, PaQaAnalysisResult_s::latency, PaQa_DetectPhaseError(), PaQa_DetectPop(), PaQa_MeasureLatency(), QA_ASSERT_EQUALS, and PaQaAnalysisResult_s::valid.
| double PaQa_CompareAmplitudes | ( | PaQaRecording * | recording, |
| int | startAt, | ||
| float * | buffer, | ||
| int | numSamples | ||
| ) |
Compare the amplitudes of these two signals. Return ratio of recorded signal over buffer signal.
References PaQaRecording_s::buffer, PaQaRecording_s::numFrames, PaQa_MeasureArea(), and QA_ASSERT_TRUE.
Referenced by PaQa_MeasureLatency().
| double PaQa_ComputePhaseDifference | ( | double | phase1, |
| double | phase2 | ||
| ) |
References MATH_PI, and MATH_TWO_PI.
Referenced by PaQa_DetectPhaseError().
| double PaQa_CorrelateSine | ( | PaQaRecording * | recording, |
| double | frequency, | ||
| double | frameRate, | ||
| int | startFrame, | ||
| int | numSamples, | ||
| double * | phasePtr | ||
| ) |
References PaQaRecording_s::buffer, MATH_PI, MATH_TWO_PI, PaQaRecording_s::numFrames, and QA_ASSERT_TRUE.
Referenced by PaQa_CheckForLoopBack(), and PaQa_DetectPhaseError().
| void PaQa_EraseBuffer | ( | float * | buffer, |
| int | numFrames, | ||
| int | samplesPerFrame | ||
| ) |
Referenced by PaQa_FillWithSine(), and PaQa_MeasureLatency().
| void PaQa_FilterRecording | ( | PaQaRecording * | input, |
| PaQaRecording * | output, | ||
| BiquadFilter * | filter | ||
| ) |
Apply a biquad filter to the audio from the input recording and write it to the output recording.
References BiquadFilter_Filter(), PaQaRecording_s::buffer, PaQaRecording_s::maxFrames, and PaQaRecording_s::numFrames.
Referenced by PaQa_DetectPop().
| double PaQa_FindFirstMatch | ( | PaQaRecording * | recording, |
| float * | buffer, | ||
| int | numFrames, | ||
| double | threshold | ||
| ) |
Scan until we get a correlation of a single that goes over the tolerance level, peaks then drops to half the peak. Look for inverse correlation as well.
References PaQaRecording_s::buffer, PaQaRecording_s::numFrames, and QA_ASSERT_TRUE.
Referenced by PaQa_MeasureLatency().
| void PaQa_GenerateCrack | ( | float * | buffer, |
| int | numSamples, | ||
| int | stride | ||
| ) |
Generate a signal with a sharp edge in the middle that can be recognized despite some phase shift.
| double PaQa_GetNthFrequency | ( | double | baseFrequency, |
| int | index | ||
| ) |
Calculate Nth frequency of a series for use in testing multiple channels. Series should avoid harmonic overlap between channels.
| int PaQa_InitializeRecording | ( | PaQaRecording * | recording, |
| int | maxSamples, | ||
| int | sampleRate | ||
| ) |
Allocate memory for containg a mono audio signal. Set up recording for writing.
References PaQaRecording_s::buffer, PaQaRecording_s::maxFrames, PaQaRecording_s::numFrames, QA_ASSERT_TRUE, and PaQaRecording_s::sampleRate.
Referenced by PaQa_DetectPop().
| double PaQa_MeasureArea | ( | float * | buffer, |
| int | numFrames, | ||
| int | stride | ||
| ) |
Measure the area under the curve by summing absolute value of each value.
Referenced by PaQa_CompareAmplitudes().
| double PaQa_MeasureCrossingSlope | ( | float * | buffer, |
| int | numFrames | ||
| ) |
Measure slope of the positive zero crossings.
Referenced by PaQa_MeasureSineAmplitudeBySlope().
| double PaQa_MeasureRootMeanSquare | ( | float * | buffer, |
| int | numFrames | ||
| ) |
Referenced by PaQa_MeasureBackgroundNoise().
| double PaQa_MeasureSineAmplitudeBySlope | ( | PaQaRecording * | recording, |
| double | frequency, | ||
| double | frameRate, | ||
| int | startFrame, | ||
| int | numFrames | ||
| ) |
Estimate the original amplitude of a clipped sine wave by measuring its average slope at the zero crossings.
References buffer, PaQaRecording_s::buffer, MATH_TWO_PI, and PaQa_MeasureCrossingSlope().
Referenced by PaQa_CheckForClippedLoopback().
| void PaQa_MixSine | ( | PaQaSineGenerator * | generator, |
| float * | buffer, | ||
| int | numSamples, | ||
| int | stride | ||
| ) |
References PaQaSineGenerator_s::amplitude, MATH_TWO_PI, PaQaSineGenerator_s::phase, and PaQaSineGenerator_s::phaseIncrement.
Referenced by PaQa_FillWithSine(), and PaQa_MeasureLatency().
| int PaQa_RecordFreeze | ( | PaQaRecording * | recording, |
| int | numSamples | ||
| ) |
References PaQaRecording_s::buffer, PaQaRecording_s::maxFrames, and PaQaRecording_s::numFrames.
| int PaQa_SaveRecordingToWaveFile | ( | PaQaRecording * | recording, |
| const char * | filename | ||
| ) |
Write recording to WAV file.
References Audio_WAV_CloseWriter(), Audio_WAV_OpenWriter(), Audio_WAV_WriteShorts(), buffer, PaQaRecording_s::buffer, NUM_SAMPLES, PaQaRecording_s::numFrames, and PaQaRecording_s::sampleRate.
| void PaQa_SetupSineGenerator | ( | PaQaSineGenerator * | generator, |
| double | frequency, | ||
| double | amplitude, | ||
| double | frameRate | ||
| ) |
Prepare an oscillator that can generate a sine tone for testing.
References PaQaSineGenerator_s::amplitude, PaQaSineGenerator_s::frequency, MATH_PI, PaQaSineGenerator_s::phase, and PaQaSineGenerator_s::phaseIncrement.
Referenced by PaQa_FillWithSine(), and PaQa_MeasureLatency().
| void PaQa_TerminateRecording | ( | PaQaRecording * | recording | ) |
Free memory allocated by PaQa_InitializeRecording.
References PaQaRecording_s::buffer, and PaQaRecording_s::maxFrames.
Referenced by PaQa_DetectPop().
| int PaQa_WriteRecording | ( | PaQaRecording * | recording, |
| float * | buffer, | ||
| int | numSamples, | ||
| int | stride | ||
| ) |
| stride | is the spacing of samples to skip in the input buffer. To use every samples pass 1. To use every other sample pass 2. |
References buffer, PaQaRecording_s::buffer, PaQaRecording_s::maxFrames, and PaQaRecording_s::numFrames.
Referenced by PaQa_FillWithSine().
| int PaQa_WriteSilence | ( | PaQaRecording * | recording, |
| int | numSamples | ||
| ) |
Write zeros into a recording.
References PaQaRecording_s::buffer, PaQaRecording_s::maxFrames, and PaQaRecording_s::numFrames.
| void PaQa_WriteSine | ( | float * | buffer, |
| int | numSamples, | ||
| int | stride, | ||
| double | frequency, | ||
| double | amplitude | ||
| ) |
1.8.5