In light of today’s rumor that a Pro Mode may be coming that seems to offer benefits in the opposite direction,1 I wanted to re-make the case for a Low Power Mode on macOS — and explain why now is the time.
Modern hardware constantly pushes thermal and power limits, trying to strike a balance that minimizes noise and heat while maximizing performance and battery life.
Software also plays a role, trying to keep everything background-updated, content-indexed, and photo-analyzed so it’s ready for us when we want it, but not so aggressively that we notice any cost to performance or battery life.
Apple’s customers don’t usually have control over these balances, and they’re usually fixed at design time with little opportunity to adapt to changing circumstances or customer priorities.
The sole exception, Low Power Mode on iOS, seems to be a huge hit: by offering a single toggle that chooses a different balance, people are able to greatly extend their battery life when they know they’ll need it.2
Mac laptops need Low Power Mode, too. I believe so strongly in its potential because I’ve been using it on my laptops (in a way) for years, and it’s fantastic.
I’ve been disabling Intel Turbo Boost on my laptops with Turbo Boost Switcher Pro most of the time since 2015.
In 2018, I first argued for Low Power Mode on macOS with a list of possible tweaks, concluding that disabling Turbo Boost was still the best bang-for-the-buck tweak to improve battery life without a noticeable performance cost in most tasks.3
Recently, as Intel has crammed more cores and higher clocks into smaller form factors and pushed thermal limits to new extremes, the gains have become even more significant. Here’s some thermal testing from my 8-core 16-inch MacBook Pro:
16-inch MacBook Pro (Late 2019, 2.4 GHz 8-core i9)
|
Power |
Temp. |
Geekbench 5 single/multi |
xcodebuild |
Normal |
82W |
90°C |
1260/7386 |
39 sec. |
No Turbo |
31W −62% |
65°C |
669/5206 −46/29% |
62 sec. +59% |
With Turbo Boost disabled, peak CPU power consumption drops by 62%, with a correspondingly huge reduction in temperature. This has two massive benefits:
- The fans never audibly spin up. When Turbo Boost is enabled, the fans annoyingly spin up every time the system is under a heavy sustained load. Disable it, and it’s almost impossible to get them to be audible.
- It runs significantly cooler. Turbo Boost lets laptops get too hot to comfortably hold in your lap, and so much heat radiates out that it can make hands sweaty. Disable it, and the laptop only gets moderately warm, not hot, and hands stay comfortably dry.
I haven’t done formal battery testing on the 16-inch, since it’s so difficult and time-consuming to do in a controlled way that’s actually useful to people, but anecdotally, I’m seeing similar battery gains by disabling Turbo Boost that I’ve seen with previous laptops: significantly longer battery life that I’d estimate to be between 30–50%.
This comes at a cost to performance, but:
- It’s not noticeable on most workloads.
- Parallel workloads are affected far less than single-threaded tasks, and most modern heavy workloads are parallelized.
This is an 8-core laptop that’s competitive with my iMac Pro! It’s much faster than most people need (myself included) most of the time, so I can spare some performance to get other benefits.
A fast laptop isn’t very useful if your hands are too sweaty to type, the battery dies in the middle of a flight, or the loud fans ruin your audio recording.
- When I really want to maximize performance, Turbo Boost Switcher Pro lets me quickly toggle it in the menu bar, so switching between modes is easy.
The vast majority of the time I’m using it, the 16-inch MacBook Pro is a much better laptop with Turbo Boost disabled.
It’s still fast enough to do everything I need (including significant development with Xcode), while remaining silent and cool, with incredible battery life.
But soon, I bet I won’t be able to do this anymore.
Turbo Boost Switcher Pro relies on a kernel extension that’s grandfathered into Apple’s latest security requirements, but it can never be updated — and when macOS Catalina loads it for the first time, it warns that it’ll be “incompatible with a future version of macOS.” I suspect that this is the last year I’ll get to run the latest OS and be able to turn off Turbo Boost at will, making all of my future laptop usage significantly worse.
Please, Apple, make this feature official: give us a Low Power Mode for macOS that disables Turbo Boost to keep our laptops cool, quiet, and long-lasting at times when those are more important to us than speed.
The latest update to Overcast includes a feature that I’m especially proud of that took over a year to build.
Voice Boost 2 is an all-new audio engine that includes professional-grade, mastering-quality loudness normalization.
When I first introduced Overcast in 2014, Voice Boost was one of its headlining features:
Voice Boost is a combination of dynamic compression and equalization that can make many shows more listenable and normalize volume across all shows. This makes amateur-produced podcasts (including many of my favorites) more listenable in loud environments, like cars, where you’d otherwise need to crank the volume so loudly to hear the quiet parts that you’d blow your ears out when the loudest person spoke.
Voice Boost 2 achieves the same goal as the original Voice Boost, but with dramatically more sophisticated methods, leading to more consistent results and much better sound quality.
Goals
When I wrote the original Voice Boost with only a rudimentary understanding of audio processing, it was a single configuration of Apple’s AudioUnits that applied a fixed set of parameters to all podcasts, regardless of their audio characteristics. It was an effective but blunt tool, relying on aggressive level compression and a strong EQ to make the compression less noticeable.
Since then, I’ve edited over 500 podcasts, learned a lot more about how to master them properly, and developed a much better understanding of audio signal processing.
I set out to develop a better, smarter, and more refined Voice Boost that took advantage of everything I’d learned, with these audio goals:
- The effect should be much more subtle: mostly just consistent volume, plus slightly smoother tone.
- It should analyze the input audio and apply just enough processing to achieve a consistent volume level, modifying already-good audio as little as possible.
- It should sound good, and consistent, regardless of the volume dynamics of its input.
- Quality should be so good that I can even play high-quality music through it1 and not notice any artifacts.
And these technical goals:
- Like Smart Speed and the original Voice Boost, it had to work as a streaming process, easily toggled on and off at will, without needing to scan the entire file first or look very far ahead.
- The code had to be pure C, with highly optimized and vectorized code, so it wouldn’t be a major power drain on older phones and could potentially run on much lower-power devices as well.
- I had to write every component from scratch, without using AudioUnits, because I wanted to understand and control everything, ensure the highest performance and sound quality, and avoid Apple’s platform-specific API limits.2
- It had to be modular and easily customizable, like a channel strip in an audio editor, so I could adjust the processing during development and testing, offer user customization down the road, and use the same engine to build myself a modular podcast-preproduction tool to save time in my weekly workflow (which I’ve been using for over a year).3
Live LUFS normalization
Since Voice Boost is mostly about high-quality volume analysis and loudness normalization, I went straight to the top, implementing the ITU BS.1770–4 standard that gives us the LUFS measurement seen in high-end audio editors.
Overcast now measures and adjusts podcast levels using this broadcast-standard perceptual loudness algorithm, at full quality, with no preprocessing.
Voice Boost 2 normalizes all podcasts to –14 LUFS — a level I chose because it closely matches the volume of Siri and most iOS turn-by-turn navigation voices, so when you’re listening to a podcast while driving, navigation interruptions are less jarring.
Most professionally produced podcasts are already mastered to similar volume levels, so Voice Boost 2 won’t overcompress them with aggressive processing — it’ll only apply as much correction as necessary to make them all the same volume.
A brief tutorial on clipping and distortion
This is about to get nerdier, but bear with me. (Yes, nerdier than ITU broadcast-loudness standards.)
Given a loudness measurement for the incoming audio, quieter podcasts need to be amplified to reach the target. But perceived loudness isn’t the peak of the incoming audio stream — it’s more of an average. Quiet-sounding audio can still have brief moments of loud peaks.
When increasing the volume of digital audio, the biggest challenge is not “clipping” during the peaks — not having any part of the signal pass above the volume ceiling of 0 dB. (It’s a negative scale. This is also why the LUFS value above, which is closely related to the decibel scale used here, is negative.)
Here’s the highest the signal should go, showing the individual audio samples (green dots) that can be processed by a podcast app before the DAC transforms them into audio (smooth green line):
It’ll sound right as long as the audio doesn’t cross above that top line (0 dB). Increase the volume even slightly too far, and some of the samples just slam into it and stay there, losing the tops of their smooth curves:
And that sounds terrible.
But I can’t just cap all the samples right below the limit and call it a day — that’s called a brickwall limiter — because then the shape of the audio line will actually represent different frequencies, telling the DAC to add noise that wasn’t really there.
Here, the bottom of each image shows the frequency breakdown:
The unclipped signal (left) shows only its original frequency of about 2100 Hz, but a basic brickwall limiter (right) results in the unwanted introduction of a bunch of extra frequencies.
That’s distortion. (If this is interesting to you, learn more about audio sampling theory here.)
Lookahead limiter
Avoiding audible distortion requires a lookahead limiter, which looks… ahead (😎) at the audio coming down the pipeline, and smoothly ramps the volume amplification down as a loud peak is approaching, then back up again afterward, just enough to avoid clipping and audible distortion, but so quickly that you don’t notice.4
After Voice Boost 2’s complete 32-bit audio processing pipeline, the last stage is a lookahead limiter, configured such that it can’t clip, no matter what audio comes through.
This gives vast flexibility in volume processing without sacrificing quality.
Voice Boost 2 also incorporates a dynamics compressor, but over time, I’ve kept reducing its strength as I’ve found it less necessary. Proper LUFS processing with a great lookahead limiter provides excellent volume normalization with almost no compression needed afterward.
True-peak detection
There’s one more way to introduce clipping that needs to be guarded against.
Digital audio is represented by samples that represent a point in time (green dots, again) on a sound wave (green line). But the sampled points don’t always land at the exact peaks of those waves:
The most common way to measure the peak of a waveform is to find the greatest absolute sample value. By this method, the top waveform peaks here would measure about –6 dB and –1.5 dB, respectively.
But the actual peak amplitudes of these waves is –1 dB! A simple limiter could still output clipped audio because it’s not seeing the true peaks.
Voice Boost 2’s limiter performs true-peak detection, rather than simply measuring sample peaks, to avoid this type of clipping and further reduce distortion.
Mastering-quality processing for everyone
Voice Boost 2 is a mastering-quality audio-processing pipeline that applies broadcast-standard loudness normalization, light compression and EQ, and a true-peak lookahead limiter to your podcasts, in real time, without sacrificing quality or battery life.
And it runs at less than 1% CPU usage on an iPhone SE.5
I intend to expose some of its customizability to customers in future updates, but I wanted to develop and ship the best default settings first to keep the app simple and usable to everyone. Now that it’s available to everyone, I may still subtly tweak the defaults in response to feedback. But as I’ve refined the settings during the beta period to be more universal, less customization has been necessary.6
Having achieved its goals of being more consistent and less aggressive, Voice Boost 2 is intentionally transparent. It’s not promoted more in the app or even labeled “Voice Boost 2”. It’s still Voice Boost — just better now.
If I did my job well, you’ll hardly notice it at all. You’ll have no idea that your podcasts are being remastered in your pocket.
But I’ll know. And the handful of you who really care will know. And that’s enough for me.
Voice Boost 2 is in today’s update (2020.1), along with these new features:
- AirPlay 2: Overcast can now play to HomePods and other AirPlay 2 devices much more responsively, with full-blown Smart Speed and Voice Boost, on iOS 13.1 and above.7
- Skip intros/outros: There’s a new per-podcast setting to skip a given number of seconds from the start and/or end of its episodes.
- Clip-sharing from private feeds. In retrospect, this restriction was unnecessary, so I lifted it.
- Restored iOS 12 compatibility. Going 13-only so soon was a mistake. Hear why on Under The Radar 181 and 183.
As usual, all of this is free for everyone in Overcast.