Answered
0
0

Hi,

I’m trying to simulate an obstruction case.
I’m having a 3D sound source and a column in a reverb room. I set the direct factor of the column (defining a cube geometry to represent the column) to be 0.8 and the reverb factor to 0. The column is located in front of the column (on the Z axis).
When the listener is standing in front of the column, I expect the direct sound to be lowered and it is happening. But I don’t hear the effect of reverb. I expect the reverb sound not be affected at all.
I have set the the reverb for the room and when I move around I can hear the effect of the early reflections.
Any help would be appreciated.

  • Brett Paterson

    Are you saying the reverb occlusion value of 0 sounds like it is behaving like 1.0? (no reverb), but you said you could hear it suddenly when you step out of way of the column and look at the source directly?

  • GhPGame

    Yes it seems that I only hear the sound when there is a direct ray from source to the listener, and I do not hear any reverb although I have set up a 3D reverb.

  • Brett Paterson

    have you tried 0.1? 0.5? 0.9? There are 2 ways to set the occlusion values, addPolygon and setPolygonAttributes, anything there being mixed up/overridden?

  • Brett Paterson

    actually I think I know the effect you’re having, the issue is more to do with where the reverb is connected to in the graph from the channel. If it comes post fader, it will only produce reverb from the post fader signal, which is quiet. You can probably hear a tail of a reverb if you move left and right of the column before it dies out.
    I’ll give suggestion on how to reroute to pre-fader in the next post

  • GhPGame

    Thanks Brett, I have used different values for reverb factor, none of them works. I only used addPolygon, I never call setPolygonAttrributes, I’m not sure whether I have to use this function since the factors are already set using addPolygon.

  • You must to post comments
Best Answer
0
0

By default, the reverb is connected to the fader, which is the output of the 3d panning algorithm. This means when the dry mix fades, so does the reverb.

The only way to make the reverb come before the dry 3D or occlusion part, is to

  1. Do 3D panning on a wrapper channel group, not the channel itself (so put a channel in a channelgroup, one for each channel, then call ChannelGroup::set3DAttributes, not Channel::set3DAttributes). Reverb always comes from the channel, so it will come first, then the channelgroup will do the dry 3d pan later. This keeps them separate. ChannelGroup::setMode(FMOD_3D) will be needed to make it 3d pannable.

  2. add a new tail to a channel (call System::createDSPByType(FMOD_DSP_TYPE_MIXER, &newtail); then do channel->setReverbProperties(0, 0); followed immediately by setReverbProperties(0, 1); ,which resets the internal reverb connect to the new tail. Unfortunately I found this doesn’t work currently due to a missed check, so I will have to patch the next release with this for this method to work.

At least method 1 will work for now, and method 2 will work in the next point release.

  • Brett Paterson

    That is not the right way to do it. You can’t create new reverbs and add them via addDSP and expect them to be managed by the internal systems. There is 1 system reverb.
    The only reason I said use addDSP is to -reposition- the system reverb (addDSP will disconnect it from wherever it is and put it in the new position).

    There is only 1 system reverb,which is the only one that reacts to geometry.
    You have to locate it (via getDSP and getnuminputs/getinput/getinfo) then ‘reposition it’. This -only- to satisfy the requirement that you had for 3d positioning the system reverb. This is an extra requirement for a system that does not support it natively so you have to do extra low level connection management.

  • GhPGame

    Pretty confusing then. I know add the reverb to a channel group, then I get the DSP and I add it to a new channel group. The reverb disconnects from the first sound and connects to the new one, which is for sure not what I’m expecting. I want them both to be affected by the reverb of the room they are located in, I just want the reverb to get lowered as I go further from the sound. Also, by adding the DSP to the channel group it is not enclosed in a geometry.
    They are different ways to add reverb, you suggested me to use them all, and at the end it made me confused :(

  • Brett Paterson

    you dont put the existing reverb’s dsp unit in your sounds channelgroup, you put it in a stand alone, ‘reverb’ channelgroup, just so you can get access to channelgroup functions like set3DAttributes. This has nothing to do with your sounds. It is purely to put the reverb dsp in a channelgroup. nothing more. You said you wanted to position the reverb separately to the sounds I thought.

  • Brett Paterson

    if you dont care about panning of the reverb, just leave it alone and use the Reverb3D api which already allows you to have reverb fade out the further away you get from a reverb sphere’s center point.

  • GhPGame

    Thanks you for your patience and help Brett.

Showing 1 result
Your Answer

Please first to submit.