NAME

Audio::Tools::Time - time / sample / byte conversion tools.

DESCRIPTION

Tools for converting bytes into samples, samples into time etc.

SYNOPSIS

my $time = new Audio::Tools::Time 44100, 16, 2;
my $bytes = $time -> nice_bytes( 11025 );
my $sample = $time -> bytes_to_samples( $bytes );
my $secs = $time -> samples_to_seconds( $sample );
my( $mins, $secs, $fract_secs )
	= $time -> split_time( $secs );
my $dao_time = $time -> dao_time( $secs );

AUTHOR

Nick Peskett - nick@soup.demon.co.uk

SEE ALSO

Audio::Wav

Audio::Mix

Audio::CoolEdit

METHODS

new

Returns a blessed Audio::Tools::Time object.

my $time = new Audio::Tools::Time sample_rate, bits_per_sample, channels;

Where;

sample_rate	= number of samples per second (44100 is cd quality)
bits_per_sample	= number of bits per samples (16 is cd quality)
channels	= number of channels of sound (stereo is 2)

samples_to_bytes

Converts a sample offset to it's byte offset.

my $bytes = $time -> samples_to_bytes( $sample );

bytes_to_samples

Converts a byte offset to it's sample offset.

my $sample = $time -> bytes_to_samples( $bytes );

samples_to_seconds

Converts a sample offset to it's position as floating point seconds.

my $secs = $time -> samples_to_seconds( $sample );

bytes_to_seconds

Converts a byte offset to it's position as floating point seconds.

my $secs = $time -> bytes_to_seconds( $samples );

seconds_to_samples

Converts a position in seconds (can be floating point) to it's sample offset.

my $sample = $time -> seconds_to_samples( $secs );

seconds_to_bytes

Converts a position in seconds (can be floating point) to it's byte offset.

my $sample = $time -> seconds_to_bytes( $secs );

nice_bytes

Rounds down a byte offset to a appropriate byte offset for the current settings.

$bytes = $time -> nice_bytes( $bytes );

split_time

Converts a floating point seconds position to minutes, seconds & fractional seconds.

my( $mins, $secs, $fract_secs )
	= $time -> split_time( $secs );

dao_time

Converts a floating point seconds position to a string containing the format used by disk-at-once & CDRWin. (http://www.goldenhawk.com)

my $dao_time = $time -> dao_time( $secs );

nice_time

Converts a floating point seconds position into a string that verbosely describes the time. If $terse is true then the output will only show the most significant value (to one decimal place if hour or minute).

print $time -> nice_time( 90 );
# returns "1 min, 30 secs"
print $time -> nice_time( 90, 1 );
# returns "1.5 mins"

dao_cue_file

Writes a cue file in the format used by disk-at-once & CDRWin. (http://www.goldenhawk.com)

$time -> dao_cue_file( $breaks, './audio.wav', './output.cue' );

Where $breaks is a reference to an array of byte offsets.

block_align

Returns the current block alignment, ie 44.1khz 16 bit stereo: 1 sample = 4 bytes

my block_align = $time -> block_align();