Guido van Rossum | b950629 | 1992-04-13 18:38:20 +0000 | [diff] [blame] | 1 | def playaudio(port, type, audio): |
Guido van Rossum | b950629 | 1992-04-13 18:38:20 +0000 | [diff] [blame] | 2 | port.writesamps(audio) |
| 3 | |
Guido van Rossum | 60c225c | 1992-04-22 13:39:48 +0000 | [diff] [blame^] | 4 | def callback(arg, type, data): |
| 5 | print `type`,`data` |
Guido van Rossum | b950629 | 1992-04-13 18:38:20 +0000 | [diff] [blame] | 6 | |
Guido van Rossum | 60c225c | 1992-04-22 13:39:48 +0000 | [diff] [blame^] | 7 | def triple((a, b, c)): |
| 8 | return zfill(a) + ':' + zfill(b) + ':' + zfill(c) |
Guido van Rossum | b950629 | 1992-04-13 18:38:20 +0000 | [diff] [blame] | 9 | |
Guido van Rossum | 60c225c | 1992-04-22 13:39:48 +0000 | [diff] [blame^] | 10 | def zfill(n): |
| 11 | s = `n` |
| 12 | return '0' * (2 - len(s)) + s |
| 13 | |
| 14 | def 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 | |
| 19 | statedict = ['ERROR', 'NODISK', 'READY', 'PLAYING', 'PAUSED', 'STILL'] |
| 20 | |
| 21 | def 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 Rossum | 67aad28 | 1992-04-15 17:49:14 +0000 | [diff] [blame] | 38 | |
Guido van Rossum | b950629 | 1992-04-13 18:38:20 +0000 | [diff] [blame] | 39 | def main(): |
Guido van Rossum | 60c225c | 1992-04-22 13:39:48 +0000 | [diff] [blame^] | 40 | 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 Rossum | b950629 | 1992-04-13 18:38:20 +0000 | [diff] [blame] | 52 | try: |
Guido van Rossum | 60c225c | 1992-04-22 13:39:48 +0000 | [diff] [blame^] | 53 | oldparams = [AL.OUTPUT_RATE, 0] |
| 54 | params = oldparams[:] |
| 55 | al.getparams(AL.DEFAULT_DEVICE, oldparams) |
| 56 | params[1] = AL.RATE_44100 |
Guido van Rossum | b950629 | 1992-04-13 18:38:20 +0000 | [diff] [blame] | 57 | 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 Rossum | 60c225c | 1992-04-22 13:39:48 +0000 | [diff] [blame^] | 63 | 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 Rossum | b950629 | 1992-04-13 18:38:20 +0000 | [diff] [blame] | 68 | |
Guido van Rossum | 60c225c | 1992-04-22 13:39:48 +0000 | [diff] [blame^] | 69 | data = r.play() |
Guido van Rossum | b950629 | 1992-04-13 18:38:20 +0000 | [diff] [blame] | 70 | except KeyboardInterrupt: |
| 71 | pass |
Guido van Rossum | b950629 | 1992-04-13 18:38:20 +0000 | [diff] [blame] | 72 | al.setparams(AL.DEFAULT_DEVICE, oldparams) |
Guido van Rossum | 60c225c | 1992-04-22 13:39:48 +0000 | [diff] [blame^] | 73 | r.player.close() |
| 74 | r.parser.deleteparser() |
Guido van Rossum | b950629 | 1992-04-13 18:38:20 +0000 | [diff] [blame] | 75 | |
| 76 | main() |