0
0

Hello,

The struct AEffect has two members with the wrong member types for VST (Steinberg) plugins to work in 64-bit. Also, there seems to be a missing function pointer at the end, but it shouldn’t be causing a crash because of the existing padding.

The struct looks as follow:

[code:1d6pa7xt]struct AEffect
{
long magic; // must be kEffectMagic (‘VstP’)

long (VSTCALLBACK *dispatcher)(AEffect *effect, long opCode, long index, long value,
    void *ptr, float opt);

void (VSTCALLBACK *process)(AEffect *effect, float **inputs, float **outputs, long sampleframes);

void (VSTCALLBACK *setParameter)(AEffect *effect, long index, float parameter);
float (VSTCALLBACK *getParameter)(AEffect *effect, long index);

long numPrograms;   // number of Programs
long numParams;     // all programs are assumed to have numParams parameters
long numInputs;     // number of Audio Inputs
long numOutputs;    // number of Audio Outputs

long flags;         // see constants (Flags Bits)

long resvd1;        // reserved for Host, must be 0 (Dont use it)
long resvd2;        // reserved for Host, must be 0 (Dont use it)

long initialDelay;  // for algorithms which need input in the first place

long realQualities; // number of realtime qualities (0: realtime)
long offQualities;  // number of offline qualities (0: realtime only)
float ioRatio;      // input samplerate to output samplerate ratio, not used yet

void *object;       // for class access (see AudioEffect.hpp), MUST be 0 else!
void *user;         // user access

long uniqueID;      // pls choose 4 character as unique as possible. (register it at Steinberg Web)
                    // this is used to identify an effect for save+load
long version;       // (example 1100 for version 1.1.0.0)

void (VSTCALLBACK *processReplacing)(AEffect *effect, float **inputs, float **outputs, long sampleframes);

char future[60];    // pls zero

};[/code:1d6pa7xt]

When it should really be like this according to the standard:

[code:1d6pa7xt]struct AEffect
{
long magic; // must be kEffectMagic (‘VstP’)

long (VSTCALLBACK *dispatcher)(AEffect *effect, long opCode, long index, long value,
    void *ptr, float opt);

void (VSTCALLBACK *process)(AEffect *effect, float **inputs, float **outputs, long sampleframes);

void (VSTCALLBACK *setParameter)(AEffect *effect, long index, float parameter);
float (VSTCALLBACK *getParameter)(AEffect *effect, long index);

long numPrograms;   // number of Programs
long numParams;     // all programs are assumed to have numParams parameters
long numInputs;     // number of Audio Inputs
long numOutputs;    // number of Audio Outputs

long flags;         // see constants (Flags Bits)

intptr_t resvd1;        // reserved for Host, must be 0 (Dont use it)
intptr_t resvd2;        // reserved for Host, must be 0 (Dont use it)

long initialDelay;  // for algorithms which need input in the first place

long realQualities; // number of realtime qualities (0: realtime)
long offQualities;  // number of offline qualities (0: realtime only)
float ioRatio;      // input samplerate to output samplerate ratio, not used yet

void *object;       // for class access (see AudioEffect.hpp), MUST be 0 else!
void *user;         // user access

long uniqueID;      // pls choose 4 character as unique as possible. (register it at Steinberg Web)
                    // this is used to identify an effect for save+load
long version;       // (example 1100 for version 1.1.0.0)

void (VSTCALLBACK *processReplacing)(AEffect *effect, float **inputs, float **outputs, long sampleframes);
    void (VSTCALLBACK *processDoubleReplacing(AEffect *effect, double **inputs, double **outputs,long sampleFrames )

char future[56];    // pls zero

};[/code:1d6pa7xt]

  • You must to post comments
Showing 0 results
Your Answer

Please first to submit.