Initial revision
diff --git a/Lib/irix5/auds.py b/Lib/irix5/auds.py
new file mode 100755
index 0000000..549c0a7
--- /dev/null
+++ b/Lib/irix5/auds.py
@@ -0,0 +1,106 @@
+import audio
+
+RATE = 8192
+
+# Initialize the audio stuff
+audio.setrate(3)
+audio.setoutgain(100)	# for speaker
+
+play = audio.write
+
+def samp(n):
+	savegain = audio.getoutgain()
+	try:
+		audio.setoutgain(0)
+		x = raw_input('Hit Enter to sample ' + `n` + ' seconds: ')
+		return audio.read(n*RATE)
+	finally:
+		audio.setoutgain(savegain)
+
+def echo(s, delay, gain):
+	return s[:delay] + audio.add(s[delay:], audio.amplify(s, gain, gain))
+
+def save(s, file):
+	f = open(file, 'w')
+	f.write(s)
+
+def load(file):
+	return loadfp(open(file, 'r'))
+
+def loadfp(fp):
+	s = ''
+	while 1:
+		buf = fp.read(16*1024)
+		if not buf: break
+		s = s + buf
+	return s
+
+def unbias(s):
+	if not s: return s
+	a = audio.chr2num(s)
+	sum = 0
+	for i in a: sum = sum + i
+	bias = (sum + len(a)/2) / len(a)
+	print 'Bias value:', bias
+	if bias:
+		for i in range(len(a)):
+			a[i] = a[i] - bias
+		s = audio.num2chr(a)
+	return s
+
+# Stretch by a/b.
+# Think of this as converting the sampling rate from a samples/sec
+# to b samples/sec.  Or, if the input is a bytes long, the output
+# will be b bytes long.
+#
+def stretch(s, a, b):
+	y = audio.chr2num(s)
+	m = len(y)
+	out = []
+	n = m * b / a
+	# i, j will walk through y and out (step 1)
+	# ib, ja are i*b, j*a and are kept as close together as possible
+	i, ib = 0, 0
+	j, ja = 0, 0
+	for j in range(n):
+		ja = ja+a
+		while ib < ja:
+			i = i+1
+			ib = ib+b
+		if i >= m:
+			break
+		if ib = ja:
+			out.append(y[i])
+		else:
+			out.append((y[i]*(ja-(ib-b)) + y[i-1]*(ib-ja)) / b)
+	return audio.num2chr(out)
+
+def sinus(freq): # return a 1-second sine wave
+	from math import sin, pi
+	factor = 2.0*pi*float(freq)/float(RATE)
+	list = range(RATE)
+	for i in list:
+		list[i] = int(sin(float(i) * factor) * 127.0)
+	return audio.num2chr(list)
+
+def softclip(s):
+	if '\177' not in s and '\200' not in s:
+		return s
+	num = audio.chr2num(s)
+	extremes = (-128, 127)
+	for i in range(1, len(num)-1):
+		if num[i] in extremes:
+			num[i] = (num[i-1] + num[i+1]) / 2
+	return audio.num2chr(num)
+
+def demo():
+	gday = load('gday')[1000:6000]
+	save(gday, 'gday0')
+	gg = [gday]
+	for i in range(1, 10):
+		for g in gg: play(g)
+		g = stretch(gday, 10, 10-i)
+		save(g, 'gday' + `i`)
+		gg.append(g)
+	while 1:
+		for g in gg: play(g)