blob: 29ccb3617b116683f03621f777edaf2a1756d847 [file] [log] [blame]
Guido van Rossum9ac90631992-04-22 13:47:50 +00001# Play CD audio on speaker or headphones.
2
Guido van Rossumb9506291992-04-13 18:38:20 +00003def playaudio(port, type, audio):
Guido van Rossumb9506291992-04-13 18:38:20 +00004 port.writesamps(audio)
5
Guido van Rossum60c225c1992-04-22 13:39:48 +00006def callback(arg, type, data):
7 print `type`,`data`
Guido van Rossumb9506291992-04-13 18:38:20 +00008
Guido van Rossum60c225c1992-04-22 13:39:48 +00009def triple((a, b, c)):
10 return zfill(a) + ':' + zfill(b) + ':' + zfill(c)
Guido van Rossumb9506291992-04-13 18:38:20 +000011
Guido van Rossum60c225c1992-04-22 13:39:48 +000012def zfill(n):
13 s = `n`
14 return '0' * (2 - len(s)) + s
15
16def prtrackinfo(info):
17 for i in range(len(info)):
18 start, total = info[i]
19 print 'Track', zfill(i+1), triple(start), triple(total)
20
21statedict = ['ERROR', 'NODISK', 'READY', 'PLAYING', 'PAUSED', 'STILL']
22
23def prstatus(status):
24 state, track, curtime, abstime, totaltime, first, last, \
25 scsi_audio, cur_block, dummy = status
26 print 'Status:',
27 if 0 <= state < len(statedict):
28 print statedict[state]
29 else:
30 print state
31 print 'Track: ', track
32 print 'Time: ', triple(curtime)
33 print 'Abs: ', triple(abstime)
34 print 'Total: ', triple(totaltime)
35 print 'First: ', first
36 print 'Last: ', last
37 print 'SCSI: ', scsi_audio
38 print 'Block: ', cur_block
39 print 'Future:', dummy
Guido van Rossum67aad281992-04-15 17:49:14 +000040
Guido van Rossumb9506291992-04-13 18:38:20 +000041def main():
Guido van Rossum60c225c1992-04-22 13:39:48 +000042 import sys, readcd, al, string, AL, CD
43 r = readcd.Readcd().init()
44 prstatus(r.getstatus())
45 prtrackinfo(r.gettrackinfo())
46 l = []
47 for arg in sys.argv[1:]:
48 x = eval(arg)
49 try:
50 l = len(x)
51 r.appendstretch(x[0], x[1])
52 except TypeError:
53 r.appendtrack(x)
Guido van Rossumb9506291992-04-13 18:38:20 +000054 try:
Guido van Rossum60c225c1992-04-22 13:39:48 +000055 oldparams = [AL.OUTPUT_RATE, 0]
56 params = oldparams[:]
57 al.getparams(AL.DEFAULT_DEVICE, oldparams)
58 params[1] = AL.RATE_44100
Guido van Rossumb9506291992-04-13 18:38:20 +000059 al.setparams(AL.DEFAULT_DEVICE, params)
60 config = al.newconfig()
61 config.setwidth(AL.SAMPLE_16)
62 config.setchannels(AL.STEREO)
63 port = al.openport('CD Player', 'w', config)
64
Guido van Rossum60c225c1992-04-22 13:39:48 +000065 for i in range(8):
66 r.setcallback(i, callback, None)
67 r.removecallback(CD.PTIME)
68 r.removecallback(CD.ATIME)
69 r.setcallback(CD.AUDIO, playaudio, port)
Guido van Rossumb9506291992-04-13 18:38:20 +000070
Guido van Rossum60c225c1992-04-22 13:39:48 +000071 data = r.play()
Guido van Rossumb9506291992-04-13 18:38:20 +000072 except KeyboardInterrupt:
73 pass
Guido van Rossumb9506291992-04-13 18:38:20 +000074 al.setparams(AL.DEFAULT_DEVICE, oldparams)
Guido van Rossumb9506291992-04-13 18:38:20 +000075
76main()