LMMS
Loading...
Searching...
No Matches
CarlaNative.h
Go to the documentation of this file.
1/*
2 * Carla Native Plugin API
3 * Copyright (C) 2012-2023 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
18#ifndef CARLA_NATIVE_H_INCLUDED
19#define CARLA_NATIVE_H_INCLUDED
20
21#include "CarlaDefines.h"
22#include <stddef.h>
23#include <stdint.h>
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
35
36typedef void* NativeHostHandle;
37typedef void* NativePluginHandle;
38
39/* ------------------------------------------------------------------------------------------------------------
40 * enums */
41
54
72
83
88
101
114
132
133/* ------------------------------------------------------------------------------------------------------------
134 * base structs */
135
136typedef struct {
137 const char* label;
138 float value;
140
141typedef struct {
142 float def;
143 float min;
144 float max;
145 float step;
149
150#define PARAMETER_RANGES_DEFAULT_STEP 0.01f
151#define PARAMETER_RANGES_DEFAULT_STEP_SMALL 0.0001f
152#define PARAMETER_RANGES_DEFAULT_STEP_LARGE 0.1f
153
168
175
176typedef struct {
179 const char* name;
181
182typedef struct {
183 bool valid;
184
187 double tick;
189
191 float beatType;
192
196
197typedef struct {
199 uint64_t frame;
200 uint64_t usecs;
203
204typedef struct {
205 unsigned char* data;
206 int width;
210
211typedef struct {
214
215/* ------------------------------------------------------------------------------------------------------------
216 * HostDescriptor */
217
218typedef struct {
220 const char* resourceDir;
221 const char* uiName;
222 uintptr_t uiParentId;
223
227
228 const NativeTimeInfo* (*get_time_info)(NativeHostHandle handle);
230
235
236 const char* (*ui_open_file)(NativeHostHandle handle, bool isDir, const char* title, const char* filter);
237 const char* (*ui_save_file)(NativeHostHandle handle, bool isDir, const char* title, const char* filter);
238
240 NativeHostDispatcherOpcode opcode, int32_t index, intptr_t value, void* ptr, float opt);
241
243
244/* ------------------------------------------------------------------------------------------------------------
245 * PluginDescriptor */
246
257 const char* const name;
258 const char* const label;
259 const char* const maker;
260 const char* const copyright;
261
264
266 const NativeParameter* (*get_parameter_info)(NativePluginHandle handle, uint32_t index);
268
270 const NativeMidiProgram* (*get_midi_program_info)(NativePluginHandle handle, uint32_t index);
271
274 void (*set_custom_data)(NativePluginHandle handle, const char* key, const char* value);
275
276 void (*ui_show)(NativePluginHandle handle, bool show);
278
281 void (*ui_set_custom_data)(NativePluginHandle handle, const char* key, const char* value);
282
285
286 /* FIXME for v3.0, use const for the input buffer */
288 float** inBuffer, float** outBuffer, uint32_t frames,
289 const NativeMidiEvent* midiEvents, uint32_t midiEventCount);
290
291 char* (*get_state)(NativePluginHandle handle);
292 void (*set_state)(NativePluginHandle handle, const char* data);
293
294 intptr_t (*dispatcher)(NativePluginHandle handle,
295 NativePluginDispatcherOpcode opcode, int32_t index, intptr_t value, void* ptr, float opt);
296
297 /* placed at the end for backwards compatibility. only valid if NATIVE_PLUGIN_HAS_INLINE_DISPLAY is set */
298 const NativeInlineDisplayImageSurface* (*render_inline_display)(NativePluginHandle handle,
300
301 /* placed at the end for backwards compatibility. only valid if NATIVE_PLUGIN_USES_CONTROL_VOLTAGE is set */
304 const char* (*get_buffer_port_name)(NativePluginHandle handle, uint32_t index, bool isOutput);
305 const NativePortRange* (*get_buffer_port_range)(NativePluginHandle handle, uint32_t index, bool isOutput);
306
307 /* placed at the end for backwards compatibility. only valid if NATIVE_PLUGIN_USES_UI_SIZE is set */
309
311
312/* ------------------------------------------------------------------------------------------------------------
313 * Register plugin */
314
317
320
324
325/* ------------------------------------------------------------------------------------------------------------ */
326
328
329#ifdef __cplusplus
330} /* extern "C" */
331#endif
332
333#endif /* CARLA_NATIVE_H_INCLUDED */
#define CARLA_API_EXPORT
Definition CarlaDefines.h:307
unsigned int uint
Definition CarlaDefines.h:327
opcode
Definition Spc_Cpu.h:173
NativeHostDispatcherOpcode
Definition CarlaNative.h:115
NativeParameterDesignations
Definition CarlaNative.h:84
NativePluginHints
Definition CarlaNative.h:55
NativeParameterHints
Definition CarlaNative.h:89
void carla_register_all_native_plugins(void)
Definition _all.c:61
CARLA_API_EXPORT const NativePluginDescriptor * carla_get_native_plugins_data(uint32_t *count)
Definition _data.cpp:599
void * NativeHostHandle
Definition CarlaNative.h:36
NativePluginSupports
Definition CarlaNative.h:73
NativePluginDispatcherOpcode
Definition CarlaNative.h:102
void carla_register_native_plugin(const NativePluginDescriptor *desc)
Definition CarlaPluginNative.cpp:41
NativePluginCategory
Definition CarlaNative.h:42
struct _NativePluginDescriptor NativePluginDescriptor
void * NativePluginHandle
Definition CarlaNative.h:37
@ NATIVE_HOST_OPCODE_UI_UNAVAILABLE
Definition CarlaNative.h:122
@ NATIVE_HOST_OPCODE_RELOAD_ALL
Definition CarlaNative.h:121
@ NATIVE_HOST_OPCODE_HOST_IDLE
Definition CarlaNative.h:123
@ NATIVE_HOST_OPCODE_RELOAD_PARAMETERS
Definition CarlaNative.h:119
@ NATIVE_HOST_OPCODE_UPDATE_PARAMETER
Definition CarlaNative.h:117
@ NATIVE_HOST_OPCODE_PREVIEW_BUFFER_DATA
Definition CarlaNative.h:130
@ NATIVE_HOST_OPCODE_NULL
Definition CarlaNative.h:116
@ NATIVE_HOST_OPCODE_REQUEST_IDLE
Definition CarlaNative.h:127
@ NATIVE_HOST_OPCODE_UI_RESIZE
Definition CarlaNative.h:129
@ NATIVE_HOST_OPCODE_QUEUE_INLINE_DISPLAY
Definition CarlaNative.h:125
@ NATIVE_HOST_OPCODE_UPDATE_MIDI_PROGRAM
Definition CarlaNative.h:118
@ NATIVE_HOST_OPCODE_UI_TOUCH_PARAMETER
Definition CarlaNative.h:126
@ NATIVE_HOST_OPCODE_GET_FILE_PATH
Definition CarlaNative.h:128
@ NATIVE_HOST_OPCODE_RELOAD_MIDI_PROGRAMS
Definition CarlaNative.h:120
@ NATIVE_HOST_OPCODE_INTERNAL_PLUGIN
Definition CarlaNative.h:124
@ NATIVE_PARAMETER_DESIGNATION_NONE
Definition CarlaNative.h:85
@ NATIVE_PARAMETER_DESIGNATION_ENABLED
Definition CarlaNative.h:86
@ NATIVE_PLUGIN_USES_PANNING
Definition CarlaNative.h:63
@ NATIVE_PLUGIN_USES_TIME
Definition CarlaNative.h:65
@ NATIVE_PLUGIN_USES_MULTI_PROGS
Definition CarlaNative.h:62
@ NATIVE_PLUGIN_USES_STATE
Definition CarlaNative.h:64
@ NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE
Definition CarlaNative.h:61
@ NATIVE_PLUGIN_IS_SYNTH
Definition CarlaNative.h:57
@ NATIVE_PLUGIN_HAS_INLINE_DISPLAY
Definition CarlaNative.h:67
@ NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
Definition CarlaNative.h:60
@ NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
Definition CarlaNative.h:59
@ NATIVE_PLUGIN_USES_CONTROL_VOLTAGE
Definition CarlaNative.h:68
@ NATIVE_PLUGIN_REQUESTS_IDLE
Definition CarlaNative.h:69
@ NATIVE_PLUGIN_IS_RTSAFE
Definition CarlaNative.h:56
@ NATIVE_PLUGIN_HAS_UI
Definition CarlaNative.h:58
@ NATIVE_PLUGIN_USES_UI_SIZE
Definition CarlaNative.h:70
@ NATIVE_PLUGIN_USES_PARENT_ID
Definition CarlaNative.h:66
@ NATIVE_PARAMETER_IS_ENABLED
Definition CarlaNative.h:91
@ NATIVE_PARAMETER_IS_BOOLEAN
Definition CarlaNative.h:94
@ NATIVE_PARAMETER_IS_LOGARITHMIC
Definition CarlaNative.h:96
@ NATIVE_PARAMETER_USES_SCALEPOINTS
Definition CarlaNative.h:98
@ NATIVE_PARAMETER_USES_SAMPLE_RATE
Definition CarlaNative.h:97
@ NATIVE_PARAMETER_IS_OUTPUT
Definition CarlaNative.h:90
@ NATIVE_PARAMETER_USES_DESIGNATION
Definition CarlaNative.h:99
@ NATIVE_PARAMETER_IS_INTEGER
Definition CarlaNative.h:95
@ NATIVE_PARAMETER_IS_AUTOMABLE
Definition CarlaNative.h:93
@ NATIVE_PARAMETER_IS_AUTOMATABLE
Definition CarlaNative.h:92
@ NATIVE_PLUGIN_SUPPORTS_NOTE_AFTERTOUCH
Definition CarlaNative.h:78
@ NATIVE_PLUGIN_SUPPORTS_NOTHING
Definition CarlaNative.h:74
@ NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF
Definition CarlaNative.h:80
@ NATIVE_PLUGIN_SUPPORTS_EVERYTHING
Definition CarlaNative.h:81
@ NATIVE_PLUGIN_SUPPORTS_CHANNEL_PRESSURE
Definition CarlaNative.h:77
@ NATIVE_PLUGIN_SUPPORTS_CONTROL_CHANGES
Definition CarlaNative.h:76
@ NATIVE_PLUGIN_SUPPORTS_PROGRAM_CHANGES
Definition CarlaNative.h:75
@ NATIVE_PLUGIN_SUPPORTS_PITCHBEND
Definition CarlaNative.h:79
@ NATIVE_PLUGIN_OPCODE_UI_MIDI_EVENT
Definition CarlaNative.h:110
@ NATIVE_PLUGIN_OPCODE_BUFFER_SIZE_CHANGED
Definition CarlaNative.h:104
@ NATIVE_PLUGIN_OPCODE_GET_INTERNAL_HANDLE
Definition CarlaNative.h:108
@ NATIVE_PLUGIN_OPCODE_UI_NAME_CHANGED
Definition CarlaNative.h:107
@ NATIVE_PLUGIN_OPCODE_OFFLINE_CHANGED
Definition CarlaNative.h:106
@ NATIVE_PLUGIN_OPCODE_NULL
Definition CarlaNative.h:103
@ NATIVE_PLUGIN_OPCODE_HOST_USES_EMBED
Definition CarlaNative.h:111
@ NATIVE_PLUGIN_OPCODE_HOST_OPTION
Definition CarlaNative.h:112
@ NATIVE_PLUGIN_OPCODE_SAMPLE_RATE_CHANGED
Definition CarlaNative.h:105
@ NATIVE_PLUGIN_OPCODE_IDLE
Definition CarlaNative.h:109
@ NATIVE_PLUGIN_CATEGORY_UTILITY
Definition CarlaNative.h:51
@ NATIVE_PLUGIN_CATEGORY_DISTORTION
Definition CarlaNative.h:48
@ NATIVE_PLUGIN_CATEGORY_FILTER
Definition CarlaNative.h:47
@ NATIVE_PLUGIN_CATEGORY_DYNAMICS
Definition CarlaNative.h:49
@ NATIVE_PLUGIN_CATEGORY_MODULATOR
Definition CarlaNative.h:50
@ NATIVE_PLUGIN_CATEGORY_SYNTH
Definition CarlaNative.h:44
@ NATIVE_PLUGIN_CATEGORY_EQ
Definition CarlaNative.h:46
@ NATIVE_PLUGIN_CATEGORY_DELAY
Definition CarlaNative.h:45
@ NATIVE_PLUGIN_CATEGORY_OTHER
Definition CarlaNative.h:52
@ NATIVE_PLUGIN_CATEGORY_NONE
Definition CarlaNative.h:43
static PuglViewHint int value
Definition pugl.h:1708
static const char * title
Definition pugl.h:1747
static int int height
Definition pugl.h:1594
static int width
Definition pugl.h:1593
JSAMPIMAGE data
Definition jpeglib.h:945
unsigned short uint16_t
Definition mid.cpp:99
int int32_t
Definition mid.cpp:97
unsigned int uint32_t
Definition mid.cpp:100
unsigned char uint8_t
Definition mid.cpp:98
Definition CarlaNative.h:247
const char *const copyright
Definition CarlaNative.h:260
const char *const name
Definition CarlaNative.h:257
const uint32_t midiOuts
Definition CarlaNative.h:254
uint32_t(* get_parameter_count)(NativePluginHandle handle)
Definition CarlaNative.h:265
const uint32_t audioIns
Definition CarlaNative.h:251
void(* deactivate)(NativePluginHandle handle)
Definition CarlaNative.h:284
void(* ui_set_custom_data)(NativePluginHandle handle, const char *key, const char *value)
Definition CarlaNative.h:281
const uint32_t cvIns
Definition CarlaNative.h:302
void(* ui_idle)(NativePluginHandle handle)
Definition CarlaNative.h:277
uint16_t ui_height
Definition CarlaNative.h:308
void(* ui_set_midi_program)(NativePluginHandle handle, uint8_t channel, uint32_t bank, uint32_t program)
Definition CarlaNative.h:280
void(* set_midi_program)(NativePluginHandle handle, uint8_t channel, uint32_t bank, uint32_t program)
Definition CarlaNative.h:273
const uint32_t cvOuts
Definition CarlaNative.h:303
const char *const maker
Definition CarlaNative.h:259
void(* set_parameter_value)(NativePluginHandle handle, uint32_t index, float value)
Definition CarlaNative.h:272
void(* set_custom_data)(NativePluginHandle handle, const char *key, const char *value)
Definition CarlaNative.h:274
const NativePluginCategory category
Definition CarlaNative.h:248
const NativePluginSupports supports
Definition CarlaNative.h:250
void(* process)(NativePluginHandle handle, float **inBuffer, float **outBuffer, uint32_t frames, const NativeMidiEvent *midiEvents, uint32_t midiEventCount)
Definition CarlaNative.h:287
const uint32_t audioOuts
Definition CarlaNative.h:252
const char *const label
Definition CarlaNative.h:258
void(* ui_set_parameter_value)(NativePluginHandle handle, uint32_t index, float value)
Definition CarlaNative.h:279
float(* get_parameter_value)(NativePluginHandle handle, uint32_t index)
Definition CarlaNative.h:267
void(* cleanup)(NativePluginHandle handle)
Definition CarlaNative.h:263
void(* ui_show)(NativePluginHandle handle, bool show)
Definition CarlaNative.h:276
NativePluginHandle(* instantiate)(const NativeHostDescriptor *host)
Definition CarlaNative.h:262
void(* set_state)(NativePluginHandle handle, const char *data)
Definition CarlaNative.h:292
const NativePluginHints hints
Definition CarlaNative.h:249
uint16_t ui_width
Definition CarlaNative.h:308
const uint32_t midiIns
Definition CarlaNative.h:253
const uint32_t paramOuts
Definition CarlaNative.h:256
void(* activate)(NativePluginHandle handle)
Definition CarlaNative.h:283
const uint32_t paramIns
Definition CarlaNative.h:255
intptr_t(* dispatcher)(NativePluginHandle handle, NativePluginDispatcherOpcode opcode, int32_t index, intptr_t value, void *ptr, float opt)
Definition CarlaNative.h:294
uint32_t(* get_midi_program_count)(NativePluginHandle handle)
Definition CarlaNative.h:269
Definition CarlaNative.h:218
void(* ui_parameter_changed)(NativeHostHandle handle, uint32_t index, float value)
Definition CarlaNative.h:231
void(* ui_midi_program_changed)(NativeHostHandle handle, uint8_t channel, uint32_t bank, uint32_t program)
Definition CarlaNative.h:232
double(* get_sample_rate)(NativeHostHandle handle)
Definition CarlaNative.h:225
bool(* write_midi_event)(NativeHostHandle handle, const NativeMidiEvent *event)
Definition CarlaNative.h:229
NativeHostHandle handle
Definition CarlaNative.h:219
uintptr_t uiParentId
Definition CarlaNative.h:222
void(* ui_closed)(NativeHostHandle handle)
Definition CarlaNative.h:234
intptr_t(* dispatcher)(NativeHostHandle handle, NativeHostDispatcherOpcode opcode, int32_t index, intptr_t value, void *ptr, float opt)
Definition CarlaNative.h:239
uint32_t(* get_buffer_size)(NativeHostHandle handle)
Definition CarlaNative.h:224
bool(* is_offline)(NativeHostHandle handle)
Definition CarlaNative.h:226
const char * uiName
Definition CarlaNative.h:221
void(* ui_custom_data_changed)(NativeHostHandle handle, const char *key, const char *value)
Definition CarlaNative.h:233
const char * resourceDir
Definition CarlaNative.h:220
Definition CarlaNative.h:204
int height
Definition CarlaNative.h:207
int width
Definition CarlaNative.h:206
int stride
Definition CarlaNative.h:208
unsigned char * data
Definition CarlaNative.h:205
Definition CarlaNative.h:169
uint32_t time
Definition CarlaNative.h:170
uint8_t port
Definition CarlaNative.h:171
uint8_t size
Definition CarlaNative.h:172
uint8_t data[4]
Definition CarlaNative.h:173
Definition CarlaNative.h:176
uint32_t bank
Definition CarlaNative.h:177
uint32_t program
Definition CarlaNative.h:178
const char * name
Definition CarlaNative.h:179
Definition CarlaNative.h:154
const NativeParameterScalePoint * scalePoints
Definition CarlaNative.h:161
NativeParameterHints hints
Definition CarlaNative.h:155
uint designation
Definition CarlaNative.h:166
uint32_t scalePointCount
Definition CarlaNative.h:160
const char * groupName
Definition CarlaNative.h:164
NativeParameterRanges ranges
Definition CarlaNative.h:158
const char * name
Definition CarlaNative.h:156
const char * comment
Definition CarlaNative.h:163
const char * unit
Definition CarlaNative.h:157
Definition CarlaNative.h:141
float stepSmall
Definition CarlaNative.h:146
float def
Definition CarlaNative.h:142
float max
Definition CarlaNative.h:144
float step
Definition CarlaNative.h:145
float stepLarge
Definition CarlaNative.h:147
float min
Definition CarlaNative.h:143
Definition CarlaNative.h:136
float value
Definition CarlaNative.h:138
const char * label
Definition CarlaNative.h:137
Definition CarlaNative.h:211
float minimum
Definition CarlaNative.h:212
float maximum
Definition CarlaNative.h:212
Definition CarlaNative.h:182
double barStartTick
Definition CarlaNative.h:188
double beatsPerMinute
Definition CarlaNative.h:194
int32_t bar
Definition CarlaNative.h:185
float beatType
Definition CarlaNative.h:191
double tick
Definition CarlaNative.h:187
int32_t beat
Definition CarlaNative.h:186
double ticksPerBeat
Definition CarlaNative.h:193
bool valid
Definition CarlaNative.h:183
float beatsPerBar
Definition CarlaNative.h:190
Definition CarlaNative.h:197
NativeTimeInfoBBT bbt
Definition CarlaNative.h:201
uint64_t usecs
Definition CarlaNative.h:200
uint64_t frame
Definition CarlaNative.h:199
bool playing
Definition CarlaNative.h:198
ZCONST char * key
Definition crypt.c:587
#define void
Definition unzip.h:396
_WDL_CSTRING_PREFIX void INT_PTR count
Definition wdlcstring.h:263