Generate Pink Noise using Gardner method. More...
#include <stdio.h>
#include <math.h>
#include "portaudio.h"
Data Structures | |
struct | PinkNoise |
struct | paTestData |
Defines | |
#define | PINK_MAX_RANDOM_ROWS (30) |
#define | PINK_RANDOM_BITS (24) |
#define | PINK_RANDOM_SHIFT ((sizeof(long)*8)-PINK_RANDOM_BITS) |
#define | PINK_MEASURE |
#define | PINK_TEST |
Functions | |
void | InitializePinkNoise (PinkNoise *pink, int numRows) |
float | GeneratePinkNoise (PinkNoise *pink) |
int | main (void) |
Variables | |
float | pinkMax = -999.0 |
float | pinkMin = 999.0 |
Generate Pink Noise using Gardner method.
Optimization suggested by James McCartney uses a tree to select which random value to replace.
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
Tree is generated by counting trailing zeros in an increasing index. When the index is zero, no random number is selected.
#define PINK_MAX_RANDOM_ROWS (30) |
#define PINK_MEASURE |
#define PINK_RANDOM_BITS (24) |
Referenced by InitializePinkNoise().
#define PINK_RANDOM_SHIFT ((sizeof(long)*8)-PINK_RANDOM_BITS) |
Referenced by GeneratePinkNoise().
#define PINK_TEST |
float GeneratePinkNoise | ( | PinkNoise * | pink | ) |
References PinkNoise::pink_Index, PinkNoise::pink_IndexMask, PINK_RANDOM_SHIFT, PinkNoise::pink_Rows, PinkNoise::pink_RunningSum, PinkNoise::pink_Scalar, pinkMax, and pinkMin.
Referenced by main().
void InitializePinkNoise | ( | PinkNoise * | pink, | |
int | numRows | |||
) |
References PinkNoise::pink_Index, PinkNoise::pink_IndexMask, PINK_RANDOM_BITS, PinkNoise::pink_Rows, PinkNoise::pink_RunningSum, and PinkNoise::pink_Scalar.
Referenced by main().
int main | ( | void | ) |
References PaStreamParameters::channelCount, PaDeviceInfo::defaultLowOutputLatency, PaStreamParameters::device, GeneratePinkNoise(), PaStreamParameters::hostApiSpecificStreamInfo, InitializePinkNoise(), paTestData::leftPink, Pa_CloseStream(), Pa_GetDefaultOutputDevice(), Pa_GetDeviceInfo(), Pa_GetErrorText(), Pa_Initialize(), Pa_IsStreamActive(), Pa_OpenStream(), Pa_Sleep(), Pa_StartStream(), Pa_Terminate(), paClipOff, paFloat32, paNoError, pinkMax, pinkMin, paTestData::rightPink, PaStreamParameters::sampleFormat, paTestData::sampsToGo, and PaStreamParameters::suggestedLatency.
float pinkMax = -999.0 |
Referenced by GeneratePinkNoise(), and main().
float pinkMin = 999.0 |
Referenced by GeneratePinkNoise(), and main().