aboutsummaryrefslogtreecommitdiff
path: root/lib/auds.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/auds.py')
-rw-r--r--lib/auds.py148
1 files changed, 74 insertions, 74 deletions
diff --git a/lib/auds.py b/lib/auds.py
index 53db6aa..549c0a7 100644
--- a/lib/auds.py
+++ b/lib/auds.py
@@ -4,103 +4,103 @@ RATE = 8192
# Initialize the audio stuff
audio.setrate(3)
-audio.setoutgain(100) # for speaker
+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)
+ 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))
+ return s[:delay] + audio.add(s[delay:], audio.amplify(s, gain, gain))
def save(s, file):
- f = open(file, 'w')
- f.write(s)
+ f = open(file, 'w')
+ f.write(s)
def load(file):
- return loadfp(open(file, 'r'))
+ 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
+ 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
+ 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
+# 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)
+ 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)
+ 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)
+ 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)
+ 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)