18 #ifndef RAUL_JACK_DRIVER_HPP
19 #define RAUL_JACK_DRIVER_HPP
23 #include <jack/jack.h>
24 #include <jack/statistics.h>
40 void attach(
const std::string& client_name, std::string server_name=
"");
46 bool is_activated()
const {
return _is_activated; }
47 bool is_attached()
const {
return (_client != NULL); }
48 bool is_realtime()
const {
return _client && jack_is_realtime(_client); }
50 void start_transport() { jack_transport_start(_client); }
51 void stop_transport() { jack_transport_stop(_client); }
53 void rewind_transport() {
56 zero.valid = (jack_position_bits_t)0;
57 jack_transport_reposition(_client, &zero);
60 jack_nframes_t buffer_size();
61 bool set_buffer_size(jack_nframes_t size);
63 inline jack_nframes_t sample_rate() {
return jack_get_sample_rate(_client); }
65 inline size_t xruns() {
return _xruns; }
68 inline float max_delay() {
return jack_get_max_delayed_usecs(_client); }
69 inline void reset_delay() { jack_reset_max_delayed_usecs(_client); }
71 jack_client_t* jack_client() {
return _client; }
87 virtual void on_xrun() {}
88 virtual void on_shutdown() {}
89 virtual void on_error() {}
92 jack_client_t* _client;
96 static void error_cb(
const char* msg);
98 void destroy_all_ports();
102 static void jack_port_registration_cb(jack_port_id_t port_id,
int registered,
void* me);
103 static int jack_graph_order_cb(
void* me);
104 static int jack_xrun_cb(
void* me);
105 static int jack_buffer_size_cb(jack_nframes_t buffer_size,
void* me);
106 static int jack_process_cb(jack_nframes_t nframes,
void* me);
108 static void jack_shutdown_cb(
void* me);
111 jack_position_t _last_pos;
112 jack_nframes_t _buffer_size;
120 #endif // RAUL_JACK_DRIVER_HPP
virtual void on_buffer_size_changed(jack_nframes_t)
Buffer size changed callback.
Definition: JackDriver.hpp:85
Jack based driver for an audio context.
Definition: JackDriver.hpp:34
virtual void on_graph_order_changed()
Graph order change callback.
Definition: JackDriver.hpp:79
virtual void on_process(jack_nframes_t)
Process callback.
Definition: JackDriver.hpp:76