[PD-cvs] pd/src s_audio.c, 1.5.4.16.2.20.2.19, 1.5.4.16.2.20.2.20 s_stuff.h, 1.5.4.10.2.8.2.12, 1.5.4.10.2.8.2.13 s_main.c, 1.7.4.17.2.22.2.21, 1.7.4.17.2.22.2.22

Mathieu Bouchard matju at users.sourceforge.net
Tue Jul 10 18:36:05 CEST 2007


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26193

Modified Files:
      Tag: desiredata
	s_audio.c s_stuff.h s_main.c 
Log Message:
use t_audiodevs in practice


Index: s_audio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio.c,v
retrieving revision 1.5.4.16.2.20.2.19
retrieving revision 1.5.4.16.2.20.2.20
diff -C2 -d -r1.5.4.16.2.20.2.19 -r1.5.4.16.2.20.2.20
*** s_audio.c	10 Jul 2007 15:39:40 -0000	1.5.4.16.2.20.2.19
--- s_audio.c	10 Jul 2007 16:36:03 -0000	1.5.4.16.2.20.2.20
***************
*** 112,123 ****
  }
  
! void sys_get_audio_params(
! int *pnindev, int *pindev, int *chindev,
! int *pnoutdev, int *poutdev, int *choutdev,
! int *prate, int *pdacblocksize, int *padvance, int *pscheduler) {
!     *pnindev  = audio_in.ndev;
!     *pnoutdev = audio_out.ndev;
!     for (int i=0; i<MAXAUDIOINDEV; i++)  {pindev[i]  = audio_in.dev[i];  chindev[i]  = audio_in.chdev[i]; }
!     for (int i=0; i<MAXAUDIOOUTDEV; i++) {poutdev[i] = audio_out.dev[i]; choutdev[i] = audio_out.chdev[i];}
      *prate = audio_rate;
      *pdacblocksize = audio_dacblocksize;
--- 112,120 ----
  }
  
! extern "C" void sys_get_audio_params(t_audiodevs *in, t_audiodevs *out, int *prate, int *pdacblocksize, int *padvance, int *pscheduler) {
!     in->ndev  = audio_in.ndev;
!     out->ndev = audio_out.ndev;
!     for (int i=0; i<MAXAUDIOINDEV; i++)  {in ->dev[i] = audio_in.dev[i];   in->chdev[i]  = audio_in.chdev[i];}
!     for (int i=0; i<MAXAUDIOOUTDEV; i++) {out->dev[i] = audio_out.dev[i]; out->chdev[i] = audio_out.chdev[i];}
      *prate = audio_rate;
      *pdacblocksize = audio_dacblocksize;
***************
*** 140,143 ****
--- 137,145 ----
  }
  
+ extern "C" void sys_open_audio2(t_audiodevs *in, t_audiodevs *out, int rate, int dacblocksize, int advance, int scheduler) {
+ 	sys_open_audio(in->ndev,  in->dev,  in->ndev,  in->chdev,
+ 		      out->ndev, out->dev, out->ndev, out->chdev, rate, dacblocksize, advance, scheduler, 1);
+ }
+ 
  /* init routines for any API which needs to set stuff up before any other API gets used.  This is only true of OSS so far. */
  #ifdef USEAPI_OSS
***************
*** 324,333 ****
  /* open audio using whatever parameters were last used */
  void sys_reopen_audio() {
!     int nindev, indev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV];
!     int noutdev, outdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
      int rate, dacblocksize, advance, scheduler;
      sys_close_audio();
!     sys_get_audio_params(&nindev, indev, chindev,  &noutdev, outdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
!     sys_open_audio(nindev, indev, nindev, chindev, noutdev, outdev, noutdev, choutdev, rate, dacblocksize, advance, scheduler, 1);
  }
  
--- 326,334 ----
  /* open audio using whatever parameters were last used */
  void sys_reopen_audio() {
!     t_audiodevs in, out;
      int rate, dacblocksize, advance, scheduler;
      sys_close_audio();
!     sys_get_audio_params(&in,&out,&rate, &dacblocksize, &advance, &scheduler);
!     sys_open_audio2(&in,&out, rate, dacblocksize, advance, scheduler);
  }
  
***************
*** 407,412 ****
  void glob_audio_properties(t_pd *dummy, t_floatarg flongform) {
      /* these are the devices you're using: */
!     int nindev, indev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV];
!     int noutdev, outdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
      int rate, dacblocksize, advance, scheduler;
      /* these are all the devices on your system: */
--- 408,412 ----
  void glob_audio_properties(t_pd *dummy, t_floatarg flongform) {
      /* these are the devices you're using: */
!     t_audiodevs in,out;
      int rate, dacblocksize, advance, scheduler;
      /* these are all the devices on your system: */
***************
*** 416,425 ****
      ostringstream indevliststring;  for (int i=0; i<nindevs;  i++) indevliststring  << " {" <<  (indevlist + i*DEVDESCSIZE) << "}";
      ostringstream outdevliststring; for (int i=0; i<noutdevs; i++) outdevliststring << " {" << (outdevlist + i*DEVDESCSIZE) << "}";
!     sys_get_audio_params(&nindev,indev,chindev,&noutdev,outdev,choutdev,&rate,&dacblocksize,&advance,&scheduler);
!     if (nindev > 1 || noutdev > 1) flongform = 1;
!     ostringstream indevs;   for (int i=0; i<nindev;  i++) indevs   << " " << indev [i];
!     ostringstream outdevs;  for (int i=0; i<noutdev; i++) outdevs  << " " << outdev[i];
!     ostringstream inchans;  for (int i=0; i<nindev;  i++) inchans  << " " << chindev    [i];
!     ostringstream outchans; for (int i=0; i<noutdev; i++) outchans << " " << choutdev   [i];
      sys_vgui("pdtk_audio_dialog {%s} {%s} {%s} {%s} {%s} {%s} %d %d %d %d %d\n",
          indevliststring .str().data()+1,  indevs.str().data()+1,  inchans.str().data()+1,
--- 416,425 ----
      ostringstream indevliststring;  for (int i=0; i<nindevs;  i++) indevliststring  << " {" <<  (indevlist + i*DEVDESCSIZE) << "}";
      ostringstream outdevliststring; for (int i=0; i<noutdevs; i++) outdevliststring << " {" << (outdevlist + i*DEVDESCSIZE) << "}";
!     sys_get_audio_params(&in,&out,&rate,&dacblocksize,&advance,&scheduler);
!     if (in.ndev > 1 || out.ndev > 1) flongform = 1;
!     ostringstream indevs;   for (int i=0; i< in.ndev; i++) indevs   << " " <<   in.dev [i];
!     ostringstream outdevs;  for (int i=0; i<out.ndev; i++) outdevs  << " " <<   out.dev[i];
!     ostringstream inchans;  for (int i=0; i< in.ndev; i++) inchans  << " " <<  in.chdev[i];
!     ostringstream outchans; for (int i=0; i<out.ndev; i++) outchans << " " << out.chdev[i];
      sys_vgui("pdtk_audio_dialog {%s} {%s} {%s} {%s} {%s} {%s} %d %d %d %d %d\n",
          indevliststring .str().data()+1,  indevs.str().data()+1,  inchans.str().data()+1,
***************
*** 570,580 ****
   * supported by vibrez.net { */
  void glob_audio_samplerate(t_pd * dummy, t_float f) {
! 	int nindev,  indev[MAXAUDIOINDEV],   chindev[MAXAUDIOINDEV];
! 	int noutdev, outdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
  	int rate, dacblocksize, advance, scheduler;
  	if (f == sys_getsr()) return;
! 	sys_get_audio_params(&nindev, indev, chindev, &noutdev, outdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
  	sys_close_audio();
! 	sys_open_audio(nindev, indev, nindev, chindev, noutdev, outdev, noutdev, choutdev, (int)f, dacblocksize, advance, scheduler, 1);
  }
  
--- 570,580 ----
   * supported by vibrez.net { */
  void glob_audio_samplerate(t_pd * dummy, t_float f) {
! 	t_audiodevs in, out;
  	int rate, dacblocksize, advance, scheduler;
  	if (f == sys_getsr()) return;
! 	sys_get_audio_params(&in,&out,&rate, &dacblocksize, &advance, &scheduler);
  	sys_close_audio();
! 	sys_open_audio(in.ndev, in.dev, in.ndev, in.chdev, out.ndev, out.dev, out.ndev, out.chdev,
! 		(int)f, dacblocksize, advance, scheduler, 1);
  }
  
***************
*** 586,617 ****
  
  void glob_audio_delay(t_pd *dummy, t_float f) {
! 	int nindev,  indev[MAXAUDIOINDEV],   chindev[MAXAUDIOINDEV];
! 	int noutdev, outdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
  	int rate, dacblocksize, advance, scheduler;
  	if ((int)f == audio_advance) return;
! 	sys_get_audio_params(&nindev, indev, chindev, &noutdev, outdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
  	sys_close_audio();
! 	sys_open_audio(nindev, indev, nindev, chindev, noutdev, outdev, noutdev, choutdev, rate, dacblocksize, (int) f, scheduler, 1);
  }
  
  void glob_audio_dacblocksize(t_pd * dummy, t_float f) {
! 	int nindev,  indev[MAXAUDIOINDEV],   chindev[MAXAUDIOINDEV];
! 	int noutdev, outdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
  	int rate, dacblocksize, advance, scheduler;
  	if ((int)f == audio_dacblocksize) return;
! 	sys_get_audio_params(&nindev, indev, chindev, &noutdev, outdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
  	sys_close_audio();
! 	sys_open_audio(nindev, indev, nindev, chindev, noutdev, outdev, noutdev, choutdev, rate, (int)f, advance, scheduler, 1);
  }
  
  void glob_audio_scheduler(t_pd * dummy, t_float f) {
! 	int nindev,  indev[MAXAUDIOINDEV],    chindev[MAXAUDIOINDEV];
! 	int noutdev, outdev[MAXAUDIOOUTDEV],  choutdev[MAXAUDIOOUTDEV];
  	int rate, dacblocksize, advance, scheduler;
  	if ((int)f == sys_callbackscheduler) return;
  	scheduler = f!=0;
! 	sys_get_audio_params(&nindev, indev, chindev, &noutdev, outdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
  	sys_close_audio();
! 	sys_open_audio(nindev, indev, nindev, chindev, noutdev, outdev, noutdev, choutdev, rate, dacblocksize, advance, scheduler, 1);
  	if (scheduler != sys_callbackscheduler) {
  		if (scheduler == 1) {
--- 586,615 ----
  
  void glob_audio_delay(t_pd *dummy, t_float f) {
! 	t_audiodevs in,out;
  	int rate, dacblocksize, advance, scheduler;
  	if ((int)f == audio_advance) return;
! 	sys_get_audio_params(&in,&out, &rate, &dacblocksize, &advance, &scheduler);
  	sys_close_audio();
! 	sys_open_audio(in.ndev, in.dev, in.ndev, in.chdev, out.ndev, out.dev, out.ndev, out.chdev,
! 		rate, dacblocksize, (int) f, scheduler, 1);
  }
  
  void glob_audio_dacblocksize(t_pd * dummy, t_float f) {
! 	t_audiodevs in,out;
  	int rate, dacblocksize, advance, scheduler;
  	if ((int)f == audio_dacblocksize) return;
! 	sys_get_audio_params(&in,&out, &rate, &dacblocksize, &advance, &scheduler);
  	sys_close_audio();
! 	sys_open_audio2(&in,&out, rate, (int)f, advance, scheduler);
  }
  
  void glob_audio_scheduler(t_pd * dummy, t_float f) {
! 	t_audiodevs in,out;
  	int rate, dacblocksize, advance, scheduler;
  	if ((int)f == sys_callbackscheduler) return;
  	scheduler = f!=0;
! 	sys_get_audio_params(&in,&out, &rate, &dacblocksize, &advance, &scheduler);
  	sys_close_audio();
! 	sys_open_audio2(&in,&out, rate, dacblocksize, advance, scheduler);
  	if (scheduler != sys_callbackscheduler) {
  		if (scheduler == 1) {
***************
*** 624,667 ****
  
  void glob_audio_device(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) {
! 	int nindev,  indev[MAXAUDIOINDEV],   chindev[MAXAUDIOINDEV];
! 	int noutdev, outdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
  	int rate, dacblocksize, advance, scheduler;
! 	sys_get_audio_params(&nindev, indev, chindev, &noutdev, outdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
! 	noutdev = nindev = (int)atom_getfloatarg(0, argc, argv);
  	for (int i=0; i<MAXAUDIOINDEV; i++) {
! 		outdev  [i] = indev  [i] = int(atom_getfloatarg(i*2+1, argc, argv));
! 		choutdev[i] = chindev[i] = int(atom_getfloatarg(i*2+2, argc, argv));
  	}
  	sys_close_audio();
! 	sys_open_audio(nindev, indev, nindev, chindev, noutdev, outdev, noutdev, choutdev, rate, dacblocksize, advance, scheduler, 1);
  }
  
  void glob_audio_device_in(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) {
! 	int nindev,  indev[MAXAUDIOINDEV],   chindev[MAXAUDIOINDEV];
! 	int noutdev, outdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
  	int rate, dacblocksize, advance, scheduler;
! 	sys_get_audio_params(&nindev, indev, chindev, &noutdev, outdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
! 	nindev = (int)atom_getfloatarg(0, argc, argv);
  	for (int i=0; i<MAXAUDIOINDEV; i=i+2) {
! 		indev  [i] = atom_getintarg(i+1, argc, argv);
! 		chindev[i] = atom_getintarg(i+2, argc, argv);
  	}
  	sys_close_audio();
! 	sys_open_audio(nindev, indev, nindev, chindev, noutdev, outdev, noutdev, choutdev, rate, dacblocksize, advance, scheduler, 1);
  }
  
! void glob_audio_device_out(t_pd * dummy, t_symbol *s, int argc, t_atom *argv) {
! 	int nindev,  indev[MAXAUDIOINDEV],   chindev[MAXAUDIOINDEV];
! 	int noutdev, outdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
  	int rate, dacblocksize, advance, scheduler;
! 	sys_get_audio_params(&nindev, indev, chindev, &noutdev, outdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
! 	noutdev = (int)atom_getfloatarg(0, argc, argv);
  	/* i+=2 ? isn't that a bug??? */
  	for (int i=0; i<MAXAUDIOOUTDEV; i+=2) {
! 		outdev  [i] = atom_getintarg(i+1, argc, argv);
! 		choutdev[i] = atom_getintarg(i+2, argc, argv);
  	}
  	sys_close_audio();
! 	sys_open_audio(nindev, indev, nindev, chindev, noutdev, outdev, noutdev, choutdev, rate, dacblocksize, advance, scheduler, 1);
  }
  
--- 622,662 ----
  
  void glob_audio_device(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) {
! 	t_audiodevs in,out;
  	int rate, dacblocksize, advance, scheduler;
! 	sys_get_audio_params(&in,&out, &rate, &dacblocksize, &advance, &scheduler);
! 	out.ndev = in.ndev = (int)atom_getfloatarg(0, argc, argv);
  	for (int i=0; i<MAXAUDIOINDEV; i++) {
! 		out.dev  [i] = in.dev  [i] = int(atom_getfloatarg(i*2+1, argc, argv));
! 		out.chdev[i] = in.chdev[i] = int(atom_getfloatarg(i*2+2, argc, argv));
  	}
  	sys_close_audio();
! 	sys_open_audio2(&in,&out, rate, dacblocksize, advance, scheduler);
  }
  
  void glob_audio_device_in(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) {
! 	t_audiodevs in,out;
  	int rate, dacblocksize, advance, scheduler;
! 	sys_get_audio_params(&in,&out, &rate, &dacblocksize, &advance, &scheduler);
! 	in.ndev = (int)atom_getfloatarg(0, argc, argv);
  	for (int i=0; i<MAXAUDIOINDEV; i=i+2) {
! 		in.dev  [i] = atom_getintarg(i+1, argc, argv);
! 		in.chdev[i] = atom_getintarg(i+2, argc, argv);
  	}
  	sys_close_audio();
! 	sys_open_audio2(&in,&out,rate, dacblocksize, advance, scheduler);
  }
  
! void glob_audio_device_out(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) {
! 	t_audiodevs in,out;
  	int rate, dacblocksize, advance, scheduler;
! 	sys_get_audio_params(&in,&out, &rate, &dacblocksize, &advance, &scheduler);
! 	out.ndev = (int)atom_getfloatarg(0, argc, argv);
  	/* i+=2 ? isn't that a bug??? */
  	for (int i=0; i<MAXAUDIOOUTDEV; i+=2) {
! 		out.dev  [i] = atom_getintarg(i+1, argc, argv);
! 		out.chdev[i] = atom_getintarg(i+2, argc, argv);
  	}
  	sys_close_audio();
! 	sys_open_audio2(&in,&out, rate, dacblocksize, advance, scheduler);
  }
  
***************
*** 675,680 ****
  void glob_audio_getaudioindevices(t_pd * dummy, t_symbol *s, int ac, t_atom *av) {
      /* these are the devices you're using: */
!     int nindev, indev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV];
!     int noutdev, outdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
      int rate, dacblocksize, advance, scheduler;
      /* these are all the devices on your system: */
--- 670,674 ----
  void glob_audio_getaudioindevices(t_pd * dummy, t_symbol *s, int ac, t_atom *av) {
      /* these are the devices you're using: */
!     t_audiodevs in,out;
      int rate, dacblocksize, advance, scheduler;
      /* these are all the devices on your system: */
***************
*** 686,690 ****
      t_symbol *pd = gensym("pd");
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti, MAXNDEV, DEVDESCSIZE);
!     sys_get_audio_params(&nindev, indev, chindev, &noutdev, outdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
      if (f < 0) {
          for (int i=0; i<nindevs ;++i) SETSTRING(argv+i,indevlist + i * DEVDESCSIZE);
--- 680,684 ----
      t_symbol *pd = gensym("pd");
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti, MAXNDEV, DEVDESCSIZE);
!     sys_get_audio_params(&in,&out, &rate, &dacblocksize, &advance, &scheduler);
      if (f < 0) {
          for (int i=0; i<nindevs ;++i) SETSTRING(argv+i,indevlist + i * DEVDESCSIZE);
***************
*** 698,703 ****
  void glob_audio_getaudiooutdevices(t_pd * dummy, t_symbol *s, int ac, t_atom *av) {
      /* these are the devices you're using: */
!     int nindev, indev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV];
!     int noutdev, outdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
      int rate, dacblocksize, advance, scheduler;
      /* these are all the devices on your system: */
--- 692,696 ----
  void glob_audio_getaudiooutdevices(t_pd * dummy, t_symbol *s, int ac, t_atom *av) {
      /* these are the devices you're using: */
!     t_audiodevs in,out;
      int rate, dacblocksize, advance, scheduler;
      /* these are all the devices on your system: */
***************
*** 706,713 ****
      t_atom argv[MAXNDEV];
      int f = ac ? (int)atom_getfloatarg(0,ac,av) : -1;
!     t_symbol * selector = gensym("audiooutdev");
!     t_symbol * pd = gensym("pd");
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti, MAXNDEV, DEVDESCSIZE);
!     sys_get_audio_params(&nindev, indev, chindev, &noutdev, outdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
      if (f < 0) {
          int i;
--- 699,706 ----
      t_atom argv[MAXNDEV];
      int f = ac ? (int)atom_getfloatarg(0,ac,av) : -1;
!     t_symbol *selector = gensym("audiooutdev");
!     t_symbol *pd = gensym("pd");
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti, MAXNDEV, DEVDESCSIZE);
!     sys_get_audio_params(&in,&out, &rate, &dacblocksize, &advance, &scheduler);
      if (f < 0) {
          int i;

Index: s_main.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_main.c,v
retrieving revision 1.7.4.17.2.22.2.21
retrieving revision 1.7.4.17.2.22.2.22
diff -C2 -d -r1.7.4.17.2.22.2.21 -r1.7.4.17.2.22.2.22
*** s_main.c	9 Jul 2007 17:51:14 -0000	1.7.4.17.2.22.2.21
--- s_main.c	10 Jul 2007 16:36:03 -0000	1.7.4.17.2.22.2.22
***************
*** 634,648 ****
      char sbuf[MAXPDSTRING];
      int i;
!     int naudioindev, audioindev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV];
!     int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
      int nchindev, nchoutdev, rate, dacblksize, advance, scheduler;
      int nmidiindev = 0, midiindev[MAXMIDIINDEV];
      int nmidioutdev = 0, midioutdev[MAXMIDIOUTDEV];
!             /* add "extra" library to path */
      strncpy(sbuf, sys_libdir->s_name, MAXPDSTRING-30);
      sbuf[MAXPDSTRING-30] = 0;
      strcat(sbuf, "/extra");
      sys_setextrapath(sbuf);
!             /* add "doc/5.reference" library to helppath */
      strncpy(sbuf, sys_libdir->s_name, MAXPDSTRING-30);
      sbuf[MAXPDSTRING-30] = 0;
--- 634,647 ----
      char sbuf[MAXPDSTRING];
      int i;
!     t_audiodevs audio_in, audio_out;
      int nchindev, nchoutdev, rate, dacblksize, advance, scheduler;
      int nmidiindev = 0, midiindev[MAXMIDIINDEV];
      int nmidioutdev = 0, midioutdev[MAXMIDIOUTDEV];
!     /* add "extra" library to path */
      strncpy(sbuf, sys_libdir->s_name, MAXPDSTRING-30);
      sbuf[MAXPDSTRING-30] = 0;
      strcat(sbuf, "/extra");
      sys_setextrapath(sbuf);
!     /* add "doc/5.reference" library to helppath */
      strncpy(sbuf, sys_libdir->s_name, MAXPDSTRING-30);
      sbuf[MAXPDSTRING-30] = 0;
***************
*** 654,692 ****
         set up, so we leave it that way for compatibility. */
      if (!sys_mmio) {
!         for (i = 0; i < sys_nsoundin ; i++) sys_soundindevlist[i]--;
!         for (i = 0; i < sys_nsoundout; i++) sys_soundoutdevlist[i]--;
      }
!     for (i = 0; i < sys_nmidiin;  i++) sys_midiindevlist[i]--;
!     for (i = 0; i < sys_nmidiout; i++) sys_midioutdevlist[i]--;
      if (sys_listplease) sys_listdevs();
  
      /* get the current audio parameters.  These are set by the preferences mechanism (sys_loadpreferences()) or
         else are the default.  Overwrite them with any results of argument parsing, and store them again. */
!     sys_get_audio_params(&naudioindev, audioindev, chindev,
! 			 &naudiooutdev, audiooutdev, choutdev, &rate, &dacblksize, &advance, &scheduler);
!     if (sys_nchin >= 0) {
!         nchindev     = sys_nchin;    for (i=0; i<    nchindev; i++)     chindev[i] = sys_chinlist[i];
!     } else nchindev = naudioindev;
!     if (sys_nsoundin >= 0) {
!         naudioindev  = sys_nsoundin; for (i=0; i< naudioindev; i++)  audioindev[i] = sys_soundindevlist[i];
!     }
!     if (sys_nchout >= 0) {
!         nchoutdev    = sys_nchout;   for (i=0; i<   nchoutdev; i++)    choutdev[i] = sys_choutlist[i];
!     } else nchoutdev = naudiooutdev;
!     if (sys_nsoundout >= 0) {
!         naudiooutdev = sys_nsoundout;for (i=0; i<naudiooutdev; i++) audiooutdev[i] = sys_soundoutdevlist[i];
!     }
!     if (sys_nmidiin >= 0) {
!         nmidiindev   = sys_nmidiin;  for (i=0; i<  nmidiindev; i++)   midiindev[i] = sys_midiindevlist[i];
!     }
!     if (sys_nmidiout >= 0) {
!         nmidioutdev  = sys_nmidiout; for (i=0; i< nmidioutdev; i++)  midioutdev[i] = sys_midioutdevlist[i];
!     }
      if (sys_main_advance) advance = sys_main_advance;
      if (sys_main_srate)      rate = sys_main_srate;
      if (sys_main_dacblocksize) dacblksize = sys_main_dacblocksize;
!     sys_open_audio(naudioindev,  audioindev,  nchindev,  chindev,
! 		   naudiooutdev, audiooutdev, nchoutdev, choutdev,
! 		   rate, dacblksize, advance, scheduler, 0);
      sys_open_midi(nmidiindev, midiindev, nmidioutdev, midioutdev, 0);
  }
--- 653,679 ----
         set up, so we leave it that way for compatibility. */
      if (!sys_mmio) {
!         for (int i=0; i<sys_nsoundin ; i++) sys_soundindevlist[i]--;
!         for (int i=0; i<sys_nsoundout; i++) sys_soundoutdevlist[i]--;
      }
!     for (int i=0; i<sys_nmidiin;  i++) sys_midiindevlist[i]--;
!     for (int i=0; i<sys_nmidiout; i++) sys_midioutdevlist[i]--;
      if (sys_listplease) sys_listdevs();
  
      /* get the current audio parameters.  These are set by the preferences mechanism (sys_loadpreferences()) or
         else are the default.  Overwrite them with any results of argument parsing, and store them again. */
!     sys_get_audio_params(&audio_in, &audio_out, &rate, &dacblksize, &advance, &scheduler);
!     nchindev  =  sys_nchin>=0 ?  sys_nchin :  audio_in.ndev;
!     nchoutdev = sys_nchout>=0 ? sys_nchout : audio_out.ndev;
!     if (sys_nchin >=0) {for (i=0; i<    nchindev; i++)  audio_in.chdev[i] = sys_chinlist[i];}
!     if (sys_nchout>=0) {for (i=0; i<   nchoutdev; i++) audio_out.chdev[i] = sys_choutlist[i];}
!     if (sys_nsoundin>=0) {audio_in.ndev  = sys_nsoundin; for (i=0; i< audio_in.ndev; i++)  audio_in.dev[i] = sys_soundindevlist[i];}
!     if (sys_nsoundout>=0) {audio_out.ndev = sys_nsoundout;for (i=0; i<audio_out.ndev; i++) audio_out.dev[i] = sys_soundoutdevlist[i];}
!     if (sys_nmidiin >=0) {nmidiindev  = sys_nmidiin;  for (i=0; i<  nmidiindev; i++)   midiindev[i] = sys_midiindevlist[i];}
!     if (sys_nmidiout>=0) {nmidioutdev = sys_nmidiout; for (i=0; i< nmidioutdev; i++)  midioutdev[i] = sys_midioutdevlist[i];}
      if (sys_main_advance) advance = sys_main_advance;
      if (sys_main_srate)      rate = sys_main_srate;
      if (sys_main_dacblocksize) dacblksize = sys_main_dacblocksize;
!     sys_open_audio(audio_in.ndev,  audio_in.dev,  nchindev,  audio_in.chdev,
! 		  audio_out.ndev, audio_out.dev, nchoutdev, audio_out.chdev, rate, dacblksize, advance, scheduler, 0);
      sys_open_midi(nmidiindev, midiindev, nmidioutdev, midioutdev, 0);
  }

Index: s_stuff.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_stuff.h,v
retrieving revision 1.5.4.10.2.8.2.12
retrieving revision 1.5.4.10.2.8.2.13
diff -C2 -d -r1.5.4.10.2.8.2.12 -r1.5.4.10.2.8.2.13
*** s_stuff.h	10 Jul 2007 15:48:57 -0000	1.5.4.10.2.8.2.12
--- s_stuff.h	10 Jul 2007 16:36:03 -0000	1.5.4.10.2.8.2.13
***************
*** 308,319 ****
  void linux_alsa_devname(char *devname);
  
! void sys_get_audio_params(
!     int *pnaudioindev, int *paudioindev, int *chindev,
!     int *pnaudiooutdev, int *paudiooutdev, int *choutdev,
!     int *prate, int *dacblocksize, int *padvance, int *pscheduler);
! void sys_save_audio_params(
!     int naudioindev, int *audioindev, int *chindev,
!     int naudiooutdev, int *audiooutdev, int *choutdev,
!     int rate, int dacblocksize, int advance, int scheduler);
  
  /* s_file.c */
--- 308,313 ----
  void linux_alsa_devname(char *devname);
  
! void sys_get_audio_params(t_audiodevs *in, t_audiodevs *out, int *prate, int *dacblocksize, int *padvance, int *pscheduler);
! void sys_save_audio_params(t_audiodevs *in, t_audiodevs *out, int rate, int dacblocksize, int advance, int scheduler);
  
  /* s_file.c */





More information about the Pd-cvs mailing list