Skip to content

BeatNet integration and project additions/improvements#2

Open
pasquale90 wants to merge 21 commits intomainfrom
main-dev
Open

BeatNet integration and project additions/improvements#2
pasquale90 wants to merge 21 commits intomainfrom
main-dev

Conversation

@pasquale90
Copy link
Contributor

Changes applied:

BeatNet integration

  • Ported Python into C++ (audio preprocessing, ONNX inference, post-processing)
  • Added BeatNet as a submodule
  • Added as a child of Tracker abstract class.
  • Runtime loading of model weights and runtime libraries
  • Cross-platform compatibility (Windows, macOS, Linux)
  • Added an initial (naive) BPM estimation method based on BeatNet beat and downbeat outputs

Additions

  • Added beat indicator (LED-style) for real-time feedback
  • Enabled runtime switching between trackers through a drop-down menu
  • Renamed project to Cadence

Improvements

  • Automated dependency handling and library/model deployment
  • Fixed cross-platform build and runtime issues
  • Updated README.

Technical dept

  • the bmp estimation is unstable and needs improvement

…the default tracker for dev purposes.

Technical dept: BeatNet computes upbeats and downbeats. To calculate the tempo, the calculate tempo function has to be implemented. This will compute the tempo based on the beat interval between two adjusted beats.

Techincal dept 2: After building the plugin, all DLL files and model weights must be manually copied to the application host's installation directory. This is a temporary manual fix due to the current state of development.
…terface. Interface now stores in the stack memory both trackers and switches between two pre-initialized instances
…odel weights are now loaded dynamically from within the directory where the vst3 file is located.
…racking operation. Also, isHostPlaying function is implemented, to return the host playback state (playback/stop/pause). This is used to conditionally process audio input and depict output states on the UI. Furthermore, some small fixes are applied : 1) added stopTimer on the PluginEditor destructor, and fixed a casting issue on the BeatNet class (double instead of float in the operate function of the BeatNets-wrapper class)
Steps:
 - consider both regular-beat and down-beat as valid beats
 - computes interval in ms between beats
 - filter out unrealistic tempos
 - convert inverval to BPM.
 - apply rolling average smoothing to stabilize the bpm calculation

Technical dept:
 - the bmp estimation is unstable and needs improvement
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant