Improved functionality, by Sjoerd

This commit is contained in:
Guido van Rossum 1992-06-03 16:49:29 +00:00
parent 05b55e76f0
commit 6c6b6094fc
1 changed files with 32 additions and 6 deletions

View File

@ -1,10 +1,21 @@
# Play CD audio on speaker or headphones. # Play CD audio on speaker or headphones.
callbacktypes = ['audio','pnum','index','ptime','atime','catalog','ident','control']
def playaudio(port, type, audio): def playaudio(port, type, audio):
port.writesamps(audio) port.writesamps(audio)
def prtrack(cdinfo, type, pnum):
if cdinfo.track[pnum] <> '':
print 'playing "' + cdinfo.track[pnum] + '"'
else:
print callbacktypes[type]+': '+`pnum`
def callback(arg, type, data): def callback(arg, type, data):
print `type`,`data` print callbacktypes[type]+': '+`data`
def tcallback(arg, type, data):
print callbacktypes[type]+': '+triple(data)
def triple((a, b, c)): def triple((a, b, c)):
return zfill(a) + ':' + zfill(b) + ':' + zfill(c) return zfill(a) + ':' + zfill(b) + ':' + zfill(c)
@ -39,12 +50,20 @@ def prstatus(status):
print 'Future:', dummy print 'Future:', dummy
def main(): def main():
import sys, readcd, al, string, AL, CD import sys, readcd, al, AL, CD, cdplayer
verbose = 0
r = readcd.Readcd().init() r = readcd.Readcd().init()
prstatus(r.getstatus()) prstatus(r.getstatus())
prtrackinfo(r.gettrackinfo()) prtrackinfo(r.gettrackinfo())
l = [] cdinfo = cdplayer.Cdplayer().init(r.gettrackinfo())
if cdinfo.title <> '':
print 'Title: "' + cdinfo.title + '"'
if cdinfo.artist <> '':
print 'Artist: ' + cdinfo.artist
for arg in sys.argv[1:]: for arg in sys.argv[1:]:
if arg == '-v':
verbose = 1
continue
x = eval(arg) x = eval(arg)
try: try:
l = len(x) l = len(x)
@ -64,13 +83,20 @@ def main():
for i in range(8): for i in range(8):
r.setcallback(i, callback, None) r.setcallback(i, callback, None)
r.removecallback(CD.PTIME) if verbose:
r.removecallback(CD.ATIME) r.setcallback(CD.PTIME, tcallback, None)
r.setcallback(CD.ATIME, tcallback, None)
else:
r.removecallback(CD.PTIME)
r.removecallback(CD.ATIME)
r.setcallback(CD.PNUM, prtrack, cdinfo)
r.setcallback(CD.AUDIO, playaudio, port) r.setcallback(CD.AUDIO, playaudio, port)
data = r.play() data = r.play()
except KeyboardInterrupt: except KeyboardInterrupt:
pass status = r.getstatus()
print 'Interrupted at '+triple(status[2])+' into track '+ \
`status[1]`+' (absolute time '+triple(status[3])+')'
al.setparams(AL.DEFAULT_DEVICE, oldparams) al.setparams(AL.DEFAULT_DEVICE, oldparams)
main() main()