On Monday, September 10, 2012 4:14:18 PM UTC-4, Wanderer wrote: > On Monday, September 10, 2012 4:12:40 PM UTC-4, MRAB wrote: > > > On 10/09/2012 20:39, Wanderer wrote: > > > > > > > I have an array generated by audiolab of left and right stereo > > > > > > > channels. It looks like [[1,1],[1,2],[2,3]]. I would like to combine > > > > > > > the left and right channels to get an array [2,3,5]. Is there a numpy > > > > > > > command to do that? > > > > > > > > > > > > > >>> import numpy > > > > > > >>> numpy.array([[1,1],[1,2],[2,3]], dtype="i") > > > > > > array([[1, 1], > > > > > > [1, 2], > > > > > > [2, 3]]) > > > > > > >>> a[:, 0] > > > > > > array([1, 1, 2]) > > > > > > >>> a[:, 1] > > > > > > array([1, 2, 3]) > > > > > > >>> a[:, 0] + a[:, 1] > > > > > > array([2, 3, 5]) > > > > > > > > > > > > But should they be added together to make mono? > > > > > > > > > > > > Suppose, for example, that both channels have a maximum value. Their > > > > > > sum would be _twice_ the maximum. > > > > > > > > > > > > Therefore, I think that it should probably be the average. > > > > > > > > > > > > >>> (a[:, 0] + a[:, 1]) / 2 > > > > > > array([1, 1, 2]) > > > > I'm decoding morse code. So it's CV dots and dashes.
In case anyone is interested, here is the full code. # morsecode.py import numpy as np from scikits.audiolab import wavread from scipy.signal import decimate from pylab import plot from pylab import show import os def movingaverage(interval, window_size): window = np.ones(int(window_size)) / float(window_size) return np.convolve(interval, window, 'same') def wav2morse(resultDir, filename): """ Convert a wave file to morse code resultDir: directory for wave file and results filename: wave file name """ data, _fs, _enc = wavread(resultDir + '\\' + filename) data = np.sum(data, axis=1) data = np.fabs(data) data = movingaverage(data, 100) data = decimate(data, 2) highcount = 0 lowcount = 0 fileBase, _fileExt = os.path.splitext(filename) f = open(resultDir + '\\' + fileBase + '.txt', 'w') for d in data: if d > 0.3: if lowcount > 3000: f.write(' ') lowcount = 0 highcount += 1 else: if highcount > 3000: f.write('-') elif highcount > 1000: f.write('.') highcount = 0 lowcount += 1 f.close() -- http://mail.python.org/mailman/listinfo/python-list