publicint32numbuffers;/* [r/w] number of buffers */
publicint32[]buffernumchannels;/* [r/w] array of number of channels for each buffer */
publicCHANNELMASK[]bufferchannelmask;/* [r/w] array of channel masks for each buffer */
publicint32[]buffers;/* [r/w] array of buffers */
publicSPEAKERMODEspeakermode;/* [r/w] speaker mode for all buffers in the array */
}
/*
[ENUM]
[
[DESCRIPTION]
OperationtypeforFMOD_DSP_PROCESS_CALLBACK.
[REMARKS]
[SEE_ALSO]
FMOD_DSP_DESCRIPTION
]
*/
publicenumDSP_PROCESS_OPERATION
{
PROCESS_PERFORM=0,/* Process the incoming audio in 'inbufferarray' and output to 'outbufferarray'. */
PROCESS_QUERY/* The DSP is being queried for the expected output format and whether it needs to process audio or should be bypassed. The function should return any value other than FMOD_OK if audio can pass through unprocessed. If audio is to be processed, 'outbufferarray' must be filled with the expected output format, channel count and mask. */
UNKNOWN,/* This unit was created via a non FMOD plugin so has an unknown purpose. */
MIXER,/* This unit does nothing but take inputs and mix them together then feed the result to the soundcard unit. */
OSCILLATOR,/* This unit generates sine/square/saw/triangle or noise tones. */
LOWPASS,/* This unit filters sound using a high quality, resonant lowpass filter algorithm but consumes more CPU time. */
ITLOWPASS,/* This unit filters sound using a resonant lowpass filter algorithm that is used in Impulse Tracker, but with limited cutoff range (0 to 8060hz). */
HIGHPASS,/* This unit filters sound using a resonant highpass filter algorithm. */
ECHO,/* This unit produces an echo on the sound and fades out at the desired rate. */
FADER,/* This unit pans and scales the volume of a unit. */
FLANGE,/* This unit produces a flange effect on the sound. */
DISTORTION,/* This unit distorts the sound. */
NORMALIZE,/* This unit normalizes or amplifies the sound to a certain level. */
LIMITER,/* This unit limits the sound to a certain level. */
PARAMEQ,/* This unit attenuates or amplifies a selected frequency range. */
PITCHSHIFT,/* This unit bends the pitch of a sound without changing the speed of playback. */
CHORUS,/* This unit produces a chorus effect on the sound. */
VSTPLUGIN,/* This unit allows the use of Steinberg VST plugins */
WINAMPPLUGIN,/* This unit allows the use of Nullsoft Winamp plugins */
ITECHO,/* This unit produces an echo on the sound and fades out at the desired rate as is used in Impulse Tracker. */
COMPRESSOR,/* This unit implements dynamic compression (linked multichannel, wideband) */
SFXREVERB,/* This unit implements SFX reverb */
LOWPASS_SIMPLE,/* This unit filters sound using a simple lowpass with no resonance, but has flexible cutoff and is fast. */
DELAY,/* This unit produces different delays on individual channels of the sound. */
TREMOLO,/* This unit produces a tremolo / chopper effect on the sound. */
LADSPAPLUGIN,/* This unit allows the use of LADSPA standard plugins. */
SEND,/* This unit sends a copy of the signal to a return DSP anywhere in the DSP tree. */
RETURN,/* This unit receives signals from a number of send DSPs. */
HIGHPASS_SIMPLE,/* This unit filters sound using a simple highpass with no resonance, but has flexible cutoff and is fast. */
PAN,/* This unit pans the signal, possibly upmixing or downmixing as well. */
THREE_EQ,/* This unit is a three-band equalizer. */
FFT,/* This unit simply analyzes the signal and provides spectrum information back through getParameter. */
LOUDNESS_METER,/* This unit analyzes the loudness and true peak of the signal. */
ENVELOPEFOLLOWER,/* This unit tracks the envelope of the input/sidechain signal */
CONVOLUTIONREVERB,/* This unit implements convolution reverb. */
CHANNELMIX,/* This unit provides per signal channel gain, and output channel mapping to allow 1 multichannel signal made up of many groups of signals to map to a single output signal. */
TRANSCEIVER,/* This unit 'sends' and 'receives' from a selection of up to 32 different slots. It is like a send/return but it uses global slots rather than returns as the destination. It also has other features. Multiple transceivers can receive from a single channel, or multiple transceivers can send to a single channel, or a combination of both. */
OBJECTPAN,/* This unit sends the signal to a 3d object encoder like Dolby Atmos. */
DSP_PARAMETER_FLOAT_MAPPING_TYPE_LINEAR=0,/* Values mapped linearly across range. */
DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO,/* A mapping is automatically chosen based on range and units. See remarks. */
DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR,/* Values mapped in a piecewise linear fashion defined by FMOD_DSP_PARAMETER_DESC_FLOAT::mapping.piecewiselinearmapping. */
publicint32numpoints;/* [w] The number of <position, value> pairs in the piecewise mapping (at least 2). */
publicintpointparamvalues;/* [w] The values in the parameter's units for each point32 */
publicintpointpositions;/* [w] The positions aint64 the control's scale (e.g. dial angle) corresponding to each parameter value. The range of this scale is arbitrary and all positions will be relative to the minimum and maximum values (e.g. [0,1,3] is equivalent to [1,2,4] and [2,4,8]). If this array is zero, pointparamvalues will be distributed with equal spacing. */
publicDSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEARpiecewiselinearmapping;/* [w] Only required for FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR type mapping. */
publicDSP_PARAMETER_FLOAT_MAPPINGmapping;/* [w] How the values are distributed across dials and automation curves (e.g. linearly, exponentially etc). */
publicint32datatype;/* [w] The type of data for this parameter. Use 0 or above for custom types or set to one of the FMOD_DSP_PARAMETER_DATA_TYPE values. */
publicDSP_PARAMETER_DESC_FLOATfloatdesc;/* [w] Struct containing information about the parameter in floating point32 format. Use when type is FMOD_DSP_PARAMETER_TYPE_FLOAT. */
[FieldOffset(0)]
publicDSP_PARAMETER_DESC_int32intdesc;/* [w] Struct containing information about the parameter in integer format. Use when type is FMOD_DSP_PARAMETER_TYPE_INT. */
[FieldOffset(0)]
publicDSP_PARAMETER_DESC_BOOLbooldesc;/* [w] Struct containing information about the parameter in boolean format. Use when type is FMOD_DSP_PARAMETER_TYPE_BOOL. */
[FieldOffset(0)]
publicDSP_PARAMETER_DESC_DATAdatadesc;/* [w] Struct containing information about the parameter in data format. Use when type is FMOD_DSP_PARAMETER_TYPE_DATA. */*/
intdatadesc;
}
[CRepr]
publicstructDSP_PARAMETER_DESC
{
publicDSP_PARAMETER_TYPEtype;/* [w] Type of this parameter. */
DSP_PARAMETER_DATA_TYPE_USER=0,/* The default data type. All user data types should be 0 or above. */
DSP_PARAMETER_DATA_TYPE_OVERALLGAIN=-1,/* The data type for FMOD_DSP_PARAMETER_OVERALLGAIN parameters. There should a maximum of one per DSP. */
DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES=-2,/* The data type for FMOD_DSP_PARAMETER_3DATTRIBUTES parameters. There should a maximum of one per DSP. */
DSP_PARAMETER_DATA_TYPE_SIDECHAIN=-3,/* The data type for FMOD_DSP_PARAMETER_SIDECHAIN parameters. There should a maximum of one per DSP. */
DSP_PARAMETER_DATA_TYPE_FFT=-4,/* The data type for FMOD_DSP_PARAMETER_FFT parameters. There should a maximum of one per DSP. */
DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES_MULTI=-5,/* The data type for FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI parameters. There should a maximum of one per DSP. */
publicchar8[32]name;/* [w] Name of the unit to be displayed in the network. */
publicuint32version;/* [w] Plugin writer's version number. */
publicint32numinputbuffers;/* [w] Number of input buffers to process. Use 0 for DSPs that only generate sound and 1 for effects that process incoming sound. */
publicint32numoutputbuffers;/* [w] Number of audio output buffers. Only one output buffer is currently supported. */
publicDSP_CREATECALLBACKcreate;/* [w] Create callback. This is called when DSP unit is created. Can be null. */
publicDSP_RELEASECALLBACKrelease;/* [w] Release callback. This is called just before the unit is freed so the user can do any cleanup needed for the unit. Can be null. */
publicDSP_RESETCALLBACKreset;/* [w] Reset callback. This is called by the user to reset any history buffers that may need resetting for a filter, when it is to be used or re-used for the first time to its initial clean state. Use to avoid clicks or artifacts. */
publicDSP_READCALLBACKread;/* [w] Read callback. Processing is done here. Can be null. */
publicDSP_PROCESS_CALLBACKprocess;/* [w] Process callback. Can be specified instead of the read callback if any channel format changes occur between input and output. This also replaces shouldiprocess and should return an error if the effect is to be bypassed. Can be null. */
publicDSP_SETPOSITIONCALLBACKsetposition;/* [w] Setposition callback. This is called if the unit wants to update its position info but not process data. Can be null. */
publicint32numparameters;/* [w] Number of parameters used in this filter. The user finds this with DSP::getNumParameters */
publicintparamdesc;/* [w] Variable number of parameter structures. */
publicDSP_SETPARAM_FLOAT_CALLBACKsetparameterfloat;/* [w] This is called when the user calls DSP.setParameterFloat. Can be null. */
publicDSP_SETPARAM_INT_CALLBACKsetparameterint;/* [w] This is called when the user calls DSP.setParameterInt. Can be null. */
publicDSP_SETPARAM_BOOL_CALLBACKsetparameterbool;/* [w] This is called when the user calls DSP.setParameterBool. Can be null. */
publicDSP_SETPARAM_DATA_CALLBACKsetparameterdata;/* [w] This is called when the user calls DSP.setParameterData. Can be null. */
publicDSP_GETPARAM_FLOAT_CALLBACKgetparameterfloat;/* [w] This is called when the user calls DSP.getParameterFloat. Can be null. */
publicDSP_GETPARAM_INT_CALLBACKgetparameterint;/* [w] This is called when the user calls DSP.getParameterInt. Can be null. */
publicDSP_GETPARAM_BOOL_CALLBACKgetparameterbool;/* [w] This is called when the user calls DSP.getParameterBool. Can be null. */
publicDSP_GETPARAM_DATA_CALLBACKgetparameterdata;/* [w] This is called when the user calls DSP.getParameterData. Can be null. */
publicDSP_SHOULDIPROCESS_CALLBACKshouldiprocess;/* [w] This is called before processing. You can detect if inputs are idle and return FMOD_OK to process, or any other error code to avoid processing the effect. Use a count down timer to allow effect tails to process before idling! */
publicintuserdata;/* [w] Optional. Specify 0 to ignore. This is user data to be attached to the DSP unit during creation. Access via DSP::getUserData. */
publicDSP_SYSTEM_REGISTER_CALLBACKsys_register;/* [w] Register callback. This is called when DSP unit is loaded/registered. Useful for 'global'/per system object init for plugin. Can be null. */
publicDSP_SYSTEM_DEREGISTER_CALLBACKsys_deregister;/* [w] Deregister callback. This is called when DSP unit is unloaded/deregistered. Useful as 'global'/per system object shutdown for plugin. Can be null. */
publicDSP_SYSTEM_MIX_CALLBACKsys_mix;/* [w] System mix stage callback. This is called when the mixer starts to execute or is just finishing executing. Useful for 'global'/per system object once a mix update calls for a plugin. Can be null. */
DSP_SYSTEM_GETSAMPLERATEgetsamplerate;/* [r] Callback for getting the system samplerate. */
DSP_SYSTEM_GETBLOCKSIZEgetblocksize;/* [r] Callback for getting the system's block size. DSPs will be requested to process blocks of varying length up to this size.*/
intdft;/* [r] Struct containing callbacks for performing FFTs and inverse FFTs. */
intpancallbacks;/* [r] Pointer to a structure of callbacks for calculating pan, up-mix and down-mix matrices. */
DSP_SYSTEM_GETSPEAKERMODEgetspeakermode;/* [r] Callback for getting the system's speaker modes. One is the mixer's default speaker mode, the other is the output mode the system is downmixing or upmixing to.*/
FMOD_DSP_STATE_GETCLOCKgetclock;/* [r] Callback for getting the clock of the current DSP, as well as the subset of the input buffer that contains the signal */
publicintinstance;/* [r] Handle to the DSP hand the user created. Not to be modified. C++ users cast to FMOD::DSP to use. */
publicintplugindata;/* [r/w] Plugin writer created data the output author wants to attach to this object. */
publicuint32channelmask;/* [r] Specifies which speakers the DSP effect is active on */
publicint32source_speakermode;/* [r] Specifies which speaker mode the signal originated for information purposes, ie in case panning needs to be done differently. */
publicintsidechaindata;/* [r] The mixed result of all incoming sidechains is stored at this pointer address. */
publicint32sidechainchannels;/* [r] The number of channels of pcm data stored within the sidechain buffer. */
publicintcallbacks;/* [r] Struct containing callbacks for system level functionality. */
publicint32systemobject;/* [r] FMOD::System object index, relating to the System object that created this DSP. */
FADETIME,/* Time to ramp the silence to full in ms. 0.0 to 20000.0. Default = 5000.0. */
THRESHHOLD,/* Lower volume range threshold to ignore. 0.0 to 1.0. Default = 0.1. Raise higher to stop amplification of very quiet signals. */
MAXAMP/* Maximum amplification allowed. 1.0 to 100000.0. Default = 20.0. 1.0 = no amplifaction, higher values allow more boost. */
}
/*
[ENUM]
[
[DESCRIPTION]
ParametertypesfortheFMOD_DSP_TYPE_LIMITERfilter.
[REMARKS]
[SEE_ALSO]
DSP::setParameterFloat
DSP::getParameterFloat
FMOD_DSP_TYPE
]
*/
publicenumDSP_LIMITER
{
RELEASETIME,/* (Type:float) - Time to ramp the silence to full in ms. 1.0 to 1000.0. Default = 10.0. */
CEILING,/* (Type:float) - Maximum level of the output signal in dB. -12.0 to 0.0. Default = 0.0. */
MAXIMIZERGAIN,/* (Type:float) - Maximum amplification allowed in dB. 0.0 to 12.0. Default = 0.0. 0.0 = no amplifaction, higher values allow more boost. */
PITCH,/* Pitch value. 0.5 to 2.0. Default = 1.0. 0.5 = one octave down, 2.0 = one octave up. 1.0 does not change the pitch. */
FFTSIZE,/* FFT window size. 256, 512, 1024, 2048, 4096. Default = 1024. Increase this to reduce 'smearing'. This effect is a warbling sound similar to when an mp3 is encoded at very low bitrates. */
OVERLAP,/* Window overlap. 1 to 32. Default = 4. Increase this to reduce 'tremolo' effect. Increasing it by a factor of 2 doubles the CPU usage. */
MAXCHANNELS/* Maximum channels supported. 0 to 16. 0 = same as fmod's default output polyphony, 1 = mono, 2 = stereo etc. See remarks for more. Default = 0. It is suggested to leave at 0! */
WETDRYMIX,/* (Type:float) - Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from 0.0 through 100.0 (all wet). Default = 50. */
FEEDBACK,/* (Type:float) - Percentage of output fed back into input, in the range from 0.0 through 100.0. Default = 50. */
LEFTDELAY,/* (Type:float) - Delay for left channel, in milliseconds, in the range from 1.0 through 2000.0. Default = 500 ms. */
RIGHTDELAY,/* (Type:float) - Delay for right channel, in milliseconds, in the range from 1.0 through 2000.0. Default = 500 ms. */
PANDELAY/* (Type:float) - Value that specifies whether to swap left and right delays with each successive echo. Ranges from 0.0 (equivalent to FALSE) to 1.0 (equivalent to TRUE), meaning no swap. Default = 0. CURRENTLY NOT SUPPORTED. */
DECAYTIME,/* (Type:float) - Decay Time : Reverberation decay time at low-frequencies in milliseconds. Ranges from 100.0 to 20000.0. Default is 1500. */
EARLYDELAY,/* (Type:float) - Early Delay : Delay time of first reflection in milliseconds. Ranges from 0.0 to 300.0. Default is 20. */
LATEDELAY,/* (Type:float) - Reverb Delay : Late reverberation delay time relative to first reflection in milliseconds. Ranges from 0.0 to 100.0. Default is 40. */
HFREFERENCE,/* (Type:float) - HF Reference : Reference frequency for high-frequency decay in Hz. Ranges from 20.0 to 20000.0. Default is 5000. */
HFDECAYRATIO,/* (Type:float) - Decay HF Ratio : High-frequency decay time relative to decay time in percent. Ranges from 10.0 to 100.0. Default is 50. */
DIFFUSION,/* (Type:float) - Diffusion : Reverberation diffusion (echo density) in percent. Ranges from 0.0 to 100.0. Default is 100. */
DENSITY,/* (Type:float) - Density : Reverberation density (modal density) in percent. Ranges from 0.0 to 100.0. Default is 100. */
LOWSHELFFREQUENCY,/* (Type:float) - Low Shelf Frequency : Transition frequency of low-shelf filter in Hz. Ranges from 20.0 to 1000.0. Default is 250. */
LOWSHELFGAIN,/* (Type:float) - Low Shelf Gain : Gain of low-shelf filter in dB. Ranges from -36.0 to 12.0. Default is 0. */
HIGHCUT,/* (Type:float) - High Cut : Cutoff frequency of low-pass filter in Hz. Ranges from 20.0 to 20000.0. Default is 20000. */
EARLYLATEMIX,/* (Type:float) - Early/Late Mix : Blend ratio of late reverb to early reflections in percent. Ranges from 0.0 to 100.0. Default is 50. */
WETLEVEL,/* (Type:float) - Wet Level : Reverb signal level in dB. Ranges from -80.0 to 20.0. Default is -6. */
DRYLEVEL/* (Type:float) - Dry Level : Dry signal level in dB. Ranges from -80.0 to 20.0. Default is 0. */
OVERALL_GAIN,/* (Type:data) - Overall gain. For information only, not set by user. Data of type FMOD_DSP_PARAMETER_DATA_TYPE_OVERALLGAIN to provide to FMOD, to allow FMOD to know the DSP is scaling the signal for virtualization purposes. */
WINDOWSIZE,/* (Type:int) - [r/w] Must be a power of 2 between 128 and 16384. 128, 256, 512, 1024, 2048, 4096, 8192, 16384 are accepted. Default = 2048. */
SPECTRUMDATA,/* (Type:data) - [r] Returns the current spectrum values between 0 and 1 for each 'fft bin'. Cast data to FMOD_DSP_PARAMETER_DATA_TYPE_FFT. Divide the niquist rate by the window size to get the hz value per entry. */
DOMINANT_FREQ/* (Type:float) - [r] Returns the dominant frequencies for each channel. */
ALLMONO,/* Output channel count = 1. Mapping: Mono, Mono, Mono, Mono, Mono, Mono, ... (each channel all the way up to FMOD_MAX_CHANNEL_WIDTH channels are treated as if they were mono) */
ALLSTEREO,/* Output channel count = 2. Mapping: Left, Right, Left, Right, Left, Right, ... (each pair of channels is treated as stereo all the way up to FMOD_MAX_CHANNEL_WIDTH channels) */
ALLQUAD,/* Output channel count = 4. Mapping: Repeating pattern of Front Left, Front Right, Surround Left, Surround Right. */
ALL5POINT1,/* Output channel count = 6. Mapping: Repeating pattern of Front Left, Front Right, Center, LFE, Surround Left, Surround Right. */
ALL7POINT1,/* Output channel count = 8. Mapping: Repeating pattern of Front Left, Front Right, Center, LFE, Surround Left, Surround Right, Back Left, Back Right. */
ALLLFE/* Output channel count = 6. Mapping: Repeating pattern of LFE in a 5.1 output signal. */
AUTO=-1,/* A transmitter will use whatever signal channel count coming in to the transmitter, to determine which speaker mode is allocated for the transceiver channel. */
MONO=0,/* A transmitter will always downmix to a mono channel buffer. */
STEREO,/* A transmitter will always upmix or downmix to a stereo channel buffer. */
SURROUND,/* A transmitter will always upmix or downmix to a surround channel buffer. Surround is the speaker mode of the system above stereo, so could be quad/surround/5.1/7.1. */
TRANSMIT,/* (Type:bool) - [r/w] - FALSE = Transceiver is a 'receiver' (like a return) and accepts data from a channel. TRUE = Transceiver is a 'transmitter' (like a send). Default = FALSE. */
GAIN,/* (Type:float) - [r/w] - Gain to receive or transmit at in dB. -80.0 to 10.0. Default = 0. */
CHANNEL,/* (Type:int) - [r/w] - Integer to select current global slot, shared by all Transceivers, that can be transmitted to or received from. 0 to 31. Default = 0.*/
_3D_POSITION,/* (Type:data) - 3D Position. data of type FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI */
_3D_ROLLOFF,/* (Type:int) - 3D Rolloff. FMOD_DSP_PAN_3D_ROLLOFF_LINEARSQUARED to FMOD_DSP_PAN_3D_ROLLOFF_CUSTOM. Default = FMOD_DSP_PAN_3D_ROLLOFF_LINEARSQUARED. */
_3D_MIN_DISTANCE,/* (Type:float) - 3D Min Distance. 0.0 to 1e+19f. Default = 1.0. */
_3D_MAX_DISTANCE,/* (Type:float) - 3D Max Distance. 0.0 to 1e+19f. Default = 20.0. */
_3D_EXTENT_MODE,/* (Type:int) - 3D Extent Mode. FMOD_DSP_PAN_3D_EXTENT_MODE_AUTO to FMOD_DSP_PAN_3D_EXTENT_MODE_OFF. Default = FMOD_DSP_PAN_3D_EXTENT_MODE_AUTO. */
_3D_SOUND_SIZE,/* (Type:float) - 3D Sound Size. 0.0 to 1e+19f. Default = 0.0. */
_3D_MIN_EXTENT,/* (Type:float) - 3D Min Extent. 0.0 (degrees) to 360.0 (degrees). Default = 0.0. */
OVERALL_GAIN,/* (Type:data) - Overall gain. For information only, not set by user. Data of type FMOD_DSP_PARAMETER_DATA_TYPE_OVERALLGAIN to provide to FMOD, to allow FMOD to know the DSP is scaling the signal for virtualization purposes. */
OUTPUTGAIN/* (Type:float) - Output gain level. 0.0 to 1.0 linear scale. For the user to scale the output of the object panner's signal. */