Collection of tools useful for audio production
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.

61 lines
3.3KB

  1. /*
  2. * Carla JackBridge
  3. * Copyright (C) 2012 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 2 of the License, or
  8. * any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * For a full copy of the GNU General Public License see the COPYING file
  16. */
  17. #ifndef CARLA_JACKBRIDGE_H
  18. #define CARLA_JACKBRIDGE_H
  19. #include "carla_includes.h"
  20. #include <jack/types.h>
  21. typedef unsigned char jackbridge_midi_data_t;
  22. struct jackbridge_midi_event_t {
  23. jack_nframes_t time;
  24. size_t size;
  25. jackbridge_midi_data_t* buffer;
  26. };
  27. CARLA_EXPORT jack_client_t* jackbridge_client_open(const char* client_name, jack_options_t options, jack_status_t* status);
  28. CARLA_EXPORT int jackbridge_client_close(jack_client_t* client);
  29. CARLA_EXPORT int jackbridge_client_name_size();
  30. CARLA_EXPORT char* jackbridge_get_client_name(jack_client_t* client);
  31. CARLA_EXPORT int jackbridge_port_name_size();
  32. CARLA_EXPORT int jackbridge_activate(jack_client_t* client);
  33. CARLA_EXPORT int jackbridge_deactivate(jack_client_t* client);
  34. CARLA_EXPORT int jackbridge_set_process_thread(jack_client_t* client, JackThreadCallback thread_callback, void *arg);
  35. CARLA_EXPORT void jackbridge_on_shutdown(jack_client_t* client, JackShutdownCallback shutdown_callback, void* arg);
  36. CARLA_EXPORT int jackbridge_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg);
  37. CARLA_EXPORT int jackbridge_set_freewheel_callback(jack_client_t* client, JackFreewheelCallback freewheel_callback, void* arg);
  38. CARLA_EXPORT int jackbridge_set_buffer_size_callback(jack_client_t* client, JackBufferSizeCallback bufsize_callback, void* arg);
  39. CARLA_EXPORT int jackbridge_set_sample_rate_callback(jack_client_t* client, JackSampleRateCallback srate_callback, void* arg);
  40. CARLA_EXPORT jack_nframes_t jackbridge_get_sample_rate(jack_client_t* client);
  41. CARLA_EXPORT jack_nframes_t jackbridge_get_buffer_size(jack_client_t* client);
  42. 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);
  43. CARLA_EXPORT int jackbridge_port_unregister(jack_client_t* client, jack_port_t* port);
  44. CARLA_EXPORT void* jackbridge_port_get_buffer(jack_port_t* port, jack_nframes_t nframes);
  45. CARLA_EXPORT uint32_t jackbridge_midi_get_event_count(void* port_buffer);
  46. CARLA_EXPORT int jackbridge_midi_event_get(jackbridge_midi_event_t* event, void* port_buffer, uint32_t event_index);
  47. CARLA_EXPORT void jackbridge_midi_clear_buffer(void* port_buffer);
  48. CARLA_EXPORT jackbridge_midi_data_t* jackbridge_midi_event_reserve(void* port_buffer, jack_nframes_t time, size_t data_size);
  49. CARLA_EXPORT int jackbridge_midi_event_write(void* port_buffer, jack_nframes_t time, const jackbridge_midi_data_t* data, size_t data_size);
  50. CARLA_EXPORT jack_transport_state_t jackbridge_transport_query(const jack_client_t* client, jack_position_t* pos);
  51. #endif // CARLA_JACKBRIDGE_H