Guido van Rossum | f8b7e92 | 1992-04-15 17:52:27 +0000 | [diff] [blame] | 1 | # Dump CD audio on disk (in AIFF format; stereo, 16 bit samples, 44.1 kHz). |
| 2 | # |
| 3 | # Each argument is either a track to play or a quoted 7-tuple: |
| 4 | # '(track, min1, sec1, frame1, min2, sec2, frame2)' |
| 5 | # to play the track from min1:sec1:frame1 to min2:sec2:frame2. |
| 6 | # If track is zero, times are absolute instead. |
| 7 | |
| 8 | import sys |
| 9 | import string |
| 10 | import readcd |
| 11 | import aiff |
| 12 | import AL |
| 13 | import CD |
| 14 | |
| 15 | def writeaudio(a, type, data): |
| 16 | a.writesampsraw(data) |
| 17 | |
| 18 | def ptimecallback(a, type, (min, sec, frame)): |
| 19 | if frame == 0: |
| 20 | print 'T =', min, ':', sec |
| 21 | |
| 22 | def main(): |
| 23 | a = aiff.Aiff().init(sys.argv[1], 'w') |
| 24 | a.sampwidth = AL.SAMPLE_16 |
| 25 | a.nchannels = AL.STEREO |
| 26 | a.samprate = AL.RATE_44100 |
Guido van Rossum | d9feb59 | 1992-04-22 13:39:10 +0000 | [diff] [blame^] | 27 | r = readcd.Readcd().init() |
Guido van Rossum | f8b7e92 | 1992-04-15 17:52:27 +0000 | [diff] [blame] | 28 | l = [] |
| 29 | for arg in sys.argv[2:]: |
Guido van Rossum | d9feb59 | 1992-04-22 13:39:10 +0000 | [diff] [blame^] | 30 | x = eval(arg) |
| 31 | try: |
| 32 | l = len(x) |
| 33 | r.appendstretch(x[0], x[1]) |
| 34 | except TypeError: |
| 35 | r.appendtrack(x) |
Guido van Rossum | f8b7e92 | 1992-04-15 17:52:27 +0000 | [diff] [blame] | 36 | r.setcallback(CD.AUDIO, writeaudio, a) |
| 37 | r.setcallback(CD.PTIME, ptimecallback, None) |
Guido van Rossum | d9feb59 | 1992-04-22 13:39:10 +0000 | [diff] [blame^] | 38 | try: |
| 39 | r.play() |
| 40 | except KeyboardInterrupt: |
| 41 | pass |
Guido van Rossum | f8b7e92 | 1992-04-15 17:52:27 +0000 | [diff] [blame] | 42 | a.destroy() |
| 43 | |
| 44 | main() |