In diesem Tutorial werden wir die Lautstärke von FMOD-Bussen und VCAs in Unreal Engine 4 ändern, indem wir Blueprint-Nodes verwenden und C++ Code schreiben.
Inhaltsverzeichnis
FMOD Mixer mit Blueprints steuern
Wir können zwei Knoten verwenden, nämlich Bus Set Volume und VCA Set Volume, um die Lautstärke bestimmter Busse und VCAs zu steuern. Aber zuerst erstellen wir eine Funktion, die einen Dezibelwert in einen linearen Wert umwandelt. Da beide Volumen in einer linearen (Amplituden-)Skala zwischen 0 und 1 dargestellt werden, fühlt es sich besser an, mit dB zu arbeiten.
Umwandlung eines Dezibelwertes in eine lineare Skala
Erstelle zwei Float-Variablen namens dB und linear. Wir werden eine Funktion mit einem Float-Input und einem Float-Output erstellen, die unseren dB-Wert in einer linearen Skala umwandelt:
Bus Lautstärkeregelung
Im Blueprint können wir mit dieser Funktion die Lautstärke eines Busses mit Hilfe der dB-Skala einstellen. Der FMOD Node zum Einstellen der Buslautstärke wird als Bus Set Volume bezeichnet:
VCA Lautstärkeregelung
Für VCAs ist die Vorgehensweise die gleiche. Wir können das VCASet Volume Node verwenden, um die Lautstärke eines VCA einzustellen:
Steuerung des FMOD Mixers mit C++
In C++ können wir sowohl die Blueprint-Funktionen als auch die FMOD Studio API verwenden, um die Lautstärke von VCAs und Bussen zu ändern. Hier findest du eine Übersicht über die Methoden, um das gleichen Funktionen der Blueprints im Code anzuwenden.
Bus Lautstärkeregelung mit UFMODBus
Deklarieren wir einen UFMODBus
, eine Float-Variable zum Festhalten der gewünschten Lautstärke und eine Funktion, die den Lautstärkewert von einer dB-Skala in eine lineare Skala umwandelt:
UPROPERTY(EditAnywhere, Category = "FMOD")
class UFMODBus* Bus;
UPROPERTY(EditAnywhere, Category = "FMOD", meta = (ClampMin = "-80", ClampMax = "10"))
float BusVolume;
float dBToLinear(float dB);
Lasst uns zuerst die dBtoAmplitude
Funktion implementieren:
float ATutorialCharacter::dBToLinear(float dB)
{
return pow(10.0f, dB / 20.0f);
}
Um die Lautstärke des Busses einzustellen, können wir die BusSetVolume
Funktion von UFMODBlueprintStatics verwenden, indem wir den UFMODBus und den konvertierten Lautstärkenwert übergeben:
UFMODBlueprintStatics::BusSetVolume(Bus, dBToLinear(BusVolume));
Im Details Tab unseres Charakters finden wir die wählbare FMODBus-Referenz und den Bus Volume Regler:
Bus Lautstärkeregelung über die Studio API von FMOD
Wenn wir die Studio API direkt verwenden wollen, können wir einen Bus in der Header-Datei deklarieren:
FMOD::Studio::Bus* Bus;
In der Charakterklasse prüfen wir, ob FMOD Studio System verfügbar ist und wenn das der Fall ist, holen wir uns den Bus und weisen ihn dem von uns deklarierten Bus zu:
if (IFMODStudioModule::IsAvailable())
{
FMOD::Studio::System* StudioSystem = IFMODStudioModule::Get().GetStudioSystem(EFMODSystemContext::Runtime);
if (StudioSystem)
{
StudioSystem->getBus(TCHAR_TO_UTF8(*FName("bus:/Bus").ToString()), &Bus);
}
}
Jetzt können wir einfach die Funktion setVolume
aufrufen und die Buslautstärke als Argument übergeben:
Bus->setVolume(dBToAmplitude(BusVolume));
VCA Lautstärkeregler mit UFMODVCA
Das Einstellen der Lautstärke eines VCA ist sehr ähnlich wie bei den vorherigen Schritten. Wir deklarieren ein UFMODVCA und eine float-Variable für die tatsächliche Lautstärke. Wir begrenzen die Variable auch visuell auf einen Wert zwischen -80 und 10:
UPROPERTY(EditAnywhere, Category = "FMOD")
class UFMODVCA* Vca;
UPROPERTY(EditAnywhere, Category = "Variables", meta = (ClampMin = "-80", ClampMax = "10"))
float VcaVolume;
Danach können wir die Lautstärke des VCAs wie beim Bus einstellen, indem wir VCASetVolume
aufrufen:
UFMODBlueprintStatics::VCASetVolume(Vca, dBToAmplitude(VcaVolume));
VCA Lautstärkeregelung über die Studio API von FMOD
Das Einstellen der Lautstärke eines VCAs mit der Studio API verhält sich ebenfalls ähnlich. Deklariere einen VCA und eine Float-Variable, mit denen wir den lautstärkewert ändern können:
FMOD::Studio::VCA* Vca;
UPROPERTY(EditAnywhere, Category = "FMOD", meta = (ClampMin = "-80", ClampMax = "10"))
float VcaVolume;
Dann prüfen wir, ob StudioSystem verfügbar ist und holen uns den VCA:
if (IFMODStudioModule::IsAvailable())
{
FMOD::Studio::System* StudioSystem = IFMODStudioModule::Get().GetStudioSystem(EFMODSystemContext::Runtime);
if (StudioSystem)
{
StudioSystem->getVCA(TCHAR_TO_UTF8(*FName("vca:/Music").ToString()), &Vca);
}
}
Schließlich können wir mit der Funktion setVolume die Lautstärke des VCAs auf den gewünschten Wert einstellen:
Vca->setVolume(dBToAmplitude(VcaVolume));
Herzlichen Glückwunsch! Du hast gelernt, wie man die Lautstärke von FMOD Bussen und VCAs in Unreal Engine 4 ändert.