diff options
Diffstat (limited to 'python/demos/demo_tempo.py')
-rwxr-xr-x | python/demos/demo_tempo.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/python/demos/demo_tempo.py b/python/demos/demo_tempo.py new file mode 100755 index 0000000..51e1ae3 --- /dev/null +++ b/python/demos/demo_tempo.py @@ -0,0 +1,40 @@ +#! /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) |