Scroll to navigation

CD(3pm) User Contributed Perl Documentation CD(3pm)

NAME

Audio::CD - Perl interface to libcdaudio (cd + cddb)

SYNOPSIS

  use Audio::CD ();
  my $cd = Audio::CD->init;

DESCRIPTION

Audio::CD provides a Perl interface to libcdaudio by Tony Arcieri, available from http://cdcd.undergrid.net/

Several classes provide glue for the libcdaudio functions and data structures.

Audio::CD Class

Initialize the Audio::CD object:

 my $cd = Audio::CD->init;
    
Stat the Audio::CD object, returns an Audio::CD::Info object.

 my $info = $cd->stat;
    
Returns an Audio::CDDB object.

 my $cddb = $cd->cddb;
    
Play the given cd track (defaults to 1).

 $cd->play(1);
    
Stop the cd.

 $cd->stop;
    
Pause the cd.

 $cd->pause;
    
Resume the cd.

 $cd->resume;
    
Eject the cd.

 $cd->eject;
    
Close the cd tray.

 $cd->close;
    
 $cd->play_frames($startframe, $endframe);
    
 $cd->play_track_pos($strarttrack, $endtrack, $startpos);
    
 $cd->play_track($strarttrack, $endtrack);
    
 $cd->track_advance($endtrack, $minutes, $seconds);
    
 $cd->advance($minutes, $seconds);
    
Returns an Audio::CD::Volume object.

 my $vol = $cd->get_volume;
    
 $cd->set_volume($vol);
    

Audio::CDDB Class

 my $id = $cddb->discid;
    
Does a cddb lookup and returns an Audio::CD::Data object.

 my $data = $cddb->lookup;
    

Audio::CD::Data Class

 my $artist = $data->artist;
    
 my $title = $data->title;
    
 my $genre = $data->genre;
    
Returns an array reference of Audio::CD::Track objects.

 my $foo = $data->tracks($info);
 my @tracks = @$foo;
    

Audio::CD::Track Class

 my $name = $track->name;
    

Audio::CD::Info Class

Returns the CD mode, one of PLAYING, PAUSED, COMPLETED, NOSTATUS;

 my $track = $info->mode;
 print "playing" if $info->mode == Audio::CD::PLAYING;
    
Returns true if a disc is present.

 $cd->play if $info->present;
    
Returns the current track number being played or paused.

 my $track = $info->current_track;
    
Returns the number of the first track on the CD.

 my $track = $info->first_track;
    
Returns the total number of tracks on the cd.

 my $track = $info->total_tracks;
    
Returns the current track play time:

 my($minutes, $seconds) = $info->track_time;
    
Returns the current disc play time:

 my($minutes, $seconds) = $info->time;
    
Returns the disc length time:

 my($minutes, $seconds) = $info->length;
    
Returns an array reference of Audio::CD::Info::Track objects.

 my $foo = $info->tracks;
 my @tracks = @$foo;
    

Audio::CD::Info::Track Class

Returns the track length time:

 my($minutes, $seconds) = $tinfo->length;
    
Returns the track position on the CD:

 my($minutes, $seconds) = $tinfo->pos;
    
Returns the track type (either TRACK_AUDIO or TRACK_DATA):

 if ($tinfo->type == Audio::CD::TRACK_AUDIO) {
   print "audio track\n";
 } elsif ($tinfo->type == Audio::CD::TRACK_DATA) {
   print "data track\n";
 }
    
Returns true if the track is an audio track; equivalent to the test:

 $tinfo->type == Audio::CD::TRACK_AUDIO ? 1 : 0
    
Returns true if the track is a data track; equivalent to the test:

 $tinfo->type == Audio::CD::TRACK_DATA ? 1 : 0
    

SEE ALSO

Xmms(3)

AUTHOR

Perl interface by Doug MacEachern

libcdaudio and cddb_lookup.c by Tony Arcieri

2024-10-14 perl v5.40.0