---
name: "Audio::CD"
section: "3pm"
platform: "linux"
package: "libaudio-cd-perl"
version: "0.05-13+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Audio::CD"
---

# Audio::CD(3pm)

Perl interface to libcdaudio (cd + cddb)

## 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

- init

  Initialize the Audio::CD object:

  ```
   my $cd = Audio::CD->init;
  ```

- stat

  Stat the *Audio::CD* object, returns an *Audio::CD::Info* object.

  ```
   my $info = $cd->stat;
  ```

- cddb

  Returns an *Audio::CDDB* object.

  ```
   my $cddb = $cd->cddb;
  ```

- play

  Play the given cd track (defaults to 1).

  ```
   $cd->play(1);
  ```

- stop

  Stop the cd.

  ```
   $cd->stop;
  ```

- pause

  Pause the cd.

  ```
   $cd->pause;
  ```

- resume

  Resume the cd.

  ```
   $cd->resume;
  ```

- eject

  Eject the cd.

  ```
   $cd->eject;
  ```

- close

  Close the cd tray.

  ```
   $cd->close;
  ```

- play\_frames

  ```
   $cd->play_frames($startframe, $endframe);
  ```

- play\_track\_pos

  ```
   $cd->play_track_pos($strarttrack, $endtrack, $startpos);
  ```

- play\_track

  ```
   $cd->play_track($strarttrack, $endtrack);
  ```

- track\_advance

  ```
   $cd->track_advance($endtrack, $minutes, $seconds);
  ```

- advance

  ```
   $cd->advance($minutes, $seconds);
  ```

- get\_volume

  Returns an *Audio::CD::Volume* object.

  ```
   my $vol = $cd->get_volume;
  ```

- set\_volume

  ```
   $cd->set_volume($vol);
  ```

## Audio::CDDB Class

- discid

  ```
   my $id = $cddb->discid;
  ```

- lookup

  Does a cddb lookup and returns an *Audio::CD::Data* object.

  ```
   my $data = $cddb->lookup;
  ```

## Audio::CD::Data Class

- artist

  ```
   my $artist = $data->artist;
  ```

- title

  ```
   my $title = $data->title;
  ```

- genre

  ```
   my $genre = $data->genre;
  ```

- tracks

  Returns an array reference of *Audio::CD::Track* objects.

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

## Audio::CD::Track Class

- name

  ```
   my $name = $track->name;
  ```

## Audio::CD::Info Class

- mode

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

  ```
   my $track = $info->mode;
   print "playing" if $info->mode == Audio::CD::PLAYING;
  ```

- present

  Returns true if a disc is present.

  ```
   $cd->play if $info->present;
  ```

- current\_track

  Returns the current track number being played or paused.

  ```
   my $track = $info->current_track;
  ```

- first\_track

  Returns the number of the first track on the CD.

  ```
   my $track = $info->first_track;
  ```

- total\_tracks

  Returns the total number of tracks on the cd.

  ```
   my $track = $info->total_tracks;
  ```

- track\_time

  Returns the current track play time:

  ```
   my($minutes, $seconds) = $info->track_time;
  ```

- time

  Returns the current disc play time:

  ```
   my($minutes, $seconds) = $info->time;
  ```

- length

  Returns the disc length time:

  ```
   my($minutes, $seconds) = $info->length;
  ```

- tracks

  Returns an array reference of *Audio::CD::Info::Track* objects.

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

## Audio::CD::Info::Track Class

- length

  Returns the track length time:

  ```
   my($minutes, $seconds) = $tinfo->length;
  ```

- pos

  Returns the track position on the CD:

  ```
   my($minutes, $seconds) = $tinfo->pos;
  ```

- type

  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";
   }
  ```

- is\_audio

  Returns true if the track is an audio track; equivalent to the test:

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

- is\_data

  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
