[PD-cvs] pd/src d_array.c,1.1.1.3.2.1,1.1.1.3.2.2 d_ctl.c,1.1.1.3.2.7,1.1.1.3.2.8 d_delay.c,1.1.1.3.2.1,1.1.1.3.2.2 d_filter.c,1.1.1.2.8.1,1.1.1.2.8.2 d_global.c,1.1.1.2.8.2,1.1.1.2.8.3 d_osc.c,1.1.1.2.2.2,1.1.1.2.2.3 d_soundfile.c,1.1.1.2.2.18,1.1.1.2.2.19 g_hdial.c,1.1.1.4.2.2,1.1.1.4.2.3 g_template.c,1.1.1.3.2.2,1.1.1.3.2.3 g_text.c,1.1.1.4.2.3,1.1.1.4.2.4 g_vdial.c,1.1.1.4.2.2,1.1.1.4.2.3 m_binbuf.c,1.1.1.4.2.5,1.1.1.4.2.6 m_class.c,1.1.1.2.2.4,1.1.1.2.2.5 m_imp.h,1.1.1.2.2.2,1.1.1.2.2.3 m_pd.h,1.1.1.4.2.14,1.1.1.4.2.15 notes.txt,1.1.1.4.2.6,1.1.1.4.2.7 s_main.c,1.1.1.4.2.13,1.1.1.4.2.14 u_main.tk,1.1.1.4.2.11,1.1.1.4.2.12 x_misc.c,1.1.1.2,1.1.1.2.2.1 x_time.c,1.1.1.1,1.1.1.1.16.1

Tim Blechmann timblech at users.sourceforge.net
Fri Jul 23 10:46:43 CEST 2004


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

Modified Files:
      Tag: devel_0_37
	d_array.c d_ctl.c d_delay.c d_filter.c d_global.c d_osc.c 
	d_soundfile.c g_hdial.c g_template.c g_text.c g_vdial.c 
	m_binbuf.c m_class.c m_imp.h m_pd.h notes.txt s_main.c 
	u_main.tk x_misc.c x_time.c 
Log Message:
importing miller's 0.37-2 to devel_0_37

Index: m_binbuf.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_binbuf.c,v
retrieving revision 1.1.1.4.2.5
retrieving revision 1.1.1.4.2.6
diff -C2 -d -r1.1.1.4.2.5 -r1.1.1.4.2.6
*** m_binbuf.c	24 Feb 2004 10:15:27 -0000	1.1.1.4.2.5
--- m_binbuf.c	23 Jul 2004 08:46:40 -0000	1.1.1.4.2.6
***************
*** 13,16 ****
--- 13,17 ----
  #include <stdlib.h>
  #include "m_pd.h"
+ #include "s_stuff.h"
  #include <stdio.h>
  #ifdef UNIX
***************
*** 862,866 ****
  			    atom_getfloatarg(5, natom, nextmess) -
  			    	atom_getfloatarg(3, natom, nextmess),
! 			    12.);
  	    	}
  	    }
--- 863,867 ----
  			    atom_getfloatarg(5, natom, nextmess) -
  			    	atom_getfloatarg(3, natom, nextmess),
! 			    (float)sys_defaultfont);
  	    	}
  	    }
***************
*** 899,907 ****
  				    nextmess[i].a_w.w_symbol = gensym("f");
  		    }
  	    	    SETSYMBOL(outmess, gensym("#X"));
  	    	    SETSYMBOL(outmess + 1, gensym("obj"));
  		    outmess[2] = nextmess[2];
  		    outmess[3] = nextmess[3];
! 		    for (i = 6; i < natom; i++)
  			outmess[i-2] = nextmess[i];
  	    	    SETSEMI(outmess + natom - 2);
--- 900,911 ----
  				    nextmess[i].a_w.w_symbol = gensym("f");
  		    }
+ 		    if (classname == gensym("table"))
+ 		    	classname = gensym("TABLE");
  	    	    SETSYMBOL(outmess, gensym("#X"));
  	    	    SETSYMBOL(outmess + 1, gensym("obj"));
  		    outmess[2] = nextmess[2];
  		    outmess[3] = nextmess[3];
! 		    SETSYMBOL(outmess+4, classname);
! 		    for (i = 7; i < natom; i++)
  			outmess[i-2] = nextmess[i];
  	    	    SETSEMI(outmess + natom - 2);

Index: g_text.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_text.c,v
retrieving revision 1.1.1.4.2.3
retrieving revision 1.1.1.4.2.4
diff -C2 -d -r1.1.1.4.2.3 -r1.1.1.4.2.4
*** g_text.c	22 Feb 2004 17:36:50 -0000	1.1.1.4.2.3
--- g_text.c	23 Jul 2004 08:46:40 -0000	1.1.1.4.2.4
***************
*** 456,474 ****
  #endif
  
  static void gatom_set(t_gatom *x, t_symbol *s, int argc, t_atom *argv)
  {
      t_atom oldatom = x->a_atom;
!     int update = 0;
      if (!argc) return;
      if (x->a_atom.a_type == A_FLOAT)
      	x->a_atom.a_w.w_float = atom_getfloat(argv),
! 	    update = (x->a_atom.a_w.w_float != oldatom.a_w.w_float);
      else if (x->a_atom.a_type == A_SYMBOL)
      	x->a_atom.a_w.w_symbol = atom_getsymbol(argv),
! 	    update = (x->a_atom.a_w.w_symbol != oldatom.a_w.w_symbol);
!     binbuf_clear(x->a_text.te_binbuf);
!     binbuf_add(x->a_text.te_binbuf, 1, &x->a_atom);
!     if (update)
!     	glist_retext(x->a_glist, &x->a_text);
      x->a_buf[0] = 0;
  }
--- 456,479 ----
  #endif
  
+ static void gatom_retext(t_gatom *x, int senditup)
+ {
+     binbuf_clear(x->a_text.te_binbuf);
+     binbuf_add(x->a_text.te_binbuf, 1, &x->a_atom);
+     if (senditup)
+     	glist_retext(x->a_glist, &x->a_text);
+ }
+ 
  static void gatom_set(t_gatom *x, t_symbol *s, int argc, t_atom *argv)
  {
      t_atom oldatom = x->a_atom;
!     int senditup = 0;
      if (!argc) return;
      if (x->a_atom.a_type == A_FLOAT)
      	x->a_atom.a_w.w_float = atom_getfloat(argv),
! 	    senditup = (x->a_atom.a_w.w_float != oldatom.a_w.w_float);
      else if (x->a_atom.a_type == A_SYMBOL)
      	x->a_atom.a_w.w_symbol = atom_getsymbol(argv),
! 	    senditup = (x->a_atom.a_w.w_symbol != oldatom.a_w.w_symbol);
!     gatom_retext(x, senditup);
      x->a_buf[0] = 0;
  }
***************
*** 568,576 ****
      	/* we're being notified that no more keys will come for this grab */
  	if (x->a_buf[0])
! 	{
!     	    binbuf_clear(x->a_text.te_binbuf);
!     	    binbuf_add(x->a_text.te_binbuf, 1, &x->a_atom);
! 	    glist_retext(x->a_glist, &x->a_text);
!     	}
  	return;
      }
--- 573,577 ----
      	/* we're being notified that no more keys will come for this grab */
  	if (x->a_buf[0])
! 	    gatom_retext(x, 1);
  	return;
      }
***************
*** 584,592 ****
      else if (c == '\n')
      {
!     	if (x->a_atom.a_type == A_FLOAT)
!     	    gatom_float(x, atof(x->a_buf));
!     	else if (x->a_atom.a_type == A_SYMBOL)
!     	    gatom_symbol(x, gensym(x->a_buf));
      	else bug("gatom_key");
      }
      else if (len < (ATOMBUFSIZE-1))
--- 585,596 ----
      else if (c == '\n')
      {
! 	if (x->a_atom.a_type == A_FLOAT)
!     	    x->a_atom.a_w.w_float = atof(x->a_buf);
! 	else if (x->a_atom.a_type == A_SYMBOL)
!     	    x->a_atom.a_w.w_symbol = gensym(x->a_buf);
      	else bug("gatom_key");
+     	gatom_bang(x);
+ 	gatom_retext(x, 1);
+     	x->a_buf[0] = 0;
      }
      else if (len < (ATOMBUFSIZE-1))

Index: u_main.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
retrieving revision 1.1.1.4.2.11
retrieving revision 1.1.1.4.2.12
diff -C2 -d -r1.1.1.4.2.11 -r1.1.1.4.2.12
*** u_main.tk	22 Feb 2004 05:52:16 -0000	1.1.1.4.2.11
--- u_main.tk	23 Jul 2004 08:46:40 -0000	1.1.1.4.2.12
***************
*** 1958,1961 ****
--- 1958,1965 ----
      if {[string index $hhhgui_nam 0] == "$"} {
         set hhhgui_nam [string replace $hhhgui_nam 0 0 #] }
+ 
+     set hhhsnd [string map {" " _} $hhhsnd]
+     set hhhrcv [string map {" " _} $hhhrcv]
+     set hhhgui_nam [string map {" " _} $hhhgui_nam]
      
      pd [concat $id dialog \

Index: m_imp.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_imp.h,v
retrieving revision 1.1.1.2.2.2
retrieving revision 1.1.1.2.2.3
diff -C2 -d -r1.1.1.2.2.2 -r1.1.1.2.2.3
*** m_imp.h	25 Nov 2003 19:19:57 -0000	1.1.1.2.2.2
--- m_imp.h	23 Jul 2004 08:46:40 -0000	1.1.1.2.2.3
***************
*** 10,13 ****
--- 10,14 ----
  
  /* LATER consider whether to use 'char' for method arg types to save space */
+ #ifndef __m_imp_h_
  
  /* the structure for a method handler ala Max */
***************
*** 78,79 ****
--- 79,83 ----
  EXTERN void glob_evalfile(t_pd *ignore, t_symbol *name, t_symbol *dir);
  EXTERN void glob_initfromgui(void *dummy, t_symbol *s, int argc, t_atom *argv);
+ 
+ #define __m_imp_h_
+ #endif /* __m_imp_h_ */

Index: m_class.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_class.c,v
retrieving revision 1.1.1.2.2.4
retrieving revision 1.1.1.2.2.5
diff -C2 -d -r1.1.1.2.2.4 -r1.1.1.2.2.5
*** m_class.c	22 Feb 2004 05:52:16 -0000	1.1.1.2.2.4
--- m_class.c	23 Jul 2004 08:46:40 -0000	1.1.1.2.2.5
***************
*** 509,513 ****
  
      /* this routine is called when a new "object" is requested whose class Pd
!     doesn't know.  Pd tries to load it as an extern, then as an absteaction. */
  void new_anything(void *dummy, t_symbol *s, int argc, t_atom *argv)
  {
--- 509,513 ----
  
      /* this routine is called when a new "object" is requested whose class Pd
!     doesn't know.  Pd tries to load it as an extern, then as an abstraction. */
  void new_anything(void *dummy, t_symbol *s, int argc, t_atom *argv)
  {
***************
*** 529,533 ****
      current = s__X.s_thing;
      if ((fd = open_via_path(dir->s_name, s->s_name, ".pd",
!     	dirbuf, &nameptr, MAXPDSTRING, 0)) >= 0)
      {
      	close (fd);
--- 529,535 ----
      current = s__X.s_thing;
      if ((fd = open_via_path(dir->s_name, s->s_name, ".pd",
!     	dirbuf, &nameptr, MAXPDSTRING, 0)) >= 0 ||
! 	    (fd = open_via_path(dir->s_name, s->s_name, ".pat",
!     	    	dirbuf, &nameptr, MAXPDSTRING, 0)) >= 0)
      {
      	close (fd);

Index: s_main.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_main.c,v
retrieving revision 1.1.1.4.2.13
retrieving revision 1.1.1.4.2.14
diff -C2 -d -r1.1.1.4.2.13 -r1.1.1.4.2.14
*** s_main.c	10 May 2004 18:19:12 -0000	1.1.1.4.2.13
--- s_main.c	23 Jul 2004 08:46:40 -0000	1.1.1.4.2.14
***************
*** 8,12 ****
   */
  
! char pd_version[] = "Pd version 0.37.1 devel\n";
  char pd_compiletime[] = __TIME__;
  char pd_compiledate[] = __DATE__;
--- 8,12 ----
   */
  
! char pd_version[] = "Pd version 0.37.2 devel\n";
  char pd_compiletime[] = __TIME__;
  char pd_compiledate[] = __DATE__;
***************
*** 51,54 ****
--- 51,55 ----
  int m_scheduler(void);
  void sys_addhelppath(char *p);
+ void sys_start_sfthread(void);
  
  int sys_debuglevel;
***************
*** 282,288 ****
      	return(1);
  
- #ifdef THREADED_SF
-     sys_start_sfthread();
- #endif /* THREDED_SF */
      
  
--- 283,286 ----
***************
*** 294,305 ****
  	    sys_main_srate, sys_main_advance, 1);
  
      /* run scheduler until it quits */
      ret = m_scheduler();
   
!  	/* T.Grill - if soft quitting via sys_exit is used we can get here.... */
!    	sys_close_audio();
!  	sys_close_midi();
   
!  	return ret;
  }
  
--- 292,307 ----
  	    sys_main_srate, sys_main_advance, 1);
  
+ #ifdef THREADED_SF
+     sys_start_sfthread();
+ #endif /* THREDED_SF */
+ 
      /* run scheduler until it quits */
      ret = m_scheduler();
   
!     /* T.Grill - if soft quitting via sys_exit is used we can get here.... */
!     sys_close_audio();
!     sys_close_midi();
   
!     return ret;
  }
  
***************
*** 616,620 ****
      	    	devno = 2 + 2 * atoi(argv[1]+7);
  	    else goto usage;
- 	    post("devno %d", devno);
  	    sys_nsoundin = sys_nsoundout = 1;
  	    sys_soundindevlist[0] = sys_soundoutdevlist[0] = devno;
--- 618,621 ----

Index: d_global.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/d_global.c,v
retrieving revision 1.1.1.2.8.2
retrieving revision 1.1.1.2.8.3
diff -C2 -d -r1.1.1.2.8.2 -r1.1.1.2.8.3
*** d_global.c	24 Nov 2003 16:27:49 -0000	1.1.1.2.8.2
--- d_global.c	23 Jul 2004 08:46:40 -0000	1.1.1.2.8.3
***************
*** 41,45 ****
      while (n--)
      {
!     	*out = (PD_BADFLOAT(*in) ? 0 : *in);
  	out++;
  	in++;
--- 41,45 ----
      while (n--)
      {
!     	*out = (PD_BIGORSMALL(*in) ? 0 : *in);
  	out++;
  	in++;
***************
*** 243,247 ****
      	while (n--)
  	{
!     	    *out += (PD_BADFLOAT(*in) ? 0 : *in);
  	    out++;
  	    in++;
--- 243,247 ----
      	while (n--)
  	{
!     	    *out += (PD_BIGORSMALL(*in) ? 0 : *in);
  	    out++;
  	    in++;

Index: d_array.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/d_array.c,v
retrieving revision 1.1.1.3.2.1
retrieving revision 1.1.1.3.2.2
diff -C2 -d -r1.1.1.3.2.1 -r1.1.1.3.2.2
*** d_array.c	12 Sep 2003 20:56:06 -0000	1.1.1.3.2.1
--- d_array.c	23 Jul 2004 08:46:40 -0000	1.1.1.3.2.2
***************
*** 53,57 ****
  	{
  	    float f = *in++;
!     	    if (PD_BADFLOAT(f))
  	    	f = 0;
  	    *fp++ = f;
--- 53,57 ----
  	{
  	    float f = *in++;
!     	    if (PD_BIGORSMALL(f))
  	    	f = 0;
  	    *fp++ = f;
***************
*** 735,739 ****
      {	
      	float f = *in++;
!     	if (PD_BADFLOAT(f))
  	    f = 0;
  	 *dest++ = f;
--- 735,739 ----
      {	
      	float f = *in++;
!     	if (PD_BIGORSMALL(f))
  	    f = 0;
  	 *dest++ = f;

Index: g_template.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_template.c,v
retrieving revision 1.1.1.3.2.2
retrieving revision 1.1.1.3.2.3
diff -C2 -d -r1.1.1.3.2.2 -r1.1.1.3.2.3
*** g_template.c	14 Jan 2004 15:50:28 -0000	1.1.1.3.2.2
--- g_template.c	23 Jul 2004 08:46:40 -0000	1.1.1.3.2.3
***************
*** 850,854 ****
  {
      int n2 = n/2;   	    	/* 0 to 4 */
!     int ret = (n << 6);     	/* 0 to 256 in 5 steps */
      if (ret > 255) ret = 255;
      return (ret);
--- 850,854 ----
  {
      int n2 = n/2;   	    	/* 0 to 4 */
!     int ret = (n2 << 6);     	/* 0 to 256 in 5 steps */
      if (ret > 255) ret = 255;
      return (ret);

Index: notes.txt
===================================================================
RCS file: /cvsroot/pure-data/pd/src/notes.txt,v
retrieving revision 1.1.1.4.2.6
retrieving revision 1.1.1.4.2.7
diff -C2 -d -r1.1.1.4.2.6 -r1.1.1.4.2.7
*** notes.txt	6 May 2004 08:28:12 -0000	1.1.1.4.2.6
--- notes.txt	23 Jul 2004 08:46:40 -0000	1.1.1.4.2.7
***************
*** 2,5 ****
--- 2,8 ----
  
  0.38:
+ open_via_path() followed by close() fails in windows? [can't reproduce]
+ soundfiles with 3-byte samples buzz for the first readsf buffer (bug/x.pd)
+ pd -alsa -sounddev 2 fails
  read xx.txt in "bad" gives warnings
  mess with RME ALSA some more; ALSA readn doesn't work yet; use mmap?
***************
*** 15,19 ****
  signal inlets to sense signals; fix +~ etc, vcf~, biquad~, and make a vcfb~
  
! 
  makefile to set SETUID bit on install?
  loading e-mailed patches without removing headers crashes pd
--- 18,23 ----
  signal inlets to sense signals; fix +~ etc, vcf~, biquad~, and make a vcfb~
  
! investigate long (1 second) startup time
! search path to go from calling patch, not abstraction, if different?
  makefile to set SETUID bit on install?
  loading e-mailed patches without removing headers crashes pd
***************
*** 44,47 ****
--- 48,54 ----
  
  problems:
+ click on minaturized subpatch fails to "vis" it
+ gfx bug in hradio
+ elipses stick in numboxes
  writesf -- "open" without "0" misses closing the previous file.
  Also writesf~ acts differently if DSP is off when "open" is sent?

Index: g_hdial.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_hdial.c,v
retrieving revision 1.1.1.4.2.2
retrieving revision 1.1.1.4.2.3
diff -C2 -d -r1.1.1.4.2.2 -r1.1.1.4.2.3
*** g_hdial.c	18 Nov 2003 10:34:10 -0000	1.1.1.4.2.2
--- g_hdial.c	23 Jul 2004 08:46:40 -0000	1.1.1.4.2.3
***************
*** 396,404 ****
      else
      {
      	outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on = i);
  	if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
  	    pd_float(x->x_gui.x_snd->s_thing, x->x_on);
  	(*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE);
- 	x->x_on_old = x->x_on;
      }
  }
--- 396,404 ----
      else
      {
+ 	x->x_on_old = x->x_on;
      	outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on = i);
  	if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
  	    pd_float(x->x_gui.x_snd->s_thing, x->x_on);
  	(*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE);
      }
  }
***************
*** 443,446 ****
--- 443,447 ----
      else
      {
+ 	x->x_on_old = x->x_on;
      	x->x_on = i;
  	if (x->x_gui.x_fsf.x_put_in2out)
***************
*** 451,455 ****
  	}
  	(*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE);
- 	x->x_on_old = x->x_on;
      }
  }
--- 452,455 ----

Index: g_vdial.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_vdial.c,v
retrieving revision 1.1.1.4.2.2
retrieving revision 1.1.1.4.2.3
diff -C2 -d -r1.1.1.4.2.2 -r1.1.1.4.2.3
*** g_vdial.c	18 Nov 2003 10:34:10 -0000	1.1.1.4.2.2
--- g_vdial.c	23 Jul 2004 08:46:40 -0000	1.1.1.4.2.3
***************
*** 396,404 ****
      else
      {
      	outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on = i);
  	if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
  	    pd_float(x->x_gui.x_snd->s_thing, x->x_on);
  	(*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE);
- 	x->x_on_old = x->x_on;
      }
  }
--- 396,404 ----
      else
      {
+ 	x->x_on_old = x->x_on;
      	outlet_float(x->x_gui.x_obj.ob_outlet, x->x_on = i);
  	if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
  	    pd_float(x->x_gui.x_snd->s_thing, x->x_on);
  	(*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE);
      }
  }
***************
*** 443,446 ****
--- 443,447 ----
      else
      {
+     	x->x_on_old = x->x_on;
      	x->x_on = i;
  	if (x->x_gui.x_fsf.x_put_in2out)

Index: d_ctl.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/d_ctl.c,v
retrieving revision 1.1.1.3.2.7
retrieving revision 1.1.1.3.2.8
diff -C2 -d -r1.1.1.3.2.7 -r1.1.1.3.2.8
*** d_ctl.c	28 Dec 2003 12:32:03 -0000	1.1.1.3.2.7
--- d_ctl.c	23 Jul 2004 08:46:40 -0000	1.1.1.3.2.8
***************
*** 115,119 ****
      float f = x->x_value;
  
!     if (PD_BADFLOAT(f))
  	    x->x_value = f = 0;
      if (x->x_retarget)
--- 115,119 ----
      float f = x->x_value;
  
!     if (PD_BIGORSMALL(f))
  	    x->x_value = f = 0;
      if (x->x_retarget)
***************
*** 290,294 ****
      double starttime = timenow + inlet2;
      t_vseg *s1, *s2, *deletefrom = 0, *snew;
!     if (PD_BADFLOAT(f))
  	f = 0;
  
--- 290,294 ----
      double starttime = timenow + inlet2;
      t_vseg *s1, *s2, *deletefrom = 0, *snew;
!     if (PD_BIGORSMALL(f))
  	f = 0;
  

Index: m_pd.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_pd.h,v
retrieving revision 1.1.1.4.2.14
retrieving revision 1.1.1.4.2.15
diff -C2 -d -r1.1.1.4.2.14 -r1.1.1.4.2.15
*** m_pd.h	23 May 2004 18:54:59 -0000	1.1.1.4.2.14
--- m_pd.h	23 Jul 2004 08:46:40 -0000	1.1.1.4.2.15
***************
*** 369,373 ****
  
  EXTERN void canvas_setargs(int argc, t_atom *argv);
! EXTERN t_atom *canvas_getarg(int which);
  EXTERN t_symbol *canvas_getcurrentdir(void);
  EXTERN t_glist *canvas_getcurrent(void);
--- 369,373 ----
  
  EXTERN void canvas_setargs(int argc, t_atom *argv);
! EXTERN void canvas_getargs(int *argcp, t_atom **argvp);
  EXTERN t_symbol *canvas_getcurrentdir(void);
  EXTERN t_glist *canvas_getcurrent(void);
***************
*** 649,654 ****
--- 649,658 ----
  #define PD_BADFLOAT(f) ((((*(unsigned int*)&(f))&0x7f800000) < 0x08000000) || \
      (((*(unsigned int*)&(f))&0x7f800000)==0x7f800000))
+ /* more stringent test: anything not between 1e-19 and 1e19 in absolute val */
+ #define PD_BIGORSMALL(f) ((((*(unsigned int*)&(f))&0x60000000)==0) || \
+      (((*(unsigned int*)&(f))&0x60000000)==0x60000000))
  #else
  #define PD_BADFLOAT(f) 0
+ #define PD_BIGORSMALL(f) 0
  #endif
  

Index: d_filter.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/d_filter.c,v
retrieving revision 1.1.1.2.8.1
retrieving revision 1.1.1.2.8.2
diff -C2 -d -r1.1.1.2.8.1 -r1.1.1.2.8.2
*** d_filter.c	8 Jul 2003 09:48:57 -0000	1.1.1.2.8.1
--- d_filter.c	23 Jul 2004 08:46:40 -0000	1.1.1.2.8.2
***************
*** 70,74 ****
  	    last = new;
  	}
!     	if (PD_BADFLOAT(last))
  	    last = 0; 
      	c->c_x = last;
--- 70,74 ----
  	    last = new;
  	}
!     	if (PD_BIGORSMALL(last))
  	    last = 0; 
      	c->c_x = last;
***************
*** 172,176 ****
      for (i = 0; i < n; i++)
  	last = *out++ = coef * *in++ + feedback * last;
!     if (PD_BADFLOAT(last))
      	last = 0;
      c->c_x = last;
--- 172,176 ----
      for (i = 0; i < n; i++)
  	last = *out++ = coef * *in++ + feedback * last;
!     if (PD_BIGORSMALL(last))
      	last = 0;
      c->c_x = last;
***************
*** 303,309 ****
  	last = output;
      }
!     if (PD_BADFLOAT(last))
      	last = 0;
!     if (PD_BADFLOAT(prev))
      	prev = 0;
      c->c_x1 = last;
--- 303,309 ----
  	last = output;
      }
!     if (PD_BIGORSMALL(last))
      	last = 0;
!     if (PD_BIGORSMALL(prev))
      	prev = 0;
      c->c_x1 = last;
***************
*** 388,392 ****
      {
      	float output =  *in++ + fb1 * last + fb2 * prev;
! 	if (PD_BADFLOAT(output))
  	    output = 0; 
      	*out++ = ff1 * output + ff2 * last + ff3 * prev;
--- 388,392 ----
      {
      	float output =  *in++ + fb1 * last + fb2 * prev;
! 	if (PD_BIGORSMALL(output))
  	    output = 0; 
      	*out++ = ff1 * output + ff2 * last + ff3 * prev;

Index: x_time.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/x_time.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.16.1
diff -C2 -d -r1.1.1.1 -r1.1.1.1.16.1
*** x_time.c	29 Jul 2002 17:06:01 -0000	1.1.1.1
--- x_time.c	23 Jul 2004 08:46:40 -0000	1.1.1.1.16.1
***************
*** 214,217 ****
--- 214,223 ----
  }
  
+ static void line_set(t_line *x, t_floatarg f)
+ {
+     clock_unset(x->x_clock);
+     x->x_targetval = x->x_setval = f;
+ }
+ 
  static void line_free(t_line *x)
  {
***************
*** 242,245 ****
--- 248,253 ----
      class_addmethod(line_class, (t_method)line_stop,
      	gensym("stop"), 0);
+     class_addmethod(line_class, (t_method)line_set,
+     	gensym("set"), A_FLOAT, 0);
      class_addfloat(line_class, (t_method)line_float);
  }

Index: d_soundfile.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/d_soundfile.c,v
retrieving revision 1.1.1.2.2.18
retrieving revision 1.1.1.2.2.19
diff -C2 -d -r1.1.1.2.2.18 -r1.1.1.2.2.19
*** d_soundfile.c	15 Jul 2004 16:45:47 -0000	1.1.1.2.2.18
--- d_soundfile.c	23 Jul 2004 08:46:40 -0000	1.1.1.2.2.19
***************
*** 9,15 ****
  for disk accesses (even the write routine.)  Finally, the realtime objects
  readsf~ and writesf~ are defined which confine disk operations to a separate
! thread so that they can be used in real time.  The real-time disk access
! objects are available for linux only so far, although they could be compiled
! for Windows if someone were willing to find a Pthreads package for it. */
  
  /* threaded soundfiler by Tim Blechmann */
--- 9,14 ----
  for disk accesses (even the write routine.)  Finally, the realtime objects
  readsf~ and writesf~ are defined which confine disk operations to a separate
! thread so that they can be used in real time.  The readsf~ and writesf~
! objects use Posix-like threads.  */
  
  /* threaded soundfiler by Tim Blechmann */
***************
*** 489,496 ****
      t_atom *argv = *p_argv;
      int bytespersamp = 2, bigendian = 0,
!     	endianness = -1, swap, filetype = FORMAT_WAVE, normalize = 0;
      long onset = 0, nframes = 0x7fffffff;
      t_symbol *filesym;
      float rate = -1;
      while (argc > 0 && argv->a_type == A_SYMBOL &&
      	*argv->a_w.w_symbol->s_name == '-')
--- 488,496 ----
      t_atom *argv = *p_argv;
      int bytespersamp = 2, bigendian = 0,
!     	endianness = -1, swap, filetype = -1, normalize = 0;
      long onset = 0, nframes = 0x7fffffff;
      t_symbol *filesym;
      float rate = -1;
+     
      while (argc > 0 && argv->a_type == A_SYMBOL &&
      	*argv->a_w.w_symbol->s_name == '-')
***************
*** 558,561 ****
--- 558,587 ----
  	else goto usage;
      }
+     if (!argc || argv->a_type != A_SYMBOL)
+     	goto usage;
+     filesym = argv->a_w.w_symbol;
+     
+     	/* check if format not specified and fill in */
+     if (filetype < 0) 
+     {
+     	if (strlen(filesym->s_name) >= 5 &&
+ 			(!strcmp(filesym->s_name + strlen(filesym->s_name) - 4, ".aif") ||
+ 			!strcmp(filesym->s_name + strlen(filesym->s_name) - 4, ".AIF")))
+     	    	filetype = FORMAT_AIFF;
+     	if (strlen(filesym->s_name) >= 6 &&
+ 			(!strcmp(filesym->s_name + strlen(filesym->s_name) - 5, ".aiff") ||
+ 			!strcmp(filesym->s_name + strlen(filesym->s_name) - 5, ".AIFF")))
+     	    	filetype = FORMAT_AIFF;
+     	if (strlen(filesym->s_name) >= 5 &&
+ 			(!strcmp(filesym->s_name + strlen(filesym->s_name) - 4, ".snd") ||
+ 			!strcmp(filesym->s_name + strlen(filesym->s_name) - 4, ".SND")))
+     	    	filetype = FORMAT_NEXT;
+     	if (strlen(filesym->s_name) >= 4 &&
+ 			(!strcmp(filesym->s_name + strlen(filesym->s_name) - 3, ".au") ||
+ 			!strcmp(filesym->s_name + strlen(filesym->s_name) - 3, ".AU")))
+     	    	filetype = FORMAT_NEXT;
+     	if (filetype < 0)
+ 	    filetype = FORMAT_WAVE;
+     }
      	/* don't handle AIFF floating point samples */
      if (bytespersamp == 4)
***************
*** 586,592 ****
      else bigendian = endianness;
      swap = (bigendian != garray_ambigendian());
!     if (!argc || argv->a_type != A_SYMBOL)
!     	goto usage;
!     filesym = argv->a_w.w_symbol;
      argc--; argv++;
      
--- 612,616 ----
      else bigendian = endianness;
      swap = (bigendian != garray_ambigendian());
!     
      argc--; argv++;
      
***************
*** 631,635 ****
      	nexthdr->ns_length = 0;
      	nexthdr->ns_format = swap4((bytespersamp == 3 ? NS_FORMAT_LINEAR_24 :
! 	    (bytespersamp == 4 ? NS_FORMAT_FLOAT : NS_FORMAT_LINEAR_16)), swap);;
      	nexthdr->ns_sr = swap4(samplerate, swap);
      	nexthdr->ns_nchans = swap4(nchannels, swap);
--- 655,659 ----
      	nexthdr->ns_length = 0;
      	nexthdr->ns_format = swap4((bytespersamp == 3 ? NS_FORMAT_LINEAR_24 :
! 	   (bytespersamp == 4 ? NS_FORMAT_FLOAT : NS_FORMAT_LINEAR_16)), swap);
      	nexthdr->ns_sr = swap4(samplerate, swap);
      	nexthdr->ns_nchans = swap4(nchannels, swap);
***************
*** 2420,2426 ****
  		    /* arrange for the "request" condition to be signalled 16
  		    times per buffer */
      	    sprintf(boo, "fifosize %d\n", 
      	    	x->x_fifosize);
- #ifdef DEBUG_SOUNDFILE
      	    pute(boo);
  #endif
--- 2444,2450 ----
  		    /* arrange for the "request" condition to be signalled 16
  		    times per buffer */
+ #ifdef DEBUG_SOUNDFILE
      	    sprintf(boo, "fifosize %d\n", 
      	    	x->x_fifosize);
      	    pute(boo);
  #endif
***************
*** 2454,2460 ****
  			if (wantbytes > x->x_bytelimit)
  			    wantbytes = x->x_bytelimit;
  		    	sprintf(boo, "head %d, tail %d, size %d\n", 
  			    x->x_fifohead, x->x_fifotail, wantbytes);
- #ifdef DEBUG_SOUNDFILE
  			pute(boo);
  #endif
--- 2478,2484 ----
  			if (wantbytes > x->x_bytelimit)
  			    wantbytes = x->x_bytelimit;
+ #ifdef DEBUG_SOUNDFILE
  		    	sprintf(boo, "head %d, tail %d, size %d\n", 
  			    x->x_fifohead, x->x_fifotail, wantbytes);
  			pute(boo);
  #endif

Index: x_misc.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/x_misc.c,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.2.2.1
diff -C2 -d -r1.1.1.2 -r1.1.1.2.2.1
*** x_misc.c	9 May 2003 16:03:45 -0000	1.1.1.2
--- x_misc.c	23 Jul 2004 08:46:40 -0000	1.1.1.2.2.1
***************
*** 15,18 ****
--- 15,19 ----
  #include <sys/times.h>
  #include <sys/param.h>
+ #include <unistd.h>
  #endif
  #ifdef MSW
***************
*** 106,110 ****
  {
      loadbang_class = class_new(gensym("loadbang"), (t_newmethod)loadbang_new, 0,
!     	sizeof(t_loadbang), 0, 0);
      class_addmethod(loadbang_class, (t_method)loadbang_loadbang,
      	gensym("loadbang"), 0);
--- 107,111 ----
  {
      loadbang_class = class_new(gensym("loadbang"), (t_newmethod)loadbang_new, 0,
!     	sizeof(t_loadbang), CLASS_NOINLET, 0);
      class_addmethod(loadbang_class, (t_method)loadbang_loadbang,
      	gensym("loadbang"), 0);

Index: d_delay.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/d_delay.c,v
retrieving revision 1.1.1.3.2.1
retrieving revision 1.1.1.3.2.2
diff -C2 -d -r1.1.1.3.2.1 -r1.1.1.3.2.2
*** d_delay.c	18 Nov 2003 10:34:10 -0000	1.1.1.3.2.1
--- d_delay.c	23 Jul 2004 08:46:40 -0000	1.1.1.3.2.2
***************
*** 38,41 ****
--- 38,46 ----
  static void sigdelwrite_checkvecsize(t_sigdelwrite *x, int vecsize)
  {
+     /*
+     	LATER this should really check sample rate and blocking, once that is
+ 	supported.  Probably we don't actually care about vecsize.
+ 	For now just suppress this check... */
+ #if 0
      if (x->x_rsortno != ugen_getsortno())
      {
***************
*** 45,48 ****
--- 50,54 ----
      else if (vecsize != x->x_vecsize)
      	pd_error(x, "delread/delwrite/vd vector size mismatch");
+ #endif
  }
  
***************
*** 79,83 ****
      {
      	float f = *in++;
!     	if (PD_BADFLOAT(f))
  	    f = 0;
      	*bp++ = f;
--- 85,89 ----
      {
      	float f = *in++;
!     	if (PD_BIGORSMALL(f))
  	    f = 0;
      	*bp++ = f;

Index: d_osc.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/d_osc.c,v
retrieving revision 1.1.1.2.2.2
retrieving revision 1.1.1.2.2.3
diff -C2 -d -r1.1.1.2.2.2 -r1.1.1.2.2.3
*** d_osc.c	25 Nov 2003 19:19:57 -0000	1.1.1.2.2.2
--- d_osc.c	23 Jul 2004 08:46:40 -0000	1.1.1.2.2.3
***************
*** 451,457 ****
      	*out2++ = im = coefi * re2 + coefr * im;
      }
!     if (PD_BADFLOAT(re))
  	re = 0;
!     if (PD_BADFLOAT(im))
  	im = 0;
      c->c_re = re;
--- 451,457 ----
      	*out2++ = im = coefi * re2 + coefr * im;
      }
!     if (PD_BIGORSMALL(re))
  	re = 0;
!     if (PD_BIGORSMALL(im))
  	im = 0;
      c->c_re = re;





More information about the Pd-cvs mailing list