ASPiK SDK
Constants-Enums

Classes

union  attributeValue
 Attribute value smashed down into a union. More...
 

Macros

#define FLT_EPSILON_PLUS   1.192092896e-07
 /* smallest such that 1.0+FLT_EPSILON != 1.0 */
 
#define FLT_EPSILON_MINUS   -1.192092896e-07
 /* smallest such that 1.0-FLT_EPSILON != 1.0 */
 
#define FLT_MIN_PLUS   1.175494351e-38
 /* min positive value */
 
#define FLT_MIN_MINUS   -1.175494351e-38
 /* min negative value */
 

Enumerations

enum  VSTGUI::mouseAction { mouseDirUpAndDown, mouseDirUp, mouseDirDown }
 Use this enum to set the mouse behavior for kick button. More...
 
enum  smoothingMethod { kLinearSmoother, kLPFSmoother }
 Use this strongly typed enum to easily set the smoothing type. More...
 
enum  taper { kLinearTaper, kLogTaper, kAntiLogTaper, kVoltOctaveTaper }
 Use this strongly typed enum to easily set the control taper. More...
 
enum  meterCal { kLinearMeter, kLogMeter }
 Use this strongly typed enum to easily set meter calibration. More...
 
enum  controlVariableType {
  kFloat, kDouble, kInt, kTypedEnumStringList,
  kMeter, kNonVariableBoundControl
}
 Use this strongly typed enum to easily set the control's behavior; this tells the PluginParameter object how to interpret the control information (e.g. as float versus int).

Note that you can set a PluginParameter as kNonVariableBoundControl to indicate that it is not bound to any variable. More...
 
enum  boundVariableType { kFloat, kDouble, kInt, kUInt }
 Use this strongly typed enum to easily set the control's linked variable datatype (for automatic variable binding). More...
 
enum  pluginType { kFXPlugin, kSynthPlugin }
 Use this enum to identify the plugin category. More...
 
enum  aaxPlugInCategory {
  aaxPlugInCategory_None = 0x00000000, aaxPlugInCategory_EQ = 0x00000001, aaxPlugInCategory_Dynamics = 0x00000002, aaxPlugInCategory_PitchShift = 0x00000004,
  aaxPlugInCategory_Reverb = 0x00000008, aaxPlugInCategory_Delay = 0x00000010, aaxPlugInCategory_Modulation = 0x00000020, aaxPlugInCategory_Harmonic = 0x00000040,
  aaxPlugInCategory_NoiseReduction = 0x00000080, aaxPlugInCategory_Dither = 0x00000100, aaxPlugInCategory_SoundField = 0x00000200, aaxPlugInCategory_HWGenerators = 0x00000400,
  aaxPlugInCategory_SWGenerators = 0x00000800, aaxPlugInCategory_WrappedPlugin = 0x00001000, aaxPlugInCategory_Effect = 0x00002000
}
 Use this enum to identify the AAX plugin category. More...
 
enum  channelFormat {
  kCFNone, kCFMono, kCFStereo, kCFLCR,
  kCFLCRS, kCFQuad, kCF5p0, kCF5p1,
  kCF6p0, kCF6p1, kCF7p0Sony, kCF7p0DTS,
  kCF7p1Sony, kCF7p1DTS, kCF7p1Proximity, kCF8p1,
  kCF9p0, kCF9p1, kCF10p0, kCF10p1,
  kCF10p2, kCF11p0, kCF11p1, kCF12p2,
  kCF13p0, kCF13p1, kCF22p2
}
 Use this enum to identify plugin channel formats. Steinberg calls these "speaker arrangements". More...
 
enum  auxGUIIdentifier {
  GUIKnobGraphic, GUI2SSButtonStyle, EnableMIDIControl, MIDIControlChannel,
  MIDIControlIndex, midiControlData, guiControlData
}
 Identifier enum for aux parameter information. Not used in ASPiK though is used for RAFX plugins (not-exported) More...
 
enum  hostMessage { sendGUIUpdate, sendRAFXStatusWndText }
 Use this enum to identify a message to send to the plugin shell (host) More...
 
enum  messageType {
  PLUGINGUI_DIDOPEN, PLUGINGUI_WILLCLOSE, PLUGINGUI_TIMERPING, PLUGINGUI_REGISTER_CUSTOMVIEW,
  PLUGINGUI_DE_REGISTER_CUSTOMVIEW, PLUGINGUI_REGISTER_SUBCONTROLLER, PLUGINGUI_DE_REGISTER_SUBCONTROLLER, PLUGINGUI_QUERY_HASUSERCUSTOM,
  PLUGINGUI_USER_CUSTOMOPEN, PLUGINGUI_USER_CUSTOMCLOSE, PLUGINGUI_USER_CUSTOMSYNC, PLUGINGUI_EXTERNAL_SET_NORMVALUE,
  PLUGINGUI_EXTERNAL_SET_ACTUALVALUE, PLUGINGUI_EXTERNAL_GET_NORMVALUE, PLUGINGUI_EXTERNAL_GET_ACTUALVALUE, PLUGINGUI_PARAMETER_CHANGED,
  PLUGIN_QUERY_DESCRIPTION, PLUGIN_QUERY_PARAMETER, PLUGIN_QUERY_TRACKPAD_X, PLUGIN_QUERY_TRACKPAD_Y
}
 Message identifier for ASPiK Core messaging system. More...
 
enum  attributeType {
  isFloatAttribute, isDoubleAttribute, isIntAttribute, isUintAttribute,
  isBoolAttribute, isVoidPtrAttribute, isStringAttribute
}
 AttributeType identifier for ASPiK PluginParameter auxilliary storage system. You are free to implement your own mechanism; this is an example. More...
 

Variables

const double kCTCoefficient = 5.0 / 12.0
 concave and/or convex transform correction factor More...
 
const double kCTCorrFactorZero = pow(10.0, (-1.0/kCTCoefficient))
 concave/convex transform correction factor at x = 0 More...
 
const double kCTCorrFactorAnitZero = 1.0 / (1.0 - kCTCorrFactorZero)
 inverse concave/convex transform factor at x = 0 More...
 
const double kCTCorrFactorUnity = 1.0 / (1.0 + kCTCoefficient*log10(1.0 + kCTCorrFactorZero))
 concave/convex transform correction factor at x = 1 More...
 
const double kCTCorrFactorAntiUnity = 1.0 / (1.0 + (-pow(10.0, (-1.0/kCTCoefficient))))
 inverse concave/convex transform correction factor at x = 1 More...
 
const double kCTCorrFactorAntiLog = kCTCoefficient*log10(1.0 + kCTCorrFactorZero)
 concave/convex transform correction factor More...
 
const double kCTCorrFactorAntiLogScale = 1.0 / (-kCTCoefficient*log10(kCTCorrFactorZero) + kCTCorrFactorAntiLog)
 concave/convex transform scaling factor More...
 
const double kPi = 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899
 pi to 80 decimal places More...
 
const double kTwoPi = 2.0*3.14159265358979323846264338327950288419716939937510582097494459230781640628620899
 2pi to 80 decimal places More...
 
const float GUI_METER_UPDATE_INTERVAL_MSEC = 50.f
 repaint interval; larger = slower More...
 

Audio Detector Constants

const uint32_t ENVELOPE_DETECT_MODE_PEAK = 0
 |x| More...
 
const uint32_t ENVELOPE_DETECT_MODE_MS = 1
 (1/N)|x|^2
 
const uint32_t ENVELOPE_DETECT_MODE_RMS = 2
 SQRT((1/N)|x|^2)
 
const uint32_t ENVELOPE_DETECT_MODE_NONE = 3
 not used
 
const float ENVELOPE_DIGITAL_TC = -4.6051701859880913680359829093687
 ln(1%)
 
const float ENVELOPE_ANALOG_TC = -1.0023934309275667804345424248947
 ln(36.7%)
 

Detailed Description

Enumeration Type Documentation

◆ aaxPlugInCategory

Use this enum to identify the AAX plugin category.

  • aaxPlugInCategory_None through aaxPlugInCategory_Effect
  • 18 categories in total
Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7
Enumerator
aaxPlugInCategory_EQ 

Equalization.

aaxPlugInCategory_Dynamics 

Compressor, expander, limiter, etc.

aaxPlugInCategory_PitchShift 

Pitch processing.

aaxPlugInCategory_Reverb 

Reverberation and room/space simulation.

aaxPlugInCategory_Delay 

Delay and echo.

aaxPlugInCategory_Modulation 

Phasing, flanging, chorus, etc.

aaxPlugInCategory_Harmonic 

Distortion, saturation, and harmonic enhancement.

aaxPlugInCategory_NoiseReduction 

Noise reduction.

aaxPlugInCategory_Dither 

Dither, noise shaping, etc.

aaxPlugInCategory_SoundField 

Pan, auto-pan, upmix and downmix, and surround handling.

aaxPlugInCategory_HWGenerators 

Fixed hardware audio sources such as SampleCell.

aaxPlugInCategory_SWGenerators 

Virtual instruments, metronomes, and other software audio sources.

aaxPlugInCategory_WrappedPlugin 

Plug-ins wrapped by a thrid party wrapper except synth plug-ins which = AAX_PlugInCategory_SWGenerators.

aaxPlugInCategory_Effect 

Special effects.

◆ attributeType

AttributeType identifier for ASPiK PluginParameter auxilliary storage system. You are free to implement your own mechanism; this is an example.

Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

◆ auxGUIIdentifier

Identifier enum for aux parameter information. Not used in ASPiK though is used for RAFX plugins (not-exported)

Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

◆ boundVariableType

enum boundVariableType
strong

Use this strongly typed enum to easily set the control's linked variable datatype (for automatic variable binding).

  • enum boundVariableType { kFloat, kDouble, kInt, kUInt };
Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

◆ channelFormat

Use this enum to identify plugin channel formats. Steinberg calls these "speaker arrangements".

  • 30 different formats
  • you can add support for ambisonics and other API-specific formats by starting here
Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

◆ controlVariableType

enum controlVariableType
strong

Use this strongly typed enum to easily set the control's behavior; this tells the PluginParameter object how to interpret the control information (e.g. as float versus int).

Note that you can set a PluginParameter as kNonVariableBoundControl to indicate that it is not bound to any variable.

  • enum class controlVariableType { kFloat, kDouble, kInt, kTypedEnumStringList, kMeter, kNonVariableBoundControl };
Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

◆ hostMessage

Use this enum to identify a message to send to the plugin shell (host)

  • sendGUIUpdate or sendRAFXStatusWndText
Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

◆ messageType

Message identifier for ASPiK Core messaging system.

Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

◆ meterCal

enum meterCal
strong

Use this strongly typed enum to easily set meter calibration.

  • enum class meterCal { kLinearMeter, kLogMeter };
Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

◆ mouseAction

Use this enum to set the mouse behavior for kick button.

  • enum mouseAction {mouseDirUpAndDown, mouseDirUp, mouseDirDown};
Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

◆ pluginType

enum pluginType

Use this enum to identify the plugin category.

  • kFXPlugin or kSynthPlugin
Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

◆ smoothingMethod

enum smoothingMethod
strong

Use this strongly typed enum to easily set the smoothing type.

  • enum class smoothingMethod { kLinearSmoother, kLPFSmoother };
Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

◆ taper

enum taper
strong

Use this strongly typed enum to easily set the control taper.

  • enum class taper { kLinearTaper, kLogTaper, kAntiLogTaper, kVoltOctaveTaper };
Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

Variable Documentation

◆ ENVELOPE_DETECT_MODE_PEAK

const uint32_t ENVELOPE_DETECT_MODE_PEAK = 0

|x|

@{

◆ GUI_METER_UPDATE_INTERVAL_MSEC

const float GUI_METER_UPDATE_INTERVAL_MSEC = 50.f

repaint interval; larger = slower

@{

◆ kCTCoefficient

const double kCTCoefficient = 5.0 / 12.0

concave and/or convex transform correction factor

◆ kCTCorrFactorAnitZero

const double kCTCorrFactorAnitZero = 1.0 / (1.0 - kCTCorrFactorZero)

inverse concave/convex transform factor at x = 0

◆ kCTCorrFactorAntiLog

const double kCTCorrFactorAntiLog = kCTCoefficient*log10(1.0 + kCTCorrFactorZero)

concave/convex transform correction factor

◆ kCTCorrFactorAntiLogScale

const double kCTCorrFactorAntiLogScale = 1.0 / (-kCTCoefficient*log10(kCTCorrFactorZero) + kCTCorrFactorAntiLog)

concave/convex transform scaling factor

◆ kCTCorrFactorAntiUnity

const double kCTCorrFactorAntiUnity = 1.0 / (1.0 + (-pow(10.0, (-1.0/kCTCoefficient))))

inverse concave/convex transform correction factor at x = 1

◆ kCTCorrFactorUnity

const double kCTCorrFactorUnity = 1.0 / (1.0 + kCTCoefficient*log10(1.0 + kCTCorrFactorZero))

concave/convex transform correction factor at x = 1

◆ kCTCorrFactorZero

const double kCTCorrFactorZero = pow(10.0, (-1.0/kCTCoefficient))

concave/convex transform correction factor at x = 0

◆ kPi

const double kPi = 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899

pi to 80 decimal places

◆ kTwoPi

const double kTwoPi = 2.0*3.14159265358979323846264338327950288419716939937510582097494459230781640628620899

2pi to 80 decimal places