32 lines
1.4 KiB
C
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
|