man Audio::Wav () - Modules for reading & writing Microsoft WAV files.

NAME

Audio::Wav - Modules for reading & writing Microsoft WAV files.

SYNOPSIS

    use Audio::Wav;
    my $wav = new Audio::Wav;
    my $read = $wav -> read( 'input.wav' );
    my $write = $wav -> write( 'output.wav', $read -> details() );
    print "input is ", $read -> length_seconds(), " seconds long\n";

    $write -> set_info( 'software' => 'Audio::Wav' );
    my $data;
    while ( defined( $data = $read -> read_raw( $buffer ) ) ) {
        $write -> write_raw( $data );
    }
    my $length = $read -> length_samples();
    my( $third, $half, $twothirds ) = map int( $length / $_ ), ( 3, 2, 1.5 );
    my %samp_loop = (
        'start' => $third,
        'end'   => $twothirds,
    );
    $write -> add_sampler_loop( %samp_loop );
    $write -> add_cue( $half, "cue label 1", "cue note 1" );
    $write -> finish();

NOTES

All sample positions are now in sample offsets (unless option '.01compatible' is true).

DESCRIPTION

These modules provide a method of reading & writing uncompressed Microsoft WAV files.

SEE ALSO

    L<Audio::Wav::Read>

    L<Audio::Wav::Write>

METHODS

new

Returns a blessed Audio::Wav object. All the parameters are optional and default to 0

    my %options = (
        '.01compatible'         => 0,
        'oldcooledithack'       => 0,
        'debug'                 => 0,
    );
    my $wav = Audio::Wav -> new( %options );

write

Returns a blessed Audio::Wav::Write object.

    my $details = {
        'bits_sample'   => 16,
        'sample_rate'   => 44100,
        'channels'      => 2,
    };

    my $write = $wav -> write( 'testout.wav', $details );

See Audio::Wav::Write for methods.

read

Returns a blessed Audio::Wav::Read object.

    my $read = $wav -> read( 'testout.wav' );

See Audio::Wav::Read for methods.

set_error_handler

Specifies a subroutine for catching errors. The subroutine should take a hash as input. The keys in the hash are 'filename', 'message' (error message), and 'warning'. If no error handler is set, die and warn will be used.

    sub myErrorHandler {
        my( %parameters ) = @_;
        if ( $parameters{'warning'} ) {
            # This is a non-critical warning
            warn "Warning: $parameters{'filename'}: $parameters{'message'}\n";
        } else {
            # Critical error!
            die "ERROR: $parameters{'filename'}: $parameters{'message'}\n";
        }
    }
    $wav -> set_error_handler( \&myErrorHandler );

AUTHORS

    Nick Peskett (see http://www.peskett.co.uk/ for contact details).
    Kurt George Gjerde <kurt.gjerde@media.uib.no>. (from 0.02)