[PD-cvs] pd/src makefile.in, 1.4.4.2.2.21.2.30, 1.4.4.2.2.21.2.31 s_audio.c, 1.5.4.16.2.20.2.12, 1.5.4.16.2.20.2.13 s_audio_alsa.c, 1.5.4.5.2.2.2.6, 1.5.4.5.2.2.2.7 s_audio_jack.c, 1.5.4.8.2.7.2.5, 1.5.4.8.2.7.2.6

Mathieu Bouchard matju at users.sourceforge.net
Mon Jul 9 19:41:05 CEST 2007


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

Modified Files:
      Tag: desiredata
	makefile.in s_audio.c s_audio_alsa.c s_audio_jack.c 
Log Message:
switch audio and midi to C++


Index: makefile.in
===================================================================
RCS file: /cvsroot/pure-data/pd/src/makefile.in,v
retrieving revision 1.4.4.2.2.21.2.30
retrieving revision 1.4.4.2.2.21.2.31
diff -C2 -d -r1.4.4.2.2.21.2.30 -r1.4.4.2.2.21.2.31
*** makefile.in	30 Jun 2007 00:35:35 -0000	1.4.4.2.2.21.2.30
--- makefile.in	9 Jul 2007 17:41:02 -0000	1.4.4.2.2.21.2.31
***************
*** 22,33 ****
  
  SRCXX = desire.c kernel.c builtins.c builtins_dsp.c s_path.c s_inter.c s_main.c \
! 	m_sched.c s_loader.c d_soundfile.c d_ugen.c
! SRC = m_fifo.c m_simd.c s_audio.c s_midi.c d_mayer_fft.c d_fftroutine.c
! 
! # audio drivers and midi drivers
! SRC += @AUDIOSRC@ @MIDISRC@
! 
  OBJ = $(SRCXX:.c=.o) $(SRC:.c=.o)
- 
  SO = libpd$(LIBSUFFIX)
  
--- 22,28 ----
  
  SRCXX = desire.c kernel.c builtins.c builtins_dsp.c s_path.c s_inter.c s_main.c \
! 	m_sched.c s_loader.c d_soundfile.c d_ugen.c s_audio.c s_midi.c @AUDIOSRC@ @MIDISRC@
! SRC = m_fifo.c m_simd.c d_mayer_fft.c d_fftroutine.c
  OBJ = $(SRCXX:.c=.o) $(SRC:.c=.o)
  SO = libpd$(LIBSUFFIX)
  

Index: s_audio_alsa.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio_alsa.c,v
retrieving revision 1.5.4.5.2.2.2.6
retrieving revision 1.5.4.5.2.2.2.7
diff -C2 -d -r1.5.4.5.2.2.2.6 -r1.5.4.5.2.2.2.7
*** s_audio_alsa.c	30 Jun 2007 20:22:38 -0000	1.5.4.5.2.2.2.6
--- s_audio_alsa.c	9 Jul 2007 17:41:02 -0000	1.5.4.5.2.2.2.7
***************
*** 166,170 ****
      if (alsa_snd_buf) {
          if (alsa_snd_bufsize < bufsizeforthis) {
!             if (!(alsa_snd_buf = realloc(alsa_snd_buf, bufsizeforthis))) {
                  post("out of memory");
                  return 0;
--- 166,170 ----
      if (alsa_snd_buf) {
          if (alsa_snd_bufsize < bufsizeforthis) {
!             if (!(alsa_snd_buf = (char *)realloc(alsa_snd_buf, bufsizeforthis))) {
                  post("out of memory");
                  return 0;
***************
*** 174,178 ****
          }
      } else {
!         if (!(alsa_snd_buf = (void *)malloc(bufsizeforthis))) {
              post("out of memory");
              return 0;
--- 174,178 ----
          }
      } else {
!         if (!(alsa_snd_buf = (char *)malloc(bufsizeforthis))) {
              post("out of memory");
              return 0;
***************
*** 187,191 ****
  int alsa_open_audio(
  int  naudioindev, int * audioindev, int  nchindev, int * chindev,
! int naudiooutdev, int *audiooutdev, int nchoutdev, int *choutdev, int rate/*, int dummy*/) {
      int err, inchans = 0, outchans = 0;
      char devname[512];
--- 187,191 ----
  int alsa_open_audio(
  int  naudioindev, int * audioindev, int  nchindev, int * chindev,
! int naudiooutdev, int *audiooutdev, int nchoutdev, int *choutdev, int rate, int dummy) {
      int err, inchans = 0, outchans = 0;
      char devname[512];
***************
*** 193,197 ****
      int nfrags, i, iodev, dev2;
  
!     nfrags = sys_schedadvance * (float)rate / (1e6 * frag_size);
      /* save our belief as to ALSA's buffer size for later */
      alsa_buf_samps = nfrags * frag_size;
--- 193,197 ----
      int nfrags, i, iodev, dev2;
  
!     nfrags = int(sys_schedadvance * (float)rate / (1e6 * frag_size));
      /* save our belief as to ALSA's buffer size for later */
      alsa_buf_samps = nfrags * frag_size;
***************
*** 373,377 ****
                       j += thisdevchans, fp2++) {
                  float s1 = *fp2 * INT32_MAX;
!                 ((t_alsa_sample32 *)alsa_snd_buf)[j] = CLIP32(s1);
              } 
              for (; i < thisdevchans; i++, ch++)
--- 373,377 ----
                       j += thisdevchans, fp2++) {
                  float s1 = *fp2 * INT32_MAX;
!                 ((t_alsa_sample32 *)alsa_snd_buf)[j] = CLIP32(int(s1));
              } 
              for (; i < thisdevchans; i++, ch++)
***************
*** 382,386 ****
                  for (j = ch, k = sys_dacblocksize, fp2 = fp1; k--;
                       j += thisdevchans, fp2++) {
!                 int s = *fp2 * 32767.;
                  if (s > 32767)
                      s = 32767;
--- 382,386 ----
                  for (j = ch, k = sys_dacblocksize, fp2 = fp1; k--;
                       j += thisdevchans, fp2++) {
!                 int s = int(*fp2 * 32767.);
                  if (s > 32767)
                      s = 32767;
***************
*** 526,537 ****
      int i, result;
      memset(alsa_snd_buf, 0,
!         alsa_outdev[iodev].a_sampwidth * sys_dacblocksize *
!             alsa_outdev[iodev].a_channels);
      for (i = 0; i < n; i++) {
!         result = snd_pcm_writei(alsa_outdev[iodev].a_handle, alsa_snd_buf,
!             sys_dacblocksize);
  #if 0
!         if (result != sys_dacblocksize)
!             post("result %d", result);
  #endif
      }
--- 526,534 ----
      int i, result;
      memset(alsa_snd_buf, 0,
!         alsa_outdev[iodev].a_sampwidth * sys_dacblocksize * alsa_outdev[iodev].a_channels);
      for (i = 0; i < n; i++) {
!         result = snd_pcm_writei(alsa_outdev[iodev].a_handle, alsa_snd_buf, sys_dacblocksize);
  #if 0
!         if (result != sys_dacblocksize) post("result %d", result);
  #endif
      }

Index: s_audio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio.c,v
retrieving revision 1.5.4.16.2.20.2.12
retrieving revision 1.5.4.16.2.20.2.13
diff -C2 -d -r1.5.4.16.2.20.2.12 -r1.5.4.16.2.20.2.13
*** s_audio.c	6 Jul 2007 22:43:09 -0000	1.5.4.16.2.20.2.12
--- s_audio.c	9 Jul 2007 17:41:02 -0000	1.5.4.16.2.20.2.13
***************
*** 7,10 ****
--- 7,11 ----
  */
  
+ #define PD_PLUSPLUS_FACE
  #include "m_pd.h"
  #include "s_stuff.h"
***************
*** 82,95 ****
  float sys_outmax;        /* max output amplitude */
  
!     /* exported variables */
  int sys_schedadvance;   /* scheduler advance in microseconds */
- float sys_dacsr;
- 
- t_sample *sys_soundout;
- t_sample *sys_soundin;
  
!     /* the "state" is normally one if we're open and zero otherwise; 
!     but if the state is one, we still haven't necessarily opened the
!     audio hardware; see audio_isopen() below. */
  static int audio_state;
  
--- 83,92 ----
  float sys_outmax;        /* max output amplitude */
  
! /* exported variables */
  int sys_schedadvance;   /* scheduler advance in microseconds */
  
! /* the "state" is normally one if we're open and zero otherwise;
!    but if the state is one, we still haven't necessarily opened the
!    audio hardware; see audio_isopen() below. */
  static int audio_state;
  
***************
*** 178,183 ****
      sys_inchannels = chin;
      sys_outchannels = chout;
!     sys_dacsr = sr;
!     sys_advance_samples = (sys_schedadvance * sys_dacsr) / (1000000.);
      if (sys_advance_samples < /* 3 *  */sys_dacblocksize)
          sys_advance_samples = /* 3 *  */sys_dacblocksize;
--- 175,180 ----
      sys_inchannels = chin;
      sys_outchannels = chout;
!     sys_dacsr = double(sr);
!     sys_advance_samples = int(sys_schedadvance*sys_dacsr/1000000.);
      if (sys_advance_samples < /* 3 *  */sys_dacblocksize)
          sys_advance_samples = /* 3 *  */sys_dacblocksize;
***************
*** 331,336 ****
              post("unknown audio API specified");
      }
!     sys_save_audio_params(naudioindev, audioindev, chindev,
!         naudiooutdev, audiooutdev, choutdev, sys_dacsr, sys_dacblocksize, advance, schedmode);
      if (sys_inchannels == 0 && sys_outchannels == 0) enable = 0;
      audio_state = enable;
--- 328,333 ----
              post("unknown audio API specified");
      }
!     sys_save_audio_params(naudioindev, audioindev, chindev, naudiooutdev, audiooutdev, choutdev, int(sys_dacsr),
! 	sys_dacblocksize, advance, schedmode);
      if (sys_inchannels == 0 && sys_outchannels == 0) enable = 0;
      audio_state = enable;
***************
*** 574,579 ****
  }
  
! void glob_audio_setapi(void *dummy, t_floatarg f) {
!     int newapi = f;
      if (newapi != sys_audioapi) {
  	if (newapi != sys_audioapi) {
--- 571,576 ----
  }
  
! void glob_audio_setapi(t_pd *dummy, t_floatarg f) {
!     int newapi = int(f);
      if (newapi != sys_audioapi) {
  	if (newapi != sys_audioapi) {
***************
*** 634,640 ****
  
  #ifdef USEAPI_ALSA
! void alsa_putzeros(int n);
! void alsa_getzeros(int n);
! void alsa_printstate( void);
  #endif
  
--- 631,637 ----
  
  #ifdef USEAPI_ALSA
! void alsa_putzeros(int iodev, int n);
! void alsa_getzeros(int iodev, int n);
! void alsa_printstate(void);
  #endif
  
***************
*** 644,649 ****
      if      (arg == gensym("restart"))   sys_reopen_audio();
  #ifdef USEAPI_ALSA
!     else if (arg == gensym("alsawrite")) alsa_putzeros(atom_getintarg(1, argc, argv));
!     else if (arg == gensym("alsaread"))  alsa_getzeros(atom_getintarg(1, argc, argv));
      else if (arg == gensym("print"))     alsa_printstate();
  #endif
--- 641,647 ----
      if      (arg == gensym("restart"))   sys_reopen_audio();
  #ifdef USEAPI_ALSA
!     /* what's the matter here? what should be the value of iodev??? */
!     else if (arg == gensym("alsawrite")) alsa_putzeros(0, atom_getintarg(1, argc, argv));
!     else if (arg == gensym("alsaread"))  alsa_getzeros(0, atom_getintarg(1, argc, argv));
      else if (arg == gensym("print"))     alsa_printstate();
  #endif
***************
*** 722,727 ****
  	naudiooutdev = naudioindev = (int)atom_getfloatarg(0, argc, argv);
  	for (i = 0; i != MAXAUDIOINDEV; i++) {
! 		audiooutdev[i] = audioindev[i] = atom_getfloatarg(i*2+1, argc, argv);
! 		audiochoutdev[i] = audiochindev[i] = atom_getfloatarg(i*2+2, argc, argv);
  	}
  	sys_close_audio();
--- 720,725 ----
  	naudiooutdev = naudioindev = (int)atom_getfloatarg(0, argc, argv);
  	for (i = 0; i != MAXAUDIOINDEV; i++) {
! 		audiooutdev  [i] = audioindev  [i] = int(atom_getfloatarg(i*2+1, argc, argv));
! 		audiochoutdev[i] = audiochindev[i] = int(atom_getfloatarg(i*2+2, argc, argv));
  	}
  	sys_close_audio();
***************
*** 738,743 ****
  	naudioindev = (int)atom_getfloatarg(0, argc, argv);
  	for (i = 0; i != MAXAUDIOINDEV; i=i+2) {
! 		audioindev[i] = atom_getfloatarg(i+1, argc, argv);
! 		audiochindev[i] = atom_getfloatarg(i+2, argc, argv);
  	}
  	sys_close_audio();
--- 736,741 ----
  	naudioindev = (int)atom_getfloatarg(0, argc, argv);
  	for (i = 0; i != MAXAUDIOINDEV; i=i+2) {
! 		audioindev  [i] = atom_getintarg(i+1, argc, argv);
! 		audiochindev[i] = atom_getintarg(i+2, argc, argv);
  	}
  	sys_close_audio();
***************
*** 754,759 ****
  	naudiooutdev = (int)atom_getfloatarg(0, argc, argv);
  	for (i = 0; i != MAXAUDIOOUTDEV; i=i+2) {
! 		audiooutdev[i] = atom_getfloatarg(i+1, argc, argv);
! 		audiochoutdev[i] = atom_getfloatarg(i+2, argc, argv);
  	}
  	sys_close_audio();
--- 752,757 ----
  	naudiooutdev = (int)atom_getfloatarg(0, argc, argv);
  	for (i = 0; i != MAXAUDIOOUTDEV; i=i+2) {
! 		audiooutdev  [i] = atom_getintarg(i+1, argc, argv);
! 		audiochoutdev[i] = atom_getintarg(i+2, argc, argv);
  	}
  	sys_close_audio();

Index: s_audio_jack.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio_jack.c,v
retrieving revision 1.5.4.8.2.7.2.5
retrieving revision 1.5.4.8.2.7.2.6
diff -C2 -d -r1.5.4.8.2.7.2.5 -r1.5.4.8.2.7.2.6
*** s_audio_jack.c	30 Jun 2007 20:28:14 -0000	1.5.4.8.2.7.2.5
--- s_audio_jack.c	9 Jul 2007 17:41:02 -0000	1.5.4.8.2.7.2.6
***************
*** 38,47 ****
  		if (jack_filled != nframes) fprintf(stderr,"Partial read");
  		for (j = 0; j < sys_outchannels;  j++) {
! 			out = jack_port_get_buffer (output_port[j], nframes);
! 			memcpy(out, jack_outbuf + (j * BUF_JACK), sizeof (float) * nframes);
  		}
  		for (j = 0; j < sys_inchannels; j++) {
! 			in = jack_port_get_buffer( input_port[j], nframes);
! 			memcpy(jack_inbuf + (j * BUF_JACK), in, sizeof (float) * nframes);
  		}
  		jack_filled -= nframes;
--- 38,47 ----
  		if (jack_filled != nframes) fprintf(stderr,"Partial read");
  		for (j = 0; j < sys_outchannels;  j++) {
! 			out = (float *)jack_port_get_buffer(output_port[j], nframes);
! 			memcpy(out, jack_outbuf + (j * BUF_JACK), sizeof(float)*nframes);
  		}
  		for (j = 0; j < sys_inchannels; j++) {
! 			in  = (float *)jack_port_get_buffer( input_port[j], nframes);
! 			memcpy(jack_inbuf + (j * BUF_JACK), in,   sizeof(float)*nframes);
  		}
  		jack_filled -= nframes;
***************
*** 49,53 ****
  		if (jack_started) jack_dio_error = 1;
  		for (j = 0; j < outport_count;  j++) {
! 			out = jack_port_get_buffer (output_port[j], nframes);
  			memset(out, 0, sizeof (float) * nframes);
  		}
--- 49,53 ----
  		if (jack_started) jack_dio_error = 1;
  		for (j = 0; j < outport_count;  j++) {
! 			out = (float *)jack_port_get_buffer (output_port[j], nframes);
  			memset(out, 0, sizeof (float) * nframes);
  		}
***************
*** 74,82 ****
  static int cb_process (jack_nframes_t nframes, void *arg) {
  	int i,j;
! 	int timeout = nframes * 1e6 / sys_dacsr;
  	if (canvas_dspstate == 0) {
  		/* dsp is switched off, the audio is open ... */
  		for (j = 0; j < sys_outchannels;  j++) {
! 			t_sample * out = jack_port_get_buffer (output_port[j], nframes);
  			zeroblock(out, dspticks_per_jacktick * sys_dacblocksize);
  		}
--- 74,82 ----
  static int cb_process (jack_nframes_t nframes, void *arg) {
  	int i,j;
! 	int timeout = int(nframes * 1e6 / sys_dacsr);
  	if (canvas_dspstate == 0) {
  		/* dsp is switched off, the audio is open ... */
  		for (j = 0; j < sys_outchannels;  j++) {
! 			t_sample *out = (t_sample *)jack_port_get_buffer (output_port[j], nframes);
  			zeroblock(out, dspticks_per_jacktick * sys_dacblocksize);
  		}
***************
*** 97,101 ****
  		/* get sound from the inputs */
  		for (j = 0; j < sys_inchannels; j++) {
! 			t_sample * in = jack_port_get_buffer(input_port[j], nframes);
  			copyblock(sys_soundin + j * sys_dacblocksize,
  				in + i * sys_dacblocksize,
--- 97,101 ----
  		/* get sound from the inputs */
  		for (j = 0; j < sys_inchannels; j++) {
! 			t_sample *in = (t_sample *)jack_port_get_buffer(input_port[j], nframes);
  			copyblock(sys_soundin + j * sys_dacblocksize,
  				in + i * sys_dacblocksize,
***************
*** 106,110 ****
  		/* send sound to the output */
  		for (j = 0; j < sys_outchannels;  j++) {
! 			t_sample * out = jack_port_get_buffer (output_port[j], nframes);
  			copyblock(out + i * sys_dacblocksize, sys_soundout + j * sys_dacblocksize, sys_dacblocksize);
  		}
--- 106,110 ----
  		/* send sound to the output */
  		for (j = 0; j < sys_outchannels;  j++) {
! 			t_sample *out = (t_sample *)jack_port_get_buffer (output_port[j], nframes);
  			copyblock(out + i * sys_dacblocksize, sys_soundout + j * sys_dacblocksize, sys_dacblocksize);
  		}
***************
*** 131,135 ****
  	jack_close_audio();
  	/* try to reconnect to jack server */
! 	jack_open_audio(sys_inchannels, sys_outchannels, sys_dacsr, jack_scheduler);
  	/* restore last connection state */
   	jack_restore_connection_state();
--- 131,135 ----
  	jack_close_audio();
  	/* try to reconnect to jack server */
! 	jack_open_audio(sys_inchannels, sys_outchannels, int(sys_dacsr), jack_scheduler);
  	/* restore last connection state */
   	jack_restore_connection_state();
***************
*** 318,322 ****
      }
      /* tb: get advance from jack server */
!     sys_schedadvance = (float)jack_port_get_total_latency(jack_client,output_port[0]) * 1000. / sys_dacsr * 1000;
      return 0;
   bailout:
--- 318,322 ----
      }
      /* tb: get advance from jack server */
!     sys_schedadvance = int((float)jack_port_get_total_latency(jack_client,output_port[0]) * 1000. / sys_dacsr * 1000);
      return 0;
   bailout:
***************
*** 345,349 ****
  	int rtnval =  SENDDACS_YES;
  	int timenow;
! 	int timeref = sys_getrealtime();
  	if (!jack_client) return SENDDACS_NO;
  	if (!sys_inchannels && !sys_outchannels) return SENDDACS_NO;
--- 345,349 ----
  	int rtnval =  SENDDACS_YES;
  	int timenow;
! 	int timeref = int(sys_getrealtime());
  	if (!jack_client) return SENDDACS_NO;
  	if (!sys_inchannels && !sys_outchannels) return SENDDACS_NO;
***************
*** 367,371 ****
  		fp += sys_dacblocksize;
  	}
! 	if ((timenow = sys_getrealtime()) - timeref > sys_sleepgrain * 1e-6) {
  		rtnval = SENDDACS_SLEPT;
  	}
--- 367,371 ----
  		fp += sys_dacblocksize;
  	}
! 	if ((timenow = int(sys_getrealtime()) - timeref > sys_sleepgrain * 1e-6)) {
  		rtnval = SENDDACS_SLEPT;
  	}





More information about the Pd-cvs mailing list