def figures(rank): rank.write_freq(550, 1, 44100) wav, wp, pxx, fxx, p, c, pf = f(fname) print '%s: %s' %(fname, pf) outname = '../paper/figures/synth.wav' s = utilities.mk_synth(pf[0], 1, wp[2], pf, c) utilities.write_wav(s, wp[2], outname) wav, wp, pxx, fxx, p, c, pf = f(outname) print '%s: %s' %(outname, pf) pxx, fxx = utilities.get_psd(s, wp[2]) p, c = utilities.get_peaks(pxx, n) pf = [ fxx[i] for i in p ] print 'synth: %s' %pf
def figures(rank): rank.write_freq(550, 1, 44100) wav, wp, pxx, fxx, p, c, pf = f(fname) print '%s: %s' % (fname, pf) outname = '../paper/figures/synth.wav' s = utilities.mk_synth(pf[0], 1, wp[2], pf, c) utilities.write_wav(s, wp[2], outname) wav, wp, pxx, fxx, p, c, pf = f(outname) print '%s: %s' % (outname, pf) pxx, fxx = utilities.get_psd(s, wp[2]) p, c = utilities.get_peaks(pxx, n) pf = [fxx[i] for i in p] print 'synth: %s' % pf
def mkgraphs(wname, prefix): print wname wav, wp = utilities.get_wav(wname) sp = 1.0 / wp[2] timevals = numpy.arange(0, wp[3] * sp, sp) part = 4000 pylab.close() pylab.plot(timevals[:part], wav[:part]) pylab.xlabel('Time (s)') pylab.ylabel('Relative amplitude') pylab.savefig('%stime.png' % prefix) PSD_NFFT = 2**17 (pxx, fxx) = utilities.get_psd(wav, wp[2], PSD_NFFT) part = 1700 lxx = 10 * numpy.log10(pxx) pylab.close() pylab.plot(fxx[:part], lxx[:part]) pylab.xlabel('Frequency (Hz)') pylab.ylabel('Power (dB)') pylab.savefig('%spsd.png' % prefix) n = 5 # num peaks p, c = utilities.get_peaks(pxx, n) peak_freqs = [fxx[i] for i in p] peak_db = [lxx[i] for i in p] print peak_freqs pylab.plot(peak_freqs, peak_db, 'ro', ms=4) for i in range(n): pylab.text(peak_freqs[i], peak_db[i], '%5.1fHz' % peak_freqs[i], ha='center', position=(peak_freqs[i], peak_db[i] + 1)) pylab.xlabel('Frequency (Hz)') pylab.ylabel('Power (dB)') pylab.savefig('%speaks.png' % prefix)
def mkgraphs(wname, prefix): print wname wav, wp = utilities.get_wav(wname) sp = 1.0 / wp[2] timevals = numpy.arange(0, wp[3] * sp, sp) part = 4000 pylab.close() pylab.plot(timevals[:part], wav[:part]) pylab.xlabel('Time (s)') pylab.ylabel('Relative amplitude') pylab.savefig('%stime.png' %prefix) PSD_NFFT = 2**17 (pxx, fxx) = utilities.get_psd(wav, wp[2], PSD_NFFT) part = 1700 lxx = 10 * numpy.log10(pxx) pylab.close() pylab.plot(fxx[:part], lxx[:part]) pylab.xlabel('Frequency (Hz)') pylab.ylabel('Power (dB)') pylab.savefig('%spsd.png' %prefix) n = 5 # num peaks p, c = utilities.get_peaks(pxx, n) peak_freqs = [ fxx[i] for i in p ] peak_db = [ lxx[i] for i in p ] print peak_freqs pylab.plot(peak_freqs, peak_db, 'ro', ms=4) for i in range(n): pylab.text(peak_freqs[i], peak_db[i], '%5.1fHz' %peak_freqs[i], ha='center', position=(peak_freqs[i], peak_db[i] + 1)) pylab.xlabel('Frequency (Hz)') pylab.ylabel('Power (dB)') pylab.savefig('%speaks.png' %prefix)
def __init__(self, fname, numpeaks, base=0): print '\t%s' %fname self.fname = fname self.wav, self.wp = utilities.get_wav(fname) self.psd, self.psd_freqs = utilities.get_psd(self.wav, self.wp[2]) self.peaks, self.peaks_energy = utilities.get_peaks(self.psd, numpeaks) self.peaks_freqs = numpy.array([self.psd_freqs[i] for i in self.peaks]) self.percs = self.peaks_energy / self.psd.sum() self.peaks_notes = utilities.get_note(self.peaks_freqs) if base: bi = None diff = 100 for i in self.peaks_freqs: d = abs(base - i) if d < diff: diff = d bi = i self.base = bi else: self.base = self.psd_freqs[self.peaks[0]]
def f(fname): wav, wp = utilities.get_wav(fname) pxx, fxx = utilities.get_psd(wav, wp[2]) p, c = utilities.get_peaks(pxx, n) pf = [ fxx[i] for i in p ] return wav, wp, pxx, fxx, p, c, pf
def f(fname): wav, wp = utilities.get_wav(fname) pxx, fxx = utilities.get_psd(wav, wp[2]) p, c = utilities.get_peaks(pxx, n) pf = [fxx[i] for i in p] return wav, wp, pxx, fxx, p, c, pf