#!/bin/rc
+rfork e
+nl='
+'
out=/dev/audio
typ=()
tmp=()
}
fn play1 {
- if(~ $#* 0){
+ if(! ~ $#* 2){
tmp=(/tmp/play.$pid.$#tmp.tmp $tmp)
dd -bs 8192 -count 1 >$tmp(1) >[2]/dev/null
- cat $tmp(1) /fd/0 | play1 `{file -m $tmp(1)} xxx
+ cat $tmp(1) /fd/0 | play1 $1 `{file -m $tmp(1)}
cleanup
}
if not {
- switch($1){
+ switch($2){
case *plain*
- sed 's/\r//g' | while(j=`{read}){
+ sed 's/\r//g' | while(j=`$nl{read}){
echo $"j >[1=2]
if(~ $"j http:* https:* HTTP:* HTTPS:*){
- hget -r 'Icy-MetaData: 0' $j | play1
+ hget -r 'User-Agent: play' -r 'Icy-MetaData: 0' $"j | play1 $"j
}
if not {
if(test -r $"j)
- play1 <$"j
+ play1 <$"j $"j
if not {
echo $argv0: 'can''t open file:' $"j >[1=2]
}
audio/wavdec
case *flac*
audio/flacdec
+ case *audio/basic*
+ audio/sundec
+ case *audio/midi*
+ games/midi -c
+ case *audio/mus*
+ games/mus | games/midi -c
case *pls*
- awk 'BEGIN {FS="="} /^File/{print $2}' | play1 plain
+ awk 'BEGIN {FS="="} /^File/{print $2}' | play1 list plain
case *
- echo $argv0: unknown format: $1 >[1=2]
+ switch($1){
+ case *.mp3 *.MP3
+ audio/mp3dec
+ case *.ogg *.OGG
+ audio/oggdec
+ case *.wav *.WAV
+ audio/wavdec
+ case *.flac *.FLAC
+ audio/flacdec
+ case *.au *.AU
+ audio/sundec
+ case *.mid *.MID
+ games/midi -c
+ case *.mus *.MUS
+ games/mus | games/midi -c
+ case *
+ echo $argv0: $1: unknown format: $2 >[1=2]
+ }
}
}
}
fn usage {
- echo usage: $argv0 [ -o file ] [ file ... ] >[1=2]
+ echo usage: $argv0 '[ -o file ] [ file ... ]' >[1=2]
exit usage
}
@{echo pri 13 >/proc/$pid/ctl} >/dev/null >[2=1]
>$out {
- if(~ $#* 0){play1; exit}
- for(i){echo $i} | play1 plain
+ if(~ $#* 0){play1 stdin; exit}
+ for(i){echo $"i} | play1 args plain
}