The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Audio::RaveMP - Perl interface to Sensory Science RaveMP player

SYNOPSIS

  use Audio::RaveMP ();

DESCRIPTION

The Audio::RaveMP module provides a Perl interface to the Sensory Science RaveMP player.

METHODS

new
 my $rmp = Audio::RaveMP->new;
permitted

Check parallel port permissions (must be root at the moment):

 unless ($rmp->permitted) {
     print "$!\n";
     exit 1;
 }
is_ready

Check that RaveMP is connected and powered up:

 unless ($rmp->is_ready) {
      print "Device is not ready (not connected or powered up?)\n";
      exit 2;
 }
show_status

Show status messages:

 $rmp->show_status(1);

 $rmp->show_status(0);
upload

Upload a file. The second argument is the name to upload to, which is optional and defaults to the upload name:

 unless ($rmp->upload("we_eat_rhythm.mp3")) {
      print "upload failed\n";
 }

 unless ($rmp->upload("we_eat_rhythm.mp3", "We Eat Rhythm")) {
      print "upload failed\n";
 }
remove

Remove a file specified by the give slot number:

 unless ($rmp->remove(8)) {
     print "unable to remove file at slot 8\n";
 }
download

Download the file specified by the give slot number. The last argument is the name of the destination file, which is optional and defaults to the name of the downloaded file:

 unless ($rmp->download("we_eat_rhythm.mp3")) {
      print "download failed\n";
 }

 unless ($rmp->download("We Eat Rhythm", "we_eat_rhythm.mp3")) {
      print "download failed\n";
 }
contents

Return an array reference of file contents in the player. Each element is an object blessed into the Audio::RaveMPSlot class:

 my $contents = $rmp->contents;
 for my $slot (@$contents) {
     printf "%d, %s -> %s\n", 
            $slot->number, $slot->type, $slot->filename;
 }

The Audio::RaveMPSlot Class

number

The slot number:

 my $number = $slot->number;
type

The file type:

 my $type = $slot->type;
filename

The filename:

 my $filename = $slot->filename;
remove

Remove file in the given slot:

 $slot->remove;
download

Download the file in the given slot:

 $slot->download;

Audio::RaveMPServer

Access to the parallel port requires root permissions. To "minimize risk", a client/server package is included where the server runs as root and client runs as any user. Access to the server is restricted to the loopback address (127.0.0.1). To use the server you must install the PlRPC and Net::Daemon packages from CPAN. To start the server:

 % sudo perl -MAudio::RaveMPServer -s start

The same client API is used to talk to the server, the name is simply changed from Audio::RaveMP to Audio::RaveMPClient:

 use Audio::RaveMPClient ();
 my $rmp = Audio::RaveMPClient->new;

Xmms::shell plugin

To enable the Xmms::shell plugin, add the following line to your ~/.xmms/.perlrc:

 +require Audio::RaveMP

The following commands become available in the shell:

ravemp_track

List mp3 files in the player:

 xmms> ravemp_track
ravemp_upload

Upload files:

 xmms> ravemp_upload /usr/local/mp3/prodigy/what_evil_lurks/*.mp3
ravemp_download

Download files specified by slot or filename:

 xmms> ravemp_download rythm_of_life.mp3.mp3 ~/mp3/
ravemp_delete

Remove files from the player specified by slot or filename:

 xmms> ravemp_delete rythm_of_life.mp3

To remove all files from the player:

 xmms> ravemp_delete all

SEE ALSO

Xmms(3)

AUTHOR

Doug MacEachern

ravemp.c derived from "ravemp-0.0.2" by: The Snowblind Alliance: http://www.world.co.uk/sba/