From: Paul Brossier Date: Tue, 12 Feb 2013 19:08:51 +0000 (-0500) Subject: python/demos/demo_onset_file.py: also plot descriptor and thresholded descriptor X-Git-Tag: 0.4.0-beta1~325 X-Git-Url: https://git.aubio.org/?a=commitdiff_plain;h=f36277cc5c710a854f2f299e604b0187a5ed5f7a;p=aubio.git python/demos/demo_onset_file.py: also plot descriptor and thresholded descriptor --- diff --git a/python/demos/demo_onset_file.py b/python/demos/demo_onset_file.py index 2c3738fb..081803f6 100755 --- a/python/demos/demo_onset_file.py +++ b/python/demos/demo_onset_file.py @@ -19,6 +19,9 @@ onsets = [] s = source(filename, samplerate, hop_s) o = onset("default", win_s, hop_s) +desc = [] +tdesc = [] + block_read = 0 allsamples_max = zeros(0,) while True: @@ -26,6 +29,8 @@ while True: new_maxes = (abs(samples.reshape(hop_s/downsample, downsample))).max(axis=0) allsamples_max = hstack([allsamples_max, new_maxes]) isbeat = o(samples) + desc.append(o.get_descriptor()) + tdesc.append(o.get_thresholded_descriptor()) if isbeat: thisbeat = (block_read - 4. + isbeat[0]) * hop_s / samplerate print "%.4f" % thisbeat @@ -35,14 +40,24 @@ while True: # do plotting from numpy import arange -from pylab import plot, show, xlabel, ylabel, legend, ylim, subplot, axis +import matplotlib.pyplot as plt allsamples_max = (allsamples_max > 0) * allsamples_max allsamples_max_times = [ float(t) * hop_s / downsample / samplerate for t in range(len(allsamples_max)) ] -plot(allsamples_max_times, allsamples_max, '-b') -plot(allsamples_max_times, -allsamples_max, '-b') -axis(xmin = 0., xmax = max(allsamples_max_times) ) -for stamp in onsets: plot([stamp, stamp], [-1., 1.], '.-r') -xlabel('time (s)') -ylabel('amplitude') -show() - +plt1 = plt.axes([0.1, 0.75, 0.8, 0.19]) +plt2 = plt.axes([0.1, 0.1, 0.8, 0.65], sharex = plt1) +plt.rc('lines',linewidth='.8') +plt1.plot(allsamples_max_times, allsamples_max, '-b') +plt1.plot(allsamples_max_times, -allsamples_max, '-b') +for stamp in onsets: plt1.plot([stamp, stamp], [-1., 1.], '-r') +plt1.axis(xmin = 0., xmax = max(allsamples_max_times) ) +plt1.xaxis.set_visible(False) +desc_times = [ float(t) * hop_s / samplerate for t in range(len(desc)) ] +desc_plot = [d / max(desc) for d in desc] +plt2.plot(desc_times, desc_plot, '-g') +tdesc_plot = [d / max(desc) for d in tdesc] +for stamp in onsets: plt2.plot([stamp, stamp], [min(tdesc_plot), max(desc_plot)], '-r') +plt2.plot(desc_times, tdesc_plot, '-y') +plt2.axis(ymin = min(tdesc_plot), ymax = max(desc_plot)) +plt.xlabel('time (s)') +#plt.savefig('/tmp/t.png', dpi=200) +plt.show()