#ifndef XTC_VST2_ABI_H #define XTC_VST2_ABI_H /* Original, minimal Linux ABI declarations for legacy VST2 interoperability. * No Steinberg VST2 SDK code is included. Not a complete SDK or VST2 wrapper. */ #include typedef struct xtc_v2_effect xtc_v2_effect; typedef intptr_t (*xtc_v2_host)(xtc_v2_effect *, int32_t, int32_t, intptr_t, void *, float); typedef intptr_t (*xtc_v2_dispatch)(xtc_v2_effect *, int32_t, int32_t, intptr_t, void *, float); struct xtc_v2_effect { int32_t magic; xtc_v2_dispatch dispatch; void (*process)(xtc_v2_effect *, float **, float **, int32_t); void (*set_parameter)(xtc_v2_effect *, int32_t, float); float (*get_parameter)(xtc_v2_effect *, int32_t); int32_t programs, parameters, inputs, outputs, flags; intptr_t reserved1, reserved2; int32_t initial_delay, quality1, quality2; float ratio; void *object, *user; int32_t unique_id, version; void (*replace)(xtc_v2_effect *, float **, float **, int32_t); void (*replace64)(xtc_v2_effect *, double **, double **, int32_t); char future[56]; }; typedef struct { int32_t type, bytes, offset, flags, note_length, note_offset; unsigned char data[4]; char detune, off_velocity, reserved1, reserved2; } xtc_v2_midi; typedef struct { int32_t count; intptr_t reserved; xtc_v2_midi *events[256]; } xtc_v2_events; #define XTC_V2_MAGIC INT32_C(0x56737450) #endif