$ show mjhydri/BeatNet
BeatNet is a Python library for real-time and offline music beat, downbeat, tempo, and meter tracking. It provides a complete system comprising a CRNN-based neural network for feature extraction, particle filtering for causal inference, and DBN for non-causal inference. The library supports four operational modes: streaming (microphone input), real-time (file processing), online (fast file processing), and offline (DBN-based). Beyond inference, it includes a complete training pipeline for training the CRNN model on custom datasets with data preparation tools, dataset handling, and validation procedures. The architecture is modular with clear separation between feature extraction, neural network modeling, and inference algorithms.
The LLM identified 2 files worth highlighting for reuse:
Defines FeatureModule abstract base class providing common functionality for audio feature extraction including frame calculation, decibel conversion, and channel handling. Demonstrates clean abstraction boundaries and encapsulation of cross-cutting concerns in audio processing pipelines. Could be extracted and reused in any audio analysis project needing standardized feature extraction interfaces.
Implements LOG_SPECT feature extraction pipeline combining Short-Time Fourier Transform, filtering, logarithmic scaling, and difference processing. Wraps madmom signal processing components in a clean, reusable class that inherits from FeatureModule. Shows effective composition of signal processing operations into a coherent feature extraction system that could be applied to various audio analysis tasks beyond beat tracking.