ref: 98cfdea4d963bd7caf5a8c8c1cbf0b04db11295c
dir: /python/demos/demo_tempo.py/
#! /usr/bin/env python import sys from aubio import tempo, source win_s = 512 # fft size hop_s = win_s // 2 # hop size if len(sys.argv) < 2: print("Usage: %s <filename> [samplerate]" % sys.argv[0]) sys.exit(1) filename = sys.argv[1] samplerate = 0 if len( sys.argv ) > 2: samplerate = int(sys.argv[2]) s = source(filename, samplerate, hop_s) samplerate = s.samplerate o = tempo("default", win_s, hop_s, samplerate) # tempo detection delay, in samples # default to 4 blocks delay to catch up with delay = 4. * hop_s # list of beats, in samples beats = [] # total number of frames read total_frames = 0 while True: samples, read = s() is_beat = o(samples) if is_beat: this_beat = int(total_frames - delay + is_beat[0] * hop_s) print("%f" % (this_beat / float(samplerate))) beats.append(this_beat) total_frames += read if read < hop_s: break #print len(beats)