The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Audio::Wav::Read - Module for reading Microsoft Wav files.

SYNOPSIS

        use Audio::Wav;
        my $wav = new Audio::Wav;
        my $read = $wav -> read( 'filename.wav' );
        my $details = $read -> details();

DESCRIPTION

Reads Microsoft Wav files.

AUTHOR

Nick Peskett - nick@soup.demon.co.uk

SEE ALSO

Audio::Wav

Audio::Wav::Write

NOTES

This module shouldn't be used directly, a blessed object can be returned from Audio::Wav.

METHODS

file_name

Returns the file name.

        my $file = $read -> file_name();

get_info

Returns information contained within the wav file.

        my $info = $read -> get_info();

Returns a reference to a hash containing; (for example, a file marked up for use in Audio::Mix)

        {
          keywords => 'bpm:126 key:a',
          name => 'Mission Venice',
          artist => 'Nightmares on Wax'
        };

get_cues

Returns the cuepoints marked within the wav file.

        my $cues = $read -> get_cues();

Returns a reference to a hash containing; (for example, a file marked up for use in Audio::Mix) (position is byte offset)

        {
          1 => {
                 label => 'sig',
                 position => 764343,
                 note => 'first'
               },
          2 => {
                 label => 'fade_in',
                 position => 1661774,
                 note => 'trig'
               },
          3 => {
                 label => 'sig',
                 position => 18033735,
                 note => 'last'
               },
          4 => {
                 label => 'fade_out',
                 position => 17145150,
                 note => 'trig'
               },
          5 => {
                 label => 'end',
                 position => 18271676
               }
        }

read_raw

Reads raw packed bytes from the current audio data position in the file.

        my $data = $self -> read_raw( $byte_length );

read

Returns the current audio data position sample across all channels.

        my @channels = $self -> read();

Returns an array of unpacked samples. Each element is a channel i.e ( left, right ). The numbers will be in the range;

        where $samp_max = ( 2 ** bits_per_sample ) / 2
        -$samp_max to +$samp_max

position

Returns the current audio data position (as byte offset).

        my $byte_offset = $read -> position();

move_to

Moves the current audio data position to byte offset.

        $read -> move_to( $byte_offset );

length

Returns the number of bytes of audio data in the file.

        my $audio_bytes = $read -> length();

details

Returns a reference to a hash of lots of details about the file. Too many to list here, try it with Data::Dumper.....

        use Data::Dumper;
        my $details = $read -> details();
        print Data::Dumper->Dump([ $details ]);