Audio plugin host https://kx.studio/carla
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
5.0KB

  1. /*
  2. * JackBridge
  3. * Copyright (C) 2013 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU Lesser General Public
  7. * License as published by the Free Software Foundation.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU Lesser General Public License for more details.
  13. *
  14. * For a full copy of the license see the LGPL.txt file
  15. */
  16. #ifndef __JACKBRIDGE_HPP__
  17. #define __JACKBRIDGE_HPP__
  18. #include "CarlaDefines.hpp"
  19. #ifndef JACKBRIDGE_EXPORT
  20. # undef CARLA_EXPORT
  21. # define CARLA_EXPORT
  22. #endif
  23. #ifdef __WINE__
  24. # define GNU_WIN32 // fix jack threads, always use pthread
  25. #endif
  26. #include <cstdint>
  27. #include <sys/time.h>
  28. #include <jack/jack.h>
  29. #include <jack/midiport.h>
  30. #include <jack/transport.h>
  31. CARLA_EXPORT const char* jackbridge_get_version_string();
  32. CARLA_EXPORT jack_client_t* jackbridge_client_open(const char* client_name, jack_options_t options, jack_status_t* status, ...);
  33. CARLA_EXPORT int jackbridge_client_close(jack_client_t* client);
  34. CARLA_EXPORT int jackbridge_client_name_size();
  35. CARLA_EXPORT char* jackbridge_get_client_name(jack_client_t* client);
  36. CARLA_EXPORT int jackbridge_activate(jack_client_t* client);
  37. CARLA_EXPORT int jackbridge_deactivate(jack_client_t* client);
  38. CARLA_EXPORT void jackbridge_on_shutdown(jack_client_t* client, JackShutdownCallback shutdown_callback, void* arg);
  39. CARLA_EXPORT int jackbridge_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg);
  40. CARLA_EXPORT int jackbridge_set_freewheel_callback(jack_client_t* client, JackFreewheelCallback freewheel_callback, void* arg);
  41. CARLA_EXPORT int jackbridge_set_buffer_size_callback(jack_client_t* client, JackBufferSizeCallback bufsize_callback, void* arg);
  42. CARLA_EXPORT int jackbridge_set_sample_rate_callback(jack_client_t* client, JackSampleRateCallback srate_callback, void* arg);
  43. CARLA_EXPORT int jackbridge_set_client_registration_callback(jack_client_t* client, JackClientRegistrationCallback registration_callback, void* arg);
  44. CARLA_EXPORT int jackbridge_set_port_registration_callback (jack_client_t* client, JackPortRegistrationCallback registration_callback, void *arg);
  45. CARLA_EXPORT int jackbridge_set_port_connect_callback (jack_client_t* client, JackPortConnectCallback connect_callback, void* arg);
  46. CARLA_EXPORT int jackbridge_set_port_rename_callback (jack_client_t* client, JackPortRenameCallback rename_callback, void* arg);
  47. CARLA_EXPORT int jackbridge_set_latency_callback(jack_client_t* client, JackLatencyCallback latency_callback, void* arg);
  48. CARLA_EXPORT jack_nframes_t jackbridge_get_sample_rate(jack_client_t* client);
  49. CARLA_EXPORT jack_nframes_t jackbridge_get_buffer_size(jack_client_t* client);
  50. CARLA_EXPORT jack_port_t* jackbridge_port_register(jack_client_t* client, const char* port_name, const char* port_type, unsigned long flags, unsigned long buffer_size);
  51. CARLA_EXPORT int jackbridge_port_unregister(jack_client_t* client, jack_port_t* port);
  52. CARLA_EXPORT void* jackbridge_port_get_buffer(jack_port_t* port, jack_nframes_t nframes);
  53. // port_register_ptr(nullptr),
  54. // port_unregister_ptr(nullptr),
  55. // port_get_buffer_ptr(nullptr),
  56. // port_name_ptr(nullptr),
  57. // port_short_name_ptr(nullptr),
  58. // port_flags_ptr(nullptr),
  59. // port_type_ptr(nullptr),
  60. // port_set_name_ptr(nullptr),
  61. // connect_ptr(nullptr),
  62. // disconnect_ptr(nullptr),
  63. CARLA_EXPORT int jackbridge_port_name_size();
  64. CARLA_EXPORT void jackbridge_port_get_latency_range(jack_port_t* port, jack_latency_callback_mode_t mode, jack_latency_range_t* range);
  65. CARLA_EXPORT void jackbridge_port_set_latency_range(jack_port_t* port, jack_latency_callback_mode_t mode, jack_latency_range_t* range);
  66. CARLA_EXPORT int jackbridge_recompute_total_latencies(jack_client_t* client);
  67. CARLA_EXPORT uint32_t jackbridge_midi_get_event_count(void* port_buffer);
  68. CARLA_EXPORT int jackbridge_midi_event_get(jack_midi_event_t* event, void* port_buffer, uint32_t event_index);
  69. CARLA_EXPORT void jackbridge_midi_clear_buffer(void* port_buffer);
  70. CARLA_EXPORT int jackbridge_midi_event_write(void* port_buffer, jack_nframes_t time, const jack_midi_data_t* data, size_t data_size);
  71. CARLA_EXPORT jack_midi_data_t* jackbridge_midi_event_reserve(void* port_buffer, jack_nframes_t time, size_t data_size);
  72. CARLA_EXPORT int jackbridge_transport_locate(jack_client_t* client, jack_nframes_t frame);
  73. CARLA_EXPORT void jackbridge_transport_start(jack_client_t* client);
  74. CARLA_EXPORT void jackbridge_transport_stop(jack_client_t* client);
  75. CARLA_EXPORT jack_transport_state_t jackbridge_transport_query(const jack_client_t* client, jack_position_t* pos);
  76. // CARLA_EXPORT void jackbridge_clock_gettime_rt(struct timespec*);
  77. // CARLA_EXPORT int jackbridge_sem_post(void*);
  78. // CARLA_EXPORT int jackbridge_sem_timedwait(void*, struct timespec*);
  79. #endif // __JACKBRIDGE_HPP__