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.

240 lines
5.5KB

  1. /*
  2. * Carla JackBridge
  3. * Copyright (C) 2012 Filipe Coelho <falktx@gmail.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. #include "carla_jackbridge.h"
  18. #ifndef JACKBRIDGE_DUMMY
  19. #include <jack/jack.h>
  20. #include <jack/midiport.h>
  21. #endif
  22. jack_client_t* jackbridge_client_open(const char* client_name, jack_options_t options, jack_status_t* status)
  23. {
  24. #ifndef JACKBRIDGE_DUMMY
  25. return jack_client_open(client_name, options, status);
  26. #else
  27. return nullptr;
  28. #endif
  29. }
  30. int jackbridge_client_close(jack_client_t* client)
  31. {
  32. #ifndef JACKBRIDGE_DUMMY
  33. return jack_client_close(client);
  34. #else
  35. return 0;
  36. #endif
  37. }
  38. int jackbridge_client_name_size()
  39. {
  40. #ifndef JACKBRIDGE_DUMMY
  41. return jack_client_name_size();
  42. #else
  43. return 0;
  44. #endif
  45. }
  46. char* jackbridge_get_client_name(jack_client_t* client)
  47. {
  48. #ifndef JACKBRIDGE_DUMMY
  49. return jack_get_client_name(client);
  50. #else
  51. return nullptr;
  52. #endif
  53. }
  54. int jackbridge_port_name_size()
  55. {
  56. #ifndef JACKBRIDGE_DUMMY
  57. return jack_port_name_size();
  58. #else
  59. return 0;
  60. #endif
  61. }
  62. int jackbridge_activate(jack_client_t* client)
  63. {
  64. #ifndef JACKBRIDGE_DUMMY
  65. return jack_activate(client);
  66. #else
  67. return 0;
  68. #endif
  69. }
  70. int jackbridge_deactivate(jack_client_t* client)
  71. {
  72. #ifndef JACKBRIDGE_DUMMY
  73. return jack_deactivate(client);
  74. #else
  75. return 0;
  76. #endif
  77. }
  78. int jackbridge_set_process_thread(jack_client_t* client, JackThreadCallback thread_callback, void *arg)
  79. {
  80. #ifndef JACKBRIDGE_DUMMY
  81. return jack_set_process_thread(client, thread_callback, arg);
  82. #else
  83. return 0;
  84. #endif
  85. }
  86. void jackbridge_on_shutdown(jack_client_t* client, JackShutdownCallback shutdown_callback, void* arg)
  87. {
  88. #ifndef JACKBRIDGE_DUMMY
  89. jack_on_shutdown(client, shutdown_callback, arg);
  90. #endif
  91. }
  92. int jackbridge_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg)
  93. {
  94. #ifndef JACKBRIDGE_DUMMY
  95. return jack_set_process_callback(client, process_callback, arg);
  96. #else
  97. return 0;
  98. #endif
  99. }
  100. int jackbridge_set_freewheel_callback(jack_client_t* client, JackFreewheelCallback freewheel_callback, void* arg)
  101. {
  102. #ifndef JACKBRIDGE_DUMMY
  103. return jack_set_freewheel_callback(client, freewheel_callback, arg);
  104. #else
  105. return 0;
  106. #endif
  107. }
  108. int jackbridge_set_buffer_size_callback(jack_client_t* client, JackBufferSizeCallback bufsize_callback, void* arg)
  109. {
  110. #ifndef JACKBRIDGE_DUMMY
  111. return jack_set_buffer_size_callback(client, bufsize_callback, arg);
  112. #else
  113. return 0;
  114. #endif
  115. }
  116. int jackbridge_set_sample_rate_callback(jack_client_t* client, JackSampleRateCallback srate_callback, void* arg)
  117. {
  118. #ifndef JACKBRIDGE_DUMMY
  119. return jack_set_sample_rate_callback(client, srate_callback, arg);
  120. #else
  121. return 0;
  122. #endif
  123. }
  124. jack_nframes_t jackbridge_get_sample_rate(jack_client_t* client)
  125. {
  126. #ifndef JACKBRIDGE_DUMMY
  127. return jack_get_sample_rate(client);
  128. #else
  129. return 0;
  130. #endif
  131. }
  132. jack_nframes_t jackbridge_get_buffer_size(jack_client_t* client)
  133. {
  134. #ifndef JACKBRIDGE_DUMMY
  135. return jack_get_buffer_size(client);
  136. #else
  137. return 0;
  138. #endif
  139. }
  140. 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)
  141. {
  142. #ifndef JACKBRIDGE_DUMMY
  143. return jack_port_register(client, port_name, port_type, flags, buffer_size);
  144. #else
  145. return nullptr;
  146. #endif
  147. }
  148. int jackbridge_port_unregister(jack_client_t* client, jack_port_t* port)
  149. {
  150. #ifndef JACKBRIDGE_DUMMY
  151. return jack_port_unregister(client, port);
  152. #else
  153. return 0;
  154. #endif
  155. }
  156. void* jackbridge_port_get_buffer(jack_port_t* port, jack_nframes_t nframes)
  157. {
  158. #ifndef JACKBRIDGE_DUMMY
  159. return jack_port_get_buffer(port, nframes);
  160. #else
  161. return nullptr;
  162. #endif
  163. }
  164. // -----------------------------------------------------------------------------
  165. uint32_t jackbridge_midi_get_event_count(void* port_buffer)
  166. {
  167. #ifndef JACKBRIDGE_DUMMY
  168. return jack_midi_get_event_count(port_buffer);
  169. #else
  170. return 0;
  171. #endif
  172. }
  173. int jackbridge_midi_event_get(jackbridge_midi_event_t* event, void* port_buffer, uint32_t event_index)
  174. {
  175. #ifndef JACKBRIDGE_DUMMY
  176. return jack_midi_event_get((jack_midi_event_t*)event, port_buffer, event_index);
  177. #else
  178. return 0;
  179. #endif
  180. }
  181. void jackbridge_midi_clear_buffer(void* port_buffer)
  182. {
  183. #ifndef JACKBRIDGE_DUMMY
  184. jack_midi_clear_buffer(port_buffer);
  185. #endif
  186. }
  187. jackbridge_midi_data_t* jackbridge_midi_event_reserve(void* port_buffer, jack_nframes_t time, size_t data_size)
  188. {
  189. #ifndef JACKBRIDGE_DUMMY
  190. return jack_midi_event_reserve(port_buffer, time, data_size);
  191. #else
  192. return nullptr;
  193. #endif
  194. }
  195. int jackbridge_midi_event_write(void* port_buffer, jack_nframes_t time, const jackbridge_midi_data_t* data, size_t data_size)
  196. {
  197. #ifndef JACKBRIDGE_DUMMY
  198. return jack_midi_event_write(port_buffer, time, (jack_midi_data_t*)data, data_size);
  199. #else
  200. return 0;
  201. #endif
  202. }
  203. // -----------------------------------------------------------------------------
  204. jack_transport_state_t jackbridge_transport_query(const jack_client_t* client, jack_position_t* pos)
  205. {
  206. #ifndef JACKBRIDGE_DUMMY
  207. return jack_transport_query(client, pos);
  208. #else
  209. return JackTransportStopped;
  210. #endif
  211. }