Improved functionality, by Sjoerd
This commit is contained in:
parent
05b55e76f0
commit
6c6b6094fc
|
@ -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()
|
||||||
|
|
Loading…
Reference in New Issue