Hi everyone,
I am designing a game on Unreal 4.27 with music interactions. I am using Fmod to play the game’s music and I am trying to build a c++ actor that can analyze currently playing audio.
I saw this example in Unity : https://www.fmod.com/docs/2.01/unity/examples-spectrum-analysis.html which seems to be doing what I want to achieve.
But I am stuck pretty quickly, as I am trying to get the master Bus, here is what I’ve done so far :
SoundManager_Fmod::SoundManager_Fmod(): selectedBus()
{
userData.studioSystem = IFMODStudioModule::Get().GetStudioSystem(EFMODSystemContext::Runtime);
userData.studioSystem->getCoreSystem(&userData.coreSystem);
}
int SoundManager_Fmod::initializeBus()
{
mFFT->setParameterInt((int)FMOD_DSP_FFT_WINDOWTYPE, (int)FMOD_DSP_FFT_WINDOW_HANNING);
mFFT->setParameterInt((int)FMOD_DSP_FFT_WINDOWSIZE,WindowSize*2);
userData.studioSystem->flushCommands();
const FString busPathFstring = FPaths::ProjectContentDir() + "FMOD/" + "Bus/" ;
FMOD_RESULT result = userData.studioSystem->getBus(TCHAR_TO_ANSI(*busPathFstring), selectedBus);
if(result == FMOD_OK)
{
UE_LOG(LogTemp, Warning, TEXT("It's working !"));
}
UE_LOG(LogTemp, Warning, TEXT("It is not working"));
return 0;
}
Here are the .h parts :
struct UserData
{
FMOD::System* coreSystem = nullptr;
FMOD::Studio::System* studioSystem = nullptr;
FString key = FString();
};
protected:
UserData userData = UserData();
private:
FMOD_STUDIO_BANK** musicBank = nullptr;
FMOD::Studio::Bus** selectedBus = nullptr;
FMOD::DSP* mFFT = nullptr;
float* mFFTSpetrum;
const int WindowSize = 1024;
FMOD::Studio::System* system;
So apparently my method for getting the master Bus is not working as it always prints “It is not working”, what am I doing wrong ?
For info : my music is in a dedicated Bank named “Music”