NAME

Audio::SoundFile::Reader - Reader class for various sound formats

SYNOPSIS

use IO::Seekable;
use Audio::SoundFile;

$reader = new Audio::SoundFile::Reader($source, \$header);

$length = $reader->bread_raw(\$buffer, $wanted);
$length = $reader->bread_pdl(\$buffer, $wanted);

$reader->fseek(1024, SEEK_SET);
$reader->fseek(1024, SEEK_CUR);
$reader->fseek(1024, SEEK_END);

$reader->close;

DESCRIPTION

This module provides an interface to read various sound formats supported by libsndfile.

In addition to usual I/O interface, it provides direct interface to create PDL object without making a copy of data in pure-Perl space. This is an advantage on both speed and memory, and is a recommended way to manipulate sound data.

Currently supported methods are:

$reader = new Audio::SoundFile::Reader($source, \$header);

Constructor. Returns input stream object that reads from given source.

Also assigns header information read from the source to passed scalar reference.

$reader->close;

Closes input stream. This object will be unusable after this method is called.

$offset = $reader->fseek($offset, $whence);

Moves next reading position to a point where specified by $offset and $whence. Note $offset is not a length in bytes, but a number of frames to skip (frame is a block of data containing data of all channels at given moment).

Return value (which should be a new position in number of frames) is currently unreliable.

$offset = $reader->bseek($offset, $whence);

Moves next reading position to a point where specified by $offset and $whence. Note $offset is not a length in bytes, but a number of blocks to skip (block is a bulk of data containing data of single channel at given moment).

Return value (which should be a new position in number of blocks) is currently unreliable.

$length = $reader->bread_raw(\$buffer, $wanted);

Reads $wanted blocks of data, and stores it to $buffer as a Perl scalar. Content of $buffer is not guranteed on error.

Returns length of the data actually stored, or 0 (or lesser value) on error.

$length = $reader->bread_pdl(\$buffer, $wanted);

Reads $wanted blocks of data, and stores it to $buffer as a PDL object. Content of $buffer is not guranteed on error.

Returns length of the data actually stored, or 0 (or lesser value) on error.

NOTES

If you mix bseek/bread and fseek/fread, things might get confusing due to shift in internal offset - please do it with your responsibility.

AUTHORS / CONTRIBUTORS

Taisuke Yamada <tai@imasy.or.jp>

COPYRIGHT

Copyright (C) 2001. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.