ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Convert-CD/eg/playaudio
Revision: 1.3
Committed: Tue Jun 10 20:47:14 2003 UTC (23 years, 3 months ago) by root
Branch: MAIN
Changes since 1.2: +2 -1 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 root 1.3 use Convert::CD::Track;
9 root 1.1 use Convert::CD::Cue;
10    
11 root 1.2 $SIG{INT} = sub { $int++ };
12 root 1.1
13 root 1.2 print "interrupt to skip song\n";
14 root 1.1
15 root 1.2 for (@ARGV) {
16     print "reading $_\n";
17 root 1.1
18 root 1.2 my $toc = new Convert::CD::Cue path => $_;
19     my $cd = $toc->read;
20 root 1.1
21 root 1.2 open PLAY, "|-", $PLAY
22     or die "@PLAY: $!";
23 root 1.1
24 root 1.2 $| = 1;
25    
26     for my $track ($cd->track) {
27 root 1.3 next unless $track->{mode} == MODE_AUDIO;
28 root 1.2 print "playing ", $track->as_string, "\n";
29    
30     my $size = $track->size;
31     my $chunk = $track->{datasize};
32    
33     for (my $ofs = 0; $ofs < $size && !$int; $ofs += $chunk) {
34     my $data = $track->read ($ofs, $chunk);
35     syswrite PLAY, $data;
36     printf " %5.2f %s / %s\r", 100 * $ofs / $size,
37     $track->to_msf ($ofs), $track->to_msf ($size);
38     }
39    
40     $int = 0;
41 root 1.1 }
42     }
43    
44