[PD-cvs] pd/src m_glob.c, 1.4.4.2.2.2, 1.4.4.2.2.3 s_audio.c, 1.5.4.16.2.7, 1.5.4.16.2.8

Tim Blechmann timblech at users.sourceforge.net
Fri Mar 24 22:36:42 CET 2006


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

Modified Files:
      Tag: devel_0_39
	m_glob.c s_audio.c 
Log Message:
new messges to pd:
getaudioindev: sends "audioindev $(audioindevs)" to receiver pd
getaudiooutdev: sends "audiooutdev $(audiooutdevs)" to receiver pd

if followed by a float argument, it will return the Nth audio device 
(index starting at 1)

Index: m_glob.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_glob.c,v
retrieving revision 1.4.4.2.2.2
retrieving revision 1.4.4.2.2.3
diff -C2 -d -r1.4.4.2.2.2 -r1.4.4.2.2.3
*** m_glob.c	21 Aug 2005 11:28:24 -0000	1.4.4.2.2.2
--- m_glob.c	24 Mar 2006 21:36:40 -0000	1.4.4.2.2.3
***************
*** 34,37 ****
--- 34,39 ----
  void glob_tooltips(t_pd *dummy, t_float f);
  /* tb: message-based audio configuration { */
+ void glob_audio_getaudioindevices(t_pd * dummy, t_float f);
+ void glob_audio_getaudiooutdevices(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);
***************
*** 64,67 ****
--- 66,74 ----
      int i;
      char str[80];
+     if (s == gensym("audioindevices"))
+         return;
+     if (s == gensym("audiooutdevices"))
+         return;
+     
      startpost("%s: unknown message %s ", class_getname(pd_class(x)),
          s->s_name);
***************
*** 141,144 ****
--- 148,155 ----
      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_DEFFLOAT, 0);
+     class_addmethod(glob_pdobject, (t_method)glob_audio_getaudiooutdevices,
+     	gensym("getaudiooutdev"), A_DEFFLOAT, 0);
  	/* tb } */
  #ifdef UNIX

Index: s_audio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio.c,v
retrieving revision 1.5.4.16.2.7
retrieving revision 1.5.4.16.2.8
diff -C2 -d -r1.5.4.16.2.7 -r1.5.4.16.2.8
*** s_audio.c	24 Mar 2006 15:56:30 -0000	1.5.4.16.2.7
--- s_audio.c	24 Mar 2006 21:36:40 -0000	1.5.4.16.2.8
***************
*** 592,597 ****
  #define DEVDESCSIZE 80
  
! /* tb: removed static flag */
! EXTERN void audio_getdevs(char *indevlist, int *nindevs,
      char *outdevlist, int *noutdevs, int *canmulti, 
          int maxndev, int devdescsize)
--- 592,596 ----
  #define DEVDESCSIZE 80
  
! static void audio_getdevs(char *indevlist, int *nindevs,
      char *outdevlist, int *noutdevs, int *canmulti, 
          int maxndev, int devdescsize)
***************
*** 1235,1238 ****
--- 1234,1349 ----
  }
  
+ 
+ void glob_audio_getaudioindevices(t_pd * dummy, t_float f)
+ {
+ 	float flongform = 0;
+ 	char buf[1024 + 2 * MAXNDEV*(DEVDESCSIZE+4)];
+     /* these are the devices you're using: */
+     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, i;
+     
+     char indevliststring[MAXNDEV*(DEVDESCSIZE+4)+80],
+         outdevliststring[MAXNDEV*(DEVDESCSIZE+4)+80];
+     
+ 	char str[DEVDESCSIZE];
+     
+     t_atom argv[MAXNDEV];
+     t_symbol * selector = gensym("audioindevice");
+     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)
+         {
+             t_symbol * sym;
+             strcpy(str, indevlist + i * DEVDESCSIZE);
+             sym = gensym(str);
+             SETSYMBOL(argv+i, sym);
+         }
+         typedmess(pd->s_thing, selector, nindevs, argv);
+     }
+ 	else if (f <= (float) nindevs && f > 0)
+ 	{
+         t_symbol * sym;
+ 		strcpy(str, indevlist + ((int)f - 1) * DEVDESCSIZE);
+ 		sym = gensym(str);
+         SETSYMBOL(argv+1+(int)(f), sym);
+         typedmess(pd->s_thing, selector, 1, argv);
+ 	}
+ }
+ 
+ void glob_audio_getaudiooutdevices(t_pd * dummy, float f)
+ {
+ 	float flongform = 0;
+ 	char buf[1024 + 2 * MAXNDEV*(DEVDESCSIZE+4)];
+     /* these are the devices you're using: */
+     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, i;
+     
+     char indevliststring[MAXNDEV*(DEVDESCSIZE+4)+80],
+         outdevliststring[MAXNDEV*(DEVDESCSIZE+4)+80];
+     
+ 	char str[DEVDESCSIZE];
+     
+     t_atom argv[MAXNDEV];
+     t_symbol * selector = gensym("audiooutdevices");
+     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 != noutdevs ;++i)
+         {
+             t_symbol * sym;
+             strcpy(str, outdevlist + i  * DEVDESCSIZE);
+             sym = gensym(str);
+             SETSYMBOL(argv+i, sym);
+         }
+         typedmess(pd->s_thing, selector, noutdevs, argv);
+     }
+ 	else if (f <= (float) noutdevs && f > 0)
+ 	{
+         t_symbol * sym;
+ 		strcpy(str, outdevlist + ((int)f - 1)  * DEVDESCSIZE);
+ 		sym = gensym(str);
+         SETSYMBOL(argv+1+(int)(f), sym);
+         typedmess(pd->s_thing, selector, 1, argv);
+ 	}
+ }
+ 
+ 
  /* tb } */
  





More information about the Pd-cvs mailing list