sourCEntral - mobile manpages

pdf

Wav::Write

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

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 DOT gjerde AT media DOT uib DOT no>. (0.02-0.03)

pdf