- commit
- d1ebb32d5fc80e96400d10844774afd6247a09a2
- parent
- 6a82630623a5d12be26684197825880b985f3ffe
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2025-03-06 11:04
inline enhance_diagonal
Diffstat
| M | player.py | 19 | +++++++------------ |
1 files changed, 7 insertions, 12 deletions
diff --git a/player.py b/player.py
@@ -33,15 +33,6 @@ def print_progress(i, n): 33 33 print(s, end='\r') 34 34 35 3536 -1 def enhance_diagonals(jumps, weight=0.2, steps=1):37 -1 for _ in range(steps):38 -1 # combine each cell with its diagonal neighbors39 -1 jumps1 = numpy.roll(jumps, (1, 1), (0, 1))40 -1 jumps2 = numpy.roll(jumps, (-1, -1), (0, 1))41 -1 jumps = (weight * (jumps1 + jumps2) + (1 - weight) * jumps) / 242 -1 return jumps43 -144 -145 36 def compute_buffers(y, beat_frames): 46 37 beat_samples = librosa.frames_to_samples(beat_frames) 47 38 ranges = zip([0, *beat_samples], [*beat_samples, None]) @@ -89,10 +80,14 @@ def load(filename, *, force=False): 89 80 return compute_buffers(y, beat_frames), sample_rate, jumps 90 81 91 8292 -1 def normalize(jumps, threshold):-1 83 def enhance(jumps, threshold): 93 84 n = len(jumps) 94 8595 -1 jumps = enhance_diagonals(jumps, 0.8, 4)-1 86 # beats are more similar if the surrounding beats are similar -1 87 for _ in range(4): -1 88 jumps_before = numpy.roll(jumps, (-1, -1), (0, 1)) -1 89 jumps_after = numpy.roll(jumps, (1, 1), (0, 1)) -1 90 jumps = 0.4 * jumps_before + 0.4 * jumps_after + 0.2 * jumps 96 91 97 92 # scale 98 93 x_max = jumps.max() @@ -152,7 +147,7 @@ def main(): 152 147 153 148 print('Loading', args.filename) 154 149 buffers, sample_rate, jumps = load(args.filename, force=args.force)155 -1 jumps = normalize(jumps, args.threshold)-1 150 jumps = enhance(jumps, args.threshold) 156 151 jump_count = sum(sum(jumps > 0)) 157 152 158 153 print(f'Detected {jump_count} jump opportunities on {len(buffers)} beats')