ftp.nice.ch/pub/next/unix/audio/shorten.1.12.s.tar.gz#/shorten-1.12/longtap.c

This is longtap.c in view mode; [Download] [Up]

/******************************************************************************
*                                                                             *
*       Copyright (C) 1992,1993,1994 Tony Robinson                            *
*                                                                             *
*       See the file LICENSE for conditions on distribution and usage         *
*                                                                             *
******************************************************************************/

# include <math.h>
# include "shorten.h"

int find_longtap(buffer, blocksize, minlongtap, maxlongtap) int *buffer,
       blocksize, minlongtap, maxlongtap; {
  int i, sum, bestvar, longtap, besttap = 0;

  sum = 0;
  for(i = 0; i < blocksize; i++) sum += abs(buffer[i]);
  bestvar = 0.6 * sum;

  for(longtap = minlongtap; longtap < maxlongtap; longtap++) {
    sum = 0;
    for(i = 0; sum < bestvar && i < blocksize; i++)
      sum += abs(buffer[i] - buffer[i - longtap]);

    if(sum < bestvar) {
      bestvar = sum;
      besttap = longtap;
    }
  }

  return(besttap);
}

void remove_longtap(buffer, blocksize, longtap) int *buffer, blocksize,
       longtap; {
  int i;
  
  for(i = blocksize - 1; i >= 0; i--)
    buffer[i] -= buffer[i - longtap];
}

void replace_longtap(buffer, blocksize, longtap) int *buffer, blocksize,
       longtap; {
  int i;
  
  for(i = 0; i < blocksize; i++)
    buffer[i] += buffer[i - longtap];
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.