Forum

Results 1 to 6 of 6
  1. #1
    Join Date
    October 2012
    Location
    Germany
    Posts
    553

    Couple of 3d sound questions

    I'm going to use 3d sound for an upcoming module using switchable both the ts implementation and a personal playground.

    1)
    The ts processing module seems to have a global enabled state option, which is accessible from the playback options (though not playback profile dependend), via hotkeys and via the manual positioning widget, all pointing to the 3dsoundenabled bool in the client database. However, there doesn't seem to be a plugin api function to toggle said option. I can read the sql database to get the current value, however am doubtful if writing to it would trigger an immediate change. It'd be rather nice not having to write some label la "To have this working, go to blabla and click blubblub" in my options menu. Is there a way to do that which I'm just not seeing?

    2)
    Once a position is assigned to the client, it should be possible to remove it from 3d positioning again.
    Currently, when a client leaves the environment, I have to continue to update his position to be in front of me to not have it stuck at some position.
    Req: Setting the client position to a convention position (<0,0,0>, moving default positon for external clients to <0,1,0> in your manual widget also to not have people in the middle of your head per default?) should remove it from processing.

    3)
    State of the implementation.
    To determine, on what stuff I focus on my playground implementation, it'd be good to know about the state of implementation of the current module. I learned it's an own one that replaced fmod.
    So:
    What's the treatment if the client is stereo? Simple panner, HRTF binaural?
    In 2D Surround setups, Simple Panner, VBAP?
    3D sound existent? Ambisonics? HRTF?

    4)
    The client setup seems to be detectable only as soon as the audio processing callback is run.
    Is SPEAKER_HEADPHONES_LEFT/RIGHT catching all stereo headphones, or will I have to implement a setting?

    Thanks for your time.

  2. #2
    Join Date
    June 2002
    Location
    Netherlands
    Posts
    1,049
    To answer your questions:
    1: No you did not miss anything, there currently is no way to do this.
    2: a client should not be placed 3d any more when it is placed at the same location as the listener.
    3: Our implementation is very basic. We take the angle the sound should be comming from and try to replicate that angle by "panning" it to the best speaker. No HRTF or signal delay / phase changing.
    4: I do not understand this question, please elaborate. As for SPEAKERS_HEADPHONES_L/R: we try to detect headphones as best as we can, but currently that is not saying much. We do use this info to place the speakers directly opposite each other (180 deg) in stead of the normal 2 speaker setup comming from the front, for 3d processing.

  3. #3
    Join Date
    October 2012
    Location
    Germany
    Posts
    553
    Thanks for your answer, quite enlightening already

    1. Well, you know, if you run out of things to do haha.

    2. Good to hear it bypasses processing then already. However, when the (foreign) client leaves the 3d environment but stays in TS, while the (local) listener stays inside the environment, the (foreign) client will have to be re-glued on every local listener position change to keep it at the listeners position or else it would re-enter processing, right? That's not hard to do, sure, however it'd be more comfortable to take the (foreign) client out of the equation altogether on leave, which is what I was aiming at. If that's supposed to happen too, there might be something wrong with my code then.

    3. Well that sounds a lot like VBAP, Vector-based amplitude panning using the nearest 2(2D) or 3(3D) speakers for panning of a speaker array ;D
    I guess I'll focus the playground on HRTF then.

    4. The answer is pretty good already though
    The background of the question is basically 3), SPEAKERS_HEADPHONE would be the (only) thing I know outside of a manual switch to auto-toggle HRTF on/off, or between ts native 3d/hrtf (see 1) since it ain't working as good with speakers than with headphones.
    Since you guys have met a rather wide spectrum of audio gear than I, who hasn't even ever had a USB headphone, I was wondering if it catches them all or if I'd better do a user option to toggle; mainly bec. I recall having read in a rather old thread it'd be a hit and miss.

  4. #4
    Join Date
    September 2012
    Posts
    6,076
    Quote Originally Posted by Philosound View Post
    1. Well, you know, if you run out of things to do haha.
    ... we already have a loooooong list of things to do then :P


    Quote Originally Posted by Philosound View Post
    2. Good to hear it bypasses processing then already. However, when the (foreign) client leaves the 3d environment but stays in TS, while the (local) listener stays inside the environment, the (foreign) client will have to be re-glued on every local listener position change to keep it at the listeners position or else it would re-enter processing, right? That's not hard to do, sure, however it'd be more comfortable to take the (foreign) client out of the equation altogether on leave, which is what I was aiming at. If that's supposed to happen too, there might be something wrong with my code then.
    Not entirely sure, but the way I see it, the position of the local client should never change and always be 0,0,0.

  5. #5
    Join Date
    June 2002
    Location
    Netherlands
    Posts
    1,049
    The local position of the client *can* change if the sdk user wants it. And yes, it would be better to have a seperate state variable for "do 3d processing on this client" instead of it depending on the position of that client relative to the listener.

  6. #6
    Join Date
    October 2012
    Location
    Germany
    Posts
    553
    @Chris
    1) I would've guessed so
    2) That way I'd have to reposition every foreign client on a local listener position change wouldn't I? At first glance, I figure it'd cause more stress, especially since the local client is potentially updated ~50 times as often as foreign clients due to sending positions over the server. Might be more attractive in scenarios where you get all positions locally.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. A couple questions...
    By soccermitchy in forum General Questions
    Replies: 1
    Last Post: October 2nd, 2015, 08:30 AM
  2. Couple Permissions questions
    By hobojoe in forum Permission System
    Replies: 5
    Last Post: January 14th, 2010, 12:23 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •