I made a custom dsp plugin for FMOD, built it into a DLL and put it into my “AppData\Local\FMOD Studio\Plugins” folder… I tried with 32bit, 64bit DLLs, but nothing worked, it doesn’t show up under Plug-in Effects in FMOD Studio 1.10.09.
I followed the API documentation, and read through the fmod_gain.cpp for reference.
my code:
const int PARAM_BIT_DEPTH_MIN = 0;
const int PARAM_BIT_DEPTH_MAX = 24;
const int PARAM_BIT_DEPTH_DEFAULT = 8;
const int PARAM_BIT_RATE_MIN = 0;
const int PARAM_BIT_RATE_MAX = 192000;
const int PARAM_BIT_RATE_DEFAULT = 4096;
enum
{
FMOD_BITCRUSHER_PARAM_BIT_RATE = 0,
FMOD_BITCRUSHER_PARAM_BIT_DEPTH,
FMOD_BITCRUSHER_PARAM_NUM
};
static bool FMOD_BitCrusher_Running = false;
static FMOD_DSP_PARAMETER_DESC p_bitRate;
static FMOD_DSP_PARAMETER_DESC p_bitDepth;
FMOD_DSP_PARAMETER_DESC *FMOD_BitCrusher_dspparam[FMOD_BITCRUSHER_PARAM_NUM] =
{
&p_bitRate,
&p_bitDepth
};
[...]
FMOD_DSP_DESCRIPTION FMOD_BitCrusher_Desc =
{
FMOD_PLUGIN_SDK_VERSION,
"BitCrusher", // name
0x00010000, // plug-in version
1, // number of input buffers to process
1, // number of output buffers to process
FMOD_BitCrusher_dspcreate,
FMOD_BitCrusher_dsprelease,
FMOD_BitCrusher_dspreset,
#ifndef FMOD_BITCRUSHER_USEPROCESSCALLBACK
FMOD_BitCrusher_dspread,
#else
0,
#endif
#ifdef FMOD_BITCRUSHER_USEPROCESSCALLBACK
FMOD_BitCrusher_dspprocess,
#else
0,
#endif
0,
FMOD_BITCRUSHER_PARAM_NUM,
FMOD_BitCrusher_dspparam,
0, // FMOD_BitCrusher_dspsetparamfloat,
FMOD_BitCrusher_dspsetparamint,
0, // FMOD_BitCrusher_dspsetparambool,
0, // FMOD_BitCrusher_dspsetparamdata,
0, // FMOD_BitCrusher_dspgetparamfloat,
FMOD_BitCrusher_dspgetparamint,
0, // FMOD_BitCrusher_dspgetparambool,
0, // FMOD_BitCrusher_dspgetparamdata,
FMOD_BitCrusher_shouldiprocess,
0, // userdata
FMOD_BitCrusher_sys_register,
FMOD_BitCrusher_sys_deregister,
FMOD_BitCrusher_sys_mix
};
extern "C"
{
F_EXPORT FMOD_DSP_DESCRIPTION* F_CALL FMODGetDSPDescription()
{
static int bitDepth_values[] = { 1, 2, 4, 8, 16, 24 };
static int bitRate_values[] = { 0, 1024, 2048, 4096, 8192, 16384, 22050, 44100 };
static const char* bitDepth_enumeration[] = { "1","2", "4", "8", "16", "24" };
static const char* bitRate_enumeration[] = { "0", "1024", "2048", "4096", "8192", "16384", "22050", "44100" };
FMOD_DSP_INIT_PARAMDESC_INT_ENUMERATED(
p_bitDepth,
"Bit Depth",
"bit",
"",
4,
bitDepth_enumeration);
FMOD_DSP_INIT_PARAMDESC_INT_ENUMERATED(
p_bitRate,
"Bit Rate",
"Samp/s",
"",
4096,
bitRate_enumeration);
return &FMOD_BitCrusher_Desc;
}
}