[PD-cvs] pd/src m_glob.c, 1.4.4.2.2.8, 1.4.4.2.2.9 m_sched.c, 1.5.4.35.2.12, 1.5.4.35.2.13 s_audio.c, 1.5.4.16.2.17, 1.5.4.16.2.18 s_audio_portaudio.c, 1.1.2.10, 1.1.2.11

Tim Blechmann timblech at users.sourceforge.net
Sun Jun 25 19:37:45 CEST 2006


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

Modified Files:
      Tag: devel_0_39
	m_glob.c m_sched.c s_audio.c s_audio_portaudio.c 
Log Message:
cleaned up message-based access to portaudio backend

Index: s_audio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio.c,v
retrieving revision 1.5.4.16.2.17
retrieving revision 1.5.4.16.2.18
diff -C2 -d -r1.5.4.16.2.17 -r1.5.4.16.2.18
*** s_audio.c	21 Apr 2006 14:03:17 -0000	1.5.4.16.2.17
--- s_audio.c	25 Jun 2006 17:37:42 -0000	1.5.4.16.2.18
***************
*** 212,217 ****
  		MAXNDEV, DEVDESCSIZE);
   
- 
- 	
      /* jsarlo { (*/
      if (sys_externalschedlib)
--- 212,215 ----
***************
*** 416,419 ****
--- 414,429 ----
  
  	sys_update_sleepgrain();
+ 
+ 	if (enable)
+ 	{
+ 		t_atom argv[1];
+ 
+ 	    t_symbol * selector = gensym("audio_started");
+ 		t_symbol * pd = gensym("pd");
+ 
+ 		SETFLOAT(argv, 1.);
+ 		typedmess(pd->s_thing, selector, 1, argv);
+ 	}
+ 
  }
  
***************
*** 1350,1353 ****
--- 1360,1364 ----
  extern void pa_getaudiooutdevinfo(t_float f);
  extern void pa_test_setting (int ac, t_atom *av);
+ extern void pa_get_asio_latencies(t_float f);
  
  void glob_audio_getaudioindevinfo(t_pd * dummy, t_float f)
***************
*** 1391,1394 ****
--- 1402,1417 ----
  }
  
+ void glob_audio_asio_latencies(t_pd * dummy, t_float f)
+ {
+ #ifdef USEAPI_PORTAUDIO
+ #ifndef PABLIO
+     if (sys_audioapi == API_PORTAUDIO)
+         pa_get_asio_latencies(f);
+ #endif
+ #endif
+ 	
+ }
+ 
+ 
  /* tb } */
  

Index: m_sched.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_sched.c,v
retrieving revision 1.5.4.35.2.12
retrieving revision 1.5.4.35.2.13
diff -C2 -d -r1.5.4.35.2.12 -r1.5.4.35.2.13
*** m_sched.c	13 Jun 2006 13:05:45 -0000	1.5.4.35.2.12
--- m_sched.c	25 Jun 2006 17:37:42 -0000	1.5.4.35.2.13
***************
*** 378,381 ****
--- 378,382 ----
  			t_clock *c = clock_setlist;
  			clock_unset(c); /* the compiler should easily inline this */
+ 			sys_time = c->c_settime;
  			outlet_setstacklim();
  			(*c->c_fn)(c->c_owner);
***************
*** 389,397 ****
  void sched_tick(double next_sys_time)
  {
  	sys_time = next_sys_time;
  	sched_diddsp++; /* rethink: how to get rid of this stupid histogram??? */
      dsp_tick();
  
- 	run_clock_callbacks(next_sys_time);
  
  	/* rethink: should we really do all this midi messaging in the realtime thread ? */
--- 390,398 ----
  void sched_tick(double next_sys_time)
  {
+ 	run_clock_callbacks(next_sys_time);
  	sys_time = next_sys_time;
  	sched_diddsp++; /* rethink: how to get rid of this stupid histogram??? */
      dsp_tick();
  
  
  	/* rethink: should we really do all this midi messaging in the realtime thread ? */

Index: s_audio_portaudio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/s_audio_portaudio.c,v
retrieving revision 1.1.2.10
retrieving revision 1.1.2.11
diff -C2 -d -r1.1.2.10 -r1.1.2.11
*** s_audio_portaudio.c	13 Jun 2006 12:48:01 -0000	1.1.2.10
--- s_audio_portaudio.c	25 Jun 2006 17:37:42 -0000	1.1.2.11
***************
*** 23,26 ****
--- 23,27 ----
  #ifdef MSW
  # include <malloc.h>
+ # include <pa_asio.h>
  #else
  # include <alloca.h>
***************
*** 48,53 ****
  void pa_initialize()
  {
!     if (!pa_initialized)
!     {
          pa_status = Pa_Initialize();
          if ( pa_status!= paNoError )
--- 49,54 ----
  void pa_initialize()
  {
! //    if (!pa_initialized)
! //    {
          pa_status = Pa_Initialize();
          if ( pa_status!= paNoError )
***************
*** 60,64 ****
          }
          pa_initialized = 1;
!     }
  }
  
--- 61,65 ----
          }
          pa_initialized = 1;
! //    }
  }
  
***************
*** 177,193 ****
  
          /* set block size */
!         blocksize =  sys_advance_samples;
!         
!         if (blocksize > 8192)
!             blocksize = 8192;
!         else if (blocksize < sys_dacblocksize)
!             blocksize = sys_dacblocksize;
          
!         if (blocksize != (1 << ilog2(blocksize)))
!         {
!             blocksize = (1 << ilog2(blocksize));
!         }
          
!         post("using blocksize %d", blocksize);
          
          pa_blocksize = blocksize;
--- 178,195 ----
  
          /* set block size */
! //        blocksize =  sys_advance_samples;
          
! //        if (blocksize > 8192)
! //            blocksize = 8192;
! //        else if (blocksize < sys_dacblocksize)
! //            blocksize = sys_dacblocksize;
          
! //        if (blocksize != (1 << ilog2(blocksize)))
! //        {
! //            blocksize = (1 << ilog2(blocksize));
! //        }
! 		blocksize=64;
! 
! //        post("using blocksize %d", blocksize);
          
          pa_blocksize = blocksize;
***************
*** 252,257 ****
      pa_inchans = inchans;
      pa_outchans = outchans;
-     pa_indev = indeviceno;
-     pa_outdev = outdeviceno;
      
      /* we might have adapted the channel count */
--- 254,257 ----
***************
*** 310,320 ****
  void run_all_idle_callbacks(void);
  
- void sys_xrun_notification(void);
- 
  int process (const void *input, void *output, unsigned long frameCount, 
      const PaStreamCallbackTimeInfo* timeInfo, 
      PaStreamCallbackFlags statusFlags, void *userData)
  {
!     static int started = 0;
  
  
--- 310,318 ----
  void run_all_idle_callbacks(void);
  
  int process (const void *input, void *output, unsigned long frameCount, 
      const PaStreamCallbackTimeInfo* timeInfo, 
      PaStreamCallbackFlags statusFlags, void *userData)
  {
!     static started = 0;
  
  
***************
*** 323,332 ****
  
      if (statusFlags)
!         sys_xrun_notification();
  
      if (sys_timedlock(timeout) == ETIMEDOUT)
          /* we're late */
      {
!         sys_xrun_notification();
          return 0;
      }
--- 321,331 ----
  
      if (statusFlags)
!         post("statusFlags %p", statusFlags);
  
      if (sys_timedlock(timeout) == ETIMEDOUT)
          /* we're late */
      {
!         post("timeout %d", timeout);
!         sys_log_error(ERR_SYSLOCK);
          return 0;
      }
***************
*** 546,552 ****
      t_symbol * selector = gensym("testaudiosettingresult");
      t_atom argv[1];
-     int ret;
-     PaStreamParameters inputParameters, outputParameters;
      
      indev = pdindev2paindev(indev);
      outdev = pdoutdev2paoutdev(outdev);
--- 545,551 ----
      t_symbol * selector = gensym("testaudiosettingresult");
      t_atom argv[1];
      
+ 	pa_initialize();
+             
      indev = pdindev2paindev(indev);
      outdev = pdoutdev2paoutdev(outdev);
***************
*** 554,559 ****
      if ((pa_indev == -1) && (pa_outdev == -1))
      {
!         pa_initialize();
!             
          inputParameters.device = indev;
          inputParameters.channelCount = inchans;
--- 553,559 ----
      if ((pa_indev == -1) && (pa_outdev == -1))
      {
! 	    int ret;
! 		PaStreamParameters inputParameters, outputParameters;
!         
          inputParameters.device = indev;
          inputParameters.channelCount = inchans;
***************
*** 579,582 ****
--- 579,584 ----
      int j;
      int devno;
+     pa_initialize();    
+ 
      for (j = 0, devno = 0; j < Pa_GetDeviceCount(); j++)
      {
***************
*** 587,591 ****
              if (devno == pdindev)
              {
!                 return devno;
              }
              devno++;
--- 589,593 ----
              if (devno == pdindev)
              {
!                 return j;
              }
              devno++;
***************
*** 600,603 ****
--- 602,607 ----
      int j;
      int devno;
+     pa_initialize();    
+ 
      for (j = 0, devno = 0; j < Pa_GetDeviceCount(); j++)
      {
***************
*** 608,612 ****
              if (devno == pdoutdev)
              {
!                 return devno;
              }
              devno++;
--- 612,616 ----
              if (devno == pdoutdev)
              {
!                 return j;
              }
              devno++;
***************
*** 617,618 ****
--- 621,652 ----
  }
  
+ void pa_get_asio_latencies(t_float f)
+ {
+ 	int index = (int)f;
+ 	const PaDeviceInfo *pdi = Pa_GetDeviceInfo(index);
+ 	if (pdi->hostApi != 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
+ 
+ }

Index: m_glob.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_glob.c,v
retrieving revision 1.4.4.2.2.8
retrieving revision 1.4.4.2.2.9
diff -C2 -d -r1.4.4.2.2.8 -r1.4.4.2.2.9
*** m_glob.c	13 Jun 2006 12:48:01 -0000	1.4.4.2.2.8
--- m_glob.c	25 Jun 2006 17:37:42 -0000	1.4.4.2.2.9
***************
*** 39,50 ****
  void glob_audio_getaudioindevinfo(t_pd * dummy, t_float f);
  void glob_audio_getaudiooutdevinfo(t_pd * dummy, t_float f);
! void glob_audio_samplerate(t_pd * dummy, t_float f);
! void glob_audio_delay(t_pd * dummy, t_float f);
! void glob_audio_dacblocksize(t_pd * dummy, t_float f);
! void glob_audio_scheduler(t_pd * dummy, t_float f);
  void glob_audio_device(t_pd * dummy, t_symbol *s, int argc, t_atom *argv);
! void glob_audio_device_in(t_pd * dummy, t_symbol *s, int argc, t_atom *argv);
! void glob_audio_device_out(t_pd * dummy, t_symbol *s, int argc, t_atom *argv);
  void glob_audio_getcurrent_devices(void);
  /* tb } */
  
--- 39,51 ----
  void glob_audio_getaudioindevinfo(t_pd * dummy, t_float f);
  void glob_audio_getaudiooutdevinfo(t_pd * dummy, t_float f);
! //void glob_audio_samplerate(t_pd * dummy, t_float f);
! //void glob_audio_delay(t_pd * dummy, t_float f);
! //void glob_audio_dacblocksize(t_pd * dummy, t_float f);
! //void glob_audio_scheduler(t_pd * dummy, t_float f);
  void glob_audio_device(t_pd * dummy, t_symbol *s, int argc, t_atom *argv);
! //void glob_audio_device_in(t_pd * dummy, t_symbol *s, int argc, t_atom *argv);
! //void glob_audio_device_out(t_pd * dummy, t_symbol *s, int argc, t_atom *argv);
  void glob_audio_getcurrent_devices(void);
+ void glob_audio_asio_latencies(t_pd * dummy, t_float f);
  /* tb } */
  
***************
*** 84,87 ****
--- 85,90 ----
      if (s == gensym("xrun"))
          return;
+ 	if (s == gensym("audio_started"))
+         return;
      
      startpost("%s: unknown message %s ", class_getname(pd_class(x)),
***************
*** 177,194 ****
          gensym("tooltips"), A_DEFFLOAT, 0);
  	/* tb: message-based audio configuration { */
!     class_addmethod(glob_pdobject, (t_method)glob_audio_samplerate,
!         gensym("audio-samplerate"), A_DEFFLOAT, 0);
!     class_addmethod(glob_pdobject, (t_method)glob_audio_delay,
!         	gensym("audio-delay"), A_DEFFLOAT, 0);
!     class_addmethod(glob_pdobject, (t_method)glob_audio_dacblocksize,
!         gensym("audio-dacblocksize"), A_DEFFLOAT, 0);
!     class_addmethod(glob_pdobject, (t_method)glob_audio_scheduler,
!         gensym("audio-scheduler"), A_DEFFLOAT, 0);
      class_addmethod(glob_pdobject, (t_method)glob_audio_device,
          gensym("audio-device"), A_GIMME, 0);
!     class_addmethod(glob_pdobject, (t_method)glob_audio_device_in,
!         gensym("audio-device-in"), A_GIMME, 0);
!     class_addmethod(glob_pdobject, (t_method)glob_audio_device_out,
! 	    gensym("audio-device-out"), A_GIMME, 0);
      class_addmethod(glob_pdobject, (t_method)glob_audio_getaudioindevices,
      	    gensym("getaudioindev"), A_GIMME, 0);
--- 180,197 ----
          gensym("tooltips"), A_DEFFLOAT, 0);
  	/* tb: message-based audio configuration { */
! //    class_addmethod(glob_pdobject, (t_method)glob_audio_samplerate,
! //        gensym("audio-samplerate"), A_DEFFLOAT, 0);
! //    class_addmethod(glob_pdobject, (t_method)glob_audio_delay,
! //        	gensym("audio-delay"), A_DEFFLOAT, 0);
! //    class_addmethod(glob_pdobject, (t_method)glob_audio_dacblocksize,
! //        gensym("audio-dacblocksize"), A_DEFFLOAT, 0);
! //    class_addmethod(glob_pdobject, (t_method)glob_audio_scheduler,
! //        gensym("audio-scheduler"), A_DEFFLOAT, 0);
      class_addmethod(glob_pdobject, (t_method)glob_audio_device,
          gensym("audio-device"), A_GIMME, 0);
! //    class_addmethod(glob_pdobject, (t_method)glob_audio_device_in,
! //        gensym("audio-device-in"), A_GIMME, 0);
! //    class_addmethod(glob_pdobject, (t_method)glob_audio_device_out,
! //	    gensym("audio-device-out"), A_GIMME, 0);
      class_addmethod(glob_pdobject, (t_method)glob_audio_getaudioindevices,
      	    gensym("getaudioindev"), A_GIMME, 0);
***************
*** 203,206 ****
--- 206,211 ----
      class_addmethod(glob_pdobject, (t_method)glob_audio_getcurrent_devices,
          gensym("getaudiodevice"), 0);
+ 	class_addmethod(glob_pdobject, (t_method)glob_audio_asio_latencies,
+         gensym("getasiolatencies"), A_DEFFLOAT, 0);
  	/* tb } */
  #ifdef DESIRE





More information about the Pd-cvs mailing list