Adjust volume of a custom Boombox tape

I added a custom boombox tape with the help of this guide: https://docs.ficsit.app/satisfactory-modding/latest/Development/Satisfactory/Audio.html
It works, but music plays at maximum volume and doesn't react to the volume slider. So i set up an audio bus, assigned my songs to this bus, created an RTPC parameter, linked bus' volume to that parameter and created an AK Game Parameter in Unreal for that RTPC. Then in GameWorld Module i used Bind on BPFunction on BPW Boom Box Player widget blueprint and in its PreConstruct event i subscribed to OnVolumeChanged event. It works and when i move volume slider i receive float values from 0 to 1. But now what? How do i send those float values to RTPC? In the guide it simply says "now you can update RTPC using blueprints" and on screenshot (second attached image) it shows SetRTPC node that accepts some Ak object. Is Ak a play event? But i don't manage play events directly, boombox does, i only placed references to my play events in the tape blueprint. And i don't see Set RTPCValue node, i have Set Global RTPC Value and Set Actor RTPC Value. I tried using Set Global RTPC Value (first attached image), but that didn't work. What am i doing wrong and what is the proper way to control volume of custom tapes?
Audio :: Satisfactory Modding Documentation
This page is a work in progress. Adding sound effects and music via mods can really help bring them to life. Coffee Stain uses the Wwi...
No description
No description
28 Replies
Robb
Robb•5w ago
I'm not sure anyone has tried this yet so you may be breaking new ground I think you need to copy the rpc bus setting value from the base game to your own setting whenever is changes, not just when the slider within the boom box widget itself is adjusted. Or there might be multiple settings affecting the volume. For example, the equipment volume category, and the boom box volume, and that slider you're already using might be a per boombox instance setting?
SerGreen
SerGreenOP•5w ago
That's a valid point. Tested it and boombox slider is indeed per boombox instance, so what i was trying to do is not the right way. Additionally, boombox volume should be affected by audio settings Effects Volume > Equipment Volume > Boombox Volume. None of which affect modded music by default. Okay, then i guess i should try adding RTPC voice volume for each individual music track instead of a bus, and then bind to something in the equipable boombox blueprint to be able to access currently playing AK event and adjust RTPC from there.
Robb
Robb•5w ago
Correct, modded sound does not obey any of the vanilla sliders by default. Both Wwise and stock unreal I'm not sure I follow exactly what you're saying, but I think you should only need one bus for your mod, code to set that bus volume by combining the settings of the relevant vanilla stuff, then the final stage of the specific boombox instance's slider
SerGreen
SerGreenOP•5w ago
Got it working. I couldn't figure out how to set volume of a bus, but setting up Voice Volume RTCP on each track has worked for me. So, here's my solution to adjusting volume of a custom tape: 1. Create Game Parameter in Wwise and set up RTCP Voice Volume for each audio track. 2. In Unreal use Bind on BPFunction node to bind to Construct event of the BPW_BoomBox widget blueprint. 3. BPW_BoomBox has a reference to BPW_BoomBox_Player that has volume controls. Bind event to OnVolumeChanged of the player - that's where you change the volume. 4. BPW_BoomBox has a reference to its boombox instance mBoomBox. Use Set Actor RTCP Value node to update volume and pass mBoomBox instance as an actor. 5. You also want to update RTCP value once in Construct event, otherwise tape will play silently until you adjust the volume slider.
No description
No description
SerGreen
SerGreenOP•5w ago
This approach has an issue, though, where after changing Audio Settings (volume of sound effects, equipment, boombox), volume of the custom tape won't update until you touch the volume slider of a boombox or reload a save. Which is not that big of a deal imo.
Robb
Robb•5w ago
hmm, I wonder if there is a way to listen for changes to the base game settings, otherwise you could work around it with a timer running in the background or something @Archengius if I recall correctly you suggested the approach of reading the base game volume settings since we can't reuse the vanilla busses directly. is there a way to subscribe to base game option changes?
Archengius
Archengius•5w ago
Yes, through option system delegates The same way you subscribe to session settings or AGS
SerGreen
SerGreenOP•4w ago
My solution has a multiplayer issue. In single player it works fine, but in multiplayer other players don't hear modded music until they touch that boombox instance (open boombox's menu and close it). Unequipping into inventory and re-equipping the boombox makes other players 'forget' it and stop hearing its music. Walking away too far from a playing boombox also makes you 'forget' about it, and after coming back you won't hear it play until you touch it again. It only affects songs that have Voice Volume linked to an RTCP, songs without volume control always work for all players. I suspect it's connected to this point i made:
5. You also want to update RTCP value once in Construct event, otherwise tape will play silently until you adjust the volume slider.
I suspect that RTCP value defaults to 0 (even though i made sure to make default value 1 in Wwise) and all songs play with volume 0 until you update RTCP with a value from a slider. Here i suggested doing it in Construct event of BPW_BoomBox in order to initialize RTCP, but i guess in multiplayer this event does not fire for other clients? What can i do to make sure a RTCP initializes on all clients?
SerGreen
SerGreenOP•4w ago
I can't figure out what object has the appropriate event dispatcher for me to subscribe. Is it OnGameUserSettingUINeedsUpdate from FGGameUserSettings or is there an event specifically for changing volume sliders somewhere?
No description
Archengius
Archengius•4w ago
SubscribeToDynamicOptionUpdate on FGGameUserSettings volume slider options start with RTPC. prefix for full names check option IDs in their assets in the modding project
SerGreen
SerGreenOP•4w ago
Got it, thank you
Robb
Robb•4w ago
Good stuff. Hopefully when we have the structure to allow Wwise files in the starter project we can have an example audio bus following what you've found here Did the dynamic subscription fix this issue or is that still open?
SerGreen
SerGreenOP•4w ago
SubscribeToDynamicOptionUpdate allowed me to update volume on the fly when dragging sliders in Audio Settings, that is resolved and is working nicely.
But the issue with the multiplayer is still open. Events for a Boombox instance seem not to fire on clients that didn't interact with this specific instance. I tried binding on Construct, AudioVolumeChanged, PlaybackStateChanged, etc. - none print to the log of the second player until they open this Boombox's UI. After second player touches the Boombox, the first player can pick it up and any event will now fire for the second player too.
Robb
Robb•4w ago
the boombox actor probably isn't considered network relevant by the client player until they interact with it... hmm...
Rex
Rex•3w ago
I was told that Th3Tunes_ONLAP also has problems with volume and sound location, so it would be interesting to have the solution to this post added to the docs
SerGreen
SerGreenOP•3w ago
Yes, i tested a few mods with music tapes, including ONLAP one. It doesn't even have attenuation set up, music can be heard from anywhere on the map. So far i wasn't able to find a solution for the multiplayer issue. I tried getting all instances of the boombox class and setting RTCP there, which works, but the problem is that boomboxes don't know what volume level they are at, widgets know the slider position. I had an idea to create a subsystem that would track the volume of each boombox on the map, but didn't figure out how to do that yet. Networking and replication is tough.
Rex
Rex•3w ago
Honestly, I basically made Th3Tunes - ONLAP back in Update 8 just to see if it was possible to use Wwise in mods (it is), but didn't bother to investigate how Wwise or the Boombox work besides the absolute basics
Muppet Burrito
Muppet Burrito•2w ago
@Co5teL this is the thread with the info I thought might help you! Good luck, would love to know how you go with it! 😄
Co5teL
Co5teL•2w ago
this is for the tape player ... the boombox
Muppet Burrito
Muppet Burrito•2w ago
Yes, but this thread and another re Ada's messages both have invaluable info about using the audio systen in general that I thought might help
Co5teL
Co5teL•2w ago
i need to find where is the audio for the Hazmat suit and delete or swap with another blank sound file. or BETTER might not be the HazmatSuit, might be the RADIATION sound.
SerGreen
SerGreenOP•2w ago
You mean the clicking sound of a Geiger counter when you're near a radiation source? I'm not sure if it's possible to do anything with that. Vanilla audio files are not available in the modding project. It may be possible to replace a sound if you find a Blueprint that uses it and has a slot for an Audiokinetic Play Event (AK Event), and then you replace that play event with a play event of your own. I tried to CDO edit BP_RadialDamageType_Radiation and BP_PointDamageType_Radiation and replace mImpactAudioEvent but that didn't have any effect. Probably because Geiger clicking is not an "impact SFX" but something else that's being played in C++ and is not available in Blueprints. Or maybe CDO editing is not the right way to do such replacement, i'm not sure.
Co5teL
Co5teL•2w ago
Some day we will get this one goying too.
SerGreen
SerGreenOP•2w ago
Wait, no, it did do something. I had an issue with Wwise sound banks or something and sounds just didn't play. Now that it's fixed it works. However, mImpactAudioEvent is still not for Geiger counter sounds, it plays every time you take damage from radiation. But this CDO replacement does work. So if you will find a class that's responsible for playing Geiger clicks, it may be possible to replace it. Edit: Oh, and it requires an Access Transformer to expose Set for mImpactAudioEvent:
BlueprintReadWrite=(Class="/Script/FactoryGame.FGRadialDamageType", Property="mImpactAudioEvent")
BlueprintReadWrite=(Class="/Script/FactoryGame.FGRadialDamageType", Property="mImpactAudioEvent")
No description
Co5teL
Co5teL•2w ago
if you can realease a mod that stops the geiger sound from radiation and the chirping i would gladly download that.
Garlic_ds
Garlic_ds•2w ago
Hello, I am a beginner trying to develop the Satisfactory mod. I have previously created some Black Myth and Palworld model replacements. I want to use a similar method to package pak files to replace some Satisfactory models, but it doesn't work. Many related tutorials on Chinese online communities seem to be from several years ago. Do you have any new tutorials? thank you.
No description
Rex
Rex•2w ago
https://docs.ficsit.app/ Making mods for Satisfactory is quite different from modding other UE games Also, unless your question is specifically about boombox tapes (or Wwise audio), please create a new thread.
Garlic_ds
Garlic_ds•2w ago
Thank you.

Did you find this page helpful?