diff options
-rwxr-xr-x | libs/ardour/ardour/vestige/aeffectx.h | 32 | ||||
-rw-r--r-- | libs/ardour/vst_plugin.cc | 3 |
2 files changed, 22 insertions, 13 deletions
diff --git a/libs/ardour/ardour/vestige/aeffectx.h b/libs/ardour/ardour/vestige/aeffectx.h index 29fdb9a145..5238df1c75 100755 --- a/libs/ardour/ardour/vestige/aeffectx.h +++ b/libs/ardour/ardour/vestige/aeffectx.h @@ -102,17 +102,17 @@ #define effEditTop 20 #define effProcessEvents 25 #define effGetEffectName 45 -#define effGetParameterProperties 47 // missing #define effGetVendorString 47 #define effGetProductString 48 #define effGetVendorVersion 49 #define effCanDo 51 // currently unused +/* from http://asseca.com/vst-24-specs/efGetParameterProperties.html */ +#define effGetParameterProperties 56 #define effGetVstVersion 58 // currently unused #define kEffectMagic (CCONST( 'V', 's', 't', 'P' )) #define kVstLangEnglish 1 #define kVstMidiType 1 -#define kVstParameterUsesFloatStep (1 << 2) #define kVstTempoValid (1 << 10) #define kVstTransportPlaying (1 << 1) @@ -177,23 +177,35 @@ struct _VstEvents typedef struct _VstEvents VstEvents; -// Not finished, neither really used +/* this struct taken from http://asseca.com/vst-24-specs/efGetParameterProperties.html */ struct _VstParameterProperties { float stepFloat; + float smallStepFloat; + float largeStepFloat; char label[64]; - int flags; - int minInteger; - int maxInteger; - int stepInteger; + int32_t flags; + int32_t minInteger; + int32_t maxInteger; + int32_t stepInteger; + int32_t largeStepInteger; char shortLabel[8]; - int category; - char categoryLabel[24]; - char empty[128]; }; typedef struct _VstParameterProperties VstParameterProperties; +/* this enum taken from http://asseca.com/vst-24-specs/efGetParameterProperties.html */ +enum VstParameterFlags +{ + kVstParameterIsSwitch = 1 << 0, /* parameter is a switch (on/off) */ + kVstParameterUsesIntegerMinMax = 1 << 1, /* minInteger, maxInteger valid */ + kVstParameterUsesFloatStep = 1 << 2, /* stepFloat, smallStepFloat, largeStepFloat valid */ + kVstParameterUsesIntStep = 1 << 3, /* stepInteger, largeStepInteger valid */ + kVstParameterSupportsDisplayIndex = 1 << 4, /* displayIndex valid */ + kVstParameterSupportsDisplayCategory = 1 << 5, /* category, etc. valid */ + kVstParameterCanRamp = 1 << 6 /* set if parameter value can ramp up/down */ +}; + struct _AEffect { // Never use virtual functions!!! diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc index 2d1a24ae93..1afc496b16 100644 --- a/libs/ardour/vst_plugin.cc +++ b/libs/ardour/vst_plugin.cc @@ -234,8 +234,6 @@ VSTPlugin::get_parameter_descriptor (uint32_t which, ParameterDescriptor& desc) if (_plugin->dispatcher (_plugin, effGetParameterProperties, which, 0, &prop, 0)) { -#ifdef VESTIGE_COMPLETE - /* i have yet to find or hear of a VST plugin that uses this */ if (prop.flags & kVstParameterUsesIntegerMinMax) { @@ -271,7 +269,6 @@ VSTPlugin::get_parameter_descriptor (uint32_t which, ParameterDescriptor& desc) desc.logarithmic = false; desc.sr_dependent = false; desc.label = prop.label; -#endif } else { |