⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug_test1.c

📁 Audacity是一款用於錄音和編輯聲音的、免費的開放源碼軟體。它可以執行於Mac OS X、Microsoft Windows、GNU/Linux和其它作業系統
💻 C
字号:
/* * $Id: debug_test1.c,v 1.2 2003/03/02 08:01:40 dmazzoni Exp $ patest1.c Ring modulate the audio input with a 441hz sine wave for 20 seconds    using the Portable Audio api    Author: Ross Bencina <rossb@audiomulch.com>    Modifications: April 5th, 2001 - PLB - Check for NULL inputBuffer.*/#include <stdio.h>#include <math.h>#include "portaudio.h"#ifndef M_PI#define M_PI  (3.14159265)#endiftypedef struct{    float sine[100];    int phase;    int sampsToGo;}patest1data;static int patest1Callback( void *inputBuffer, void *outputBuffer,                            unsigned long bufferFrames,                            PaTimestamp outTime, void *userData ){    patest1data *data = (patest1data*)userData;    float *in = (float*)inputBuffer;    float *out = (float*)outputBuffer;    int framesToCalc = bufferFrames;    unsigned long i;    int finished = 0;    if(inputBuffer == NULL) return 0;    if( data->sampsToGo < bufferFrames )    {        finished = 1;    }    for( i=0; i<bufferFrames; i++ )    {        *out++ = *in++;        *out++ = *in++;        if( data->phase >= 100 )            data->phase = 0;    }    data->sampsToGo -= bufferFrames;    /* zero remainder of final buffer if not already done */    for( ; i<bufferFrames; i++ )    {        *out++ = 0; /* left */        *out++ = 0; /* right */    }    return finished;}int main(int argc, char* argv[]);int main(int argc, char* argv[]){    PaStream *stream;    PaError err;    patest1data data;    int i;    int inputDevice = Pa_GetDefaultInputDeviceID();    int outputDevice = Pa_GetDefaultOutputDeviceID();    /* initialise sinusoidal wavetable */    for( i=0; i<100; i++ )        data.sine[i] = sin( ((double)i/100.) * M_PI * 2. );    data.phase = 0;    data.sampsToGo = 44100 * 4;   // 20 seconds    /* initialise portaudio subsytem */    Pa_Initialize();    err = Pa_OpenStream(              &stream,              inputDevice,              2,              /* stereo input */              paFloat32,  /* 32 bit floating point input */              NULL,              outputDevice,              2,              /* stereo output */              paFloat32,      /* 32 bit floating point output */              NULL,              44100.,              //    22050,          /* half second buffers */              //    4,              /* four buffers */              512,          /* half second buffers */              0,              /* four buffers */              paClipOff,      /* we won't output out of range samples so don't bother clipping them */              patest1Callback,              &data );    if( err == paNoError )    {        err = Pa_StartStream( stream );        //       printf( "Press any key to end.\n" );        //       getc( stdin ); //wait for input before exiting        //       Pa_AbortStream( stream );        printf( "Waiting for stream to complete...\n" );        while( Pa_StreamActive( stream ) )            Pa_Sleep(1000); /* sleep until playback has finished */        err = Pa_CloseStream( stream );    }    else    {        fprintf( stderr, "An error occured while opening the portaudio stream\n" );        if( err == paHostError )            fprintf( stderr, "Host error number: %d\n", Pa_GetHostError() );        else            fprintf( stderr, "Error number: %d\n", err );    }    Pa_Terminate();    printf( "bye\n" );    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -