Dissonance After A Year

January 26, 2018

One year ago today Dissonance released onto the asset store after six months of development. Since then we have released 29 new versions with lots of exciting new features (and a lot of bugfixes too!). As this is published the 30th update, Dissonance 6.0.2, has just been submitted to the asset store and will be available shortly.

This release includes several small fixes to the acoustic echo cancellation which was introduced in Dissonance 6.0.0.

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.

See the full release notes for this version here.

Dissonance 5.0.0 Release

December 11, 2017

This release brings two new features to Dissonance.

Steamworks P2P

We've release a brand new integration for Dissonance to run over Steamworks networking, sending voice data directly from peer to peer. If your game runs on steam, even if it uses a different network system for game data, this could potentially save you a lot of bandwidth usage fees! Check out the documentation for details on how to setup this integration.

Remote Channel API

If a remote client is speaking to you this new API gives you a list of which channels the client is speaking to you through. Call VoicePlayerState:GetSpeakingChannels to get a snapshot of the channels you are hearing them through. Check out the documentation for more details.

See the full release notes for this version here.

Dissonance 4.0.0 Release

November 13, 2017

This release brings two new features to Dissonance.

Custom Microphone Capture Scripts

With custom microphone capture scripts it's possible to write a new script which captures audio data and feeds it in to Dissonance. This allows platform specific microphone implementations which can access special features such as super low latency audio capture, special effects or acoustic echo cancellation. To write one of these scripts create a new MonoBehaviour which implements the IMicrophoneCapture interface and attach it to the same gameObject as the DissonanceComms component.

Remote Rooms API

We've added some new properties which expose which rooms remote players are listening to. There are several ways to acccess this data:

  • Access the VoicePlayerState:Rooms property for a list of which rooms that specific player is listening to
  • Subscribe to the VoicePlayerState:OnEnteredRooms and VoicePlayerState:OnExitedRoom events to receive an event when that specific player starts or stops listening to a room
  • Subscribe to the DissonanceComms:OnEnteredRooms and DissonanceComms:OnExitedRoom events to receive an event when any player starts or stops listening to a room

These changes involve two very small breaking changes to custom network scripts using the ICommsNetwork interface. The events Action<RoomEvent> PlayerEnteredRoom and Action<RoomEvent> PlayerExitedRoom have been added to the interface, these events should fire when a player starts and stops listening to a room. If your custom network layer does not support rooms simply never raise the events.

See the full release notes for this version here.

Dissonance 3.0.0 Release

August 18, 2017

This release is biggest one yet with four big new changes to Dissonance!

Universal Windows Platform

First up is support for the Universal Windows Platform (also known as WSA). Now you can use Dissonance in apps targetting cool new platforms like the Windows mixed reality headsets and the Microsoft Hololens.

Note: Due to a mistake made during the release process you must delete the Assets/Plugins/Dissonance/Plugins/ARM directory before building for UWP

Forge Networking Remastered

A lot of people have been asking for this and it's finally here; we now have an integration available for the new Forge Networking Remastered asset. Big thanks to the Forge developers and everyone in the Forge Discord chat who have helped to make this happen. Download the package below and read the tutorial to get started.

Channel Volume And Soft Fading

Thirdly we've added support for changing the volume of each individual channel you are broadcasting on - giving you more control over how others hear you. We've used this to add faders to the VoiceBroadcastTrigger component - by default all voice will now fade out over 0.15 seconds instead of cutting off instantly. You can configure this and some other fader settings in the revamped inspector for the component. See more about channel volumes and the trigger fader settings here.

Peer-to-Peer Voice Routing

Finally, the largest change of all is the internal changes to how Dissonance networking works - it's now possible for voice packets to be sent directly from peer to peer when the undlerying network system supports it! This can significantly reduce latency and bandwidth usage. These changes involve one very small breaking change to custom network integrations which use the BaseClient, BaseServer and BaseCommsNetworkclasses, the TPeer generic parameter must be a struct. Besides this the change is completely backwards compatible and will continue working with your custom networking - see the documentation for custom network implementations for more details on how to enhance your integration to enable p2p routing.

See the full release notes for this version here.

Dissonance 1.0.7 With SALSA Lip Sync

April 5, 2017

Dissonance has been out for nearly three months and in that time we've been working hard to release new versions with a variety of features and bugfixes. We've added support for MacOS and iOS, better latency compensation, support for dedicated servers and a variety of live inspectors. Check out all of the versions we've released in that time.

With Dissonance 1.0.7 we're releasing the coolest new feature yet. We've been collaborating with Crazy Minnow Studio to integrate Dissonance and SALSA to achieve real time lip synchronisation with live voice chat!

The new integration is freely available to anyone who owns both Dissonance and SALSA. To use it you'll need to make sure you have SALSA v1.5.0+ and Dissonance v1.0.6+. Visit the SALSA website to download the integration and for documentation on how to use the integration.

Please note that Dissonance 1.0.7 has been submitted to the store and is awaiting approval before being available for download. However the SALSA integration is perfectly compatible with Dissonance 1.0.6 which is available on the asset store right now.

Dissonance Is Released

January 19, 2017

Dissonance is a voice communications asset which makes it easy to add high quality, low latency voice communications to your multiplayer game. It's flexible enough to create complex setups with multiple chat channels, positional audio playback and collider based chat rooms with no scripting required. Conversely it has a simple but powerful API available to scripts which gives you complete control over the system.

We're incredibly excited to announce that Dissonance is finally available for sale on the Unity Asset Store for an initial price of $45 per seat. This price includes built in support for UNet, HLAPI and Photon as well as free access to patches to add more networking systems in the future (and of course you can write your own).

This is just the start. We have several upgrades already in development and planned for release in the coming months (including Mac and iOS Support). Feel free to contact us if you'd like to know more, help out with testing or request a feature

Dissonance Is In Development

September 8, 2016

Dissonance is a voice communications asset for the Unity game engine. Dissonance makes it easy to get high quality, low latency voice communication into your game no matter what network system you're using.

Work on Dissonance began back in July. We noticed that despite integrated voice communication being an essential part of a modern multiplayer game there were only *two* assets on the unity store for voice chat! Voice communication can be a hard problem to tackle, and in that short time we've built:

  • Realtime audio decoding pipeline
  • Multithreaded mic capture and encoding
  • Custom voice activation detection filter
  • Low level networking system with integrations for four other popular unity networking systems
  • A powerful and flexible chat room system with support for trigger volumes
  • Documentation, documentation, documentation!

We're not finished by a long way! But I'm excited to say that we are approaching a point where we can release the first version of Dissonance. Within the next few weeks we'll be looking for testers who would be willing to try adding Dissonance to their multiplayer game and giving us detailed feedback on what worked and what didn't. If that sounds like you, contact us!