# Push-to-talk

> Implement push-to-talk voice transmission mode.

Many games feature push-to-talk (PTT) functionality that allows users to control when they have a live microphone. For most users, it's sufficient to globally mute and unmute the microphone by using `vx_req_connector_mute_local_mic`. However, there are two notable situations where it's recommended that you use transmission for muting purposes.

## More than one audio source

If a user has more than one audio source, for example, when they're both speaking into a microphone and injecting audio, then muting only the microphone doesn't stop the injected audio (if someone else mutes the user, then all of their audio is muted).

To ensure that PTT functionality can enable or disable muting for both microphone audio and injected audio, set transmission between None and Single/All.

## User in multiple audio channels

If a user is in two audio channels (for example, 2D team chat and 3D area chat), and you want separate PTT keys for each channel so a user can speak into one or both channels at a time when PTT is turned on, and into no channels when PTT is turned off, then use one of the three versions of `vx_req_sessiongroup_set_tx_*` to set the mode.

* [`vx_req_sessiongroup_set_tx_all_sessions`](../../reference-manual/core/structvx__req__sessiongroup__set__tx__all__sessions)
* [`vx_req_sessiongroup_set_tx_session`](../../reference-manual/core/structvx__req__sessiongroup__set__tx__session).
* [`vx_req_sessiongroup_set_tx_no_session`](../../reference-manual/core/structvx__req__sessiongroup__set__tx__no__session).

If you want a single PTT key to activate or deactivate muting for all channels at a time rather than individually, then switching transmission between All/None has no real advantage over muting the microphone, except for when injecting audio.

## Additional resources

* [Muting](../muting/_index)
