ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Convert-CD/eg/playaudio
Revision: 1.2
Committed: Tue Jun 10 15:02:09 2003 UTC (23 years, 3 months ago) by root
Branch: MAIN
Changes since 1.1: +26 -14 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #!/usr/bin/perl
2    
3     # feeds all AUDIO tracks into sox. might work only
4     # on little-endian machines, so BEWARE!
5    
6 root 1.2 $PLAY = "trap '' INT; play -traw -r44100 -c2 -sw - >/dev/null";
7 root 1.1
8     use Convert::CD::Cue;
9    
10 root 1.2 $SIG{INT} = sub { $int++ };
11 root 1.1
12 root 1.2 print "interrupt to skip song\n";
13 root 1.1
14 root 1.2 for (@ARGV) {
15     print "reading $_\n";
16 root 1.1
17 root 1.2 my $toc = new Convert::CD::Cue path => $_;
18     my $cd = $toc->read;
19 root 1.1
20 root 1.2 open PLAY, "|-", $PLAY
21     or die "@PLAY: $!";
22 root 1.1
23 root 1.2 $| = 1;
24    
25     for my $track ($cd->track) {
26     next unless $track->{mode} eq "AUDIO";
27     print "playing ", $track->as_string, "\n";
28    
29     my $size = $track->size;
30     my $chunk = $track->{datasize};
31    
32     for (my $ofs = 0; $ofs < $size && !$int; $ofs += $chunk) {
33     my $data = $track->read ($ofs, $chunk);
34     syswrite PLAY, $data;
35     printf " %5.2f %s / %s\r", 100 * $ofs / $size,
36     $track->to_msf ($ofs), $track->to_msf ($size);
37     }
38    
39     $int = 0;
40 root 1.1 }
41     }
42    
43