C++ - Play back a tone generated from a sinusoidal wave

前端 未结 3 1033
梦毁少年i
梦毁少年i 2021-01-01 01:37

Hey everyone, I\'m currently trying to figure out how to play back a tone I have generated using a sinusoidal wave.

Here\'s my code:

#include 

        
3条回答
  •  南方客
    南方客 (楼主)
    2021-01-01 02:27

    Try this (this program uses Z transform concept, a complete example that generates dtmf tones using ALSA and compilable on LINUX are available here)‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌:

    /*
     *  Cosine Samples Generator
     *
     *  Autor: Volnei Klehm
     *  Data: 04/01/2014
     */
    
    #include 
    #include 
    
    #define S_FREQ 8000 /*Sample frequency, should be greater thar 2*sineFrequency
              If using audio output it has to be the same saple frequency 
              Used there*/
    
    const float frequency_in_Hertz = 697; /*set output frequency*/
    const float generatorContant1 = cosf(2*M_PI*(frequency_in_Hertz/S_FREQ));
    const float generatorContant2 = sinf(2*M_PI*(frequency_in_Hertz/S_FREQ));
    
    
    float GenerateSignal(){
      static float Register[2]={1,0};
      static float FeedBack;
    
      FeedBack=2*generatorContant1*Register[0]-Register[1];
      Register[1]=Register[0];  
      Register[0]=FeedBack;
    
      return (generatorContant2*Register[1]);
    }
    
    
    int main(void) {
      /*generate 300 samples*/
      for (int NumberOfSamples = 300; NumberOfSamples > 0; NumberOfSamples--) 
        printf("\n%f", GenerateSignal());
      return 0;
    }
    

提交回复
热议问题