Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6c6b609

Browse files
committed
Improved functionality, by Sjoerd
1 parent 05b55e7 commit 6c6b609

1 file changed

Lines changed: 32 additions & 6 deletions

File tree

Demo/sgi/cd/playcd.py

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,21 @@
11
# Play CD audio on speaker or headphones.
22

3+
callbacktypes = ['audio','pnum','index','ptime','atime','catalog','ident','control']
4+
35
def playaudio(port, type, audio):
46
port.writesamps(audio)
57

8+
def prtrack(cdinfo, type, pnum):
9+
if cdinfo.track[pnum] <> '':
10+
print 'playing "' + cdinfo.track[pnum] + '"'
11+
else:
12+
print callbacktypes[type]+': '+`pnum`
13+
614
def callback(arg, type, data):
7-
print `type`,`data`
15+
print callbacktypes[type]+': '+`data`
16+
17+
def tcallback(arg, type, data):
18+
print callbacktypes[type]+': '+triple(data)
819

920
def triple((a, b, c)):
1021
return zfill(a) + ':' + zfill(b) + ':' + zfill(c)
@@ -39,12 +50,20 @@ def prstatus(status):
3950
print 'Future:', dummy
4051

4152
def main():
42-
import sys, readcd, al, string, AL, CD
53+
import sys, readcd, al, AL, CD, cdplayer
54+
verbose = 0
4355
r = readcd.Readcd().init()
4456
prstatus(r.getstatus())
4557
prtrackinfo(r.gettrackinfo())
46-
l = []
58+
cdinfo = cdplayer.Cdplayer().init(r.gettrackinfo())
59+
if cdinfo.title <> '':
60+
print 'Title: "' + cdinfo.title + '"'
61+
if cdinfo.artist <> '':
62+
print 'Artist: ' + cdinfo.artist
4763
for arg in sys.argv[1:]:
64+
if arg == '-v':
65+
verbose = 1
66+
continue
4867
x = eval(arg)
4968
try:
5069
l = len(x)
@@ -64,13 +83,20 @@ def main():
6483

6584
for i in range(8):
6685
r.setcallback(i, callback, None)
67-
r.removecallback(CD.PTIME)
68-
r.removecallback(CD.ATIME)
86+
if verbose:
87+
r.setcallback(CD.PTIME, tcallback, None)
88+
r.setcallback(CD.ATIME, tcallback, None)
89+
else:
90+
r.removecallback(CD.PTIME)
91+
r.removecallback(CD.ATIME)
92+
r.setcallback(CD.PNUM, prtrack, cdinfo)
6993
r.setcallback(CD.AUDIO, playaudio, port)
7094

7195
data = r.play()
7296
except KeyboardInterrupt:
73-
pass
97+
status = r.getstatus()
98+
print 'Interrupted at '+triple(status[2])+' into track '+ \
99+
`status[1]`+' (absolute time '+triple(status[3])+')'
74100
al.setparams(AL.DEFAULT_DEVICE, oldparams)
75101

76102
main()

0 commit comments

Comments
 (0)