VST plugin

Hi,

I’ve created a VST plugin that I’d like to use in FMOD studio.
Can I import it in FMOD studio and - if so - how ?

Kind regards,

Tom

Hi Tom,

FMOD Studio does not work with VSTs, instead you will need to create a proprietary DLL file and place it into the Plugins folder of either your installation folder or your projects folder.

For an example of how to create an FMOD plugin, please see the dsp_custom project in our FMOD API.

https://www.fmod.org/documentation#content/generated/example_lowlevel/dsp_custom.html

You can also read up on custom DSPs in our documentation.

https://www.fmod.org/documentation#content/generated/lowlevel_api_DSP.html

I hope this has been useful.

Thanks,
Richard

1 Like

Hi Richard,

Thanks for your quick answer.

I’ve implemented a dsp and it’s working fine on the master group.
The only thing is that I want it to operate on a channelgroup on the master group.
In FMOD studio I created a channel group to be able to adjust the volume of a group of sounds.
I only want my custom DSP to influence the channelgroup for those sounds.

So I entered the following code:
`FMOD::DSP *mydsp;
FMOD_DSP_DESCRIPTION dspdesc;
memset(&dspdesc, 0, sizeof(dspdesc));

	strcpy_s(dspdesc.name, "My first DSP unit");
	dspdesc.version = 0x00010000;
	dspdesc.numinputbuffers = 1;
	dspdesc.numoutputbuffers = 1;
	dspdesc.read = dsp_equalizer;
	dspdesc.userdata = (void *)0x12345678;

	lowLevelSystem->createDSP(&dspdesc, &mydsp);
	mydsp->setBypass(false);
	mydsp->setActive(true);
	FMODErrorCheck(system->getBus("bus:/subgroup", &Bus));
	Bus->getChannelGroup(&subgroup);
	FMODErrorCheck(subgroup->addDSP(0, mydsp));`

FMODErrorCheck(system->getBus(“bus:/subgroup”, &Bus)); Retrieves the Low Level ChannelGroup used by the bus, according to the manual.

Unfortunately the DSP is not doing anything on this subgroup.
How do I get this DSP to work on a subgroup ?

Best regards,

Tom

Hi Tom,

You need to make sure that the bus has been created when you try to add your DSP. Buses are normally dynamically created and destroyed on demand so you will need to lock the bus first before getting the channel group from it.

bus->lockChannelGroup();
system->flushCommands();
FMODErrorCheck(bus->getChannelGroup(&subgroup));

I hope this helps.

Thanks,
Richard

1 Like