# Using a 3D reverb with a fixed listener position

**URL:** <https://qa.fmod.com/t/using-a-3d-reverb-with-a-fixed-listener-position/20965>\
**Category:** FMOD Engine\
**Tags:** cpp\
**Created:** [December 7, 2023, 7:57am UTC](https://qa.fmod.com/t/using-a-3d-reverb-with-a-fixed-listener-position/20965 "2023-12-07T07:57:19Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jbandhauer](https://avatars.discourse-cdn.com/v4/letter/j/e0b2c6/32.png) [@jbandhauer](https://qa.fmod.com/u/jbandhauer)\
**Post date:** [December 7, 2023, 7:57am UTC](https://qa.fmod.com/t/using-a-3d-reverb-with-a-fixed-listener-position/20965/1 "2023-12-07T07:57:19Z")

</div>

Hello,

I am using FMOD Core / c++, and I am using the object spatializer (FMOD\_DSP\_TYPE\_OBJECTPAN) to set the position of the sound source. The listener position is fixed in my case.  
Now I would like to use a 3D reverb in my scene and followed the example from [here](https://www.fmod.com/docs/2.02/api/white-papers-3d-reverb.html).  
I can hear the reverb, but since my listener position is fixed, and only the sound emitter is moving it will never attenuate.  
How could I get the reverb working in this setup?

Thanks a lot

---

<div class="post-metadata">

**Author:** ![jbandhauer](https://avatars.discourse-cdn.com/v4/letter/j/e0b2c6/32.png) [@jbandhauer](https://qa.fmod.com/u/jbandhauer)\
**Post date:** [December 7, 2023, 8:22am UTC](https://qa.fmod.com/t/using-a-3d-reverb-with-a-fixed-listener-position/20965/2 "2023-12-07T08:22:00Z")

</div>

Now it seems to work, if I set the listener position to the position of the sound source with: `fmod_system->set3DListenerAttributes(0, &fmod_abs.position, 0, 0, 0);` although it seems hacky and I am not sure about the side effects.

What is the proper way to do this?

---

<div class="post-metadata">

**Author:** ![jbandhauer](https://avatars.discourse-cdn.com/v4/letter/j/e0b2c6/32.png) [@jbandhauer](https://qa.fmod.com/u/jbandhauer)\
**Post date:** [December 8, 2023, 7:44pm UTC](https://qa.fmod.com/t/using-a-3d-reverb-with-a-fixed-listener-position/20965/3 "2023-12-08T19:44:03Z")

</div>

I did some more tests, and found that the directcclusion does not work anymore if I set the listener position like mentioned above.

So the question remains: How to have 3D reverbs when the listener is not moving, but the sound source is moving?

---

<div class="post-metadata">

**Author:** ![Leah\_FMOD](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/leah_fmod/32/3685_2.png) [@Leah\_FMOD](https://qa.fmod.com/u/Leah_FMOD)\
**Post date:** [December 12, 2023, 5:14am UTC](https://qa.fmod.com/t/using-a-3d-reverb-with-a-fixed-listener-position/20965/4 "2023-12-12T05:14:31Z")

</div>

Hi,

Correct me if I’m misunderstanding your issue, but there are two options for what you appear to want:

- You can specify a wet level for the reverb with [`Reverb3D::setProperties`](https://www.fmod.com/docs/2.02/api/core-api-reverb3d.html#reverb3d_setproperties)
- You can Set the 3D attributes for your Reverb3D with [`Reverb3D::set3DAttributes`](https://www.fmod.com/docs/2.02/api/core-api-reverb3d.html#reverb3d_set3dattributes), and change the position to attenuate the level of the reverb signal

I’m not sure which of these would produce the desired effect though. Can I get you to elaborate on what exactly the desired behavior is? Do you want to attenuate the reverb signal manually, by distance from the listener, or something else entirely?

---

<div class="post-metadata">

**Author:** ![jbandhauer](https://avatars.discourse-cdn.com/v4/letter/j/e0b2c6/32.png) [@jbandhauer](https://qa.fmod.com/u/jbandhauer)\
**Post date:** [December 12, 2023, 8:05am UTC](https://qa.fmod.com/t/using-a-3d-reverb-with-a-fixed-listener-position/20965/5 "2023-12-12T08:05:44Z")

</div>

Thanks for your answer. I think, I need to explain better what I would like to have.  
I have an R/C heli flight simulator.  
The listener (the R/C pilot) position is fixed, and never changes.  
The sound source is the helicopter which is flying through space (it changes its position)  
I have setup distance attenuation (with `fmod_snd1->set3DMinMaxDistance(20.0f, 10000.0f);`) and it works perfect.  
I also load geometry to get audio attenuation if the heli is flying behind objects in the scene (for example if the heli is behind a house). Also this works perfect.  
Now I have a building in my scene, and I would like to have an reverb effect, when the heli is flying inside this building. The size of the reverb sphere is about as big as the building, and the center is in the middle of the building.  
The pilot (listener) is outside the building (and not in the reverb zone). I think the reverb is not working in my case, because the listener is not inside the reverb.

Is there a way to get that reverb effect if the heli is flying inside the building?

Please let me know, if you need more information.  
Thanks

---

<div class="post-metadata">

**Author:** ![Leah\_FMOD](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/leah_fmod/32/3685_2.png) [@Leah\_FMOD](https://qa.fmod.com/u/Leah_FMOD)\
**Post date:** [December 17, 2023, 11:30pm UTC](https://qa.fmod.com/t/using-a-3d-reverb-with-a-fixed-listener-position/20965/6 "2023-12-17T23:30:09Z")

</div>

Thanks for explaining the situation.

Reverb zones are inherently listener-centric: if you intend for your listener to be in a fixed position, then you will not be able to apply reverb with a reverb zone, as the listener will never enter the reverb zone.

Besides changing the listener position to match the RC Heli, your best option is to use global mixer reverb, and control the send level to the reverb of from your own code based on whether the RC Heli is within the building. You can create a global reverb instance with [`System::setReverbProperties`](https://www.fmod.com/docs/2.02/api/core-api-system.html#system_setreverbproperties), and then control the wet/dry level with [`ChannelControl::setReverbProperties`](https://www.fmod.com/docs/2.02/api/core-api-channelcontrol.html#channelcontrol_setreverbproperties).
