xtc/src/plugin/vst2_abi.h

32 lines
1.4 KiB
C

#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 <stdint.h>
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