1

PortAudio で特定の周波数を生成するのに問題があります。周波数内の周波数を変更しようとするとsin(n * FREQ * 2 * PI / SAMPLE_RATE)、同じままですが、サウンドの音色が変化するように見えます。周波数値が高いほど、サウンドが醜くなります。同じ周波数。これは私がpatestCallbackループに持っているものです:

static int patestCallback( const void *inputBuffer, void *outputBuffer,
                           unsigned long framesPerBuffer,
                           const PaStreamCallbackTimeInfo *timeInfo,
                           PaStreamCallbackFlags statusFlags,
                           void *userData )
{
   paTestData *data = (paTestData*)userData;
   float *out = (float*)outputBuffer;

   (void) timeInfo;
   (void) statusFlags;
   (void) inputBuffer;
   unsigned long n = 0;
   for(unsigned long i = 0; i<framesPerBuffer;i++,n++){
      float v = sin ( 261.626 * 2 * M_PI * ((float) n / (float) TABLE_SIZE) );
      *out++ = v;
      *out++ = v;
   }

   return paContinue;
}
4

1 に答える 1

3

簡単な解決策:

static unsigned long n = 0;

現在、すべての関数呼び出しでリセットnしているため、新しい各バッファーの開始時にクリックが発生し、耳障りな音が聞こえます。正弦波の周期がバッファー長と異なるほど、音質が悪くなります。

于 2013-02-13T10:39:24.187 に答える