blob: 68a6a31bbbbffb81e553da0c6455d41f802d7197 [file] [log] [blame]
Guido van Rossumf06ee5f1996-11-27 19:52:01 +00001#! /usr/bin/env python
Guido van Rossum715a6531992-03-30 11:39:53 +00002
3import sys
4import audio
5
6import string
7import getopt
8import auds
9
10debug = []
11
12DEF_RATE = 3
13
14def main():
15 #
16 gain = 100
17 rate = 0
18 starter = audio.write
19 stopper = 0
20 #
21 optlist, args = getopt.getopt(sys.argv[1:], 'adg:r:')
22 #
23 for optname, optarg in optlist:
24 if 0:
25 pass
26 elif optname == '-d':
27 debug.append(1)
28 elif optname == '-g':
29 gain = string.atoi(optarg)
30 if not (0 < gain < 256):
31 raise optarg.error, '-g gain out of range'
32 elif optname == '-r':
33 rate = string.atoi(optarg)
34 if not (1 <= rate <= 3):
35 raise optarg.error, '-r rate out of range'
36 elif optname == '-a':
37 starter = audio.start_playing
38 stopper = audio.wait_playing
39 #
40 audio.setoutgain(gain)
41 audio.setrate(rate)
42 #
43 if not args:
44 play(starter, rate, auds.loadfp(sys.stdin))
45 else:
46 real_stopper = 0
47 for file in args:
48 if real_stopper:
49 real_stopper()
50 play(starter, rate, auds.load(file))
51 real_stopper = stopper
52
53def play(starter, rate, data):
54 magic = data[:4]
55 if magic == '0008':
56 mrate = 3
57 elif magic == '0016':
58 mrate = 2
59 elif magic == '0032':
60 mrate = 1
61 else:
62 mrate = 0
63 if mrate:
64 data = data[4:]
65 else:
66 mrate = DEF_RATE
67 if not rate: rate = mrate
68 audio.setrate(rate)
69 starter(data)
70
71try:
72 main()
73finally:
74 audio.setoutgain(0)
75 audio.done()