# Manage in-meeting audio settings After the SDK is initialized and connected, use `setting::GetSettingToolkit()->GetSettingAudioToolkit()` for device selection or audio settings, `meeting::GetAudioToolkit(...)` for in-meeting mute controls, and `meeting::GetParticipantsToolkit(...)` for participant audio state. ```cpp auto* settingAudio = setting::GetSettingToolkit()->GetSettingAudioToolkit(); auto* meetingAudio = meeting::GetAudioToolkit(g_meetingInstance); auto* participants = meeting::GetParticipantsToolkit(g_meetingInstance); ``` ## Get a participant's audio state Use `ZMToolSuiteUser` to expose `audioType` (`ZMToolSuiteAudioType_None`, `ZMToolSuiteAudioType_Voip`, `ZMToolSuiteAudioType_Telephony`) and `bAudioMuted`. ```cpp auto* participants = meeting::GetParticipantsToolkit(g_meetingInstance); ZMToolSuiteUser me = participants->GetMySelf(); ZMToolSuiteAudioType myAudioType = me.audioType; bool myMuted = me.bAudioMuted; ZMToolSuiteUser other = participants->GetUserByUserID(12345); ZMToolSuiteAudioType otherAudioType = other.audioType; ``` ## Manage audio speaker List devices with `GetAudioDeviceList(false)`. `ZMToolSuiteDeviceInfo` includes `device_id`, `device_name`, and `isSelected`. Switch with `SelectAudioDevice(false, ...)`. ```cpp auto* audioSetting = setting::GetSettingToolkit()->GetSettingAudioToolkit(); IToolSuiteVector* speakers = audioSetting->GetAudioDeviceList(false); for (int i = 0; speakers && i < speakers->GetCount(); ++i) { ZMToolSuiteDeviceInfo d = speakers->GetItem(i); if (d.isSelected) { // current output device } } bool submitted = audioSetting->SelectAudioDevice( false, // speaker deviceId, // const zchar_t* deviceName, // const zchar_t* [](const BaseResult& result) { // handle result.error_code } ); ``` ## Manage audio microphone Managing audio microphone follows a similar pattern as managing the audio speaker. List devices with `getAudioDeviceList(true)`, inspect with `ZoomToolSuiteDeviceInfo`. Switch with `selectAudioDevice(_:deviceId:deviceName:completion:)`, with the first parameter `true` for microphone. ```cpp auto* audioSetting = setting::GetSettingToolkit()->GetSettingAudioToolkit(); IToolSuiteVector* mics = audioSetting->GetAudioDeviceList(true); bool submitted = audioSetting->SelectAudioDevice( true, // microphone deviceId, deviceName, [](const BaseResult& result) { // handle result.error_code } ); ``` ## Mute or unmute your microphone To mute the current user's microphone, useMuteMyAudio. To unmute on the current user's microphone, use UnmuteMyAudio. To toggle the current user's microphone mute or unmute status, use ToggleMyAudioStatus. ```cpp auto* meetingAudio = meeting::GetAudioToolkit(g_meetingInstance); meetingAudio->MuteMyAudio([](const BaseResult& result) { // handle result.error_code }); meetingAudio->UnMuteMyAudio([](const BaseResult& result) { // handle result.error_code }); meetingAudio->ToggleMyAudioStatus([](const BaseResult& result) { // handle result.error_code }); ``` ## Control whether participants may unmute themselves Hosts can control whether participants may unmute themselves. To check if participants can unmute themselves, use `IsParticipantsUnmuteSelfAllowed`. To let all participants mute or unmute themselves, use `AllowParticipantsToUnmuteSelf`. ```cpp auto* participants = meeting::GetParticipantsToolkit(g_meetingInstance); participants->IsParticipantsUnmuteSelfAllowed([](const BoolValueResult& result) { // result.bValue, result.error_code }); participants->AllowParticipantsToUnmuteSelf( true, [](const BaseResult& result) { // handle result.error_code } ); ``` ## Mute or unmute everyone To mute all current participants, use `MuteAllAudio`. To unmute all current participants, use `UnMuteAllAudio.` **NOTE** Only hosts or co-hosts can mute or unmute all participants. ```cpp auto* meetingAudio = meeting::GetAudioToolkit(g_meetingInstance); meetingAudio->MuteAllAudio([](const BaseResult& result) { // handle result.error_code }); meetingAudio->UnMuteAllAudio([](const BaseResult& result) { // handle result.error_code }); ``` ## Mute participants on entry To mute participants as they enter the meeting, use `EnableMuteOnEntryFeature`. To see if this feature is currently enabled, use `IsMuteOnEntryFeatureOn`. ```cpp auto* meetingAudio = meeting::GetAudioToolkit(g_meetingInstance); meetingAudio->EnableMuteOnEntryFeature( true, // muteOnEntry true, // allowUnmuteBySelf [](const BaseResult& result) { // handle result.error_code } ); meetingAudio->IsMuteOnEntryFeatureOn([](const BoolValueResult& result) { // result.bValue, result.error_code }); ```