blob: 9792c168c5d105cccf02b6f845f731ab71aa1427 [file] [log] [blame]
Guido van Rossum50692d61991-09-15 21:05:15 +00001# Play old style sound files (Guido's private format)
2
3import al, sys, time
4import AL
5
6BUFSIZE = 8000
7
8def main():
9 if len(sys.argv) < 2:
10 f = sys.stdin
11 filename = sys.argv[0]
12 else:
13 if len(sys.argv) <> 2:
14 sys.stderr.write('usage: ' + \
15 sys.argv[0] + ' filename\n')
16 sys.exit(2)
17 filename = sys.argv[1]
18 f = open(filename, 'r')
19 #
20 magic = f.read(4)
21 extra = ''
Guido van Rossum14f43cf1992-03-30 13:30:03 +000022 if magic == '0008':
Guido van Rossum50692d61991-09-15 21:05:15 +000023 rate = 8000
Guido van Rossum14f43cf1992-03-30 13:30:03 +000024 elif magic == '0016':
Guido van Rossum50692d61991-09-15 21:05:15 +000025 rate = 16000
Guido van Rossum14f43cf1992-03-30 13:30:03 +000026 elif magic == '0032':
Guido van Rossum50692d61991-09-15 21:05:15 +000027 rate = 32000
28 else:
29 sys.stderr.write('no magic header; assuming 8k samples/sec.\n')
30 rate = 8000
31 extra = magic
32 #
33 pv = [AL.OUTPUT_RATE, rate]
34 al.setparams(AL.DEFAULT_DEVICE, pv)
35 c = al.newconfig()
36 c.setchannels(AL.MONO)
37 c.setwidth(AL.SAMPLE_8)
38 port = al.openport(filename, 'w', c)
39 if extra:
40 port.writesamps(extra)
41 while 1:
42 buf = f.read(BUFSIZE)
43 if not buf: break
44 port.writesamps(buf)
45 while port.getfilled() > 0:
Guido van Rossum50519c61994-10-07 10:23:49 +000046 time.sleep(0.1)
Guido van Rossum50692d61991-09-15 21:05:15 +000047
48try:
49 main()
50except KeyboardInterrupt:
51 sys.exit(1)