Jelajahi Sumber

update copyright date

richarddobson 2 tahun lalu
induk
melakukan
fbed6d99cb
1 mengubah file dengan 770 tambahan dan 770 penghapusan
  1. 770 770
      dev/env/envel.c

+ 770 - 770
dev/env/envel.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1983-2013 Trevor Wishart and Composers Desktop Project Ltd
+ * Copyright (c) 1983-2023 Trevor Wishart and Composers Desktop Project Ltd
  * http://www.trevorwishart.co.uk
  * http://www.composersdesktop.com
  *
@@ -44,31 +44,31 @@
 #include <sfsys.h>
 
 
-#define INBUF_START		(0)
-#define OUTBUF_START	(1)
-#define OUTBUF_END		(2)
+#define INBUF_START             (0)
+#define OUTBUF_START    (1)
+#define OUTBUF_END              (2)
 
 static int  init_outbuf
-	(int startsamp,int *is_simple,int *write_offset,int *samp_offset,int *samps_left_to_process,dataptr dz);
+        (int startsamp,int *is_simple,int *write_offset,int *samp_offset,int *samps_left_to_process,dataptr dz);
 static int  init_brkpnts
-	(int *sampno,double *starttime,double *gain,double **endbrk,double **nextbrk,
-	 double *nextgain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz);
+        (int *sampno,double *starttime,double *gain,double **endbrk,double **nextbrk,
+         double *nextgain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz);
 static int  advance_brkpnts
-	(double starttime,double *gain,double *endbrk,double **nextbrk,double *nextgain,
-	 double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz);
+        (double starttime,double *gain,double *endbrk,double **nextbrk,double *nextgain,
+         double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz);
 static int  calc_samps_to_process
-	(int *startsamp,int *samps_left_to_process,dataptr dz);
+        (int *startsamp,int *samps_left_to_process,dataptr dz);
 static int  simple_envel_processing
-	(int *samps_left_to_process,double starttime,double *endbrk,double **nextbrk,double *nextgain,
-	 int *sampno,double *gain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz);
+        (int *samps_left_to_process,double starttime,double *endbrk,double **nextbrk,double *nextgain,
+         int *sampno,double *gain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz);
 static int  buf_staggered_envel_processing
-	(int *samps_left_to_process,int samp_offset,int write_offset,double starttime,double *endbrk,double **nextbrk,
-	 double *nextgain,int *sampno,double *gain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz);
+        (int *samps_left_to_process,int samp_offset,int write_offset,double starttime,double *endbrk,double **nextbrk,
+         double *nextgain,int *sampno,double *gain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz);
 static int  read_partbuf_samps
-	(int samps_to_read,int *samps_left_to_process, dataptr dz);
+        (int samps_to_read,int *samps_left_to_process, dataptr dz);
 static int  do_envelope
-	(int samp_cnt,double starttime,double *endbrk,double **nextbrk,double *nextgain,
-	 int *sampno,double *gain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz);
+        (int samp_cnt,double starttime,double *endbrk,double **nextbrk,double *nextgain,
+         int *sampno,double *gain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz);
 static int  read_ssamps(int samps_to_read,int *samps_left_to_process,dataptr dz);
 static int  do_simple_read(int *samps_left_to_process,int bufsize,dataptr dz);
 static int  do_offset_read(int *samps_left_to_process,int samp_offset,int bufsize,dataptr dz);
@@ -78,117 +78,117 @@ static int  skip_into_file(int startsamp,int extended_buf_sampsize,int *write_of
 
 int apply_brkpnt_envelope(dataptr dz)
 {
-	int exit_status;
-	int startsamp, samps_left_to_process;
-	int is_simple;
-	int write_offset, samp_offset, sampno, nextbrk_sampno;
-	double starttime, gain, nextgain, gain_step, gain_incr;
-	double *endbrk, *nextbrk; 
-	if((exit_status = calc_samps_to_process(&startsamp,&samps_left_to_process,dz))<0)
-		return(exit_status);
-	if((exit_status = init_outbuf(startsamp,&is_simple,&write_offset,&samp_offset,&samps_left_to_process,dz))<0)
-		return(exit_status);
-	if((exit_status = init_brkpnts
-	(&sampno,&starttime,&gain,&endbrk,&nextbrk,&nextgain,&gain_step,&gain_incr,&nextbrk_sampno,dz))<0)
-		return(exit_status);
-	exit_status = FINISHED;
-	if(is_simple)
-		exit_status = simple_envel_processing
-		(&samps_left_to_process,starttime,endbrk,&nextbrk,&nextgain,
-		&sampno,&gain,&gain_step,&gain_incr,&nextbrk_sampno,dz);
-	else
-		exit_status = buf_staggered_envel_processing
-		(&samps_left_to_process,samp_offset,write_offset,starttime,endbrk,&nextbrk,
-		&nextgain,&sampno,&gain,&gain_step,&gain_incr,&nextbrk_sampno,dz);
-
-	return(exit_status);
+        int exit_status;
+        int startsamp, samps_left_to_process;
+        int is_simple;
+        int write_offset, samp_offset, sampno, nextbrk_sampno;
+        double starttime, gain, nextgain, gain_step, gain_incr;
+        double *endbrk, *nextbrk;
+        if((exit_status = calc_samps_to_process(&startsamp,&samps_left_to_process,dz))<0)
+                return(exit_status);
+        if((exit_status = init_outbuf(startsamp,&is_simple,&write_offset,&samp_offset,&samps_left_to_process,dz))<0)
+                return(exit_status);
+        if((exit_status = init_brkpnts
+        (&sampno,&starttime,&gain,&endbrk,&nextbrk,&nextgain,&gain_step,&gain_incr,&nextbrk_sampno,dz))<0)
+                return(exit_status);
+        exit_status = FINISHED;
+        if(is_simple)
+                exit_status = simple_envel_processing
+                (&samps_left_to_process,starttime,endbrk,&nextbrk,&nextgain,
+                &sampno,&gain,&gain_step,&gain_incr,&nextbrk_sampno,dz);
+        else
+                exit_status = buf_staggered_envel_processing
+                (&samps_left_to_process,samp_offset,write_offset,starttime,endbrk,&nextbrk,
+                &nextgain,&sampno,&gain,&gain_step,&gain_incr,&nextbrk_sampno,dz);
+
+        return(exit_status);
 }
 
 /**************************** INIT_OUTBUF *******************************
  *
- *	|-------------extended-buffer-size-----------|
- *       X    
- *	     |-------------buffer-size---------------|
- * 	     		    INBUF		    
- *	|----|----|----|----|----|----|----|----|----|
- *	|    |					     				 |
- *	   | |					     			   | |
- 	  write					     			(=write
- 	  offset				     			 offset)
- *	   | |					     			   | |
- *	|  |					   				   |
- *  samp					   				   |
- * offset					   				   |
- *	|  |					   				   |
- *	   |----|----|----|----|----|----|----|----| 
- *			    OUTBUF
- *	   |-------------buffer-size---------------|
+ *      |-------------extended-buffer-size-----------|
+ *       X
+ *           |-------------buffer-size---------------|
+ *                          INBUF
+ *      |----|----|----|----|----|----|----|----|----|
+ *      |    |                                                                   |
+ *         | |                                                             | |
+          write                                                         (=write
+          offset                                                         offset)
+ *         | |                                                             | |
+ *      |  |                                                                       |
+ *  samp                                                                           |
+ * offset                                                                          |
+ *      |  |                                                                       |
+ *         |----|----|----|----|----|----|----|----|
+ *                          OUTBUF
+ *         |-------------buffer-size---------------|
  *
  * IF the brkpoint table starts at 0,
  * we can use THE SAME buffer for input and output.
- * 		OTHERWISE.........
- * (8)	First extimate of the number of samples in the input file which
- *		we can skip, i.e. the number of complete extended-buffer-fulls
- *		(see diagram) we can read before reaching first significant sample.
- * (9)	After counting out these, we can assess how many COMPLETED sectors
- *		are still to be read and ignored.
- * (10)	We can now add the number of samples in these sectors to our first
- *		estimate of samples to be skipped.
- * (11)	The extent to which the OUTPUT buffer will be offset from the
- *		INPUT buffer, (samp_offset) is given by the remaining part-sector of samps.
- *		(see diagram).
- * (12)	After the initial write, we will WRITE to a block 1 SECTOR later,
- *		(X in diagram), so the WRITE-OFFSET is as shown.
- * (13)	We now SEEK an exact number of sectors in the input file (thus
- *		discarding these samps from our processing).
- * (14)	If the samp_offset is ZERO, then we input and output buffers are
- *		the same as at 4,5,6.
- * (16)	Otherwise, fill the EXTENDED buffer (see diagram).
- * (17)	Move the address of future read-ins (inbuf) 1 sector forward (to X in diagram).
- * (18)	Set the address of the read-out buffer at the correct offset.
- * (19)	Set the flag for the more difficult case.
- * (20)	Decrement number of samps left to process.
- *		If this takes samps_left below zero, this means we have
- *		read a whole sector in place of a part-sector, so we must
- *		readjust the value of samps_read!!
+ *              OTHERWISE.........
+ * (8)  First extimate of the number of samples in the input file which
+ *              we can skip, i.e. the number of complete extended-buffer-fulls
+ *              (see diagram) we can read before reaching first significant sample.
+ * (9)  After counting out these, we can assess how many COMPLETED sectors
+ *              are still to be read and ignored.
+ * (10) We can now add the number of samples in these sectors to our first
+ *              estimate of samples to be skipped.
+ * (11) The extent to which the OUTPUT buffer will be offset from the
+ *              INPUT buffer, (samp_offset) is given by the remaining part-sector of samps.
+ *              (see diagram).
+ * (12) After the initial write, we will WRITE to a block 1 SECTOR later,
+ *              (X in diagram), so the WRITE-OFFSET is as shown.
+ * (13) We now SEEK an exact number of sectors in the input file (thus
+ *              discarding these samps from our processing).
+ * (14) If the samp_offset is ZERO, then we input and output buffers are
+ *              the same as at 4,5,6.
+ * (16) Otherwise, fill the EXTENDED buffer (see diagram).
+ * (17) Move the address of future read-ins (inbuf) 1 sector forward (to X in diagram).
+ * (18) Set the address of the read-out buffer at the correct offset.
+ * (19) Set the flag for the more difficult case.
+ * (20) Decrement number of samps left to process.
+ *              If this takes samps_left below zero, this means we have
+ *              read a whole sector in place of a part-sector, so we must
+ *              readjust the value of samps_read!!
  */
 
 int init_outbuf(int startsamp,int *is_simple,int *write_offset,
-				int *samp_offset,int *samps_left_to_process,dataptr dz)
+                                int *samp_offset,int *samps_left_to_process,dataptr dz)
 {
-	int exit_status;
-	int extended_buf_sampsize = dz->buflen;
-	int shsecsize = F_SECSIZE;
-	/*RWD: set the  vars*/
-	*samp_offset = *write_offset = 0;
-
-	if(startsamp==0) {											/* If we start at beginning */
-		dz->sampbuf[OUTBUF_START] = dz->sampbuf[INBUF_START];	/* inbuf and outbuf coincide */
-		if((exit_status = do_simple_read(samps_left_to_process,dz->buflen,dz))<0)
-			return(exit_status);								/* setup simple buffering option */
-		*is_simple = TRUE;											
-	} else {													
- 		if((exit_status = skip_into_file(startsamp,extended_buf_sampsize,write_offset,samp_offset,dz))<0)
-			return(exit_status);	/* calculate sectors to skip into file, and any part-sector offset, and skip */
-		if(*samp_offset==0) {									 /* If no offset */
-			dz->sampbuf[OUTBUF_START] = dz->sampbuf[INBUF_START];/* inbuf and outbuf coincide */				
-			if((exit_status = do_simple_read(samps_left_to_process,dz->buflen,dz))<0)
-				return(exit_status);
-			*is_simple = TRUE;			
-		} else {												 /*  Otherwise there is an offset */
-			if((exit_status = do_offset_read(samps_left_to_process,*samp_offset,
-				     /*dz->bigbufsize + SECSIZE*/dz->buflen,dz))<0)
-				return(exit_status);							 /* read initial LARGE buffer */							
-			dz->sampbuf[OUTBUF_START] = dz->sampbuf[INBUF_START] + *samp_offset;
-																 /* Set outbuf (write) position */
-			dz->sampbuf[OUTBUF_END]  = dz->sampbuf[OUTBUF_START] + dz->buflen;	
-																 /* Set endpointer of outbuf */
-			dz->sampbuf[INBUF_START] += shsecsize;				 /* Set next read position for inbuf */
-																 /* to permit correct wrap_around of part_sector */
-			*is_simple = FALSE;									 /* Flag staggerd-buffers option */
-		}
-	}
-	return(FINISHED);
+        int exit_status;
+        int extended_buf_sampsize = dz->buflen;
+        int shsecsize = F_SECSIZE;
+        /*RWD: set the  vars*/
+        *samp_offset = *write_offset = 0;
+
+        if(startsamp==0) {                                                                                      /* If we start at beginning */
+                dz->sampbuf[OUTBUF_START] = dz->sampbuf[INBUF_START];   /* inbuf and outbuf coincide */
+                if((exit_status = do_simple_read(samps_left_to_process,dz->buflen,dz))<0)
+                        return(exit_status);                                                            /* setup simple buffering option */
+                *is_simple = TRUE;
+        } else {
+                if((exit_status = skip_into_file(startsamp,extended_buf_sampsize,write_offset,samp_offset,dz))<0)
+                        return(exit_status);    /* calculate sectors to skip into file, and any part-sector offset, and skip */
+                if(*samp_offset==0) {                                                                    /* If no offset */
+                        dz->sampbuf[OUTBUF_START] = dz->sampbuf[INBUF_START];/* inbuf and outbuf coincide */
+                        if((exit_status = do_simple_read(samps_left_to_process,dz->buflen,dz))<0)
+                                return(exit_status);
+                        *is_simple = TRUE;
+                } else {                                                                                                 /*  Otherwise there is an offset */
+                        if((exit_status = do_offset_read(samps_left_to_process,*samp_offset,
+                                     /*dz->bigbufsize + SECSIZE*/dz->buflen,dz))<0)
+                                return(exit_status);                                                     /* read initial LARGE buffer */
+                        dz->sampbuf[OUTBUF_START] = dz->sampbuf[INBUF_START] + *samp_offset;
+                                                                                                                                 /* Set outbuf (write) position */
+                        dz->sampbuf[OUTBUF_END]  = dz->sampbuf[OUTBUF_START] + dz->buflen;
+                                                                                                                                 /* Set endpointer of outbuf */
+                        dz->sampbuf[INBUF_START] += shsecsize;                           /* Set next read position for inbuf */
+                                                                                                                                 /* to permit correct wrap_around of part_sector */
+                        *is_simple = FALSE;                                                                      /* Flag staggerd-buffers option */
+                }
+        }
+        return(FINISHED);
 }
 
 /**************************** INIT_BRKPNTS *******************************
@@ -199,24 +199,24 @@ int init_outbuf(int startsamp,int *is_simple,int *write_offset,
 int init_brkpnts(int *sampno,double *starttime,double *gain,double **endbrk,double **nextbrk,
 double *nextgain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz)
 {
-	double nexttime, time_from_start;
-	int paramno = dz->extrabrkno;
-	*endbrk = dz->brk[paramno] + ((dz->brksize[paramno]-1) * 2);
-	*sampno    = 0;
-	*starttime = dz->brk[paramno][0];
-	*gain      = dz->brk[paramno][1];
-	*nextbrk   = dz->brk[paramno] + 2;
-	nexttime   = **nextbrk;
-	*nextgain  = *((*nextbrk) + 1);
-	*gain_step = *nextgain - *gain;
-	time_from_start = nexttime - *starttime;
+        double nexttime, time_from_start;
+        int paramno = dz->extrabrkno;
+        *endbrk = dz->brk[paramno] + ((dz->brksize[paramno]-1) * 2);
+        *sampno    = 0;
+        *starttime = dz->brk[paramno][0];
+        *gain      = dz->brk[paramno][1];
+        *nextbrk   = dz->brk[paramno] + 2;
+        nexttime   = **nextbrk;
+        *nextgain  = *((*nextbrk) + 1);
+        *gain_step = *nextgain - *gain;
+        time_from_start = nexttime - *starttime;
 /* OCT 1996 */
-	if((*nextbrk_sampno  = (int)round(time_from_start * (double)dz->infile->srate))<0) {
-		sprintf(errstr,"Impossible brkpoint time: (%.2lf secs)\n",time_from_start);
-		return(PROGRAM_ERROR);
-	}
-	*gain_incr = (*gain_step)/(double)(*nextbrk_sampno);
-	return(FINISHED);
+        if((*nextbrk_sampno  = (int)round(time_from_start * (double)dz->infile->srate))<0) {
+                sprintf(errstr,"Impossible brkpoint time: (%.2lf secs)\n",time_from_start);
+                return(PROGRAM_ERROR);
+        }
+        *gain_incr = (*gain_step)/(double)(*nextbrk_sampno);
+        return(FINISHED);
 }
 
 /**************************** ADVANCE_BRKPNTS *****************************
@@ -227,305 +227,305 @@ double *nextgain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr
 int advance_brkpnts(double starttime,double *gain,double *endbrk,double **nextbrk,
 double *nextgain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz)
 {
-	double  nexttime, time_from_start;
-	int   lastbrk_sampno, sampdist;
-	if(*nextbrk!=endbrk) {
-		*nextbrk   += 2;
-		*gain      = *nextgain;
-		nexttime   = **nextbrk;
-		*nextgain  = *((*nextbrk) + 1);
-		*gain_step = *nextgain - *gain;
-		lastbrk_sampno = *nextbrk_sampno;
-		time_from_start = nexttime - starttime;
+        double  nexttime, time_from_start;
+        int   lastbrk_sampno, sampdist;
+        if(*nextbrk!=endbrk) {
+                *nextbrk   += 2;
+                *gain      = *nextgain;
+                nexttime   = **nextbrk;
+                *nextgain  = *((*nextbrk) + 1);
+                *gain_step = *nextgain - *gain;
+                lastbrk_sampno = *nextbrk_sampno;
+                time_from_start = nexttime - starttime;
 /* OCT 1996 */
-		if((*nextbrk_sampno  = (int)round(time_from_start * dz->infile->srate))<0) {
-			sprintf(errstr,"Impossible brkpoint time: (%.2lf secs)\n",time_from_start);
-			return(PROGRAM_ERROR);
-		}
-		sampdist   = *nextbrk_sampno - lastbrk_sampno;
-		*gain_incr = (*gain_step)/(double)sampdist;
-	}
-	return(FINISHED);
+                if((*nextbrk_sampno  = (int)round(time_from_start * dz->infile->srate))<0) {
+                        sprintf(errstr,"Impossible brkpoint time: (%.2lf secs)\n",time_from_start);
+                        return(PROGRAM_ERROR);
+                }
+                sampdist   = *nextbrk_sampno - lastbrk_sampno;
+                *gain_incr = (*gain_step)/(double)sampdist;
+        }
+        return(FINISHED);
 }
 
 /************************ CALC_SAMPS_TO_PROCESS ****************************
  *
- * (1)	Find time of final breakpoint value.
- * (a)	Find the sample position of the brkpoint-table's starting time.
- * (b)	Find its samp position.
- * (2)	Find this time in samples (here samples mean short samples).
+ * (1)  Find time of final breakpoint value.
+ * (a)  Find the sample position of the brkpoint-table's starting time.
+ * (b)  Find its samp position.
+ * (2)  Find this time in samples (here samples mean short samples).
  * (3)  The last samp to be processed is either the samp corresponding
- *	to the last sample-time in brkpnt file OR the end of the input file.
- * (4)	Number of samps-to-process = endsamp-time - startsamp-time.
- * (5)	This also gives the required size of output file.
+ *      to the last sample-time in brkpnt file OR the end of the input file.
+ * (4)  Number of samps-to-process = endsamp-time - startsamp-time.
+ * (5)  This also gives the required size of output file.
  */
 
 int calc_samps_to_process(int *startsamp,int *samps_left_to_process,dataptr dz)
 {
-	int paramno = dz->extrabrkno;
-	int endbrk_samptime, endsamp, start_samp;
-	double lastbrktime, firstbrktime;
-	double infiledur = (double)(dz->insams[0]/dz->infile->channels)/(double)dz->infile->srate;
-
-	lastbrktime = *(dz->brk[paramno] + ((dz->brksize[paramno] - 1) * 2));
-	if(flteq(lastbrktime,infiledur)) {
-		endsamp = dz->insams[0];
-	} else {
-		endbrk_samptime  = round(lastbrktime * (double)dz->infile->srate);
-		endbrk_samptime *= dz->infile->channels;
-		endsamp          = min((int)endbrk_samptime,dz->insams[0]);
-	}
-	firstbrktime = *(dz->brk[paramno]);
-	*startsamp   = round(firstbrktime * (double)dz->infile->srate);
-	*startsamp  *= dz->infile->channels;
-	if((start_samp = *startsamp ) >= dz->insams[0]) {
-		sprintf(errstr,"envelope begins after end of file: can't proceed.\n");
-		return(DATA_ERROR);
-	}	
-	*samps_left_to_process = endsamp - start_samp;
-	return(FINISHED);
+        int paramno = dz->extrabrkno;
+        int endbrk_samptime, endsamp, start_samp;
+        double lastbrktime, firstbrktime;
+        double infiledur = (double)(dz->insams[0]/dz->infile->channels)/(double)dz->infile->srate;
+
+        lastbrktime = *(dz->brk[paramno] + ((dz->brksize[paramno] - 1) * 2));
+        if(flteq(lastbrktime,infiledur)) {
+                endsamp = dz->insams[0];
+        } else {
+                endbrk_samptime  = round(lastbrktime * (double)dz->infile->srate);
+                endbrk_samptime *= dz->infile->channels;
+                endsamp          = min((int)endbrk_samptime,dz->insams[0]);
+        }
+        firstbrktime = *(dz->brk[paramno]);
+        *startsamp   = round(firstbrktime * (double)dz->infile->srate);
+        *startsamp  *= dz->infile->channels;
+        if((start_samp = *startsamp ) >= dz->insams[0]) {
+                sprintf(errstr,"envelope begins after end of file: can't proceed.\n");
+                return(DATA_ERROR);
+        }
+        *samps_left_to_process = endsamp - start_samp;
+        return(FINISHED);
 }
 
 /*********************** SIMPLE_ENVEL_PROCESSING ********************************
  *
  * Simple case, input and output buffers coincide.
  *
- * (1)	If we read beyond number of samps we anticipated, this means
- * 	we have read to the end of a sector, where we need a part-sector,
- * 	so we must adjust value of actual samps read!!!
+ * (1)  If we read beyond number of samps we anticipated, this means
+ *      we have read to the end of a sector, where we need a part-sector,
+ *      so we must adjust value of actual samps read!!!
  */
 
 int simple_envel_processing
 (int *samps_left_to_process,double starttime,double *endbrk,double **nextbrk,double *nextgain,
 int *sampno,double *gain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz)
 {
-	int exit_status;
-	while(*samps_left_to_process > 0) {
-		if((exit_status = do_envelope
-		(dz->buflen,starttime,endbrk,nextbrk,nextgain,sampno,gain,gain_step,gain_incr,nextbrk_sampno,dz))<0)
-			return(exit_status);
-		if((exit_status = write_samps(dz->sampbuf[OUTBUF_START],dz->buflen,dz))<0)
-			return(exit_status);
-		if((exit_status = do_simple_read(samps_left_to_process,dz->buflen,dz))<0)
-			return(exit_status);
-	}
-	if((exit_status = do_envelope
-	(dz->ssampsread,starttime,endbrk,nextbrk,nextgain,sampno,gain,gain_step,gain_incr,nextbrk_sampno,dz))<0)
-		return(exit_status);
-	if(dz->ssampsread > 0)
-		return write_samps(dz->sampbuf[OUTBUF_START],dz->ssampsread,dz);
-	return(FINISHED);
+        int exit_status;
+        while(*samps_left_to_process > 0) {
+                if((exit_status = do_envelope
+                (dz->buflen,starttime,endbrk,nextbrk,nextgain,sampno,gain,gain_step,gain_incr,nextbrk_sampno,dz))<0)
+                        return(exit_status);
+                if((exit_status = write_samps(dz->sampbuf[OUTBUF_START],dz->buflen,dz))<0)
+                        return(exit_status);
+                if((exit_status = do_simple_read(samps_left_to_process,dz->buflen,dz))<0)
+                        return(exit_status);
+        }
+        if((exit_status = do_envelope
+        (dz->ssampsread,starttime,endbrk,nextbrk,nextgain,sampno,gain,gain_step,gain_incr,nextbrk_sampno,dz))<0)
+                return(exit_status);
+        if(dz->ssampsread > 0)
+                return write_samps(dz->sampbuf[OUTBUF_START],dz->ssampsread,dz);
+        return(FINISHED);
 }
 
 /*********************** BUF_STAGGERED_ENVEL_PROCESSING ********************************
  *
  * Non-simple case, input  and output buffers do not coincide.
  *
- *	     ___________tail is copied thus_________
- *	    |					    				|
- *	    |					    				|
- * 	    v		    INBUF		    			^
- *	|----|----|----|----|----|----|----|----|----|
- *	     |					     				 |
- *	   | |					   				   | |
- *     write_offset				   				tail
- *	   | |					   				   | |
- *	   |					   				   |
- *	   |----|----|----|----|----|----|----|----| 
- *			    OUTBUF
+ *           ___________tail is copied thus_________
+ *          |                                                                   |
+ *          |                                                                   |
+ *          v               INBUF                                       ^
+ *      |----|----|----|----|----|----|----|----|----|
+ *           |                                                                   |
+ *         | |                                                                     | |
+ *     write_offset                                                             tail
+ *         | |                                                                     | |
+ *         |                                                                       |
+ *         |----|----|----|----|----|----|----|----|
+ *                          OUTBUF
  *
- * (1)	If we are inside the loop, there are still samps left to read
- *		from input file, so this input buffer must be FULL.
- *		This means we can WRITE a full output-buffer.
- * (2)	Copy the tail-portion of the input buffer (that falls outside the
- *		end of the output buffer (see diagram)), to the start of the output
-		buffer (see diagram).
- * (3)	Read samps to inbuf location, decrementing no of samps left to read.
- * (4)	If first time, (No buffers written: samps were read into VERY START of buf) 
- *		no. of samps to write equals samps_read 
- *		MINUS those not needed, in samp_offset area.....
- * (5)	After first time, (Buffers laready writ: samps now read into the displaced inbuf)
- *		number of samps to write equals those read
- *		PLUS those already in start of outbuffer, haing been copied back into the write_offset segment.
- * (6)	Do envelope on the incomplete (or exactly full) buffer.
- * (7)	Write this.
+ * (1)  If we are inside the loop, there are still samps left to read
+ *              from input file, so this input buffer must be FULL.
+ *              This means we can WRITE a full output-buffer.
+ * (2)  Copy the tail-portion of the input buffer (that falls outside the
+ *              end of the output buffer (see diagram)), to the start of the output
+                buffer (see diagram).
+ * (3)  Read samps to inbuf location, decrementing no of samps left to read.
+ * (4)  If first time, (No buffers written: samps were read into VERY START of buf)
+ *              no. of samps to write equals samps_read
+ *              MINUS those not needed, in samp_offset area.....
+ * (5)  After first time, (Buffers laready writ: samps now read into the displaced inbuf)
+ *              number of samps to write equals those read
+ *              PLUS those already in start of outbuffer, haing been copied back into the write_offset segment.
+ * (6)  Do envelope on the incomplete (or exactly full) buffer.
+ * (7)  Write this.
  */
 
 int buf_staggered_envel_processing
 (int *samps_left_to_process,int samp_offset,int write_offset,double starttime,double *endbrk,double **nextbrk,
 double *nextgain,int *sampno,double *gain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz)
 {
-	int exit_status;
-	int samps_to_write_here;
-	int  firstime = TRUE;
-	while(*samps_left_to_process > 0) {
-		firstime = FALSE;
-		if((exit_status = do_envelope
-		(dz->buflen,starttime,endbrk,nextbrk,nextgain,sampno,gain,gain_step,gain_incr,nextbrk_sampno,dz))<0)
-			return(exit_status);
-
-		if((exit_status = write_samps(dz->sampbuf[OUTBUF_START],dz->buflen,dz))<0)
-			return(exit_status);										/* 1 */
-		memmove((char *)dz->sampbuf[OUTBUF_START],(char *)dz->sampbuf[OUTBUF_END],write_offset * sizeof(float));
-		if((exit_status = do_simple_read(samps_left_to_process,dz->buflen,dz))<0)		
-			return(exit_status);										/* 3 */
-	}
-	if(firstime)
-		samps_to_write_here = dz->ssampsread - samp_offset;				/* 4 */
-	else 
-		samps_to_write_here = dz->ssampsread + write_offset;			/* 5 */
-	if((exit_status = do_envelope										/* 6 */
-	(samps_to_write_here,starttime,endbrk,nextbrk,nextgain,sampno,gain,gain_step,gain_incr,nextbrk_sampno,dz))<0)
-		return(exit_status);
-																	 	/* 7 */
-	if(samps_to_write_here > 0)
-		return write_samps(dz->sampbuf[OUTBUF_START],samps_to_write_here,dz);
-	return(FINISHED);
+        int exit_status;
+        int samps_to_write_here;
+        int  firstime = TRUE;
+        while(*samps_left_to_process > 0) {
+                firstime = FALSE;
+                if((exit_status = do_envelope
+                (dz->buflen,starttime,endbrk,nextbrk,nextgain,sampno,gain,gain_step,gain_incr,nextbrk_sampno,dz))<0)
+                        return(exit_status);
+
+                if((exit_status = write_samps(dz->sampbuf[OUTBUF_START],dz->buflen,dz))<0)
+                        return(exit_status);                                                                            /* 1 */
+                memmove((char *)dz->sampbuf[OUTBUF_START],(char *)dz->sampbuf[OUTBUF_END],write_offset * sizeof(float));
+                if((exit_status = do_simple_read(samps_left_to_process,dz->buflen,dz))<0)
+                        return(exit_status);                                                                            /* 3 */
+        }
+        if(firstime)
+                samps_to_write_here = dz->ssampsread - samp_offset;                             /* 4 */
+        else
+                samps_to_write_here = dz->ssampsread + write_offset;                    /* 5 */
+        if((exit_status = do_envelope                                                                           /* 6 */
+        (samps_to_write_here,starttime,endbrk,nextbrk,nextgain,sampno,gain,gain_step,gain_incr,nextbrk_sampno,dz))<0)
+                return(exit_status);
+                                                                                                                                                /* 7 */
+        if(samps_to_write_here > 0)
+                return write_samps(dz->sampbuf[OUTBUF_START],samps_to_write_here,dz);
+        return(FINISHED);
 }
 
 /**************************** READ_PARTBUF_SAMPS *****************************/
 
 int read_partbuf_samps(int samps_to_read,int *samps_left_to_process, dataptr dz)
 {
-	if((dz->ssampsread = fgetfbufEx(dz->sampbuf[INBUF_START], samps_to_read,dz->ifd[0],0)) < 0)  {
-		sprintf(errstr,"Can't read samples from input soundfile: read_partbuf_samps()\n");
-		return(SYSTEM_ERROR);
-	}
-	if(dz->ssampsread < samps_to_read) {
-		sprintf(errstr,"Error in buffering arithmetic: read_partbuf_samps()\n");
-		return(PROGRAM_ERROR);
-	}
-	*samps_left_to_process -= dz->ssampsread;
-	return(FINISHED);
+        if((dz->ssampsread = fgetfbufEx(dz->sampbuf[INBUF_START], samps_to_read,dz->ifd[0],0)) < 0)  {
+                sprintf(errstr,"Can't read samples from input soundfile: read_partbuf_samps()\n");
+                return(SYSTEM_ERROR);
+        }
+        if(dz->ssampsread < samps_to_read) {
+                sprintf(errstr,"Error in buffering arithmetic: read_partbuf_samps()\n");
+                return(PROGRAM_ERROR);
+        }
+        *samps_left_to_process -= dz->ssampsread;
+        return(FINISHED);
 }
-							  
+
 /************************* DO_ENVELOPE ********************************
  *
- * (1)	endsampno (absolute numbering) is the final sample to be treated in this call.
+ * (1)  endsampno (absolute numbering) is the final sample to be treated in this call.
  *
- *	  While ever the quit-flag is not set...
- * (2)	if the sample number of the next break-pnt falls before or at the end
- *		of this function call...
- *		Set the 'change' flag, which will cause envelope breakpoints to be
- *		advanced.
- * (3)	set end of the inner-loop pass to this next brkpnt.
- * (4)	If the brkpnt falls exactly at end of pass, set the 'quit' flag.
- *		Otherwise quit remains FALSE, and the outer loop will be recalled (after
- *		breakpoints have been advanced).
- * (5)	Otherwise, the next breakpnt falls beyond the end of this function call.
- *		So don't advance the breakpoints (change = FALSE), sample at end of inner
- *		loop (this_endsamp) is the sample at end of this call-to-function
- *		(endsampno), AND  set flag to quit at end of inner loop.
- * (6)	Counter for inner loop is this-endsamp minus current position (sampno).
- * (7)	Inner loop, get gain for each sample, and increment samples accordingly.
- * (8)	Increment the absolute count of processed samples (sampno).
- * (9)	If change flag is set, reset gain and advance breakpoints.
- * (10)	Retain the enveloping gain current at end of buffer.
+ *        While ever the quit-flag is not set...
+ * (2)  if the sample number of the next break-pnt falls before or at the end
+ *              of this function call...
+ *              Set the 'change' flag, which will cause envelope breakpoints to be
+ *              advanced.
+ * (3)  set end of the inner-loop pass to this next brkpnt.
+ * (4)  If the brkpnt falls exactly at end of pass, set the 'quit' flag.
+ *              Otherwise quit remains FALSE, and the outer loop will be recalled (after
+ *              breakpoints have been advanced).
+ * (5)  Otherwise, the next breakpnt falls beyond the end of this function call.
+ *              So don't advance the breakpoints (change = FALSE), sample at end of inner
+ *              loop (this_endsamp) is the sample at end of this call-to-function
+ *              (endsampno), AND  set flag to quit at end of inner loop.
+ * (6)  Counter for inner loop is this-endsamp minus current position (sampno).
+ * (7)  Inner loop, get gain for each sample, and increment samples accordingly.
+ * (8)  Increment the absolute count of processed samples (sampno).
+ * (9)  If change flag is set, reset gain and advance breakpoints.
+ * (10) Retain the enveloping gain current at end of buffer.
  */
 
 int do_envelope
 (int samp_cnt,double starttime,double *endbrk,double **nextbrk,double *nextgain,
 int *sampno,double *gain,double *gain_step,double *gain_incr,int *nextbrk_sampno,dataptr dz)
 {
-	int    exit_status;
-	int   n, m, sampcnt;
-	int   endsampno, this_endsamp, this_sampcnt;
-	float  *obuf = dz->sampbuf[OUTBUF_START];
-	float  *obufend = obuf + dz->buflen;
-	int    quit = FALSE, change;
-	double   val;
-	double this_gain      = *gain;
-	double this_gain_incr = *gain_incr;
-	double this_gain_step = *gain_step;
-	sampcnt = samp_cnt / dz->infile->channels;	/* 'stereo'-samples to process */
-	endsampno = *sampno + sampcnt;				/* 1 */
-	if(sampcnt * dz->infile->channels > dz->buflen) {
-		sprintf(errstr,"Buffering anomaly: do_envelope()\n");
-		return(PROGRAM_ERROR);
-	}
-	while(quit==FALSE) {						
-		if(*nextbrk_sampno <= endsampno) {		/* 2 */
-			change = TRUE;
-			this_endsamp = *nextbrk_sampno;		/* 3 */
-			if(*nextbrk_sampno==endsampno)		
-				quit = TRUE;					/* 4 */
-		} else {
-			change = FALSE;						/* 5 */
-			this_endsamp = endsampno;
-			quit = TRUE;
-		}
-		this_sampcnt = this_endsamp - *sampno;	/* 6 */
-		if(obuf + (this_sampcnt * dz->infile->channels) > obufend) {
-			sprintf(errstr,"array overrun: do_envelope()\n");
-			return(PROGRAM_ERROR);
-		}
-		if(flteq(this_gain,1.0) && flteq(this_gain_step,0.0))
-			obuf += this_sampcnt * dz->infile->channels;				/* no modification of sound */
-		else {
-			for(n=0;n<this_sampcnt;n++) {		/* 7 */
-				this_gain += this_gain_incr;
-				for(m=0;m<dz->infile->channels;m++) {				
-					val = /*round*/((double)(*obuf) * this_gain);
-					*obuf = (float)val;
-					obuf++;
-				}
-			}
-		}
-		*sampno += this_sampcnt;				/* 8 */
-		if(change) {							/* 9 */
-			if((exit_status = advance_brkpnts
-			(starttime,gain,endbrk,nextbrk,nextgain,gain_step,gain_incr,nextbrk_sampno,dz))<0)
-				return(exit_status);
-			this_gain = *gain;
-			this_gain_incr = *gain_incr;
-			this_gain_step = *gain_step;
-		}
-	}
-	*gain = this_gain;							/* 10 */
-	return(FINISHED);
+        int    exit_status;
+        int   n, m, sampcnt;
+        int   endsampno, this_endsamp, this_sampcnt;
+        float  *obuf = dz->sampbuf[OUTBUF_START];
+        float  *obufend = obuf + dz->buflen;
+        int    quit = FALSE, change;
+        double   val;
+        double this_gain      = *gain;
+        double this_gain_incr = *gain_incr;
+        double this_gain_step = *gain_step;
+        sampcnt = samp_cnt / dz->infile->channels;      /* 'stereo'-samples to process */
+        endsampno = *sampno + sampcnt;                          /* 1 */
+        if(sampcnt * dz->infile->channels > dz->buflen) {
+                sprintf(errstr,"Buffering anomaly: do_envelope()\n");
+                return(PROGRAM_ERROR);
+        }
+        while(quit==FALSE) {
+                if(*nextbrk_sampno <= endsampno) {              /* 2 */
+                        change = TRUE;
+                        this_endsamp = *nextbrk_sampno;         /* 3 */
+                        if(*nextbrk_sampno==endsampno)
+                                quit = TRUE;                                    /* 4 */
+                } else {
+                        change = FALSE;                                         /* 5 */
+                        this_endsamp = endsampno;
+                        quit = TRUE;
+                }
+                this_sampcnt = this_endsamp - *sampno;  /* 6 */
+                if(obuf + (this_sampcnt * dz->infile->channels) > obufend) {
+                        sprintf(errstr,"array overrun: do_envelope()\n");
+                        return(PROGRAM_ERROR);
+                }
+                if(flteq(this_gain,1.0) && flteq(this_gain_step,0.0))
+                        obuf += this_sampcnt * dz->infile->channels;                            /* no modification of sound */
+                else {
+                        for(n=0;n<this_sampcnt;n++) {           /* 7 */
+                                this_gain += this_gain_incr;
+                                for(m=0;m<dz->infile->channels;m++) {
+                                        val = /*round*/((double)(*obuf) * this_gain);
+                                        *obuf = (float)val;
+                                        obuf++;
+                                }
+                        }
+                }
+                *sampno += this_sampcnt;                                /* 8 */
+                if(change) {                                                    /* 9 */
+                        if((exit_status = advance_brkpnts
+                        (starttime,gain,endbrk,nextbrk,nextgain,gain_step,gain_incr,nextbrk_sampno,dz))<0)
+                                return(exit_status);
+                        this_gain = *gain;
+                        this_gain_incr = *gain_incr;
+                        this_gain_step = *gain_step;
+                }
+        }
+        *gain = this_gain;                                                      /* 10 */
+        return(FINISHED);
 }
 
 /************************* READ_SSAMPS ******************************/
 
 int read_ssamps(int samps_to_read,int *samps_left_to_process,dataptr dz)
 {
-	if((dz->ssampsread = fgetfbufEx(dz->sampbuf[INBUF_START], samps_to_read,dz->ifd[0],0)) < 0) {
-		sprintf(errstr,"Can't read samples from input soundfile: read_ssamps()\n");
-		return(SYSTEM_ERROR);
-	}
-	if(dz->ssampsread!=samps_to_read) {
-		sprintf(errstr,"Error in buffering arithmetic: read_ssamps()\n");
-		return(PROGRAM_ERROR);
-	}
-	*samps_left_to_process -= dz->ssampsread;
-	return(FINISHED);
+        if((dz->ssampsread = fgetfbufEx(dz->sampbuf[INBUF_START], samps_to_read,dz->ifd[0],0)) < 0) {
+                sprintf(errstr,"Can't read samples from input soundfile: read_ssamps()\n");
+                return(SYSTEM_ERROR);
+        }
+        if(dz->ssampsread!=samps_to_read) {
+                sprintf(errstr,"Error in buffering arithmetic: read_ssamps()\n");
+                return(PROGRAM_ERROR);
+        }
+        *samps_left_to_process -= dz->ssampsread;
+        return(FINISHED);
 }
 
 /******************************** DO_SIMPLE_READ **********************************/
 
 int do_simple_read(int *samps_left_to_process,int bufsize,dataptr dz)
 {
-	int exit_status;
-	if(*samps_left_to_process < bufsize)
-		exit_status = read_partbuf_samps(*samps_left_to_process,samps_left_to_process,dz);
-	else
-		exit_status = read_ssamps(bufsize,samps_left_to_process,dz);
-	return(exit_status);
+        int exit_status;
+        if(*samps_left_to_process < bufsize)
+                exit_status = read_partbuf_samps(*samps_left_to_process,samps_left_to_process,dz);
+        else
+                exit_status = read_ssamps(bufsize,samps_left_to_process,dz);
+        return(exit_status);
 }
 
 /******************************** DO_OFFSET_READ **********************************/
 
 int do_offset_read(int *samps_left_to_process,int samp_offset,int bufsize,dataptr dz)
 {
-	int exit_status;
-	if(*samps_left_to_process < bufsize) {
-		exit_status = read_partbuf_samps(*samps_left_to_process + samp_offset,samps_left_to_process,dz);
-		*samps_left_to_process = 0;
-	} else {
-		exit_status = read_ssamps(bufsize,samps_left_to_process,dz);
-		*samps_left_to_process += samp_offset;	/* some of samps-read are not part of samps-to-process */
-	}
-	return(exit_status);
+        int exit_status;
+        if(*samps_left_to_process < bufsize) {
+                exit_status = read_partbuf_samps(*samps_left_to_process + samp_offset,samps_left_to_process,dz);
+                *samps_left_to_process = 0;
+        } else {
+                exit_status = read_ssamps(bufsize,samps_left_to_process,dz);
+                *samps_left_to_process += samp_offset;  /* some of samps-read are not part of samps-to-process */
+        }
+        return(exit_status);
 }
 
 /******************************** SKIP_INTO_FILE **********************************/
@@ -534,17 +534,17 @@ int do_offset_read(int *samps_left_to_process,int samp_offset,int bufsize,datapt
 //#ifdef NOTDEF
 int skip_into_file(int startsamp,int extended_buf_sampsize,int *write_offset,int *samp_offset,dataptr dz)
 {
-	int skipsamps=(startsamp/extended_buf_sampsize) * extended_buf_sampsize;	/* 8 */
-	int sampsecsize = ENV_FSECSIZE;
-	int sectors_remaining = (startsamp - skipsamps)/sampsecsize;				/* 9 */
-	skipsamps   += sectors_remaining * sampsecsize;								/* 10 */
-	*samp_offset  = startsamp - skipsamps;										/* 11 */
-	*write_offset = ENV_FSECSIZE - *samp_offset;								/* 12 */
-	if(sndseekEx(dz->ifd[0],skipsamps,0)<0) {									/* 13 */
-		sprintf(errstr,": sndseekEx failed: skip_into_file()\n");
-		return(SYSTEM_ERROR);
-	}
-	return(FINISHED);
+        int skipsamps=(startsamp/extended_buf_sampsize) * extended_buf_sampsize;        /* 8 */
+        int sampsecsize = ENV_FSECSIZE;
+        int sectors_remaining = (startsamp - skipsamps)/sampsecsize;                            /* 9 */
+        skipsamps   += sectors_remaining * sampsecsize;                                                         /* 10 */
+        *samp_offset  = startsamp - skipsamps;                                                                          /* 11 */
+        *write_offset = ENV_FSECSIZE - *samp_offset;                                                            /* 12 */
+        if(sndseekEx(dz->ifd[0],skipsamps,0)<0) {                                                                       /* 13 */
+                sprintf(errstr,": sndseekEx failed: skip_into_file()\n");
+                return(SYSTEM_ERROR);
+        }
+        return(FINISHED);
 }
 //#endif
 
@@ -559,444 +559,444 @@ static int do_grid_envelope(dataptr dz);
 static int do_grid_biz(int sib,int eib,int style,int *splicepos,dataptr dz);
 static void get_nextposition_pair(double *ds,int *startsamp,int *endsamp,int *style,dataptr dz);
 
-#define GRID_ZERO	(0)
-#define GRID_COPY	(1)
-#define GRID_DOWN	(2)
-#define GRID_UP		(3)
+#define GRID_ZERO       (0)
+#define GRID_COPY       (1)
+#define GRID_DOWN       (2)
+#define GRID_UP         (3)
 
 /************************************ DO_GRIDS ********************************/
 
 int do_grids(dataptr dz)
 {
-	int exit_status;
-	int n;
-	int namelen, numlen;
-	char *outfilename;
+        int exit_status;
+        int n;
+        int namelen, numlen;
+        char *outfilename;
 //TW REVISION DEc 2002
-//	char *outfilenumber;
-	char *p, *q, *r;
-	double next_gridstart;
-
-	numlen  = 4;
-
-	if(!sloom) {
-		namelen = strlen(dz->wordstor[0]);
-		q = dz->wordstor[0];
-		r = dz->wordstor[0] + namelen;
-		p = r - 1;
-		while((*p != '\\') && (*p != '/') && (*p != ':')) {
-			p--	;
-			if(p < dz->wordstor[0])
-				break;
-		}
-		if(p > dz->wordstor[0]) {
-			p++;
-			while(p <= r)
-				*q++ = *p++;
-		}
-	}
-	namelen = strlen(dz->wordstor[0]);		
-//	if(sndunlink(dz->ofd) < 0) {
-//		fprintf(stdout,"WARNING: Can't set initial dummy output soundfile for deletion.\n");
-//		fflush(stdout);
-//	}
-//	if(sndcloseEx(dz->ofd) < 0) {
-//		fprintf(stdout,"ERROR: Can't close initial dummy output soundfile\n");
-//		return(SYSTEM_ERROR);
-//	}
-	dz->ofd = -1;
-	if((exit_status = check_available_space(dz))<0)
-		return(exit_status);
-	if((dz->tempsize = dz->insams[0] * dz->iparam[GRID_COUNT])<0)
-		dz->tempsize = INT_MAX;
-	if(sloom)
-		namelen--;									/* Drop the 0 at end of name */
-	next_gridstart = 0.0;
-	if((exit_status = reset_peak_finder(dz))<0)
-		return(exit_status);
-	for(n=0;n<dz->iparam[GRID_COUNT];n++) {
-		if(sndseekEx(dz->ifd[0],0,0)<0) {
-			sprintf(errstr,"sndseekEx() failed.\n");
-			return(SYSTEM_ERROR);
-		}
-		reset_filedata_counters(dz);
+//      char *outfilenumber;
+        char *p, *q, *r;
+        double next_gridstart;
+
+        numlen  = 4;
+
+        if(!sloom) {
+                namelen = strlen(dz->wordstor[0]);
+                q = dz->wordstor[0];
+                r = dz->wordstor[0] + namelen;
+                p = r - 1;
+                while((*p != '\\') && (*p != '/') && (*p != ':')) {
+                        p--     ;
+                        if(p < dz->wordstor[0])
+                                break;
+                }
+                if(p > dz->wordstor[0]) {
+                        p++;
+                        while(p <= r)
+                                *q++ = *p++;
+                }
+        }
+        namelen = strlen(dz->wordstor[0]);
+//      if(sndunlink(dz->ofd) < 0) {
+//              fprintf(stdout,"WARNING: Can't set initial dummy output soundfile for deletion.\n");
+//              fflush(stdout);
+//      }
+//      if(sndcloseEx(dz->ofd) < 0) {
+//              fprintf(stdout,"ERROR: Can't close initial dummy output soundfile\n");
+//              return(SYSTEM_ERROR);
+//      }
+        dz->ofd = -1;
+        if((exit_status = check_available_space(dz))<0)
+                return(exit_status);
+        if((dz->tempsize = dz->insams[0] * dz->iparam[GRID_COUNT])<0)
+                dz->tempsize = INT_MAX;
+        if(sloom)
+                namelen--;                                                                      /* Drop the 0 at end of name */
+        next_gridstart = 0.0;
+        if((exit_status = reset_peak_finder(dz))<0)
+                return(exit_status);
+        for(n=0;n<dz->iparam[GRID_COUNT];n++) {
+                if(sndseekEx(dz->ifd[0],0,0)<0) {
+                        sprintf(errstr,"sndseekEx() failed.\n");
+                        return(SYSTEM_ERROR);
+                }
+                reset_filedata_counters(dz);
 // FEB 2010 TW
-		if((outfilename = (char *)malloc((namelen + numlen + 10) * sizeof(char)))==NULL) {
-			sprintf(errstr,"INSUFFICIENT MEMORY for outfilename.\n");
-			return(MEMORY_ERROR);
-		}				
-	    strcpy(outfilename,dz->wordstor[0]);
+                if((outfilename = (char *)malloc((namelen + numlen + 10) * sizeof(char)))==NULL) {
+                        sprintf(errstr,"INSUFFICIENT MEMORY for outfilename.\n");
+                        return(MEMORY_ERROR);
+                }
+            strcpy(outfilename,dz->wordstor[0]);
 //TW REvision Dec 2002
-		if(sloom)
-			insert_new_number_at_filename_end(outfilename,n,1);
+                if(sloom)
+                        insert_new_number_at_filename_end(outfilename,n,1);
 // FEB 2010 TW
-		else {
-			insert_separator_on_sndfile_name(outfilename,1);
-			insert_new_number_at_filename_end(outfilename,n,0);
-		}
-		dz->process_type = EQUAL_SNDFILE;	/* allow sndfile to be created */
-		if((exit_status = create_sized_outfile(outfilename,dz))<0) {
-			if(!sloom) {
-				sprintf(errstr, "Soundfile %s already exists: Made %d grids only.\n",outfilename,n-1);
-				free(outfilename);
-				dz->process_type = OTHER_PROCESS;
-				dz->ofd = -1;
-				return(GOAL_FAILED);
-			} else {
-				dz->process_type = OTHER_PROCESS;
-				dz->ofd = -1;
-				sprintf(errstr, "Soundfile %s already exists: Made %d grids only.\n",outfilename,n-1);
-				return(SYSTEM_ERROR);
-			}
-		}							
-		dz->process_type = OTHER_PROCESS;
-		if((exit_status = create_grid_envelope(n,&next_gridstart,dz))<0)
-			return(exit_status);
-		if((exit_status = do_grid_envelope(dz))<0)
-			return(exit_status);
-		dz->process_type = EQUAL_SNDFILE;		/* allows header to be written  */
-		dz->outfiletype  = SNDFILE_OUT;			/* allows header to be written  */
-		if((exit_status = headwrite(dz->ofd,dz))<0) {
-			free(outfilename);
-			return(exit_status);
-		}
-		dz->process_type = OTHER_PROCESS;		/* restore true status */
-		dz->outfiletype  = NO_OUTPUTFILE;		/* restore true status */
-		if((exit_status = reset_peak_finder(dz))<0)
-			return(exit_status);
-		if(sndcloseEx(dz->ofd) < 0) {
-			fprintf(stdout,"WARNING: Can't close output soundfile %s\n",outfilename);
-			fflush(stdout);
-		}
-		free(outfilename);
-		dz->ofd = -1;
-	}
-	return(FINISHED);
+                else {
+                        insert_separator_on_sndfile_name(outfilename,1);
+                        insert_new_number_at_filename_end(outfilename,n,0);
+                }
+                dz->process_type = EQUAL_SNDFILE;       /* allow sndfile to be created */
+                if((exit_status = create_sized_outfile(outfilename,dz))<0) {
+                        if(!sloom) {
+                                sprintf(errstr, "Soundfile %s already exists: Made %d grids only.\n",outfilename,n-1);
+                                free(outfilename);
+                                dz->process_type = OTHER_PROCESS;
+                                dz->ofd = -1;
+                                return(GOAL_FAILED);
+                        } else {
+                                dz->process_type = OTHER_PROCESS;
+                                dz->ofd = -1;
+                                sprintf(errstr, "Soundfile %s already exists: Made %d grids only.\n",outfilename,n-1);
+                                return(SYSTEM_ERROR);
+                        }
+                }
+                dz->process_type = OTHER_PROCESS;
+                if((exit_status = create_grid_envelope(n,&next_gridstart,dz))<0)
+                        return(exit_status);
+                if((exit_status = do_grid_envelope(dz))<0)
+                        return(exit_status);
+                dz->process_type = EQUAL_SNDFILE;               /* allows header to be written  */
+                dz->outfiletype  = SNDFILE_OUT;                 /* allows header to be written  */
+                if((exit_status = headwrite(dz->ofd,dz))<0) {
+                        free(outfilename);
+                        return(exit_status);
+                }
+                dz->process_type = OTHER_PROCESS;               /* restore true status */
+                dz->outfiletype  = NO_OUTPUTFILE;               /* restore true status */
+                if((exit_status = reset_peak_finder(dz))<0)
+                        return(exit_status);
+                if(sndcloseEx(dz->ofd) < 0) {
+                        fprintf(stdout,"WARNING: Can't close output soundfile %s\n",outfilename);
+                        fflush(stdout);
+                }
+                free(outfilename);
+                dz->ofd = -1;
+        }
+        return(FINISHED);
 }
 
 /************************************ CHECK_AVAILABLE_SPACE ********************************/
-#define LEAVESPACE	(10*1024)
+#define LEAVESPACE      (10*1024)
 
 int check_available_space(dataptr dz)
 {
-	unsigned int slots;
-	unsigned int freespace = getdrivefreespace("temp") - LEAVESPACE;
-	freespace /= sizeof(float);
-	slots = freespace/dz->insams[0];
-	if(slots < (unsigned int)dz->iparam[COPY_CNT]) {
-		sprintf(errstr,"Insufficient space on disk to create %d copies.\n"
-		               "You have space for %d copies.\n",dz->iparam[COPY_CNT],slots);
-		return(GOAL_FAILED);
-	}
-	return(FINISHED);
+        unsigned int slots;
+        unsigned int freespace = getdrivefreespace("temp") - LEAVESPACE;
+        freespace /= sizeof(float);
+        slots = freespace/dz->insams[0];
+        if(slots < (unsigned int)dz->iparam[COPY_CNT]) {
+                sprintf(errstr,"Insufficient space on disk to create %d copies.\n"
+                               "You have space for %d copies.\n",dz->iparam[COPY_CNT],slots);
+                return(GOAL_FAILED);
+        }
+        return(FINISHED);
 }
 
 /************************************ CREATE_GRID_ENVELOPE ********************************/
 
 int create_grid_envelope(int n, double *next_gridstart,dataptr dz)
 {
-	double *d, time, thistime, grid_step, half_gridsplen;
-	int arraysize = 8, old_arraysize;
-	double starttime;
-	int firstpass, exit_status;
-
-	if(dz->brksize[GRID_WIDTH] == 0) {
-		grid_step = dz->param[GRID_WIDTH] * dz->iparam[GRID_COUNT];
-		switch(n) {
-		case(0):
-			if((dz->parray[0] = (double *)malloc(arraysize * sizeof(double)))==NULL) {
-				sprintf(errstr,"Insufficient memory for grid envelope,\n");
-				return(MEMORY_ERROR);
-			}
-			d = dz->parray[0];
-			for(time = 0.0; time <= dz->duration; time += grid_step) {
-				thistime = time;	
-				if(flteq(time,0.0))
-					*d++ = thistime;
-				else {
-					if(dz->brksize[GRID_SPLEN] > 0)
-						read_value_from_brktable(thistime,GRID_SPLEN,dz);
-					half_gridsplen = dz->param[GRID_SPLEN]/2.0;
-					*d++ = thistime + half_gridsplen;
-				}
-				*d++ = 1.0;
-				thistime += dz->param[GRID_WIDTH];
-				if(dz->brksize[GRID_SPLEN] > 0)
-					read_value_from_brktable(thistime,GRID_SPLEN,dz);
-				half_gridsplen = dz->param[GRID_SPLEN]/2.0;
-				*d++ = thistime - half_gridsplen;
-				*d++ = 1.0;
-				*d++ = thistime + half_gridsplen;
-				*d++ = 0.0;
-				thistime = time + grid_step;
-				if(dz->brksize[GRID_SPLEN] > 0) {
-					read_value_from_brktable(thistime,GRID_SPLEN,dz);
-				}
-				half_gridsplen = dz->param[GRID_SPLEN]/2.0;
-				*d++ = thistime - half_gridsplen;
-				*d++ = 0.0;
-				old_arraysize = arraysize;
-				arraysize += 8;
-				if((dz->parray[0] = (double *)realloc((char *)dz->parray[0],arraysize * sizeof(double)))==NULL) {
-					sprintf(errstr,"Insufficient memory for grid envelope,\n");
-					return(MEMORY_ERROR);
-				}
-				d = dz->parray[0] + old_arraysize;
-				dz->parray[1] = d;		/* mark end of parray */
-			}
-			break;
-		case(1):
-			for(d = dz->parray[1]-2; d >= dz->parray[0];d -= 2) {
-				*(d+4) = (*d) + dz->param[GRID_WIDTH];		/* add time to values, and shift them up two brkpnt places */
-				*(d+5) = *(d+1);
-			}
-			*(dz->parray[0])   = 0.0;						/* Insert a zero time zero val */			
-			*(dz->parray[0]+1) = 0.0;						
-			if(dz->brksize[GRID_SPLEN] > 0) {					/* And a splice-start zero */
-				read_value_from_brktable(*(dz->parray[0]+4),GRID_SPLEN,dz);
-			}
-			half_gridsplen = dz->param[GRID_SPLEN]/2.0;
-			*(dz->parray[0]+2) = *(dz->parray[0]+4) - half_gridsplen;
-			*(dz->parray[0]+3) = 0.0;
-			*(dz->parray[0]+4) += half_gridsplen;
-			dz->parray[1] += 4;								/* mark end of parray */
-			break;
-		default:											/* move grid by grid-width, except zerotime point */
-			for(d = dz->parray[1]-2; d >= dz->parray[0]+2;d -= 2)
-				*d += dz->param[GRID_WIDTH];
-			break;
-		}
-	} else {
-		switch(n) {
-		case(0):
-			starttime = 0.0;
-			firstpass = 1;
-			if((dz->parray[0] = (double *)malloc(arraysize * sizeof(double)))==NULL) {
-				sprintf(errstr,"Insufficient memory for grid envelope,\n");
-				return(MEMORY_ERROR);
-			}
-			d = dz->parray[0];
-			if((exit_status = fill_grid_array(starttime,&firstpass,next_gridstart,&d,&arraysize,dz))<0)
-				return(exit_status);
-			arraysize += 64;	/* safety */
-			if((dz->parray[0] = (double *)realloc((char *)dz->parray[0],arraysize * sizeof(double)))==NULL) {
-				sprintf(errstr,"Insufficient memory for grid envelope,\n");
-				return(MEMORY_ERROR);
-			}
-			break;
-		default:											/* move grid by grid-width, except zerotime point */
-			arraysize = 12;
-			starttime = *next_gridstart;
-			firstpass = 1;
-			d = dz->parray[0] + 4;
-			if((exit_status = fill_grid_array(starttime,&firstpass,next_gridstart,&d,&arraysize,dz))<0)
-				return(exit_status);
-			*(dz->parray[0])   = 0.0;						/* Insert a zero time zero val */			
-			*(dz->parray[0]+1) = 0.0;						
-			if(dz->brksize[GRID_SPLEN] > 0)					/* And a splice-start zero */
-				read_value_from_brktable(*(dz->parray[0]+4),GRID_SPLEN,dz);
-			half_gridsplen = dz->param[GRID_SPLEN]/2.0;
-			*(dz->parray[0]+2) = *(dz->parray[0]+4) - half_gridsplen;
-			*(dz->parray[0]+3) = 0.0;
-			*(dz->parray[0]+4) += half_gridsplen;
-			break;
-		}
-	}
-	return(FINISHED);
+        double *d, time, thistime, grid_step, half_gridsplen;
+        int arraysize = 8, old_arraysize;
+        double starttime;
+        int firstpass, exit_status;
+
+        if(dz->brksize[GRID_WIDTH] == 0) {
+                grid_step = dz->param[GRID_WIDTH] * dz->iparam[GRID_COUNT];
+                switch(n) {
+                case(0):
+                        if((dz->parray[0] = (double *)malloc(arraysize * sizeof(double)))==NULL) {
+                                sprintf(errstr,"Insufficient memory for grid envelope,\n");
+                                return(MEMORY_ERROR);
+                        }
+                        d = dz->parray[0];
+                        for(time = 0.0; time <= dz->duration; time += grid_step) {
+                                thistime = time;
+                                if(flteq(time,0.0))
+                                        *d++ = thistime;
+                                else {
+                                        if(dz->brksize[GRID_SPLEN] > 0)
+                                                read_value_from_brktable(thistime,GRID_SPLEN,dz);
+                                        half_gridsplen = dz->param[GRID_SPLEN]/2.0;
+                                        *d++ = thistime + half_gridsplen;
+                                }
+                                *d++ = 1.0;
+                                thistime += dz->param[GRID_WIDTH];
+                                if(dz->brksize[GRID_SPLEN] > 0)
+                                        read_value_from_brktable(thistime,GRID_SPLEN,dz);
+                                half_gridsplen = dz->param[GRID_SPLEN]/2.0;
+                                *d++ = thistime - half_gridsplen;
+                                *d++ = 1.0;
+                                *d++ = thistime + half_gridsplen;
+                                *d++ = 0.0;
+                                thistime = time + grid_step;
+                                if(dz->brksize[GRID_SPLEN] > 0) {
+                                        read_value_from_brktable(thistime,GRID_SPLEN,dz);
+                                }
+                                half_gridsplen = dz->param[GRID_SPLEN]/2.0;
+                                *d++ = thistime - half_gridsplen;
+                                *d++ = 0.0;
+                                old_arraysize = arraysize;
+                                arraysize += 8;
+                                if((dz->parray[0] = (double *)realloc((char *)dz->parray[0],arraysize * sizeof(double)))==NULL) {
+                                        sprintf(errstr,"Insufficient memory for grid envelope,\n");
+                                        return(MEMORY_ERROR);
+                                }
+                                d = dz->parray[0] + old_arraysize;
+                                dz->parray[1] = d;              /* mark end of parray */
+                        }
+                        break;
+                case(1):
+                        for(d = dz->parray[1]-2; d >= dz->parray[0];d -= 2) {
+                                *(d+4) = (*d) + dz->param[GRID_WIDTH];          /* add time to values, and shift them up two brkpnt places */
+                                *(d+5) = *(d+1);
+                        }
+                        *(dz->parray[0])   = 0.0;                                               /* Insert a zero time zero val */
+                        *(dz->parray[0]+1) = 0.0;
+                        if(dz->brksize[GRID_SPLEN] > 0) {                                       /* And a splice-start zero */
+                                read_value_from_brktable(*(dz->parray[0]+4),GRID_SPLEN,dz);
+                        }
+                        half_gridsplen = dz->param[GRID_SPLEN]/2.0;
+                        *(dz->parray[0]+2) = *(dz->parray[0]+4) - half_gridsplen;
+                        *(dz->parray[0]+3) = 0.0;
+                        *(dz->parray[0]+4) += half_gridsplen;
+                        dz->parray[1] += 4;                                                             /* mark end of parray */
+                        break;
+                default:                                                                                        /* move grid by grid-width, except zerotime point */
+                        for(d = dz->parray[1]-2; d >= dz->parray[0]+2;d -= 2)
+                                *d += dz->param[GRID_WIDTH];
+                        break;
+                }
+        } else {
+                switch(n) {
+                case(0):
+                        starttime = 0.0;
+                        firstpass = 1;
+                        if((dz->parray[0] = (double *)malloc(arraysize * sizeof(double)))==NULL) {
+                                sprintf(errstr,"Insufficient memory for grid envelope,\n");
+                                return(MEMORY_ERROR);
+                        }
+                        d = dz->parray[0];
+                        if((exit_status = fill_grid_array(starttime,&firstpass,next_gridstart,&d,&arraysize,dz))<0)
+                                return(exit_status);
+                        arraysize += 64;        /* safety */
+                        if((dz->parray[0] = (double *)realloc((char *)dz->parray[0],arraysize * sizeof(double)))==NULL) {
+                                sprintf(errstr,"Insufficient memory for grid envelope,\n");
+                                return(MEMORY_ERROR);
+                        }
+                        break;
+                default:                                                                                        /* move grid by grid-width, except zerotime point */
+                        arraysize = 12;
+                        starttime = *next_gridstart;
+                        firstpass = 1;
+                        d = dz->parray[0] + 4;
+                        if((exit_status = fill_grid_array(starttime,&firstpass,next_gridstart,&d,&arraysize,dz))<0)
+                                return(exit_status);
+                        *(dz->parray[0])   = 0.0;                                               /* Insert a zero time zero val */
+                        *(dz->parray[0]+1) = 0.0;
+                        if(dz->brksize[GRID_SPLEN] > 0)                                 /* And a splice-start zero */
+                                read_value_from_brktable(*(dz->parray[0]+4),GRID_SPLEN,dz);
+                        half_gridsplen = dz->param[GRID_SPLEN]/2.0;
+                        *(dz->parray[0]+2) = *(dz->parray[0]+4) - half_gridsplen;
+                        *(dz->parray[0]+3) = 0.0;
+                        *(dz->parray[0]+4) += half_gridsplen;
+                        break;
+                }
+        }
+        return(FINISHED);
 }
 
 /************************************ FILL_GRID_ARRAY ********************************/
 
 int fill_grid_array(double starttime,int *firstpass, double *next_gridstart, double **d, int *arraysize, dataptr dz)
 {
-	double grid_step = 0.0, time, thistime, start_gridwidth, this_gridwidth, half_gridsplen = 0.0;
-	int z;
-	int old_arraysize, k;
-	for(time = starttime; time <=dz->duration; time += grid_step) {
-		grid_step = 0.0;
-		thistime = time;
-		read_value_from_brktable(thistime,GRID_WIDTH,dz);
-		start_gridwidth = dz->param[GRID_WIDTH];
-		if(*firstpass)							/* save initial distance to next grid set */
-			*next_gridstart += start_gridwidth;
-		this_gridwidth = start_gridwidth;
-		grid_step += this_gridwidth;
-		thistime += this_gridwidth;
-		for(z=1;z<dz->iparam[GRID_COUNT];z++) {				  /*sum steps of all grids to get step from */
-			read_value_from_brktable(thistime,GRID_WIDTH,dz); /* current window of this grid, to next window of this grid */
-			this_gridwidth = dz->param[GRID_WIDTH];
-			grid_step += this_gridwidth;
-			thistime += this_gridwidth;
-		}
-		thistime = time;	
-		if(*firstpass)
-			half_gridsplen = 0.0;	/* Envelope starts without splice ... splice added in calling routine */
-		else if(dz->brksize[GRID_SPLEN] > 0) {
-			read_value_from_brktable(thistime,GRID_SPLEN,dz);
-			half_gridsplen = dz->param[GRID_SPLEN]/2.0;
-		}
-		**d = thistime + half_gridsplen;
-		(*d)++;
-		**d = 1.0;
-		(*d)++;
-		thistime += start_gridwidth;
-		if(dz->brksize[GRID_SPLEN] > 0) {
-			read_value_from_brktable(thistime,GRID_SPLEN,dz);
-			half_gridsplen = dz->param[GRID_SPLEN]/2.0;
-		} else if(*firstpass)
-			half_gridsplen = dz->param[GRID_SPLEN]/2.0;	/* if no brkpnt table, only need to calc on first pass */
-		*firstpass = 0;
-		**d = thistime - half_gridsplen;
-		(*d)++;
-		**d = 1.0;
-		(*d)++;
-		**d = thistime + half_gridsplen;
-		(*d)++;
-		**d = 0.0;
-		(*d)++;
-		thistime = time + grid_step;
-		if(dz->brksize[GRID_SPLEN] > 0) {
-			read_value_from_brktable(thistime,GRID_SPLEN,dz);
-			half_gridsplen = dz->param[GRID_SPLEN]/2.0;
-		}
-		**d = thistime - half_gridsplen;
-		(*d)++;
-		**d = 0.0;
-		(*d)++;
-		old_arraysize = *arraysize;
-		*arraysize += 8;
-		k = *d - dz->parray[0];
-		if((dz->parray[0] = (double *)realloc((char *)dz->parray[0],(*arraysize) * sizeof(double)))==NULL) {
-			sprintf(errstr,"Insufficient memory for grid envelope,\n");
-			return(MEMORY_ERROR);
-		}
-		*d = dz->parray[0] + k;
-		dz->parray[1] = *d;	/* mark end of parray */
-	}
- 	return(FINISHED);
+        double grid_step = 0.0, time, thistime, start_gridwidth, this_gridwidth, half_gridsplen = 0.0;
+        int z;
+        int k; //old_arraysize;
+        for(time = starttime; time <=dz->duration; time += grid_step) {
+                grid_step = 0.0;
+                thistime = time;
+                read_value_from_brktable(thistime,GRID_WIDTH,dz);
+                start_gridwidth = dz->param[GRID_WIDTH];
+                if(*firstpass)                                                  /* save initial distance to next grid set */
+                        *next_gridstart += start_gridwidth;
+                this_gridwidth = start_gridwidth;
+                grid_step += this_gridwidth;
+                thistime += this_gridwidth;
+                for(z=1;z<dz->iparam[GRID_COUNT];z++) {                           /*sum steps of all grids to get step from */
+                        read_value_from_brktable(thistime,GRID_WIDTH,dz); /* current window of this grid, to next window of this grid */
+                        this_gridwidth = dz->param[GRID_WIDTH];
+                        grid_step += this_gridwidth;
+                        thistime += this_gridwidth;
+                }
+                thistime = time;
+                if(*firstpass)
+                        half_gridsplen = 0.0;   /* Envelope starts without splice ... splice added in calling routine */
+                else if(dz->brksize[GRID_SPLEN] > 0) {
+                        read_value_from_brktable(thistime,GRID_SPLEN,dz);
+                        half_gridsplen = dz->param[GRID_SPLEN]/2.0;
+                }
+                **d = thistime + half_gridsplen;
+                (*d)++;
+                **d = 1.0;
+                (*d)++;
+                thistime += start_gridwidth;
+                if(dz->brksize[GRID_SPLEN] > 0) {
+                        read_value_from_brktable(thistime,GRID_SPLEN,dz);
+                        half_gridsplen = dz->param[GRID_SPLEN]/2.0;
+                } else if(*firstpass)
+                        half_gridsplen = dz->param[GRID_SPLEN]/2.0;     /* if no brkpnt table, only need to calc on first pass */
+                *firstpass = 0;
+                **d = thistime - half_gridsplen;
+                (*d)++;
+                **d = 1.0;
+                (*d)++;
+                **d = thistime + half_gridsplen;
+                (*d)++;
+                **d = 0.0;
+                (*d)++;
+                thistime = time + grid_step;
+                if(dz->brksize[GRID_SPLEN] > 0) {
+                        read_value_from_brktable(thistime,GRID_SPLEN,dz);
+                        half_gridsplen = dz->param[GRID_SPLEN]/2.0;
+                }
+                **d = thistime - half_gridsplen;
+                (*d)++;
+                **d = 0.0;
+                (*d)++;
+                //old_arraysize = *arraysize;
+                *arraysize += 8;
+                k = *d - dz->parray[0];
+                if((dz->parray[0] = (double *)realloc((char *)dz->parray[0],(*arraysize) * sizeof(double)))==NULL) {
+                        sprintf(errstr,"Insufficient memory for grid envelope,\n");
+                        return(MEMORY_ERROR);
+                }
+                *d = dz->parray[0] + k;
+                dz->parray[1] = *d;     /* mark end of parray */
+        }
+        return(FINISHED);
 }
 
 /************************************ DO_GRID_ENVELOPE ********************************/
 
 int do_grid_envelope(dataptr dz)
 {
-	double *ds = dz->parray[0];
-	int sib, eib; /* startpos-ion-buf, edipos-in-buf */
-	int style, exit_status, finished= 0;
-	int startsamp, endsamp, splicepos = 0,last_total_samps_read = 0;
-	sndseekEx(dz->ifd[0],0,0);
-	get_nextposition_pair(ds,&startsamp,&endsamp,&style,dz);
-	sib = startsamp - last_total_samps_read;
-	eib = endsamp   - last_total_samps_read;
-	if((exit_status = read_samps(dz->sampbuf[0],dz)) < 0)
-		return(exit_status);
-	if(dz->ssampsread == 0) {
-		sprintf(errstr,"No data found in input soundfile\n");
-		return(GOAL_FAILED);
-	}
-	while(ds < dz->parray[1] - 2) {
-		do {
-			while(eib < dz->ssampsread) {
-				do_grid_biz(sib,eib,style,&splicepos,dz);
-				if((ds += 2) >= dz->parray[1] - 2) {
-					finished = 1;
-					break;
-				}
-				get_nextposition_pair(ds,&startsamp,&endsamp,&style,dz);
-				sib = startsamp - last_total_samps_read;
-				eib = endsamp   - last_total_samps_read;
-			}
-			if(finished)
-				break;
-			do_grid_biz(sib,dz->ssampsread,style,&splicepos,dz);
-			if(dz->ssampsread > 0) {
-				if((exit_status = write_samps(dz->sampbuf[0],dz->ssampsread,dz))<0)
-					return(exit_status);
-			}
-			last_total_samps_read = dz->total_samps_read;
-			if((exit_status = read_samps(dz->sampbuf[0],dz)) < 0)
-				return(exit_status);
-			if(dz->ssampsread == 0) {
-				finished = 1;
-				break;
-			}
-			sib = 0;
-			eib = endsamp - last_total_samps_read;
-			if(eib == 0) {
-				if((ds += 2) >= dz->parray[1] - 2) {
-					finished = 1;
-					break;
-				}
-				get_nextposition_pair(ds,&startsamp,&endsamp,&style,dz);
-				sib = startsamp - last_total_samps_read;
-				eib = endsamp   - last_total_samps_read;
-			}
-		} while(!finished);
-		if(finished)
-			break;
-	}
-	if(dz->ssampsread > 0) {
-		if((exit_status = write_samps(dz->sampbuf[0],dz->ssampsread,dz))<0)
-			return(exit_status);
-	}
-	return(FINISHED);
+        double *ds = dz->parray[0];
+        int sib, eib; /* startpos-ion-buf, edipos-in-buf */
+        int style, exit_status, finished= 0;
+        int startsamp, endsamp, splicepos = 0,last_total_samps_read = 0;
+        sndseekEx(dz->ifd[0],0,0);
+        get_nextposition_pair(ds,&startsamp,&endsamp,&style,dz);
+        sib = startsamp - last_total_samps_read;
+        eib = endsamp   - last_total_samps_read;
+        if((exit_status = read_samps(dz->sampbuf[0],dz)) < 0)
+                return(exit_status);
+        if(dz->ssampsread == 0) {
+                sprintf(errstr,"No data found in input soundfile\n");
+                return(GOAL_FAILED);
+        }
+        while(ds < dz->parray[1] - 2) {
+                do {
+                        while(eib < dz->ssampsread) {
+                                do_grid_biz(sib,eib,style,&splicepos,dz);
+                                if((ds += 2) >= dz->parray[1] - 2) {
+                                        finished = 1;
+                                        break;
+                                }
+                                get_nextposition_pair(ds,&startsamp,&endsamp,&style,dz);
+                                sib = startsamp - last_total_samps_read;
+                                eib = endsamp   - last_total_samps_read;
+                        }
+                        if(finished)
+                                break;
+                        do_grid_biz(sib,dz->ssampsread,style,&splicepos,dz);
+                        if(dz->ssampsread > 0) {
+                                if((exit_status = write_samps(dz->sampbuf[0],dz->ssampsread,dz))<0)
+                                        return(exit_status);
+                        }
+                        last_total_samps_read = dz->total_samps_read;
+                        if((exit_status = read_samps(dz->sampbuf[0],dz)) < 0)
+                                return(exit_status);
+                        if(dz->ssampsread == 0) {
+                                finished = 1;
+                                break;
+                        }
+                        sib = 0;
+                        eib = endsamp - last_total_samps_read;
+                        if(eib == 0) {
+                                if((ds += 2) >= dz->parray[1] - 2) {
+                                        finished = 1;
+                                        break;
+                                }
+                                get_nextposition_pair(ds,&startsamp,&endsamp,&style,dz);
+                                sib = startsamp - last_total_samps_read;
+                                eib = endsamp   - last_total_samps_read;
+                        }
+                } while(!finished);
+                if(finished)
+                        break;
+        }
+        if(dz->ssampsread > 0) {
+                if((exit_status = write_samps(dz->sampbuf[0],dz->ssampsread,dz))<0)
+                        return(exit_status);
+        }
+        return(FINISHED);
 }
 
 /************************************ DO_GRID_BIZ ********************************/
 
 int do_grid_biz(int sib,int eib,int style,int *splicepos,dataptr dz)
 {
-	double splice_incr, splice_val;
-	int n;
-	switch(style) {
-	case(GRID_ZERO):	memset((char *)(dz->sampbuf[0] + sib),0,(eib - sib) * sizeof(float));	break;
-	case(GRID_COPY):	break;
-	case(GRID_UP):
-		dz->iparam[GRID_SPLEN] = (int)round(dz->param[GRID_SPLEN] * dz->infile->srate) * dz->infile->channels;
-		splice_incr = 1.0 / (double)dz->iparam[GRID_SPLEN];
-		splice_val = *splicepos * splice_incr;
-		for(n = sib; n < eib; n++) {
-			dz->sampbuf[0][n] = (float)(dz->sampbuf[0][n] * splice_val);
-			splice_val += splice_incr;
-			(*splicepos)++;
-		}
-		if(*splicepos >= dz->iparam[GRID_SPLEN])
-			*splicepos = 0;
-		break;
-	case(GRID_DOWN):
-		dz->iparam[GRID_SPLEN] = (int)round(dz->param[GRID_SPLEN] * dz->infile->srate) * dz->infile->channels;
-		splice_incr = 1.0 / (double)dz->iparam[GRID_SPLEN];
-		splice_val = 1.0 - (*splicepos * splice_incr);
-		for(n = sib; n < eib; n++) {
-			dz->sampbuf[0][n] = (float)(dz->sampbuf[0][n] * splice_val);
-			splice_val -= splice_incr;
-			(*splicepos)++;
-		}
-		if(*splicepos >= dz->iparam[GRID_SPLEN])
-			*splicepos = 0;
-		break;
-	}
-	return(FINISHED);
+        double splice_incr, splice_val;
+        int n;
+        switch(style) {
+        case(GRID_ZERO):        memset((char *)(dz->sampbuf[0] + sib),0,(eib - sib) * sizeof(float));   break;
+        case(GRID_COPY):        break;
+        case(GRID_UP):
+                dz->iparam[GRID_SPLEN] = (int)round(dz->param[GRID_SPLEN] * dz->infile->srate) * dz->infile->channels;
+                splice_incr = 1.0 / (double)dz->iparam[GRID_SPLEN];
+                splice_val = *splicepos * splice_incr;
+                for(n = sib; n < eib; n++) {
+                        dz->sampbuf[0][n] = (float)(dz->sampbuf[0][n] * splice_val);
+                        splice_val += splice_incr;
+                        (*splicepos)++;
+                }
+                if(*splicepos >= dz->iparam[GRID_SPLEN])
+                        *splicepos = 0;
+                break;
+        case(GRID_DOWN):
+                dz->iparam[GRID_SPLEN] = (int)round(dz->param[GRID_SPLEN] * dz->infile->srate) * dz->infile->channels;
+                splice_incr = 1.0 / (double)dz->iparam[GRID_SPLEN];
+                splice_val = 1.0 - (*splicepos * splice_incr);
+                for(n = sib; n < eib; n++) {
+                        dz->sampbuf[0][n] = (float)(dz->sampbuf[0][n] * splice_val);
+                        splice_val -= splice_incr;
+                        (*splicepos)++;
+                }
+                if(*splicepos >= dz->iparam[GRID_SPLEN])
+                        *splicepos = 0;
+                break;
+        }
+        return(FINISHED);
 }
 
 /************************************ GET_NEXTPOSITION_PAIR ********************************/
 
 void get_nextposition_pair(double *ds,int *startsamp,int *endsamp,int *style,dataptr dz)
 {
-	double *de = ds+2, startval, endval;
-	*startsamp = round(*ds * dz->infile->srate) * dz->infile->channels;
-	*endsamp   = round(*de * dz->infile->srate) * dz->infile->channels;
-	startval = *(ds+1);		
-	endval   = *(de+1);
-	if(flteq(startval,1.0)) {
-		if(flteq(endval,1.0))
-			*style = GRID_COPY;
-		else
-			*style = GRID_DOWN;
-	} else {
-		if(flteq(endval,1.0))
-			*style = GRID_UP;
-		else
-			*style = GRID_ZERO;
-	}
+        double *de = ds+2, startval, endval;
+        *startsamp = round(*ds * dz->infile->srate) * dz->infile->channels;
+        *endsamp   = round(*de * dz->infile->srate) * dz->infile->channels;
+        startval = *(ds+1);
+        endval   = *(de+1);
+        if(flteq(startval,1.0)) {
+                if(flteq(endval,1.0))
+                        *style = GRID_COPY;
+                else
+                        *style = GRID_DOWN;
+        } else {
+                if(flteq(endval,1.0))
+                        *style = GRID_UP;
+                else
+                        *style = GRID_ZERO;
+        }
 }