Wav::Write

Section: User Contributed Perl Documentation (3)
Updated: 2001-08-25
 

NAME

Audio::Wav::Write - Module for writing Microsoft WAV files.  

SYNOPSIS

    use Audio::Wav;

    my $wav = new Audio::Wav;

    my $sample_rate = 44100;
    my $bits_sample = 16;

    my $details = {
                    'bits_sample'       => $bits_sample,
                    'sample_rate'       => $sample_rate,
                    'channels'          => 1,
                  };

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

    &add_sine( 200, 1 );

    sub add_sine {
        my $hz = shift;
        my $length = shift;
        my $pi = ( 22 / 7 ) * 2;
        $length *= $sample_rate;
        my $max_no =  ( 2 ** $bits_sample ) / 2;
        for my $pos ( 0 .. $length ) {
            $time = $pos / $sample_rate;
            $time *= $hz;
            my $val = sin $pi * $time;
            my $samp = $val * $max_no;
            $write -> write( $samp );
        }
    }

    $write -> finish();

 

DESCRIPTION

Currently only writes to a file.  

SEE ALSO

Audio::Wav

Audio::Wav::Read  

NOTES

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

METHODS

 

finish

Finishes off & closes the current wav file.

    $write -> finish();

 

add_cue

Adds a cue point to the wav file.

    # $byte_offset for 01 compatibility mode
    $write -> add_cue( $sample, "label", "note"  );

 

set_sampler_info

All parameters are optional.

    my %info = (
                'midi_pitch_fraction'   => 0,
                'smpte_format'          => 0,
                'smpte_offset'          => 0,
                'product'               => 0,
                'sample_period'         => 0,
                'manufacturer'          => 0,
                'sample_data'           => 0,
                'midi_unity_note'       => 65,
               );
    $write -> set_sampler_info( %info );

 

add_sampler_loop

All parameters are optional except start & end.

    my $length = $read -> length_samples();
    my( $third, $twothirds ) = map int( $length / $_ ), ( 3, 1.5 );
    my %loop = (
                'start'                 => $third,
                'end'                   => $twothirds,
                'fraction'              => 0,
                'type'                  => 0,
               );
    $write -> add_sampler_loop( %loop );

 

add_display

 

set_info

Sets information to be contained in the wav file.

    $write -> set_info( 'artist' => 'Nightmares on Wax', 'name' => 'Mission Venice' );

 

file_name

Returns the current filename.

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

 

write

Adds a sample to the current file.

    $write -> write( @sample_channels );

Each element in @sample_channels should be in the range of;

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

 

write_raw

Adds a some pre-packed data to the current file.

    $write -> write_raw( $data, $data_length );

Where;

    $data is the packed data
    $data_length (optional) is the length in bytes of the data

 

AUTHORS

    Nick Peskett <cpan@peskett.com>.
    Kurt George Gjerde <kurt.gjerde@media.uib.no>. (0.02)


 

Index

NAME
SYNOPSIS
DESCRIPTION
SEE ALSO
NOTES
METHODS
finish
add_cue
set_sampler_info
add_sampler_loop
add_display
set_info
file_name
write
write_raw
AUTHORS
blog comments powered by Disqus