diff options
author | Rafael Ortiz <rafael@activitycentral.com> | 2012-06-13 21:47:05 (GMT) |
---|---|---|
committer | Rafael Ortiz <rafael@activitycentral.com> | 2012-06-13 21:47:05 (GMT) |
commit | a897d8a301f461e104ea30eec861473a3bb443a3 (patch) | |
tree | 60e9b619c7d3ec3ee1e912bbfb9e8e115cb5e0d0 | |
parent | d7f95b9a9658ea315254f4f28d6997dec915911c (diff) |
multiple style fixes
-rw-r--r-- | arange.py | 65 |
1 files changed, 41 insertions, 24 deletions
@@ -138,6 +138,7 @@ def write_wav(o): w.writeframes(q.tostring()) return f + def play_wav_alsa(fname): subprocess.call(["/usr/bin/aplay", fname]) @@ -157,6 +158,7 @@ def record_while_playing(play_name, t): stop_recording(recorder) return f + def start_recording_alsa(): fname = os.tempnam() @@ -169,17 +171,19 @@ def start_recording_alsa(): except os.error: time.sleep(0.02) - f = open(fname,'rb') + f = open(fname, 'rb') return (rec_process, f) start_recording = start_recording_alsa + def stop_recording_alsa(rec_process): os.kill(rec_process.pid, signal.SIGKILL) rec_process.wait() stop_recording = stop_recording_alsa + def read_wav(f): """ Reads one channel of a .wav file object (f) into a float array, unscaled @@ -197,6 +201,7 @@ def read_wav(f): a = struct.unpack('<' + str(n*nc) + typecode, s) return num.array(a[::nc], num.float) + def read_raw(f): x = f.read() n = len(x)/2 @@ -207,24 +212,26 @@ def read_raw(f): read_recorded_file = read_raw + def cross_cov(a, b, a_id=None): """computes the cross-covariance of signals in a and b""" assert (a.ndim == 1) and (b.ndim == 1) n = max(a.size, b.size) - n2 = 2**int(math.ceil(math.log(n,2))) # power of 2 >=n + n2 = 2**int(math.ceil(math.log(n, 2))) # power of 2 >=n if a_id is not None: if cache_dict.has_key(('fft', a_id, n2)): fa = cache_dict[('fft', a_id, n2)] else: - fa = num.fft.rfft(a,n2) + fa = num.fft.rfft(a, n2) cache_dict[('fft', a_id, n2)] = fa else: - fa = num.fft.rfft(a,n2) - fb = num.fft.rfft(b,n2) + fa = num.fft.rfft(a, n2) + fb = num.fft.rfft(b, n2) fprod = num.conjugate(fa)*fb xc = num.fft.irfft(fprod) return xc[:n].real + def get_room_echo(t): """A test function that can be used to determine the impulse response of a microphone-speaker system, up to a time-delay""" @@ -238,6 +245,7 @@ def get_room_echo(t): os.remove(record_file.name) return cross_cov(mls - 0.5, rec_array) + def get_noise_echo(t): """The same as get_echo, but with no signal.""" R = (num.zeros((MLS_INDEX)) == 0) @@ -265,6 +273,7 @@ def do_server_simul(server_address, port): server_socket.close() return dt + def do_client_simul(server_address, port): """ Make this computer the client for a distance measurement @@ -275,7 +284,8 @@ def do_client_simul(server_address, port): dt = measure_dt_simul(client_socket, False) client_socket.close() return dt - + + def do_server_seq(server_address, port): """ Make this computer the server for a distance measurement @@ -291,6 +301,7 @@ def do_server_seq(server_address, port): server_socket.close() return dt + def do_client_seq(server_address, port): """ Make this computer the client for a distance measurement @@ -302,6 +313,7 @@ def do_client_seq(server_address, port): client_socket.close() return dt + def recvall(s, n): """ Attempt to receive n bytes from socket s. Return received message. @@ -315,6 +327,7 @@ def recvall(s, n): received = received + q return received + def recvmsg(s, message): """ Attempt to receive a specific message from a socket. Returns @@ -323,6 +336,7 @@ def recvmsg(s, message): #assert type(s) == socket._socketobject return (message == recvall(s, len(message))) + def measure_dt_simul(s, am_server): """ Performs all the actual communication between client and server for @@ -338,14 +352,14 @@ def measure_dt_simul(s, am_server): else: R = (num.zeros((MLS_INDEX)) == 0) mls = compute_mls(R) - cache_dict[('mls',MLS_INDEX)] = mls + cache_dict[('mls', MLS_INDEX)] = mls if am_server: - if cache_dict.has_key(('mls_rev',MLS_INDEX)): - mls = cache_dict[('mls_rev',MLS_INDEX)] + if cache_dict.has_key(('mls_rev', MLS_INDEX)): + mls = cache_dict[('mls_rev', MLS_INDEX)] else: mls = mls[::-1] - cache_dict[('mls_rev',MLS_INDEX)] = mls + cache_dict[('mls_rev', MLS_INDEX)] = mls mls_wav_file = write_wav(mls) ready_command = 'ready' @@ -400,6 +414,7 @@ def measure_dt_simul(s, am_server): return roundtrip/2 + def measure_dt_seq(s, am_server, send_signal=False): """ This function performs distance measurement using sequential playback. @@ -413,18 +428,18 @@ def measure_dt_seq(s, am_server, send_signal=False): if send_signal: send_signal('preparing') - if cache_dict.has_key(('mls',MLS_INDEX)): - mls = cache_dict[('mls',MLS_INDEX)] + if cache_dict.has_key(('mls', MLS_INDEX)): + mls = cache_dict[('mls', MLS_INDEX)] else: R = (num.zeros((MLS_INDEX)) == 0) mls = compute_mls(R) - cache_dict[('mls',MLS_INDEX)] = mls + cache_dict[('mls', MLS_INDEX)] = mls - if cache_dict.has_key(('mls_rev',MLS_INDEX)): - mls_rev = cache_dict[('mls_rev',MLS_INDEX)] + if cache_dict.has_key(('mls_rev', MLS_INDEX)): + mls_rev = cache_dict[('mls_rev', MLS_INDEX)] else: mls_rev = mls[::-1] - cache_dict[('mls_rev',MLS_INDEX)] = mls_rev + cache_dict[('mls_rev', MLS_INDEX)] = mls_rev if am_server: mls_wav_file = write_wav(mls) @@ -510,17 +525,17 @@ def measure_dt_seq(s, am_server, send_signal=False): print num.size(rec1) print num.size(rec2) - if cache_dict.has_key(('mls_float',MLS_INDEX)): - mls_float = cache_dict[('mls_float',MLS_INDEX)] + if cache_dict.has_key(('mls_float', MLS_INDEX)): + mls_float = cache_dict[('mls_float', MLS_INDEX)] else: mls_float = mls - 0.5 - cache_dict[('mls_float',MLS_INDEX)] = mls_float + cache_dict[('mls_float', MLS_INDEX)] = mls_float - if cache_dict.has_key(('mls_rev_float',MLS_INDEX)): - mls_rev_float = cache_dict[('mls_rev_float',MLS_INDEX)] + if cache_dict.has_key(('mls_rev_float', MLS_INDEX)): + mls_rev_float = cache_dict[('mls_rev_float', MLS_INDEX)] else: mls_rev_float = mls_rev - 0.5 - cache_dict[('mls_rev_float',MLS_INDEX)] = mls_rev_float + cache_dict[('mls_rev_float', MLS_INDEX)] = mls_rev_float xc_server = cross_cov(mls_float, rec1, ('mls_float', MLS_INDEX)) xc_client = cross_cov(mls_rev_float, rec2, ('mls_rev_float', MLS_INDEX)) s_peak = getpeak(xc_server) @@ -543,10 +558,12 @@ def measure_dt_seq(s, am_server, send_signal=False): send_signal('done') return roundtrip/2 - + + def getpeak(a): return num.argmax(abs(a)) - + + def speed_of_sound(t=25.0, h=0.6, p=101325.0, x_c=0.0004): """ t= temperature in Celsius |