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 - 1;
	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
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 datawrite_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 dataAUTHORS
Nick Peskett (see http://www.peskett.co.uk/ for contact details).
Kurt George Gjerde <kurt.gjerde@media.uib.no>. (0.02-0.03)