Reference

How AudioPaper works, with the numbers. Every figure here is a value in the source code, so you can check it. The Privacy and Network pages cover what is sent where.

Settings

Open with Settings… in the menu, or ⌘ ,. Settings reopens on the pane you used last.

General

SettingDefaultWhat it does
WallpaperAlbum cover, then fan artOr Album cover only, which also skips every fan-art lookup.
Fan art framingAutomaticFill the screen, Fit the whole image, or Automatic: fill, unless that would crop more than 15% of the image.
Change fan art every45 secondsFrom 15 seconds to 5 minutes.
Restore my wallpaper when music stopsOffPuts your own wallpaper back 30 seconds after playback stops.
During podcastsMy wallpaperFor Spotify podcasts: your own wallpaper until music returns, or Podcast cover art, the episode’s cover from Spotify. The Mini Player and widgets show the cover either way. Podcasts never get fan art. Shown when Spotify is installed.
Show in menu barOnWhen off, AudioPaper appears in the Dock instead.
Open at loginOffRegisters AudioPaper as a login item.
Storage: keep up to500 MB250 MB, 500 MB, 1 GB or 2 GB of downloaded art. Clear Cache… empties it, keeping the images on screen.

Sources

Switches for each player (Apple Music and Spotify) and each fan-art source. New players and sources start switched on. Switching a source off takes its images out of the rotation straight away, even ones found earlier; they stay in the cache, and come back if you switch it on again. A source that needs credentials says so until you add them; Brave Search is marked as the fallback it is.

Accounts

Keys for fanart.tv (the downloaded app has its own project key; a personal key is optional), TheAudioDB (optional), Brave Search and DeviantArt (client ID and secret). They’re saved to your Keychain half a second after you stop typing, and each is sent only to its own service. How to get them is on the Help page.

About

Version and build; the update switches (Check for updates automatically, Download and install updates automatically), when it last checked, and Check Now; links to the source, help, privacy and sponsorship.

Album covers

When a new album starts, its cover is looked up from these in order; the first confident match wins, and the rest aren’t asked.

  1. Apple’s iTunes Search, at up to 3000 × 3000.
  2. MusicBrainz and the Cover Art Archive, at 1200 px, when Apple doesn’t have the release.
  3. The player’s own artwork: Music’s, read on your Mac, or for Spotify, the cover Spotify shows, from its image server (i.scdn.co).

A Spotify podcast episode, when During podcasts is set to Podcast cover art, skips the catalogs and uses Spotify’s cover directly. Spotify’s ads are never looked up.

A match is scored on both artist and album name, with edition noise (“Deluxe Edition”, “2011 Remaster”, “- Single”) removed first, so a tribute album with the same title doesn’t win.

Identifying the artist

Fan-art services file images under an exact artist, not a name, because names collide. So AudioPaper first asks MusicBrainz which artist recorded this song. That’s how ROSÉ of BLACKPINK and Rose, the French singer, stay apart. If the song search doesn’t settle it, it searches by artist name. Names are matched exactly, accents included.

Fan art sources

The first four are asked together. Brave Search is asked afterwards, and only if fewer than 3 images have passed the filters.

SourceFindsLooked up byKey
fanart.tvFan-made artist backgrounds, 1920 × 1080 and 4KArtist IDBuilt in; your personal key is optional
TheAudioDBArtist backgrounds, 1280 × 720Artist ID, or the exact name if there’s no IDBuilt in (the free public key)
Wikimedia CommonsFreely licensed photos, with photographer and licence. Originals up to 4000 px wide; a 1920 px copy of larger onesArtist ID → Wikidata → the artist’s Commons category, then its subcategories named after the artist (“… by year” → “… in 2025”, newest first) when the category itself has too few wallpaper-sized photosNone
DeviantArtFan art, with the artist’s profileArtist and songYour own application
Brave Search (fallback)Images from the wider webUp to three searches: “artist song fan art wallpaper”, “artist fan art wallpaper”, “artist press photo”, stopping once there’s enoughYour own key

Each source returns at most 30 candidates. A web result is used only if its title or address names the artist as a whole phrase (“Ray Noir” doesn’t match “Blu-ray Noir”), with the same accents (“ROSÉ”, not “Rose”). A one-word name must also come with the song, the album or a word about music; a name of two or more words is specific enough on its own.

When a service is down or busy

If a service is offline, returns a server error, or answers 429 Too Many Requests, AudioPaper sends it nothing more for as long as its Retry-After header asks: a minute if it doesn’t say, at most an hour. The song isn’t marked as searched, so it’s searched again on its next play. The same goes for a song you skip mid-search. At most 60 new songs are searched an hour.

The filters

Every candidate is checked on your Mac, with Apple’s Vision framework, before it can be shown. Candidates are downloaded 4 at a time, and checking stops once 8 have passed.

CheckRejects
SizeAnything under 1280 × 720 (either way up), or narrower than 1 : 2 or wider than 2.6 : 1. Portrait images are allowed. Sources that report sizes are skipped before download.
Utility and aestheticsImages Vision marks as utility (screenshots, documents, receipts), and those with an aesthetics score below −0.5.
TextImages where recognised text covers more than 1.5% of the image, or that contain more than 6 words. Small incidental text, like a shirt number, is fine.
SceneImages Vision classifies, with at least 60% confidence, as screens, ads and signs, print and documents, or products and packaging (mugs, CDs, framed prints on a wall). People, performers and concerts are welcome.
DuplicatesCopies of the album cover, of what’s on screen, and of each other (a Vision feature-print distance under 0.2). Different photos from the same shoot are kept.

What passes is ranked by Vision’s aesthetics score, plus a boost equal to Vision’s confidence that the image is artwork (art, illustration, painting, graffiti).

The artist’s pool

Putting it on screen

Credits

Every image keeps where it came from. The menu, the Mini Player and the widgets show:

For web results, the credit names the artist the image was matched to and the site, since wallpaper sites’ titles rarely say who is pictured.

What’s stored, and where

WhatWhere
Downloaded art, each artist’s pool, remembered searches and identities~/Library/Containers/com.audiopaper/Data/Library/Caches/AudioPaper
Rendered wallpapers (only the current ones)AudioPaper’s Application Support folder, in the same container
Settings, your original wallpaper’s location, the Mini Player’s positionAudioPaper’s preferences, in the same container
API keysYour Keychain, under com.audiopaper.credentials
The widgets’ snapshot: track, credits, small thumbnails~/Library/Group Containers/7JQGQ7CRH8.com.audiopaper, shared only with AudioPaper’s widgets

Untrusted replies

Web search results can point anywhere, so everything a service sends back is treated as untrusted:

Security reports go to the address in SECURITY.md.

Accessibility

AudioPaper aims for WCAG 2.2 AA as W3C’s WCAG2ICT applies it to desktop software, and for Apple’s accessibility guidelines for macOS. This site aims for WCAG 2.2 AA directly.

These were checked with the macOS accessibility API and, for this site, automated audits. They haven’t yet been tested by a VoiceOver user; if something is hard to use, please open an issue.

Updates

AudioPaper updates itself with Sparkle. On the second launch it asks whether to check automatically; if you agree, it reads the update feed about once a day. Settings → About has the same switch, plus Download and install updates automatically (off unless you turn it on; the update is installed when AudioPaper quits) and when it last checked. Check for Updates…, in the menu bar menu and the AudioPaper menu, checks now. Every update is verified against the EdDSA public key built into the app before it’s installed. No system profile is sent. Your settings, keys and downloaded art are kept.

Siri, Shortcuts and AppleScript

Five App Intents, available to Siri (with ready-made phrases), Shortcuts and Spotlight:

ActionSiri phrasesWhat it does
What’s on My Desktop“What’s on my desktop in AudioPaper”, “Who made my AudioPaper wallpaper”, “AudioPaper credit”Says what’s up, who made it, the licence, the source and the song, and returns it as text for shortcuts.
Open Where This Image Came From“Open the AudioPaper image source”Opens the image’s page (the photo, the fan art, the album) in your browser.
Next Image“Next image in AudioPaper”Shows the next image in the rotation.
Pause Wallpaper Changes“Pause AudioPaper”Leaves the current wallpaper up. The music keeps playing.
Resume Wallpaper Changes“Resume AudioPaper”Changes the wallpaper with the music again.

AppleScript (the dictionary is in Script Editor’s library): the properties current song, image count, current image (its position in the strip, from 1), current credit and paused (settable), and the commands show image n and next image.

tell application "AudioPaper"
    get {current song, image count, current image, current credit}
    show image 3        -- the third image in the strip, on the desktop now
    next image
    set paused to true  -- the same as Pause in the Mini Player
end tell

macOS asks you before another app or script may send these (System Settings → Privacy & Security → Automation). Nothing here controls playback, and nothing leaves your Mac.

Permissions

AudioPaper runs in the App Sandbox, with the hardened runtime, and asks for only this:

No location, contacts, camera, microphone, photos or files.

For developers

AudioPaper is a Swift package (AudioPaperKit) with a thin SwiftUI app and a WidgetKit extension on top. Players, cover providers, fan-art sources and image filters are plugins, each a small Swift protocol; adding one is a single file and one line of registration. See CONTRIBUTING.md.

The package includes apctl, a command-line tool that runs the same code as the app. From Packages/AudioPaperKit, with keys in a .env file (see .env.example):

swift run apctl cover "Radiohead" "In Rainbows"      # which provider found the cover, and the score
swift run apctl fanart "BABYMONSTER" "DRIP" [outDir]  # every candidate, every filter verdict, the ranking
swift run apctl labels image.jpg …                   # Vision's classification labels for images
swift run apctl render image.jpg 3024 1964 automatic # compose a wallpaper exactly as the app would

The tests run with swift test in the same folder.