Showing the changes to python (1 of 1 file). Show all
Unified · Split
| @@ -272,9 +272,16 @@ class process_tempo(process_beat): · 271 unmodified lines | ||
| 272 | 272 | self.beat_locations.append(self.tempo.get_last_s()) |
| 273 | 273 | def flush(self, frames_read, samplerate): |
| 274 | 274 | import numpy as np |
| 275 | − bpms = 60./ np.diff(self.beat_locations) | |
| 276 | − median_bpm = np.mean(bpms) | |
| 277 | − sys.stdout.write('%.2f bpm' % median_bpm + '\n') | |
| 275 | + if len(self.beat_locations) < 2: | |
| 276 | + outstr = "unknown bpm" | |
| 277 | + else: | |
| 278 | + bpms = 60./ np.diff(self.beat_locations) | |
| 279 | + median_bpm = np.mean(bpms) | |
| 280 | + if len(self.beat_locations) < 10: | |
| 281 | + outstr = "%.2f bpm (uncertain)" % median_bpm | |
| 282 | + else: | |
| 283 | + outstr = "%.2f bpm" % median_bpm | |
| 284 | + sys.stdout.write(outstr + '\n') | |
| 278 | 285 | |
| 279 | 286 | class process_notes(default_process): |
| 280 | 287 | valid_opts = ['method', 'hop_size', 'buf_size', 'samplerate'] |