ermau / gablarski Goto Github PK
View Code? Open in Web Editor NEWGroup VoIP Library and clients
Group VoIP Library and clients
If you connect to a server with vox and then open the settings screen, the voice level indicator will not work and upon cancelling vox will no longer work.
System.ArgumentNullException: Value cannot be null.
at System.Threading.Monitor.ReliableEnter(Object obj, Boolean& lockTaken)
at System.Threading.Monitor.Enter(Object obj, Boolean& lockTaken)
at Gablarski.SpeechNotifier.SpeechRecognizer.StopRecognizing() in c:\TeamCity\buildAgent\work\59ee6bca9e9dce47\src\Gablarski.SpeechNotifier\SpeechRecognizer.cs:line 97
at Gablarski.Clients.Windows.MainForm.DisableInput() in c:\TeamCity\buildAgent\work\59ee6bca9e9dce47\src\Clients\WinForms\MainForm.cs:line 479
at Gablarski.Clients.Windows.MainForm.MainForm_FormClosing(Object sender, FormClosingEventArgs e) in c:\TeamCity\buildAgent\work\59ee6bca9e9dce47\src\Clients\WinForms\MainForm.cs:line 1061
at System.Windows.Forms.Form.OnFormClosing(FormClosingEventArgs e)
at System.Windows.Forms.Form.WmClose(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Installed using nightly installer on a computer that never had GB before.
There was a single binding, Talk, not bound to anything, with no link to "Set Binding"
To work around, the binding was removed and a new binding was added.
Running Windows 7x64
This is a race condition between the audio loop and the main client shutting down. If you are talking while being disconnected, your CurrentUser
user ID will become 0, which will not match with the audio source you are trying to send from, resulting in the exception.
[ArgumentException: Can not send audio from a source you don't own Parameter name: source]
Gablarski.Client.ClientSourceHandler.SendAudioDataAsync(AudioSource source, TargetType targetType, Int32[] targetIds, Byte[][] data) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Client\ClientSourceHandler.cs:130
Gablarski.Audio.AudioEngine.OnSamplesAvailable(Object sender, SamplesAvailableEventArgs e) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Audio\AudioEngine.cs:587
Gablarski.OpenAL.Providers.OpenALCaptureProvider.OnSamplesAvailable(Int32 samplesAvailable) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski.OpenAL\Providers\OpenALCaptureProvider.cs:115
Gablarski.OpenAL.Providers.OpenALCaptureProvider.Tick() in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski.OpenAL\Providers\OpenALCaptureProvider.cs:208
Gablarski.OpenAL.Providers.OpenALRunner.UpdateCapture() in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski.OpenAL\Providers\OpenALRunner.cs:169
Gablarski.OpenAL.Providers.OpenALRunner.Runner() in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski.OpenAL\Providers\OpenALRunner.cs:142
System.Threading.ThreadHelper.ThreadStart_Context(Object state):20
System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx):112
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx):0
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state):43
System.Threading.ThreadHelper.ThreadStart():8
Pretty sure I fixed this and never updated the dedicated server, need to verify though.
Need to add the user volume adjustment back to the UI
Support the OpenAL Soft extension ALC_EXT_Disconnect for checking whether devices are still connected or not
Need to display connect/join failures
Now that the modules are loaded async, the settings screen needs a spinner until the current page finishes.
Should probably implement a Behavior
for this so we can just attach it to any element and a BusyViewModel
Straight up replace CELT with Opus.
[ArgumentException: An item with the same key has already been added.]
System.ThrowHelper.ThrowArgumentException(ExceptionResource resource):16
System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add):0
System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value):0
Gablarski.OpenAL.SourceBuffer.Generate(Int32 count) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski.OpenAL\SourceBuffer.cs:166
Gablarski.OpenAL.Providers.OpenALPlaybackProvider.PushBuffers(Stack`1 bufferStack, Int32 number) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski.OpenAL\Providers\OpenALPlaybackProvider.cs:297
Gablarski.OpenAL.Providers.OpenALPlaybackProvider.RequireBuffers(Stack`1 bufferStack, Source source, Int32 num) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski.OpenAL\Providers\OpenALPlaybackProvider.cs:292
Gablarski.OpenAL.Providers.OpenALPlaybackProvider.QueuePlayback(AudioSource audioSource, Byte[] data) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski.OpenAL\Providers\OpenALPlaybackProvider.cs:151
Gablarski.Audio.AudioEngine.OnReceivedAudio(Object sender, ReceivedAudioEventArgs e) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Audio\AudioEngine.cs:614
System.EventHandler`1.Invoke(Object sender, TEventArgs e):-1
Gablarski.Client.ClientSourceHandler.OnReceivedAudio(ReceivedAudioEventArgs e) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Client\ClientSourceHandler.cs:342
Gablarski.Client.ClientSourceHandler.OnServerAudioDataMessage(MessageEventArgs`1 e) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Client\ClientSourceHandler.cs:309
Tempest.ContextExtensions+<>c__DisplayClass1`1.<RegisterMessageHandler>b__0(MessageEventArgs e) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Tempest.Social\Tempest\Desktop\Tempest\IContext.cs:107
Tempest.TempestClient.MessageRunner() in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Tempest.Social\Tempest\Desktop\Tempest\TempestClient.cs:202
System.Threading.ThreadHelper.ThreadStart_Context(Object state):20
System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx):112
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx):0
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state):43
System.Threading.ThreadHelper.ThreadStart():8
The ability to adjust volume for specific people via voice commands.
A gain setting for current user's input device.
Windows 7 machine reporting supported formats for the TTS conflicting with the new setting boundaries for Opus. Need to split Opus from AudioSource.
[ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: value]
Gablarski.Audio.AudioCodecArgs.set_FrameSize(Int16 value) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Audio\AudioCodecArgs.cs:134
Gablarski.Audio.AudioCodecArgs..ctor(AudioFormat format, Int32 bitrate, Int16 frameSize, Byte complexity) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Audio\AudioCodecArgs.cs:75
Gablarski.Audio.AudioSource..ctor(String name, Int32 sourceId, Int32 ownerId, AudioFormat format, Int32 bitrate, Int16 frameSize, Byte complexity, Boolean isMuted) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Audio\AudioSource.cs:66
Gablarski.Audio.AudioSource..ctor(String name, Int32 sourceId, Int32 ownerId, AudioFormat format, Int32 bitrate, Int16 frameSize, Byte complexity) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Audio\AudioSource.cs:61
Gablarski.Client.ClientSourceHandler.CreateFake(String name, AudioFormat format, Int16 frameSize) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Client\ClientSourceHandler.cs:196
Gablarski.Clients.Windows.MainForm.SetupNotifications() in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Clients\Windows\MainForm.cs:169
Gablarski.Clients.Windows.MainForm.SetupPlayback() in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Clients\Windows\MainForm.cs:315
Gablarski.Clients.Windows.MainForm.SourcesOnReceivedSourceList(Object sender, ReceivedListEventArgs`1 args) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Clients\Windows\MainForm.cs:185
Gablarski.Client.ClientSourceHandler.OnReceivedSourceList(ReceivedListEventArgs`1 e) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Client\ClientSourceHandler.cs:356
Gablarski.Client.ClientSourceHandler.OnSourceListReceivedMessage(MessageEventArgs`1 e) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Gablarski\Client\ClientSourceHandler.cs:259
Tempest.ContextExtensions+<>c__DisplayClass1`1.<RegisterMessageHandler>b__0(MessageEventArgs e) in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Tempest.Social\Tempest\Desktop\Tempest\IContext.cs:107
Tempest.TempestClient.MessageRunner() in c:\TeamCity\buildAgent\work\5fb2337afe0d8eb5\src\Tempest.Social\Tempest\Desktop\Tempest\TempestClient.cs:202
System.Threading.ThreadHelper.ThreadStart_Context(Object state):20
System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx):112
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx):0
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state):43
System.Threading.ThreadHelper.ThreadStart():8
When changing settings, audio notifications begin to multiply.
Add a default audio device that tracks the current default audio device, at least at start up (since OpenAL doesn't provide notifications).
On Windows 8.1, it seems that the voices do not report any supported formats, so Gablarski disables support for it.
The voices are still capable of working with a made up format, but sound terrible when speaking to a stream. Just calling the normal speak commands sounds OK.
A query (respecting PermissionName.ApproveRegistrations
) that requests from the user provider pending registrations and returns them to the client.
Need a input manager to handle:
There are a few incorrect usages of fixed() that cause the occasional crash, need to clean these up. (OpenAL and CELT).
When the ConnectAsync() task completes, GablarskiClient.ServerInfo should be guaranteed to be valid, currently it's not. The task shouldn't complete until we're "formally connected".
Error initializing speech recognition: System.InvalidOperationException: Already open
at Gablarski.SpeechNotifier.SpeechRecognizer.Open() in c:\TeamCity\buildAgent\work\59ee6bca9e9dce47\src\Gablarski.SpeechNotifier\SpeechRecognizer.cs:line 70
at Gablarski.Clients.Windows.MainForm.SetupInput() in c:\TeamCity\buildAgent\work\59ee6bca9e9dce47\src\Clients\WinForms\MainForm.cs:line 501
Need to abstract the settings system so settings can be requested from view models and still be testable.
Use TTS and Speech recognition to drive a voice setup wizard:
Need to hook the notification system back up
If you have no capture devices enabled, the SpeechRecognizer ctor will crash, bringing down MEF and the whole client
Rewrite the client in WPF, setup things properly for the long run.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.