mirror of
https://github.com/vector-im/element-call.git
synced 2026-09-22 22:29:30 +00:00
Show a live microphone level in the audio menu
- Draw the input level beneath the microphone list as 32 discrete segments, so the level reads by count and not by hue alone. - Expose it through role="meter" with aria-valuenow and aria-valuetext, so a screen reader announces it. - Give denied permission and no input device their own message and next action, rather than a flat meter that reads as silence. - Read the level only while the menu is open, so nothing holds a second capture of the microphone for the length of a call. - Read the device the picker has selected, so the meter re-points as soon as the selection changes. - Ignore anything below a noise floor: a quiet room is never digitally silent, and its hiss otherwise lights the first segments permanently, which reads as "it can hear me" when nobody is speaking. - Quantise loudness with a square root above that floor: amplitude puts ordinary speech near the bottom of the range, where a linear meter barely moves. - Withhold the output select callback where the platform cannot route audio to a chosen device, which is what renders the speaker section disabled. Safari and most Firefox builds land here. - Track the in-flight device by kind as well as id: Chrome names both an input and an output "default", so the spinner appeared on the wrong row. - Disable every device in the menu while a selection is settling, so a second request cannot overtake the first. The meter opens its own short-lived capture rather than tapping the call's audio track. That is what lets it follow the picker instantly, and it avoids the pre-join track, which is deliberately frozen to the device selected when the screen mounted. The cost is a second capture of the same device while the menu is open. See the spec's notes sidecar. Spec: FEATURES_SPEC/2026-09_Quick_Audio_Menu.md — AC1, AC6, AC7, AC13, AC14, AC15, AC17, AC18, AC21, AC22
This commit is contained in:
@@ -163,6 +163,12 @@
|
||||
"login_auth_links_prompt": "Not registered yet?",
|
||||
"login_subheading": "To continue to Element",
|
||||
"login_title": "Login",
|
||||
"microphone_level": {
|
||||
"label": "Microphone level",
|
||||
"no_device": "No microphone found. Connect one, then try again.",
|
||||
"permission_denied": "Element Call cannot use your microphone. Allow access in your browser settings.",
|
||||
"value": "{{level}} of {{max}}"
|
||||
},
|
||||
"microphone_off": "Microphone off",
|
||||
"microphone_on": "Microphone on",
|
||||
"mute_microphone_button_label": "Mute microphone",
|
||||
|
||||
Reference in New Issue
Block a user