man Audio::Wav::Write () - Module for writing Microsoft WAV files.
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 CW$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 CW@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>. (from 0.02)