| 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 |
|
|
$PLAY = "play -traw -r44100 -c2 -sw - >/dev/null"; |
| 7 |
|
|
|
| 8 |
|
|
use Convert::CD::Cue; |
| 9 |
|
|
|
| 10 |
|
|
my $toc = new Convert::CD::Cue path => $ARGV[0]; |
| 11 |
|
|
my $cd = $toc->read; |
| 12 |
|
|
|
| 13 |
|
|
open PLAY, "|-", $PLAY |
| 14 |
|
|
or die "@PLAY: $!"; |
| 15 |
|
|
|
| 16 |
|
|
$| = 1; |
| 17 |
|
|
|
| 18 |
|
|
for my $track ($cd->track) { |
| 19 |
|
|
next unless $track->{mode} eq "AUDIO"; |
| 20 |
|
|
print "playing ", $track->as_string, "\n"; |
| 21 |
|
|
|
| 22 |
|
|
my $size = $track->size; |
| 23 |
|
|
|
| 24 |
|
|
for (my $ofs = 0; $ofs < $size; $ofs += $track->{datasize} * 16) { |
| 25 |
|
|
my $data = $track->read ($ofs, $track->{datasize} * 16); |
| 26 |
|
|
syswrite PLAY, $data; |
| 27 |
|
|
printf "\r%03.2f", $ofs / $size; |
| 28 |
|
|
} |
| 29 |
|
|
} |
| 30 |
|
|
|
| 31 |
|
|
|