EQAditu / AdvancedCombatTracker

Advanced Combat Tracker
https://advancedcombattracker.com
116 stars 25 forks source link

Custom Timer Start Sound tts not working #62

Closed kaladzz closed 1 year ago

kaladzz commented 1 year ago

Custom Timer Start Sound custom tts for timers seems to not be functioning in the latest version. Warning TTS works but not the Custom Timer Start Sound. System beep works normally for Custom Timer Start Sound though.

This only affects 'WMP API Sound'. Switching to Windows API Sound makes it work correctly.

EQAditu commented 1 year ago

What about the UI thread checkbox option?

Also, what version of Windows do you have exactly?

Please post your Advanced Combat Tracker.log file or send it through the Feedback system in the About tab.

kaladzz commented 1 year ago

UI thread checkbox unchecked doesn't work. Checking it makes it work correctly.

Only happens for natural timers not trigger started timers.

Windows 10.0.19045

I see the following in the logfile

***** 2023-02-06T00:05:58 - 
System.ArgumentException: The path is not of a legal form.
   at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.GetFullPathInternal(String path)
   at System.Net.WebClient.GetUri(String path)
   at System.Net.WebClient.OpenRead(String address)
   at Advanced_Combat_Tracker.FormActMain.SubUpdateEntries()
   at Advanced_Combat_Tracker.FormActMain.WriteExceptionLog(Exception ex, String MoreInfo)
   at Advanced_Combat_Tracker.FormActMain.SubUpdateEntries()
   at Advanced_Combat_Tracker.FormActMain.SubDoAutoImports()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
*****
***** 2023-02-06T00:05:58 - Exiting InitACT: 1998.00
***** 2023-02-06T00:05:58 - 3.6.2.279
***** 2023-02-06T00:09:43 - WMP WAV: C:\Users\REDACTED\AppData\Local\Temp\AdvancedCombatTracker\4de4c643-sapi.wav 64%
System.Runtime.InteropServices.COMException (0x8001010A): The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))
   at WMPLib.IWMPSettings.set_volume(Int32 plVolume)
   at Advanced_Combat_Tracker.FormActMain.WMPWrapper..ctor(String WavPath, Int32 VolumePercent)
   at Advanced_Combat_Tracker.FormActMain.<>c__DisplayClass52_0.<PlaySoundWmpApi>b__0()
   at Advanced_Combat_Tracker.FormActMain.WriteExceptionLog(Exception ex, String MoreInfo)
   at Advanced_Combat_Tracker.FormActMain.<>c__DisplayClass52_0.<PlaySoundWmpApi>b__0()
   at Advanced_Combat_Tracker.FormActMain.PlaySoundWmpApi(String WavFilePath, Int32 VolumePercent)
   at Advanced_Combat_Tracker.FormActMain.PlaySound(String pszSound)
   at Advanced_Combat_Tracker.FormActMain.PlayTtsWavIntermediary(String SpeechText)
   at Advanced_Combat_Tracker.FormActMain.TTS(String SpeechText)
   at Advanced_Combat_Tracker.FormActMain.ParseCustomSingle(CustomTriggerQueueItem LogEntry, Int32 ctIndex)
   at Advanced_Combat_Tracker.FormActMain.ThreadCustomTriggerDeQueue()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
*****
EQAditu commented 1 year ago

This is mostly something that needs different configurations per system(workarounds). I've already made the UI checkbox the new default since it works better for some people, but it also allows for a possible deadlock in ACT for an edge-case. So the setting needs to be available to be toggled, but the default being changed is enough.

I don't have a system that can reproduce any of these similar WMP issues, so telling people to use a specific (default) setting will have to be enough.