[PD-cvs] pd/src s_midi_alsa.c, 1.1, 1.2 configure.in, 1.11, 1.12 g_all_guis.c, 1.6, 1.7 g_numbox.c, 1.5, 1.6 m_glob.c, 1.4, 1.5 makefile, 1.13, 1.14 makefile.dependencies, 1.5, 1.6 notes.txt, 1.14, 1.15 s_inter.c, 1.9, 1.10 s_main.c, 1.13, 1.14 s_midi.c, 1.6, 1.7 s_stuff.h, 1.6, 1.7 u_main.tk, 1.12, 1.13 u_pdsend.c, 1.2, 1.3 x_connective.c, 1.5, 1.6

Miller Puckette millerpuckette at users.sourceforge.net
Sat Jul 16 03:43:20 CEST 2005


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

Modified Files:
	configure.in g_all_guis.c g_numbox.c m_glob.c makefile 
	makefile.dependencies notes.txt s_inter.c s_main.c s_midi.c 
	s_stuff.h u_main.tk u_pdsend.c x_connective.c 
Added Files:
	s_midi_alsa.c 
Log Message:
fixed bugs, adopted some patches.



Index: configure.in
===================================================================
RCS file: /cvsroot/pure-data/pd/src/configure.in,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** configure.in	25 Jun 2005 02:49:08 -0000	1.11
--- configure.in	16 Jul 2005 01:43:18 -0000	1.12
***************
*** 14,17 ****
--- 14,18 ----
  AC_SUBST(SYSSRC)
  AC_SUBST(TCLTK_FRAMEWORKS_PATH)
+ AC_SUBST(TCLTK_FRAMEWORKS_PATH)
  AC_SUBST(STRIPFLAG)
  AC_SUBST(GUINAME)
***************
*** 170,177 ****
      if test x$alsa == "xyes";
      then
!     	SYSSRC=$SYSSRC" s_audio_alsa.c s_audio_alsamm.c"
  	MORECFLAGS=$MORECFLAGS" -DPA_USE_ALSA -DUSEAPI_ALSA"
  	LDFLAGS=$LDFLAGS" -lasound"
      fi
      if test x$portaudio == "xyes";
  
--- 171,180 ----
      if test x$alsa == "xyes";
      then
!     	SYSSRC=$SYSSRC" s_audio_alsa.c s_audio_alsamm.c s_midi_alsa.c"
  	MORECFLAGS=$MORECFLAGS" -DPA_USE_ALSA -DUSEAPI_ALSA"
  	LDFLAGS=$LDFLAGS" -lasound"
      fi
+ 
+ 
      if test x$portaudio == "xyes";
  
***************
*** 211,214 ****
--- 214,235 ----
      else
  	OPT_CFLAGS="-O6 -funroll-loops -fomit-frame-pointer"
+ 
+     if test x$jack == "xyes";
+     then
+         LDFLAGS=$LDFLAGS" -lrt -ljack"
+     fi
+     if test x$jack == "xrun";
+     then
+         LDFLAGS=$LDFLAGS" -lrt -ljack"
+     fi
+     fi
+ 
+     if test x$jack == "xyes";
+     then
+         LDFLAGS=$LDFLAGS" -lrt -ljack"
+     fi
+     if test x$jack == "xrun";
+     then
+         LDFLAGS=$LDFLAGS" -lrt -ljack"
      fi
      echo OPT_CFLAGS --------------- $OPT_CFLAGS
***************
*** 245,249 ****
  	-I../portmidi/porttime \
  	-Wno-error \
! 	-DUSEAPI_PORTAUDIO -DPA_BIG_ENDIAN -DPA19"
      SYSSRC="s_midi_pm.c s_audio_pa.c \
      	s_audio_pablio.c     \
--- 266,270 ----
  	-I../portmidi/porttime \
  	-Wno-error \
! 	-DUSEAPI_PORTAUDIO -DPA_BIG_ENDIAN -DPA19 -DPA_USE_COREAUDIO"
      SYSSRC="s_midi_pm.c s_audio_pa.c \
      	s_audio_pablio.c     \

Index: s_main.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_main.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** s_main.c	8 Jul 2005 00:02:45 -0000	1.13
--- s_main.c	16 Jul 2005 01:43:18 -0000	1.14
***************
*** 3,7 ****
  * WARRANTIES, see the file, "LICENSE.txt," in this distribution.  */
  
! char pd_version[] = "Pd version 0.39 TEST 3\n";
  char pd_compiletime[] = __TIME__;
  char pd_compiledate[] = __DATE__;
--- 3,7 ----
  * WARRANTIES, see the file, "LICENSE.txt," in this distribution.  */
  
! char pd_version[] = "Pd version 0.39 TEST 4\n";
  char pd_compiletime[] = __TIME__;
  char pd_compiledate[] = __DATE__;
***************
*** 347,350 ****
--- 347,354 ----
  "-nomidiout       -- suppress MIDI output\n",
  "-nomidi          -- suppress MIDI input and output\n",
+ #ifdef USEAPI_ALSA
+ "-alsamidi        -- use ALSA midi API\n",
+ #endif
+ 
  
  "\nother flags:\n",
***************
*** 605,608 ****
--- 609,617 ----
              argc -= 2; argv +=2;
          }
+         else if (!strcmp(*argv, "-alsamidi"))
+         {
+           sys_set_midi_api(API_ALSA);
+             argc--; argv++;
+         }
  #endif
  #ifdef USEAPI_JACK

Index: u_main.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** u_main.tk	8 Jul 2005 00:02:45 -0000	1.12
--- u_main.tk	16 Jul 2005 01:43:18 -0000	1.13
***************
*** 45,48 ****
--- 45,54 ----
  # turn on James Tittle II's fast drawing (wait until I can test this...):
  #   set tk::mac::useCGDrawing 1
+     # set minimum line size for anti-aliasing.  If set to 1 or 0, then every
+     # line will be anti-aliased.  While this makes connections and circles in
+     # [bng] and such look really good, it makes boxes and messages look out of
+     # focus.  Setting this to 2 makes it so the thick audio rate connections
+     # are anti-aliased.  <hans at at.or.at> 2005-06-09
+     set tk::mac::CGAntialiasLimit 2
      global pd_guidir
      global pd_tearoff
***************
*** 339,346 ****
      global pd_guidir
      global pd_myversion
! 	global pd_font3
      set name [format ".help%d" $doc_number]
      toplevel $name
!     text $name.text -relief raised -bd 2 -font $pd_font3 \
      	-yscrollcommand "$name.scroll set" -background white
      scrollbar $name.scroll -command "$name.text yview"
--- 345,352 ----
      global pd_guidir
      global pd_myversion
! #    global pd_font3
      set name [format ".help%d" $doc_number]
      toplevel $name
!     text $name.text -relief raised -bd 2 -font -*-times-regular--normal--14-* \
      	-yscrollcommand "$name.scroll set" -background white
      scrollbar $name.scroll -command "$name.text yview"
***************
*** 452,456 ****
  
  proc menu_addstd {mbar} {
!     global pd_apilist pd_nt pd_tearoff
  #          the "Audio" menu
      $mbar.audio add command -label {audio ON} -accelerator [accel_munge "Ctrl+/"] \
--- 458,462 ----
  
  proc menu_addstd {mbar} {
!     global pd_apilist pd_midiapilist pd_nt pd_tearoff
  #          the "Audio" menu
      $mbar.audio add command -label {audio ON} -accelerator [accel_munge "Ctrl+/"] \
***************
*** 464,467 ****
--- 470,479 ----
  		-command {pd [concat pd audio-setapi $pd_whichapi \;]}
      }
+     for {set x 0} {$x<[llength $pd_midiapilist]} {incr x} {
+     	$mbar.audio add radiobutton -label [lindex [lindex $pd_midiapilist $x] 0] \
+ 	    -command {menu_midi 0} -variable pd_whichmidiapi \
+ 	    	-value [lindex [lindex $pd_midiapilist $x] 1]\
+ 		-command {pd [concat pd midi-setapi $pd_whichmidiapi \;]}
+     }
  	 if {$pd_nt != 2} {
      $mbar.audio add command -label {Audio settings...} \
***************
*** 3113,3117 ****
  
      text $name.text -relief raised -bd 2 -height 40 -width 60 \
!     	-yscrollcommand "$name.scroll set" -font pd_font3
      scrollbar $name.scroll -command "$name.text yview"
      pack $name.scroll -side right -fill y
--- 3125,3129 ----
  
      text $name.text -relief raised -bd 2 -height 40 -width 60 \
!     	-yscrollcommand "$name.scroll set" -font $pd_font3
      scrollbar $name.scroll -command "$name.text yview"
      pack $name.scroll -side right -fill y
***************
*** 3183,3200 ****
  
  # tb: user defined typefaces
! proc pdtk_pd_startup {version apilist fontname} {
  #    puts stderr [concat $version $apilist $fontname]
!     global pd_myversion pd_apilist
      set pd_myversion $version
      set pd_apilist $apilist
! 	global pd_font1 pd_font2 pd_font3 pd_font4 pd_font5 pd_font6 pd_font7
  
! 	set pd_font1 [format -*-%s-bold--normal--8-* $fontname]
! 	set pd_font2 [format -*-%s-bold--normal--10-* $fontname]
!  	set pd_font3 [format -*-%s-bold--normal--12-* $fontname]
!  	set pd_font4 [format -*-%s-bold--normal--14-* $fontname]
! 	set pd_font5 [format -*-%s-bold--normal--16-* $fontname]
! 	set pd_font6 [format -*-%s-bold--normal--24-* $fontname]
! 	set pd_font7 [format -*-%s-bold--normal--36-* $fontname]
  
      set width1 [font measure  $pd_font1 x]
--- 3195,3213 ----
  
  # tb: user defined typefaces
! proc pdtk_pd_startup {version apilist midiapilist fontname} {
  #    puts stderr [concat $version $apilist $fontname]
!     global pd_myversion pd_apilist pd_midiapilist
      set pd_myversion $version
      set pd_apilist $apilist
!     set pd_midiapilist $midiapilist
!     global pd_font1 pd_font2 pd_font3 pd_font4 pd_font5 pd_font6 pd_font7
  
!     set pd_font1 [format -*-%s-bold--normal--8-* $fontname]
!     set pd_font2 [format -*-%s-bold--normal--10-* $fontname]
!     set pd_font3 [format -*-%s-bold--normal--12-* $fontname]
!     set pd_font4 [format -*-%s-bold--normal--14-* $fontname]
!     set pd_font5 [format -*-%s-bold--normal--16-* $fontname]
!     set pd_font6 [format -*-%s-bold--normal--24-* $fontname]
!     set pd_font7 [format -*-%s-bold--normal--36-* $fontname]
  
      set width1 [font measure  $pd_font1 x]
***************
*** 3677,3685 ****
  }
  
! ####################### midi dialog ##################3
  
  proc midi_apply {id} {
      global midi_indev1 midi_indev2 midi_indev3 midi_indev4 
!     global midi_outdev1 midi_outdev2 midi_outdev3 midi_outdev4 
  
      pd [concat pd midi-dialog \
--- 3690,3698 ----
  }
  
! ####################### midi dialog ##################
  
  proc midi_apply {id} {
      global midi_indev1 midi_indev2 midi_indev3 midi_indev4 
!     global midi_outdev1 midi_outdev2 midi_outdev3 midi_outdev4 midi_alsain midi_alsaout
  
      pd [concat pd midi-dialog \
***************
*** 3692,3695 ****
--- 3705,3710 ----
      	$midi_outdev3 \
      	$midi_outdev4 \
+     	$midi_alsain \
+     	$midi_alsaout \
  	\;]
  }
***************
*** 3728,3732 ****
  # controls for opening several devices; if not, we get an extra button to
  # turn longform on and restart the dialog.
- 
  proc pdtk_midi_dialog {id indevlist indev1 indev2 indev3 indev4 \
      	outdevlist outdev1 outdev2 outdev3 outdev4 longform} {
--- 3743,3746 ----
***************
*** 3734,3737 ****
--- 3748,3752 ----
      global midi_outdev1 midi_outdev2 midi_outdev3 midi_outdev4
      global midi_indevlist midi_outdevlist
+     global midi_alsain midi_alsaout
  
      set midi_indev1 $indev1
***************
*** 3745,3748 ****
--- 3760,3765 ----
      set midi_indevlist $indevlist
      set midi_outdevlist $outdevlist
+     set midi_alsain [llength $indevlist]
+     set midi_alsaout [llength $outdevlist]
  
      toplevel $id
***************
*** 3858,3861 ****
--- 3875,4020 ----
  }
  
+ proc pdtk_alsa_midi_dialog {id indevlist indev1 indev2 indev3 indev4 \
+     	outdevlist outdev1 outdev2 outdev3 outdev4 longform alsa} {
+     global midi_indev1 midi_indev2 midi_indev3 midi_indev4 
+     global midi_outdev1 midi_outdev2 midi_outdev3 midi_outdev4
+     global midi_indevlist midi_outdevlist
+     global midi_alsain midi_alsaout
+ 
+     set midi_indev1 $indev1
+     set midi_indev2 $indev2
+     set midi_indev3 $indev3
+     set midi_indev4 $indev4
+     set midi_outdev1 $outdev1
+     set midi_outdev2 $outdev2
+     set midi_outdev3 $outdev3
+     set midi_outdev4 $outdev4
+     set midi_indevlist $indevlist
+     set midi_outdevlist $outdevlist
+     set midi_alsain [llength $indevlist]
+     set midi_alsaout [llength $outdevlist]
+     
+     toplevel $id
+     wm title $id {midi}
+     wm protocol $id WM_DELETE_WINDOW [concat midi_cancel $id]
+ 
+     frame $id.buttonframe
+     pack $id.buttonframe -side bottom -fill x -pady 2m
+     button $id.buttonframe.cancel -text {Cancel}\
+     	-command "midi_cancel $id"
+     button $id.buttonframe.apply -text {Apply}\
+     	-command "midi_apply $id"
+     button $id.buttonframe.ok -text {OK}\
+     	-command "midi_ok $id"
+     pack $id.buttonframe.cancel -side left -expand 1
+     pack $id.buttonframe.apply -side left -expand 1
+     pack $id.buttonframe.ok -side left -expand 1
+ 
+     frame $id.in1f
+     pack $id.in1f -side top
+ 
+   if {$alsa == 0} {
+     	# input device 1
+     label $id.in1f.l1 -text "input device 1:"
+     button $id.in1f.x1 -text [lindex $indevlist $midi_indev1] \
+     	-command [list midi_popup $id $id.in1f.x1 midi_indev1 $indevlist]
+     pack $id.in1f.l1 $id.in1f.x1 -side left
+ 
+     	# input device 2
+     if {$longform && [llength $indevlist] > 2} {
+ 	frame $id.in2f
+ 	pack $id.in2f -side top
+ 
+ 	label $id.in2f.l1 -text "input device 2:"
+ 	button $id.in2f.x1 -text [lindex $indevlist $midi_indev2] \
+     	    -command [list midi_popup $id $id.in2f.x1 midi_indev2 $indevlist]
+ 	pack $id.in2f.l1 $id.in2f.x1 -side left
+     }
+ 
+     	# input device 3
+     if {$longform && [llength $indevlist] > 3} {
+ 	frame $id.in3f
+ 	pack $id.in3f -side top
+ 
+ 	label $id.in3f.l1 -text "input device 3:"
+ 	button $id.in3f.x1 -text [lindex $indevlist $midi_indev3] \
+     	    -command [list midi_popup $id $id.in3f.x1 midi_indev3 $indevlist]
+ 	pack $id.in3f.l1 $id.in3f.x1 -side left
+     }
+ 
+     	# input device 4
+     if {$longform && [llength $indevlist] > 4} {
+ 	frame $id.in4f
+ 	pack $id.in4f -side top
+ 
+ 	label $id.in4f.l1 -text "input device 4:"
+ 	button $id.in4f.x1 -text [lindex $indevlist $midi_indev4] \
+     	    -command [list midi_popup $id $id.in4f.x1 midi_indev4 $indevlist]
+ 	pack $id.in4f.l1 $id.in4f.x1 -side left
+     }
+ 
+     	# output device 1
+ 
+     frame $id.out1f
+     pack $id.out1f -side top
+     label $id.out1f.l1 -text "output device 1:"
+     button $id.out1f.x1 -text [lindex $outdevlist $midi_outdev1] \
+     	-command [list midi_popup $id $id.out1f.x1 midi_outdev1 $outdevlist]
+     pack $id.out1f.l1 $id.out1f.x1 -side left
+ 
+     	# output device 2
+     if {$longform && [llength $indevlist] > 2} {
+ 	frame $id.out2f
+ 	pack $id.out2f -side top
+     	label $id.out2f.l1 -text "output device 2:"
+     	button $id.out2f.x1 -text [lindex $outdevlist $midi_outdev2] \
+     	    -command \
+ 	    [list midi_popup $id $id.out2f.x1 midi_outdev2 $outdevlist]
+     	pack $id.out2f.l1 $id.out2f.x1 -side left
+     }
+ 
+     	# output device 3
+     if {$longform && [llength $indevlist] > 3} {
+ 	frame $id.out3f
+ 	pack $id.out3f -side top
+     	label $id.out3f.l1 -text "output device 3:"
+     	button $id.out3f.x1 -text [lindex $outdevlist $midi_outdev3] \
+     	    -command \
+ 	    [list midi_popup $id $id.out3f.x1 midi_outdev3 $outdevlist]
+     	pack $id.out3f.l1 $id.out3f.x1 -side left
+     }
+ 
+     	# output device 4
+     if {$longform && [llength $indevlist] > 4} {
+ 	frame $id.out4f
+ 	pack $id.out4f -side top
+     	label $id.out4f.l1 -text "output device 4:"
+     	button $id.out4f.x1 -text [lindex $outdevlist $midi_outdev4] \
+     	    -command \
+ 	    [list midi_popup $id $id.out4f.x1 midi_outdev4 $outdevlist]
+     	pack $id.out4f.l1 $id.out4f.x1 -side left
+     }
+ 
+     	# if not the "long form" make a button to
+ 	# restart with longform set. 
+     
+     if {$longform == 0} {
+ 	frame $id.longbutton
+ 	pack $id.longbutton -side top
+     	button $id.longbutton.b -text {use multiple alsa devices} \
+     	    -command  {pd pd midi-properties 1 \;}
+     	pack $id.longbutton.b
+     }
+     }
+     if {$alsa} {
+     	label $id.in1f.l1 -text "In Channels:"
+     	entry $id.in1f.x1 -textvariable midi_alsain -width 4
+         pack $id.in1f.l1 $id.in1f.x1 -side left
+ 	label $id.in1f.l2 -text "Out Channels:"
+     	entry $id.in1f.x2 -textvariable midi_alsaout -width 4
+         pack $id.in1f.l2 $id.in1f.x2 -side left
+     }
+ }
+ 
  ############ pdtk_path_dialog -- dialog window for search path #########
  

Index: s_stuff.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_stuff.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** s_stuff.h	28 Nov 2004 21:20:43 -0000	1.6
--- s_stuff.h	16 Jul 2005 01:43:18 -0000	1.7
***************
*** 96,99 ****
--- 96,101 ----
      int *pnmidioutdev, int *pmidioutdev);
  
+ void sys_get_midi_apis(char *buf);
+ 
  void sys_reopen_midi( void);
  void sys_close_midi( void);
***************
*** 110,113 ****
--- 112,131 ----
      int nmidioutdev, int *midioutdev);
  
+ #ifdef USEAPI_ALSA
+ EXTERN void sys_alsa_putmidimess(int portno, int a, int b, int c);
+ EXTERN void sys_alsa_putmidibyte(int portno, int a);
+ EXTERN void sys_alsa_poll_midi(void);
+ EXTERN void sys_alsa_setmiditimediff(double inbuftime, double outbuftime);
+ EXTERN void sys_alsa_midibytein(int portno, int byte);
+ EXTERN void sys_alsa_close_midi( void);
+ 
+ 
+     /* implemented in the system dependent MIDI code (s_midi_pm.c, etc. ) */
+ void midi_alsa_getdevs(char *indevlist, int *nindevs,
+     char *outdevlist, int *noutdevs, int maxndev, int devdescsize);
+ void sys_alsa_do_open_midi(int nmidiindev, int *midiindev,
+     int nmidioutdev, int *midioutdev);
+ #endif
+ 
  /* m_sched.c */
  EXTERN void sys_log_error(int type);
***************
*** 234,237 ****
--- 252,256 ----
  
  void sys_listmididevs(void);
+ void sys_set_midi_api(int whichapi);
  void sys_set_audio_api(int whichapi);
  void sys_get_audio_apis(char *buf);

Index: s_inter.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_inter.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** s_inter.c	30 May 2005 03:04:18 -0000	1.9
--- s_inter.c	16 Jul 2005 01:43:18 -0000	1.10
***************
*** 852,856 ****
      int stdinpipe[2];
  #endif
! 
      /* create an empty FD poll list */
      sys_fdpoll = (t_fdpoll *)t_getbytes(0);
--- 852,856 ----
      int stdinpipe[2];
  #endif
!     fprintf(stderr, "gui; %s\n", guidir);
      /* create an empty FD poll list */
      sys_fdpoll = (t_fdpoll *)t_getbytes(0);
***************
*** 1030,1033 ****
--- 1030,1036 ----
                  char *homedir = getenv("HOME"), filename[250];
                  struct stat statbuf;
+                 sprintf(filename, "%s/../../MacOS/Pd", guidir);
+                 if (stat(filename, &statbuf) >= 0)
+                     goto foundit;
                  if (!homedir || strlen(homedir) > 150)
                      goto nohomedir;
***************
*** 1197,1201 ****
      if (!sys_nogui)
      {
!          char buf[256];
           sys_socketreceiver = socketreceiver_new(0, 0, 0, 0);
           sys_addpollfn(sys_guisock, (t_fdpollfn)socketreceiver_read,
--- 1200,1204 ----
      if (!sys_nogui)
      {
!       char buf[256], buf2[256];
           sys_socketreceiver = socketreceiver_new(0, 0, 0, 0);
           sys_addpollfn(sys_guisock, (t_fdpollfn)socketreceiver_read,
***************
*** 1208,1212 ****
  #endif
           sys_get_audio_apis(buf);
!          sys_vgui("pdtk_pd_startup {%s} %s {%s}\n", pd_version, buf, 
                                    sys_font); 
      }
--- 1211,1216 ----
  #endif
           sys_get_audio_apis(buf);
!          sys_get_midi_apis(buf2);
!          sys_vgui("pdtk_pd_startup {%s} %s %s {%s}\n", pd_version, buf, buf2,
                                    sys_font); 
      }

Index: s_midi.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_midi.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** s_midi.c	8 Jul 2005 00:02:45 -0000	1.6
--- s_midi.c	16 Jul 2005 01:43:18 -0000	1.7
***************
*** 43,46 ****
--- 43,48 ----
  static double sys_midiinittime;
  
+ int sys_midiapi = API_DEFAULT;
+ 
      /* this is our current estimate for at what "system" real time the
      current logical time's output should occur. */
***************
*** 100,108 ****
  {
      int portno = midi_outqueue[midi_outtail].q_portno;
!     if (midi_outqueue[midi_outtail].q_onebyte)
!         sys_putmidibyte(portno, midi_outqueue[midi_outtail].q_byte1);
!     else sys_putmidimess(portno, midi_outqueue[midi_outtail].q_byte1,
!             midi_outqueue[midi_outtail].q_byte2,
!                 midi_outqueue[midi_outtail].q_byte3);
      midi_outtail  = (midi_outtail + 1 == MIDIQSIZE ? 0 : midi_outtail + 1);
  }
--- 102,123 ----
  {
      int portno = midi_outqueue[midi_outtail].q_portno;
! #ifdef USEAPI_ALSA
!     if (sys_midiapi == API_ALSA)
!       {
!         if (midi_outqueue[midi_outtail].q_onebyte)
!           sys_alsa_putmidibyte(portno, midi_outqueue[midi_outtail].q_byte1);
!         else sys_alsa_putmidimess(portno, midi_outqueue[midi_outtail].q_byte1,
!                              midi_outqueue[midi_outtail].q_byte2,
!                              midi_outqueue[midi_outtail].q_byte3);
!       }
!     else
! #endif /* ALSA */
!       {
!         if (midi_outqueue[midi_outtail].q_onebyte)
!           sys_putmidibyte(portno, midi_outqueue[midi_outtail].q_byte1);
!         else sys_putmidimess(portno, midi_outqueue[midi_outtail].q_byte1,
!                              midi_outqueue[midi_outtail].q_byte2,
!                              midi_outqueue[midi_outtail].q_byte3);
!       }
      midi_outtail  = (midi_outtail + 1 == MIDIQSIZE ? 0 : midi_outtail + 1);
  }
***************
*** 442,445 ****
--- 457,465 ----
      lasttime = newtime;
  #endif
+ #ifdef USEAPI_ALSA
+       if (sys_midiapi == API_ALSA)
+         sys_alsa_poll_midi();
+       else
+ #endif /* ALSA */
      sys_poll_midi();    /* OS dependent poll for MIDI input */
      sys_pollmidioutqueue();
***************
*** 449,452 ****
--- 469,475 ----
  /******************** dialog window and device listing ********************/
  
+ #ifdef USEAPI_ALSA
+ void midi_alsa_init( void);
+ #endif
  #ifdef USEAPI_OSS
  void midi_oss_init( void);
***************
*** 459,462 ****
--- 482,500 ----
  static int midi_midioutdev[MAXMIDIOUTDEV];
  
+ 
+ void sys_get_midi_apis(char *buf)
+ {
+     int n = 0;
+     strcpy(buf, "{ ");
+     sprintf(buf + strlen(buf), "{default-MIDI %d} ", API_DEFAULT); n++;
+ #ifdef USEAPI_ALSA
+     sprintf(buf + strlen(buf), "{ALSA-MIDI %d} ", API_ALSA); n++;
+ #endif
+     strcat(buf, "}");
+         /* then again, if only one API (or none) we don't offer any choice. */
+     if (n < 2)
+         strcpy(buf, "{}");
+     
+ }
  void sys_get_midi_params(int *pnmidiindev, int *pmidiindev,
      int *pnmidioutdev, int *pmidioutdev)
***************
*** 487,497 ****
--- 525,546 ----
      int nmidioutdev, int *midioutdev, int enable)
  {
+ #ifdef USEAPI_ALSA
+   midi_alsa_init();
+ #endif
  #ifdef USEAPI_OSS
      midi_oss_init();
  #endif
      if (enable)
+ #ifdef USEAPI_ALSA
+       if (sys_midiapi == API_ALSA)
+         sys_alsa_do_open_midi(nmidiindev, midiindev, nmidioutdev, midioutdev);
+       else
+ #endif /* ALSA */
          sys_do_open_midi(nmidiindev, midiindev, nmidioutdev, midioutdev);
      sys_save_midi_params(nmidiindev, midiindev,
          nmidioutdev, midioutdev);
+ 
+     sys_vgui("set pd_whichmidiapi %d\n", sys_midiapi);
+ 
  }
  
***************
*** 515,518 ****
--- 564,573 ----
      int nindevs = 0, noutdevs = 0, i;
  
+ #ifdef USEAPI_ALSA
+     if (sys_midiapi == API_ALSA)
+       midi_alsa_getdevs(indevlist, &nindevs, outdevlist, &noutdevs,
+         MAXNDEV, DEVDESCSIZE);
+     else
+ #endif /* ALSA */
      midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs,
          MAXNDEV, DEVDESCSIZE);
***************
*** 536,539 ****
--- 591,638 ----
  }
  
+ void sys_set_midi_api(int which)
+ {
+      sys_midiapi = which;
+      if (sys_verbose)
+         post("sys_midiapi %d", sys_midiapi);
+ }
+ 
+ void glob_midi_properties(t_pd *dummy, t_floatarg flongform);
+ 
+ void glob_midi_setapi(void *dummy, t_floatarg f)
+ {
+     int newapi = f;
+     if (newapi)
+     {
+         if (newapi == sys_midiapi)
+         {
+           //if (!midi_isopen())
+           //  s_reopen_midi();
+         }
+         else
+         {
+ #ifdef USEAPI_ALSA
+           if (sys_midiapi == API_ALSA)
+               sys_alsa_close_midi();
+           else
+ #endif
+             sys_close_midi();
+           sys_midiapi = newapi;
+           /* bash device params back to default */
+           midi_nmidiindev = midi_nmidioutdev = 1;
+           //midi_midiindev[0] = midi_midioutdev[0] = DEFAULTMIDIDEV;
+           //midi_midichindev[0] = midi_midichoutdev[0] = SYS_DEFAULTCH;
+           sys_reopen_midi();
+         }
+ 
+         glob_midi_properties(0, 0);
+     }
+     else //if (midi_isopen())
+     {
+         sys_close_midi();
+         //midi_state = 0;
+     }
+ }
+ 
  extern t_class *glob_pdobject;
  
***************
*** 590,593 ****
--- 689,705 ----
      midioutdev4 = (noutdev > 3 && midioutdev[3]>=0 ? midioutdev[3]+1 : 0);  
  
+ #ifdef USEAPI_ALSA
+       if (sys_midiapi == API_ALSA)
+     sprintf(buf,
+ "pdtk_alsa_midi_dialog %%s \
+ %s %d %d %d %d %s %d %d %d %d \
+ %d 1\n",
+         indevliststring,
+         midiindev1, midiindev2, midiindev3, midiindev4, 
+         outdevliststring,
+         midioutdev1, midioutdev2, midioutdev3, midioutdev4,
+         (flongform != 0));
+       else
+ #endif
      sprintf(buf,
  "pdtk_midi_dialog %%s \
***************
*** 599,602 ****
--- 711,715 ----
          midioutdev1, midioutdev2, midioutdev3, midioutdev4,
          (flongform != 0));
+ 
      gfxstub_deleteforkey(0);
      gfxstub_new(&glob_pdobject, (void *)glob_midi_properties, buf);
***************
*** 610,613 ****
--- 723,727 ----
      int i, nindev, noutdev;
      int newmidiindev[4], newmidioutdev[4];
+     int alsadevin, alsadevout;
  
      for (i = 0; i < 4; i++)
***************
*** 633,638 ****
          }
      }
  
-     sys_close_midi();
-     sys_open_midi(nindev, newmidiindev, noutdev, newmidioutdev, 1);
  }
--- 747,765 ----
          }
      }
+     alsadevin = atom_getintarg(8, argc, argv);
+     alsadevout = atom_getintarg(9, argc, argv);
+         
+ #ifdef USEAPI_ALSA
+     if (sys_midiapi == API_ALSA)
+       {
+         sys_alsa_close_midi();
+         sys_open_midi(alsadevin, newmidiindev, alsadevout, newmidioutdev, 1);
+       }
+     else
+ #endif
+       {
+         sys_close_midi();
+         sys_open_midi(nindev, newmidiindev, noutdev, newmidioutdev, 1);
+       }
  
  }

Index: g_all_guis.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_all_guis.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** g_all_guis.c	18 May 2005 04:28:50 -0000	1.6
--- g_all_guis.c	16 Jul 2005 01:43:18 -0000	1.7
***************
*** 354,360 ****
      iemgui->x_snd_unexpanded = snd;
      iemgui->x_snd = snd = canvas_realizedollar(iemgui->x_glist, snd);
-         post("send: before %s, after %s", iemgui->x_snd_unexpanded->s_name,
-             iemgui->x_snd->s_name);
- 
      iemgui->x_fsf.x_snd_able = sndable;
      iemgui_verify_snd_ne_rcv(iemgui);
--- 354,357 ----

Index: makefile
===================================================================
RCS file: /cvsroot/pure-data/pd/src/makefile,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** makefile	30 May 2005 04:37:25 -0000	1.13
--- makefile	16 Jul 2005 01:43:18 -0000	1.14
***************
*** 29,33 ****
  # the sources
  
! SYSSRC += s_midi_oss.c s_audio_oss.c s_audio_alsa.c s_audio_alsamm.c
  
  SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
--- 29,33 ----
  # the sources
  
! SYSSRC += s_midi_oss.c s_audio_oss.c s_audio_alsa.c s_audio_alsamm.c s_midi_alsa.c
  
  SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
***************
*** 98,106 ****
  
  #this is for Max OSX only...
! $(BIN_DIR)/pdtcl: $(GOBJ) $(GSRC)
! 	cd ../obj; libtool -dynamic -o $(BIN_DIR)/pdtcl $(GOBJ) \
! 	../../Frameworks/Tk.framework/Versions/Current/Tk \
! 	../../Frameworks/Tcl.framework/Versions/Current/Tcl \
! 	/usr/lib/libSystem.B.dylib
  
  externs: 
--- 98,112 ----
  
  #this is for Max OSX only...
! $(BIN_DIR)/libPdTcl.dylib: $(GOBJ) $(GSRC)
! 	cd ../obj && $(CC) -dynamiclib -read_only_relocs warning  \
! 		-o $(BIN_DIR)/libPdTcl.dylib $(GOBJ)  \
! 		-F \
! 		-framework Tcl  -framework Tk  -framework System  \
! 		-Wl,-install_name, at executable_path/../Resources/bin/libPdTcl.dylib
! 	install_name_tool -change /Tcl.framework/Versions/8.4/Tcl\
! 		 @executable_path/../Frameworks/Tcl.framework/Versions/8.4/Tcl \
! 		 -change /Tk.framework/Versions/8.4/Tk \
! 		 @executable_path/../Frameworks/Tk.framework/Versions/8.4/Tk \
! 		../bin/libPdTcl.dylib
  
  externs: 

Index: notes.txt
===================================================================
RCS file: /cvsroot/pure-data/pd/src/notes.txt,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** notes.txt	8 Jul 2005 00:02:44 -0000	1.14
--- notes.txt	16 Jul 2005 01:43:18 -0000	1.15
***************
*** 17,25 ****
  ------------ 0.39 ---------
  problems:
! array dimension change gives TK erro (doesn't update)
! throwing new array on canvas makes red rectangle?
! dialog doesn't start array dialog, just canvas one
  arrays that don't fit in bounds don't update (same as red rectangle problem?)
! 
  
  flag for array to suppress printing name
--- 17,24 ----
  ------------ 0.39 ---------
  problems:
! TK commands to nonexistent windows? (maybe fixed)
! array name changes don't show up on parent
  arrays that don't fit in bounds don't update (same as red rectangle problem?)
! what about upsampling inlet~s?  ask Pd list...
  
  flag for array to suppress printing name

--- NEW FILE: s_midi_alsa.c ---
/* Copyright (c) 1997-1999 Guenter Geiger, Miller Puckette, Larry Troxler,
* Winfried Ritsch, Karl MacMillan, and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution.  */

/* MIDI I/O for Linux using ALSA */

#include <stdio.h>
#ifdef UNISTD
#include <unistd.h>
#endif
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <alsa/asoundlib.h>
#include "m_pd.h"
#include "s_stuff.h"

static int alsa_nmidiin;
static int alsa_midiinfd[MAXMIDIINDEV];
static int alsa_nmidiout;
static int alsa_midioutfd[MAXMIDIOUTDEV];

static snd_seq_t *midi_handle;

static snd_midi_event_t *midiev;



static unsigned short CombineBytes(unsigned char First, unsigned char Second)
{
    unsigned short _14bit;
    _14bit = (unsigned short)Second;
    _14bit <<= 7;
    _14bit |= (unsigned short)First;
    return(_14bit);
}

void sys_alsa_do_open_midi(int nmidiin, int *midiinvec,
    int nmidiout, int *midioutvec)
{

    char portname[50];
    int err = 0;
    int client;
    int i;
    alsa_nmidiin = 0;
    alsa_nmidiout = 0;

    if (nmidiin>0 && nmidiout>0)
        err = snd_seq_open(&midi_handle,"default",SND_SEQ_OPEN_DUPLEX,0);
    else if (nmidiin > 0)
        err = snd_seq_open(&midi_handle,"default",SND_SEQ_OPEN_INPUT,0);
    else if (nmidiout > 0)
        err = snd_seq_open(&midi_handle,"default",SND_SEQ_OPEN_OUTPUT,0);
    
    if (err!=0)
    {
            sys_setalarm(1000000);
            post("couldn't open alsa sequencer");
            return;
    }
    for (i=0;i<nmidiout;i++)
    {
        int port;
        sprintf(portname,"Pure Data Midi-In %d",i+1);
        port = snd_seq_create_simple_port(midi_handle,portname,SND_SEQ_PORT_CAP_WRITE |SND_SEQ_PORT_CAP_SUBS_WRITE , SND_SEQ_PORT_TYPE_APPLICATION);
        alsa_midiinfd[i] = port;        
        if (port < 0) goto error;        
    }

    for (i=0;i<nmidiin;i++)
    {
        int port;
        sprintf(portname,"Pure Data Midi-Out %d",i+1);
        port = snd_seq_create_simple_port(midi_handle,portname,  SND_SEQ_PORT_CAP_SUBS_READ |  SND_SEQ_PORT_CAP_READ, SND_SEQ_PORT_TYPE_APPLICATION);
        alsa_midioutfd[i] = port;       
        if (port < 0) goto error;        
    }
   
    if (nmidiout == 0 && nmidiin == 0) return;
    snd_seq_client_info_t *alsainfo;
    snd_seq_client_info_malloc(&alsainfo);
    snd_seq_get_client_info(midi_handle,alsainfo);
    snd_seq_client_info_set_name(alsainfo,"Pure Data");
    client = snd_seq_client_info_get_client(alsainfo);
    snd_seq_set_client_info(midi_handle,alsainfo);
    snd_seq_client_info_free(alsainfo);
    post("Opened Alsa Client %d in:%d out:%d",client,nmidiin,nmidiout);
    sys_setalarm(0);
    snd_midi_event_new(20,&midiev);
    alsa_nmidiout = nmidiout;
    alsa_nmidiin = nmidiin;
    return;
  error:
    sys_setalarm(1000000);
    post("couldn't open alsa MIDI output device");
    return;
}

#define md_msglen(x) (((x)<0xC0)?2:((x)<0xE0)?1:((x)<0xF0)?2:\
    ((x)==0xF2)?2:((x)<0xF4)?1:0)

void sys_alsa_putmidimess(int portno, int a, int b, int c)
{
    int channel;
    snd_seq_event_t ev;
    snd_seq_ev_clear(&ev);
    if (portno >= 0 && portno < alsa_nmidiout)
    {
        if (a >= 224)   // pitchbend
        {
            channel = a-224;
            snd_seq_ev_set_pitchbend(&ev,channel,CombineBytes(b,c));
        }
        else if (a >= 208)      // touch
        {
            channel = a-208;
            snd_seq_ev_set_chanpress(&ev,channel,b);
        }
        else if (a >= 192)      // program
        {
            channel = a-192;
            snd_seq_ev_set_pgmchange(&ev,channel,b);
        }
        else if (a >= 176)      // controller
        {
            channel = a-176;
            snd_seq_ev_set_controller(&ev,channel,b,c);
        }
        else if (a >= 160)      // polytouch
        {
            channel = a-160;
            snd_seq_ev_set_keypress(&ev,channel,b,c);
        }
        else if (a >= 144)      // note
        {
            channel = a-144;
            if (c)
                snd_seq_ev_set_noteon(&ev,channel,b,c);
            else
                snd_seq_ev_set_noteoff(&ev,channel,b,c);
        }
        snd_seq_ev_set_direct(&ev);
        snd_seq_ev_set_subs(&ev);
        snd_seq_ev_set_source(&ev,alsa_midioutfd[portno]);
        snd_seq_event_output_direct(midi_handle,&ev);
    }
    //post("%d %d %d\n",a,b,c);
}

void sys_alsa_putmidibyte(int portno, int byte)
{
    snd_seq_event_t ev;
    snd_seq_ev_clear(&ev);
    if (portno >= 0 && portno < alsa_nmidiout)
    {
        // repack into 1 byte char and put somewhere to point at
        unsigned char data = (unsigned char)byte;
        unsigned char *dataptr = malloc(1);
        memcpy(dataptr,&byte,1);

        snd_seq_ev_set_sysex(&ev,1,dataptr); //...set_variable *should* have worked but didn't
        snd_seq_ev_set_direct(&ev);
        snd_seq_ev_set_subs(&ev);
        snd_seq_ev_set_source(&ev,alsa_midioutfd[portno]);
        snd_seq_event_output_direct(midi_handle,&ev);
    }
}


    /* this version uses the asynchronous "read()" ... */
void sys_alsa_poll_midi(void)
{
   char buf[20];
   int count, alsa_source;
   int i;
   snd_seq_event_t *midievent = NULL;

   if (alsa_nmidiout == 0 && alsa_nmidiin == 0) return;
   
   snd_midi_event_init(midiev);

   if (!alsa_nmidiout && !alsa_nmidiin) return;
   count = snd_seq_event_input_pending(midi_handle,1);
   if (count != 0)
        count = snd_seq_event_input(midi_handle,&midievent);
   if (midievent != NULL)
   {
       count = snd_midi_event_decode(midiev,buf,20,midievent);
       alsa_source = midievent->dest.port;
       for(i=0;i<count;i++)
           sys_midibytein(alsa_source, (buf[i] & 0xff));
       //post("received %d midi bytes\n",count);
   }
}

void sys_alsa_close_midi()
{
    alsa_nmidiin = alsa_nmidiout = 0;
    snd_seq_close(midi_handle);
    snd_midi_event_free(midiev);
}

#define NSEARCH 10
static int alsa_nmidiindevs, alsa_nmidioutdevs, alsa_initted;

void midi_alsa_init(void)     
{
    int i;
    if (alsa_initted)
        return;
    alsa_initted = 1;
}

void midi_alsa_getdevs(char *indevlist, int *nindevs,
    char *outdevlist, int *noutdevs, int maxndev, int devdescsize)
{
    int i, ndev;
    if ((ndev = alsa_nmidiindevs) > maxndev)
        ndev = maxndev;
    for (i = 0; i < ndev; i++)
        sprintf(indevlist + i * devdescsize, "ALSA MIDI device #%d", i+1);
    *nindevs = ndev;

    if ((ndev = alsa_nmidioutdevs) > maxndev)
        ndev = maxndev;
    for (i = 0; i < ndev; i++)
        sprintf(outdevlist + i * devdescsize, "ALSA MIDI device #%d", i+1);
    *noutdevs = ndev;
}

Index: makefile.dependencies
===================================================================
RCS file: /cvsroot/pure-data/pd/src/makefile.dependencies,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** makefile.dependencies	30 May 2005 04:37:25 -0000	1.5
--- makefile.dependencies	16 Jul 2005 01:43:18 -0000	1.6
***************
*** 1035,1036 ****
--- 1035,1069 ----
    /usr/include/bits/ioctl-types.h /usr/include/sys/ttydefaults.h \
    /usr/include/sched.h s_audio_alsa.h
+ s_midi_alsa.o: s_midi_alsa.c /usr/include/stdio.h /usr/include/features.h \
+   /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \
+   /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/include/stddef.h \
+   /usr/include/bits/types.h /usr/include/bits/wordsize.h \
+   /usr/include/bits/typesizes.h /usr/include/libio.h \
+   /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
+   /usr/include/gconv.h \
+   /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/include/stdarg.h \
+   /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+   /usr/include/bits/stdio.h /usr/include/unistd.h \
+   /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \
+   /usr/include/getopt.h /usr/include/stdlib.h /usr/include/sys/types.h \
+   /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h \
+   /usr/include/sys/select.h /usr/include/bits/select.h \
+   /usr/include/bits/sigset.h /usr/include/bits/time.h \
+   /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
+   /usr/include/bits/sched.h /usr/include/alloca.h /usr/include/sys/stat.h \
+   /usr/include/bits/stat.h /usr/include/fcntl.h /usr/include/bits/fcntl.h \
+   /usr/include/errno.h /usr/include/bits/errno.h \
+   /usr/include/linux/errno.h /usr/include/asm/errno.h \
+   /usr/include/alsa/asoundlib.h /usr/include/string.h \
+   /usr/include/bits/string.h /usr/include/bits/string2.h \
+   /usr/include/assert.h /usr/include/sys/poll.h /usr/include/bits/poll.h \
+   /usr/include/alsa/asoundef.h /usr/include/alsa/version.h \
+   /usr/include/alsa/global.h /usr/include/alsa/input.h \
+   /usr/include/alsa/output.h /usr/include/alsa/error.h \
+   /usr/include/alsa/conf.h /usr/include/alsa/pcm.h \
+   /usr/include/alsa/rawmidi.h /usr/include/alsa/timer.h \
+   /usr/include/alsa/hwdep.h /usr/include/alsa/control.h \
+   /usr/include/alsa/mixer.h /usr/include/alsa/seq_event.h \
+   /usr/include/alsa/seq.h /usr/include/alsa/seqmid.h \
+   /usr/include/alsa/seq_midi_event.h /usr/include/alsa/conv.h \
+   /usr/include/alsa/instr.h m_pd.h s_stuff.h

Index: x_connective.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/x_connective.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** x_connective.c	30 May 2005 03:04:19 -0000	1.5
--- x_connective.c	16 Jul 2005 01:43:18 -0000	1.6
***************
*** 506,510 ****
      {
          float f;
!         if (!argc) return;
          f = atom_getfloat(argv);
          for (nelement = x->x_nelement, e = x->x_vec; nelement--; e++)
--- 506,514 ----
      {
          float f;
!         if (!argc)  /* empty lists go out reject outlet */
!         {
!             outlet_bang(x->x_rejectout);
!             return;
!         }
          f = atom_getfloat(argv);
          for (nelement = x->x_nelement, e = x->x_vec; nelement--; e++)
***************
*** 581,585 ****
      int n;
      t_routeelement *e;
!     t_route *x = (t_route *)pd_new(route_class);
      t_atom a;
      if (argc == 0)
--- 585,590 ----
      int n;
      t_routeelement *e;
!     t_route *x;
!     
      t_atom a;
      if (argc == 0)
***************
*** 589,592 ****
--- 594,604 ----
          argv = &a;
      }
+     for (n = 1; n < argc; n++)
+         if (argv[n].a_type != argv[0].a_type)
+     {
+         error("route: creation with mixed argument types failed");
+         return (0);
+     }
+     x = (t_route *)pd_new(route_class);
      x->x_type = argv[0].a_type;
      x->x_nelement = argc;

Index: u_pdsend.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/u_pdsend.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** u_pdsend.c	6 Sep 2004 20:20:36 -0000	1.2
--- u_pdsend.c	16 Jul 2005 01:43:18 -0000	1.3
***************
*** 106,110 ****
      while (1)
      {
!         char buf[BUFSIZE], *bp, nsent, nsend;
          if (!fgets(buf, BUFSIZE, stdin))
              break;
--- 106,111 ----
      while (1)
      {
!         char buf[BUFSIZE], *bp;
!         int nsent, nsend;
          if (!fgets(buf, BUFSIZE, stdin))
              break;

Index: g_numbox.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_numbox.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** g_numbox.c	25 Jun 2005 02:49:15 -0000	1.5
--- g_numbox.c	16 Jul 2005 01:43:18 -0000	1.6
***************
*** 37,41 ****
  static void my_numbox_tick_reset(t_my_numbox *x)
  {
!   if(x->x_gui.x_fsf.x_change && x->x_gui.x_glist)
      {
          x->x_gui.x_fsf.x_change = 0;
--- 37,41 ----
  static void my_numbox_tick_reset(t_my_numbox *x)
  {
!     if(x->x_gui.x_fsf.x_change && x->x_gui.x_glist)
      {
          x->x_gui.x_fsf.x_change = 0;

Index: m_glob.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_glob.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** m_glob.c	6 Sep 2004 20:20:35 -0000	1.4
--- m_glob.c	16 Jul 2005 01:43:18 -0000	1.5
***************
*** 24,27 ****
--- 24,28 ----
  void glob_midi_properties(t_pd *dummy, t_floatarg flongform);
  void glob_midi_dialog(t_pd *dummy, t_symbol *s, int argc, t_atom *argv);
+ void glob_midi_setapi(t_pd *dummy, t_floatarg f);
  void glob_start_path_dialog(t_pd *dummy, t_floatarg flongform);
  void glob_path_dialog(t_pd *dummy, t_symbol *s, int argc, t_atom *argv);
***************
*** 94,97 ****
--- 95,100 ----
      class_addmethod(glob_pdobject, (t_method)glob_audio_setapi,
          gensym("audio-setapi"), A_FLOAT, 0);
+     class_addmethod(glob_pdobject, (t_method)glob_midi_setapi,
+         gensym("midi-setapi"), A_FLOAT, 0);
      class_addmethod(glob_pdobject, (t_method)glob_midi_properties,
          gensym("midi-properties"), A_DEFFLOAT, 0);





More information about the Pd-cvs mailing list