Lo-fi Anything is a Mac app that turns any app's audio into Lo-fi music for the days you need to lock in and/or stay relaxed. Works great with old school hip hop, boom bap, house, pop punk - whatever you like! 6 presets available but fully tunable to your preferences. 3 day free trial and $5 bucks if you like it - no subscription, no login, and simple install. Let me know what you think of it!
No reviews yetBe the first to leave a review for Lo-fi Anything
Maker
📌
Hey everyone, I created Lo-fi Anything!
I built this because I wanted to listen to regular music like it was a lo-fi stream, without having to find playlists or deal with Youtube Ads. Every existing way to do this on a Mac meant installing a virtual audio driver and rerouting my whole system, which always felt like too much.
Lo-fi Anything skips all that. You pick one app, and it just works: no installer, no reboot, nothing rerouted. The audio runs through a chain of tape saturation, EQ, warp, and reverb, and there are six presets if you don't want to touch the sliders yourself.
Happy to answer anything about where it's going or what's next.
Report
How does it actually capture the audio from just one app without touching system sound, is it hooking into the app's own output directly somehow?
Report
Maker
@nevzatyolag2y3 It uses Apple's Core Audio process-tap API (new in macOS 14.4). Instead of rerouting your whole system's audio (what virtual drivers like BlackHole do), it asks Core Audio directly for the audio stream belonging to one specific process. It creates a muted tap on just that process, wraps it in a private aggregate device, and receives that app's raw audio buffers on a realtime IO callback. Because the tap is muted, the original app's output doesn't double up - the app takes those buffers, runs them through its effects, and plays the processed result back out itself. Nothing else on the system is touched. If the app quits or crashes, your normal audio routing is completely unaffected!
Building real-time audio routing and processing engines on macOS without introducing massive latency or CPU spikes is a brutal optimization challenge. Turning system-wide audio into real-time tunable lo-fi streams sounds incredibly satisfying.
I'm curious about how you handled the audio engine architecture under the hood—are you tapping into the core system audio layer directly, or routing through a virtual driver setup to apply the effects with zero delay? Brilliant utility, congrats on the launch!
Report
Maker
@dhanrajchoudhary Direct system layer, no virtual driver. The pipeline:
Capture: AudioHardwareCreateProcessTap targets a single process, then a private AudioAggregateDevice wraps that tap so it can be read via a standard Core Audio IO proc - this is the same realtime-thread mechanism the OS itself uses for per-app audio, just exposed by Apple as of macOS 14.4.
Processing: Buffers come in on Core Audio's realtime IO thread, get sample-rate/format converted, and flow through an AVAudioEngine chain.
Latency/CPU: Because it's tapping one process instead of the whole system mix, there's no extra device abstraction layer or driver round-trip - audio moves tap → converter → engine → output all within Core Audio's own realtime callback chain. The one tricky part was varispeed: slowing playback down means you consume input slower than it arrives, so the pipeline lets a small backlog accumulate within a budget, then flushes and crossfades back to live audio before the lag becomes audible - keeping the wobble effect without runaway latency.
No kernel extension, no reboot, no installer step - permission is a single one-time audio-capture prompt.
How does it actually capture the audio from just one app without touching system sound, is it hooking into the app's own output directly somehow?
@nevzatyolag2y3 It uses Apple's Core Audio process-tap API (new in macOS 14.4). Instead of rerouting your whole system's audio (what virtual drivers like BlackHole do), it asks Core Audio directly for the audio stream belonging to one specific process. It creates a muted tap on just that process, wraps it in a private aggregate device, and receives that app's raw audio buffers on a realtime IO callback. Because the tap is muted, the original app's output doesn't double up - the app takes those buffers, runs them through its effects, and plays the processed result back out itself. Nothing else on the system is touched. If the app quits or crashes, your normal audio routing is completely unaffected!
Dune
Building real-time audio routing and processing engines on macOS without introducing massive latency or CPU spikes is a brutal optimization challenge. Turning system-wide audio into real-time tunable lo-fi streams sounds incredibly satisfying.
I'm curious about how you handled the audio engine architecture under the hood—are you tapping into the core system audio layer directly, or routing through a virtual driver setup to apply the effects with zero delay? Brilliant utility, congrats on the launch!
@dhanrajchoudhary Direct system layer, no virtual driver. The pipeline:
Capture: AudioHardwareCreateProcessTap targets a single process, then a private AudioAggregateDevice wraps that tap so it can be read via a standard Core Audio IO proc - this is the same realtime-thread mechanism the OS itself uses for per-app audio, just exposed by Apple as of macOS 14.4.
Processing: Buffers come in on Core Audio's realtime IO thread, get sample-rate/format converted, and flow through an AVAudioEngine chain.
Latency/CPU: Because it's tapping one process instead of the whole system mix, there's no extra device abstraction layer or driver round-trip - audio moves tap → converter → engine → output all within Core Audio's own realtime callback chain. The one tricky part was varispeed: slowing playback down means you consume input slower than it arrives, so the pipeline lets a small backlog accumulate within a budget, then flushes and crossfades back to live audio before the lag becomes audible - keeping the wobble effect without runaway latency.
No kernel extension, no reboot, no installer step - permission is a single one-time audio-capture prompt.