Audio Effects Framework
Synthesis.h
Go to the documentation of this file.
1 #if !defined(__Synthesis_hdr__)
2 #define __Synthesis_hdr__
3 
4 #define _USE_MATH_DEFINES
5 #include <math.h>
6 #include <cstdlib>
7 
8 #include "ErrorDef.h"
9 #include "Util.h"
10 
14 {
15 public:
16  static Error_t generateSine (float *pfOutBuf, float fFreqInHz, float fSampleFreqInHz, int iLength, float fAmplitude = 1.F, float fStartPhaseInRad = 0.F)
17  {
18  if (!pfOutBuf)
19  return kFunctionInvalidArgsError;
20 
21  for (int i = 0; i < iLength; i++)
22  {
23  pfOutBuf[i] = fAmplitude * static_cast<float>(sin (2*M_PI*fFreqInHz * i/fSampleFreqInHz + fStartPhaseInRad));
24  }
25 
26  return kNoError;
27  }
28  static Error_t generateRect (float *pfOutBuf, float fFreqInHz, float fSampleFreqInHz, int iLength, float fAmplitude = 1.F)
29  {
30  if (!pfOutBuf)
31  return kFunctionInvalidArgsError;
32 
33  float fPeriodLength = fSampleFreqInHz / fFreqInHz;
34  for (int i = 0; i < iLength; i++)
35  {
36  if (i%CUtil::float2int<int>(fPeriodLength) <= .5*fPeriodLength)
37  {
38  pfOutBuf[i] = fAmplitude;
39  }
40  else
41  {
42  pfOutBuf[i] = -fAmplitude;
43  }
44  }
45 
46  return kNoError;
47  }
48  static Error_t generateSaw (float *pfOutBuf, float fFreqInHz, float fSampleFreqInHz, int iLength, float fAmplitude = 1.F)
49  {
50  if (!pfOutBuf)
51  return kFunctionInvalidArgsError;
52 
53  float fIncr = 2*fAmplitude / fSampleFreqInHz * fFreqInHz;
54  pfOutBuf[0] = 0;
55  for (int i = 1; i < iLength; i++)
56  {
57  pfOutBuf[i] = fmodf(pfOutBuf[i-1] + fIncr + fAmplitude, 2*fAmplitude) - fAmplitude;
58  }
59 
60  return kNoError;
61  }
62  static Error_t generateDc (float *pfOutBuf, int iLength, float fAmplitude = 1.F)
63  {
64  if (!pfOutBuf)
65  return kFunctionInvalidArgsError;
66 
67  for (int i = 0; i < iLength; i++)
68  {
69  pfOutBuf[i] = fAmplitude;
70  }
71 
72  return kNoError;
73  }
74  static Error_t generateNoise (float *pfOutBuf, int iLength, float fAmplitude = 1.F)
75  {
76  if (!pfOutBuf)
77  return kFunctionInvalidArgsError;
78 
79  for (int i = 0; i < iLength; i++)
80  {
81  pfOutBuf[i] = rand()*fAmplitude/RAND_MAX;
82  }
83 
84  return kNoError;
85  }
86 };
87 #endif // __Synthesis_hdr__
CSynthesis::generateDc
static Error_t generateDc(float *pfOutBuf, int iLength, float fAmplitude=1.F)
Definition: Synthesis.h:62
CSynthesis::generateNoise
static Error_t generateNoise(float *pfOutBuf, int iLength, float fAmplitude=1.F)
Definition: Synthesis.h:74
CSynthesis::generateSine
static Error_t generateSine(float *pfOutBuf, float fFreqInHz, float fSampleFreqInHz, int iLength, float fAmplitude=1.F, float fStartPhaseInRad=0.F)
Definition: Synthesis.h:16
CSynthesis
class with static functions for signal generation
Definition: Synthesis.h:14
CSynthesis::generateSaw
static Error_t generateSaw(float *pfOutBuf, float fFreqInHz, float fSampleFreqInHz, int iLength, float fAmplitude=1.F)
Definition: Synthesis.h:48
Util.h
CSynthesis::generateRect
static Error_t generateRect(float *pfOutBuf, float fFreqInHz, float fSampleFreqInHz, int iLength, float fAmplitude=1.F)
Definition: Synthesis.h:28