Skip to content

Latest commit

 

History

History
83 lines (64 loc) · 2.81 KB

README.md

File metadata and controls

83 lines (64 loc) · 2.81 KB

ofxBeatClock

openFrameworks add-on to run a DAW-Styled BPM Beat-Clock.
Internal Clock with Tap Tempo, External MIDI Sync and Ableton Link modes.
Receives a callback notification when each beat happens.

Screencast

Usage

ofApp.h

#include "ofxBeatClock.h"

ofxBeatClock beatClock;

ofEventListener listener;
void Changed_Tick();

ofApp.cpp

void ofApp::setup()
{
  beatClock.setup();
  listener = beatClock.BeatTick.newListener([&](bool&) {this->Changed_Tick(); });
}
void ofApp::draw()
{
  beatClock.draw();
}
void ofApp::Changed_Tick() // -> Callback to receive BeatTicks
{
  ofLogNotice() << "Beat! #" << beatClock.getBeat();
}

Features

  • NEW FEATURE:
    Ableton LINK sync engine (Master/Slave). [WIP: Maybe some protocol feature could be missing.. but working]
  • Internal Clock based in a threaded timer from ofxDawMetro from @castovoid.
    You can uncomment #define USE_AUDIO_BUFFER_TIMER_MODE on ofxBeatClock.h to enable BETA alternative timer. [WIP]
  • Tap Tempo Engine.
  • External Source as Input MIDI Clock (Slave) using ofxMidi from @danomatika. Easy to Sync to Ableton Live or any sequencer app with Midi Clock.
  • Metronome Sound Ticks.
  • ImGui based GUI.
  • Auto Save/Load of all settings.

Requeriments

Already included into OF_ADD-ON/libs. No need to add manually:

Tested Systems

  • Windows 10 / VS 2022 / OF 0.12.0 / OF 0.12+ Master branch could break

Author

An add-on by @moebiusSurfing
( ManuMolina ). 2020-2022.

Thanks to the developers of the included core add-ons! @danomatika, @2bb and @castovoid.

License

MIT License.

TODO

  • Improve on-the-fly pushing sync/tweaking BPM smoothly.
  • Test/improve all Ableton Link features like Ableton in slave mode or multiple peers. [?]
  • Finish the improved Audio Buffer-based clock to allow more precision.
    This seems important when moving/hiding the Window. Sometimes the sync is lost. [?]

FEEL FREE TO ADD MODIFICATIONS OR FEATURES AND TO SEND ME PULL REQUESTS OR ISSUES!