blob: dc38ed91587acffdb9c62a2b339b0189b22edd88 [file] [log] [blame]
Guido van Rossumb9506291992-04-13 18:38:20 +00001def playaudio(port, type, audio):
Guido van Rossumb9506291992-04-13 18:38:20 +00002 port.writesamps(audio)
3
Guido van Rossum60c225c1992-04-22 13:39:48 +00004def callback(arg, type, data):
5 print `type`,`data`
Guido van Rossumb9506291992-04-13 18:38:20 +00006
Guido van Rossum60c225c1992-04-22 13:39:48 +00007def triple((a, b, c)):
8 return zfill(a) + ':' + zfill(b) + ':' + zfill(c)
Guido van Rossumb9506291992-04-13 18:38:20 +00009
Guido van Rossum60c225c1992-04-22 13:39:48 +000010def zfill(n):
11 s = `n`
12 return '0' * (2 - len(s)) + s
13
14def prtrackinfo(info):
15 for i in range(len(info)):
16 start, total = info[i]
17 print 'Track', zfill(i+1), triple(start), triple(total)
18
19statedict = ['ERROR', 'NODISK', 'READY', 'PLAYING', 'PAUSED', 'STILL']
20
21def prstatus(status):
22 state, track, curtime, abstime, totaltime, first, last, \
23 scsi_audio, cur_block, dummy = status
24 print 'Status:',
25 if 0 <= state < len(statedict):
26 print statedict[state]
27 else:
28 print state
29 print 'Track: ', track
30 print 'Time: ', triple(curtime)
31 print 'Abs: ', triple(abstime)
32 print 'Total: ', triple(totaltime)
33 print 'First: ', first
34 print 'Last: ', last
35 print 'SCSI: ', scsi_audio
36 print 'Block: ', cur_block
37 print 'Future:', dummy
Guido van Rossum67aad281992-04-15 17:49:14 +000038
Guido van Rossumb9506291992-04-13 18:38:20 +000039def main():
Guido van Rossum60c225c1992-04-22 13:39:48 +000040 import sys, readcd, al, string, AL, CD
41 r = readcd.Readcd().init()
42 prstatus(r.getstatus())
43 prtrackinfo(r.gettrackinfo())
44 l = []
45 for arg in sys.argv[1:]:
46 x = eval(arg)
47 try:
48 l = len(x)
49 r.appendstretch(x[0], x[1])
50 except TypeError:
51 r.appendtrack(x)
Guido van Rossumb9506291992-04-13 18:38:20 +000052 try:
Guido van Rossum60c225c1992-04-22 13:39:48 +000053 oldparams = [AL.OUTPUT_RATE, 0]
54 params = oldparams[:]
55 al.getparams(AL.DEFAULT_DEVICE, oldparams)
56 params[1] = AL.RATE_44100
Guido van Rossumb9506291992-04-13 18:38:20 +000057 al.setparams(AL.DEFAULT_DEVICE, params)
58 config = al.newconfig()
59 config.setwidth(AL.SAMPLE_16)
60 config.setchannels(AL.STEREO)
61 port = al.openport('CD Player', 'w', config)
62
Guido van Rossum60c225c1992-04-22 13:39:48 +000063 for i in range(8):
64 r.setcallback(i, callback, None)
65 r.removecallback(CD.PTIME)
66 r.removecallback(CD.ATIME)
67 r.setcallback(CD.AUDIO, playaudio, port)
Guido van Rossumb9506291992-04-13 18:38:20 +000068
Guido van Rossum60c225c1992-04-22 13:39:48 +000069 data = r.play()
Guido van Rossumb9506291992-04-13 18:38:20 +000070 except KeyboardInterrupt:
71 pass
Guido van Rossumb9506291992-04-13 18:38:20 +000072 al.setparams(AL.DEFAULT_DEVICE, oldparams)
Guido van Rossum60c225c1992-04-22 13:39:48 +000073 r.player.close()
74 r.parser.deleteparser()
Guido van Rossumb9506291992-04-13 18:38:20 +000075
76main()