int AFreadData (AFILE *AFp, long int offs, float Fbuff[],
    int Nreq)

Read data from an audio file (return float values)

This routine returns a specified number of samples at a
given sample offset in an audio file.  The data in the file
is converted to float format on output.  The sample data in
the file is considered to be preceded and followed by zero‐
valued samples.  Thus if the sample offset is negative or
points to beyond the number of samples in the file, the
appropriate number of zero‐valued samples is returned.  The
file must have been opened using routine AFopenRead.

     The following program fragment illustrates the use of
this routine to read overlapping frames of data.  For the
simpler case of sequential access to the data without
overlap, the variable Lmem should be set to zero.

       AFp = AFopenRead (...);
  Lmem =...
  Lframe =...
  Nadv = Lframe‐Lmem;
  offs = ‐Lmem;
  while (1) {
    Nout = AFreadData (AFp, offs, Fbuff, Lframe);
    offs = offs+Nadv;
    if (Nout == 0)

     On encountering an error, the default behaviour is to
print an error message and halt execution.

<‐  int AFreadData
    Number of data values transferred from the file.  On
    reaching the end of the file, this value may be less
    than Nreq, in which case the last elements are set to
    zero.  This value can be used by the calling routine to
    determine when the data from the file has been
 ‐> AFILE *AFp
    Audio file pointer for an audio file opened by
 ‐> long int offs
    Offset into the file in samples.  If offs is positive,
    the first value returned is offs samples from the
    beginning of the data.  The file data is considered to
    be preceded by zeros.  Thus if offs is negative, the


    appropriate number of zeros will be returned.  These
    zeros before the beginning of the data are counted as
    part of the count returned in Nout.
<‐  float Fbuff[]
    Array of floats to receive the Nreq samples
 ‐> int Nreq
    Number of samples requested.  Nreq may be zero.

P. Kabal / Revision 1.48  2002/02/15

AFopenRead, libtsp