summaryrefslogtreecommitdiffstats
path: root/Demo/sgi/audio
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1992-03-30 11:39:53 (GMT)
committerGuido van Rossum <guido@python.org>1992-03-30 11:39:53 (GMT)
commit715a65315287876f9bd2dd9ad5d453df3f6caa7c (patch)
tree20d113d4ebfd0cfef67cc406d3c9398487188b25 /Demo/sgi/audio
parent4a5ab81bc93004773070de89cc4acfad75103c7e (diff)
downloadcpython-715a65315287876f9bd2dd9ad5d453df3f6caa7c.zip
cpython-715a65315287876f9bd2dd9ad5d453df3f6caa7c.tar.gz
cpython-715a65315287876f9bd2dd9ad5d453df3f6caa7c.tar.bz2
Initial revision
Diffstat (limited to 'Demo/sgi/audio')
-rw-r--r--Demo/sgi/audio/README8
-rwxr-xr-xDemo/sgi/audio/play.py75
2 files changed, 83 insertions, 0 deletions
diff --git a/Demo/sgi/audio/README b/Demo/sgi/audio/README
new file mode 100644
index 0000000..02a3701
--- /dev/null
+++ b/Demo/sgi/audio/README
@@ -0,0 +1,8 @@
+Programs that demonstrate the use of the audio device on the SGI 4D/25.
+These require the built-in module 'audio'.
+
+XXX This hardware is already obsolete; see ../al for examples of audio
+XXX on the Indigo and 4D/35.
+
+play Read a sound sample from a file and play it through the
+ speaker. Options to set volume, sampling rate etc.
diff --git a/Demo/sgi/audio/play.py b/Demo/sgi/audio/play.py
new file mode 100755
index 0000000..adc7625
--- /dev/null
+++ b/Demo/sgi/audio/play.py
@@ -0,0 +1,75 @@
+#! /usr/local/python
+
+import sys
+import audio
+
+import string
+import getopt
+import auds
+
+debug = []
+
+DEF_RATE = 3
+
+def main():
+ #
+ gain = 100
+ rate = 0
+ starter = audio.write
+ stopper = 0
+ #
+ optlist, args = getopt.getopt(sys.argv[1:], 'adg:r:')
+ #
+ for optname, optarg in optlist:
+ if 0:
+ pass
+ elif optname == '-d':
+ debug.append(1)
+ elif optname == '-g':
+ gain = string.atoi(optarg)
+ if not (0 < gain < 256):
+ raise optarg.error, '-g gain out of range'
+ elif optname == '-r':
+ rate = string.atoi(optarg)
+ if not (1 <= rate <= 3):
+ raise optarg.error, '-r rate out of range'
+ elif optname == '-a':
+ starter = audio.start_playing
+ stopper = audio.wait_playing
+ #
+ audio.setoutgain(gain)
+ audio.setrate(rate)
+ #
+ if not args:
+ play(starter, rate, auds.loadfp(sys.stdin))
+ else:
+ real_stopper = 0
+ for file in args:
+ if real_stopper:
+ real_stopper()
+ play(starter, rate, auds.load(file))
+ real_stopper = stopper
+
+def play(starter, rate, data):
+ magic = data[:4]
+ if magic == '0008':
+ mrate = 3
+ elif magic == '0016':
+ mrate = 2
+ elif magic == '0032':
+ mrate = 1
+ else:
+ mrate = 0
+ if mrate:
+ data = data[4:]
+ else:
+ mrate = DEF_RATE
+ if not rate: rate = mrate
+ audio.setrate(rate)
+ starter(data)
+
+try:
+ main()
+finally:
+ audio.setoutgain(0)
+ audio.done()