Apple's magic sound-file renaming

For those who are unaware, in macOS Big Sur, Apple replaced a bunch of the standard system sounds. If you compare the system sounds preferences of it (or newer) releases with prior releases, you’ll see that the standard set changed from:

  • Old: Basso, Blow, Bottle, Frog, Funk, Glass, Hero, Morse, Ping, Pop, Purr, Sosumi, Submarine, Tink

to

  • New: Boop, Breeze, Bubble, Crystal, Funky, Heroine, Jump, Mezzo, Pebble, Pluck, Pong, Sonar, Sonumi, Submerge

Now, changing the standard set of system sounds is nothing new. The interesting thing is that if you go to look for the actual sound files (in /System/Library/Sounds), you’ll find that the filenames are the same as the old names:

But if you scan the contents of these files, the new names are nowhere to be found. And they have no extended attributes and no resource fork (two places I assumed Apple might be hiding the new names). And if you copy the sound files from an older macOS installation (e.g. from a backup) to your system (to ~/Library/Sounds or /Library/Sounds), you’ll see that they retain their original names.

After quite a bit of web searching and finding nothing, I started searching my system for something that might give me a hint to what’s going on. And I found it. There is a application extension, /System/Library/ExtensionKit/Extensions/Sound.appex on my Sonoma system. It is apparently a QuickLook plugin, but looking inside, I found a mapping table named AlertSounds.loctable. And this file is a binary property list file with a changed file extension. Dumping the contents of the file reveals the mapping. And not just one, but a big array of localized mappings:

$ cd /System/Library/ExtensionKit/Extensions/Sound.appex/Contents/Resources
$ plutil -p AlertSounds.loctable
...
  "el" => {
    "Basso" => "Μέτζο"
    "Blow" => "Ασθενής άνεμος"
    "Bottle" => "Χαλίκι"
    "Frog" => "Μεταπήδηση"
    "Funk" => "Φάνκι"
    "Glass" => "Κρύσταλλο"
    "Hero" => "Ηρωίδα"
    "Morse" => "Σήματα Μορς"
    "Ping" => "Σόναρ"
    "Pop" => "Φούσκα"
    "Purr" => "Χορδή"
    "Sosumi" => "Ξυλόφωνο"
    "Submarine" => "Κατάδυση"
    "Tink" => "Μπουπ"
  }
...
  "en" => {
    "Basso" => "Mezzo"
    "Blow" => "Breeze"
    "Bottle" => "Pebble"
    "Frog" => "Jump"
    "Funk" => "Funky"
    "Glass" => "Crystal"
    "Hero" => "Heroine"
    "Morse" => "Pong"
    "Ping" => "Sonar"
    "Pop" => "Bubble"
    "Purr" => "Pluck"
    "Sosumi" => "Sonumi"
    "Submarine" => "Submerge"
    "Tink" => "Boop"
  }
...
  "es" => {
    "Basso" => "Mezzo"
    "Blow" => "Brisa"
    "Bottle" => "Piedrecita"
    "Frog" => "Salto"
    "Funk" => "Funky"
    "Glass" => "Cristal"
    "Hero" => "Líder"
    "Morse" => "Pong"
    "Ping" => "Sonda"
    "Pop" => "Burbuja"
    "Purr" => "Punteo"
    "Sosumi" => "Sonumi"
    "Submarine" => "Inmersión"
    "Tink" => "Boop"
  }
...

So it would appear that if your configure your Mac’s local language to something other than English, you may well see these sounds appear with different language-specific names.

And it also appears that the mappings are only applied to files in the /System/Library/Sounds folder, because copying one of these files to ~/Library/Sounds causes it to appear as its filename on the list of alert sounds in the system settings.

Pretty sneaky.

As for why Apple didn’t rename the files to align with the new names (at least the English ones), I assume this was done in the name of backward compatibility with any apps that may have hard-coded an old name and would break if a standard system sound file would turn up missing - so these apps will simply play the new audio but otherwise keep working.

8 Likes