AFreadData(3tsp)                                              AFreadData(3tsp)

       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

         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 AFopenRead
        -> 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.

Author / revision
       P. Kabal / Revision 1.48  2002/02/15

See Also
       AFopenRead, libtsp

                                TSP (libtsp/AF)               AFreadData(3tsp)