[PD-cvs] pd/src s_audio_alsa.c, 1.5.4.5.2.2.2.7, 1.5.4.5.2.2.2.8 s_audio_portaudio.c, 1.1.2.21.2.3, 1.1.2.21.2.4
Mathieu Bouchard
matju at users.sourceforge.net
Mon Jul 9 20:16:16 CEST 2007
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9719
Modified Files:
Tag: desiredata
s_audio_alsa.c s_audio_portaudio.c
Log Message:
cleanup
Index: s_audio_alsa.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio_alsa.c,v
retrieving revision 1.5.4.5.2.2.2.7
retrieving revision 1.5.4.5.2.2.2.8
diff -C2 -d -r1.5.4.5.2.2.2.7 -r1.5.4.5.2.2.2.8
*** s_audio_alsa.c 9 Jul 2007 17:41:02 -0000 1.5.4.5.2.2.2.7
--- s_audio_alsa.c 9 Jul 2007 18:16:13 -0000 1.5.4.5.2.2.2.8
***************
*** 36,41 ****
#endif
! //static void alsa_close_audio(void);
! static void alsa_checkiosync(void);
static void alsa_numbertoname(int iodev, char *devname, int nchar);
static int alsa_jittermax;
--- 36,41 ----
#endif
! //static void alsa_close_audio();
! static void alsa_checkiosync();
static void alsa_numbertoname(int iodev, char *devname, int nchar);
static int alsa_jittermax;
***************
*** 300,304 ****
}
! void alsa_close_audio(void) {
int err, iodev;
if (alsa_usemmap) {
--- 300,304 ----
}
! void alsa_close_audio() {
int err, iodev;
if (alsa_usemmap) {
***************
*** 317,321 ****
}
! int alsa_send_dacs(void) {
#ifdef DEBUG_ALSA_XFER
static int xferno = 0;
--- 317,321 ----
}
! int alsa_send_dacs() {
#ifdef DEBUG_ALSA_XFER
static int xferno = 0;
***************
*** 480,484 ****
}
! void alsa_printstate( void) {
int result, iodev = 0;
snd_pcm_sframes_t indelay, outdelay;
--- 480,484 ----
}
! void alsa_printstate() {
int result, iodev = 0;
snd_pcm_sframes_t indelay, outdelay;
***************
*** 505,509 ****
! void alsa_resync( void) {
int i, result, iodev = 0;
if (sys_audioapi != API_ALSA) {
--- 505,509 ----
! void alsa_resync() {
int i, result, iodev = 0;
if (sys_audioapi != API_ALSA) {
***************
*** 524,531 ****
void alsa_putzeros(int iodev, int n) {
! int i, result;
! memset(alsa_snd_buf, 0,
! alsa_outdev[iodev].a_sampwidth * sys_dacblocksize * alsa_outdev[iodev].a_channels);
! for (i = 0; i < n; i++) {
result = snd_pcm_writei(alsa_outdev[iodev].a_handle, alsa_snd_buf, sys_dacblocksize);
#if 0
--- 524,530 ----
void alsa_putzeros(int iodev, int n) {
! int result;
! memset(alsa_snd_buf, 0, alsa_outdev[iodev].a_sampwidth * sys_dacblocksize * alsa_outdev[iodev].a_channels);
! for (int i=0; i<n; i++) {
result = snd_pcm_writei(alsa_outdev[iodev].a_handle, alsa_snd_buf, sys_dacblocksize);
#if 0
***************
*** 550,554 ****
/* call this only if both input and output are open */
! static void alsa_checkiosync( void) {
int result, giveup = 1000, alreadylogged = 0, iodev = 0;
snd_pcm_sframes_t minphase, maxphase, thisphase, outdelay;
--- 549,553 ----
/* call this only if both input and output are open */
! static void alsa_checkiosync() {
int result, giveup = 1000, alreadylogged = 0, iodev = 0;
snd_pcm_sframes_t minphase, maxphase, thisphase, outdelay;
Index: s_audio_portaudio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/s_audio_portaudio.c,v
retrieving revision 1.1.2.21.2.3
retrieving revision 1.1.2.21.2.4
diff -C2 -d -r1.1.2.21.2.3 -r1.1.2.21.2.4
*** s_audio_portaudio.c 9 Jul 2007 17:51:14 -0000 1.1.2.21.2.3
--- s_audio_portaudio.c 9 Jul 2007 18:16:13 -0000 1.1.2.21.2.4
***************
*** 47,61 ****
int pa_initialized = 0;
! void pa_initialize(void)
! {
// if (!pa_initialized)
// {
pa_status = Pa_Initialize();
! if ( pa_status!= paNoError )
! {
! fprintf( stderr,
! "Error number %d occured initializing portaudio\n",
! pa_status);
! fprintf( stderr, "Error message: %s\n", Pa_GetErrorText( pa_status ) );
return;
}
--- 47,57 ----
int pa_initialized = 0;
! void pa_initialize() {
// if (!pa_initialized)
// {
pa_status = Pa_Initialize();
! if (pa_status!=paNoError) {
! fprintf(stderr, "Error number %d occured initializing portaudio\n", pa_status);
! fprintf(stderr, "Error message: %s\n", Pa_GetErrorText(pa_status));
return;
}
***************
*** 67,74 ****
static float* pa_outbuffer[MAX_PA_CHANS];
static int pa_bufferpos;
-
static int pddev2padev(int pdindev,int isinput);
static int padev2pddev(int padev,int isinput);
-
int process (const void *input, void *output, unsigned long frameCount,
const PaStreamCallbackTimeInfo* timeInfo,
--- 63,68 ----
***************
*** 87,117 ****
int pa_open_audio(int inchans, int outchans, int rate, int advance,
! int indeviceno, int outdeviceno, int schedmode)
! {
PaError err;
- int j;
const PaDeviceInfo *pdi,*pdo;
-
schedmode = 1; /* we don't support blocking io */
-
pa_initialize();
-
sys_setscheduler(schedmode);
-
/* post("in %d out %d rate %d device %d", inchans, outchans, rate, deviceno); */
! if (inchans > MAX_PA_CHANS)
! {
post("input channels reduced to maximum %d", MAX_PA_CHANS);
inchans = MAX_PA_CHANS;
}
! if (outchans > MAX_PA_CHANS)
! {
post("output channels reduced to maximum %d", MAX_PA_CHANS);
outchans = MAX_PA_CHANS;
}
-
pdi = NULL;
! if (inchans > 0)
! {
pa_indev = pddev2padev(indeviceno,1);
if(pa_indev >= 0) {
--- 81,101 ----
int pa_open_audio(int inchans, int outchans, int rate, int advance,
! int indeviceno, int outdeviceno, int schedmode) {
PaError err;
const PaDeviceInfo *pdi,*pdo;
schedmode = 1; /* we don't support blocking io */
pa_initialize();
sys_setscheduler(schedmode);
/* post("in %d out %d rate %d device %d", inchans, outchans, rate, deviceno); */
! if (inchans > MAX_PA_CHANS) {
post("input channels reduced to maximum %d", MAX_PA_CHANS);
inchans = MAX_PA_CHANS;
}
! if (outchans > MAX_PA_CHANS) {
post("output channels reduced to maximum %d", MAX_PA_CHANS);
outchans = MAX_PA_CHANS;
}
pdi = NULL;
! if (inchans > 0) {
pa_indev = pddev2padev(indeviceno,1);
if(pa_indev >= 0) {
***************
*** 121,128 ****
}
}
-
pdo = NULL;
! if (outchans > 0)
! {
pa_outdev = pddev2padev(outdeviceno,0);
if(pa_outdev >= 0) {
--- 105,110 ----
}
}
pdo = NULL;
! if (outchans > 0) {
pa_outdev = pddev2padev(outdeviceno,0);
if(pa_outdev >= 0) {
***************
*** 132,150 ****
}
}
!
! #ifndef DEBUG
! if (sys_verbose)
! #endif
! {
post("input device %d, channels %d", pa_indev, inchans);
post("output device %d, channels %d", pa_outdev, outchans);
post("latency advance %d", advance);
}
!
! if (inchans || outchans)
! {
int blocksize;
PaStreamParameters inputParameters, outputParameters;
-
/* initialize input */
inputParameters.device = pa_indev;
--- 114,125 ----
}
}
! if (sys_verbose) {
post("input device %d, channels %d", pa_indev, inchans);
post("output device %d, channels %d", pa_outdev, outchans);
post("latency advance %d", advance);
}
! if (inchans || outchans) {
int blocksize;
PaStreamParameters inputParameters, outputParameters;
/* initialize input */
inputParameters.device = pa_indev;
***************
*** 153,157 ****
inputParameters.suggestedLatency = advance * 0.001;
inputParameters.hostApiSpecificStreamInfo = NULL;
-
/* initialize output */
outputParameters.device = pa_outdev;
--- 128,131 ----
***************
*** 160,171 ****
outputParameters.suggestedLatency = advance * 0.001;
outputParameters.hostApiSpecificStreamInfo = NULL;
-
/* set block size */
blocksize=64;
while ((float)blocksize/(float)rate*1000*2 < advance && blocksize==1024) blocksize *= 2;
pa_blocksize = blocksize;
-
/* initialize io buffer */
! for (j=0; j != MAX_PA_CHANS;++j) {
if (pa_inbuffer[j]) freealignedbytes(pa_inbuffer[j], 0);
if (pa_outbuffer[j]) freealignedbytes(pa_outbuffer[j], 0);
--- 134,143 ----
outputParameters.suggestedLatency = advance * 0.001;
outputParameters.hostApiSpecificStreamInfo = NULL;
/* set block size */
blocksize=64;
while ((float)blocksize/(float)rate*1000*2 < advance && blocksize==1024) blocksize *= 2;
pa_blocksize = blocksize;
/* initialize io buffer */
! for (int j=0; j != MAX_PA_CHANS;++j) {
if (pa_inbuffer[j]) freealignedbytes(pa_inbuffer[j], 0);
if (pa_outbuffer[j]) freealignedbytes(pa_outbuffer[j], 0);
***************
*** 174,178 ****
}
pa_bufferpos = 0;
-
/* report to portaudio */
err = Pa_OpenStream(&pa_stream,
--- 146,149 ----
***************
*** 191,195 ****
t_symbol *selector1 = gensym("audiocurrentininfo");
t_symbol *selector2 = gensym("audiocurrentoutinfo");
-
sys_schedadvance = int(1e-6 * streaminfo->outputLatency);
--- 162,165 ----
***************
*** 209,217 ****
if (err != paNoError) {
! post("Error number %d occured opening portaudio stream\n",
! err);
! post("Error message: %s\n", Pa_GetErrorText( err ) );
sys_inchannels = sys_outchannels = 0;
! pa_indev = int(pa_outdev = -1.f);
pa_inchans = pa_outchans = 0;
return 1;
--- 179,186 ----
if (err != paNoError) {
! post("Error number %d occured opening portaudio stream\n", err);
! post("Error message: %s\n", Pa_GetErrorText(err));
sys_inchannels = sys_outchannels = 0;
! pa_indev = pa_outdev = -1;
pa_inchans = pa_outchans = 0;
return 1;
***************
*** 222,287 ****
/* we might have adapted the channel count */
sys_setchsr(inchans, outchans, rate, sys_dacblocksize);
-
err = Pa_StartStream(pa_stream);
!
! if ( err != paNoError )
! {
! post("Error number %d occured starting portaudio stream\n",
! err);
post("Error message: %s\n", Pa_GetErrorText(err));
sys_inchannels = sys_outchannels = 0;
return 1;
}
-
#ifndef DEBUG
if(sys_verbose)
#endif
post("successfully started");
-
return 0;
}
!
! void sys_peakmeters(void);
extern int sys_meters; /* true if we're metering */
#if 0
! static int patestCallback(const void* inputBuffer,
! void* outputBuffer,
! unsigned long framesPerBuffer,
! const PaStreamCallbackTimeInfo* timeInfo,
! PaStreamCallbackFlags statusFlags,
! void* userData)
! {
! int frameIndex, i;
float** outputs = (float**)outputBuffer;
static float phase;
!
! for( frameIndex=0; frameIndex<(int)framesPerBuffer; frameIndex++ )
! {
/* Output sine wave on every channel. */
outputs[0][frameIndex] = (float) sin(phase);
outputs[1][frameIndex] = (float) sin(phase);
phase += 0.05;
! if( phase >= (2.0 * M_PI) ) phase -= (2.0 * M_PI);
!
}
! for (i = 0; (unsigned)i != framesPerBuffer / sys_dacblocksize; ++i)
! {
sched_tick(sys_time + sys_time_per_dsp_tick);
}
-
return 0;
}
#endif
! void run_all_idle_callbacks(void);
! void sys_xrun_notification(void); /* in m_sched.c */
!
! void sys_lock_timeout_notification(void);
int process (const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags, void *userData) {
- int i;
int timeout = int((float)frameCount / (float) sys_dacsr * 1e6);
if (statusFlags) sys_xrun_notification();
--- 191,238 ----
/* we might have adapted the channel count */
sys_setchsr(inchans, outchans, rate, sys_dacblocksize);
err = Pa_StartStream(pa_stream);
! if (err!=paNoError) {
! post("Error number %d occured starting portaudio stream\n", err);
post("Error message: %s\n", Pa_GetErrorText(err));
sys_inchannels = sys_outchannels = 0;
return 1;
}
#ifndef DEBUG
if(sys_verbose)
#endif
post("successfully started");
return 0;
}
! void sys_peakmeters();
extern int sys_meters; /* true if we're metering */
#if 0
! static int patestCallback(
! const void *inputBuffer, void *outputBuffer,
! unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo *timeInfo,
! PaStreamCallbackFlags statusFlags, void *userData) {
float** outputs = (float**)outputBuffer;
static float phase;
! for (int frameIndex=0; frameIndex<(int)framesPerBuffer; frameIndex++) {
/* Output sine wave on every channel. */
outputs[0][frameIndex] = (float) sin(phase);
outputs[1][frameIndex] = (float) sin(phase);
phase += 0.05;
! if (phase >= 2*M_PI) phase -= 2*M_PI;
}
! for (int i=0; (unsigned)i != framesPerBuffer / sys_dacblocksize; ++i) {
sched_tick(sys_time + sys_time_per_dsp_tick);
}
return 0;
}
#endif
! void run_all_idle_callbacks();
! void sys_xrun_notification(); /* in m_sched.c */
! void sys_lock_timeout_notification();
int process (const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags, void *userData) {
int timeout = int((float)frameCount / (float) sys_dacsr * 1e6);
if (statusFlags) sys_xrun_notification();
***************
*** 290,301 ****
return 0;
}
! for (i = 0; (unsigned)i < frameCount / sys_dacblocksize; ++i) {
! int j;
! for (j = 0; j < sys_inchannels; j++) {
t_sample * in = ((t_sample**)input)[j] + i * sys_dacblocksize;
copyvec(sys_soundin + j * sys_dacblocksize, in, sys_dacblocksize);
}
sched_tick(sys_time + sys_time_per_dsp_tick);
! for (j = 0; j < sys_outchannels; j++) {
t_sample * out = ((t_sample**)output)[j] + i * sys_dacblocksize;
copyvec(out, sys_soundout + j * sys_dacblocksize, sys_dacblocksize);
--- 241,251 ----
return 0;
}
! for (int i=0; (unsigned)i < frameCount / sys_dacblocksize; ++i) {
! for (int j=0; j < sys_inchannels; j++) {
t_sample * in = ((t_sample**)input)[j] + i * sys_dacblocksize;
copyvec(sys_soundin + j * sys_dacblocksize, in, sys_dacblocksize);
}
sched_tick(sys_time + sys_time_per_dsp_tick);
! for (int j=0; j < sys_outchannels; j++) {
t_sample * out = ((t_sample**)output)[j] + i * sys_dacblocksize;
copyvec(out, sys_soundout + j * sys_dacblocksize, sys_dacblocksize);
***************
*** 309,313 ****
}
! void pa_close_audio(void) {
#ifndef DEBUG
if(sys_verbose)
--- 259,263 ----
}
! void pa_close_audio() {
#ifndef DEBUG
if(sys_verbose)
***************
*** 332,397 ****
/* for blocked IO */
! int pa_send_dacs(void) {
/* we don't support blocking i/o */
return SENDDACS_NO;
}
! void pa_listdevs(void) /* lifted from pa_devs.c in portaudio */
! {
! int i;
! int numDevices;
! PaError err;
pa_initialize();
!
! numDevices = Pa_GetDeviceCount();
! if( numDevices < 0 )
! {
! fprintf(stderr, "ERROR: Pa_GetDeviceCount returned %d\n", numDevices );
err = numDevices;
goto error;
}
fprintf(stderr, "Audio Devices:\n");
! for( i=0; i<numDevices; i++ )
! {
! const PaDeviceInfo *pdi = Pa_GetDeviceInfo( i );
post ("device %s", pdi->name);
! fprintf(stderr, "device %d:", i+1 );
! fprintf(stderr, " %s;", pdi->name );
! fprintf(stderr, "%d inputs, ", pdi->maxInputChannels );
! fprintf(stderr, "%d outputs", pdi->maxOutputChannels );
! if ( i == Pa_GetDefaultInputDevice() )
! fprintf(stderr, " (Default Input)");
! if ( i == Pa_GetDefaultOutputDevice() )
! fprintf(stderr, " (Default Output)");
fprintf(stderr, "\n");
}
-
fprintf(stderr, "\n");
return;
-
error:
! fprintf( stderr, "An error occured while using the portaudio stream\n" );
! fprintf( stderr, "Error number: %d\n", err );
! fprintf( stderr, "Error message: %s\n", Pa_GetErrorText( err ) );
!
}
-
/* scanning for devices */
! void pa_getdevs(char *indevlist, int *nindevs,
! char *outdevlist, int *noutdevs, int *canmulti,
! int maxndev, int devdescsize)
! {
! int i, nin = 0, nout = 0, ndev;
*canmulti = 1; /* one dev each for input and output */
-
pa_initialize();
-
ndev = Pa_GetDeviceCount();
! for (i = 0; i < ndev; i++)
! {
const PaDeviceInfo *pdi = Pa_GetDeviceInfo(i);
! if (pdi->maxInputChannels > 0 && nin < maxndev)
! {
PaHostApiIndex api = pdi->hostApi;
const PaHostApiInfo * info = Pa_GetHostApiInfo (api);
--- 282,329 ----
/* for blocked IO */
! int pa_send_dacs() {
/* we don't support blocking i/o */
return SENDDACS_NO;
}
! /* lifted from pa_devs.c in portaudio */
! void pa_listdevs() {
! PaError err;
pa_initialize();
! int numDevices = Pa_GetDeviceCount();
! if(numDevices < 0) {
! fprintf(stderr, "ERROR: Pa_GetDeviceCount returned %d\n", numDevices);
err = numDevices;
goto error;
}
fprintf(stderr, "Audio Devices:\n");
! for(int i=0; i<numDevices; i++) {
! const PaDeviceInfo *pdi = Pa_GetDeviceInfo(i);
post ("device %s", pdi->name);
! fprintf(stderr, "device %d:", i+1);
! fprintf(stderr, " %s;", pdi->name);
! fprintf(stderr, "%d inputs, ", pdi->maxInputChannels);
! fprintf(stderr, "%d outputs", pdi->maxOutputChannels);
! if (i == Pa_GetDefaultInputDevice()) fprintf(stderr, " (Default Input)");
! if (i == Pa_GetDefaultOutputDevice()) fprintf(stderr, " (Default Output)");
fprintf(stderr, "\n");
}
fprintf(stderr, "\n");
return;
error:
! fprintf(stderr, "An error occured while using the portaudio stream\n");
! fprintf(stderr, "Error number: %d\n", err);
! fprintf(stderr, "Error message: %s\n", Pa_GetErrorText(err));
}
/* scanning for devices */
! void pa_getdevs(char *indevlist, int *nindevs, char *outdevlist, int *noutdevs, int *canmulti, int maxndev, int devdescsize) {
! int nin = 0, nout = 0, ndev;
*canmulti = 1; /* one dev each for input and output */
pa_initialize();
ndev = Pa_GetDeviceCount();
! for (int i=0; i<ndev; i++) {
const PaDeviceInfo *pdi = Pa_GetDeviceInfo(i);
! if (pdi->maxInputChannels > 0 && nin < maxndev) {
PaHostApiIndex api = pdi->hostApi;
const PaHostApiInfo * info = Pa_GetHostApiInfo (api);
***************
*** 403,408 ****
nin++;
}
! if (pdi->maxOutputChannels > 0 && nout < maxndev)
! {
PaHostApiIndex api = pdi->hostApi;
const PaHostApiInfo * info = Pa_GetHostApiInfo (api);
--- 335,339 ----
nin++;
}
! if (pdi->maxOutputChannels > 0 && nout < maxndev) {
PaHostApiIndex api = pdi->hostApi;
const PaHostApiInfo * info = Pa_GetHostApiInfo (api);
***************
*** 410,414 ****
unsigned int apiNameLen = strlen(apiName);
strcpy(outdevlist + nout * devdescsize, apiName);
-
outdevlist[nout * devdescsize + apiNameLen] = '/';
strcpy(outdevlist + nout * devdescsize + apiNameLen + 1, pdi->name);
--- 341,344 ----
***************
*** 420,435 ****
}
! void pa_getaudioininfo(t_float f)
! {
int i = pddev2padev((int)f,1);
! const PaDeviceInfo * pdi;
!
pa_initialize();
! pdi = Pa_GetDeviceInfo (i);
!
! if (pdi)
! {
! t_symbol * selector = gensym("audioininfo");
! t_symbol * pd = gensym("pd");
t_atom argv[4];
SETFLOAT(argv, pdi->maxInputChannels);
--- 350,361 ----
}
! void pa_getaudioininfo(t_float f) {
int i = pddev2padev((int)f,1);
! const PaDeviceInfo *pdi;
pa_initialize();
! pdi = Pa_GetDeviceInfo(i);
! if (pdi) {
! t_symbol *selector = gensym("audioininfo");
! t_symbol *pd = gensym("pd");
t_atom argv[4];
SETFLOAT(argv, pdi->maxInputChannels);
***************
*** 441,456 ****
}
! void pa_getaudiooutinfo(t_float f)
! {
int i = pddev2padev((int)f,0);
! const PaDeviceInfo * pdi;
!
pa_initialize();
! pdi = Pa_GetDeviceInfo (i);
!
! if (pdi)
! {
! t_symbol * selector = gensym("audiooutinfo");
! t_symbol * pd = gensym("pd");
t_atom argv[4];
SETFLOAT(argv, pdi->maxOutputChannels);
--- 367,378 ----
}
! void pa_getaudiooutinfo(t_float f) {
int i = pddev2padev((int)f,0);
! const PaDeviceInfo *pdi;
pa_initialize();
! pdi = Pa_GetDeviceInfo(i);
! if (pdi) {
! t_symbol *selector = gensym("audiooutinfo");
! t_symbol *pd = gensym("pd");
t_atom argv[4];
SETFLOAT(argv, pdi->maxOutputChannels);
***************
*** 462,468 ****
}
! void pa_getcurrent_devices(void) {
! t_symbol * pd = gensym("pd");
! t_symbol * selector = gensym("audiodevice");
t_atom argv[2];
SETFLOAT(argv, padev2pddev(pa_indev,1));
--- 384,390 ----
}
! void pa_getcurrent_devices() {
! t_symbol *pd = gensym("pd");
! t_symbol *selector = gensym("audiodevice");
t_atom argv[2];
SETFLOAT(argv, padev2pddev(pa_indev,1));
***************
*** 487,491 ****
int ret;
PaStreamParameters inputParameters, outputParameters;
-
inputParameters.device = indev;
inputParameters.channelCount = inchans;
--- 409,412 ----
***************
*** 493,497 ****
inputParameters.suggestedLatency = advance * 0.001;
inputParameters.hostApiSpecificStreamInfo = NULL;
-
outputParameters.device = outdev;
outputParameters.channelCount = outchans;
--- 414,417 ----
***************
*** 499,505 ****
outputParameters.suggestedLatency = advance * 0.001;
outputParameters.hostApiSpecificStreamInfo = NULL;
-
ret = Pa_IsFormatSupported(&inputParameters, &outputParameters, samplerate);
-
SETFLOAT(argv, ret == paNoError?1:0);
typedmess(pd->s_thing, selector, 1, argv);
--- 419,423 ----
***************
*** 508,515 ****
static int pddev2padev(int pddev,int input) {
- int j;
- int devno;
pa_initialize();
! for (j = 0, devno = 0; j < Pa_GetDeviceCount(); j++) {
const PaDeviceInfo *info = Pa_GetDeviceInfo(j);
int maxchans = input?info->maxInputChannels:info->maxOutputChannels;
--- 426,431 ----
static int pddev2padev(int pddev,int input) {
pa_initialize();
! for (int j=0, devno=0; j < Pa_GetDeviceCount(); j++) {
const PaDeviceInfo *info = Pa_GetDeviceInfo(j);
int maxchans = input?info->maxInputChannels:info->maxOutputChannels;
***************
*** 522,535 ****
}
! static int padev2pddev(int padev,int input)
! {
! int j,devno;
int count = Pa_GetDeviceCount();
! for (j = 0, devno = 0; j < count; j++)
! {
const PaDeviceInfo *info = Pa_GetDeviceInfo(j);
int chans = input?info->maxInputChannels:info->maxOutputChannels;
! if (chans > 0)
! {
if(j == padev) return devno;
devno++;
--- 438,447 ----
}
! static int padev2pddev(int padev,int input) {
int count = Pa_GetDeviceCount();
! for (int j=0, devno=0; j < count; j++) {
const PaDeviceInfo *info = Pa_GetDeviceInfo(j);
int chans = input?info->maxInputChannels:info->maxOutputChannels;
! if (chans > 0) {
if(j == padev) return devno;
devno++;
***************
*** 539,572 ****
}
! void pa_get_asio_latencies(t_float f)
! {
int index = pddev2padev((int)f,0);
const PaDeviceInfo *pdi = Pa_GetDeviceInfo(index);
const PaHostApiInfo *phi = Pa_GetHostApiInfo(pdi->hostApi);
! if (phi->type != paASIO)
! {
post("device not an asio device");
return;
}
#ifdef WIN32
! else
! {
long minlat, maxlat, preflat, gran;
t_atom argv[4];
!
! t_symbol * selector = gensym("asiolatency");
! t_symbol * pd = gensym("pd");
!
PaAsio_GetAvailableLatencyValues(index, &minlat, &maxlat, &preflat, &gran);
-
SETFLOAT(argv, (float) minlat);
SETFLOAT(argv + 1, (float) maxlat);
SETFLOAT(argv + 2, (float) preflat);
SETFLOAT(argv + 3, (float) gran);
-
typedmess(pd->s_thing, selector, 4, argv);
}
#endif
-
}
--- 451,476 ----
}
! void pa_get_asio_latencies(t_float f) {
int index = pddev2padev((int)f,0);
const PaDeviceInfo *pdi = Pa_GetDeviceInfo(index);
const PaHostApiInfo *phi = Pa_GetHostApiInfo(pdi->hostApi);
! if (phi->type != paASIO) {
post("device not an asio device");
return;
}
#ifdef WIN32
! else {
long minlat, maxlat, preflat, gran;
t_atom argv[4];
! t_symbol *selector = gensym("asiolatency");
! t_symbol *pd = gensym("pd");
PaAsio_GetAvailableLatencyValues(index, &minlat, &maxlat, &preflat, &gran);
SETFLOAT(argv, (float) minlat);
SETFLOAT(argv + 1, (float) maxlat);
SETFLOAT(argv + 2, (float) preflat);
SETFLOAT(argv + 3, (float) gran);
typedmess(pd->s_thing, selector, 4, argv);
}
#endif
}
More information about the Pd-cvs
mailing list