Version 6.0.0
This release brings two new features to Dissonance.
Acoustic Echo Cancellation
After many months of experimentation it's finally here! Acoustic Echo Cancellation (AEC) watches the audio coming out of the speakers and then removes that audio when it is recorded by the microphone a few milliseconds later. This prevents unbearable feedback loops, hearing your own voice sent back to you and even suppresses game sound effects from being transmitted.
At the moment AEC is experimental. Quality on desktop computers has generally been excellent but it can vary with a large number of factors such as microphone quality, speaker quality, size of the room and even the amount of soft furnishing nearby! On mobile phones AEC is significantly less well tested because we only have access to a limited number of devices to test with and so it's crucial that we get feedback - if you use AEC please contact us and tell us what does and does not work.
Flexible Encoding Settings
In previous version of Dissonance all clients in a session used the same audio encoding settings. With flexible encoding settings this is no longer required - each client transmits it's settings when it joins the session allowing you to choose the best settings for each platform.
Breaking Changes!
There are two breaking changes in this version.
If you are implementing a completely custom network integration (using ICommsNetwork
) a new parameter has been added to two methods. Initialize
receives a CodecSettings
which indicates the codec settings being used locally. The PlayerJoined
event now emits a CodecSettings
which indicates the codec settings being used by the new remote player.
If you are bypassing Dissonance management of the voice playback AudioSource
by accessing VoicePlayerState.Playback.AudioSource
the return type of the Playback
property has changed from VoicePlayback
(which is tied specifically to Unity audio playback) to IVoicePlayback
which generalises playback. You can still access the Unity AudioSource
with: ((VoicePlayback)VoicePlayerState.Playback).AudioSource
.
Integrations
SALSA Lip Sync
Upgrade Available!
Playmaker
Upgrade Available!
Forge Remastered
Forge
Photon Unity Networking
UNet (HLAPI)
UNet (LLAPI)
Photon Bolt
Steamworks.NET P2P
New Features
- Experimental Acoustic Echo Cancellation (AEC). Automatically removes speaker sounds from the microphone input; preventing feedback loops, echoing voices and transmitting game sound effects.
- Each client may now use different encoding settings (quality, frame size, codec).
- Added timestamps to Dissonance log messages.
- Return
IVoicePlayback
fromVoicePlayerState:Playback
property. Removing a hard dependency on the Unity playback system.
Bug Fixes
- Fixed clients (particularly HLAPI) getting stuck in connect/disconnect loops, causing them to never send or receive any voice packets.
- Fixed string hashing using
GetHashCode
which is not stable between runtimes. Now using an FNV-1a hash for all string hashing. - Fixed
GetSpeakingChannels
returning all channels as if they were `Player` channels. - Fixed buffered network packets potentially "leaking" from one session to the next when the comms network is shut down and restarted.
- Fixed a potential
NullReferenceException
in HLAPI integration ifNetworkManager.singleton
returns null. - Fixed preprocessor thread waking up too frequently when there is no work to do. Significantly reducing CPU usage.
- Prevented the
Lost NN samples in the preprocessor (buffer full), injecting silence to compensate
message appearing every frame when there are lost samples.