• Skip to primary navigation
  • Skip to main content

Alessandro Famà

  • Portfolio
  • Tutorials
  • Wiki
  • Über Mich
  • Impressum
  • Alessandro Famà
  • Tutorials
  • FMOD + Unreal Engine 4 Tutorials
  • FMOD Mixer in Unreal Engine 4 bedienen

    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
      • Umwandlung eines Dezibelwertes in eine lineare Skala
      • Bus Lautstärkeregelung
      • VCA Lautstärkeregelung
    • Steuerung des FMOD Mixers mit C++
      • Bus Lautstärkeregelung mit UFMODBus
      • Bus Lautstärkeregelung über die Studio API von FMOD
      • VCA Lautstärkeregler mit UFMODVCA
      • VCA Lautstärkeregelung über die Studio API von FMOD

    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:

    dBToLinear Function in Unreal Engine 4
    dBToLinear Function in Unreal Engine 4

    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:

    FMOD Set Bus Volume node in Unreal Engine 4
    FMOD Set Bus Volume node in Unreal Engine 4

    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:

    FMOD VCA Set Volume node in Unreal Engine 4
    FMOD VCA Set Volume node in Unreal Engine 4

    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:

    FMOD Bus in the Details tab in Unreal Engine 4
    FMOD Bus in the Details tab in Unreal Engine 4

    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.