Question

For a project, I am being asked to create a VST using the Steinberg SDK, i'm using version 2.4.

The issue that I'm having is error:

cannot allocate an object of abstract type 'mySynth'.

When attempting to compile, the error brings me to this section of code:

    AudioEffect* createEffectInstance (audioMasterCallback audioMaster)
    {
            return new mySynth (audioMaster);
    }

I'm a beginner to both c++ and VST programming, I've had no issues compiling the sample AGain and ADelay, as well as the vstxSynth. This is the first attempt of my own, and its really confusing me, from looking at the sample code i cannot seem to find any reason as to why this shouldn't work.

any help would be greatly appreciated. As this is a major learning curve for me, i would appreciate if you could apply with a simplest explanations as possible.

Thankyou :)

Was it helpful?

Solution

Without seeing the class mySynth code it is hard to say but this error is commonly encountered when you have a class containing a pure virtual function. Either that or you have derived from a base class with a pure virtual function and have failed to override it with a derived class implementation.

If you do not know what that means, look in your class (and sub classes) for functions declared like this

 virtual int my_function() = 0;

This kind of function is a pure virtual function and a class that has one is considered an abstract class and cannot be instantiated. In order to do so you would need to provide an implementation.

OTHER TIPS

Your processReplacing() method is not correctly overriding signature declared in the base class AudioEffect. The signature looks like this:

void processReplacing(float** inputs, float** outputs, VstInt32 sampleFrames);

Your override is using double, it should use float instead.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top