Guido van Rossum | 50692d6 | 1991-09-15 21:05:15 +0000 | [diff] [blame] | 1 | # Play old style sound files (Guido's private format) |
| 2 | |
| 3 | import al, sys, time |
| 4 | import AL |
| 5 | |
| 6 | BUFSIZE = 8000 |
| 7 | |
| 8 | def 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 Rossum | 14f43cf | 1992-03-30 13:30:03 +0000 | [diff] [blame] | 22 | if magic == '0008': |
Guido van Rossum | 50692d6 | 1991-09-15 21:05:15 +0000 | [diff] [blame] | 23 | rate = 8000 |
Guido van Rossum | 14f43cf | 1992-03-30 13:30:03 +0000 | [diff] [blame] | 24 | elif magic == '0016': |
Guido van Rossum | 50692d6 | 1991-09-15 21:05:15 +0000 | [diff] [blame] | 25 | rate = 16000 |
Guido van Rossum | 14f43cf | 1992-03-30 13:30:03 +0000 | [diff] [blame] | 26 | elif magic == '0032': |
Guido van Rossum | 50692d6 | 1991-09-15 21:05:15 +0000 | [diff] [blame] | 27 | 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 Rossum | 50519c6 | 1994-10-07 10:23:49 +0000 | [diff] [blame] | 46 | time.sleep(0.1) |
Guido van Rossum | 50692d6 | 1991-09-15 21:05:15 +0000 | [diff] [blame] | 47 | |
| 48 | try: |
| 49 | main() |
| 50 | except KeyboardInterrupt: |
| 51 | sys.exit(1) |