Initial revision
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()