home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyos2bin.zip / Demo / sgi / audio / play.py next >
Text File  |  1996-11-27  |  1KB  |  76 lines

  1. #! /usr/bin/env python
  2.  
  3. import sys
  4. import audio
  5.  
  6. import string
  7. import getopt
  8. import auds
  9.  
  10. debug = []
  11.  
  12. DEF_RATE = 3
  13.  
  14. def 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.  
  53. def 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.  
  71. try:
  72.     main()
  73. finally:
  74.     audio.setoutgain(0)
  75.     audio.done()
  76.