News

Introducing Dissonance For Photon Fusion

July 25, 2023

Photon Unity Networking has long held its reputation as one of Unity's most renowned networking frameworks, powering countless successful multiplayer experiences. Since its release in 2017 the Dissonance For PUN2 package has consistently been one of the most popular network backends for Dissonance Voice Chat.

Today, we are excited to announce that Dissonance now has support for the new network framework: Photon Fusion, available for free from the Unity Asset Store.

Want to get started? Check out the Photon Fusion quick start tutorial to learn more about using Dissonance and Photon Fusion in your project.

Development of this new package was sponsored by Jim Kincaid. Check out his game Nights of Yore On Instragram. Thanks Jim!

Dissonance 8.3.0 Release

September 22, 2022

This release brings an entirely new way to do proximity voice chat to Dissonance. The previous system offers very precise control (proximity is activated exactly when the player hits a collider, which you can dynamically change the shape and size of) it can be difficult to properly setup collider triggers on every player. The new proximity system takes a more "approximate" approach and uses spatial hashing to place players into a room with other players who are nearby. This removes the requirement to attach a collider to every player and is much simpler to setup. This new system also scales better than the old one - previously each new person who could hear your voice would require an extra 4 bytes to encode into outgoing packets - whereas the new system uses 32 bytes no matter how many listeners there are. Get started using the new system.

As of 16-Jun-2022 Unity 2019.4 LTS has reached the end of it's support lifetime. This minimum supported version for Dissonance is now Unity 2020.3 LTS.

See the full release notes for this version here.

Dissonance 8.0.1 Release

June 7, 2021

This release adds a major new feature, RNNoise. RNNoise is a noise suppression system, developed by Jean-Marc Valin, which uses machine learning to learn separate useful signal (human speech) from noise (e.g. barking dogs). RNNoise splits the audio up into 22 frequency bands, decides how noisy each band is, and then attenuates the band based on this. This process repeats again every 10 milliseconds, adjusting the volume of each frequency band to minimise noise. To find out more technical details of the algorithm see here. It is inevitable that RNNoise will distort speech while reducing background sounds. However in a noisy environment this can still be an overall improvement in the quality of voice communication.

RNNoise is disabled by default and can be enabled from the Dissonance settings menu (Window > Dissonance > Quality Settings).

If you find an issue in Dissonance or want to request a new feature please report it on our issue tracker or on Discord.

See the full release notes for this version here.

Unity 2018.4 End Of Support

June 1, 2021

Unity 2019.4 is now the legacy LTS version, this means the Unity 2018.4 is no longer supported by Unity. In accordance with our version support plan this means that 8.0.0 is the last version of Dissonance which will be released for Unity 2018.4.

Dissonance 8.0.0 supports:

  • 2018.4 (legacy LTS)
  • 2019.4
  • 2020.4 (latest LTS)
  • 2021.1 (TECH)
  • 2021.2 (Alpha Prerelease)

Dissonance 8.1.0 (coming soon) will support:

  • 2019.4 (legacy LTS)
  • 2020.4 (latest LTS)
  • 2021.1 (TECH)
  • 2021.2 (Alpha Prerelease)

Unity 2017.4 End Of Support

April 29, 2020

At GDC 2018 Unity introduced a new plan for two release streams; TECH and LTS. In a recent blog post they announced the end-of-life of Unity 2017.4 LTS in accordance with this plan. Unity 2018.4 is now the oldest supported LTS version.

With the release of Dissonance 7.0.1 we have ended support for Unity 2017.4. Dissonance 6.4.6 was the last version of Dissonance released with support for Unity 2017.4 - we will no longer provide support for using Dissonance on Unity 2017.4 with Dissonance 7.0.0 and onwards.

As of 2020-04-29 this means the supported Unity editor versions for Dissonance are:

  • Unity 2018.4 (latest LTS)
  • Unity 2019.1
  • Unity 2019.2
  • Unity 2019.3 (latest TECH)

The vast majority of bugs reported for Dissonance are due to various changes/regressions/bugs made in the TECH releases. For the most stable experience using the latest LTS version of Unity is highly recommended!

Dissonance Unity Version Support

January 22, 2019

At GDC 2018 Unity introduced a new plan for two release streams; The TECH stream and the Long Term Support (LTS) Stream. The TECH stream consists of three cutting edge releases a year, the LTS stream consists of the final TECH version each year with extra bugfixes. LTS versions are supported for two years after their initial release. Support for TECH versions is much shorter - only the latest TECH version is supported. Unity also offer preview versions which are not included in either of these streams (e.g. 2019.1 Alpha).

Dissonance was originally developed using Unity 5.6 when that was the cutting edge of Unity development and since then we've supported every single version of the Unity editor released after Unity 5.6. With the release of Dissonance 6.3.0 we have decided to change our support policy to be closer to what Unity themselves support. We will support all LTS versions supported by Unity and all TECH versions after the latest LTS. We will not support preview versions until they are promoted into the TECH stream.

Right now that means we support:

  • Unity 2017.4 (latest LTS)
  • Unity 2018.1
  • Unity 2018.2
  • Unity 2018.3 (latest TECH)

Consequently this means that Dissonance 6.3.0 is the final release to be submitted to the asset store for:

  • Unity 5.6
  • Unity 2017.1
  • Unity 2017.2
  • Unity 2017.3

Dissonance 6.2.5 Release

September 26, 2018

This release brings a brand new network integration to Dissonance - using the fantastic WebRTC Network Dissonance can now run completely peer to peer sessions. All that's needed is a central "signalling server" (which uses very small amounts of bandwidth) to setup the session. Check out the WebRTC Network FAQ for more information or read the quickstart guide to get started with Dissonance.

See the full release notes for this version here.

Network Stability After Dissonance 6.1.0

April 7, 2018

Dissonance follows a standard called semver for versioning. This defines exactly what the three numbers in the version mean:

Version `MAJOR.MINOR.PATCH`
- Increment MAJOR version when you make incompatible API changes.
- Increment MINOR version when you add functionality in a backwards-compatible manner.
- Increment PATCH version when you make backwards-compatible bug fixes.

A MAJOR change means that a change to Dissonance might break your code which interfaces with Dissonance. Naturally we try to keep such changes to a minimum. When they do happen we make sure to draw attention to it in the release notes and explain how best to handle it.

With 6.1.0 we included what we considered a very minor bugfix:

Always using network order (Big endian) for network packet headers

One number in the network protocol used "little endian" encoding instead of the more standard "big endian" encoding used on networks. We didn't consider this a MAJOR or even a MINOR change because the network protocol is an implementation detail; your code never reads or writes packets so therefore a change to the protocol can't possibly break your code.

However, after talking to users about the consequences of this tiny change we've realised that this wasn't the correct way to think about it. Although a change to the network protocol does not break any code it can lead to a very difficult deployment which forces end users of your application to either upgrade or be unable to communicate.

We have decided that in the future we will include changes to the network protocol in the version number - i.e. an incompatible change to the network will result in the MAJOR version number increasing. Furthermore since an incompatible change to the network protocol is very difficult for you to deploy to your users we consider a network protocol change to be one of the worst kind of changes we can make.

From this point forwards we don't anticipate ever needing to make an incompatible change to the protocol. Upgrading to a new version of Dissonance should always be completely painless - even when you release the application to end users there will be no problems with any mix of old clients/servers in a session with new clients/servers.

Update Regarding Dissonance 6.2.3

With Dissonance 6.2.3 we made a large improvement to the protocol:

Improved network handshake protocol to support an unlimited number of players in a Dissonance session (previously limited to approximately 20).

This was the first new feature added at the network level since making the network protocol guarantee. We implemented it with both backwards and forwards compatibility in mind. This means that it doesn't matter if clients or server have upgraded or not, both will handle the change. In fact as long as the server has upgraded you will be able to host more than 20 clients even if none of the clients have upgraded yet!

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 6.0.0 Release

January 16, 2018

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.

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!