[PD-cvs] pd/src s_audio.c,1.5.4.16.2.20.2.16,1.5.4.16.2.20.2.17

Mathieu Bouchard matju at users.sourceforge.net
Tue Jul 10 00:27:13 CEST 2007


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

Modified Files:
      Tag: desiredata
	s_audio.c 
Log Message:
cleanup


Index: s_audio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio.c,v
retrieving revision 1.5.4.16.2.20.2.16
retrieving revision 1.5.4.16.2.20.2.17
diff -C2 -d -r1.5.4.16.2.20.2.16 -r1.5.4.16.2.20.2.17
*** s_audio.c	9 Jul 2007 22:04:03 -0000	1.5.4.16.2.20.2.16
--- s_audio.c	9 Jul 2007 22:27:11 -0000	1.5.4.16.2.20.2.17
***************
*** 34,38 ****
  extern t_audioapi pa_api, jack_api, oss_api, alsa_api, sgi_api, mmio_api, asio_api;
  
! static t_audioapi *sys_audio(void) {
  #ifdef USEAPI_PORTAUDIO
      if (sys_audioapi == API_PORTAUDIO) return &pa_api;
--- 34,40 ----
  extern t_audioapi pa_api, jack_api, oss_api, alsa_api, sgi_api, mmio_api, asio_api;
  
! using namespace std;
! 
! static t_audioapi *sys_audio() {
  #ifdef USEAPI_PORTAUDIO
      if (sys_audioapi == API_PORTAUDIO) return &pa_api;
***************
*** 108,112 ****
  static float (*peak_fp)(t_float*, t_int, t_float) = peakvec;
  
! static int audio_isopen(void) {
      return audio_state
  	&& ((audio_naudioindev > 0 && audio_audiochindev[0] > 0)
--- 110,114 ----
  static float (*peak_fp)(t_float*, t_int, t_float) = peakvec;
  
! static int audio_isopen() {
      return audio_state
  	&& ((audio_naudioindev > 0 && audio_audiochindev[0] > 0)
***************
*** 135,140 ****
      audio_naudioindev  = naudioindev;
      audio_naudiooutdev = naudiooutdev;
!     for (int i=0; i<MAXAUDIOINDEV;  i++) audio_audioindev[i]  = audioindev[i],  audio_audiochindev[i]  = chindev[i];
!     for (int i=0; i<MAXAUDIOOUTDEV; i++) audio_audiooutdev[i] = audiooutdev[i], audio_audiochoutdev[i] = choutdev[i];
      audio_rate = rate;
      audio_dacblocksize = dacblocksize;
--- 137,142 ----
      audio_naudioindev  = naudioindev;
      audio_naudiooutdev = naudiooutdev;
!     for (int i=0; i<MAXAUDIOINDEV;  i++) {audio_audioindev[i]  = audioindev[i];  audio_audiochindev[i]  = chindev[i];}
!     for (int i=0; i<MAXAUDIOOUTDEV; i++) {audio_audiooutdev[i] = audiooutdev[i]; audio_audiochoutdev[i] = choutdev[i];}
      audio_rate = rate;
      audio_dacblocksize = dacblocksize;
***************
*** 146,156 ****
      any other API gets used.  This is only true of OSS so far. */
  #ifdef USEAPI_OSS
! void oss_init(void);
  #endif
  
  static void audio_init() {
      static int initted = 0;
!     if (initted)
!         return;
      initted = 1;
  #ifdef USEAPI_OSS
--- 148,157 ----
      any other API gets used.  This is only true of OSS so far. */
  #ifdef USEAPI_OSS
! void oss_init();
  #endif
  
  static void audio_init() {
      static int initted = 0;
!     if (initted) return;
      initted = 1;
  #ifdef USEAPI_OSS
***************
*** 172,179 ****
      sys_outchannels = chout;
      sys_dacsr = double(sr);
!     sys_advance_samples = int(sys_schedadvance*sys_dacsr/1000000.);
!     if (sys_advance_samples < /* 3 *  */sys_dacblocksize)
!         sys_advance_samples = /* 3 *  */sys_dacblocksize;
! 
      if (sys_soundin) freealignedbytes(sys_soundin,inbytes);
      sys_soundin = (t_float *)getalignedbytes(inbytes);
--- 173,177 ----
      sys_outchannels = chout;
      sys_dacsr = double(sr);
!     sys_advance_samples = max(int(sys_schedadvance*sys_dacsr/1000000.),sys_dacblocksize);
      if (sys_soundin) freealignedbytes(sys_soundin,inbytes);
      sys_soundin = (t_float *)getalignedbytes(inbytes);
***************
*** 185,191 ****
      if (SIMD_CHKCNT(sys_inchannels * sys_dacblocksize) &&
  	SIMD_CHKCNT(sys_outchannels * sys_dacblocksize))
! 	peak_fp = peakvec_simd;
!     else
! 	peak_fp = peakvec;
      if (sys_verbose) post("input channels = %d, output channels = %d", sys_inchannels, sys_outchannels);
      canvas_resume_dsp(canvas_suspend_dsp());
--- 183,188 ----
      if (SIMD_CHKCNT(sys_inchannels * sys_dacblocksize) &&
  	SIMD_CHKCNT(sys_outchannels * sys_dacblocksize))
! 	 peak_fp = peakvec_simd;
!     else peak_fp = peakvec;
      if (sys_verbose) post("input channels = %d, output channels = %d", sys_inchannels, sys_outchannels);
      canvas_resume_dsp(canvas_suspend_dsp());
***************
*** 205,211 ****
      int *choutdev, int rate, int dacblocksize, int advance, int schedmode, int enable)
  {
-     int i;
      int defaultchannels = SYS_DEFAULTCH;
-     int inchans, outchans;
      int realinchans[MAXAUDIOINDEV], realoutchans[MAXAUDIOOUTDEV];
  
--- 202,206 ----
***************
*** 237,241 ****
              } else naudioindev = nchindev = 0;
          } else {
!             for (i = 0; i < MAXAUDIOINDEV; i++) audioindev[i] = i;
              naudioindev = nchindev;
          }
--- 232,236 ----
              } else naudioindev = nchindev = 0;
          } else {
!             for (int i=0; i<MAXAUDIOINDEV; i++) audioindev[i] = i;
              naudioindev = nchindev;
          }
***************
*** 243,255 ****
          if (nchindev == -1) {
              nchindev = naudioindev;
!             for (i = 0; i < naudioindev; i++)
!                 chindev[i] = defaultchannels;
          } else if (nchindev > naudioindev) {
!             for (i = naudioindev; i < nchindev; i++) {
                  if (i == 0) audioindev[0] = DEFAULTAUDIODEV; else audioindev[i] = audioindev[i-1] + 1;
              }
              naudioindev = nchindev;
          } else if (nchindev < naudioindev) {
!             for (i = nchindev; i < naudioindev; i++) {
                  if (i == 0) chindev[0] = defaultchannels; else chindev[i] = chindev[i-1];
              }
--- 238,249 ----
          if (nchindev == -1) {
              nchindev = naudioindev;
!             for (int i=0; i<naudioindev; i++) chindev[i] = defaultchannels;
          } else if (nchindev > naudioindev) {
!             for (int i=naudioindev; i<nchindev; i++) {
                  if (i == 0) audioindev[0] = DEFAULTAUDIODEV; else audioindev[i] = audioindev[i-1] + 1;
              }
              naudioindev = nchindev;
          } else if (nchindev < naudioindev) {
!             for (int i=nchindev; i<naudioindev; i++) {
                  if (i == 0) chindev[0] = defaultchannels; else chindev[i] = chindev[i-1];
              }
***************
*** 266,270 ****
              } else nchoutdev = naudiooutdev = 0;
          } else {
!             for (i = 0; i < MAXAUDIOOUTDEV; i++) audiooutdev[i] = i;
              naudiooutdev = nchoutdev;
          }
--- 260,264 ----
              } else nchoutdev = naudiooutdev = 0;
          } else {
!             for (int i=0; i<MAXAUDIOOUTDEV; i++) audiooutdev[i] = i;
              naudiooutdev = nchoutdev;
          }
***************
*** 272,283 ****
          if (nchoutdev == -1) {
              nchoutdev = naudiooutdev;
!             for (i = 0; i < naudiooutdev; i++) choutdev[i] = defaultchannels;
          } else if (nchoutdev > naudiooutdev) {
!             for (i = naudiooutdev; i < nchoutdev; i++) {
                  if (i == 0) audiooutdev[0] = DEFAULTAUDIODEV; else audiooutdev[i] = audiooutdev[i-1] + 1;
              }
              naudiooutdev = nchoutdev;
          } else if (nchoutdev < naudiooutdev) {
!             for (i = nchoutdev; i < naudiooutdev; i++) {
                  if (i == 0) choutdev[0] = defaultchannels; else choutdev[i] = choutdev[i-1];
              }
--- 266,277 ----
          if (nchoutdev == -1) {
              nchoutdev = naudiooutdev;
!             for (int i=0; i<naudiooutdev; i++) choutdev[i] = defaultchannels;
          } else if (nchoutdev > naudiooutdev) {
!             for (int i=naudiooutdev; i<nchoutdev; i++) {
                  if (i == 0) audiooutdev[0] = DEFAULTAUDIODEV; else audiooutdev[i] = audiooutdev[i-1] + 1;
              }
              naudiooutdev = nchoutdev;
          } else if (nchoutdev < naudiooutdev) {
!             for (int i=nchoutdev; i<naudiooutdev; i++) {
                  if (i == 0) choutdev[0] = defaultchannels; else choutdev[i] = choutdev[i-1];
              }
***************
*** 286,297 ****
      }
      /* count total number of input and output channels */
!     for (i = inchans = 0; i < naudioindev; i++)
!         inchans += (realinchans[i] = (chindev[i] > 0 ? chindev[i] : 0));
!     for (i = outchans = 0; i < naudiooutdev; i++)
!         outchans += (realoutchans[i] = (choutdev[i] > 0 ? choutdev[i] : 0));
!         /* if no input or output devices seem to have been specified,
!         this really means just disable audio, which we now do. */
!     if (!inchans && !outchans)
!         enable = 0;
      sys_schedadvance = advance * 1000;
  
--- 280,288 ----
      }
      /* count total number of input and output channels */
!     int inchans=0, outchans=0;
!     for (int i=0;  i < naudioindev;  i++)  inchans += (realinchans[i]  = (chindev[i] > 0  ?  chindev[i] : 0));
!     for (int i=0; i < naudiooutdev; i++) outchans += (realoutchans[i] = (choutdev[i] > 0 ? choutdev[i] : 0));
!     /* if no input or output devices seem to have been specified, this really means just disable audio, which we now do. */
!     if (!inchans && !outchans) enable = 0;
      sys_schedadvance = advance * 1000;
  
***************
*** 341,346 ****
  }
  
! extern void sgi_close_audio(void);
! void sys_close_audio(void) {
      /* jsarlo { (*/
      if (sys_externalschedlib) return;
--- 332,336 ----
  }
  
! void sys_close_audio() {
      /* jsarlo { (*/
      if (sys_externalschedlib) return;
***************
*** 354,358 ****
  
  /* open audio using whatever parameters were last used */
! void sys_reopen_audio( void) {
      int naudioindev, audioindev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV];
      int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
--- 344,348 ----
  
  /* open audio using whatever parameters were last used */
! void sys_reopen_audio() {
      int naudioindev, audioindev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV];
      int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
***************
*** 367,372 ****
  /* tb: default value of peak_fp {*/
  float peakvec(t_float* vec, t_int n, t_float cur_max) {
! 	int i;
! 	for (i = 0; i != n; ++i) {
  		float f = *vec++;
  		if (f > cur_max) cur_max = f;
--- 357,361 ----
  /* tb: default value of peak_fp {*/
  float peakvec(t_float* vec, t_int n, t_float cur_max) {
! 	for (int i=0; i<n; i++) {
  		float f = *vec++;
  		if (f > cur_max) cur_max = f;
***************
*** 377,387 ****
  /* } */
  
! void sys_peakmeters(void) {
      if (sys_inchannels)  sys_inmax  = peak_fp(sys_soundin, sys_inchannels  * sys_dacblocksize, sys_inmax);
      if (sys_outchannels) sys_outmax = peak_fp(sys_soundout,sys_outchannels * sys_dacblocksize, sys_outmax);
  }
  
! extern int sgi_send_dacs(void);
! int sys_send_dacs(void) {
      if (sys_meters) sys_peakmeters();
      if (sys_audio()) return sys_audio()->send_dacs();
--- 366,375 ----
  /* } */
  
! void sys_peakmeters() {
      if (sys_inchannels)  sys_inmax  = peak_fp(sys_soundin, sys_inchannels  * sys_dacblocksize, sys_inmax);
      if (sys_outchannels) sys_outmax = peak_fp(sys_soundout,sys_outchannels * sys_dacblocksize, sys_outmax);
  }
  
! int sys_send_dacs() {
      if (sys_meters) sys_peakmeters();
      if (sys_audio()) return sys_audio()->send_dacs();
***************
*** 390,396 ****
  }
  
! float sys_getsr(void) {return sys_dacsr;}
! int sys_get_outchannels(void) {return sys_outchannels;}
! int sys_get_inchannels(void)  {return sys_inchannels;}
  
  void sys_getmeters(float *inmax, float *outmax) {
--- 378,384 ----
  }
  
! float sys_getsr() {return sys_dacsr;}
! int sys_get_outchannels() {return sys_outchannels;}
! int sys_get_inchannels()  {return sys_inchannels;}
  
  void sys_getmeters(float *inmax, float *outmax) {
***************
*** 403,410 ****
  }
  
! void sys_reportidle(void) {}
  
- extern void sgi_getdevs(char *indevlist, int *nindevs,
-     char *outdevlist, int *noutdevs, int *canmulti, int maxndev, int devdescsize);
  static void audio_getdevs(char *indevlist, int *nindevs,
      char *outdevlist, int *noutdevs, int *canmulti, int maxndev, int devdescsize) {
--- 391,396 ----
  }
  
! void sys_reportidle() {}
  
  static void audio_getdevs(char *indevlist, int *nindevs,
      char *outdevlist, int *noutdevs, int *canmulti, int maxndev, int devdescsize) {
***************
*** 413,419 ****
      else {
          /* this shouldn't happen once all the above get filled in. */
-         int i;
          *nindevs = *noutdevs = 3;
!         for (i = 0; i < 3; i++) {
              sprintf(indevlist + i * devdescsize, "input device #%d", i+1);
              sprintf(outdevlist + i * devdescsize, "output device #%d", i+1);
--- 399,404 ----
      else {
          /* this shouldn't happen once all the above get filled in. */
          *nindevs = *noutdevs = 3;
!         for (int i=0; i<3; i++) {
              sprintf(indevlist + i * devdescsize, "input device #%d", i+1);
              sprintf(outdevlist + i * devdescsize, "output device #%d", i+1);
***************
*** 423,444 ****
  }
  
! static void sys_listaudiodevs(void) {
      char indevlist[MAXNDEV*DEVDESCSIZE], outdevlist[MAXNDEV*DEVDESCSIZE];
      int nindevs = 0, noutdevs = 0, i, canmulti = 0;
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti,  MAXNDEV, DEVDESCSIZE);
!     /* To agree with command line flags, normally start at 1 */
!     /* But microsoft "MMIO" device list starts at 0 (the "mapper"). */
      /* (see also sys_mmio variable in s_main.c)  */
      if (!nindevs) post("no audio input devices found");
      else {
          post("audio input devices:");
!         for (i = 0; i < nindevs; i++)
!             post("%d. %s", i + (sys_audioapi != API_MMIO), indevlist + i * DEVDESCSIZE);
      }
      if (!noutdevs)  post("no audio output devices found");
      else {
          post("audio output devices:");
!         for (i = 0; i < noutdevs; i++)
!             post("%d. %s", i + (sys_audioapi != API_MMIO), outdevlist + i * DEVDESCSIZE);
      }
      post("API number %d\n", sys_audioapi);
--- 408,426 ----
  }
  
! static void sys_listaudiodevs() {
      char indevlist[MAXNDEV*DEVDESCSIZE], outdevlist[MAXNDEV*DEVDESCSIZE];
      int nindevs = 0, noutdevs = 0, i, canmulti = 0;
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti,  MAXNDEV, DEVDESCSIZE);
!     /* To agree with command line flags, normally start at 1; but microsoft "MMIO" device list starts at 0 (the "mapper"). */
      /* (see also sys_mmio variable in s_main.c)  */
      if (!nindevs) post("no audio input devices found");
      else {
          post("audio input devices:");
!         for (i = 0; i < nindevs;  i++) post("%d. %s", i + (sys_audioapi != API_MMIO),  indevlist + i * DEVDESCSIZE);
      }
      if (!noutdevs)  post("no audio output devices found");
      else {
          post("audio output devices:");
!         for (i = 0; i < noutdevs; i++) post("%d. %s", i + (sys_audioapi != API_MMIO), outdevlist + i * DEVDESCSIZE);
      }
      post("API number %d\n", sys_audioapi);
***************
*** 450,509 ****
      int naudioindev, audioindev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV];
      int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
-     int audioindev1, audioindev2, audioindev3, audioindev4,
-         audioinchan1, audioinchan2, audioinchan3, audioinchan4,
-         audiooutdev1, audiooutdev2, audiooutdev3, audiooutdev4,
-         audiooutchan1, audiooutchan2, audiooutchan3, audiooutchan4;
      int rate, dacblocksize, advance, scheduler;
      /* these are all the devices on your system: */
      char indevlist[MAXNDEV*DEVDESCSIZE], outdevlist[MAXNDEV*DEVDESCSIZE];
      int nindevs = 0, noutdevs = 0, canmulti = 0;
-     std::ostringstream indevliststring;
-     std::ostringstream outdevliststring;
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti, MAXNDEV, DEVDESCSIZE);
!     indevliststring << "{";
!     for (int i=0; i<nindevs;  i++) indevliststring << "{" << (indevlist + i*DEVDESCSIZE) << "} ";
!     indevliststring << "}";
!     outdevliststring << "{";
!     for (int i=0; i<noutdevs; i++) outdevliststring << "{" << (outdevlist + i*DEVDESCSIZE) << "} ";
!     outdevliststring << "}";
!     sys_get_audio_params(&naudioindev, audioindev, chindev,
!        &naudiooutdev, audiooutdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
      if (naudioindev > 1 || naudiooutdev > 1) flongform = 1;
!     std::ostringstream audioindevs;   for (int i=0; i<naudioindev;  i++) audioindevs   << audioindev [i] << " ";
!     std::ostringstream audiooutdevs;  for (int i=0; i<naudiooutdev; i++) audiooutdevs  << audiooutdev[i] << " ";
!     std::ostringstream audioinchans;  for (int i=0; i<naudioindev;  i++) audioinchans  << chindev    [i] << " ";
!     std::ostringstream audiooutchans; for (int i=0; i<naudiooutdev; i++) audiooutchans << choutdev   [i] << " ";
! 
!     sys_vgui("pdtk_audio_dialog %s {%s} {%s} %s {%s} {%s} %d %d %d %d %d\n",
!         indevliststring.str().data(), audioindevs.str().data(), audioinchans.str().data(),
!         outdevliststring.str().data(), audiooutdevs.str().data(), audiooutchans.str().data(),
          rate, dacblocksize, advance, canmulti, flongform!=0);
  }
  
!     /* new values from dialog window */
  void glob_audio_dialog(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) {
!     int i, nindev, noutdev;
      int newaudioindev[4], newaudioinchan[4], newaudiooutdev[4], newaudiooutchan[4];
      /* the new values the dialog came back with: */
!     int newrate = atom_getintarg(16, argc, argv);
      int newdacblocksize = atom_getintarg(17, argc, argv);
!     int newadvance = atom_getintarg(18, argc, argv);
!     int newschedmode = atom_getintarg(19, argc, argv);
!     for (i = 0; i < 4; i++) {
!         newaudioindev[i] = atom_getintarg(i, argc, argv);
!         newaudioinchan[i] = atom_getintarg(i+4, argc, argv);
!         newaudiooutdev[i] = atom_getintarg(i+8, argc, argv);
          newaudiooutchan[i] = atom_getintarg(i+12, argc, argv);
      }
!     for (i = 0, nindev = 0; i < 4; i++) {
          if (newaudioinchan[i]) {
!             newaudioindev[nindev] = newaudioindev[i];
              newaudioinchan[nindev] = newaudioinchan[i];
              nindev++;
          }
      }
!     for (i = 0, noutdev = 0; i < 4; i++) {
          if (newaudiooutchan[i]) {
!             newaudiooutdev[noutdev] = newaudiooutdev[i];
              newaudiooutchan[noutdev] = newaudiooutchan[i];
              noutdev++;
--- 432,479 ----
      int naudioindev, audioindev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV];
      int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
      int rate, dacblocksize, advance, scheduler;
      /* these are all the devices on your system: */
      char indevlist[MAXNDEV*DEVDESCSIZE], outdevlist[MAXNDEV*DEVDESCSIZE];
      int nindevs = 0, noutdevs = 0, canmulti = 0;
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti, MAXNDEV, DEVDESCSIZE);
!     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(&naudioindev,audioindev,chindev,&naudiooutdev,audiooutdev,choutdev,&rate,&dacblocksize,&advance,&scheduler);
      if (naudioindev > 1 || naudiooutdev > 1) flongform = 1;
!     ostringstream audioindevs;   for (int i=0; i<naudioindev;  i++) audioindevs   << " " << audioindev [i];
!     ostringstream audiooutdevs;  for (int i=0; i<naudiooutdev; i++) audiooutdevs  << " " << audiooutdev[i];
!     ostringstream audioinchans;  for (int i=0; i<naudioindev;  i++) audioinchans  << " " << chindev    [i];
!     ostringstream audiooutchans; for (int i=0; i<naudiooutdev; i++) audiooutchans << " " << choutdev   [i];
!     sys_vgui("pdtk_audio_dialog {%s} {%s} {%s} {%s} {%s} {%s} %d %d %d %d %d\n",
!         indevliststring .str().data()+1,  audioindevs.str().data()+1,  audioinchans.str().data()+1,
!         outdevliststring.str().data()+1, audiooutdevs.str().data()+1, audiooutchans.str().data()+1,
          rate, dacblocksize, advance, canmulti, flongform!=0);
  }
  
! /* new values from dialog window */
  void glob_audio_dialog(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) {
!     int nindev=0, noutdev=0;
      int newaudioindev[4], newaudioinchan[4], newaudiooutdev[4], newaudiooutchan[4];
      /* the new values the dialog came back with: */
!     int newrate         = atom_getintarg(16, argc, argv);
      int newdacblocksize = atom_getintarg(17, argc, argv);
!     int newadvance      = atom_getintarg(18, argc, argv);
!     int newschedmode    = atom_getintarg(19, argc, argv);
!     for (int i=0; i<4; i++) {
!         newaudioindev[i]   = atom_getintarg(i,    argc, argv);
!         newaudioinchan[i]  = atom_getintarg(i+4,  argc, argv);
!         newaudiooutdev[i]  = atom_getintarg(i+8,  argc, argv);
          newaudiooutchan[i] = atom_getintarg(i+12, argc, argv);
      }
!     for (int i=0; i<4; i++) {
          if (newaudioinchan[i]) {
!             newaudioindev[nindev]  = newaudioindev[i];
              newaudioinchan[nindev] = newaudioinchan[i];
              nindev++;
          }
      }
!     for (int i=0; i<4; i++) {
          if (newaudiooutchan[i]) {
!             newaudiooutdev[noutdev]  = newaudiooutdev[i];
              newaudiooutchan[noutdev] = newaudiooutchan[i];
              noutdev++;
***************
*** 511,521 ****
      }
      sys_close_audio();
!     sys_open_audio(nindev, newaudioindev, nindev, newaudioinchan,
!         noutdev, newaudiooutdev, noutdev, newaudiooutchan,
!         newrate, newdacblocksize, newadvance, newschedmode, 1);
  }
  
! extern void sgi_listaudiodevs(void);
! void sys_listdevs(void) {
      if (sys_audioapi == API_PORTAUDIO) sys_listaudiodevs(); else
  #ifdef USEAPI_JACK
--- 481,491 ----
      }
      sys_close_audio();
!     sys_open_audio(nindev,  newaudioindev,  nindev,  newaudioinchan,
!                    noutdev, newaudiooutdev, noutdev, newaudiooutchan,
!                    newrate, newdacblocksize, newadvance, newschedmode, 1);
  }
  
! extern void sgi_listaudiodevs();
! void sys_listdevs() {
      if (sys_audioapi == API_PORTAUDIO) sys_listaudiodevs(); else
  #ifdef USEAPI_JACK
***************
*** 606,610 ****
  void alsa_putzeros(int iodev, int n);
  void alsa_getzeros(int iodev, int n);
! void alsa_printstate(void);
  #endif
  
--- 576,580 ----
  void alsa_putzeros(int iodev, int n);
  void alsa_getzeros(int iodev, int n);
! void alsa_printstate();
  #endif
  
***************
*** 635,639 ****
  }
  
! void glob_audio_api(t_pd * dummy, t_float f) {
  	int newapi = (int)f;
  	sys_close_audio();
--- 605,609 ----
  }
  
! void glob_audio_api(t_pd *dummy, t_float f) {
  	int newapi = (int)f;
  	sys_close_audio();
***************
*** 641,645 ****
  }
  
! void glob_audio_delay(t_pd * dummy, t_float f) {
  	int naudioindev,  audioindev[MAXAUDIOINDEV],   audiochindev[MAXAUDIOINDEV];
  	int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], audiochoutdev[MAXAUDIOOUTDEV];
--- 611,615 ----
  }
  
! void glob_audio_delay(t_pd *dummy, t_float f) {
  	int naudioindev,  audioindev[MAXAUDIOINDEV],   audiochindev[MAXAUDIOINDEV];
  	int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], audiochoutdev[MAXAUDIOOUTDEV];
***************
*** 685,696 ****
  }
  
! void glob_audio_device(t_pd * dummy, t_symbol *s, int argc, t_atom *argv) {
  	int naudioindev,  audioindev[MAXAUDIOINDEV],   audiochindev[MAXAUDIOINDEV];
  	int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], audiochoutdev[MAXAUDIOOUTDEV];
! 	int rate, dacblocksize, advance, scheduler, i;
  	sys_get_audio_params(&naudioindev, audioindev, audiochindev,
  		 &naudiooutdev, audiooutdev, audiochoutdev, &rate, &dacblocksize, &advance, &scheduler);
  	naudiooutdev = naudioindev = (int)atom_getfloatarg(0, argc, argv);
! 	for (i = 0; i != MAXAUDIOINDEV; i++) {
  		audiooutdev  [i] = audioindev  [i] = int(atom_getfloatarg(i*2+1, argc, argv));
  		audiochoutdev[i] = audiochindev[i] = int(atom_getfloatarg(i*2+2, argc, argv));
--- 655,666 ----
  }
  
! void glob_audio_device(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) {
  	int naudioindev,  audioindev[MAXAUDIOINDEV],   audiochindev[MAXAUDIOINDEV];
  	int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], audiochoutdev[MAXAUDIOOUTDEV];
! 	int rate, dacblocksize, advance, scheduler;
  	sys_get_audio_params(&naudioindev, audioindev, audiochindev,
  		 &naudiooutdev, audiooutdev, audiochoutdev, &rate, &dacblocksize, &advance, &scheduler);
  	naudiooutdev = naudioindev = (int)atom_getfloatarg(0, argc, argv);
! 	for (int i=0; i<MAXAUDIOINDEV; i++) {
  		audiooutdev  [i] = audioindev  [i] = int(atom_getfloatarg(i*2+1, argc, argv));
  		audiochoutdev[i] = audiochindev[i] = int(atom_getfloatarg(i*2+2, argc, argv));
***************
*** 701,712 ****
  }
  
! void glob_audio_device_in(t_pd * dummy, t_symbol *s, int argc, t_atom *argv) {
  	int naudioindev,  audioindev[MAXAUDIOINDEV],   audiochindev[MAXAUDIOINDEV];
  	int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], audiochoutdev[MAXAUDIOOUTDEV];
! 	int rate, dacblocksize, advance, scheduler, i;
  	sys_get_audio_params(&naudioindev, audioindev, audiochindev,
  		&naudiooutdev, audiooutdev, audiochoutdev, &rate, &dacblocksize, &advance, &scheduler);
  	naudioindev = (int)atom_getfloatarg(0, argc, argv);
! 	for (i = 0; i != MAXAUDIOINDEV; i=i+2) {
  		audioindev  [i] = atom_getintarg(i+1, argc, argv);
  		audiochindev[i] = atom_getintarg(i+2, argc, argv);
--- 671,682 ----
  }
  
! void glob_audio_device_in(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) {
  	int naudioindev,  audioindev[MAXAUDIOINDEV],   audiochindev[MAXAUDIOINDEV];
  	int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], audiochoutdev[MAXAUDIOOUTDEV];
! 	int rate, dacblocksize, advance, scheduler;
  	sys_get_audio_params(&naudioindev, audioindev, audiochindev,
  		&naudiooutdev, audiooutdev, audiochoutdev, &rate, &dacblocksize, &advance, &scheduler);
  	naudioindev = (int)atom_getfloatarg(0, argc, argv);
! 	for (int i=0; i<MAXAUDIOINDEV; i=i+2) {
  		audioindev  [i] = atom_getintarg(i+1, argc, argv);
  		audiochindev[i] = atom_getintarg(i+2, argc, argv);
***************
*** 720,728 ****
  	int naudioindev,  audioindev[MAXAUDIOINDEV],   audiochindev[MAXAUDIOINDEV];
  	int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], audiochoutdev[MAXAUDIOOUTDEV];
! 	int rate, dacblocksize, advance, scheduler, i;
  	sys_get_audio_params(&naudioindev, audioindev, audiochindev,
  		&naudiooutdev, audiooutdev, audiochoutdev, &rate, &dacblocksize, &advance, &scheduler);
  	naudiooutdev = (int)atom_getfloatarg(0, argc, argv);
! 	for (i = 0; i != MAXAUDIOOUTDEV; i=i+2) {
  		audiooutdev  [i] = atom_getintarg(i+1, argc, argv);
  		audiochoutdev[i] = atom_getintarg(i+2, argc, argv);
--- 690,699 ----
  	int naudioindev,  audioindev[MAXAUDIOINDEV],   audiochindev[MAXAUDIOINDEV];
  	int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], audiochoutdev[MAXAUDIOOUTDEV];
! 	int rate, dacblocksize, advance, scheduler;
  	sys_get_audio_params(&naudioindev, audioindev, audiochindev,
  		&naudiooutdev, audiooutdev, audiochoutdev, &rate, &dacblocksize, &advance, &scheduler);
  	naudiooutdev = (int)atom_getfloatarg(0, argc, argv);
! 	/* i+=2 ? isn't that a bug??? */
! 	for (int i=0; i<MAXAUDIOOUTDEV; i+=2) {
  		audiooutdev  [i] = atom_getintarg(i+1, argc, argv);
  		audiochoutdev[i] = atom_getintarg(i+2, argc, argv);
***************
*** 734,738 ****
  
  /* some general helper functions */
! void sys_update_sleepgrain(void) {
      sys_sleepgrain = sys_schedadvance/4;
      if (sys_sleepgrain < 1000) sys_sleepgrain = 1000;
--- 705,709 ----
  
  /* some general helper functions */
! void sys_update_sleepgrain() {
      sys_sleepgrain = sys_schedadvance/4;
      if (sys_sleepgrain < 1000) sys_sleepgrain = 1000;
***************
*** 750,761 ****
      t_atom argv[MAXNDEV];
      int f = ac ? (int)atom_getfloatarg(0,ac,av) : -1;
!     t_symbol * selector = gensym("audioindev");
!     t_symbol * pd = gensym("pd");
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti, MAXNDEV, DEVDESCSIZE);
      sys_get_audio_params(&naudioindev, audioindev, chindev, &naudiooutdev,
          audiooutdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
      if (f < 0) {
!         int i;
!         for (i = 0; i != nindevs ;++i) SETSTRING(argv+i,indevlist + i * DEVDESCSIZE);
          typedmess(pd->s_thing, selector, nindevs, argv);
      } else if (f < nindevs) {
--- 721,731 ----
      t_atom argv[MAXNDEV];
      int f = ac ? (int)atom_getfloatarg(0,ac,av) : -1;
!     t_symbol *selector = gensym("audioindev");
!     t_symbol *pd = gensym("pd");
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti, MAXNDEV, DEVDESCSIZE);
      sys_get_audio_params(&naudioindev, audioindev, chindev, &naudiooutdev,
          audiooutdev, choutdev, &rate, &dacblocksize, &advance, &scheduler);
      if (f < 0) {
!         for (int i=0; i<nindevs ;++i) SETSTRING(argv+i,indevlist + i * DEVDESCSIZE);
          typedmess(pd->s_thing, selector, nindevs, argv);
      } else if (f < nindevs) {
***************
*** 791,795 ****
  
  /* some prototypes from s_audio_portaudio.c */
! extern void pa_getcurrent_devices(void);
  extern void pa_getaudioininfo(t_float f);
  extern void pa_getaudiooutinfo(t_float f);
--- 761,765 ----
  
  /* some prototypes from s_audio_portaudio.c */
! extern void pa_getcurrent_devices();
  extern void pa_getaudioininfo(t_float f);
  extern void pa_getaudiooutinfo(t_float f);
***************
*** 812,816 ****
  #endif
  }
! void glob_audio_getcurrent_devices(void) {
  #if defined(USEAPI_PORTAUDIO) && !defined(PABLIO)
      if (sys_audioapi == API_PORTAUDIO) pa_getcurrent_devices();
--- 782,786 ----
  #endif
  }
! void glob_audio_getcurrent_devices() {
  #if defined(USEAPI_PORTAUDIO) && !defined(PABLIO)
      if (sys_audioapi == API_PORTAUDIO) pa_getcurrent_devices();
***************
*** 824,826 ****
  
  /* tb } */
- 
--- 794,795 ----





More information about the Pd-cvs mailing list