Search Unity

Bug AudioSettings.dspTime Sometimes Fails to Update

Discussion in 'Audio & Video' started by marrobin, Jul 6, 2021.

  1. marrobin

    marrobin

    Joined:
    Oct 1, 2020
    Posts:
    7
    My
    AudioSettings.dspTime
    value gets stuck and refuses to increment maybe once in every 50 builds (in-editor).

    I've attached a screenshot in which the value of dspTime is printed on every FixedUpdate. You can see that the value of dspTime is stuck on 2067.20, even though the
    FixedUpdate
    is correctly called every 20ms (I've confirmed this, since the other values in the output update correctly).

    The result of this bug is that none of my game audio works.

    This is the line of code used in my
    FixedUpdate
    method to output the value:
    Code (CSharp):
    1. $"Pause: {pause_} | time: {AudioSettings.dspTime.ToString("F2")}"
    In most builds, the value of dspTime happily increments as expected (and is reflected in the screen output), but this bug happens often enough that I'm worried it will happen to my players.

    If I stop the Unity build and re-run, the problem goes away, so it seems to be an internal Unity issue. I've only ever replicated this bug in builds running inside the Unity editor, but I haven't done any testing of builds running on the actual OS.

    I've encountered this bug at least 20 times. I've experienced the issue on both Windows and Mac on every Unity version from 2021.1.13f1 all the way back to 2020.1.9f1.

    How can I ensure this doesn't happen to my players?
     

    Attached Files:

  2. iljamodrau

    iljamodrau

    Joined:
    Aug 10, 2021
    Posts:
    8
    Did you resolve that issue?
    I see similar results here on my mac mini m1 with Unity 2021.2.b7

    When I print

    Code (CSharp):
    1. void Update()
    2. {
    3.     Debug.Log("Time.deltaTime:            " + Time.deltaTime);
    4.     Debug.Log("AudioSettings.dspTime: " + AudioSettings.dspTime);
    5. }
    I get

    Code (CSharp):
    1. Time.deltaTime:           0.04635679
    2. AudioSettings.dspTime: 2101.48266666667
    3. Time.deltaTime:           0.0584765
    4. AudioSettings.dspTime: 2101.54666666667
    5. Time.deltaTime:           0.0504005
    6. AudioSettings.dspTime: 2101.61066666667
    7. Time.deltaTime:           0.008610833
    8. AudioSettings.dspTime: 2101.61066666667
    9. Time.deltaTime:           0.004737167
    10. AudioSettings.dspTime: 2101.61066666667
    11. Time.deltaTime:           0.003976708
    12. AudioSettings.dspTime: 2101.61066666667
    13. Time.deltaTime:           0.003172584
    14. AudioSettings.dspTime: 2101.61066666667
    15. Time.deltaTime:           0.01441817
    16. AudioSettings.dspTime: 2101.632
    17. Time.deltaTime:           0.01323021
    18. AudioSettings.dspTime: 2101.65333333333
    19. Time.deltaTime:           0.01525342
    20. AudioSettings.dspTime: 2101.67466666667
    21. Time.deltaTime:           0.01168379
    22. AudioSettings.dspTime: 2101.67466666667
    23. Time.deltaTime:           0.01133125
    24. AudioSettings.dspTime: 2101.696
    25. Time.deltaTime:           0.004929875
    26. AudioSettings.dspTime: 2101.696
    27. Time.deltaTime:           0.005961167
    28. AudioSettings.dspTime: 2101.696
    29. Time.deltaTime:           0.003573958
    30. AudioSettings.dspTime: 2101.696
     
  3. r618

    r618

    Joined:
    Jan 19, 2009
    Posts:
    1,305
    it means the mixer is not running - you're not playing any sound via unity audio
    would like to have confirmation from OP whether it's actually the case though
    if so it can be considered to be a feature and not a bug ^^
     
  4. iljamodrau

    iljamodrau

    Joined:
    Aug 10, 2021
    Posts:
    8
    Thanks for the quick reply. So I created a mixer asset. I can hear the sound as expected and see that it plays through the mixer but this problem still persists.
    Here is the code I used:

    Code (CSharp):
    1.     void Start()
    2.     {
    3.         AudioSource audioSource = GetComponent<AudioSource>();
    4.         AudioMixer audioMixer = Resources.Load<AudioMixer>("AudioMixer");
    5.         AudioMixerGroup[] audioMixGroup = audioMixer.FindMatchingGroups("Master");
    6.      
    7.         gameObject = new GameObject();
    8.         audioSource = gameObject.AddComponent<AudioSource>();
    9.         audioSource.clip = Resources.Load<AudioClip>("Music/TestSong/DrumLoop");
    10.         audioSource.outputAudioMixerGroup = audioMixGroup[0];
    11.      
    12.         double currentDSPTime = AudioSettings.dspTime;
    13.         audioSource.PlayScheduled(currentDSPTime + audioStartTime);
    14.     }
    15.  
    16.  
    17.     void Update()
    18.     {
    19.         Debug.Log("AudioSettings.dspTime: " + AudioSettings.dspTime);
    20.     }
    And the result I got:

    Code (CSharp):
    1. AudioSettings.dspTime: 1400.02133333333
    2. AudioSettings.dspTime: 1400.02133333333
    3. AudioSettings.dspTime: 1400.04266666667
    4. AudioSettings.dspTime: 1400.04266666667
    5. AudioSettings.dspTime: 1400.04266666667
    6. AudioSettings.dspTime: 1400.064
    7. AudioSettings.dspTime: 1400.064
    8. AudioSettings.dspTime: 1400.064
    9. AudioSettings.dspTime: 1400.08533333333
    10. AudioSettings.dspTime: 1400.08533333333
    11. AudioSettings.dspTime: 1400.08533333333
    12. AudioSettings.dspTime: 1400.10666666667
    13. AudioSettings.dspTime: 1400.10666666667
    14. AudioSettings.dspTime: 1400.10666666667
    15. AudioSettings.dspTime: 1400.10666666667
    16. AudioSettings.dspTime: 1400.128
    17. AudioSettings.dspTime: 1400.128
    18. AudioSettings.dspTime: 1400.14933333333
    19. AudioSettings.dspTime: 1400.14933333333
    20. AudioSettings.dspTime: 1400.14933333333
    21. AudioSettings.dspTime: 1400.17066666667
    22. AudioSettings.dspTime: 1400.17066666667
    23. AudioSettings.dspTime: 1400.192
    24. AudioSettings.dspTime: 1400.192
    25. AudioSettings.dspTime: 1400.192
    26. AudioSettings.dspTime: 1400.21333333333
    27. AudioSettings.dspTime: 1400.21333333333
    28. AudioSettings.dspTime: 1400.21333333333
    29. AudioSettings.dspTime: 1400.23466666667
    30. AudioSettings.dspTime: 1400.23466666667
    31. AudioSettings.dspTime: 1400.23466666667
    32. AudioSettings.dspTime: 1400.256
    33. AudioSettings.dspTime: 1400.256
    34. AudioSettings.dspTime: 1400.256
    35. AudioSettings.dspTime: 1400.27733333333
    36. AudioSettings.dspTime: 1400.32
    37. AudioSettings.dspTime: 1400.32
    38. AudioSettings.dspTime: 1400.32
    39. AudioSettings.dspTime: 1400.32
    40. AudioSettings.dspTime: 1400.32
    41. AudioSettings.dspTime: 1400.34133333333
    42. AudioSettings.dspTime: 1400.34133333333
    43. AudioSettings.dspTime: 1400.34133333333
    44. AudioSettings.dspTime: 1400.34133333333
    45. AudioSettings.dspTime: 1400.40533333333
     
  5. iljamodrau

    iljamodrau

    Joined:
    Aug 10, 2021
    Posts:
    8
    It seems that it is dependent to the "DSP Buffer Size" in the Project Settings. I switched from "default" to "Best latency" and this changed the effect a bit to the better:

    Code (CSharp):
    1.  
    2. AudioSettings.dspTime: 1563.20533333333
    3. AudioSettings.dspTime: 1563.216
    4. AudioSettings.dspTime: 1563.22666666667
    5. AudioSettings.dspTime: 1563.22666666667
    6. AudioSettings.dspTime: 1563.23733333333
    7. AudioSettings.dspTime: 1563.24266666667
    8. AudioSettings.dspTime: 1563.25333333333
    9. AudioSettings.dspTime: 1563.25866666667
    10. AudioSettings.dspTime: 1563.26933333333
    11. AudioSettings.dspTime: 1563.27466666667
    12. AudioSettings.dspTime: 1563.28
    13. AudioSettings.dspTime: 1563.28533333333
    14. AudioSettings.dspTime: 1563.296
    15. AudioSettings.dspTime: 1563.296
    16. AudioSettings.dspTime: 1563.30666666667
    17. AudioSettings.dspTime: 1563.312
    18. AudioSettings.dspTime: 1563.32266666667
    19. AudioSettings.dspTime: 1563.328
    20. AudioSettings.dspTime: 1563.33866666667
    21. AudioSettings.dspTime: 1563.34933333333
    22. AudioSettings.dspTime: 1563.35466666667
    23. AudioSettings.dspTime: 1563.35466666667
    24. AudioSettings.dspTime: 1563.36
    25. AudioSettings.dspTime: 1563.36533333333
    26. AudioSettings.dspTime: 1563.37066666667
    27. AudioSettings.dspTime: 1563.37066666667
    28. AudioSettings.dspTime: 1563.38666666667
    29. AudioSettings.dspTime: 1563.39733333333
    30. AudioSettings.dspTime: 1563.44533333333
    31. AudioSettings.dspTime: 1563.45066666667
    32. AudioSettings.dspTime: 1563.456
    33. AudioSettings.dspTime: 1563.456
    34. AudioSettings.dspTime: 1563.46133333333
    35. AudioSettings.dspTime: 1563.46133333333
    36. AudioSettings.dspTime: 1563.46666666667
    37. AudioSettings.dspTime: 1563.472
    38. AudioSettings.dspTime: 1563.47733333333
    39. AudioSettings.dspTime: 1563.488
    40. AudioSettings.dspTime: 1563.49333333333
    41. AudioSettings.dspTime: 1563.504
    42. AudioSettings.dspTime: 1563.504
    43. AudioSettings.dspTime: 1563.51466666667
    44. AudioSettings.dspTime: 1563.552
    45.  
     
  6. Tak

    Tak

    Joined:
    Mar 8, 2010
    Posts:
    1,001
    The behavior being described by most of the posters here,
    dspTime
    being the same across several gameplay frames, is expected and can be explained by Nifflas's answers on a similar thread.

    The OP's problem, where the time never updates, could be a bug, and could be caused by a number of things, including the audio mixer thread crashing.
     
  7. iljamodrau

    iljamodrau

    Joined:
    Aug 10, 2021
    Posts:
    8
    Thank you so much for clearing things up! :)
     
  8. marrobin

    marrobin

    Joined:
    Oct 1, 2020
    Posts:
    7
    Just as an update to this, I never ended up needing or finding a solution, since I went down the route of disabling Unity Audio entirely and switching to FMOD.
     
  9. iljamodrau

    iljamodrau

    Joined:
    Aug 10, 2021
    Posts:
    8
    Thank you for this great hint :)
     
  10. Tak

    Tak

    Joined:
    Mar 8, 2010
    Posts:
    1,001
    @majid6291 What's up with embedding a bunch of apk links into your message?
     
  11. r618

    r618

    Joined:
    Jan 19, 2009
    Posts:
    1,305
    my guess is it's unintentional and they have successfully installed latest malware on their android telephone
    should be flagged and removed and possibly let them know