home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyos2bin.zip / Demo / sgi / al / playold.py < prev    next >
Text File  |  1994-10-07  |  983b  |  52 lines

  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 = ''
  22.     if magic == '0008':
  23.         rate = 8000
  24.     elif magic == '0016':
  25.         rate = 16000
  26.     elif magic == '0032':
  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:
  46.         time.sleep(0.1)
  47.  
  48. try:
  49.     main()
  50. except KeyboardInterrupt:
  51.     sys.exit(1)
  52.