Skip to content

Add live audio waveform animation#6285

Open
Chaus wants to merge 3 commits into
signalapp:mainfrom
Chaus:live-audio-waveform
Open

Add live audio waveform animation#6285
Chaus wants to merge 3 commits into
signalapp:mainfrom
Chaus:live-audio-waveform

Conversation

@Chaus

@Chaus Chaus commented May 31, 2026

Copy link
Copy Markdown

Problem Statement

When recording a voice message, the UI previously lacked visual feedback indicating the level of audio being captured. This made it difficult for users to confirm that their microphone was picking up their voice clearly and at the right volume before the message was actually sent. Common scenario: the bluetooth headset did not disconnect from the phone while the user left the headset in another room and is recording an audio using their phone only.

Solution

This PR introduces a brand new Live Audio Waveform that animates in real-time while a voice message is being recorded.

Key Features:

  1. Real-time Visualization: A dynamic, scrolling waveform that maps directly to the microphone's input power levels, providing immediate and responsive visual feedback to the user.
  2. Seamless Lock State Support: The waveform automatically expands and anchors itself between the Cancel button and the audio message time - taking only the space that has previously been empty and unused.
  3. Smooth Aesthetics: Uses hardware-accelerated CABasicAnimation for smooth 60fps scrolling, along with a CAGradientLayer mask on the leading edge so that older audio samples gracefully fade into transparency as they scroll out of view.

Contributor checklist

  • My commits are rebased on the latest main branch
  • My commits are in nice logical chunks
  • My contribution is fully baked and is ready to be merged as is
  • I have tested my contribution on these devices:
  • iPhone 12 Mini, iOS 17.4

@sashaweiss-signal

Copy link
Copy Markdown
Contributor

Thanks for your interest in contributing! Unfortunately, we don't generally accept external contributions of "features" like this because of the review and ongoing maintenance cost. This is a neat idea though, and I'll pass it along to our design team as we have improvements planned for Voice Notes overall! If we do decide to adopt this along with our other improvements, I'll reopen this PR.

Thanks again for your interest, and as always for being a Signal user.

@Chaus

Chaus commented Jun 1, 2026

Copy link
Copy Markdown
Author

Thank you for your response @sashaweiss-signal.

For the context, the situation when you record a 3-minute voice message - only to realize your headset was still connected inside your bag, and Signal was picking up the mic from in there the whole time - happens to me, my girlfriend and virtually all my friends every other day. It's quite frustrating so we all would really love to have this kind of feature.

And the space between the recording timer and the Cancel button is currently empty and unused, so it seemed like a very intuitive place for the live waveform. If there is anything I can do for this feature to be adopted, please let me know!

Best wishes to you and the team, thank you for everything you've done for Signal - I love it.

image

@sashaweiss-signal

Copy link
Copy Markdown
Contributor

Makes sense – there are definitely voice message papercuts we need to address. Can you provide some demo videos of how this looks, which I can pass along and will help us prioritize?

@Chaus

Chaus commented Jun 1, 2026

Copy link
Copy Markdown
Author

@sashaweiss-signal sure, here are the demos for two use cases:

  1. Pull-up the mic button
Waveform-demo-pull-up.mov
  1. Press-and-hold the mic button
Waveform-demo-press-n-hold.mov

@sashaweiss-signal

Copy link
Copy Markdown
Contributor

Thanks @Chaus, I'll make sure this gets looked at!

@sashaweiss-signal

Copy link
Copy Markdown
Contributor

We recently added something like this to Desktop, so I'm going to reopen the PR and mark it as Acknowledged for now, and I've linked it to our internal tracking system. I can't guarantee when we'll take this up, but we'll circle back here when we do!

@Chaus

Chaus commented Jun 4, 2026

Copy link
Copy Markdown
Author

Thank you @sashaweiss-signal!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants