Audio::Wav::Write.3pm

Langue: en

Version: 2010-05-23 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

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,
         # if you'd like this module not to use a write cache, uncomment the next line
         #'no_cache'     => 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. If $sample is undefined then the position will be the current position (end of all data written so far).
     # $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 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
 
 

write_raw_samples

Adds some pre-packed data to the current file, returns number of samples written.
     $write -> write_raw_samples( $data, $data_length );
 
 

Where;

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

AUTHORS

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