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.

CarlaStandalone.hpp 19KB

11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732
  1. /*
  2. * Carla Standalone API
  3. * Copyright (C) 2011-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 General Public License as
  7. * published by the Free Software Foundation; either version 2 of
  8. * the License, or 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 doc/GPL.txt file.
  16. */
  17. #ifndef CARLA_STANDALONE_HPP_INCLUDED
  18. #define CARLA_STANDALONE_HPP_INCLUDED
  19. #include "CarlaBackend.hpp"
  20. /*!
  21. * @defgroup CarlaStandaloneAPI Carla Standalone API
  22. *
  23. * The Carla Standalone API.
  24. *
  25. * This API makes it possible to use the Carla Backend in a Standalone application.\n
  26. * All functions are C-compatible, making it possible to use this API in non-C++ hosts.
  27. *
  28. * None of the returned values in this API calls need to be deleted or free'd.\n
  29. * When a function fails (returns false or NULL), use carla_get_last_error() to find out what went wrong.
  30. *
  31. * @{
  32. */
  33. /*!
  34. * @defgroup HelperTypedefs Helper typedefs
  35. *
  36. * Basic typedefs to help make code cleaner.
  37. * @{
  38. */
  39. typedef CarlaBackend::BinaryType CarlaBinaryType;
  40. typedef CarlaBackend::PluginType CarlaPluginType;
  41. typedef CarlaBackend::PluginCategory CarlaPluginCategory;
  42. typedef CarlaBackend::OptionsType CarlaOptionsType;
  43. typedef CarlaBackend::CallbackType CarlaCallbackType;
  44. typedef CarlaBackend::CallbackFunc CarlaCallbackFunc;
  45. typedef CarlaBackend::ParameterData CarlaParameterData;
  46. typedef CarlaBackend::ParameterRanges CarlaParameterRanges;
  47. typedef CarlaBackend::MidiProgramData CarlaMidiProgramData;
  48. typedef CarlaBackend::CustomData CarlaCustomData;
  49. /**@}*/
  50. /*!
  51. * Plugin information.
  52. * \see carla_get_plugin_info()
  53. */
  54. struct CarlaPluginInfo {
  55. CarlaPluginType type;
  56. CarlaPluginCategory category;
  57. unsigned int hints;
  58. unsigned int optionsAvailable;
  59. unsigned int optionsEnabled;
  60. const char* binary;
  61. const char* name;
  62. const char* label;
  63. const char* maker;
  64. const char* copyright;
  65. const char* iconName;
  66. long uniqueId;
  67. uint32_t latency;
  68. #ifndef DOXYGEN
  69. CarlaPluginInfo()
  70. : type(CarlaBackend::PLUGIN_NONE),
  71. category(CarlaBackend::PLUGIN_CATEGORY_NONE),
  72. hints(0x0),
  73. optionsAvailable(0x0),
  74. optionsEnabled(0x0),
  75. binary(nullptr),
  76. name(nullptr),
  77. label(nullptr),
  78. maker(nullptr),
  79. copyright(nullptr),
  80. iconName(nullptr),
  81. uniqueId(0),
  82. latency(0) {}
  83. ~CarlaPluginInfo()
  84. {
  85. if (label != nullptr)
  86. {
  87. delete[] label;
  88. label = nullptr;
  89. }
  90. if (maker != nullptr)
  91. {
  92. delete[] maker;
  93. maker = nullptr;
  94. }
  95. if (copyright != nullptr)
  96. {
  97. delete[] copyright;
  98. copyright = nullptr;
  99. }
  100. }
  101. #endif
  102. };
  103. /*!
  104. * Native plugin information.
  105. * \see carla_get_internal_plugin_info()
  106. */
  107. struct CarlaNativePluginInfo {
  108. CarlaPluginCategory category;
  109. unsigned int hints;
  110. uint32_t audioIns;
  111. uint32_t audioOuts;
  112. uint32_t midiIns;
  113. uint32_t midiOuts;
  114. uint32_t parameterIns;
  115. uint32_t parameterOuts;
  116. const char* name;
  117. const char* label;
  118. const char* maker;
  119. const char* copyright;
  120. #ifndef DOXYGEN
  121. CarlaNativePluginInfo()
  122. : category(CarlaBackend::PLUGIN_CATEGORY_NONE),
  123. hints(0x0),
  124. audioIns(0),
  125. audioOuts(0),
  126. midiIns(0),
  127. midiOuts(0),
  128. parameterIns(0),
  129. parameterOuts(0),
  130. name(nullptr),
  131. label(nullptr),
  132. maker(nullptr),
  133. copyright(nullptr) {}
  134. #endif
  135. };
  136. /*!
  137. * Port count information, used for Audio and MIDI ports and parameters.
  138. * \see carla_get_audio_port_count_info()
  139. * \see carla_get_midi_port_count_info()
  140. * \see carla_get_parameter_count_info()
  141. */
  142. struct CarlaPortCountInfo {
  143. uint32_t ins;
  144. uint32_t outs;
  145. uint32_t total;
  146. #ifndef DOXYGEN
  147. CarlaPortCountInfo()
  148. : ins(0),
  149. outs(0),
  150. total(0) {}
  151. #endif
  152. };
  153. /*!
  154. * Parameter information.
  155. * \see carla_get_parameter_info()
  156. */
  157. struct CarlaParameterInfo {
  158. const char* name;
  159. const char* symbol;
  160. const char* unit;
  161. uint32_t scalePointCount;
  162. #ifndef DOXYGEN
  163. CarlaParameterInfo()
  164. : name(nullptr),
  165. symbol(nullptr),
  166. unit(nullptr),
  167. scalePointCount(0) {}
  168. ~CarlaParameterInfo()
  169. {
  170. if (name != nullptr)
  171. {
  172. delete[] name;
  173. name = nullptr;
  174. }
  175. if (symbol != nullptr)
  176. {
  177. delete[] symbol;
  178. symbol = nullptr;
  179. }
  180. if (unit != nullptr)
  181. {
  182. delete[] unit;
  183. unit = nullptr;
  184. }
  185. }
  186. #endif
  187. };
  188. /*!
  189. * Parameter scale point information.
  190. * \see carla_get_parameter_scalepoint_info()
  191. */
  192. struct CarlaScalePointInfo {
  193. float value;
  194. const char* label;
  195. #ifndef DOXYGEN
  196. CarlaScalePointInfo()
  197. : value(0.0f),
  198. label(nullptr) {}
  199. ~CarlaScalePointInfo()
  200. {
  201. if (label != nullptr)
  202. {
  203. delete[] label;
  204. label = nullptr;
  205. }
  206. }
  207. #endif
  208. };
  209. /*!
  210. * Transport information.
  211. * \see carla_get_transport_info()
  212. */
  213. struct CarlaTransportInfo {
  214. bool playing;
  215. uint32_t frame;
  216. int32_t bar;
  217. int32_t beat;
  218. int32_t tick;
  219. double bpm;
  220. #ifndef DOXYGEN
  221. CarlaTransportInfo()
  222. : playing(false),
  223. frame(0),
  224. bar(0),
  225. beat(0),
  226. bpm(0.0) {}
  227. #endif
  228. };
  229. /*!
  230. * Get the complete license text of used third-party code and features.\n
  231. * Returned string is in basic html format.
  232. */
  233. CARLA_EXPORT const char* carla_get_extended_license_text();
  234. /*!
  235. * Get the supported file types in carla_load_filename().\n
  236. * Returned string uses this syntax:
  237. * \code
  238. * "*.ext1;*.ext2;*.ext3"
  239. * \endcode
  240. */
  241. CARLA_EXPORT const char* carla_get_supported_file_types();
  242. /*!
  243. * Get how many engine drivers are available to use.
  244. */
  245. CARLA_EXPORT unsigned int carla_get_engine_driver_count();
  246. /*!
  247. * Get the engine driver name \a index.
  248. */
  249. CARLA_EXPORT const char* carla_get_engine_driver_name(unsigned int index);
  250. /*!
  251. * Get the device names of the engine driver at \a index (for use in non-JACK drivers).\n
  252. * May return NULL.
  253. */
  254. CARLA_EXPORT const char** carla_get_engine_driver_device_names(unsigned int index);
  255. /*!
  256. * Get how many internal plugins are available to use.
  257. */
  258. CARLA_EXPORT unsigned int carla_get_internal_plugin_count();
  259. /*!
  260. * Get information about the internal plugin \a internalPluginId.
  261. */
  262. CARLA_EXPORT const CarlaNativePluginInfo* carla_get_internal_plugin_info(unsigned int internalPluginId);
  263. /*!
  264. * Initialize the engine with driver \a driverName, using \a clientName for its internal name.\n
  265. * Make sure to call carla_engine_idle() at regular intervals afterwards.
  266. */
  267. CARLA_EXPORT bool carla_engine_init(const char* driverName, const char* clientName);
  268. /*!
  269. * Close the running engine.\n
  270. * This function always closes the engine even if it returns false.\n
  271. * When false is returned, something went wrong when closing the engine, but it was still closed nonetheless.
  272. */
  273. CARLA_EXPORT bool carla_engine_close();
  274. /*!
  275. * Idle the running engine.\n
  276. * \note This should never be called if the engine is not running.
  277. */
  278. CARLA_EXPORT void carla_engine_idle();
  279. /*!
  280. * Check if the engine is running.
  281. */
  282. CARLA_EXPORT bool carla_is_engine_running();
  283. /*!
  284. * Tell the engine it's about to close.\n
  285. * This is used to prevent the engine thread(s) from reactivating.
  286. */
  287. CARLA_EXPORT void carla_set_engine_about_to_close();
  288. /*!
  289. * Set the engine callback function to \a func.
  290. * Use \a ptr to pass a custom pointer to the callback.
  291. */
  292. CARLA_EXPORT void carla_set_engine_callback(CarlaCallbackFunc func, void* ptr);
  293. /*!
  294. * Set the engine option \a option.\n
  295. * With the exception of OPTION_PROCESS_NAME, OPTION_TRANSPORT_MODE and OPTION_PATH_*,
  296. * this function should not be called when the engine is running.
  297. */
  298. CARLA_EXPORT void carla_set_engine_option(CarlaOptionsType option, int value, const char* valueStr);
  299. /*!
  300. * Load \a filename of any type.\n
  301. * This will try to load a generic file as a plugin,
  302. * either by direct handling (GIG, SF2 and SFZ) or by using an internal plugin (like Audio and MIDI).
  303. * \see carla_get_supported_file_types()
  304. */
  305. CARLA_EXPORT bool carla_load_filename(const char* filename);
  306. /*!
  307. * Load \a filename project file.\n
  308. * (project files have *.carxp extension)
  309. * \note Already loaded plugins are not removed; call carla_remove_all_plugins() first if needed.
  310. */
  311. CARLA_EXPORT bool carla_load_project(const char* filename);
  312. /*!
  313. * Save current project to \a filename.\n
  314. * (project files have *.carxp extension)
  315. */
  316. CARLA_EXPORT bool carla_save_project(const char* filename);
  317. /*!
  318. * Connect patchbay ports \a portA and \a portB.
  319. */
  320. CARLA_EXPORT bool carla_patchbay_connect(int portA, int portB);
  321. /*!
  322. * Disconnect patchbay connection \a connectionId.
  323. */
  324. CARLA_EXPORT bool carla_patchbay_disconnect(int connectionId);
  325. /*!
  326. * Force the engine to resend all patchbay clients, ports and connections again.
  327. */
  328. CARLA_EXPORT void carla_patchbay_refresh();
  329. /*!
  330. * Start playback of the engine transport.
  331. */
  332. CARLA_EXPORT void carla_transport_play();
  333. /*!
  334. * Pause the engine transport.
  335. */
  336. CARLA_EXPORT void carla_transport_pause();
  337. /*!
  338. * Relocate the engine transport to \a frames.
  339. */
  340. CARLA_EXPORT void carla_transport_relocate(uint32_t frames);
  341. /*!
  342. * Get the current transport frame.
  343. */
  344. CARLA_EXPORT uint32_t carla_get_current_transport_frame();
  345. /*!
  346. * Get the engine transport information.
  347. */
  348. CARLA_EXPORT const CarlaTransportInfo* carla_get_transport_info();
  349. /*!
  350. * Add new plugin.\n
  351. * If you don't know the binary type, use BINARY_NATIVE.
  352. */
  353. CARLA_EXPORT bool carla_add_plugin(CarlaBinaryType btype, CarlaPluginType ptype, const char* filename, const char* name, const char* label, const void* extraPtr);
  354. /*!
  355. * Remove plugin with id \a pluginId.
  356. */
  357. CARLA_EXPORT bool carla_remove_plugin(unsigned int pluginId);
  358. /*!
  359. * Remove all plugins.
  360. */
  361. CARLA_EXPORT void carla_remove_all_plugins();
  362. /*!
  363. * Rename plugin with id \a pluginId to \a newName. \n
  364. * Returns the new name, or NULL if the operation failed.
  365. */
  366. CARLA_EXPORT const char* carla_rename_plugin(unsigned int pluginId, const char* newName);
  367. /*!
  368. * Clone plugin with id \a pluginId.
  369. */
  370. CARLA_EXPORT bool carla_clone_plugin(unsigned int pluginId);
  371. /*!
  372. * Prepare replace of plugin with id \a pluginId. \n
  373. * The next call to carla_add_plugin() will use this id, replacing the current plugin.
  374. * \note This function requires carla_add_plugin() to be called afterwards as soon as possible.
  375. */
  376. CARLA_EXPORT bool carla_replace_plugin(unsigned int pluginId);
  377. /*!
  378. * Switch plugins with id \a pluginIdA and \a pluginIdB.
  379. */
  380. CARLA_EXPORT bool carla_switch_plugins(unsigned int pluginIdA, unsigned int pluginIdB);
  381. /*!
  382. * Load the plugin state at \a filename.\n
  383. * (Plugin states have *.carxs extension).
  384. * \see carla_save_plugin_state()
  385. */
  386. CARLA_EXPORT bool carla_load_plugin_state(unsigned int pluginId, const char* filename);
  387. /*!
  388. * Load the plugin state at \a filename.\n
  389. * (Plugin states have *.carxs extension).
  390. * \see carla_load_plugin_state()
  391. */
  392. CARLA_EXPORT bool carla_save_plugin_state(unsigned int pluginId, const char* filename);
  393. /*!
  394. * Get a plugin's information.
  395. */
  396. CARLA_EXPORT const CarlaPluginInfo* carla_get_plugin_info(unsigned int pluginId);
  397. /*!
  398. * Get a plugin's audio port count information.
  399. */
  400. CARLA_EXPORT const CarlaPortCountInfo* carla_get_audio_port_count_info(unsigned int pluginId);
  401. /*!
  402. * Get a plugin's midi port count information.
  403. */
  404. CARLA_EXPORT const CarlaPortCountInfo* carla_get_midi_port_count_info(unsigned int pluginId);
  405. /*!
  406. * Get a plugin's parameter count information.
  407. */
  408. CARLA_EXPORT const CarlaPortCountInfo* carla_get_parameter_count_info(unsigned int pluginId);
  409. /*!
  410. * * Get a plugin's parameter information.
  411. */
  412. CARLA_EXPORT const CarlaParameterInfo* carla_get_parameter_info(unsigned int pluginId, uint32_t parameterId);
  413. /*!
  414. * Get a plugin's parameter scale point information.
  415. */
  416. CARLA_EXPORT const CarlaScalePointInfo* carla_get_parameter_scalepoint_info(unsigned int pluginId, uint32_t parameterId, uint32_t scalePointId);
  417. /*!
  418. * Get a plugin's parameter data.
  419. */
  420. CARLA_EXPORT const CarlaParameterData* carla_get_parameter_data(unsigned int pluginId, uint32_t parameterId);
  421. /*!
  422. * Get a plugin's parameter ranges.
  423. */
  424. CARLA_EXPORT const CarlaParameterRanges* carla_get_parameter_ranges(unsigned int pluginId, uint32_t parameterId);
  425. /*!
  426. * Get a plugin's midi program data.
  427. */
  428. CARLA_EXPORT const CarlaMidiProgramData* carla_get_midi_program_data(unsigned int pluginId, uint32_t midiProgramId);
  429. /*!
  430. * Get a plugin's custom data.
  431. */
  432. CARLA_EXPORT const CarlaCustomData* carla_get_custom_data(unsigned int pluginId, uint32_t customDataId);
  433. /*!
  434. * Get a plugin's chunk data.
  435. */
  436. CARLA_EXPORT const char* carla_get_chunk_data(unsigned int pluginId);
  437. /*!
  438. * Get how many parameters a plugin has.
  439. */
  440. CARLA_EXPORT uint32_t carla_get_parameter_count(unsigned int pluginId);
  441. /*!
  442. * Get how many programs a plugin has.
  443. */
  444. CARLA_EXPORT uint32_t carla_get_program_count(unsigned int pluginId);
  445. /*!
  446. * Get how many midi programs a plugin has.
  447. */
  448. CARLA_EXPORT uint32_t carla_get_midi_program_count(unsigned int pluginId);
  449. /*!
  450. * Get how many custom data sets a plugin has.
  451. * \see carla_prepare_for_save()
  452. */
  453. CARLA_EXPORT uint32_t carla_get_custom_data_count(unsigned int pluginId);
  454. /*!
  455. * Get a plugin's custom parameter text display.
  456. * \see PARAMETER_USES_CUSTOM_TEXT
  457. */
  458. CARLA_EXPORT const char* carla_get_parameter_text(unsigned int pluginId, uint32_t parameterId);
  459. /*!
  460. * Get a plugin's program name.
  461. */
  462. CARLA_EXPORT const char* carla_get_program_name(unsigned int pluginId, uint32_t programId);
  463. /*!
  464. * Get a plugin's midi program name.
  465. */
  466. CARLA_EXPORT const char* carla_get_midi_program_name(unsigned int pluginId, uint32_t midiProgramId);
  467. /*!
  468. * Get the plugin's real name.\n
  469. * This is the name the plugin uses to identify itself; may not be unique.
  470. */
  471. CARLA_EXPORT const char* carla_get_real_plugin_name(unsigned int pluginId);
  472. /*!
  473. * Get the current plugin's program index.
  474. */
  475. CARLA_EXPORT int32_t carla_get_current_program_index(unsigned int pluginId);
  476. /*!
  477. * Get the current plugin's midi program index.
  478. */
  479. CARLA_EXPORT int32_t carla_get_current_midi_program_index(unsigned int pluginId);
  480. /*!
  481. * Get a plugin's default parameter value.
  482. */
  483. CARLA_EXPORT float carla_get_default_parameter_value(unsigned int pluginId, uint32_t parameterId);
  484. /*!
  485. * Get a plugin's current parameter value.
  486. */
  487. CARLA_EXPORT float carla_get_current_parameter_value(unsigned int pluginId, uint32_t parameterId);
  488. /*!
  489. * Get a plugin's input peak value.\n
  490. * \a portId must only be either 1 or 2
  491. */
  492. CARLA_EXPORT float carla_get_input_peak_value(unsigned int pluginId, unsigned short portId);
  493. /*!
  494. * Get a plugin's output peak value.\n
  495. * \a portId must only be either 1 or 2
  496. */
  497. CARLA_EXPORT float carla_get_output_peak_value(unsigned int pluginId, unsigned short portId);
  498. /*!
  499. * Enable a plugin's option.
  500. * \see PluginOptions
  501. */
  502. CARLA_EXPORT void carla_set_option(unsigned int pluginId, unsigned int option, bool yesNo);
  503. /*!
  504. * Enable or disable a plugin according to \a onOff.
  505. */
  506. CARLA_EXPORT void carla_set_active(unsigned int pluginId, bool onOff);
  507. #ifndef BUILD_BRIDGE
  508. /*!
  509. * Change a plugin's internal drywet value to \a value.
  510. */
  511. CARLA_EXPORT void carla_set_drywet(unsigned int pluginId, float value);
  512. /*!
  513. * Change a plugin's internal volume value to \a value.
  514. */
  515. CARLA_EXPORT void carla_set_volume(unsigned int pluginId, float value);
  516. /*!
  517. * Change a plugin's internal balance-left value to \a value.
  518. */
  519. CARLA_EXPORT void carla_set_balance_left(unsigned int pluginId, float value);
  520. /*!
  521. * Change a plugin's internal balance-right value to \a value.
  522. */
  523. CARLA_EXPORT void carla_set_balance_right(unsigned int pluginId, float value);
  524. /*!
  525. * Change a plugin's internal panning value to \a value.
  526. */
  527. CARLA_EXPORT void carla_set_panning(unsigned int pluginId, float value);
  528. #endif
  529. /*!
  530. * Change a plugin's internal control channel to \a channel.
  531. */
  532. CARLA_EXPORT void carla_set_ctrl_channel(unsigned int pluginId, int8_t channel);
  533. /*!
  534. * Set the plugin's parameter \a parameterId to \a value.
  535. */
  536. CARLA_EXPORT void carla_set_parameter_value(unsigned int pluginId, uint32_t parameterId, float value);
  537. #ifndef BUILD_BRIDGE
  538. /*!
  539. * Set the plugin's parameter \a parameterId midi channel to \a channel.
  540. */
  541. CARLA_EXPORT void carla_set_parameter_midi_channel(unsigned int pluginId, uint32_t parameterId, uint8_t channel);
  542. /*!
  543. * Set the plugin's parameter \a parameterId midi cc to \a cc.
  544. */
  545. CARLA_EXPORT void carla_set_parameter_midi_cc(unsigned int pluginId, uint32_t parameterId, int16_t cc);
  546. #endif
  547. /*!
  548. * Change a plugin's program to \a programId.
  549. */
  550. CARLA_EXPORT void carla_set_program(unsigned int pluginId, uint32_t programId);
  551. /*!
  552. * Change a plugin's midi program to \a midiProgramId.
  553. */
  554. CARLA_EXPORT void carla_set_midi_program(unsigned int pluginId, uint32_t midiProgramId);
  555. /*!
  556. * Set a plugin's custom data set.
  557. */
  558. CARLA_EXPORT void carla_set_custom_data(unsigned int pluginId, const char* type, const char* key, const char* value);
  559. /*!
  560. * Set a plugin's chunk data.
  561. */
  562. CARLA_EXPORT void carla_set_chunk_data(unsigned int pluginId, const char* chunkData);
  563. /*!
  564. * Tell a plugin to prepare for save.\n
  565. * This should be called before carla_get_custom_data_count().
  566. */
  567. CARLA_EXPORT void carla_prepare_for_save(unsigned int pluginId);
  568. #ifndef BUILD_BRIDGE
  569. /*!
  570. * Send a single note of a plugin.\n
  571. * If \a note if 0, note-off is sent; note-on otherwise.
  572. */
  573. CARLA_EXPORT void carla_send_midi_note(unsigned int pluginId, uint8_t channel, uint8_t note, uint8_t velocity);
  574. #endif
  575. /*!
  576. * Tell a plugin to show its own custom UI.
  577. * \see PLUGIN_HAS_GUI
  578. */
  579. CARLA_EXPORT void carla_show_gui(unsigned int pluginId, bool yesNo);
  580. /*!
  581. * Get the current engine buffer size.
  582. */
  583. CARLA_EXPORT uint32_t carla_get_buffer_size();
  584. /*!
  585. * Get the current engine sample rate.
  586. */
  587. CARLA_EXPORT double carla_get_sample_rate();
  588. /*!
  589. * Get the last error.
  590. */
  591. CARLA_EXPORT const char* carla_get_last_error();
  592. /*!
  593. * Get the current engine OSC URL (TCP).
  594. */
  595. CARLA_EXPORT const char* carla_get_host_osc_url_tcp();
  596. /*!
  597. * Get the current engine OSC URL (UDP).
  598. */
  599. CARLA_EXPORT const char* carla_get_host_osc_url_udp();
  600. /*!
  601. * Send NSM announce message.
  602. */
  603. CARLA_EXPORT void carla_nsm_announce(const char* url, const char* appName, int pid);
  604. /*!
  605. * Ready for handling NSM messages.
  606. */
  607. CARLA_EXPORT void carla_nsm_ready();
  608. /*!
  609. * Reply to NSM open message.
  610. * \see CALLBACK_NSM_OPEN
  611. */
  612. CARLA_EXPORT void carla_nsm_reply_open();
  613. /*!
  614. * Reply to NSM save message.
  615. * \see CALLBACK_NSM_SAVE
  616. */
  617. CARLA_EXPORT void carla_nsm_reply_save();
  618. #ifdef BUILD_BRIDGE
  619. using CarlaBackend::CarlaEngine;
  620. CARLA_EXPORT CarlaEngine* carla_get_standalone_engine();
  621. CARLA_EXPORT bool carla_engine_init_bridge(const char* audioBaseName, const char* controlBaseName, const char* clientName);
  622. #endif
  623. /**@}*/
  624. #endif // CARLA_STANDALONE_HPP_INCLUDED